2009-01-14 69 views
5

我是SSRS的新手,所以我很抱歉如果這個問題太簡單了:報告中的參數驗證

我有一個接受名爲「金額」的參數的報告。我想將有效輸入約束爲貨幣值> = 0,並且如果用戶輸入不正確的值,則彈出打開錯誤消息。

我不想在我的存儲過程中驗證輸入並拋出異常,因爲SSRS顯示一個非常通用的「someTable查詢執行失敗」消息給從另一臺機器訪問報表的用戶,而且我的業務確實不想打開「啓用遠程錯誤」標誌。

如何將輸入驗證添加到報告參數並通知用戶輸入錯誤?

是的,我搜索了一下,但沒有多少運氣。在此先感謝:)

回答

6

好吧,這個怎麼樣?

您在SSRS中所擁有的全部是SQL報表字段中的查詢和表達式。

也許你可以在報告的頂部爲你的錯誤信息添加一個大的紅色文本框,並給它一個表達式,如'= IIf(Parameters!Amount.Value < 0,「Error:Invalid Amount」, 「」)」。

然後轉到您的表的「隱藏」屬性,並給它表達「=參數!Amount.Value < 0」

您還可以添加到您的查詢的WHERE子句,並添加「AND @Amount> = 0 「所以當出現錯誤時你不會從數據庫中提取數據。

0

可以在基於特定列表或查詢查詢SSRS中生成報告參數,但我不認爲你可以應用正則表達式或類似的東西。

相反,您可能會考慮將報告分成兩個面板,一個顯示報告和一個顯示錯誤,然後創建一個帶有函數的程序集,在運行之前驗證報告的參數。如果驗證參數功能成功,您將隱藏錯誤面板並顯示報告面板,如果不是,則執行相反操作。

+0

我並不是真的在尋找正則表達式的解決方案。此外,「兩個面板+自定義DLL來驗證錯誤」選項聽起來有點矯枉過正(更不用說額外的組裝會使部署複雜化) - 這是驗證報告參數的標準方式嗎? – Juliet 2009-01-14 18:34:10

+0

代替單獨的DLL,可以在報告中嵌入代碼。我不確定自定義代碼是否是驗證參數的標準方式,但它對我來說似乎是最明智的方式。 – 2009-01-15 10:45:19

0

我不認爲你可以在報告工具本身做很多事情。這是相當簡陋的。

但是,您可以提供一個ASP.net Web界面或表單,您可以使用該界面向用戶詢問.NET允許的任何格式的參數值,並使用ReportViewer控件顯示報表。這聽起來令人生畏,但它實際上非常簡單,特別是如果您已經擁有可以構建的項目。

微軟給出tutorials for using the ReportViewer controls

+0

沒有可以建立的項目,這些報告是嚴格內部的,我們的會計部門訪問MS提供的默認http:// someserver/Reports頁面。它的一點點工作比它的價值寫在這個網站周圍的網絡接口只是爲了param驗證:) – Juliet 2009-01-14 19:01:26