【问题标题】:SSRS : Filter not working on grouped columnSSRS:过滤器不适用于分组列
【发布时间】:2017-07-13 15:43:36
【问题描述】:

我创建了一个按日期和时间列分组的 SSRS 报告。日期作为父组,时间作为子组。我还从我的选择语句中的某个列中提取了日期和时间,如下所示:-

CONVERT(VARCHAR(10),DetectionTime,103) AS  Detection_Date,
CONVERT(TIME(0), DetectionTime) AS Detection_Time

我进一步创建了参数,并使用此链接http://mohamedakb.blogspot.com/2011/08/how-to-get-list-distinct-values-from.html 中的以下代码从给定字段中找到了唯一值,并按照上述步骤从给定参数中删除重复项:-

Public Shared Function RemoveDuplicates(parameter As Parameter) As String()

Dim items As Object() = parameter.Value
System.Array.Sort(items)
Dim k As Integer = 0

For i As Integer = 0 To items.Length - 1
If i > 0 AndAlso items(i).Equals(items(i - 1)) Then
Continue For
End If

items(k) = items(i)
k += 1
Next
Dim unique As [String]() = New [String](k - 1) {}
System.Array.Copy(items, 0, unique, 0, k)

Return unique
End Function

现在,当我尝试在日期列上应用过滤器时,它无法正常工作,就像没有显示输出一样。此外,我尝试使用除分组之外的其他列,过滤器值应用于这些列,但不适用于分组列。还有其他方法还是我遗漏了什么?

【问题讨论】:

  • 你参数是否从数据集中绘制它的值?
  • @RossBush 是的,我有一个从数据集中提取值的虚拟参数和另一个使用上述代码过滤值的主要参数。
  • 被过滤的日期列是否为了显示而重新格式化?如果这会将日期转换为文本值,则转换格式或转换日期值可能存在差异。如果items(i).Equals(items(i - 1)) 比较的是非舍入时间,则您可以轻松地从数组中删除任何项目。那么,items() 的元素的数据类型是什么?项目中的时间是否四舍五入?
  • @LaughingVergil 原始日期列也是一个文本值。我只是使用转换函数从这个文本值中分离出日期和时间,比如 2017-07-11 07:59:40:935。
  • 您说没问题,但是,当您通过 CONVERT 函数运行 2017-07-11 时,返回的日期值是 11/07/2017,并且与您上面指出的格式不匹配。跨度>

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


【解决方案1】:

老问题,但我遇到了过滤器无法正常工作的问题。我发现通过将我过滤的列添加到分组中解决了这个问题。

EG:我试图进行过滤,以便仅将 HasElement = 'Y' 的项目拉入结果中。我必须将“HasElement”添加到分组中。一旦我这样做了,过滤器就可以正常工作了。

此外,当我尝试对列中的过滤值进行“总计”时,总计不起作用。我每行合计一列。为了获得总数,我创建了一个按“1”和 hasElement 列分组的新列分组。现在可以正确计算总数了。

这是一张可以更好地解释它的图片。

【讨论】:

    猜你喜欢
    • 2015-07-24
    • 1970-01-01
    • 2019-02-21
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-04-18
    • 2015-07-12
    • 1970-01-01
    相关资源
    最近更新 更多