以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 代码简化 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=95696) |
||||||||||||||||||||||||||||||||||
-- 作者:wangnovel -- 发布时间:2017/2/2 1:03:00 -- 代码简化 表A
表B
表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 -- 嗯,谢谢,我加了个数组,将您的简化代码改成了按钮事件的。 |