目的:從數據庫中得到本地圖片的路徑,再將其打印到報表上,每一個ID查詢出來的信息(包括多幅圖片)對應報表中的一頁
環境:VS2005+自帶水晶報表
參考文獻:http://babyt.cnblogs.com/archive/2005/04/21/142789.html 阿泰BLOG
遇到的問題:http://topic.csdn.net/u/20090925/16/1cf16b4d-e7a4-4d3c-a7c6-5850862cd5fb.html?71028
基本思想:在數據庫裏添加圖片字段,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.實際圖片