.NET Web应用中RDLC报表使用非First()函数报错的解决办法
RDLC报表表达式报错的替代解决方法
1. 检查字段数据类型
确认DataSet里的LastName、FirstName字段是字符串类型,如果是Object等非字符串类型,RDLC的字符串函数会解析失败。可以直接在DataSet设计器里修改字段类型为System.String。
2. 用IIF处理空值
空值(包括DBNull)是这类报错的常见诱因,即使字段表面有值也可能存在隐性空值,表达式里先判断再处理:
=IIF(IsNothing(Fields!LastName.Value) Or IsNothing(Fields!FirstName.Value), "", Fields!LastName.Value & ", " & Fields!FirstName.Value)
Trim函数同理:
=IIF(IsNothing(Fields!LastName.Value), "", Trim(Fields!LastName.Value))
3. 强制转换字段类型
如果字段类型无法修改,在表达式里显式转成字符串再操作:
=CStr(Fields!LastName.Value) & ", " & CStr(Fields!FirstName.Value)
Trim场景:
=Trim(CStr(Fields!LastName.Value))
4. 自定义RDLC代码函数
在报表的报表属性-代码面板里添加VB自定义函数,把逻辑封装起来,比如:
Public Function CombineNames(lastName As Object, firstName As Object) As String If lastName Is Nothing Or firstName Is Nothing Then Return "" End If Return CStr(lastName) & ", " & CStr(firstName) End Function Public Function TrimString(input As Object) As String If input Is Nothing Then Return "" End If Return Trim(CStr(input)) End Function
然后在文本框表达式里调用:
=Code.CombineNames(Fields!LastName.Value, Fields!FirstName.Value)
=Code.TrimString(Fields!LastName.Value)
5. 统一报表与后端的区域设置
报表的语言/区域设置和后端不匹配时,也可能引发字符串解析异常。在报表属性里把语言设为和后端一致的选项(比如zh-CN或en-US)。
内容的提问来源于stack exchange,提问作者Don Del Grande
相关产品推荐
相关产品推荐

