以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  公式也会犯神经啊  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=68273)

--  作者:moxuejiahui
--  发布时间:2015/5/13 21:07:00
--  公式也会犯神经啊
公式出错了,很奇葩
dim jy as Double
dim sr as Double
dim zc as Double
dim i as Integer
Dim hs As Integer =Tables("统计").Rows.Count - 1
for  i = 0 to hs
dim dr as datarow = DataTables("统计").DataRows(i)
sr = sr + dr("收入")
zc = zc + dr("支出")
jy = jy + sr - zc
dr("结余") = jy
next
这个公式应该没有问题吧,好几百项都没问题,可是就只有在我选择统计其中的一种物料时的最后一行出错,并且上一行的结余是3.23(正确)
下一行收入为0,发出3.23,可是算出的结余却是8.886966888,选其他物料不会出错,并且我要是把这个统计放在两个时间段分别统计的话也都不会出错。确实不知道是怎么回事了,呵呵

--  作者:大红袍
--  发布时间:2015/5/13 21:14:00
--  
Dim jy As Double
Dim sr As Double
Dim zc As Double
For Each dr As Row In Tables("统计").Rows
    sr = sr + dr("收入")
    zc = zc + dr("支出")
    jy = jy + sr - zc
    dr("结余") = jy
Next

--  作者:moxuejiahui
--  发布时间:2015/5/13 21:18:00
--  
这样可以,可是我那样为什么会有一个不正确的呢,统计表的数据是根据窗口选项变化的,会排序后逐行进行窗口添加控件,我写的代码有错误码?
--  作者:大红袍
--  发布时间:2015/5/13 21:19:00
--  

 你的代码,这句

 

dim dr as datarow = DataTables("统计").DataRows(i)

 

 改成这句就没问题

 

dim dr as row = Tables("统计").Rows(i)


--  作者:moxuejiahui
--  发布时间:2015/5/13 21:27:00
--  
改完后那一个个例还是出错,呵呵,一开始用的上面的代码,但是发现排序不行,所以改为你那代码,结果发现了一个个例。呵呵,按说公式本身应该没问题的啊,怎么会有那么一个个例呢?
--  作者:大红袍
--  发布时间:2015/5/13 21:32:00
--  

呃,上传例子吧


--  作者:程兴刚
--  发布时间:2015/5/14 3:00:00
--  
因为有N个最新修改过的行未保存,用代码自动先保存当前行!