以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]指定单元格自定义计算  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=101975)

--  作者:乡里出城
--  发布时间:2017/6/11 2:07:00
--  [求助]指定单元格自定义计算

请教如何优化以下代码,实际的dr(i) i有1000多:

第一种情况:

Dim dr,dr1,dr2,dr3,dr4,dr5 As DataRow
dr = DataTables("订单").DataRows(10) \'指定第十一行作为汇总数
dr1 = DataTables("订单").DataRows(0)\'指定第一行数
dr2 = DataTables("订单").DataRows(1)\'指定第二行数
dr3 = DataTables("订单").DataRows(2)\'指定第三行数
dr4 = DataTables("订单").DataRows(3)\'指定第四行数
dr("数量") = dr1("数量") + dr2("数量")  + dr3("数量")  + dr4("数量")  \'第十一行数等于第一行至第四行数相加

 

第二种情况

Dim dr,dr1,dr2,dr3,dr4,dr5 As DataRow
dr = DataTables("订单").DataRows(10) \'指定第十一行作为汇总数
dr1 = DataTables("订单").DataRows(0)\'指定第一行数
dr2 = DataTables("订单").DataRows(1)\'指定第二行数
dr3 = DataTables("订单").DataRows(5)\'指定第六行数
dr4 = DataTables("订单").DataRows(6)\'指定第七行数
dr("数量") = dr1("数量") + dr2("数量")  + dr3("数量")  + dr4("数量")  \'第十一行数等于第一\\二\\六\\七行的数相加

 


--  作者:有点色
--  发布时间:2017/6/11 15:13:00
--  
Dim dr = DataTables("订单").DataRows(10) \'指定第十一行作为汇总数
Dim idxs() As Integer = {0, 1, 5, 6}
Dim sum As Double = 0
For Each i As Integer In idxs
    Dim dr1 = DataTables("订单").DataRows(i)\'指定第一行数
    sum += dr1("数量")
Next
dr("数量") = sum

--  作者:乡里出城
--  发布时间:2017/6/11 17:47:00
--  
Dim idxs() As Integer = {0, 1, 5, 6} ,假如{集合是1、2、3、4......1001、1002}即集合里有1000多行数,应该怎么表达。
--  作者:有点色
--  发布时间:2017/6/11 18:17:00
--  
 规律是什么,如果是连续的、间隔的,那就直接循环就好的。
--  作者:乡里出城
--  发布时间:2017/6/11 18:45:00
--  
连接的,就是直接循环不知道怎么写。

--  作者:有点色
--  发布时间:2017/6/11 18:49:00
--  
Dim dr = DataTables("订单").DataRows(10) \'指定第十一行作为汇总数
Dim sum As Double = 0
For i As Integer = 0 To 10
    Dim dr1 = DataTables("订单").DataRows(i)\'指定第一行数
    sum += dr1("数量")
Next
dr("数量") = sum

--  作者:乡里出城
--  发布时间:2017/6/11 19:56:00
--  
谢谢!