在PB中实现全文检索
PowerBuilder(以下简称PB)是程序员常用的开发工具之一,PB的DataWindow为编程人员提供了一个方便直观的数据处理工具,但对一些特殊文档的处理,用PB自身去实现十分困难,若能利用Word强大的文档处理功能却能达到意想不到的效果。
从VBA到PowerScript
PB与Word结合的基础是微软的自动化技术(OLE Automation),通过OLE将数据从PB传至Word,再借助Word本身具有的VBA功能可完成许多复杂的任务。通过OLE技术实现PB对Word的控制,必须先将VBA语句转换为PB所能识别的Powerscript语句。此处有个简单的办法可以获得正确的VBA语句:
打开Word工具菜单中宏子菜单的录制宏命令,命名后保存,然后返回至Word主窗口,此时可以在主窗口的左上角看到宏的悬浮菜单,接着进行所需要的操作(如键入字符串、改变字体颜色、插入书签、查找特定字符串等操作),关闭宏。接下来再到工具菜单中的宏子菜单中选择 Visual Basic编辑器,进入宏编辑器,此时可以看到刚才所有操作的VBA代码。
注: 如果想详细地了解VBA语法,可以参考Word本身提供的帮助文件(Office 目录下2052文件中的VBAWRD9.HLP文件)。
接下来需要将VBA语句转换为PB支持的Powerscript语句,VBA中既有语句又有函数,而且,语句和函数使用的语法格式是不同的,但在PowerBuilder 中却有相同的语法格式。例如:我们可以在宏编辑器中看到如下代码:
Sub Macro1()
Selection.Information(wdWithInTable)
Selection.Moveright Unit:=wdCharacter, Count:=5
selection.TypeBackspace
End Sub
我们可以在VBAWRD9.HLP中找到MoveRight()的定义:
Selection.Moveright(Unit, Count, Extend)
Unit optional Variant: wdCell, wdCharacter, wdWord or wdSentence. Default = wdCharacter.
Count optional: . Number of Units to move. Default = 1.
Extend optional: wdMove or wdExtend
下面给出了PB对应的语法格式:
// PB语法格式
ole_object.selection.Information[12]
ole_object.selection.Moveright(1,5,1)
ole_object.selection.TypeBackspace()
由于技术方面的原因,像wdCell、wdCharacter、wdWord、 wdSentence这些枚举类型的常量值,PB并不知,所以必须将其转换为PB可知的常量,这可以通过以下简单的方式来实现: