以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  addnew  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=96774)

--  作者:huhu
--  发布时间:2017/2/27 19:00:00
--  addnew
就是简单的对库存明细表的行进行循环,看看在可用数量表是否存在相同条件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)

--  作者:有点蓝
--  发布时间:2017/2/27 20:29:00
--  
代码看不出问题,应该是数据的原因。

重复调用同样的代码还会不会增加行?