【问题标题】:Can we allow user to only select one parameter at a time in SSRS我们可以允许用户在 SSRS 中一次只选择一个参数吗
【发布时间】:2014-08-08 18:52:44
【问题描述】:

我有三个日期列。我的报告有 6 个参数:所有三列的开始和结束日期范围。当前用户必须选择所有日期范围,但是如果我想允许用户一次只选择一个日期范围怎么办。我不能在参数中执行“允许 NULL 值”选项,因为这将其视为包含空值的字段。我认为不可能允许用户一次只选择一个参数,所以我正在尝试一种方法,其中将有三个参数:一个由日期字段名称组成。其余两个基于从先前参数中选择的字段的日期范围。例如,用户从 first 中选择一个日期字段名称,然后将级联日期参数并根据在前一个参数中选择的日期字段名称获取日期字段的值。但我不确定如何解决这个问题。有什么想法吗?

【问题讨论】:

  • 创建一个存储过程,带有可选参数,在存储过程中使用动态sql,工作很好。
  • 有什么例子吗?抱歉不熟悉
  • google 存储过程,使用动态 SQL 的可选参数,网上有很多东西......

标签: sql sql-server sql-server-2008 reporting-services ssrs-2008


【解决方案1】:

我在一些报告中这样做。第一个参数是“范围是否适用于 A、B 或 C”,第二个和第三个参数分别是开始和结束数据。好吧,我使用整数,但只要你格式化日期,它们的工作方式应该是一样的。

它的工作方式是,您将数据集中的查询设置为一个函数,并将其构建为主要是一个引号,但其中替换了参数值。一个典型的可能是

= "SELECT * FROM dbo.Trips WHERE " + Parameters!WhatField.Value + " between '" + FormatDateTime(Parameters!StartDate.Value, dateformat.shortdate) + "' and '" + FormatDateTime(Parameters!EndDate.Value, dateformat.shortdate) + "'"

您的参数“WhatField”是一个包含 3 个允许值的下拉列表,将值设置为字段名称,并将显示内容作为用户希望看到的字段描述。

我认为您必须在某处设置延迟评估的查询(但我现在不知道在哪里,所以也许我记错了),并且您应该为不会崩溃的参数设置默认值你的报告,但除此之外它相当简单。

哦,为了使查询成为一个函数,它就像一个文本查询,但点击文本框右侧的按钮 - 它上面有一个“fx”

如果您需要更复杂的查询,您可以将整个查询文本放入代码中(关闭报表属性),然后从“fx”按钮调用该函数以生成查询字符串。

【讨论】:

  • 谢谢,这个没试过。我尝试了一种不同的方法,我创建了另一个字段,并在 date1 字段不为空时将其命名为 datetype 我分配了一个名称“datetype1”,将所有字段与其余字段合并,然后将所有字段合并并分配“全部”值。然后我创建了 datetype 参数并允许用户选择他们想要的 datetype 并将其级联,因此日期范围参数取决于 datetype 参数。它有效,但唯一无效的是“所有”日期类型。
  • @user3483150 如果您有一个非常复杂的查询,您可以完全在存储在表单上的代码中构建它 - 将其放入报表级别的函数中,然后从数据集“查询文本”页面调用该函数。你甚至可以让它在不同的表中出现,你只需要确保所有返回的字段都具有完全相同的名称和类型。
猜你喜欢
  • 1970-01-01
  • 2017-02-26
  • 2014-10-17
  • 2018-10-25
  • 2016-10-07
  • 1970-01-01
  • 2014-02-11
  • 1970-01-01
  • 2016-02-25
相关资源
最近更新 更多