以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于组合多表统计  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=88356)

--  作者:lk15502
--  发布时间:2016/8/1 14:48:00
--  关于组合多表统计
老师;下面的代码运行后,发生错误:无法找到列“品名大类”;请问是什么原因
Dim kcbs As String = DataTables("库存表").getcomboliststring("入库编号")
kcbs = "(\'"& kcbs.replace("|","\',\'") & "\')"

Dim Ckbs As String = DataTables("出库表").getcomboliststring("入库编号","入库编号 in " & kcbs)
Ckbs = "(\'"& ckbs.replace("|","\',\'") & "\')"

Dim bd1 As New GroupTableBuilder("统计表1",DataTables("入库表"))
Dim dt1 As fxDataSource
bd1.Groups.AddDef("品名大类") \'根据品名大类分组
bd1.Totals.AddDef("重量","入库_重量") \'对重量进行统计
bd1.Totals.AddDef("匹数","入库_匹数") \'对匹数进行统计
bd1.fromserver = True
bd1.filter = "入库编号 In (\'" & ckbs & "\')"
dt1 = bd1.BuildDataSource()

Dim bd2 As New GroupTableBuilder("统计表2",DataTables("库存表"))
Dim dt2  As fxDataSource
bd2.Groups.AddDef("品名大类") \'根据品名大类分组
bd2.Totals.AddDef("重量","库存_重量") \'对重量进行统计
bd2.Totals.AddDef("匹数","库存_匹数") \'对匹数进行统计
bd2.fromserver = True
bd2.filter = "入库编号 In (\'" & ckbs & "\')"
dt2 = bd2.BuildDataSource()

Dim bd3 As New GroupTableBuilder("统计表3",DataTables("出库表"))
Dim dt3 As fxDataSource
bd3.Groups.AddDef("品名大类") \'根据品名大类分组
bd3.Totals.AddDef("重量","出库_重量") \'对重量进行统计
bd3.Totals.AddDef("匹数","出库_匹数") \'对匹数进行统计
bd3.fromserver = True
bd3.filter = "入库编号 In (\'" & ckbs & "\')"
dt3 = bd3.BuildDataSource()

dt1.Combine("品名大类",dt2,"品名大类") \'将库存统计数据组合到入库统计数据
dt1.Combine("品名大类",dt3,"品名大类") \'将出库统计数据组合到入库统计数据

Tables("统计窗口_Table1").DataSource = dt1 \'将统计结果绑定到Table
Dim t As Table = Tables("统计窗口_Table1")
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 = "入库_重量,入库_匹数,库存_重量,库存_匹数,出库_重量,出库_匹数"
g.Caption = "总计"
t.SubtotalGroups.Add(g)

t.Subtotal()

--  作者:大红袍
--  发布时间:2016/8/1 15:09:00
--  

提示很清楚。

 

说明你 入库表、出库表、库存表,肯定有一个表,没有 品名大类 列


--  作者:lk15502
--  发布时间:2016/8/1 15:47:00
--  
三个表肯定是都有品名大类列的,这些代码是写在窗口下面的一个按钮里,还有好几个其他类似的按钮,会不会之间有冲突?
--  作者:大红袍
--  发布时间:2016/8/1 15:58:00
--  
实例发上来吧。
--  作者:lk15502
--  发布时间:2016/8/1 16:09:00
--  
老师找到原因了,bd1.filter = "入库编号 In (\'" & ckbs & "\')" 改成:bd1.filter = "入库编号 In " & ckbs ;
老师能不能,解释一下原理?谢谢

--  作者:lk15502
--  发布时间:2016/8/1 16:11:00
--  
代码没有分号
--  作者:大红袍
--  发布时间:2016/8/1 18:35:00
--  
以下是引用lk15502在2016/8/1 16:09:00的发言:
老师找到原因了,bd1.filter = "入库编号 In (\'" & ckbs & "\')" 改成:bd1.filter = "入库编号 In " & ckbs ;
老师能不能,解释一下原理?谢谢

 

ckbs 的值,是这样的  1\',\'2\',\'3\',\'4

 

需要合并成这样才行    入库编号 In (\'1\',\'2\',\'3\',\'4\')