[SSRS] 用預存程序執行報表,無法取得欄位資料。

摘要: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>

 

至於為什麼會出現無法取得欄位資訊??這點我實在想不出來,就還請知道可能原因的前輩們,指導一下吧!!

謝謝!!

 

 

水滴可成涓流,涓流可成湖泊大海。
汲取累積知識,將知識堆積成常識;將常識探究成學識;將學識簡化為知識;授人自省。