PB動(dòng)態(tài)報(bào)表格式自由定義實(shí)現(xiàn)

PB動(dòng)態(tài)報(bào)表格式自由定義實(shí)現(xiàn)

ID:37856138

大?。?2.50 KB

頁(yè)數(shù):4頁(yè)

時(shí)間:2019-06-01

PB動(dòng)態(tài)報(bào)表格式自由定義實(shí)現(xiàn)_第1頁(yè)
PB動(dòng)態(tài)報(bào)表格式自由定義實(shí)現(xiàn)_第2頁(yè)
PB動(dòng)態(tài)報(bào)表格式自由定義實(shí)現(xiàn)_第3頁(yè)
PB動(dòng)態(tài)報(bào)表格式自由定義實(shí)現(xiàn)_第4頁(yè)
資源描述:

《PB動(dòng)態(tài)報(bào)表格式自由定義實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、PB動(dòng)態(tài)報(bào)表格式自由定義的實(shí)現(xiàn)??在通常的Server/Client方式MIS開(kāi)發(fā)中,總是有沒(méi)完沒(méi)了的報(bào)表需要制作,調(diào)試報(bào)表花費(fèi)的時(shí)間也是最多而且乏味,還常常不能滿足客戶的要求。要是能夠讓用戶自己調(diào)整報(bào)表的格式與內(nèi)容,然后將它保存下來(lái),程序下次啟動(dòng)時(shí)它自動(dòng)調(diào)用保存了的報(bào)表格式那有多好。本人通過(guò)如下方法最終實(shí)現(xiàn)了用的要求?! B(PowerBuilder)有一種以PSR結(jié)尾的特殊的保存報(bào)表的文件格式(本文簡(jiǎn)稱作PSR文件)。根據(jù)數(shù)據(jù)窗口可以直接讀取PSR文件生成報(bào)表的原理,程序通過(guò)生成PSR文件,實(shí)現(xiàn)動(dòng)態(tài)報(bào)表格式的保存

2、?! ∫弧?shí)現(xiàn)原理:  PB中的報(bào)表其實(shí)就相當(dāng)于是數(shù)據(jù)窗口?! 〉谝徊?,動(dòng)態(tài)報(bào)表的實(shí)現(xiàn)。通過(guò)設(shè)置數(shù)據(jù)窗口對(duì)象(dataobject)中文本、列等的Resizeable與moveable屬性為1來(lái)實(shí)現(xiàn)對(duì)象位置的拖動(dòng)控制,通過(guò)數(shù)據(jù)窗口的Modify函數(shù)實(shí)現(xiàn)對(duì)象值的更改(包括增加與刪除)?! 〉诙?,報(bào)表格式的保存。在一個(gè)應(yīng)用當(dāng)中,數(shù)據(jù)窗口對(duì)象的名稱總是唯一的,將每一個(gè)數(shù)據(jù)窗口對(duì)象轉(zhuǎn)化成PSR文件存于數(shù)據(jù)庫(kù)表中。在窗口打開(kāi)時(shí),程序先校驗(yàn)報(bào)表格式是否存在。如果存在,先將報(bào)表格式讀取出來(lái)放在一個(gè)臨時(shí)文件當(dāng)中,然后設(shè)置數(shù)據(jù)窗口(d

3、atawindow)的數(shù)據(jù)對(duì)象(dataobject)為這個(gè)報(bào)表文件,然后提取數(shù)據(jù);如果不存在,直接提取數(shù)據(jù)即可?! 《?、實(shí)現(xiàn)過(guò)程:  1、建立一個(gè)數(shù)據(jù)庫(kù)表用以保存報(bào)表格式文件。表名:dyn_reportDwobjectVarchar2(20)數(shù)據(jù)窗口對(duì)象名稱PrimarykeyRptitleVarchar2(80)報(bào)表的標(biāo)題名稱MemoLongraw報(bào)表格式  2、建立一個(gè)窗口w_temp。定義實(shí)例變量如下:  stringis_dwtype,is_dwobject//保存報(bào)表中對(duì)象的類型及名稱控件名稱控件含義Dw_

4、print數(shù)據(jù)窗口對(duì)象Cb_exit退出按鈕Cb_savereport報(bào)表格式保存按鈕  3、在窗口的OPEN事件中加入如下代碼,校驗(yàn)報(bào)表格式是否存在,如果存在讀取定義好的報(bào)表格式到數(shù)據(jù)窗口?! lobemp_pic  longll_handle  stringls_dwobject,ls_reportfile,ls_path  ls_dwobject=dw_print.dataobject  //判斷是否存在該數(shù)據(jù)窗口的報(bào)表格式  selectcount(*)into:ll_countfromdyn_reportw

5、heredwobject=:ls_dwobject;  ifll_count>0then    //讀取報(bào)表格式文件到大文本變量    selectblobmemointo:emp_picfromdyn_reportwheredwobject=:ls_dwobject;    //創(chuàng)建psr臨時(shí)文件到硬盤    ls_reportfile='temp7089.psr'    ll_handle=FileOpen(is_reportfile,StreamMode!,write!,LockWrite!,Replace!)

6、    FileWrite(ll_handle,emp_pic)    FileClose(ll_handle)    dw_print.dataobject=ls_reportfile    dw_print.settransobject(sqlca)  else    Dw_print.settransobject(sqlca)  Endif  Dw_print.retrieve()  4、報(bào)表格式的保存。通過(guò)Cb_savereport按鈕的clicked實(shí)現(xiàn)?! tringls_filename  longll

7、_count  blobEmp_id_pic  ls_filename="temp70201.psr"  //保存報(bào)表格式到硬盤臨時(shí)文件  dw_print.saveas(ls_filename,PSReport!,false)  sqlca.autocommit=true  selectcount(*)into:ll_countfromdyn_reportwheredwobject=:is_dwobject;  ifll_count=0then    insertintodyn_report(dwobject,rpt

8、itle)    values(:is_dwobject,:ls_filename,:ls_path);  endif  //從硬盤臨時(shí)文件讀取數(shù)據(jù)保存到數(shù)據(jù)庫(kù)表中  emp_id_pic=of_readbmpfile(ls_filename)//該函數(shù)將二進(jìn)制文件內(nèi)容讀到大文本對(duì)象中  //更新數(shù)據(jù)庫(kù)  UPDATEBLOBdy

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。