在我的文章 使用eclipse在jsp上顯示水晶報表(三)用sql語句過濾資料 中, 我寫到 "在.net中,你可以很容易的用sql語句過濾報表資料,但在CR4E中沒這樣的功能設定,但可以通過編寫程式碼完成。" 其實在eclipse 中也是可以做到的, 只是我學藝不精, 沒注意到而已.
經過這幾天的測試, 我發現添加到報表的 sql 命令對象是完全脫離了資料庫的一個資料集, 這個資料集的內容在添加到報表中的時候已經確定了.
如果在串連到資料庫的情況下, 點擊頁面工具列裡面 [重新整理] 按鈕, 將可以同步到資料庫的資料, 但是要注意防止使用者惡意重新整理.
這裡分 CR4E1 和 CR4E2 兩部分來說.
一. CR4E1
IDE: eclipse 3.2, 資料庫: SQL Server 2005
直接使用sql 命令對象的關鍵是 "*.sqlpage" 檔案, 在該檔案的 右鍵菜單 中, 我們可以看到 "Craystal Reports", 點擊進去可以看到 "Add To New Report" 和 "Add To Current Report" 的菜單選項. 從這兩個菜單選項的名稱來看, 我們大概也能猜到他們的作用了吧.
沒錯, 你在 sqlpage 檔案中編寫的sql 語句, 只要通過運行, 就可以把sql 的結果集添加到當前報表或新的報表中, 成為他們的一個資料來源.
⑴ 建立 sqlpage 檔案
建立 sqlpage 檔案有兩種方法.
1. 通過菜單"file" -> "new" -> "other", 快顯視窗, 選擇 "Data" -> "SQL Scrapbook Page"
2. 通過 “Database Explorer”, 點擊上面紅框圈中的地方.
⑵ 在 sqlpage 裡面寫sql
⑶ sss.sqlpage 的右鍵菜單
圈紅圈的就是重點了. 點擊 “Use Database Connection”, 其實不管是建立或使用串連, 都是跟“Database Explorer”相聯絡的.
點擊 “Run Sql”, 這個是重中之重, 只有成功執行的sql 才能添加到報表中. 每次添加sql 到報表前, 都需要執行 “Run Sql”.
執行的結果在 “DataOutput”中顯示
⑷ 把sql 添加到報表中, 由於我的報表檔案 “CrystalReport1.rpt” 已經存在, 並且開啟著, 所以我點擊 “Add To Current Report”, 如果如下:
“sss”是預設取 sqlpage 檔案的名稱, 你可以改成其他的名稱的, 如 “aaa”, AddressId 是select 的欄位. 你可以把 AddressID 欄位添加到報表裡面了. 這個時候資料來源sss 其實跟 sss.sqlpage 是無關的了, 你可以重複 2-4 的步驟, 把其他的sql 結果集添加到報表中.
⑸ 結果:
由於圖片太多, 文章開啟的速度將受到很大影響, 所以 CR4E2 的部分留到下一篇文章
使用eclipse在jsp上顯示水晶報表(七)用sql 命令對象作為資料來源2