潤幹報表如何記錄上次列印的位置

2021-09-25 18:49:15 字數 1262 閱讀 3578

在實際專案中,經常會遇到列印的需求,而對於列印的特殊需求也越來越多,例如需要記錄上次列印位置,當前列印時根據上次的列印位置繼續列印的功能,像銀行的存摺的資料每次列印都不是用新的紙張,而是根據上次列印的位置繼續列印。

在潤幹的列印功能中如何實現上述需求呢?

大致思路:首先潤幹提供了列印後呼叫的 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 = new connect();

resultset res = connect

.executequery(「select * from printmemory t where t.reportname = 『」

+ report + 「『」);

// 如果資料庫中沒有記錄則代表第一次列印,如果有記錄進行計算

if (res.next()) else else {

connect.executeinsert(「insert into printmemory values (『」

+ reportname + 「『, 」, 」, 」 + rowheight + 「)」);

潤幹報表如何呼叫spring資料

spring是乙個開源框架,是為了解決企業應用程式開發複雜性而建立的。在 web 開發環境中經常會與 struts hibernate聯合起來使用,進行規範的框架結構開發。潤幹中的二次開發也可以與 ssh 框架相結合部署到 web 專案中。本文介紹在設計時沒有啟動 web 服務,在設計器中使用 sp...

潤幹報表列印多邊框線問題

在報表列印中,經常會遇到列印時,在頁的最下面和最上面出現一條橫線。出現這條線,都是由邊框線引起的,是在有邊框線的行和沒有邊框線的行的交匯處發生的。我們看看有哪些情況會出現這條線以及處理方法。方法 a 將這行的下邊框用下劃線替代。b 有擴充套件的行,在下一行前插入一行,將這行的邊框設定上邊框有線,下邊...

如何在潤幹報表中製作分組填報表

同樣地,我們以 demo 示例庫中的雇員表資訊維護為例,在資料填報頁面,需要實現以下效果 1 雇員資訊按照地區分組顯示 2 雇員基本資訊可進行修改 效果圖如下圖所示 在製作分組填報表之前,我們先來看一下它的設計原理。原理說明 分組填報表中有兩個維度 分組維度和明細維度,如何處理兩者之間的邏輯關係是重...