水晶報表 動態批量列印本地圖片
目的:從資料庫中得到本地圖片的路徑,再將其列印到報表上,每一個ID查詢出來的資訊(包括多幅圖片)對應報表中的一頁
環境:VS2005+自帶水晶報表
基本思想:在資料庫裡新增圖片欄位,SQL Server把它們稱作 BLOB (二進位制大型物件) 欄位,將其對映到報表上
需要說明的是:下圖中表UriResult1是強型別,也就是說如果要在該表手動新增其它表字段的時候,當聯合查詢資料庫,並將查詢
出來的值賦給UriResult1時候會報"未能啟用約束.一行或多行中包含違反非空 唯一或外來鍵約束的值",這個時候
可以採用弱型別,即手動生成UriResult1.如果UriResult1只對應一張表,則不會報錯
這裡就不介紹詳細步驟了,只把核心的內容記錄下
1.資料庫用到的表
ChemResult SickInfo UriResult
由於圖片不儲存在資料庫,但是為了顯示在報表上,需要在某張表中新增圖片的欄位,作為對映用,這裡在UriResult添加了6個圖片欄位
2.手動新增一個DataSet,取名為AveDataSet,其中AveDataSet.xsd檔案如圖一所示:
圖一
需要說明的是:如圖所示,UriResult1為表UriResult的別名,是從伺服器資源管理器裡拖進AveDataSet.xsd裡的
DataTable1為工具箱裡拖進來的DataTable,其中的8個欄位都是手動一行一行新增的
注意以上兩個Table的欄位名,以及格式都要統一,否則會報錯的,而且還要新增他們的關係,欄位也是一一對應
這裡我設定的是 DataTable1為父表, UriResult1為字表
3.開啟報表,設定表的關係
圖二 圖三
這裡圖二表示資料庫連線,將資料集中的對映表DataTable1與資料庫的三張表連線
圖三表示各表內連線的關係,每兩個欄位確定一條資料,這裡特別提醒,不要有分支,否則報表會有很多不需要的資料顯示
4.把資料庫專家裡面DataTable1的欄位拖進報表的詳細資料裡面
5.實現的程式碼:
6.實際圖片