以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 1.不想自动填入数据;2.累计计算太慢 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=109285) |
||||
-- 作者:chengjingliang -- 发布时间:2017/11/8 15:29:00 -- 1.不想自动填入数据;2.累计计算太慢 1、在统计表中,增加“商丘市虞城县产业集聚区道路工程(马拉松跑道)”新增一个统计日期时,完成明细表自动复制清单内容,问题是:完成明细表的完成数量列第一行会自动填入数据,这是我不希望的,一直找不到原因,老师帮忙看下! 2、完成明细表内累计完成数量列,不能自动计算,重置完成明细ID列,计算过程太慢,有没有更好的方法? [此贴子已经被作者于2017/11/9 14:18:52编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/11/8 16:57:00 -- 1、
2、重置列单独做一个按钮执行代码
For Each r As Row In Tables("统计.完成明细").rows |
||||
-- 作者:chengjingliang -- 发布时间:2017/11/9 9:04:00 -- 目前数据不多,数据已经很慢,可不可以优化 Select Case e.DataCol.Name Case "清单ID", "完成数量" Dim drs As List(of DataRow) Dim Filter As String Filter = "[_SortKey] >= " & e.DataRow("_SortKey") & " And [清单ID] = \'" & e.DataRow("清单ID") & "\'" drs = e.DataTable.Select(Filter) For Each dr As DataRow In drs Filter = "[_SortKey] <= " & dr("_SortKey") & " And [清单ID] = \'" & dr("清单ID") & "\'" Dim Val1 As Double = e.DataTable.Compute("Sum(完成数量)",Filter) dr("累计完成数量") = Val1 Next If e.DataCol.Name = "清单ID" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then Filter = "[_SortKey] > " & e.DataRow("_SortKey") & " And [清单ID] = \'" & e.OldValue & "\'" drs = e.DataTable.Select(Filter) For Each dr As DataRow In drs Filter = "[_SortKey] <= " & dr("_SortKey") & " And [清单ID] = \'" & dr("清单ID") & "\'" Dim Val1 As Double = e.DataTable.Compute("Sum(完成数量)",Filter) dr("累计完成数量") = Val1 Next End If End Select \' 非等于比较中说是可以从390秒到2秒,再从2秒到0.9秒,可见代码的优化对于效率的提升是何其重要。但是我做的代码好像不对,没有按清单ID分类累计,请老师看看 Dim drs As List(of DataRow) = DataTables("完成明细").Select("", "清单ID,统计日期") \'注意排序参数 drs(0)("累计完成数量") = drs(0)("完成数量") \'设置第一行的累计完成数量 For i As Integer = 1 To drs.Count - 1 \'从第二行开始逐行计算累计完成数量 If drs(i)("清单ID") = drs(i - 1)("清单ID") Then drs(i)("累计完成数量") = drs(i-1)("累计完成数量") + drs(i)("完成数量") Else drs(i)("累计完成数量") = drs(i)("完成数量") End If Next [此贴子已经被作者于2017/11/9 9:10:20编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2017/11/9 9:08:00 -- 1、可以这样优化
http://www.foxtable.com/webhelp/scr/2136.htm
2、流水账本身计算就是很慢的,不要重置列,如果要重新计算,也要在按钮里写代码处理,如
For Each r As Row In Tables("统计.完成明细").rows |