PB中使用FORMULA ONE入门介绍在线教程

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-03-16 22:45:01

在使用 POWERBUILDER 编程中,往往会遇到处理复杂表格的情况,这些表格数量很大,表格结构复杂,如用一般的 FREEFORM 风格的数据窗口来实现,则报表编程工作会占相当大的时间及精力,一旦报表格式略有改变,则程序的维护工作会很繁琐。其实 VISUAL COMPONENTS 的 FORMULA ONE 就是一个与 POWERBUILDER 结合非常紧密的报表工具,我们可以从 POWERBUILDER 进入 FORMULA ONE ,还可以在 POWERBUILDER 下直接使用 FORMULA ONE 提供的各种函数,因为 FORMULA ONE 的文件小,与数据库的存取操作速度较快,所以建议使用它来制作报表。下面详细介绍它的使用方法:

一、 安装及使用 FORMULA ONE

formula one在本站有下载,注意6.0版本安装过程中要输入序列号,否则使用时会告警。安装完毕后,运行 vcf1.exe 可看到如上的程序环境,其文件后缀名为 vts ,它兼容中文,具备类似 EXCEL 的功能:如格式编排、制作表格线、移动和复制单元格、单元格的计算、画简单框图等等。另外, FORMULA ONE 中还具有上百种函数,可以在 VISUAL C++ 、 VISUAL BASIC 、和 POWERBUILDER 中引用。对此不再详细说明。

二、在 POWERBUILDER 窗口中加入一个 OLE 控件

POWERBUILDER 支持 WINDOWS 具备的对象连接与嵌入功能(即 OLE 功能),我们可以直接在窗口上放置 OLE 2.0 的控件,然后将 WINDOWS 支持的 OLE 对象连接到 OLE 2.0 控件中,这样就能在 POWERBUILDER 应用中利用 OLE 服务器的命令和函数完成对 OLE 对象的操作工作。

在 POWERBUILDER 的窗口中点中 OLE 图标:

会出现“插入对象”对话框,选择 insert control 标签项(如下图),

在对象列表中选择 Vci Formula One Workbook ,按确定键后,选好插入位置点击鼠标,即加入了一个名为 ole_1 的 OLE 对象,在其上用鼠标右键选中 OCX Properties 项,在 Show 标签下可将 Row Heading 和 Column Heading 项取消选中,将 Tabs 的值由 Bottom 改为 Off (如下图),加入的 OLE 对象就是一个没有行头、列头及标签的空白表格。

三、 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 对象打开该文件,填好内容后存入数据库,此后就可以对数据库中已存在的报表字段进行存取操作。如果报表格式发生变化,则直接修改模板文件即可,不需要改动程序,维护相当方便。


Tags:

作者:佚名
分享到: 微信 更多