任務背景
在帶參數的報表應用中在查詢的應用中同一個用戶每次查詢所用的參數值或者查詢條件往往是相同的或者說常用的總是那幾種查詢條件如果每次都讓用戶輸入相同的條件值用戶會覺得很煩於是用戶往往會提出能否提供查詢條件保存的功能
面臨困難
所謂的查詢條件的保存乍一聽似乎很簡單實際做起來並不容易最直接的是要和用戶關聯因為某個用戶輸入的查詢條件只能提供給該用戶使用不能 讓別的用戶看見其次要考慮和報表模塊查詢模塊關聯因為同一個用戶在不同的報表模塊查詢模塊裡用的查詢條件是不同的 另一個要考慮的是查詢條件的存儲格式因為不同模塊的參數個數參數名均不相同所以查詢條件的存儲格式要能夠靈活擴充靈活解析除了存儲格式還需要考 慮存儲位置由於和用戶關聯很多人直接想到的是采用cookies來實現可是由於是WEB應用客戶端的機器可能隨時會發生變化比如用戶可能在辦公 室上網也可能在家裡上網在家裡用另一台機器於是預先存儲的查詢條件就沒了另外由於每一個模塊用戶都可能存儲多個查詢條件供選擇cookies 用起來還是不方便因此查詢條件最好保存到服務器上 接著還需要考慮界面上的制作在原先的參數輸入頁面上要提供一個歷史查詢條件的下拉選項該下拉選項從服務器存儲的查詢條件裡讀取其次還需要做一個 查詢條件是否保存的選項如果保存則提供保存名稱的編輯框 做好這些之後服務器端的程序還需要寫不少首先根據客戶端的輸入情況判斷使用歷史查詢條件還是使用當前的輸入值如果使用歷史查詢條件則到庫中讀 取如果使用當前的輸入值還需要處理是否保存查詢條件 總之做起來非常麻煩!而所有這些程序還要考慮通用性否則每個模塊寫一遍那不是累死了!基於以上的考慮建議還是采用快逸報表的 參數模板+參數處理類 來實現簡單方便許多具體步驟描述如下
實現步驟
設計一個參數模板該模板裡增加三個多余的參數是否保存參數值保存名歷史查詢
在參數處理類裡如果讀取到需要保存參數值則將參數值按名字存入一張預先設計的參數值表中該表的結構為用戶名報表名保存名參數名與值建表SQL如下
CREATE TABLE param (
userName varchar() not null
reportName varchar() not null
saveName varchar() not null
argName varchar() not null
saveValue varchar() )
用戶訪問該參數模板的時候可以輸入新的參數值並選擇是否把新輸入的參數值保存下來也可以選擇歷史保存的參數值進行查詢不需要重復的輸入
如果用戶選擇的是歷史保存的參數值那麼在參數處理類裡從數據庫中取出歷史保存的參數值來進行查詢
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26437.html