Foxtable(狐表)用户栏目专家坐堂 → 这个计算还有什么好的办法


  共有2755人关注过本帖树形打印复制链接

主题:这个计算还有什么好的办法

帅哥哟,离线,有人找我吗?
jspta
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11272 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2018/6/5 17:45:00 [显示全部帖子]

换一个思路
DataTables(e.Form.Name & "_Table2") 这个只加载("项目状态 = '已付款' Or 项目状态='已完成'") 


这样Filter就不会有这个条件,自然也就快了。  
以前Computer在数据量大的时候速度慢,现在不知道改进了没有。


 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11272 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2018/6/5 18:00:00 [显示全部帖子]

1.用SQL解决,速度也是飞快的。

2.放弃用Computer,自己写循环算sum,速度一样快。

 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11272 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2018/6/5 20:30:00 [显示全部帖子]

 drs = DataTables("表A").Select("项目 = '" & dr1("项目") & "'""日期") '注意要根据日期排序 
这一行已经很慢了,终于明白你要干什么了
先排序,再计算,不需要再查找了,你这样是个有序集合

Dim dic As New Dictionary(of DataRowString)
Dim
 drs As List(of DataRow)
drs = DataTables("表A").Select("""项目,日期")
Dim sm As Double = 0
Dim strXM as string = drs(0)("项目")
For
 Each dr1 As DataRow In drs
   if strXM = dr1("项目") then
        sm = sm + dr1("支出")
dr1("累计支出")=sm
   else
sm =dr1("支出")
        strXM = dr1("项目")
        dr1("累计支出") dr1("支出")
   end if
Next
速度慢加上 datatable.Stop/ResumeRedraw
[此贴子已经被作者于2018/6/5 20:33:42编辑过]

 回到顶部