以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  高效流水账里的奇怪现象?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=67623)

--  作者:狂风暴雨狂波
--  发布时间:2015/4/27 21:29:00
--  高效流水账里的奇怪现象?
不知大家发现没有,在高效流水账里增加三行,在后二行里输入数据,就会出现断层现象,如图:
图片点击可在新窗口打开查看此主题相关图片如下:lsz1.bmp
图片点击可在新窗口打开查看


--  作者:狂风暴雨狂波
--  发布时间:2015/4/27 21:58:00
--  
也就是说,只要增加一空行不输入任何数据,然后再增加一行,输入数据,上一行之上一行的数据不会累加下来。但是删除空行后数据可以加下来,问题是录入了几千行数据,中间如果录了几十行空行,出现几十个断层,那结果就不敢想象了。
[此贴子已经被作者于2015/4/27 21:58:52编辑过]

--  作者:狂风暴雨狂波
--  发布时间:2015/4/27 22:07:00
--  
如果在DataRowAdded事件中加上这段代码:
Dim dr As DataRow
Dim drs As List(of DataRow)
dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc")
If dr Is Nothing Then
    e.DataRow("余额") = e.DataRow("收入") - e.DataRow("支出")
    dr = e.DataRow
End If
drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]")
For i As Integer = 1 To drs.Count - 1
    drs(i)("余额") = drs(i-1)("余额") + drs(i)("收入") - drs(i)("支出")
Next
问题就可以解决,就不会出错了。不知这个办法是否可行?是不是还有更好的办法?

--  作者:moxuejiahui
--  发布时间:2015/4/28 0:06:00
--  
DataRowAdded事件中加上删除空白行或者收入支出全为0的代码是不是可以啊?
--  作者:Bin
--  发布时间:2015/4/28 8:45:00
--  
是这样的.你可以这么做
--  作者:狐狸爸爸
--  发布时间:2015/4/28 9:06:00
--  
你也可以修改流水账计算代码,将条件表达式修改一下,排除关键值为空的行。
--  作者:狂风暴雨狂波
--  发布时间:2015/4/28 14:38:00
--  
删除空白行不行,因为增加一行时就是空白行,这样就增加行时增加不上.收入支出为0可以.
--  作者:Bin
--  发布时间:2015/4/28 14:45:00
--  
也可以这么做,在此之前加入删除空白行代码即可

还是觉得6楼的方法好