以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- fxDataSource得出的数据有些不相符 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=132906) |
-- 作者:蓝蚂蚁 -- 发布时间:2019/4/1 21:54:00 -- fxDataSource得出的数据有些不相符 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个】 其它的绝大部分都是正确的 请老师帮分析一下,谢谢 |
-- 作者:有点蓝 -- 发布时间:2019/4/1 22:05:00 -- 请上传具体实例说明,同时具体说明那些数据有问题 |
-- 作者:蓝蚂蚁 -- 发布时间:2019/4/1 22:43:00 -- 谢谢老师解答,是我操作上的失误,结果是对的 ,再次表示感谢 |