SSRS报告表达式问题

问题描述 投票:0回答:1

我的文字如下(有些问题没有数字,我会忽略):

  1. 问题1
  2. 问题2

并且我正在尝试提取问题编号以将其按 A-Z 排序(如果有问题编号)或分配 0(如果没有编号)。 为此我想出了这个表达: =IIf(IsNothing(InStr(Fields!questiontext.Value,".")), 0, CInt(Left(Fields!questiontext.Value,InStr(Fields!questiontext.Value,"."))))

现在,当我运行报告时,我得到以下信息: 从字符串 "" 转换为整数类型无效。

我期望表达式对于没有编号的问题返回 0,如果有则返回问题的编号。

如有任何帮助,我们将不胜感激,谢谢。

reporting-services ssrs-2012 reportbuilder
1个回答
0
投票

已经很长时间没有使用 SSRS 了,但是在测试它时我想起了一件令人讨厌的事情:

iif()
总是评估双方。因此,无论您进行何种检查,如果
CInt()
无法将子字符串转换为 int,您都会收到 #Error。

尝试使用

Val()
。如果无法转换,则默认为 0,因此您甚至不需要带有所有重复项的
iif

=Val(Left(Fields!questiontext.Value, InStr(Fields!questiontext.Value, ".")))

从技术上讲,这包括子字符串中的句点,但是

Val()
可以处理它,并且递减长度参数将在其变为负数的情况下导致 #Error。

结果将如下所示:

Screenshot of some sample data

© www.soinside.com 2019 - 2024. All rights reserved.