簡體   English   中英

SQL 服務器報告服務:如何在打開報告時停止觸發

[英]SQL server reporting services: how to stop a report firing when opened

我們有一些 SQL 服務器報告服務報告。 那時我沒有寫,但我必須照顧他們。

這些報告在瀏覽器中打開時會觸發,並且使用默認參數(搜索詞和限制為空)它們會檢索大量數據,這很慢。 客戶希望在用戶輸入參數並按下“查看報告”之前不生成報告

不幸的是,我根本不了解 SSRS - 如何在打開報告時阻止它觸發?


如何在已部署的報告上執行此操作的詳細信息(根據 Rihan Meij 的回答)如下:

單擊報告,單擊頂部的“屬性”。 您可能需要稍等片刻,因為現在可能正在運行緩慢的報告。 然后點擊左側的“參數”。

對於每個參數,請確保選中“提示用戶”,並且至少對於一個參數,未選中“具有默認值”。 再次單擊左上角的“查看”(或返回文件夾並單擊報告名稱)以查看報告,並注意報告不會立即觸發。

在報告生成器中,您可以通過“過濾器”菜單執行此操作。 從至少一個過濾器中取消選擇值,並保存報告。

當報告沒有參數時,是否也可以阻止報告在加載時觸發?

我發現我必須至少設置一個報告參數才能沒有默認值來防止報告自動運行。

我必須使用此配置(請注意,我保留的所有 3 個沒有默認值的參數都接受 Null,因此用戶只需單擊 Null 復選框):

[截圖丟失]

讓用戶看到這一點並防止報告自動運行:

[截圖丟失]

我將我的參數選擇之一的默認值設置為不存在的值 -1(不是有效的參數值)。 這沒有產生錯誤。 它只是將參數下拉框設置為並阻止報告運行。 我不能使用 NULL 的默認值,因為 NULL 會選擇所有內容,我希望用戶在報告運行之前有目的地選擇 ALL (NULL)。 如果選擇 ALL,則報告需要幾分鍾才能呈現。

我通過在運行時將我的查詢更改為需要參數來做到這一點。

我在報告站點上發布報告后,指定參數應提示用戶。 這確實具有這樣的效果,即當用戶打開報表查看時,報表不會使 sql server 屈服。

我知道這篇文章有點舊,但由於我在這里有另一個解決方案,我只是發布它以防有人需要它。

如果您使用的是 ReportViewer,則可以設置屬性 ShowBody="False"。 然后在 OnSubmittingParameterValues 事件上,將 ShowBody 屬性更改為 true。 那么您就不需要任何額外的參數或報告中沒有默認值的參數。

<rsweb:ReportViewer 
        ID="rv" 
        runat="server"  
        Width="100%" 
        Height="100%" 
        SizeToReportContent="false" 
        ZoomMode="PageWidth"
        KeepSessionAlive="true" 
        ProcessingMode="Remote"
        PromptAreaCollapsed="false" 
        InteractivityPostBackMode="AlwaysAsynchronous"
        AsyncRendering="true" 
        ExportContentDisposition="AlwaysInline"
        ShowReportBody="False"
        ShowPrintButton="false"
        OnSubmittingParameterValues="rv_SubmittingParameterValues"/>

然后在 rv_SubmittingParameterValues 方法中:

this.rv.ShowReportBody = true;

在處理具有可選字段的報告時,我發現了一個很好的技巧,但如果可選字段為空,則會提取大量數據。

第 1 步:防止自動觸發

  • 確保未為可選參數啟用“允許空值”
  • 確保可選參數沒有默認值

第 2 步:在不使用“null”的情況下使參數可選

  • 為可選參數啟用“允許空白值”
  • 將可選參數的 where 子句修改為WHERE (@param="" OR column = @param)

使用這種方法,最終用戶需要擔心額外的字段,直到請求報告才會觸發,如果文本框留空,則不會評估 where 子句中的條件。


注意:如果報告指定了可用值,則可以使用對您的表結構無效的任何值來代替“”,您也可以通過這種方式與其他數據類型(非字符串)一起使用

我發現最好的方法是添加一個不允許空值但不被報告使用的參數。 這會阻止它在開始時呈現,但不會影響報告。

唯一的缺點是,如果您在報告查看器中顯示報告,則頂部有一個看起來有點奇怪的框。 我相信你可以使用一些 C#/CSS 來隱藏它。

因為我沒有使用報告查看器來顯示,所以只在后端呈現這不會影響我。

即使您使用的是報表查看器,它在開發時也很有幫助!

我只是通過為不返回任何結果的 key 參數提供默認值來做到這一點的。

我在查詢中添加了這個:

其中“開始”= @Start

並制作了一個只有可用值“開始”的參數。 報告正在等待輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM