我们有一些SQL服务器报告服务报告。我当时没有写,但我必须照顾他们。
这些报告在浏览器中打开时触发,并且使用默认参数(搜索条件和限制为空白),它们检索大量数据,这很慢。客户希望在用户输入参数并按“查看报告”
之前不生成报告不幸的是我根本不了解SSRS - 如何在打开报告时停止报告?
<小时/> 有关如何在部署的报告中执行此操作的详细信息(根据Rihan Meij的回答)如下:
点击报告,点击顶部的“属性”。您可能需要稍等一下,因为慢速报告可能正在运行。然后单击左侧的“参数”。
对于每个参数,请确保选中“提示用户”,并且对于至少一个参数,不选中“已默认”。单击左上角的“查看”(或返回文件夹并单击报告名称)以查看报告,并注意报告不会立即开启。
在报告构建器中,您可以通过“过滤器”菜单执行此操作。取消选择至少一个过滤器的值,然后保存报告。
当报告没有参数时,是否也可以停止报告加载?
答案 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步:防止自动射击
第2步:在不使用&#39; null&#39;
的情况下使参数可选WHERE (@param="" OR column = @param)
使用此方法会有额外的字段供最终用户担心,报告在请求之前不会触发,如果文本框保留为空,则不会评估where子句中的条件。
注意:如果报告指定了可用值,则可以使用对表结构无效的任何值而不是&#34;&#34;,您也可以使用其他数据类型(非字符串)这样
答案 7 :(得分:-2)
我在查询中添加了此内容
其中“开始” = @开始
并设置了一个仅具有可用值“ Start”的参数。报告正在等待输入。