查询按钮的代码,这样设计,汇总行就在最后面了:
Dim Filter As String '设置过滤条件查询
Filter="1=1"
With e.Form.Controls("开始日期")
If .Value IsNot Nothing Then
Filter = Filter & "and 送货日期>= '" & .Value & "'"
End If
End With
With e.Form.Controls("结束日期")
If .Value IsNot Nothing Then
Filter = Filter & "and 送货日期<= '" & .Value & "'"
' Else
End If
End With
Dim g As New CrossTableBuilder("统计表1", DataTables("销售明细"))
Dim dt1 As fxDataSource
g.HGroups.AddDef("客户名称")
g.VGroups.AddDef("产品名称")
g.VGroups.AddDef("产品简称")
g.Totals.AddDef("重量")
g.Totals.AddDef("金额")
'g.Totals.AddDef("已收款")
'g.Totals.AddDef("未收款")
g.HorizontalTotal = True
g.OrderByTotal = e.Form.Controls("CheckBox1").Checked
If Filter>"" Then
g.filter=Filter '进行数据过滤
End If
dt1 = g.BuildDataSource()
'g.Build() '生成统计报表
'Tables("统计表1").AutoSizeCols(10)
'MainTable = Tables("统计表1")
Dim b As New GroupTableBuilder("统计表2",DataTables("收款明细"))
Dim dt2 As fxDataSource
b.Groups.AddDef("客户名称") '根据客户分组
'b.Totals.AddDef("期初欠款") '对数量进行统计
'b.Totals.AddDef("销售总金额","本月销售额") '对销售额进行统计
b.Totals.AddDef("已收款","本月回款额") '对已收款进行统计
If Filter>"" Then
b.filter=Filter '进行数据过滤
End If
dt2 = b.BuildDataSource()
'b.Build '生成统计表
dt1.Combine("客户名称",dt2,"客户名称") '将收款数据组合到销售统计数据
Tables("客户产品统计查询_Table1").DataSource = dt1 '将统计结果绑定到Table
For Each dc As DataCol In DataTables("客户产品统计查询_Table1").DataCols
If dc.IsNumeric Then
For Each dr As DataRow In DataTables("客户产品统计查询_Table1").DataRows
If dr.IsNull(dc.name) Then
dr(dc.name) = 0
End If
Next
End If
Next
With Tables("客户产品统计查询_Table1")
Dim gp As New Subtotalgroup
gp.Aggregate = AggregateEnum.Sum
gp.GroupOn = "*" '注意总计分组用符号*表示.
For Each c As col In .cols
If c.DataCol.IsNumeric Then
If gp.TotalOn > "" Then
gp.TotalOn = gp.TotalOn & ","
End If
gp.TotalOn = gp.TotalOn & c.name
End If
Next
gp.Caption = "总计"
.SubtotalGroups.Add(gp)
.Subtotal() '生成汇总模式
End With
Forms("返回").OpenTo("统计表1")
'Forms("返回").Controls("TextBox1").Value = "提示: 不同客户订购各种产品的数量和金额."
MainTable.Focus()
直接用普通形式显示这种统计结果,目前还没有办法,下次更新会考虑。
[此贴子已经被作者于2011-9-27 10:21:35编辑过]