【问题标题】:Replacing an output in SSRS with another value用另一个值替换 SSRS 中的输出
【发布时间】:2018-02-07 15:10:32
【问题描述】:

我有一个包含 2 列的表,TutorInitials 和 TargetGrade。如果用户没有评分,我们需要将其替换为给予不同用户的评分。例如:

TutorInitials    TargetGrade
1                A
2                B
3       
4                C

TutorInitial 3 没有成绩,因此当显示“TargetGrade”时,无论他们在报告中弹出什么,我们都需要用 TutorInitial 2 ('B') 的“TargetGrade”结果替换空框,所以它显示如下:

TutorInitials    TargetGrade
1                A
2                B
3                B
4                C

抱歉,如果我没有很好地解释它,我对 SSRS 很陌生。

我尝试过使用 IIF 和 WHERE 表达式,但无法使用。

谢谢 抢

编辑:发生的事情是我们在一所学校的科目中,教师在一年中换了一次。新老师需要从前任老师那里获得学生的目标成绩。因此,与其只是从上面的单元格中获取成绩,还需要来自特定的导师(科目第一老师),所以我可能需要将成绩替换为 1,2 或 4 的成绩。

【问题讨论】:

  • 为什么是 2,B?我们是如何决定的?为什么不是 C 而不是 B?总是一个先前的成绩?
  • 试试这个-> IIF(IsNothing(Fields!TargetGrade,Value),Previous(Fields!TargetGrade,Value),Fields!TargetGrade,Value)
  • 如果上一行也没有成绩怎么办?
  • 对不起,我应该更清楚。它并不是要专门去抢上一行的等级。我想用另一个特定的用户等级来填充它。所以我知道 TutorInitials 3 没有成绩,我知道 TutorInitials 1,2 和 4 确实有成绩。我可以选择其中任何一个,但如果我特别想插入 TutorInitials 2 的数据。有没有办法使用相同的代码,但只需替换 TutorInitial ,所以如果我想在 TutorInitial 1 出现时调出 TutorInitial 4 的成绩,我可以这样做吗?
  • 我认为这应该在检索数据集 (SQL) 时解决,而不是在 SSRS 中解决。

标签: sql visual-studio reporting-services ssrs-expression


【解决方案1】:

您可以使用内置的 SSRS Previous 函数。如果您的数据按您需要的方式排序,这将起作用。

=Previous(Fields!TargetGrade.Value)

但是,在以下情况下导师 4 会发生什么(使用以前的会导致目标成绩为空白):

TutorInitials    TargetGrade
1                A
2                B
3       
4                
5                C 

您可以通过以下两种方式之一解决此问题。

  1. 研究使用查找。

  2. 我更愿意存储变量并在需要时调用它。

在您的报告代码中添加一个变量(注意代码可能无法编译,因为它不在我的脑海中)。

Dim lastGrade As String

public Function ProcessAndReturnGrade(ByVal targetGrade AS String) As String
Begin
    If (targetGrade<>DbNull.Value) Then
       lastGrade = targetGrade
    End If
    return lastGrade       
End Function 

然后在你的 TargetGrade 表达式中

=Code.ProcessAndReturnGrade(Fields!TargetGrade.Value)

【讨论】:

  • 谢谢。不过,我不确定这两种解决方案都适用于我们的情况。发生的事情是我们在一所学校的科目中,老师在一年中换了一次。新老师需要从前任老师那里获得学生的目标成绩。因此,与其只是从上面的单元格中获取成绩,还需要来自特定的导师(科目第一老师)。我不确定我是否正确阅读了第二部分,但如果有办法将 lastGrade 指向我们原来的导师成绩,那么这可能会奏效。
  • 你应该用这个花絮更新你的问题。我的回答没有解决您上面评论中的要求。
【解决方案2】:

我们已经很好地研究了这个问题,正如 Harry 昨天所说,看起来这实际上需要在数据集中的 SQL 中进行一些广泛的工作。我们发现向用户重新打开旧报告并手动添加目标成绩会简单得多。

感谢大家对此进行调查。

【讨论】:

    猜你喜欢
    • 2021-09-24
    • 2016-08-23
    • 1970-01-01
    • 2019-12-22
    • 2021-12-25
    • 2019-08-06
    • 1970-01-01
    • 2016-01-09
    • 2023-01-07
    相关资源
    最近更新 更多