我们是否允许用户在SSRS中一次只选择一个参数

时间:2014-08-08 18:52:45

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

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

1 个答案:

答案 0 :(得分: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"中调用该函数。按钮生成您的查询字符串。