【发布时间】:2015-09-11 13:42:56
【问题描述】:
我正在为报表服务器创建报表,并且鉴于它缺少代码编辑器*来定义完整的方法,任何用于设置属性的复杂表达式都会很快变得非常混乱,因为它们必须是单个语句.通常这意味着多层嵌套的Iif(...) 炸弹以六个右括号结尾。任意虚构示例:
=Iif(Fields!myField.Value == "Cancelled",
"It's been cancelled",
Iif(Fields!anotherField.Value < 15,
"Less than 15 things",
Iif(Fields!anotherField.Value >= 15 And Fields!anotherField.Value < 30,
"Between 15 and 30 things",
Iif(Fields!anotherField.Value >=30,
"Over 30 things",
"")))) 'keep hitting that close bracket key until things stop getting red squiggles
呸。
我可以做些什么来在我的表达式编辑器中获得一个漂亮的完整方法体吗?我知道在 C# 中至少有一些方法采用现有方法的名称,或者只是让您直接在其中编写方法,但我不知道那叫什么。这似乎是我想要的那种东西——一个带有“内部”方法体的单一表达式。我希望能够编写如下表达式:(为我狡猾的 VB.Net 语法道歉)
= SomeMagic({
If (Fields!myField.Value == "Cancelled") Then
Return "It's been cancelled"
End If
If (Fields!anotherField.Value < 15) Then
Return "Less than 15 things"
End If
If (Fields!anotherField.Value >= 15
And Fields!anotherField.Value < 30) Then
Return "Between 15 and 30 things"
End If
If (Fields!anotherField.Value ?= 45) Then
Return "Over 30 things"
End If
})
如果可行但仅在 C# 中可行,并且可以将报告使用的语言更改为 C#,我愿意接受 - 与 VB.Net 相比,我更熟悉 C#。如果有一种方法可以将 competent* 代码编辑器与 Report Server 一起使用,并在其中定义可以在表达式编辑器中调用(并被它识别)的方法,那么这也是一个可接受的解决方案。
*从技术上讲,是一个代码编辑器。这是一个对话框。是明文。它没有编译时错误检查。表达式编辑器无法识别其中定义的方法。几乎没用。
【问题讨论】:
-
我可能弄错了 Report Server / Reporting Services 的名称。我的意思是你用来实际创建报告的编辑器,它存在于 Sql Server 附带的
Visual Studio Shell 2012 (Integrated)中。