用另一个值替换SSRS中的输出

时间:2018-02-07 15:10:33

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

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

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 个答案:

答案 0 :(得分:0)

您可以使用内置的SSRS Previous功能。如果您按照需要对数据进行排序,这将有效。

=Previous(Fields!TargetGrade.Value)

然而,在以下场景中导师4会发生什么(使用之前会导致目标成绩为空白):

TutorInitials    TargetGrade
1                A
2                B
3       
4                
5                C 

你可以通过两种方式解决这个问题。

  1. 查看使用查找。

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

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

    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 Expression

    =Code.ProcessAndReturnGrade(Fields!TargetGrade.Value)
    

答案 1 :(得分:0)

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

感谢大家对此进行调查。