|
導讀數據庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。所謂“數據庫”是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應... 數據庫,簡而言之可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。所謂“數據庫”是以一定方式儲存在一起、能與多個用戶共享、具有盡可能小的冗余度、與應用程序彼此獨立的數據集合。 在通常的管理信息系統開發過程中,總是有沒完沒了的報表需要制作,調試報表花費的時間也是最多而且乏味,還常常不能滿足客戶的要求。如果能夠讓用戶自己調整報表的格式和內容,然后將它保存下來,程序下次啟動 時若能自動調用保存了的報表格式那就方便多了。
實現原理 PowerBuilder中有一種以PSR為后綴的特殊的保存報表的文件格式(本文簡稱PSR文件),數據窗口可以直接讀取PSR文件生成報表,而程序通過生成PSR文件,就可以實現動態報表格式的保存。
首先,通過設置數據窗口對象(dataobject)中的文本、列等的Resizeable和moveable屬性為1來實現對象位置的拖動控制,通過數據窗口的Modify函數實現對象值的更改(包括增加和刪除)。
其次要保存報表格式。在一個應用中,數據窗口對象的名稱總是惟一的,將每一個數據窗口對象轉化成PSR文件存于數據庫表中。在窗口打開時,程序先校驗報表格式是否存在。如果存在,將報表格式讀出來放在一個臨時文件當中,然后設置數據窗口(datawindow)的數據對象(dataobject)為這個報表文件,并提取數據; 如果不存在,直接提取數據即可。
實現過程
1. 建立一個數據庫表用以保存報表格式文件,各個字段定義如下: 2. 建立一個窗口w_temp。 定義實例變量如下: string is_dwtype,is_dwobject //保存報表中對象的類型及名稱 3. 在窗口的Open事件中加入如下代碼, 校驗報表格式是否存在,如果存在,讀取定義好的報表格式到數據窗口。 blob emp_pic long ll_handle string ls_dwobject,ls_reportfile,ls_path ls_dwobject = dw_print.dataobject //判斷是否存在該數據窗口的報表格式 select count(*) into:ll_count from dyn_report where dwobject =:ls_dwobject; if ll_count>0 then //讀取報表格式文件到大文本變量 selectblob memo into:emp_pic from dyn_report where dwobject =:ls_dwobject; //創建PSR臨時文件并保存到硬盤 ls_reportfile =‘\temp7089.psr’ ll_handle = FileOpen(is_reportfile,StreamMode!,write!,LockWrite!,Replace!) FileWrite(ll_handle,emp_pic) FileClose(ll_handle) dw_print.dataobject = ls_reportfile dw_print.settransobject(sqlca) else Dw_print.settransobject(sqlca) End if Dw_print.retrieve()
全新的路由器不僅讓你更穩定快速地連接無線網絡,更可以讓家中的智能設備連接在一起。
|