定義RDLC報表資料來源
Posted by minying 於 22 一月, 2009
ReportViewer支援的資料包含物件(Object)及資料表(DataTable),我想資料表的方式應是比較常用的方式吧!在設計RDLC報表時,需要有資料來源,加入資料來源有兩個步驟。
1.增加資料來源到專案中:
1.1在資料來源視窗中,"加入新資料來源…",透過資料來源組態精靈來設定。會產生DataSet資料集及DataSet檔案(.xsd)。
1.2可在專案中加入新項目,指定加入資料集(DataSet1.xsd)的方式,手動新增DataTable,並為DataTable加入資料行。
這樣就可以提供報表設計時所需使用的資料來源。目前我大都使用1.2的方式,產生一個空的DataSet及DataTable及DataColumn,再動態將要使用的資料填入這個DataTable中。
2.新增專案的資料來源到報表:
使用"報表資料來源"對話方塊,在設計.rdlc的畫面時,從功能表中的報表->資料來源。
這個動作並不是每次一定要做的,因為從資料來源視窗中將欄位拖拉到報表頁面時,會自動產生相關的設定;但如果報表不再使用先前所使用的資料來源時,它並不會自動偵測而改變;或者DataSet及DataTable稱名變更後,也不會自動變動,必須手動去修改這裡的值。專案資料來源的名稱是以DataSet的Name + 底線 + DataTable的Name。DataSet及DataTable的Name,可以在.xsd的設計屬性中修改。這個名稱在Coding時,是會用到的,重要。
當執行專案時,在ReportViewer中出現錯誤訊息如下時,"尚未提供資料來源’DataSet1_DataTable1’的資料來源執行個體“,就必須手動去.rdlc中的報表資料來源對話方塊中去修改相關的值。
路經貴寶地 said
版主您好:
您的RDLC教學很寶貴
外面不多專門介紹RDLC的書籍
最近正好在研究RDLC的使用
想要Load已寫好的查詢的DataTable給版主1.2所描述的DataSet.xsd
卻不知道怎麼載入DataSet.xsd
想要請問版主如何Load
感恩
頭大的過路人
minying said
以下是我的做法,如果其他的做法,歡迎大家提出來分享!
1.切換到資料來源視窗,可以看到所建立的DataSet及DataTable的名稱。
2.如果你用預設的名稱,則為DataSet1及DataTable1
3.將資料載入的語法:DataSet1.Tables(“DataTable1″).Load(cmd.ExecuteReader)
路經貴寶地 said
版主您好:
您的RDLC教學很寶貴
現在外面不多專門介紹RDLC的書籍
最近正好在研究RDLC的用法
想要把已經寫好的查詢的DataTable傳到版主1.2所描述的DataSet.xsd
卻不知道該怎麼做
該寫的DT和該建的.xsd等都建好了
想請問版主究竟如何傳過去呢?
感恩
頭大的過路人
路經貴寶地 said
不好意思
請問一下"cmd.ExecuteReader"是什麼呢?
如果是SQL指令的字串
VB.NET顯示.ExecuteReader不是字串的成員的錯誤訊息
也不是TableAdapter的成員
之後嘗試將"cmd.ExecuteReader"直接用已寫好的DataTableName置換
執行後卻顯示[並未將物件參考設定為物件的執行個體](try…catch截出的例外訊息)
顯然它應該沒有吃進去
試了好久仍試不出來
還希望版主解惑
感恩
頭大的過路人
minying said
cmd是我宣告的OledbCommand物件
Dim cmd As New OleDbCommand
cmd.Connection = cnDB ‘cnDB是我宣告的oleDbConnection物件
cmd.CommandText = “Select * from ………"
再來把資料載入DataTable中
MyDataSet.Tables(“DataTable1″).Load(cmd.ExecuteReader)
若你是用OleDbDataAdapter也可以這樣寫
Dim cmd As New OleDbCommand
cmd.Connection = cnDB
cmd.CommandText = “Select * from ……."
Dim da As New OleDbDataAdapter(cmd)
da.Fill(MyDataSet, “DataTable1″)
路經貴寶地 said
感謝版主的熱心指導
我因為從頭到尾沒有用到OleDbCommand
無怪乎找不到
我是宣告一個string去做SQL指令
用OleDbDataAdapter去link這個string執行
按版主新提供的方法便可以解套
感激不盡
後來又發現了還有Merge()的方法也可以Load程式自建的DataSet資料進MyDataSet.xsd內
再次感謝
頭大的過路人
minying said
Merge 方法用來合併具有大量相似結構描述的兩個 DataTable 物件。合併通常用於用戶端應用程式,來將資料來源的最新變更加入現有的 DataTable。這讓用戶端應用程式擁有具資料來源的最新資料的已重新整理 DataTable。
用於資料載入的時機,可能還要考量一下吧!