FastReport中[Line#]+[Memo1.Value]求和表达式计算结果错误
问题原因
FastReport里的+运算符会根据两边值的类型自动选择执行逻辑:只要任意一侧是字符串类型,+就会执行字符串拼接,不会做数值加法。
你写的表达式中[Memo1.Value]默认返回字符串类型,运算时[Line#]会被隐式转换为字符串,因此最终输出的是拼接后的文本内容,而非数值求和结果。
修复方法
把两个操作数显式转为数值类型再做加法即可,两种方案可任选:
- 直接修改表达式,调用FastReport内置的
ToNumber函数做类型转换,通用写法如下:
ToNumber([Line#]) + ToNumber([Memo1.Value])
如果确认[Line#]本身返回整数类型,也可以只转换Memo1的取值:
[Line#] + ToNumber([Memo1.Value])
- 提前将Memo1绑定的字段格式设置为数值类型,取消默认的文本返回格式,修改后
[Memo1.Value]会直接返回数值类型值,+运算符会自动执行算术求和。
注意:如果
[Memo1.Value]中包含非数字内容(比如文字、特殊符号),ToNumber函数会抛出转换错误,使用前请确认对应字段存储的均为合法数值。
内容的提问来源于stack exchange,提问作者Djemoui
相关产品推荐
相关产品推荐

