Foxtable(狐表)用户栏目专家坐堂 → 数据统计


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

主题:数据统计

帅哥,在线噢!
nuoyan88
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:2069 积分:13963 威望:0 精华:0 注册:2017/10/12 13:00:00
数据统计  发帖心情 Post By:2020/2/28 12:11:00 [只看该作者]

老师,请帮忙看看,谢谢!
问题描述:
我有三个表:1、库存表、月结记录表、出入库明细。2、库存表里有每个月的月结数据(包含年、月、日、库位、编号),出入库明细有两种数据(单据类型分别为:入库、出库)。3、月结记录表是记录库存表中月结数据的时间段。比如:库存表中的有两个月的月结数据(分别是2019年12月份和2020年01月份),那我这次查询统计出来的结果应该是:上月结存就以最新的一次为准:月为202001,仓库名称、编号等三个条件,根据这个月份、仓库名称在月结记录表中查找出时间段。根据库存表最新月结的时间段(比如:成品仓1月份的月结起止时间:2020-01-01 到2020 - 01 - 22)那在出入库明细中“单据类型:入库 和 单据类型:出库。统计区间就是:2020-01-20 开始到目前。材料仓的月结起止日期:2020-01-01  到  2020- 01-20日,统计区间就是:2020-01-21开始到目前。请帮忙看看,谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table



 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:46226 积分:234572 威望:0 精华:8 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/28 14:09:00 [只看该作者]

这个意思?

Dim d As Date = Date.Today
Dim m As String = Format(d,"yyyyMM")
Dim m1 As String = Format(d.AddMonths(-1),"yyyyMM")

Dim drs As List(Of  DataRow) = DataTables("月结记录表").Select("月='" & m1 & "'")
If drs.Count = 0 Then
    msgbox("上个月未月结")
    Return
End If

Dim f2 As String = "1=2 "
For Each dr As DataRow In drs
    f2 = f2 & "or ( 库位='" & dr("仓库名称") & "' and 单据日期 > #" & dr("结束时间") & "#)"
Next

Dim bd1 As New GroupTableBuilder("统计表1",DataTables("出入库明细"))
Dim dt1 As fxDataSource
bd1.Groups.AddDef("编号") '根据编号分组
bd1.Totals.AddDef("入库数","入库数量") '对数量进行统计
bd1.Filter = f2
dt1 = bd1.BuildDataSource()

Dim bd2 As New GroupTableBuilder("统计表2",DataTables("出入库明细"))
Dim dt2  As fxDataSource
bd2.Groups.AddDef("编号") '根据编号分组
bd2.Totals.AddDef("出库数","出库数量") '对数量进行统计
bd2.Filter = f2
dt2 = bd2.BuildDataSource()

Dim bd3 As New GroupTableBuilder("统计表3",DataTables("库存"))
Dim dt3 As fxDataSource
bd3.Groups.AddDef("编号") '根据编号分组
bd3.Totals.AddDef("库存数","上月结存") '对数量进行统计
bd3.Filter = "月='" & m1 & "'"
dt3 = bd3.BuildDataSource()

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

Tables("窗口1_Table1").DataSource = dt1 '将统计结果绑定到Table
With DataTables("窗口1_Table1").DataCols  '用表达式列计算库存数据
    .Add("库存数量",Gettype(Integer), "IsNull([上月结存],0) + ISNULL([入库数量],0) - ISNULL([出库数量],0)")
End With

 回到顶部
帅哥,在线噢!
nuoyan88
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:2069 积分:13963 威望:0 精华:0 注册:2017/10/12 13:00:00
  发帖心情 Post By:2020/2/28 14:56:00 [只看该作者]

还请老师再帮忙看看,如图。在月结记录表中还需要加入仓库名称为条件,库存、出入库明细统计也是用月结记录中的时间区间和仓库名称查找,谢谢!

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目1.table



此主题相关图片如下:1.png
按此在新窗口浏览图片


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:46226 积分:234572 威望:0 精华:8 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/28 15:20:00 [只看该作者]

分组统计里自己加一个出库的分组即可

 回到顶部
帅哥,在线噢!
nuoyan88
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:2069 积分:13963 威望:0 精华:0 注册:2017/10/12 13:00:00
  发帖心情 Post By:2020/2/28 15:42:00 [只看该作者]

我有出库的分组,老师,请帮忙看看哪些有问题,谢谢!

Dim d As Date = Date.Today
Dim m As String = Format(d,"yyyyMM")
Dim m1 As String = Format(d.AddMonths(-1),"yyyyMM")
Dim drs As List(Of  DataRow) = DataTables("月结记录表").Select("月='" & m1 & "'") (老师,这个还需要加一个仓库名称的条件)
If drs.Count = 0 Then
    msgbox("上个月未月结")
    Return
End If
Dim f2 As String = "1=2 "
For Each dr As DataRow In drs
    f2 = f2 & "or ( 仓库名称 ='" & dr("仓库名称") & "' and 单据日期 > #" & dr("结束时间") & "#)"
Next
Dim bd1 As New GroupTableBuilder("统计表1",DataTables("出入库明细"))
Dim dt1 As fxDataSource
bd1.Groups.AddDef("编号") '根据编号分组
bd1.Groups.AddDef("仓库名称") '根据编号分组
(老师,这个仓库名称自己加的)
bd1.Totals.AddDef("入库数","入库数量") '对数量进行统计
bd1.Filter = f2
dt1 = bd1.BuildDataSource()


Dim bd2 As New GroupTableBuilder("统计表2",DataTables("出入库明细"))
Dim dt2  As fxDataSource
bd2.Groups.AddDef("编号") '根据编号分组
bd2.Groups.AddDef("仓库名称") '根据编号分组
(老师,这个仓库名称自己加的)
bd2.Totals.AddDef("出库数","出库数量") '对数量进行统计
bd2.Filter = f2
dt2 = bd2.BuildDataSource()


Dim bd3 As New GroupTableBuilder("统计表3",DataTables("库存"))
Dim dt3 As fxDataSource
bd3.Groups.AddDef("编号") '根据编号分组
bd3.Groups.AddDef("仓库名称") '根据编号分组
bd3.Totals.AddDef("库存数","上月结存") '对数量进行统计
bd3.Filter = "月='" & m1 & "'"
(老师,这个还需要加一个仓库名称的条件)

dt3 = bd3.BuildDataSource()
dt1.Combine("编号",dt2,"编号") '将销售统计数据组合到进货统计数据
dt1.Combine("编号",dt3,"编号") '将退货统计数据组合到进货统计数据
dt1.Combine("仓库名称",dt2,"仓库名称") '将销售统计数据组合到进货统计数据
dt1.Combine("仓库名称",dt3,"仓库名称") '将退货统计数据组合到进货统计数据
(老师,这个仓库名称自己加的)

Tables("窗口1_Table1").DataSource = dt1 '将统计结果绑定到Table
With DataTables("窗口1_Table1").DataCols  '用表达式列计算库存数据
    .Add("库存数量",Gettype(Integer), "IsNull([上月结存],0) + ISNULL([入库数量],0) - ISNULL([出库数量],0)")
End With

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:46226 积分:234572 威望:0 精华:8 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/28 16:00:00 [只看该作者]

dim nms() as string = {"编号","仓库名称"}
dt3 = bd3.BuildDataSource()
dt1.Combine(nms,dt2,nms) '将销售统计数据组合到进货统计数据
dt1.Combine(nms,dt3,nms) '将退货统计数据组合到进货统计数据
Tables("窗口1_Table1").DataSource = dt1

 回到顶部
帅哥,在线噢!
nuoyan88
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:2069 积分:13963 威望:0 精华:0 注册:2017/10/12 13:00:00
  发帖心情 Post By:2020/2/28 16:18:00 [只看该作者]

老师,以下这个代码的条件没有使用到出入库明细中。编号:001,成品仓,的这个材料,成品仓期初是0,上个月月结时间是:2020-01-01 到 2020-01-22,在出入库明细中统计的结果应该是从2020-01-23 开始的,如下图1。我把小于改成大于之后,001还是错了,其他的对了,查询了下001的数据,也没有异常。谢谢!

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

Dim f2 As String = "1=2 "
For Each dr As DataRow In drs
    f2 = f2 & "or ( 仓库名称 ='" & dr("仓库名称") & "' and 单据日期 > #" & dr("结束时间") & "#)"
Next

修改之后:
Dim f2 As String = "1=2 "
For Each dr As DataRow In drs
    f2 = f2 & "or ( 仓库名称 ='" & dr("仓库名称") & "' and 单据日期 < #" & dr("结束时间") & "#)"
Next
[此贴子已经被作者于2020/2/28 16:27:20编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:46226 积分:234572 威望:0 精华:8 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/28 16:59:00 [只看该作者]

月结记录表数据有问题,自己仔细看看

 回到顶部
帅哥,在线噢!
nuoyan88
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:2069 积分:13963 威望:0 精华:0 注册:2017/10/12 13:00:00
  发帖心情 Post By:2020/2/28 17:20:00 [只看该作者]

 老师,没有问题的。有两个日期,是不同的仓库哦。求赐教,谢谢


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

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:46226 积分:234572 威望:0 精华:8 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/2/28 17:58:00 [只看该作者]

拿个放大镜仔细看看前面2行的年月日

 回到顶部
总数 36 1 2 3 4 下一页