就是简单的对库存明细表的行进行循环,看看在可用数量表是否存在相同条件filter的行。如果不存在,那就增加一行,数量和在库数量的值根据库存明细表符合filter的行求和。
现在的情况是每一行都增加了且数量为0.
请帮忙看看下面代码哪了不对?drr.save不应该已经保存了么,sqlfind在查询的时候不已经存在这一行了么,就不应该再增加行了吧。
For Each rr As DataRow In DataTables("库存明细表").DataRows
Dim filter As String = "生产订单号码 = '" & rr("生产订单号码") & "' and 工单行号 = '" & rr("工单行号") & "' and 物料编码 = '" & rr("物料编码") & "' and 订单号 = '" & rr("订单号") & "' and 订单行号 = '" & rr("订单行号") & "' and 库位类别 = '" & rr("库位类别") & "'"
Dim dr As DataRow = DataTables("可用数量表").SQLFind(filter)
If dr Is Nothing Then
Dim sum As Integer = DataTables("库存明细表").SQLCompute("Sum(数量)",filter)
Dim drr As Row = Tables("可用数量表").AddNew()
drr("生产订单号码") = rr("生产订单号码")
drr("工单行号") = rr("工单行号")
drr("物料编码") = rr("物料编码")
drr("物料名称") = rr("物料名称")
drr("订单号") = rr("订单号")
drr("订单行号") = rr("订单行号")
drr("库位类别") = rr("库位类别")
drr("两化表编号") = rr("两化表编号")
drr("软件版本") = rr("软件版本")
drr("两化表编号") = rr("两化表编号")
drr("体态") = rr("体态")
If rr.IsNull("入库完成时间") Then
drr("入库时间") = Date.Now
Else
drr("入库时间") = rr("入库完成时间")
End If
drr("数量") = sum
drr("在库数量") = sum
drr.save
End If
Next
msgbox(0)