以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 有重复日期的流水账如何做? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=27295) |
||||||
-- 作者:shixia -- 发布时间:2012/12/27 20:08:00 -- 有重复日期的流水账如何做? 高效率的流水账设计 本示例可以参考CaseStudy目录下的文件:高效率流水账.Table 同样假定有个简单的流水帐式的表格,输入收入和支出,能够自动计算出余额: 我们采用和上一节完全不同的方法,不再通过累计出之前的收入和支出,利用二者相减得出余额,而是通过上一行的余额和本行收入和支出,计算出本行的余额,显然这样的计算方式要高效很多。 为此将DataColChanged事件设为:
|
||||||
-- 作者:lin_hailun -- 发布时间:2012/12/28 14:21:00 -- 这样,按是否符合。
|
||||||
-- 作者:shixia -- 发布时间:2012/12/29 10:31:00 -- 谢谢,可以达到要求。 我有个想法,不知能否实现,首先解决找到第一行:根据日期顺序排序,如果第一行的日期A有两个及以上记录,_SortKey默认是按顺序排序,在相同日期A集合中再用_SortKey作为比较条件找出第一行;第二行以后的行把 drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]")中按_SortKey作为比较条件修改为按日期为比较条件 drs = e.DataTable.Select("日期 >= " & dr("日期"), "日期") ,按这种思路如果能写出代码,可以不再需要按钮,在DataColChanged 中也不需要写日期的代码。我尝试写了很多次,一次没有写出来,请大家帮忙。 |
||||||
-- 作者:shixia -- 发布时间:2012/12/29 11:17:00 -- Select Case e.DataCol.Name 现金日记账中,相同日期存在多行,并且日期顺序混乱,在现实生活中是存在的,帮助中的例子没有提供这方面的代码。 [此贴子已经被作者于2012-12-29 11:17:54编辑过]
|
||||||
-- 作者:lin_hailun -- 发布时间:2012/12/29 11:27:00 -- 写了一下,要用到递归。
|
||||||
-- 作者:shixia -- 发布时间:2012/12/29 11:47:00 -- 还是有问题,比如增加一行,日期为2012-11-01,收入为1,按日期排序一看,余额错误 |
||||||
-- 作者:lin_hailun -- 发布时间:2012/12/29 12:12:00 -- 测试,没有错。 |
||||||
-- 作者:程兴刚 -- 发布时间:2012/12/29 12:14:00 -- 最简单的道理,既然是流水账就应该禁止排序,同时禁止掉插入记录的功能,就不会出现乱序的现象! |
||||||
-- 作者:shixia -- 发布时间:2012/12/29 12:28:00 -- 生活中,如果某笔记录是前几天发生的,当时漏掉了,现在补起来做,这种情况还是有的 |
||||||
-- 作者:shixia -- 发布时间:2012/12/29 12:32:00 -- 增加一行,日期为2012-11-01,收入为1,按日期排序一看,第二行 2012-11-28日余额应该为2,而不是1,整个小于2012-11-01日的余额都没有发生变化 |