以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]计算代码可以优化吗  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=16575)

--  作者:foxstudent
--  发布时间:2012/2/17 16:50:00
--  [求助]计算代码可以优化吗

表A是费用明细表,表B是统计表,

表A有“费用类别”、“金额”列,其中“费用类别”列的内容有费用1,费用2,费用3等,

表B中,费用1,费用2,费用3等是其中的部分列名,现在要按年月统计费用1、费用2的金额,这个代码能不能优化或者用其他好的方法?

Dim dr As DataRow = e.DataRow

Dim dt As DataTable =DataTables("表A")
If e.DataCol.Name = "姓名" And dr.IsNull("姓名") = False Then
    dr("费用1") = dt.Compute("Sum(金额)", "[姓名] = \'" & dr("姓名") & " \'and [年] = \'" & dr("年") & "\'and [月] = \'" & dr("月") & "\'And [费用类别] = \'" & "费用1" & "\'")

    dr("费用2") = dt.Compute("Sum(金额)", "[姓名] = \'" & dr("姓名") & " \'and [年] = \'" & dr("年") & "\'and [月] = \'" & dr("月") & "\'And [费用类别] = \'" & "费用2" & "\'")

    ……

End If

 


--  作者:狐狸爸爸
--  发布时间:2012/2/17 16:55:00
--  
If e.DataCol.Name = "姓名" And dr.IsNull("姓名") = False Then
    For i As Integer = 1  To 2  
        dr("费用" & i ) = dt.Compute("Sum(金额)", "[姓名] = \'" & dr("姓名") & " \'and [年] = \'" & dr("年") & "\'and [月] = \'" & dr("月") & "\'And [费用类别] = \'费用" & i & "\'")
   Next
End If

--  作者:foxstudent
--  发布时间:2012/2/17 17:00:00
--  

谢谢老六,其实我的费用1、费用2是为了便于提问说明起的名,实际表中不是这个列名啊,不过给了我一个思路,我可以在表A中新建一个列,对应成1、2、3,在表B中,把列名和列标题分开,就可以解决了

[此贴子已经被作者于2012-2-17 17:03:05编辑过]