SQL Server报告服务:如何在打开时停止触发报告

时间:2008-11-10 12:02:19

标签: sql-server reporting-services

我们有一些SQL服务器报告服务报告。我当时没有写,但我必须照顾他们。

这些报告在浏览器中打开时触发,并且使用默认参数(搜索条件和限制为空白),它们检索大量数据,这很慢。客户希望在用户输入参数并按“查看报告”

之前不生成报告

不幸的是我根本不了解SSRS - 如何在打开报告时停止报告?

<小时/> 有关如何在部署的报告中执行此操作的详细信息(根据Rihan Meij的回答)如下:

点击报告,点击顶部的“属性”。您可能需要稍等一下,因为慢速报告可能正在运行。然后单击左侧的“参数”。

对于每个参数,请确保选中“提示用户”,并且对于至少一个参数,不选中“已默认”。单击左上角的“查看”(或返回文件夹并单击报告名称)以查看报告,并注意报告不会立即开启。

在报告构建器中,您可以通过“过滤器”菜单执行此操作。取消选择至少一个过滤器的值,然后保存报告。

当报告没有参数时,是否也可以停止报告加载?

8 个答案:

答案 0 :(得分:15)

我发现我必须设置至少一个报告参数,以便没有默认值来保持报告不会自动运行。

我必须使用这个配置(请注意,我没有默认值的所有3个参数都接受Null,因此用户只需单击Null复选框):

[缺少屏幕截图]

让用户看到这个并保持报告不会自动运行:

[缺少屏幕截图]

答案 1 :(得分:4)

我将其中一个参数选择的默认值设置为值-1,该值不存在(不是有效的参数值)。这没有产生错误。它只是将参数下拉框设置为阻止报告运行。我无法使用默认值NULL,因为NULL选择了所有内容,我希望用户在报表运行之前有目的地选择ALL(NULL)。如果选择了ALL,则报告需要几分钟才能呈现。

答案 2 :(得分:3)

我已经通过将查询slighlty更改为在运行时需要参数来完成此操作。

我已经在报告网站上发布了报告后,指定了该参数,应该提示用户。这确实会导致当用户只打开报告查看报告时,报告不会将sql server拉到膝盖。

答案 3 :(得分:2)

我知道这篇文章有点陈旧,但由于我在这里有另一个解决方案,我只是张贴它以防有人需要它。

如果您使用的是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;

答案 4 :(得分:1)

我发现最好的方法是添加一个不允许空值的参数,但报告不会使用它。这会阻止它在开始时呈现,但不会影响报告。

唯一的缺点是,如果您在报表查看器中显示报表,则顶部有一个框,看起来有点奇怪。我相信你可以使用一些C#/ CSS隐藏它。

由于我没有使用报表查看器来显示,只是在后端渲染这不会影响我。

即使您使用报告查看器,它在开发时也很有用!

答案 5 :(得分:1)

我这样做只是为key参数提供一个不返回任何结果的默认值。

答案 6 :(得分:1)

在处理包含可选字段的报表时,我发现了一个很好的技巧,但如果可选字段为空,则会提取大量数据。

第1步:防止自动射击

  • 确保&#34;允许空值&#34;没有为可选参数启用
  • 确保可选参数
  • 没有默认值

第2步:在不使用&#39; null&#39;

的情况下使参数可选
  • 启用&#34;允许空白值&#34;对于可选参数
  • 修改可选参数的where子句 WHERE (@param="" OR column = @param)

使用此方法会有额外的字段供最终用户担心,报告在请求之前不会触发,如果文本框保留为空,则不会评估where子句中的条件。

注意:如果报告指定了可用值,则可以使用对表结构无效的任何值而不是&#34;&#34;,您也可以使用其他数据类型(非字符串)这样

答案 7 :(得分:-2)

我在查询中添加了此内容

其中“开始” = @开始

并设置了一个仅具有可用值“ Start”的参数。报告正在等待输入。