让InfoMaker成为您的报表设计利器[转]

InfoMaker是Sybase推出的优秀报表设计工具,可通过特定命令行参数在PowerBuilder程序中调用,允许用户自行设计数据窗口,减轻开发人员负担。本文介绍如何在PB程序中利用InfoMaker设计报表的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   InfoMaker是Sybase推出的一款非常优秀的免费的(存疑)报表设计及浏览工具,在安装PB时或其它Sybase软件时可作为选择性安装,并不单独销售。使用InfoMaker开发出来的报表可以直接在PB中使用,因此如果能够在PB程序中调用InfoMaker让用户自行设计数据窗口,将大大减轻了开发人员开发数据窗口的工作量,并且让用户拥有自己设计的程序界面(增进用户的参与感)。

       其实InfoMaker的可执行程序是允许带参数的,以InfoMaker9.0的可执行程序im90.exe为例(以下全部以InfoMaker9.0来讲解,其它版本类似),"/P”指明报表类型,可取report、form、pipeline、query值,”/L "指明库文件," /O "指明对象名称。例:执行im90.exe /P report /L c:/test.pbl /O d_test_grid,将使用InfoMarker打开c:/test.pbl中的d_test_grid报表。

       在知道InfoMaker命令行参数的前提下,要在PB程序中调用它修改现有数据窗口,目标就是组合各种参数值。

       【/P】选项是枚举值,如果是修改现有数据窗口,可以取值report。

       【/L】选项是库文件,可以是pbl或pbd文件,如果数据窗口的dataobject是一个数据窗口对象,可以通过调用GetLibraryList、LibraryDirectory等函数来获取该数据窗口对象所在库文件。为了不使用户覆盖你现有pbl或pbd中的对象,我建议你新建一个临时pbl,可以通过调用LibraryCreate       来创建,调用LibraryDelete 来销毁。

       【/O】选项是对象名称,如果是修改现有数据窗口,可以是数据窗口对象名称。如果数据窗口的dataobject是一个数据窗口对象,你可以直接使用它。不过出于保密考虑和担心用户覆盖现有同名对象,我建议你新建一个临时数据窗口对象,注意起名时不要与现有对象重名(需检测),这样不仅可以对付dataobject是一个数据窗口对象的情况,也可以对付dataobject是一个psr或调用数据窗口create创建的情况。取其数据窗口语法,调用LibraryImport函数即可创建数据窗口对象。

       成功组合各种参数值后就可以运行InfoMaker了,不过如果想让用户在使用InfoMaker时能得心应手和确保安全性,你还应作些可选配置。

       如果你需要设计的数据窗口对象(新建的临时数据窗口对象)引用了或即将引用其它PB对象,如栏位编辑风格采用下拉数据窗口,使用嵌套报表,在对象属性中引用全局函数,这时你应该将相关的对象包括进来。这就需要对InfoMaker运行环境进行一些配置,主要是修改im.ini文件选项,在im.ini中最需要我们配置的几个参数有Application段的QueryLib、StyleLib、DefLib,分别指明搜索库文件、样式库文件、缺省库文件。QueryLib、StyleLib参数可以取应用库文件列表,注意各文件之间是以分号(;)分隔的,与PB库文件以逗号(,)分隔有所不同。DefLib参数可以使用【/L】选项所指库文件。

       如果你所开发的系统最终用户所熟悉的语言并非英语,你还应该进行一些本地化配置,比如在中国,最好是界面全部汉化。你可以使用南极星等即时语言转换软件,或使用Multilizer等软件对InfoMaker相关DLL进行汉化。笔者建议你采用第二种方法,因为通过你自己修改DLL中资源可能更贴近原意,这项工作最主要的是需要耐心和细心,当然也需要一定的英语功底和文字组织能力。汉化的文件主要有pbapl90.dll、pbdev90.dll、pbdpp90.dll、pbdts90.dll、pbdwe90.dll、pbdwp90.dll、pblib90.dll、pbsys90.dll等,这些默认放在sybase/shared/powerbuilder目录下。注意汉化这些文件后运行PB同样会得到汉化界面,因为PB也需要其中的某些DLL。      

    如果你想将InfoMaker改造成绿色软件(默认是需要通过安装程序来安装的),即无需安装只要拷贝文件即可使用,除了InfoMaker目录下所有文件外(其实只需im90.exe、im.ini、imstyle9.pbl文件),还应该拷贝以下文件放在目标电脑InfoMaker目录下,包括libjcc.dll、libjsybheap.dll、pbapl90.dll、pbcmp90.dll、pbdev90.dll、pbdpp90.dll、pbdts90.dll、pbdwe90.dll、pbdwp90.dll、pbeas90.dll、pblib90.dll、pborc90.dll、pbscr90.dll、pbsql90.dll、pbsys90.dll、pbudo90.dll、pbvm90.dll、pbwed90.dll。如果你不能明确到底需要哪些文件,你也可以拷贝sybase/shared/powerbuilder目录下所有dll。如果你需要使用完整的InfoMaker功能,建议还是采用默认安装程序。

       如果出于安全考虑,你不想让用户看到(或修改)数据窗口对象的SQL语句或连接数据库,你仅仅需要拷贝上述文件,不过这样会在运行InfoMaker时弹出好几次对话框要求用户连接数据库,按关闭即可。

       命令行参数和运行参数都配置好后,就可以运行了。你可以通过调用PB的run函数或WINAPI的ShellExecute函数来执行,如果你想等待InfoMaker执行后再进行其它操作,你也可以调用WINAPI的ShellExecuteEx函数并结合WaitForSingleObject来执行。

       以上仅仅考虑能使用InfoMaker来设计(修改)数据窗口,没有考虑到修改数据窗口后如何应用回去。

       使用InfoMaker设计(修改)数据窗口并保存后,一种方法是重新打开对应窗口(前提是新的数据窗口对象覆盖原有同名数据窗口对象),这样就可以应用新的数据窗口对象属性了,但这样显然不专业。另一种方法是使用LibraryExport获取数据窗口对象语法,然后通过数据窗口控件的create函数来重新创建,注意创建失败时的回滚、原有数据及状态的保存、检索参数值的保存等(这也涉及到较多的技术处理细节)。另外,出于程序稳定性考虑,你还应该在应用新属性前检查哪些属性是不允许修改的,例如用于通常的数据维护的数据窗口,你不能允许用户增加栏位或删除栏位或修改栏位名称或修改栏位数据类型等,因为这样可能会导致引用列名错误、数据共享失败等。

       另一个就是新属性应用的时机。如果你是调用WINAPI的ShellExecuteEx函数并结合WaitForSingleObject来运行InfoMaker,你可以在调用后应用新属性。如果你不等待InfoMaker结束后应用新属性,你可以创建一个菜单项(或相似功能对象)编写代码应用新属性。

       通常在调用InfoMaker设计数据窗口并应用新属性后你还应该再做些善后工作,比如删除临时创建的库文件、恢复InfoMaker环境配置(需要先保存)。

       当然,如果你确实想使用InfoMaker来设计报表,其中也涉及较多的技术处理细节,或许你还需要进行一些探索,希望本文能够给你带来一点启发(可能某些地方还是错误的),运用你比我更丰富的开发经验、更智慧的头脑通过不断的创新写出更简洁的实现代码,我相信,不久InfoMaker就能成为您所开发的系统的报表设计利器了。

       InfoMaker是Sybase推出的一款非常优秀的报表设计及浏览工具,如果在你所开发的系统中能通过上述技巧巧妙结合,将为你的应用系统增加令人羡慕的特色。感谢sybase,也希望大家继续支持sybase的开发工作。(呵呵,我非Sybase的托)

 

作者:康剑民(kangjianmin@163.com

写作日期:2009-01-09

PowerBuilder是一种快速构建商业应用程序的面向对象的开发工具,IDC将之称为一种“黄金标准”,即一个用于衡量所有应用开发工具的基准。它集面向对象数据库技术、分布式应用技术、多媒体技术于一身,是目前最有代表性的数据库开发工具,它占有全球客户/服务器前端开发工具市场40%的份额,位居第一,几乎已发展成为客户/服务器前端开发工具的标准。PowerBuilder 10.5版是Sybase公司2006年推出的新一代4GLPlus数据库开发工具,它不仅继承了以往版本的各种先进技术,而且适应目前开放式软件的发展潮流,在快速集成开发环境中增加了构建Web Services、JSP Web、EJB的功能,满足了在4GLRAD环境中创建完整应用和应用组件的需求,并使企业应用可以平滑过渡到基于浏览器和Web的应用模式下。同时,PowerBuilder 10.5的Web应用开发支持与J2EE和.NET紧密集成,卓越的应用开发效率及强大的Web功能为新版本增色不少。作为一个面向对象的、手段丰富的开发环境,它能极大地提高程序员的工作效率,加快应用系统的开发速度。随着PowerBuilder的日益普及,希望了解和掌握它的人越来越多,在大学的很多专业也已开设有关课程介绍PowerBuilder。本书正是应这种要求而写的,它按教材的体系、教学的特点来介绍PowerBuilder,力求通俗易懂、由浅入深、循序渐进,并附有习题,便于学生练习和掌握所学内容。本书除详细介绍PowerBuilder的基本内容,如应用、窗口、菜单、数据窗口、数据库、事件、函数、用户对象之外,还介绍了数据管道、动态数据窗口、拖放技术、API技术、分布式应用和Web应用等高级技术。通过本书的学习,不仅能达到入门的目的,还能掌握应用系统的实际开发能力,自己开发出实用、高效的应用系统。本书可作为大专院校学生的教材和教学参考书,也可供各种培训班使用和应用开发人员参考。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值