水晶报表 公式问题,急急!!

阿双2009 2009-12-30 08:50:40
numberVar num1;
numberVar num2;
stringVar pct;
num1 := Count({hyt_testInfo.QU_NO},{hyt_testInfo.STUDENT_NAME});
num2 := Maximum({hyt_testInfo.QU_NO});
pct :=CStr( num1/ num2 * 100,1);
if Right(pct,1) = '0' and num1 <> num2 then
pct := Left(pct,2);
if num1 = num2 then
pct := Left(pct,3);

请问公式这么写有什么问题吗,每当num1为0,num2为1的时候就报错,其他情况都不会报错,试问是何缘故。。
...全文
173 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿双2009 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 babyt 的回复:]
单独使用
C# codenumberVar num1;
numberVar num2;
stringVar pct;
num1 :=0;
num2 :=1;
pct :=CStr( num1/ num2*100,1);if Right(pct,1)='0' and num1<> num2 then
pct := Left(pct,2);if num1= num2 then
pct := Left(pct,3);

是没问题的,需要注意的是

num1 := Count({hyt_testInfo.QU_NO},{hyt_testInfo.STUDENT_NAME});
num2 := Maximum({hyt_testInfo.QU_NO});

这两个值,在实际运行时,都可能返回null,所以可能要加一个判断

if isnull(num1) then num1:=0
if isnull(num2) then num2:=0

因为num2是分母,还需要增加一个分母为0时的逻辑判断
[/Quote]

泰哥费心了。。
阿泰 2009-12-30
  • 打赏
  • 举报
回复
单独使用
numberVar num1; 
numberVar num2;
stringVar pct;
num1 := 0;
num2 :=1;
pct :=CStr( num1/ num2 * 100,1);
if Right(pct,1) = '0' and num1 <> num2 then
pct := Left(pct,2);
if num1 = num2 then
pct := Left(pct,3);


是没问题的,需要注意的是

num1 := Count({hyt_testInfo.QU_NO},{hyt_testInfo.STUDENT_NAME});
num2 := Maximum({hyt_testInfo.QU_NO});

这两个值,在实际运行时,都可能返回null,所以可能要加一个判断

if isnull(num1) then num1:=0
if isnull(num2) then num2:=0

因为num2是分母,还需要增加一个分母为0时的逻辑判断
JJ_Net 2009-12-30
  • 打赏
  • 举报
回复
转成string类型试试
lianyi68 2009-12-30
  • 打赏
  • 举报
回复
jf
路過。。。。

4,818

社区成员

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

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