【问题标题】:Showing a Specific Row From a Row Group - Visual Studio SSRS显示行组中的特定行 - Visual Studio SSRS
【发布时间】:2017-10-30 16:31:15
【问题描述】:

我在 Visual Studio 中有一个 SSRS 报告,显示已注册课程的学生。我正在使用一个参数来允许用户包含或排除取消的注册(源数据中有一个字段指示注册是否被取消)。

当用户选择包括取消的注册时,我在学生取消然后重新注册的情况下遇到了麻烦。该学生将出现在 2 行数据中,但我只想显示他们最近的活动(即,如果他们注册、取消、然后重新注册,我只希望显示他们最近的注册活动)。

我目前有一个行组表达式设置为按学生的唯一标识符进行分组。但是,我不知道如何准确控制哪一行决定了其他字段的值,当它们有不止一行被组合在一起时。

我的行分组表达式如下(其中 cf_code 是学生注册的特定课程,student_number 是学生的唯一标识符):

=Fields!cf_code.Value & Fields!student_number.Value

我如何表明当为同一学生将已取消和已注册的行分组在一起时,矩阵中其他字段中应显示的唯一数据是与注册相关的数据(最近的活动)?

谢谢!

【问题讨论】:

    标签: visual-studio reporting-services


    【解决方案1】:

    有几种方法可以处理这个问题:

    1. 如果您只想查看最新注册,您可以通过执行MAX() 在数据库端消除这些行,根据学生的唯一标识符进行分区并按日期排序。这可能需要将您的排除参数传递给数据库,这样您就不会在需要时排除行。

    2. 使用 SSRS:在学生组中,您可以将行可见性表达式设置为:

      IIf(Count(enrollment_date) > 1, Max(enrollment_date) <> enrollment_date, False)

    这将检查以确保每一行都是最新的,并且仅在该行包含该特定学生的最新注册日期时才显示该行。

    更新:这就是我可能会如何分组。从 student_number 上的父组开始,其子组是详细信息行组。

    student_number
        [detail rows]
    

    然后,在 tablix 中的详细信息行(但不是学生级别)上,如上所述设置行可见性。这将学生与注册分开,并允许您隐藏详细信息行,而学生不会消失。

    【讨论】:

    • 感谢您的回复。如果可能,我想使用 SSRS 来执行此操作,以便我仍然可以使用所有数据。当我尝试您的第二个建议时,它似乎删除了特定学生的所有行。
    • 哦,哎呀。您需要将其包装在 IIf 语句中,并且仅在每个学生超过一行时才进行比较。我会相应地更新答案。
    • @Chris:SSRS 不太适合处理数据集。为什么不能在 SQL 中正确执行?
    • @McGlothlin 这似乎仍然为学生隐藏了整个行组。我怀疑是因为此时它已经将行分组在一起,然后因为行分组显示取消的数据而忽略了它们。
    • @Jacobm001 这只是可以根据用户定义的参数过滤此查询的几种方法之一。这就是为什么数据集本身必须包含比这一特定案例更多的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-01
    • 2019-03-19
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    相关资源
    最近更新 更多