PB中将word或excel导入到数据库中,并在datawindow中显示出其文件名,求详细代码和方法

PB中将word或excel导入到数据库中,并在datawindow中显示出其文件名,求详细代码和方法,第1张

很久没用过PB了,网上找了一篇,大致看了一下,应该没什么问题

--转自51CTO论坛

在PowerBuilder里面 *** 作BLOB数据地灵活技术

PowerBuilder提供的BLOB(Binary Large Object)数据类型可以用来处理大型数据,包括图像、大文本、Word文档、二进制文件和多媒体等各种数据,它的长度可以是0~2GB字节,我们利用BLOB类型的变量可以将数据传递给数据库以大字段方式存储。但是用通常的数据窗口技术无法将BLOB类型数据加入到数据库中,也不能将数据库中相应字段的数据提取出来,即使在程序中直接使用UPDATE和SELECT等SQL语句也是无法对BLOB类型数据进行 *** 作的。下面笔者将介绍在PowerBuilder 70中 *** 作BLOB类型数据的技巧。

程序设计原理

在PB中实现BLOB类型数据的入库和查询,主要要用到两条特殊的SQL命令——UPDATEBLOB和SELECTBLOB,首先定位要进行 *** 作的记录,然后使用UPDATEBLOB命令就可以将BLOB类型变量中存放的数据传递给数据库,而使用SELECTBLOB则是将指定记录中的大字段数据传递给BLOB变量。

使用BLOB类型变量获取外界文件的数据内容,还必须借助于PB提供的可视化OLE控制对象,通过它可以将指定的文件内容显示成相应的对象(如BMP),双击它就可以激活相应的OLE服务器应用程序,来编辑修改对象的内容,同时也可以读取对象的数据内容(利用OLE控件的ObjectData属性),给BLOB类型变量赋值。

下面结合一个简单的程序实例,讲述如何处理BLOB数据类型。在这个例子中,BMP将作为一个大字段存储在数据库中。我们选择Microsoft Access 2000作为后台数据库,它的字段类型中包含“OLE对象”类型(如果选择MS SQL Server作为数据库服务器,可以使用TEXT或IMAGE类型字段存放大字段数据),这样就为管理多媒体数据、大文件和提供了支持。

*** 作BLOB字段的实现过程

我们在Access中创建一个新的数据库文件,文件名是bmpmdb,在其中定义BMP数据表bmptable如下:

各字段的其它设置(如字段宽度等),均采用缺省形式即可。

编程前还需要做的一步准备工作是在 *** 作系统的ODBC配置中建立指向bmpmdb数据库的连接,名称定为bmptable。

下面的程序片段实现了数据库的连接,的插入、更新、删除和查询。考虑文章的篇幅,本文只列出与主题相关的程序源码。

1 连接Access数据库

SQLCADBMS = "ODBC"

// SQLCA为全局transaction事务变量

SQLCAAutoCommit = False

SQLCADBParm = "Connectstring='DSN=bmptable;UID=WD='"

CONNECT USING SQLCA;

If SQLCA SQLCode <> 0 Then

MessageBox ("数据库错误", "连接失败!")

Halt close;

End If

2 将BMP存入数据库

integer bmpno,icount

//变量bmpno存放给定的编号

string filepath,filename

blob blb_tmp

//…此处对编号bmpno赋值,例如bmpno=101;可以通过程序实现为d出对话框窗口提供一个编号

//查询指定的编号是否已经存在

icount=0

SELECT COUNT() INTO :icount

FROM bmptable

WHERE bmptablebmpno=:bmpno

USING SQLCA; //:bmpno为给定的编号

if icount>0 then

MessageBox("查询结果",string(bmpno)+" 号已经存在,请输入一个新的编号")

return

end if

//在OLE控制对象ole_1中插入BMP文件

GetFileOpenName("请选择一个需要插入的BMP文件",filepath,filename,"BMP","BMP文件(BMP),BMP")

If Len(filepath)=0 Then

Return

End If

If ole_1InsertFile(filepath)<>0 Then //OLE错误

Return

End If

//新入库

string sql

sql= "INSERT INTO bmptable (bmpno,bmpdata,bmpname) &&

VALUES ("&&

+string(bmpno)+",'','"&&

+filename+"')"

EXECUTE IMMEDIATE :sql;

If SQLCASQLDBCode=0 Then

COMMIT USING SQLCA;

//提交事务

Else

MessageBox("数据库错误","插入失败")

ROLLBACK USING SQLCA;

//事务回滚

Return

End If

Blb_tmp=ole_1ObjectData

UPDATEBLOB bmptable SET bmpdata=:blb_tmp

WHERE bmptablebmpno=:bmpno

USING SQLCA; //更新存放的字段

If SQLCASQLDBCode=0 Then

COMMIT USING SQLCA;

//提交事务

MessageBox("插入成功","入库成功")

Else

MessageBox("数据库错误","更新失败")

ROLLBACK USING SQLCA;

//事务回滚

Return

End If

3 从数据库中删除BMP

UPDATE bmptable SET bmpdata=''

WHERE bmptablebmpno=:bmpno

USING SQLCA;

//bmpno为要删除的编号

If SQLCASQLDBCode=0 Then

COMMIT USING SQLCA;

//提交事务

Else

MessageBox("数据库错误","更新失败")

ROLLBACK USING SQLCA;

//事务回滚

Return

End If

DELETE FROM bmptable

WHERE bmptablebmpno=:bmpno

USING SQLCA;

If SQLCASQLDBCode=0 Then

COMMIT USING SQLCA;

//提交事务

MessageBox("删除成功","删除成功")

Else

MessageBox("数据库错误","删除失败")

ROLLBACK USING SQLCA;

//事务回滚

Return

End If

4 按编号查询信息

//需要提供一个编号存放在变量bmpno中

SetNull(blb_tmp)

SELECTBLOB bmptablebmpdata INTO :blb_tmp

FROM bmptable

WHERE bmptablebmpno=:bmpno

USING SQLCA;

If Not IsNull(blb_tmp) Then

ole_1ObjectData=blb_tmp

//双击OLE控制唤醒OLE服务器即可编辑

End If

使用PB编程时,每次对数据库进行 *** 作后要注意检查返回结果,以保证程序的可靠性。以上程序只是对 *** 作BLOB数据类型的关键技术进行探讨,通过画板设计相应的用户界面,即可形成一个完整的基于Client/Server结构的数据库应用程序。

1 最简单的方法,用datawindow将数据倒入,然后再逐一处理。具体就是建一个字段数量和类型与要倒入的文件中字段相同的dw,然后dw_1importfile('文件路径+文件名')

2使用fileopen() 打开文件,然后用filewrite() 逐一写入每一行数据, 定位tab (~t)

如:

do while pos(ls_str,'~t') >0

ls_ret[i] = mid(ls_str,1,pos(ls_str,'~t') -1)

ls_str = mid(ls_str,pos(ls_str,'~t') +1)

i ++

loop

①首先在文件夹中找到后缀为pbw的文件这是 pb的工程文件(workspace) 如果有,安装完pb9之后应该是这样的图标样子,如下图所示! 双击就可打开pb源码。

②数据库方面:首先找到数据库文件。sql的数据库文件应该是后缀sql 的建表sql语句文件文字部分全部粘贴出来,打开sql 2000的查询分析器: 首先选好数据库名,然后将粘贴好的建表sql放在里面。点执行 。此时sql数据库就建成了

③然后点击pb90中的database 画板。按顺序点击MSS Microsoft SQL Server-右键 new profile-填写你的数据库名 服务器写点()即可,表示本地服务器然后双击就可以看到数据库中的表了。还有问题可以追问这是大致流程!

;   PowerBuilder(PB)是一种跨平台的且功能强大 性能优异的开发工具 在客户端/服务器系统结构的应用模式中 作为客户端的一种面向对象的可视化设计工具 在与数据库相连接 *** 作的系统中得到较为广泛的应用 笔者在使用PB开发Sybase数据库应用 建立企业管理信息系统的过程中 积累了一点经验和技巧 现将其中的一部分在此做点介绍 或许能够对朋友们有点启发和帮助

一 PowerBuilder与Sybase SQL Server的连接

若在连接时出现问题 必须要冷静多思考 首先要检查客户端的情况 确认Open Client已经安装 并正确配置 要注意OPen Client必须与PowerBuilder同为 位 或同为 位 PB与Sybase连不上 常见的几种错误现象及处理方法说明如下

已连接上Sybase数据库 但在PB的数据库(database)画板中却看不到用户已经定义过的表

此时可打开isql或Sybase Advantage 用 sa 登录到 master 数据库 执行pbsyc sql脚本文件(该文件位于PB安装盘的server目录)即可 值得一提的是 对Sybase Adaptive Server的版本号要加以注意 根据资料对有的相关项进行点改动

在打开PB的项目画板(Project)或库画板(Library)时 出现错误信息提示: cannot locate source management dll 这个问题是因为在安装PB时 选择了安装版本控制软件(如PVCS)的接口 实际上该用户的机器上并未安装相应的版本控制软件

解决方法: 在PB的设置中 将版本控制软件的接口去掉 具体 *** 作步骤是 可在PB ini文件中 找到[Library]节 将 SourceVendor= 这一行注释去掉

数据库连接正常 但打开用户表时若该表中有汉字则出现乱码

这个问题通常是由于客户端的缺省字符集设置和服务器端的字符集设置不一致 应修改locales dat文件(该文件位于Sybase安装目录的locales子目录下) 如果在Windows / *** 作系统下 可修改[NT]节下的相关内容

若 *** 作系统平台是Windows x 则修改[win ]节下的内容 在此节有一行文本为locale=default us_english is _ 则说明客户端的缺省字符集设为iso_ 开发中文管理信息系统一般建议将字符集改为cp o 在服务器端必须要做相应的调整

二 PB编程的几点技巧

在数据窗口(Datawindow)中实现数据列自动折行

PB软件在市场上受用户欢迎的原因之一 就是它的数据窗口功能很强 而且方便应用 在使用Datawindow时 常会遇到某列的数据太长 不能同时显示全部的情况 若采用自动水平滚动 *** 作起来又不够简便 有一种方法能实现列数据多行显示(自动折行) 具体步骤如下

① 在Datawindow Panter中打开此DataWindow 在需设定自动折行的列上双击鼠标 d开此列的属性窗口 点Position标签 选中Autosize Heigh多选框; 再选择Edit标签 不选中Auto HorzScroll多选框 单击OK按钮 保存所做的修改

② 点中Detail Band(即写有Detail的灰色长带) 单击鼠标右键 选择Properties 菜单项 选中Autosize Height多选框 单击OK按钮 保存所做的修改

lishixinzhi/Article/program/PB/201311/24574

这个错误提示通常表示程序在运行时无法找到需要的DLL库文件,或者找到了DLL文件但是其中的函数或方法名称不匹配。

可能出现这种问题的原因有很多,例如:

DLL文件不存在或路径不正确。

DLL文件中缺少需要的函数或方法。

调用DLL文件中的函数或方法名称拼写错误或大小写不匹配。

系统中存在多个版本的同名DLL文件,而程序加载的是错误的版本。

DLL文件或调用方程序的编译方式不兼容。

解决这个问题需要具体分析具体情况,可能需要进行以下 *** 作:

确认DLL文件路径是否正确,并且确保DLL文件存在。

确认程序调用的函数或方法名称是否正确,并且与DLL文件中的名称匹配。

确认程序和DLL文件的编译方式是否一致,例如都是使用相同的编译器和编译选项。

确认系统中不存在多个版本的同名DLL文件,或者使用全路径名来明确指定要加载的DLL文件。

检查程序是否缺少必要的依赖项,例如运行时库、动态链接库等。

如果你不确定具体如何解决这个问题,建议你查阅相关资料,例如调试工具的使用方法、编译选项的设置、系统环境变量的配置等

以上就是关于PB中将word或excel导入到数据库中,并在datawindow中显示出其文件名,求详细代码和方法全部的内容,包括:PB中将word或excel导入到数据库中,并在datawindow中显示出其文件名,求详细代码和方法、PB语言如何解析一个以TAB分割的文本文件,并把文件内容读取到SQL Server数据库中 希望能给出代码,谢谢、在网上下载了一个PB+SQL程序,有数据库文件,PBL文件,机器上也已经装了PB9.0和SQL2000,求高手提取PB源码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9447025.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存