Sql server SQL server reporting services:如何在打开时停止报告触发

Sql server SQL server reporting services:如何在打开时停止报告触发,sql-server,reporting-services,Sql Server,Reporting Services,我们有一些SQL server reporting services报告。我当时没有写信,但我必须照顾他们 这些报告在浏览器中打开时会触发,如果默认参数“搜索条件和限制”为空,则它们会检索大量数据,这很慢。客户希望在用户输入参数并按view report(查看报告)之前不生成报告 不幸的是,我对SSR一点也不了解——当报表打开时,如何阻止它被触发 根据Rihan Meij的回答,如何在部署的报告中执行此操作的详细信息如下: 单击报告,单击顶部的属性。您可能需要稍等,因为慢速报告可能正在运行。然

我们有一些SQL server reporting services报告。我当时没有写信,但我必须照顾他们

这些报告在浏览器中打开时会触发,如果默认参数“搜索条件和限制”为空,则它们会检索大量数据,这很慢。客户希望在用户输入参数并按view report(查看报告)之前不生成报告

不幸的是,我对SSR一点也不了解——当报表打开时,如何阻止它被触发

根据Rihan Meij的回答,如何在部署的报告中执行此操作的详细信息如下:

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

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

在报表生成器中,可以通过“过滤器”菜单执行此操作。至少从一个筛选器中取消选择值,然后保存报告

<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"/>

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

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


然后,在报告站点上发布报告后,我指定参数应提示用户。这样做的效果是,当用户打开报表查看时,报表不会使sql server屈服。

我发现我必须设置至少一个报表参数,使其不具有默认值,以防止报表自动运行

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

[缺少屏幕截图]

要让用户看到这一点并防止报告自动运行,请执行以下操作:


[缺少屏幕截图]

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

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

因为我没有使用报表查看器来显示,只是在后端进行渲染,这不会影响我


即使您使用的是报表查看器,在开发时也会很有帮助

我只是为不返回任何结果的关键参数提供了一个默认值。

我知道这篇文章有点旧,但因为我这里有另一个解决方案,我只是在有人需要时发布它

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

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

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

步骤1:防止自动点火

确保未为可选参数启用允许空值 确保可选参数没有默认值 步骤2:在不使用“null”的情况下使参数成为可选参数

为可选参数启用允许空白值 将可选参数的where子句修改为 其中@param=或column=@param 使用此方法,最终用户需要担心额外的字段,报告在被请求之前不会触发,如果文本框为空,则不会计算where子句中的条件


注意:如果报告指定了可用值,则可以使用对表结构无效的任何值,而不是,您也可以通过这种方式与其他数据类型非字符串一起使用

其中“开始”=@Start


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

最好用文本进行解释,因为下面提供的屏幕截图链接不再有效。例如,如果您的关键参数以部门名称为文本,则只需将默认值指定为NO-AUTO-RU
N、 这样数据集就不会产生任何结果。最简单,最精彩-谢谢。今天的示例-日期范围-我在过去留下了toDate的默认年份:fromDate default=7/1/2015,toDate default=6/30/2014。。。你猜怎么着?在这个日期范围内没有发生任何事情;因此,当他们第一次执行报告时,它很快不返回任何行。然后用户可以编辑日期参数和查看报告。由于外部链接中断,本文中的重要信息已过时。如果可以,请还原丢失的屏幕截图。附加的屏幕截图中的链接已失效