在實際專案中,經常會遇到列印的需求,而對於列印的特殊需求也越來越多,例如需要記錄上次列印位置,當前列印時根據上次的列印位置繼續列印的功能,像銀行的存摺的資料每次列印都不是用新的紙張,而是根據上次列印的位置繼續列印。
在潤幹的列印功能中如何實現上述需求呢?
大致思路:首先潤幹提供了列印後呼叫的js函式runqian_printover(),列印結束後呼叫runqian_printover()計算下這次列印的最後一頁高度以及報表名稱等相關引數統一插入到庫里。再次訪問時候,根據相關的字段取出相應的記錄對當前raq插入空白一行並且設定行高存成新的raq檔案,然後通過標籤裡面的printedraq屬性列印修改後的raq。來實現記錄列印的功能。
首先隨意準備一張可以展現多頁資料的報表(增加了個引數模板,通過選擇不同引數產生不同資料來模擬多次列印的功能)。
因為要進行列印記錄的相關資料插入到資料庫,建立一張資料庫表用來存放報表名稱、最後一頁的行高、引數、狀態等資訊(具體需要插入哪些引數根據具體需求決定,例子中只用報表名稱作為標識進行查詢),表結構如下。
reportname varchar2(20) y
rowheight number y
在展現報表前先要進行查詢是否有列印記錄,如果有的話讀取行高數對當前報表進行插入一行並且設定行高再另存為一張新的raq,然後通過標籤中的printedraq屬性(列印的報表,此屬性用於顯示報表和列印報表不同)列印修改後的raq。(由於此屬性只能存放具體raq,所以不能使用reportdefine的形式,需要將報表物件另存為成乙個raq檔案)。如果沒有記錄則正常流程。
//查詢是否有過記錄,如果有過記錄取得最後一頁行高插入到報表第一行,然後將新報表存放在標籤裡的printedraq屬性
connect connect =newconnect();
resultset res = connect
.executequery(「select * from printmemory t where t.reportname = 『」
+ report + 「『」);
//如果資料庫中沒有記錄則代表第一次列印,如果有記錄進行計算
if(res.next())elseelse{
connect.executeinsert(「insert into printmemory values (『」
+ reportname + 「『, 」, 」, 」 + rowheight + 「)」);
記錄列印位置
在實際專案中,經常會遇到列印的需求,而對於列印的特殊需求也越來越多,例如需要記錄上次列印位置,當前列印時根據上次的列印位置繼續列印的功能,像銀行的存摺的資料每次列印都不是用新的紙張,而是根據上次列印的位置繼續列印。在潤幹的列印功能中如何實現上述需求呢?大致思路 首先潤幹提供了列印後呼叫的js函式ru...
潤幹報表如何記錄上次列印的位置
在實際專案中,經常會遇到列印的需求,而對於列印的特殊需求也越來越多,例如需要記錄上次列印位置,當前列印時根據上次的列印位置繼續列印的功能,像銀行的存摺的資料每次列印都不是用新的紙張,而是根據上次列印的位置繼續列印。在潤幹的列印功能中如何實現上述需求呢?大致思路 首先潤幹提供了列印後呼叫的 js 函式...
記錄滾動位置
h5頁面記錄滾動位置的步驟思想 第二種情況 頁面分頁時候,記錄滾動位置 這種情況很坑,以下是處理這樣的情況的步驟 舉例 電商商品首頁記錄位置 總要思想步驟 1.先記錄滾動位置和當前商品資料到快取。ps 因為跳轉時候如果不先渲染出你的頁面,這時候你滾動位置如果大於你的某個值,會跳到當前最大位置,就是沒...