敬业的IT人 >> 编程开发 >> PowerBuilder >> PB中使用FORMULA ONE入门介绍

PB中使用FORMULA ONE入门介绍

敬业的IT人 互联网 佚名 2008-1-4 12:21:21

在使用 POWERBUILDER编程中,往往会遇到处理复杂表格的情况,这些表格数量很大,表格结构复杂,如用一般的 FREEFORM 风格的数据窗口来实现,则报表编程工作会占相当大的时间及精力,一旦报表格式略有改变,则程序的维护工作会很繁琐。其实 VISUAL COMPborder="0" alt="PB中使用FORMULA border="0" alt="PB中使用FORMULA border="0" alt="PB中使用FORMULA border="0" alt="PB中使用FORMULA ONE入门介绍(图四)" />

三、 FORMULA ONE 文件与窗口中的 OLE 对象之间进行读写操作

Ole_1.object.read(“filename”,ref return1)

该句将一个 FORMULA ONE 文件内容读入 OLE 对象,返回值为 return1 。

此后在窗口的 ole_1 中会出现该文件内容,可直接在窗口上修改其内容,也可以双击鼠标右键可进入 FORMULA ONE 的编辑环境中进行修改。

Ole_1.object.savefiledlg(“ 保存文件 ”,ref filename,ref return1)

Ole_1.object.write(filename,return1)

这两句首先给出一个保存文件对话框,让使用者输入一个 FORMULA ONE 文件名,然后再将 OLE 对象内容写入 FORMULA ONE 文件。

实际上, read 、 write 、 savefiledlg 等函数都是 FORMULA ONE 所有的, POWERBUILDER 中只需在 Ole_1 后加一个 object 即可引用这些函数。

四、数据库与 FORMULA ONE 文件之间进行读写操作:

1. 数据库中大文本字段内容读入 FORMULA ONE 文件中:

selectblob 大文本字段名 into :blob 变量名 from 表名 where…

该句查询大文本字段内容到 blob 变量中。

If fileexist(“file1.vts”) then

filedelete(“file1.vts”)

End if

Return1=fileopen(“file1.vts”,streammode!,write!)

以上语句新建了一个临时文件 file1.vts

If return1<>-1 then

filewrite(return1,blob 变量 )

fileclose(return1)

Else

messagebox(“error”, “Can't open file!”)

End if

本条件语句将 blob 变量的内容写入临时文件中,如出错则告警。

2.FORMULA ONE 文件的内容存入数据库中

return1=fileopen(“file1.vts”,streammode!,write!)

If return1<>-1 then

fileread(return1,blob 变量 )

fileclose(return1)

end if

以上语句将临时文件内容读入 blob 变量中。

if len ( blob 变量 )>0 then

updateblob 表名 set 大文本字段名 =:blob 变量 where…

end if

该条件语句给数据库中的大文本字段赋值。

如上所述可以利用 FORMULA ONE 的文件实现 POWERBUILDER 窗口中 OLE 对象与数据库大文本字段之间信息传送。此外,在 POWERBUILDER 中也提供数据窗口中用 EXCEL 做 OLE 对象来存取数据库的大文本字段,但它不能调用 EXCEL 的函数,因此不够灵活。此种方法占用的系统资源是 FORMULA ONE 的数倍,在大型数据库的存取操作中会大大增加日志,存取速度也会减慢,因此不适合大范围应用。

在日常应用中,首先制作一个 FORMULA ONE 的报表模板文件,通过 POWERBUILDER 窗口的 OLE 对象打开该文件,填好内容后存入数据库,此后就可以对数据库中已存在的报表字段进行存取操作。如果报表格式发生变化,则直接修改模板文件即可,不需要改动程序,维护相当方便。

粤ICP备06119539号
Copyright CiscoSky.Org,Some Rights Reserved.
Email:me1228#tom.com