-- 作者:卟离卟弃
-- 发布时间:2009/10/7 14:13:00
-- 报表代码请求帮助
此主题相关图片如下:3.png

报表格式如图,后面二月三月四月.......十二月的我就没有接图了,都是一样的
受狐鸟兄弟们作品的启发,想改为第一副图中的格式
此主题相关图片如下:4.png
 图二效果代码 DataTables("销售类别报表").DataRows.Clear() Dim Lbl As WinForm.Label = e.Form.Controls("Label1") Lbl.Text = "销售类别报表" Lbl.ForeColor=Color.DodgerBlue dim f As New Filler f.SourceTable = DataTables("销售定单") \'指定数据来源 f.SourceCols = "类别" \'指定数据来源列 f.DataTable = DataTables("销售类别报表") \'指定数据接收表 f.DataCols = "销售类别" \'指定数据接收列 f.Fill() \'填充数据 For Each dc As DataCol In DataTables("销售类别报表").DataCols If dc.Name.EndsWith("月") Then For Each dr As DataRow In DataTables("销售类别报表").DataRows dr(dc.name) = DataTables("销售定单").Compute("Sum(已收款金额)","收款月份 = \'" & dc.Name & "\' And 类别= \'" & dr("销售类别") & "\'") Next End If Next Dim dst As WinForm.DataList = e.Form.Controls("DataList1") dst.DataTable = DataTables("销售类别报表") dst.Build() Vars("s3") = True Vars("s2") = False Vars("s1") = False Vars("s4") = False
想到达到第一副图的效果,需要改动的代码 If dc.Name.EndsWith("月") Then For Each dr As DataRow In DataTables("销售类别报表").DataRows dr(dc.name) = DataTables("销售定单").Compute("Sum(已收款金额)","收款月份 = \'" & dc.Name & "\' And 类别= \'" & dr("销售类别") & "\'") Next End If
销售定单 表中的 收款月份 是:“一月,二月,三月,四月。。。。”都是通过dr("收款月份") = MonthName(dr("收款日期").Month)此代码计算出来 现在报表中的月份列名是
此主题相关图片如下:5.png
 以采购金额列为例 那么我要将 销售定单 表中的 收款月份 改成:“一月采购,二月采购,三月采购,四月采购。。。。”这样才能达到图一的效果。 如果用此方法,我要在销售定单表中增加三列,采购月份(一月采购,二月采购,三月采购。。。),已付款月份(一月已付款,二月已付款,三月已付款。。。),开票月份(一月开票,二月开票,三月开票。。。。。) 照此方法将增加数据量,不利于文件打开与数据处理。
知道能改正成为这种方法 销售定单表中设置一个收款月份列(一月.二月.三月.), 在使用此代码之前 dr(dc.name) = DataTables("销售定单").Compute("Sum(已收款金额)","收款月份 = \'" & dc.Name & "\' And 类别= \'" & dr("销售类别") & "\'") 让 \'" & dc.Name & "\' 的值自动加上 采购,已付款 或 开票
如; For Each dc As DataCol In DataTables("销售类别报表").DataCols If dc.Name.EndsWith("购") Then (采购最后字符,购) For Each dr As DataRow In DataTables("销售类别报表").DataRows dr(dc.name) = DataTables("销售定单").Compute("Sum(已收款金额)","收款月份 = \'" & dc.Name & "\' And 类别= \'" & dr("销售类别") & "\'") “收款月份列中原来值(一月.二月.三月...)变为(一月采购,二月采购,三月采购)后,在参与计算” Next End If Next
For Each dc As DataCol In DataTables("销售类别报表").DataCols If dc.Name.EndsWith("款") Then (已付款最后字符,款) For Each dr As DataRow In DataTables("销售类别报表").DataRows dr(dc.name) = DataTables("销售定单").Compute("Sum(已收款金额)","收款月份 = \'" & dc.Name & "\' And 类别= \'" & dr("销售类别") & "\'") “收款月份列中原来值(一月.二月.三月...)变为(一月已付款,二月已付款,三月已付款)后,在参与计算” Next End If Next
讲这么多不知道各位明白意思吗?????
|