以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 如何处理我的批号表 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=98475) |
-- 作者:edisontsui -- 发布时间:2017/3/30 14:13:00 -- 如何处理我的批号表 我的项目有两个数据表,一个叫“出入库”,一个叫“批号表”。
“出入库”里的数据列名称有:物料编号、批号、入库数量(正数)、出库数量(负数) “批号表”里的数据列名称有:物料编号、批号、库存数量
我的要求是:每当 (1) “出入库”里面的入库数量、出库数量发生改变,或者(2)有新增、删除数据行时,如果“批号表”里面有与“出入库”相同“物料编号”和“批号”的记录,则将“批号表”里面的数量与情况(1)的改变量相加,或者与情况(2)里面的入库数量、出库数量相加,否则就新增加一条记录。“出入库”里面没有批号的数据行入库数量、出库数量发生改变或者新增、删除数据行是没有批号的,则不在“批号表”里反映出来。也就是说,“批号表”里面的所有数据行都是有批号的,而且只能有一条相同“物料编号”和相同“批号”的记录。
我现在的代码是这样的: “出入库”之Datacolchanged:
If e.DataCol Is DataTables("出入库").DataCols("入库数量") Or e.DataCol Is DataTables("出入库").DataCols("出库数量") If e.DataRow("批号") Is Nothing Else Dim re As Boolean = False For Each dr As DataRow In DataTables("批号表").DataRows If dr("批号") <> e.DataRow("批号") Or dr("物料编号") <> e.DataRow("物料编号") Then Continue
For ElseIf
dr("批号") = e.DataRow("批号") And dr("物料编号") = e.DataRow("物料编号") Then dr("库存数量") = e.DataRow("入库数量") + e.DataRow("出库数量") + dr("库存数量") - e.OldValue re
= True Exit
For End
If Next If re =False Dim
dr As DataRow dr
= DataTables("批号表").AddNew() dr("批号")
= e.DataRow("批号") dr("物料编号")
= e.DataRow("物料编号") dr("库存数量")
= e.DataRow("入库数量")
+ e.DataRow("出库数量") End If End If End If
但是现在的代码不能完全实现我的要求。不知这个代码有什么问题? |
-- 作者:有点色 -- 发布时间:2017/3/30 16:49:00 -- If e.DataCol.name = "入库数量" OrElse e.DataCol.name = "出库数量" Then If e.DataRow("批号") Is Nothing OrElse e.DataRow("物料编号") Is Nothing Then Else Dim dr As DataRow = DataTables("批号表").find("批号 = \'" & e.DataRow("批号") & "\' And 物料编号 = \'" & e.DataRow("物料编号") & "\'") If dr Is Nothing Then dr = DataTables("批号表").AddNew() dr("批号") = e.DataRow("批号") dr("物料编号") = e.DataRow("物料编号") dr("库存数量") = e.DataRow("入库数量") + e.DataRow("出库数量") End If Dim filter As String = "批号 = \'" & e.DataRow("批号") & "\' And 物料编号 = \'" & e.DataRow("物料编号") & "\'" dr("库存数量") = e.DataTable.compute("sum(入库数量)", filter) + e.DataTable.compute("sum(出库数量)", filter) End If End If |
-- 作者:edisontsui -- 发布时间:2017/3/30 17:44:00 -- 谢谢。 |