說說報表續打
所謂續打就是同一個報表,在已經打印完畢后,由于數據的增加,將已經打印的紙張(舊紙)再放入打印機,然后從上一次打印的位置開始接著打印新增的數據。
續打比較適合日志性質的報表打印,比如醫院信息系統中的病程記錄打印。病程記錄是比較重要的病歷文書,需要醫生定時書寫,并簽名表示確認,而目前電子簽名還不現實,因此計算機里面的文檔是不能手動簽名的,需要打印出來在手工簽名。一天或幾天打印一次,則一個完整的病程記錄文檔需要打印多次。很顯然單個的病程記錄不大可能正好占據一頁,若硬要一次打印從新的一頁開始則浪費紙張而且格式不符合要求。因此就需要降上一次打印的已經有內容的最后一頁(舊紙)放在新紙的上面然后進行打印,對于續打線由于上次打印已經打印的頁眉頁腳,因此續打時不應打印頁眉頁腳。
如果只是簡單的從指定頁開始打印來實現續打,則新打印的內容會和已經打印的內容相重復。此時因為打印機瞬時硬件狀態和操作員的對齊精度的問題,新打印的內容不會和舊內容完全重合,則此時打印效果可能如圖所示非常糟糕難看。

對于續打,可以在打印的時候將打印的最后一個記錄的定位信息保存到數據庫中,下次打印時就可以自動的從上次打印的位置繼續打印了。我估計銀行信息系統中打印存折就可能采用這種模式。但如此以來,程序將不得不為支持續打而增加不少內容,需要新增數據庫結構,需要新增程序來控制續打,而且報表模板也可能需要作特定設置,如果進行一次續打后操作員覺得效果不好想要重新打印則程序又得為此修改數據庫。若信息系統中存在不少續打的應用,則程序的開發和維護都比較困難。
從上面的分析,我們可以知道續打必須有操作員的輔助,操作員需要找到要續打的舊紙并按照正確的方向放在打印機紙盒的最上面,操作員為了續打要手動的做不少工作。因此干脆在續打前讓操作員再辛苦一下指定續打位置也未嘗不可,如此開發人員不必為了支持續打而勞累,一切交于支持續打的打印工具和操作員。操作員由于親自指定續打位置而更注意使用,使用更自由,而且這個工作量不算大。
操作員自己定義續打位置,可以使用鼠標點擊打印預覽視圖中的某個位置,然后在點擊出繪制一個橫線表示續打位置,打印機就從續打線處開始打印。續打線上面的部分不打印但占地方,而且續打頁不可以打印頁眉和頁腳。這里又有一個續打線是否合理的問題,續打線應當在打印頁面上某個空隙中,而不能橫跨一行文本或圖片,報表中可能某些區域不能放置續打線。操作員可能眼神不好或者鼠標不靈活,有可能難于做到這點,這就需要報表工具對用戶確定的續打線位置進行修正,以確保續打位置合情合理。
實現續打方法可能有很多種,本人自己寫的報表工具實現續打的的基本過程為,當操作員在打印預覽控件中按下鼠標,則程序獲得鼠標位置,作為續打線的位置,然后將其轉換為在文檔視圖中的位置,然后進行修正,確定續打線的最終位置,而在打印預覽控件也在續打線的位置上繪制一條橫線。當打印文檔時,則續打線以上的文檔內容不進行打印,而從續打線的位置開始打印文檔。而且打印的第一頁文檔不打印頁面和頁腳。
posted on 2006-08-29 08:49 袁永福 電子病歷,醫療信息化 閱讀(4886) 評論(12) 收藏 舉報
浙公網安備 33010602011771號