我试图将一些我在报告中经常需要的表达式封装到报告函数中,这样我就可以编写一次代码并在报告中的任何地方使用它。但我真的是一个 Pascal / C# 程序员,并且在 VB(A) 语法上苦苦挣扎.....
但即使是这个微小的日期格式化功能也无法正常工作......
Public Function DateFmt (ByVal dt As DateTime) As String
Return IIF(IsNothing(dt), "", FormatDateTime(dt, 2))
End Function
基本上,如果数据库中有一个DateTime
字段NULL
,我想显示一个空字符串(空单元格),否则使用“短日期”格式选项。
在一个单元格上,我试图将其添加为单元格表达式,但是当我开始输入这样的表达式时:
=Code.
智能感知启动,但我的功能未显示在该列表中......嗯......我错过了什么?
更新:我注意到虽然智能感知不起作用,但我仍然可以将表达式
=Code.DateFmt(.....)
放入单元格中 - 但唉,它不起作用。虽然直接添加表达式可以很好地抑制
NULL
显示日期,但使用此共享函数会导致NULL
日期01.01.0001
再次显示在我的报告中。为什么?
另外:我需要一个函数,它根据选择列表返回一个值 -SWITCH
基本上是一个语句。这里的代码正确吗?
Public Function GetGrp(ByVal grp As String)
Select Case grp
Case "Region"
Return fields!RegionId.Value
Case "Somedate"
Return YEAR(Fields!Somedate.Value)
End Select
End Function
此函数实际上会导致编译失败,并显示以下错误消息:
用户定义代码第 7 行出错:[BC30469] 对非公共成员的引用需要对象实例
?!?!?!?!? SSRS 到底想在这里告诉我什么?
更新 #2:
好的,解决了这个问题 - 该Fields
集合在自定义代码中不可用(不清楚为什么不 - 无论如何......)。
所以我需要将此功能更改为:
Public Function GetGrp(ByVal grp As String, ByVal fields As Fields)
现在那部分有效