全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PB(PowerBuilder)是Sybase公司推出的一种优秀的数据库开发工具,利用它的数据窗口控件可以快速地开发出一个数据管理系统。现在许多单位很注重报表的格式,需要不同类型的报表,所以必须提高报表格式的多样性。虽然我们可以利用PB设计出具有打印功能的窗口,但是由于格式是事先规定好的,用户很难根据需要进行修改。Word是大家熟悉的一种文字处理工具,具有强大的编辑与打印功能。如果能够将数据源动态地导入到Word文档中,然后在Word中调整和打印,用户的自由度就比较大。下面笔者以生成用户话费清单为例,介绍一种通过OLE技术嵌入Word文档的方法。创建模板文件首先,我们建立一个报表样式的模板文件,取名为用户清单模板.dot。根据需要录入静态文本,并在需要插入动态数据的地方插入书签。书签名字与PB数据源中列的名字一致,如图1所示。图1 模板文件编写程序1 数据窗口d_user和d_cost,分别取自移动电话用户基本信息表和用户话费记录表,数据模型如2 PB和Word通信时,如果向Word中输出汉字,则该汉字后面会出现与汉字个数相同的乱码,所以必须编写函数处理这种情况。定义全局函数integer f_getcnnum(string aString)。代码如下:string ls_ch /临时单元string ls_SecondSecTable /存放所有国标二级汉字读音integer li_num = 0 /返回值integer i,jfor i = 1 to Len(aString) ls_ch = Mid(aString,i,1) if Asc(ls_ch) = 128 then /判定是汉字 li_num+ i = i+1 end ifnextreturn li_num 3创建窗口w_costlist,其中包含两个数据窗口dw_1和dw_2,分别对应数据窗口d_user和d_cost。再插入两个单行编辑器sle_1和sle_2,分别用于用户录入和选择模板文件与文档输出路径。本文省略选择文件与路径按钮的编程代码。4添加生成用户清单(Word)按钮。该按钮Clicked事件代码如下:constant integer ppLayoutBlank = 12OLEObject ole_objectole_object = CREATE OLEObjectinteger li_ret/建立与Word的连接li_ret = ole_object.ConnectToObject(Word.application)if li_ret 0 then /如果Word还没有打开,则新建一个Word li_ret = ole_object.ConnectToNewObject(Word.application) if li_ret 0 then MessageBox(OLE错误,OLE无法连接! 错误号 : + string(li_ret) return end if ole_object.Visible = falseend ifstring ls_modelfilenamels_modelfilename = sle_1.textstring ls_savefilenamels_savefilename = sle_2.textole_object.Documents.open(ls_modelfilename)constant long wdWord9TableBehavior = 1constant long wdAutoFitFixed = 0constant long wdCell = 12long i,j,k,ll_colnum,ll_rownumstring ls_value,ls_colname/输出清单表头ll_colnum = Long(dw_1.object.datawindow.column.count)dw_1.setredraw(false)for j = 1 to ll_colnum dw_1.setcolumn(j) ls_value = dw_1.gettext() ls_colname = dw_1.describe(# + string(j) + .name) if ls_colname = name then ls_savefilename + = 用户 + ls_value + 话费清单.doc ole_object.selection.goto(true,0,0,ls_colname) ole_object.Selection.TypeText(ls_value) for k = 1 to f_getcnnum(ls_value) ole_object.Selection.TypeBackspace() nextnextdw_1.setredraw(true)/输出清单ll_colnum = Long(dw_2.object.datawindow.column.count)ll_rownum = dw_2.rowcount() + 1ole_object.selection.goto(true,0,0,list)ole_object.ActiveDocument.Tables.Add(ole_object.Selection.Range, ll_rownum, ll_colnum, wdWord9TableBehavior, wdAutoFitFixed)ole_object.Selection.MoveLeft(wdCell)for i = 1 to ll_colnum /得到标题头的名字 ls_colname = dw_2.describe(# + string(i) +.name) +_t ls_value = dw_2.describe(ls_colname + .text) ole_object.Selection.TypeText(ls_value) for k = 1 to f_getcnnum(ls_value) ole_object.Selection.TypeBackspace() next ole_object.Selection.MoveRight(wdCell)next/输出清单数据dw_2.setredraw(false)ole_object.Selection.MoveLeft(wdCell)for i = 2 to ll_rownum for j = 1 to ll_colnum dw_2.scrolltorow(i - 1) dw_2.setcolumn(j) ls_value = dw_2. gettext() ole_object.Selection.MoveRight(wdCell) ole_object.Selection.TypeText(ls_value) for k = 1 to f_getcnnum(ls_value) ole_object.Selection.TypeBackspace() next nextnextdw_2.setredraw(true)constant long wdFormatDocument = 0/保存用户详细话单ole_object.ActiveDocument.SaveAs(ls_savefilename,1)ole_object.Application.Quit()ole_object.DisConnectObject()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房地产估价师考试试题及答案
- 执业兽医资格考试试题及答案(卷二)
- 执业药师中药综合高频考点练习题十
- 护士“三基三严”考试试题及答案
- 2025 年高职动漫设计与制作(动漫特效学)试题及答案
- 数控考试基础题型试题及答案
- 新版gsp计算机系统培训试题及答案
- 时政考试题及答案
- 水利水电工程管理与实务真题(完整版)(答案附后)
- 拆除绿化带应急预案(3篇)
- 初中理科综合复习计划与讲义资料
- 2025广东深圳市罗山科技园开发运营服务有限公司第二批招聘4人笔试考试备考试题及答案解析
- 建设项目造价中英文对照技术文献汇编
- 2025年证券从业资格考试试卷及参考答案
- 经营权抵押合同(标准版)
- 3GWh锂离子电池生产线项目建设工程方案
- 2025云南省交通投资建设集团有限公司普洱管理处招聘约350人笔试历年参考题库附带答案详解
- 电池(储能)安全事故应急预案(如使用)
- 医学科普脑出血康复课件
- 2025年粮油仓储管理员初级考试试题(附答案)
- 酒旅直播培训课件下载
评论
0/150
提交评论