Foxtable(狐表)用户栏目专家坐堂 → fxDataSource得出的数据有些不相符


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

主题:fxDataSource得出的数据有些不相符

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


加好友 发短信
等级:三尾狐 帖子:672 积分:7909 威望:0 精华:0 注册:2016/6/11 11:10:00
fxDataSource得出的数据有些不相符  发帖心情 Post By:2019/4/1 21:54:00 [只看该作者]

Dim Result As DialogResult
Result=MessageBox.Show("自动生成的最新库存数据需要把入库和出库的明细更新到最新截止日期! 是否更新到最新截止日期?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
    Dim bd1 As New GroupTableBuilder("购进临时表",DataTables("入库明细")) '进货
    Dim t As DataTable
    Dim dt1 As fxDataSource
    bd1.Filter = "写入库存=False"
    bd1.Groups.AddDef("字典编码") '根据型号分组
    bd1.Groups.AddDef("通用名称") '根据型号分组
    bd1.Groups.AddDef("规格型号") '根据型号分组
    bd1.Groups.AddDef("单位") '根据型号分组
    bd1.Totals.AddDef("数量","进货数量") '对数量进行统计
    dt1 = bd1.BuildDataSource()
    t = bd1.Build(True) '生成一个DataTable
    Dim bd2 As New GroupTableBuilder("出库临时表",DataTables("出库明细")) '销售
    Dim dt2  As fxDataSource
    bd2.Filter = "写入库存=False"
    bd2.Groups.AddDef("字典编码") '根据型号分组
    bd2.Groups.AddDef("通用名称") '根据型号分组
    bd2.Groups.AddDef("规格型号") '根据型号分组
    bd2.Groups.AddDef("单位") '根据型号分组
    bd2.Totals.AddDef("数量","出库数量") '对数量进行统计
    dt2 = bd2.BuildDataSource()    
    Dim bd3 As New GroupTableBuilder("库存临时表",DataTables("打计划用库存")) '原库存
    Dim dt3  As fxDataSource
    bd3.Groups.AddDef("字典编码") '根据型号分组
    bd3.Groups.AddDef("通用名称") '根据型号分组
    bd3.Groups.AddDef("规格型号") '根据型号分组
    bd3.Groups.AddDef("单位") '根据型号分组
    bd3.Totals.AddDef("库存","原库存数量") '对数量进行统计
    dt3 = bd3.BuildDataSource()
    Dim nms As String() = {"字典编码","通用名称","规格型号","单位"} '指定连接列
    dt1.Combine(nms,dt2,nms) '将销售统计数据组合到进货统计数据
    dt1.Combine(nms,dt3,nms) '将销售统计数据组合到进货统计数据
    Tables("打计划用库存主窗口_Table2").DataSource = dt1 '将统计结果绑定到Table
    With DataTables("打计划用库存主窗口_Table2").DataCols  '用表达式列计算库存数据
        .Add("现库存数量",Gettype(Integer), "IsNull([进货数量],0)+ ISNULL([原库存数量],0)-ISNULL([出库数量],0)")
    End With
    Tables("打计划用库存主窗口_Table1").DataTable.DeleteFor("库存=0 or 库存<0") '删除库存列中库存为0为负数的行
    Tables("打计划用库存").DataTable.DeleteFor("")
    Dim f As New Filler
    f.SourceTable = Tables("打计划用库存主窗口_Table2").DataTable '指定数据来源
    f.SourceCols = "字典编码,通用名称,规格型号,单位,现库存数量" '指定数据来源列
    f.DataTable = DataTables("打计划用库存") '指定数据接收表
    f.DataCols = "字典编码,通用名称,规格型号,单位,库存"    '指定数据接收列
    f.Distinct =True
    f.ExcludeExistValue = True
    f.Fill() '填充数据
    For Each r As Row In Tables("入库明细").Rows
        If  r("写入库存")=False Then
            r("写入库存")=True
        End If
    Next
    For Each r As Row In Tables("出库明细").Rows
        If  r("写入库存")=False Then
            r("写入库存")=True
        End If
    Next
Else
    MessageBox.Show("取消库存的写入,原库存数据未变动!", "提示")
End If

按照上面的代码,得出的数据不全对,举例:
A产品 入库10个  出库10个  原库存为0个   其结果为0
B产品 入库0个   出库为60个   原库存为813个  其结果显示两行,一行为-60个,另一行为813个【它们为什么合并起来,即结果为753个】
其它的绝大部分都是正确的
请老师帮分析一下,谢谢




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


加好友 发短信
等级:超级版主 帖子:110813 积分:564003 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/1 22:05:00 [只看该作者]

请上传具体实例说明,同时具体说明那些数据有问题

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


加好友 发短信
等级:三尾狐 帖子:672 积分:7909 威望:0 精华:0 注册:2016/6/11 11:10:00
  发帖心情 Post By:2019/4/1 22:43:00 [只看该作者]

谢谢老师解答,是我操作上的失误,结果是对的 ,再次表示感谢

 回到顶部