我有一个包含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的等级。
答案 0 :(得分:0)
您可以使用内置的SSRS Previous功能。如果您按照需要对数据进行排序,这将有效。
=Previous(Fields!TargetGrade.Value)
然而,在以下场景中导师4会发生什么(使用之前会导致目标成绩为空白):
TutorInitials TargetGrade
1 A
2 B
3
4
5 C
你可以通过两种方式解决这个问题。
查看使用查找。
我更愿意存储变量并在需要时调用它。
在您的报告代码中添加一个变量(注释代码可能无法编译,因为它不在我的脑海中。)
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中进行大量工作。我们发现将旧报告重新打开给用户并手动添加目标成绩会更加简单。
感谢大家对此进行调查。