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个】
其它的绝大部分都是正确的
请老师帮分析一下,谢谢