以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  除数为0计算结果出现错误提示  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=4893)

--  作者:czy
--  发布时间:2009/11/6 0:06:00
--  

这样知吗?

b.Exprs.Adddef("料蛋比","IsNull([耗料],0)/IsNull([种蛋数],0)",AggregateEnum.Average)


--  作者:程兴刚
--  发布时间:2009/11/6 0:36:00
--  
b.Exprs.Adddef("料蛋比","iif(IsNull([种蛋数],0) = 0,0,IsNull([耗料],0)/IsNull([种蛋数],0))",AggregateEnum.Average)
[此贴子已经被作者于2009-11-6 3:02:44编辑过]

--  作者:mr725
--  发布时间:2009/11/6 10:56:00
--  
Dim g As New GroupTableBuilder("统计表1", DataTables("表A"))
g.Groups.AddDef("栏舍")
g.Totals.AddDef("耗料量")
g.Totals.AddDef("种蛋数")
g.GroupProportion = True
g.Build()
MainTable = Tables("统计表1")
Tables("窗口1_Table1").DataSource = DataTables("统计表1")

--  作者:czy
--  发布时间:2009/11/6 11:56:00
--  
不会出错啊

Dim b As New SQLGroupTableBuilder("统计表1","表A")
b.Groups.AddDef("栏舍")
b.exprs.adddef("料蛋比","[耗料量]/[种蛋数]",AggregateEnum.Average)
b.build
Tables("窗口1_Table1").DataSource = DataTables("统计表1")
[此贴子已经被作者于2009-11-6 11:56:22编辑过]

--  作者:mr725
--  发布时间:2009/11/6 12:13:00
--  

你是要哪种结果:::???

图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看

--  作者:czy
--  发布时间:2009/11/6 13:01:00
--  
你系统中是不是有多个版本?
--  作者:mr725
--  发布时间:2009/11/6 14:23:00
--  
是要8楼的结果吗? 那个图? 总得给个样式吧~
[此贴子已经被作者于2009-11-6 14:25:40编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/11/6 15:35:00
--  
养成启动foxtable再打开文件的习惯。
实在不行,直接用原文件做例子给大家看。
--  作者:mr725
--  发布时间:2009/11/6 16:05:00
--  
以下是引用liuruihua在2009-11-6 15:14:00的发言:
要的是8楼的第二张图的结果,问题是我在新建的表中则没发现代码有问题,而在原系统的表中则出现错误提示,说什么除数为0。不知具体原因是什么,有点头晕了。图片点击可在新窗口打开查看

1、第二张图的结果:那是7楼c版的代码生成的。
2、删除原系统中的 Catch 这个文件夹后,再试一试。


--  作者:程兴刚
--  发布时间:2009/11/6 17:29:00
--  
不用试了,应该是贺老师在这里支持的表达式不全造成,建议改进:

目前出现错误的原因是b.Exprs.Adddef()的表达式不支持iif()和isnull()判断。


必须支持这样的写法:

b.Exprs.Adddef("料蛋比","iif(IsNull([种蛋数],0) = 0,0,IsNull([耗料],0)/IsNull([种蛋数],0))",AggregateEnum.Average)

理由:没有iif()判断,[种蛋数]为零出错,因为计算机不允许0做除数
        没有isnull()判断,种蛋数从来没有输入过数据时出错。