以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  代码简化  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=95696)

--  作者:wangnovel
--  发布时间:2017/2/2 1:03:00
--  代码简化

A

分类码

金额

a

1

b

21

c

3

a

22

c

4

a

6

 

B

分类码

分类金额

字段2

字段3

字段四

a

29

 

 

 

b

21

 

 

 

c

7

 

 

 

 

B是一个复杂的统计报表,要从不同的表中获取数据。其中有一项是求分类金额,从表A中进行分类求和得到,如图。(表B的“分类码”是固定的)


我写了三段相同的代码分别求出了a、b、c的分类金额,但我觉得这样太啰嗦了,请问如何整合成一段代码?


\'计算专业分类码为a的分类金额

Dim dr_a As DataRow

dr_a=DataTables("B").Find("分类码=\'a\'")

If dr_a.IsNull("分类码")=False Then \'如果找得到专业分类码为a的行

    Dim Total_a As Double

    Total_a = DataTables("A").Compute("Sum(金额)", "分类码= \'a\'")

    dr_a("分类金额")=Total_a

End If

 

\'计算专业分类码为b的分类金额

Dim dr_b As DataRow

dr_b=DataTables("B").Find("分类码=\'b\'")

If dr_b.IsNull("分类码")=False Then \'如果找得到专业分类码为b的行

    Dim Total_b As Double

    Total_b = DataTables("A").Compute("Sum(金额)", "分类码= \'b\'")

    dr_b("分类金额")=Total_b

End If

 

\'计算专业分类码为c的分类金额

Dim dr_c As DataRow

dr_c=DataTables("B").Find("分类码=\'c\'")

If dr_c.IsNull("分类码")=False Then \'如果找得到专业分类码为c的行

    Dim Total_c As Double

    Total_c = DataTables("B").Compute("Sum(金额)", "分类码= \'c\'")

    dr_c("分类金额")=Total_c

End If


--  作者:有点色
--  发布时间:2017/2/2 9:15:00
--  

DataColChanged事件

 

Dim dr_a As DataRow

dr_a=DataTables("B").Find("分类码=\'" & e.DataRow("分类码") & "\'")

If dr_a.IsNull("分类码")=False Then \'如果找得到专业分类码为a的行

    Dim Total_a As Double

    Total_a = DataTables("A").Compute("Sum(金额)", "分类码=\'" & e.DataRow("分类码") & "\'")

    dr_a("分类金额")=Total_a

End If


--  作者:wangnovel
--  发布时间:2017/2/2 20:39:00
--  
嗯,谢谢,我加了个数组,将您的简化代码改成了按钮事件的。