Foxtable(狐表)用户栏目专家坐堂 → [求助]关于自动求和的问题(新问题,狐爸请进)


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

主题:[求助]关于自动求和的问题(新问题,狐爸请进)

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/3/13 12:26:00 [显示全部帖子]

DataColChanged这样可能高效些:


Dim lm3 As String
Dim n1 As Integer
Dim sum As Double
Dim drs1 As New List(of DataRow)
drs1 = e.DataTable.Select("日期 > #1/1/1900# And [_Identify] >= " & e.DataRow("_Identify"))
Select Case e.DataCol.name
    Case "工行G02"
        lm3 = "G02余额"
        n1=0
        sum =  e.DataTable.Compute("Sum(" & e.DataCol.name & ")", "[_Identify] <=  " &  e.DataRow("_Identify"))
        For Each dr As DataRow In drs1
            If n1 = 0 Then
                dr(lm3) = sum
            Else
                dr(lm3) = drs1(n1-1)(lm3)+ dr(e.DataCol.name)
            End If
            n1+=1
        Next
    Case "农行N01"
        lm3 = "N01余额"
        n1=0
        sum =  e.DataTable.Compute("Sum(" & e.DataCol.name & ")", "[_Identify] <=  " &  e.DataRow("_Identify"))
        For Each dr As DataRow In drs1
            If n1 = 0 Then
                dr(lm3) = sum
            Else
                dr(lm3) = drs1(n1-1)(lm3)+ dr(e.DataCol.name)
            End If
            n1+=1
        Next
    Case "建行J01"
        lm3 ="J01余额"
        n1=0
        sum =  e.DataTable.Compute("Sum(" & e.DataCol.name & ")", "[_Identify] <=  " &  e.DataRow("_Identify"))
        For Each dr As DataRow In drs1
            If n1 = 0 Then
                dr(lm3) = sum
            Else
                dr(lm3) = drs1(n1-1)(lm3)+ dr(e.DataCol.name)
            End If
            n1+=1
        Next
        
    Case "信用社X01"
        lm3 = "X01余额"
        n1=0
        sum =  e.DataTable.Compute("Sum(" & e.DataCol.name & ")", "[_Identify] <=  " &  e.DataRow("_Identify"))
        For Each dr As DataRow In drs1
            If n1 = 0 Then
                dr(lm3) = sum
            Else
                dr(lm3) = drs1(n1-1)(lm3)+ dr(e.DataCol.name)
            End If
            n1+=1
        Next
End Select

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2013/3/13 12:50:00 [显示全部帖子]

简化些:
Dim lm2,lm3 As String
Dim n1 As Integer
Dim sum As Double
Dim drs1 As New List(of DataRow)

Dim Lbs1 As String() ={"工行G02","农行N01","建行J01","信用社X01"}
Dim Lbs2 As String() ={"G02余额","N01余额","J01余额","X01余额"}
Dim Ls3 As new List(of String)
Ls3.AddRange(Lbs1)

If  Ls3.Contains(e.DataCol.name)  Then
    For Each lm2 In Ls3
        If lm2 = e.DataCol.name Then
            Exit For
        End If
        n1+=1
    Next
    drs1 = e.DataTable.Select("日期 > #1/1/1900# And [_Identify] >= " & e.DataRow("_Identify"))
    sum =  e.DataTable.Compute("Sum(" & e.DataCol.name & ")", "[_Identify] <=  " &  e.DataRow("_Identify"))
    lm3 = Lbs2(n1)
    n1=0
    For Each dr As DataRow In drs1
        If n1 = 0 Then
            dr(lm3) = sum
        Else
            dr(lm3) = drs1(n1-1)(lm3)+ dr(e.DataCol.name)
        End If
        n1+=1
    Next    
End If

 回到顶部