RDLC报表文本框显示"错误号"?

expeditioner 2009-08-18 10:10:29
报表中有个文本框,表达式如下,

=IIf(Sum(Fields!A.Value)=0,0,Sum(Fields!B.Value) / Sum(Fields!A.Value))

为防止除数为零错误,使用IIF函数先判断,但报表生成后,Sum(Fields!A.Value)=0的仍然显示"错误号",
Sum(Fields!A.Value)<>0的则正常。
...全文
1109 28 打赏 收藏 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
cactus_hj 2012-10-08
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 的回复:]
=IIf(Val(Fields!A.Value)=0,0,Val(Fields!B.Value) / Val(Fields!A.Value))
[/Quote]

我也遇到这个问题,使用这种办法确实有用,感谢了
zlo309618100 2012-04-16
  • 打赏
  • 举报
回复
IIF是一个带三个参数的函数式,最后相除的那个参数,无法正确的转化为某种类型,所以就错了.
飓风部落格 2011-08-08
  • 打赏
  • 举报
回复
方法有两种:
一,
楼上的:=IIf(Val(Fields!A.Value)=0,0,Val(Fields!B.Value) / Val(Fields!A.Value))

二,
我写了个公式:
a/iff(b=0,1,b)-iif(b=0,a,0)

实例:
(1).
a=2,b=0
a/1-a=0
(2).
a=2,b=3
a/3-0=2/3


Lizzy莲 2009-08-20
  • 打赏
  • 举报
回复
=IIf(Val(Fields!A.Value)=0,0,Val(Fields!B.Value) / Val(Fields!A.Value))
expeditioner 2009-08-20
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 toni_308 的回复:]
=IIf(Val(Fields!A.Value)=0,0,Val(Fields!B.Value) / Val(Fields!A.Value))
[/Quote]

非常感谢.将sum()中的字段先使用val()转换就正常了,不能使用CDec(),不知道为什么,感觉是RDLC的BUG。

谢谢大家。
bbqqqbq 2009-08-19
  • 打赏
  • 举报
回复
=IIf(0=Sum(CDec(Fields!A.Value)),0,Sum(CDec(Fields!B.Value)) / Sum(CDec(Fields!A.Value)))
这样试一下,实在不行就用<>
bbqqqbq 2009-08-19
  • 打赏
  • 举报
回复
不可能
expeditioner 2009-08-19
  • 打赏
  • 举报
回复
我将相除的部分换为常量1,就正常了,只要Sum(CDec(Fields!A.Value))=0的,都显示1.

=IIf(Sum(CDec(Fields!A.Value))=0,0,1)

好像无论是否为0,RDLC报表都进行Sum(CDec(Fields!B.Value)) / Sum(CDec(Fields!A.Value))运算,所以出错.
expeditioner 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 tkascor 的回复:]
不可能,我用那么久的rdlc这种问题都可以避免的,你是不是忽略了其他地方
[/Quote]

谢谢大家.

用这种方法转换也是同样出现“错误号”.
bbqqqbq 2009-08-19
  • 打赏
  • 举报
回复

这样使用
=IIf(Sum(CDec(Fields!A.Value))=0,0,Sum(CDec(Fields!B.Value)) / Sum(CDec(Fields!A.Value)))
在对列字段求和进先进行类型转换,这样即使你的A.Value不为数值型也没关系
tkscascor 2009-08-19
  • 打赏
  • 举报
回复
不可能,我用那么久的rdlc这种问题都可以避免的,你是不是忽略了其他地方
expeditioner 2009-08-19
  • 打赏
  • 举报
回复
是RDLC报表的BUG吗?大家有遇到的吗?
yh8375 2009-08-19
  • 打赏
  • 举报
回复
我也遇到这个问题,没解决,就让它显示错误号了
「已注销」 2009-08-19
  • 打赏
  • 举报
回复
就你的这个表达式而言是没有错的,我刚刚试过了,

你仔细检查一下分组和数据源看看有没有错,不要再想这个本是正确的东西错在哪里了,因为它没有错
bbqqqbq 2009-08-19
  • 打赏
  • 举报
回复

对你报表的数据源的结构和报表结构不清楚,所以无法看出什么原因,你用<>0进行判断,看数据是不是对的啊
expeditioner 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 bbqqqbq 的回复:]
引用 18 楼 expeditioner 的回复:
引用 16 楼 bbqqqbq 的回复:
不可能


试了,还是不行,我这个文本框是放在组尾区,与这个有关吗?但为什么 <>0的就计算正常呢?


能不能具体点?
你可以尝试放到报表的开头试一下
[/Quote]

在报表细节区域也同样问题.
bbqqqbq 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 expeditioner 的回复:]
引用 16 楼 bbqqqbq 的回复:
不可能


试了,还是不行,我这个文本框是放在组尾区,与这个有关吗?但为什么 <>0的就计算正常呢?
[/Quote]

能不能具体点?
你可以尝试放到报表的开头试一下
expeditioner 2009-08-19
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 bbqqqbq 的回复:]
不可能
[/Quote]

试了,还是不行,我这个文本框是放在组尾区,与这个有关吗?但为什么<>0的就计算正常呢?
llsen 2009-08-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 expeditioner 的回复:]
在数据源中已经使用isnull(a,0) as a
所以不应该是null的原因.
[/Quote]

b也要使用啊,b为null也无法计算
zhaozhijun0207 2009-08-18
  • 打赏
  • 举报
回复
我是用公式来解决了,你那个是表达式,
表达式我没弄过,不懂
加载更多回复(8)

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧