以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  自动汇总  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=14707)

--  作者:bm
--  发布时间:2011/11/29 15:35:00
--  自动汇总

查询表代码

Dim jb As new SQLJoinTableBuilder("查询表1","表a")
jb.AddCols("作业日期", "客户","发票号码")
jb.AddExp("应收款","iif(代付费用_打单费 Is null,0,代付费用_打单费) + iif(代付费用_理货费 Is null,0,代付费用_理货费))
jb.Filter = "状态 <> \'已付费\'"

Dim cb As new CrossTableBuilder("客户欠款",jb.BuildSQL)
cb.HGroups.AddDef("客户")
cb.HGroups.AddDef("发票号码")
cb.VGroups.AddDef("作业日期",DateGroupEnum.month,"{0}月")
cb.Totals.AddDef("应收款")
cb.HorizontalTotal = True
cb.Build()
DataTables("客户欠款").SysStyles("EmptyArea").BackColor = Color.DarkTurquoise
MainTable = Tables("客户欠款")

 

汇总模式代码

im t As Table = Tables("客户欠款")
Dim g As SubtotalGroup
t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False
t.SpillNode = True

g = New SubtotalGroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "客户"
g.TotalOn = "应收款_1,应收款_2,应收款_3,应收款_4,应收款_5,合计"
g.Caption = "{0} 小计"
t.SubtotalGroups.Add(g)

g = New SubtotalGroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "*"
g.TotalOn = "应收款_1,应收款_2,应收款_3,应收款_4,应收款_5,合计"
g.Caption = "总计"
t.SubtotalGroups.Add(g)

这个怎么才自动汇总。


图片点击可在新窗口打开查看此主题相关图片如下:截图50.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2011-11-29 15:41:50编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/11/29 15:53:00
--  

问题似乎没有问到点子上,不明白你的意思。


--  作者:bm
--  发布时间:2011/11/29 17:13:00
--  帮忙看看

用代码生成的查询表需要自动汇总

查询表代码见一楼


图片点击可在新窗口打开查看此主题相关图片如下:截图54.jpg
图片点击可在新窗口打开查看

希望打开为汇总模式

图片点击可在新窗口打开查看此主题相关图片如下:截图55.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2011-11-29 17:18:16编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/11/29 17:19:00
--  

 

 

Dim jb As new SQLJoinTableBuilder("查询表1","表a")
jb.AddCols("作业日期", "客户","发票号码")
jb.AddExp("应收款","iif(代付费用_打单费 Is null,0,代付费用_打单费) + iif(代付费用_理货费 Is null,0,代付费用_理货费))
jb.Filter = "状态 <> \'已付费\'"
Dim cb As new CrossTableBuilder("客户欠款",jb.BuildSQL)
cb.HGroups.AddDef("客户")
cb.HGroups.AddDef("发票号码")
cb.VGroups.AddDef("作业日期",DateGroupEnum.month,"{0}月")
cb.Totals.AddDef("应收款")
cb.HorizontalTotal = True
cb.Build()
DataTables("客户欠款").SysStyles("EmptyArea").BackColor = Color.DarkTurquoise
m t As Table = Tables("客户欠款")
Dim g As SubtotalGroup
t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False
t.SpillNode = True
g = New SubtotalGroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "客户"
g.TotalOn = "应收款_1,应收款_2,应收款_3,应收款_4,应收款_5,合计"
g.Caption = "{0} 小计"
t.SubtotalGroups.Add(g)
g = New SubtotalGroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "*"
g.TotalOn = "应收款_1,应收款_2,应收款_3,应收款_4,应收款_5,合计"
g.Caption = "总计"
t.SubtotalGroups.Add(g)
t.Subtotal
MainTable = t


--  作者:bm
--  发布时间:2011/11/29 17:23:00
--  bmkk

Dim jb As new SQLJoinTableBuilder("查询表1","表a")
jb.AddCols("作业日期", "客户","发票号码")
jb.AddExp("应收款","iif(代付费用_打单费 Is null,0,代付费用_打单费) + iif(代付费用_理货费 Is null,0,代付费用_理货费))
jb.Filter = "状态 <> \'已付费\'"
Dim cb As new CrossTableBuilder("客户欠款",jb.BuildSQL)
cb.HGroups.AddDef("客户")
cb.HGroups.AddDef("发票号码")
cb.VGroups.AddDef("作业日期",DateGroupEnum.month,"{0}月")
cb.Totals.AddDef("应收款")
cb.HorizontalTotal = True
cb.Build()
DataTables("客户欠款").SysStyles("EmptyArea").BackColor = Color.DarkTurquoise
m t As Table = Tables("客户欠款")
Dim g As SubtotalGroup
t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False
t.SpillNode = True
g = New SubtotalGroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "客户"
g.TotalOn = "应收款_1,应收款_2,应收款_3,应收款_4,应收款_5,合计"
g.Caption = "{0} 小计"
t.SubtotalGroups.Add(g)
g = New SubtotalGroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "*"
g.TotalOn = "应收款_1,应收款_2,应收款_3,应收款_4,应收款_5,合计"
g.Caption = "总计"
t.SubtotalGroups.Add(g)
t.Subtotal
MainTable = t

狐狸爸爸关键在于”作业日期“产生的”月份“不确定。可能是1个月。也可能是12个月。


--  作者:狐狸爸爸
--  发布时间:2011/11/29 17:28:00
--  

问题让人费解,你的代码和图片不一致。

 

大概: 动态合成TotalOn:

 

....

Dim fds as string

For Each c as Col in t.Cols

      if c.Name.EndsWith("月") Then \'如果是月结尾的列

          fds = fds & "," & c.name

      enif

Next

fds = fds.Trim(",")

.....

g.TotalOn = fds

 

 

 


--  作者:bm
--  发布时间:2011/11/29 17:41:00
--  狐狸爸爸就是这个东东。可是不计算

Dim t As Table = Tables("客户欠款")
Dim g As Subtotalgroup
Dim fds As String
For Each c As Col In t.Cols
      If c.Name.EndsWith("月") Then \'如果是月结尾的列
          fds = fds & "," & c.name
      End If
Next

t.SubtotalGroups.Clear()
t.GroupAboveData = False
t.TreeVisible = False
t.SpillNode = True

g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "客户"
g.TotalOn = "fds,合计"
g.Caption = "{0} 小计"
t.SubtotalGroups.Add(g)

g = New Subtotalgroup
g.Aggregate = AggregateEnum.Sum
g.GroupOn = "*"
g.TotalOn = "fds,合计"
g.Caption = "总计"
t.SubtotalGroups.Add(g)

t.Subtotal()


 

[此贴子已经被作者于2011-11-29 18:07:20编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/11/29 18:07:00
--  

千言万语,不如一个简单实例。


--  作者:bm
--  发布时间:2011/11/29 18:30:00
--  狐狸爸爸这个实例太难做了。
狐狸爸爸这个实例太难做了。帮忙看看吧
--  作者:狐狸爸爸
--  发布时间:2011/11/29 18:42:00
--  
今天太晚,明天我帮你做个例子。