以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 还是SQLFIND和FIND的区别 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=114798) |
-- 作者:wei447221918 -- 发布时间:2018/2/22 18:04:00 -- 还是SQLFIND和FIND的区别 为什么把SQLFIND改为FIND后可以完美运行,改回SQLFIND后不能运行呢 代码如下: \'修改或者新增充值条目的时候,自动汇总至余额统计表里 If e.DataCol.Name = "充值金额" Then DataTables("主卡充值流水").Save Dim pr As DataRow pr = DataTables("主卡余额汇总流水").sqlFind("系统主卡编号 = \'" & e.DataRow("系统主卡编号") & "\' and 汇总日期 = \'" & e.DataRow("充值日期") & "\'","汇总日期 desc") If pr IsNot Nothing Then DataTables("主卡余额汇总流水").DataCols("系统主卡编号").RaiseDatacolchanged(pr) End If End If 找到原因了,为什么不是DataTables("主卡充值流水").Save ,而是pr.save [此贴子已经被作者于2018/2/22 18:20:32编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/2/22 18:22:00 -- sqlFind只能查询已经保存的数据。新增的、修改的数据,查不到。
再有就是,如果你表格【主卡余额汇总流水】没有把数据加载出来,是无法触发重置列操作的。 |
-- 作者:wei447221918 -- 发布时间:2018/2/22 18:30:00 -- 感谢大大,找到原因了,为什么不是DataTables("主卡余额汇总流水").Save ,而是pr.save 那么当前表格未加载往期数据的话,如果触发重置呢~ |
-- 作者:有点甜 -- 发布时间:2018/2/22 20:42:00 -- 1、不明白你save的问题,请具体说明。如果你数据是后台查询出来的,必须用pr.save。
2、没有加载出来的数据,无法触发重置。你需要单独写代码实现各种逻辑。具体问题,参考 http://www.foxtable.com/webhelp/scr/2926.htm
|
-- 作者:wei447221918 -- 发布时间:2018/2/22 22:32:00 -- 明白了,版主还有1问题需您解惑: 现在设计的流水账稍复杂,由收入流水、收入冲红流水和支出、支出冲红流水,四张单独的表进行记录的流水账,然后跨表统计汇总到另外的一个统计表, 该统计表有期初、收入、支出、余额四列。 分页加载流水账的例子,下面批注的代码原理中,“如果修改的是第一行,那么就先用SQLCompute方法,从后台计算出此行之前的结存,第一行的收入减去支出,再加上之前的结存,就是第一行的余额。”这种计算之前结存的方式,假如第一行前面有5万行数据,那这个运算速度可能会非常慢。 我目前针对这个问题,准备将SQLcompute改成SQLFIND,在数据库中找出倒数第一个值的“余额”列,然后取值,加上第一行的收入减去支出,就是本期的结存。是否可行?和例子相比有什么缺点? |
-- 作者:有点甜 -- 发布时间:2018/2/22 22:35:00 -- 无论多少行数据,是用sqlcompute计算,都是瞬间可以计算出结果的,而且只需要计算一次。 |
-- 作者:wei447221918 -- 发布时间:2018/2/22 22:42:00 -- 感谢! |