Dim skdr As DataRow = e.DataRow '反回改变的行 Dim skdc As DataCol = e.DataCol '反回改变的列 Dim skdt As DataTable '定义一个全表变量,有于遍历整个表 Dim skprs As List(of String) = DataTables("Gztj").getvalues("Gcbw") '反回统计的行的主键值以集合的形式存置 Dim sksks As List(of String) = DataTables("Gztj").getvalues("Skzd") '以集合的形式存放施工组队的名字 Dim sktj() As String sktj=skprs.Toarray() Dim sksc() As String sksc=sksks.ToArray() Dim tjrows As List(of DataRow) '定义一个行类型的集合变量 tjrows = DataTables("Gztj").Select("") '把统计表的所有行存于集合中 Dim slwg(5),sgyg(5),stongc30(5),stongc40(5),sjinxing(5) As Double '定义双精度数值变量 Dim Tfnot,Tfyes,i,j,r As Integer i=0 j=0 r=0 Tfnot=1 Tfyes=1 If skdc.name = "Skzd" Then '如果改变的列是Skzd,即施工组队 For Each skdt In DataTables '遍历所有的表 If skdt.name = sktj(i) Then output.show(skdt.name) Do While i<= skprs.count-1 '如果统计的行与表对应 output.show("sktj(i)=" & sktj(i)) Do While j<= sksks.count-1 slwg(j) = skdt.compute("sum(Sjlwg)","Skzd='sksc(j)'") '计算带肋总数,且施工组队是刘明光 sgyg(j) = skdt.compute("sum(Sjgyg)","Skzd='sksc(j)'") '计算光圆总数,且施工组队是刘明光 stongc30(j) =skdt.compute("sum(TongC30)","Skzd='sksc(j)'") '计算砼C30总数,施工组队是刘明光 stongc40(j) = skdt.compute("sum(TongC40)","Skzd='sksc(j)'") '计算砼C40总数,施工组队是刘明光 sjinxing(j) = skdt.compute("sum(Jinxing)","Skzd='sksc(j)'") ' 计算是刘明光施工的劲性骨架 j=j+1 output.show("slwg=" & slwg(i)) Loop For Each tjrow As DataRow In tjrows '遍历统计表的每一行,以便填回统计的数据 If tjrow("Gcbw")=skdt.name Then For r=0 To sksks.count-1 If tjrow("Skzd") = sksc(r) Then tjrow("Clwg")=slwg(r) tjrow("Cgyg")=sgyg(r) tjrow("tongc30")=stongc30(r) tjrow("tongc40")=stongc40(r) tjrow("jinxing")=Sjinxing(r) End If Next End If Next i=i+1 Loop End If Next End If
|