摘要:SSRS 用預存程序執行報表,卻沒有資料欄位
SSRS 用預存程序執行報表,卻沒有資料欄位??
今天同事來問了一個報表問題,非常詭異。
同事說:他寫了一隻預存程序要放進報表中,讓報表直接呼叫。但是在整理欄位資料時,竟然一筆資料都帶不出來??
一般來說,遇到這樣的情況,很直覺就是你預存程序沒有寫好!
就和同事查證了一下PROC,發現直接使用EXEC,是可以正常執行並產生結果的。
這就奇了?
表示預存程序沒有問題,那就是報表編輯器的問題了??
那就直接下SQL語法不使用預存程序。
EXEC USP_RPT002,資料欄位就很神奇的被帶了出來。
但是因為參數允許多個值,若是直接使用文字的查詢方式,將會出現預存程序參數的數量錯誤。
這時想起,報表其實最後都是編譯成XML儲存的。
先確認,要執行的DataSet已經帶出了所想要的欄位。
儲存關閉報表,使用報表原始碼檢視,來開啟報表。
找到預存程序所在的DataSet,(這裡我的是DataSet1),
1. 找到CommandText,將原先的EXEC USP_RPT002 改為 USP_RPT002
2. 加入<CommandType>StoredProcedure</CommandType>在 CommandText的上方。
3. 儲存,並關閉報表原始碼。
4. 重新開啟報表。一切都可以正常執行預覽。
<DataSet Name="DataSet1">
<Query>
<CommandType>StoredProcedure</CommandType>
<CommandText>USP_RPT002</CommandText>
</Query>
至於為什麼會出現無法取得欄位資訊??這點我實在想不出來,就還請知道可能原因的前輩們,指導一下吧!!
謝謝!!
水滴可成涓流,涓流可成湖泊大海。
汲取累積知識,將知識堆積成常識;將常識探究成學識;將學識簡化為知識;授人自省。