2015-01-12 338 views
-3

我有一個正確的參數呈現報告的問題。 我們有具有日期參數的RDL報告,其默認值是表達式「= today()」。SSRS報告參數

在項目中,我有C#

for(int i = 0; i < 15; i++) 
{ 
    serverReport.SetParameters(new ReportParameter("dt1",date.ToString())); 
    File.WriteAllBytes(path, serverReport.Render("PDF")); 
} 

下面的代碼對於第一次迭代的SQL調用存儲過程具有默認參數和下面的迭代調用傳遞日期(我用SQL事件探查器檢查它)。

我想要在循環中我有許多其他報告具有完全相同的默認日期參數,但問題是與這一個。我已經比較了2個repors中的所有參數屬性(一個有效,另一個不能正常工作),但它們是相同的。我找不到任何區別。

如果我刪除默認值「=今天()」,那麼報告工作正常。 也許sameone有類似的問題,並向我推薦一些關於這個。提前致謝。

回答

1

有幾件事情要檢查:

SetParameters需要IEnumerable<ReportParameter>不是一個單一的ReportParameter對象。請將其改爲:

serverReport.SetParameters(new ReportParameter[] { ReportParameter("dt1", date.ToString()) }); 

確保該參數沒有填充的可用值以及默認值。如果通過的日期不是有效值之一(如果應用),它將不起作用。例如,如果可用值設置爲=Today,那麼唯一正確運行的報告是第一個巧合使用該值的報告。

您確定date.ToString()正在傳遞適當的有效日期嗎?

服務器的報告參數是否與開發環境相匹配?參數設置不會自動更新,以便通過再次部署報告不會覆蓋對服務器所做的任何修改。檢查服務器的報告參數並根據需要進行更新,或者直接刪除並重新部署報告。

+0

只是想寫我自己的問題的解決方案。你摧毀了我。所以我會將你的答案標記爲解決方案。非常感謝你。 這很奇怪,但是當我將參數全部設置爲一個參數列表時,報告正在工作,因爲它應該工作。如果我分別設置參數然後描述問題發生。 似乎SSRS中的錯誤。 –

0

嘗試徹底刪除服務器內的不工作報告(並測試,其中一個工作),並重新部署到服務器。您還可以在報告管理器中檢查參數設置,因爲可能會看到差異。

我以前有過這類問題的報告參數,並且知道參數設置在您部署報告時不會被正確覆蓋。