以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  还是SQLFIND和FIND的区别  (http://www.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
--  
感谢!