以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]如何按当前值进行组合统计,并把结果导入库存表及导出外部文件? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=137529) |
||||
-- 作者:lgz518 -- 发布时间:2019/7/8 20:12:00 -- [求助]如何按当前值进行组合统计,并把结果导入库存表及导出外部文件? 如何按当前值进行组合统计,并把结果导入库存表及导出外部文件? 1.如何按窗口上的两个文本编辑框当前值(如起止日期)进行统计,并把结果导入库存表(已手工设计的表)及导出外部文件(EXECL); 2.
Dim
bd1
As
New
GroupTableBuilder("统计表1",DataTables("进货单"))
Dim
bd3
As
New
GroupTableBuilder("统计表3",DataTables("退货单"))
dt1.Combine("型号",dt2,"型号")
\'将销售统计数据组合到进货统计数据
Tables("窗口1_Table1").DataSource =
dt1
\'将统计结果绑定到Table
手工编码填充数据
前面介绍了用Filler进行数据填充,Filler的设置很丰富,使用比较灵活。 例如需要从表A中,将金额大于100的记录,复制到表B中,假定两个表的结构一样: For Each dr1
As DataRow
In DataTables("表A").Select("[金额]
> 100") 如果表A和表B的结构不同,或者只需填充部分列,就需要定义数据来源列和数据接收列,例如: Dim Cols1()
As String
= {"来源列一","来源列二","来源列三"} 如果要排除重复值,可以用GetValues获得不重复的值,然后再填充: Dim Vals
As List(of
String()) |
||||
-- 作者:有点蓝 -- 发布时间:2019/7/8 21:27:00 -- 生成条件参考:http://www.foxtable.com/webhelp/topics/1058.htm Dim bd1 As New GroupTableBuilder("统计表1",DataTables("进货单")) Dim dt1 As fxDataSource bd1.Groups.AddDef("型号") \'根据型号分组 bd1.Totals.AddDef("数量","进货_数量") \'对数量进行统计 bd1.Totals.AddDef("金额","进货_金额") \'对金额进行统计 bd1.Filter = "生成的条件"
dt1 = bd1.BuildDataSource() |
||||
-- 作者:有点蓝 -- 发布时间:2019/7/8 21:28:00 -- 填充数据 For Each dr1 As DataRow In Tables("窗口1_Table1").datatable
Dim dr2 As DataRow = DataTables("表B").AddNew() For Each dc As DataCol in DataTables("表B").DataCols dr2(dc.Name) = dr1(dc.name) Next Next |
||||
-- 作者:lgz518 -- 发布时间:2019/7/10 9:53:00 --
老师,执行不了,代码加上提示错,请老师指教,谢谢!
|
||||
-- 作者:有点蓝 -- 发布时间:2019/7/10 10:19:00 -- For Each dr1 As DataRow In Tables("库存统计_Table1").DataTable.DataRows Dim dr2 As DataRow = DataTables("统计表").AddNew() For Each dc As DataCol In DataTables("统计表").DataCols dr2(dc.Name) = dr1(dc.name) Next Next
|
||||
-- 作者:lgz518 -- 发布时间:2019/7/10 10:37:00 -- 首先,谢谢,老师,导入表可以,但是有二个: 1.统计时,首行会出现空数据,空行,如何解决? 2.按两个文本编辑当前值统计,实现不,按您提供方法,加代码,也报错? 请指教,谢谢
|
||||
-- 作者:有点蓝 -- 发布时间:2019/7/10 10:55:00 -- 1、加上条件,排除空行 bd1.Filter = "型号 is not null" 2、写了什么代码?
|
||||
-- 作者:lgz518 -- 发布时间:2019/7/10 13:01:00 -- 老师, 按两个文本编辑当前值统计,实现不,加上起止日期,报错?请指教,谢谢 Dim bd1 As New GroupTableBuilder("统计表1",DataTables("进货单")) Dim dt1 As fxDataSourcebd1.Groups.AddDef("型号") \'根据型号分组 bd1.Totals.AddDef("数量","进货_数量") \'对数量进行统计 bd1.Totals.AddDef("金额","进货_金额") \'对金额进行统计 bd1.Filter = "型号 is not null" With e.Form.Controls("StartDate") If .Value IsNot Nothing Then If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "日期 >= #" & .Value & "#" End If End With With e.Form.Controls("EndDate") If .Value IsNot Nothing Then If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "日期 <= #" & .Value & "#" End If End With dt1 = bd1.BuildDataSource() Dim bd2 As New GroupTableBuilder("统计表2",DataTables("销售单")) Dim dt2 As fxDataSource bd2.Groups.AddDef("型号") \'根据型号分组 bd2.Totals.AddDef("数量","销售_数量") \'对数量进行统计 bd2.Totals.AddDef("金额","销售_金额") \'对金额进行统计 bd1.Filter = "型号 is not null" With e.Form.Controls("StartDate") If .Value IsNot Nothing Then If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "日期 >= #" & .Value & "#" End If End With With e.Form.Controls("EndDate") If .Value IsNot Nothing Then If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "日期 <= #" & .Value & "#" End If End With dt2 = bd2.BuildDataSource() Dim bd3 As New GroupTableBuilder("统计表3",DataTables("退货单")) Dim dt3 As fxDataSource bd3.Groups.AddDef("型号") \'根据型号分组 bd3.Totals.AddDef("数量","退货_数量") \'对数量进行统计 bd3.Totals.AddDef("金额","退货_金额") \'对金额进行统计 bd1.Filter = "型号 is not null" With e.Form.Controls("StartDate") If .Value IsNot Nothing Then If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "日期 >= #" & .Value & "#" End If End With With e.Form.Controls("EndDate") If .Value IsNot Nothing Then If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "日期 <= #" & .Value & "#" End If End With dt3 = bd3.BuildDataSource() dt1.Combine("型号",dt2,"型号") \'将销售统计数据组合到进货统计数据 dt1.Combine("型号",dt3,"型号") \'将退货统计数据组合到进货统计数据 Tables("库存统计_Table1").DataSource = dt1 \'将统计结果绑定到Table With DataTables("库存统计_Table1").DataCols \'用表达式列计算库存数据 .Add("库存_数量",Gettype(Integer), "IsNull([进货_数量],0) - ISNULL([销售_数量],0) - ISNULL([退货_数量],0)") .Add("库存_金额",Gettype(Double), "[库存_数量] /[进货_数量] * [进货_金额]") End With |
||||
-- 作者:lgz518 -- 发布时间:2019/7/10 13:46:00 -- 老师, 按两个文本编辑当前值统计,实现不,加上起止日期,报错?请指教,谢谢 Dim bd1 As New GroupTableBuilder("统计表1",DataTables("进货单")) Dim dt1 As fxDataSourcebd1.Groups.AddDef("型号") \'根据型号分组 bd1.Totals.AddDef("数量","进货_数量") \'对数量进行统计 bd1.Totals.AddDef("金额","进货_金额") \'对金额进行统计 bd1.Filter = "型号 is not null" With e.Form.Controls("StartDate") If .Value IsNot Nothing Then If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "日期 >= #" & .Value & "#" End If End With With e.Form.Controls("EndDate") If .Value IsNot Nothing Then If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "日期 <= #" & .Value & "#" End If End With dt1 = bd1.BuildDataSource() |
||||
-- 作者:有点蓝 -- 发布时间:2019/7/10 14:40:00 -- Dim Filter As String = "型号 is not null" Dim bd1 As New GroupTableBuilder("统计表1",DataTables("进货单")) Dim dt1 As fxDataSource bd1.Groups.AddDef("型号") \'根据型号分组 bd1.Totals.AddDef("数量","进货_数量") \'对数量进行统计 bd1.Totals.AddDef("金额","进货_金额") \'对金额进行统计 With e.Form.Controls("StartDate") If .Value IsNot Nothing Then If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "日期 >= #" & .Value & "#" End If End With With e.Form.Controls("EndDate") If .Value IsNot Nothing Then If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "日期 <= #" & .Value & "#" End If End With bd1.Filter = Filter dt1 = bd1.BuildDataSource()
|