1. 程式人生 > >水晶報表 動態批量列印本地圖片

水晶報表 動態批量列印本地圖片

目的:從資料庫中得到本地圖片的路徑,再將其列印到報表上,每一個ID查詢出來的資訊(包括多幅圖片)對應報表中的一頁

環境:VS2005+自帶水晶報表

基本思想:在資料庫裡新增圖片欄位,SQL Server把它們稱作 BLOB (二進位制大型物件) 欄位,將其對映到報表上

需要說明的是:下圖中表UriResult1是強型別,也就是說如果要在該表手動新增其它表字段的時候,當聯合查詢資料庫,並將查詢

                    出來的值賦給UriResult1時候會報"未能啟用約束.一行或多行中包含違反非空 唯一或外來鍵約束的值",這個時候

                    可以採用弱型別,即手動生成UriResult1.如果UriResult1只對應一張表,則不會報錯

這裡就不介紹詳細步驟了,只把核心的內容記錄下

1.資料庫用到的表

   ChemResult    SickInfo     UriResult

   由於圖片不儲存在資料庫,但是為了顯示在報表上,需要在某張表中新增圖片的欄位,作為對映用,這裡在UriResult添加了6個圖片欄位

2.手動新增一個DataSet,取名為AveDataSet,其中AveDataSet.xsd檔案如圖一所示:

   AveDataSet.xsd

                                                              圖一   

需要說明的是:如圖所示,UriResult1為表UriResult的別名,是從伺服器資源管理器裡拖進AveDataSet.xsd裡的

                                DataTable1為工具箱裡拖進來的DataTable,其中的8個欄位都是手動一行一行新增的

注意以上兩個Table的欄位名,以及格式都要統一,否則會報錯的,而且還要新增他們的關係,欄位也是一一對應

這裡我設定的是 DataTable1為父表, UriResult1為字表               

3.開啟報表,設定表的關係

   資料庫連線             資料庫表連線

                 圖二                                                                         圖三

    這裡圖二表示資料庫連線,將資料集中的對映表DataTable1與資料庫的三張表連線

          圖三表示各表內連線的關係,每兩個欄位確定一條資料,這裡特別提醒,不要有分支,否則報表會有很多不需要的資料顯示

4.把資料庫專家裡面DataTable1的欄位拖進報表的詳細資料裡面

                                                         資料庫專家

5.實現的程式碼:

6.實際圖片

水晶報表-圖片