Foxtable(狐表)用户栏目专家坐堂 → [求助]如何按当前值进行组合统计,并把结果导入库存表及导出外部文件?


  共有2315人关注过本帖树形打印复制链接

主题:[求助]如何按当前值进行组合统计,并把结果导入库存表及导出外部文件?

帅哥哟,离线,有人找我吗?
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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()

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/10 10:55:00 [显示全部帖子]

1、加上条件,排除空行
bd1.Filter = "型号 is not null"

2、写了什么代码?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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()

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/11 9:37:00 [显示全部帖子]

重新贴出改后的代码,或者上传实例

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/11 13:55:00 [显示全部帖子]

Dim Filter As String = "型号 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

Dim bd1 As New GroupTableBuilder("统计表1",DataTables("进货单"))
Dim dt1 As fxDataSource
bd1.Groups.AddDef("型号") '根据型号分组
bd1.Groups.AddDef("物料号") '根据型号分组
bd1.Groups.AddDef("品名") '根据型号分组
bd1.Totals.AddDef("数量","进货_数量") '对数量进行统计
bd1.Totals.AddDef("金额","进货_金额") '对金额进行统计
bd1.Filter = Filter 
dt1 = bd1.BuildDataSource()

Dim bd2 As New GroupTableBuilder("统计表2",DataTables("销售单"))
Dim dt2  As fxDataSource
bd2.Groups.AddDef("型号") '根据型号分组
bd2.Groups.AddDef("物料号") '根据型号分组
bd2.Groups.AddDef("品名") '根据型号分组
bd2.Totals.AddDef("数量","销售_数量") '对数量进行统计
bd2.Totals.AddDef("金额","销售_金额") '对金额进行统计
bd2.Filter = Filter 
dt2 = bd2.BuildDataSource()

Dim bd3 As New GroupTableBuilder("统计表3",DataTables("退货单"))
Dim dt3 As fxDataSource
bd3.Groups.AddDef("型号") '根据型号分组
bd3.Groups.AddDef("物料号") '根据型号分组
bd3.Groups.AddDef("品名") '根据型号分组
bd3.Totals.AddDef("数量","退货_数量") '对数量进行统计
bd3.Totals.AddDef("金额","退货_金额") '对金额进行统计
bd3.Filter = Filter 
dt3 = bd3.BuildDataSource()
Dim ns() As String = {"型号","物料号","品名"}

dt1.Combine(ns,dt2,ns) '将销售统计数据组合到进货统计数据
dt1.Combine(ns,dt3,ns) '将退货统计数据组合到进货统计数据

Tables("库存统计_Table1").DataSource = dt1 '将统计结果绑定到Table
With DataTables("库存统计_Table1").DataCols  '用表达式列计算库存数据
    .Add("库存_数量",Gettype(Integer), "IsNull([进货_数量],0) - ISNULL([销售_数量],0) - ISNULL([退货_数量],0)")
    .Add("库存_金额",Gettype(Double), "[库存_数量] /[进货_数量] * [进货_金额]")
End With


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/11 20:09:00 [显示全部帖子]

bd2.Filter = Filter.replace("进货日期","销售日期")

……
bd3.Filter = Filter.replace("进货日期","退货日期")

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/8 16:04:00 [显示全部帖子]

写了什么代码,做了什么操作?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/1/8 16:20:00 [显示全部帖子]

实例在17楼,我按照18楼的方式改后没有问题。请上传有问题的实例测试。

1、每天都调用此方法查询库存会有什么问题?
2、建一个月结表,每个月月结的时候,把本月的期初和期末值保存到月结表,一个表就够了,保存所有月份的数据。
库存表只存当月的期初数据,不需要删除,根据对应的商品编号直接更新数量即可,数量为0 的再删除,没有的商品就添加

 回到顶部
总数 13 1 2 下一页