以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [讨论]关于盘点赋值  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=142612)

--  作者:工匠
--  发布时间:2019/11/1 11:35:00
--  [讨论]关于盘点赋值
老师好
关于盘点记录对产品资料赋值,现在在盘点记录里每一步代码检查都有提示通过,但是最后产品资料对应物料编码列值确没有赋值成功,请老师帮看看,谢谢!

Select Case e.DataCol.Name
    
    Case "盘点数量","成本价","盘点行号","物料编码","库位","储位","负责人","盘点人","盘点备注"
        msgbox("1")
        
        e.DataRow("盘点金额") = e.DataRow("成本价") * e.DataRow("盘点数量")
        e.DataRow("盘点差异") = e.DataRow("盘点数量") - e.DataRow("账面数量")
        e.DataRow("仓库结存") = e.DataRow("盘点数量")
        msgbox("2")
        DataTables("盘点记录").save()

        Dim pr7 As DataRow        
        \'pr7 =  DataTables("产品资料").Find("物料编码=\'" & e.NewValue & "\'")
        pr7 =DataTables("产品资料").SQLFind("物料编码=\'" & e.DataRow("物料编码")  & "\'")
        If pr7 IsNot Nothing Then
            msgbox("3")
            
            Dim pr06 As DataRow
            pr06 = DataTables("盘点记录").SQLFind("物料编码 = \'" & e.DataRow("物料编码") & "\' and [_identify] <> " & e.DataRow("_identify"),"盘点日期 desc")
            \'pr6 =DataTables("盘点记录").Find("物料编码 =\'" & e.DataRow("物料编码")  & "\'")
            If pr06 IsNot Nothing Then
                msgbox("4")
                pr7("盘点数量") = pr06("盘点数量")
                msgbox("5")
                pr7("盘点金额") = pr06("盘点金额")
                pr7("盘点差异") = pr06("盘点差异")
                pr7("盘点备注") = pr06("盘点备注")
                pr7("盘点人") = pr06("盘点人")
                pr7("库位") = pr06("库位")
                pr7("储位") = pr06("储位")
                pr7("负责人") = pr06("负责人")
                pr7("成本价") = pr06("成本价")
                msgbox("6")
                DataTables("产品资料").save()
            End If
        End If
        
        
        Dim pr As DataRow
        pr = DataTables("盘点单").Find("盘点单号 = \'" & e.DataRow("盘点单号") & "\'")
        \'DataTables("盘点单").DataCols("盘点单号").RaiseDataColChanged(pr)
        \'\'msgbox("7")
        \'pr.save
        If pr IsNot Nothing Then
            
            pr("批次数量") = DataTables("盘点记录").sqlCompute("sum(盘点数量)","盘点单号 = \'" & pr("盘点单号") & "\'")
            pr("批次金额") = DataTables("盘点记录").sqlCompute("sum(盘点金额)","盘点单号 = \'" & pr("盘点单号") & "\'")
            pr("批次款数") = DataTables("盘点记录").sqlCompute("count(物料名称)","盘点单号 = \'" & pr("盘点单号") & "\'")        
            pr.save           
        End If
End Select


其中这段有提示通过但是实际没有赋值成功:
Dim pr06 As DataRow
            pr06 = DataTables("盘点记录").SQLFind("物料编码 = \'" & e.DataRow("物料编码") & "\' and [_identify] <> " & e.DataRow("_identify"),"盘点日期 desc")
            \'pr6 =DataTables("盘点记录").Find("物料编码 =\'" & e.DataRow("物料编码")  & "\'")
            If pr06 IsNot Nothing Then
                msgbox("4")
                pr7("盘点数量") = pr06("盘点数量")
                msgbox("5")
                pr7("盘点金额") = pr06("盘点金额")
                pr7("盘点差异") = pr06("盘点差异")
                pr7("盘点备注") = pr06("盘点备注")
                pr7("盘点人") = pr06("盘点人")
                pr7("库位") = pr06("库位")
                pr7("储位") = pr06("储位")
                pr7("负责人") = pr06("负责人")
                pr7("成本价") = pr06("成本价")
                msgbox("6")
                DataTables("产品资料").save()
谢谢!

[此贴子已经被作者于2019/11/1 11:39:00编辑过]

--  作者:有点蓝
--  发布时间:2019/11/1 11:55:00
--  
                pr7("储位") = pr06("储位")
                pr7("负责人") = pr06("负责人")
                pr7("成本价") = pr06("成本价")
pr7.save()
                msgbox("6")
                DataTables("产品资料").save()
            End If
        End If

SQLFind查询出来的行是独立的,和DataTables("产品资料")是没有任何关系的,必须单独调用保存

--  作者:工匠
--  发布时间:2019/11/1 12:22:00
--  
谢谢老师,还是没能赋值,不知道什么原因,有点奇怪


--  作者:有点蓝
--  发布时间:2019/11/1 13:40:00
--  
如果所有的msgbox都能弹出来,不可能有问题
--  作者:工匠
--  发布时间:2019/11/1 15:39:00
--  
谢谢老师
1.删除项目BIN文件夹,从启项目,开始不会所有msgbox都弹出,没有赋值成功,重新打开代码事件随意滚动,然后保存,反复录入几次盘点数,又会弹出msgbox通过,而实际没有赋值成功.
后来每次都有提示找到:msgbox检查("找编码最后盘点时间盘点数量"),但是赋值报错

代码;
Select Case e.DataCol.Name
    
    Case "盘点数量","成本价","盘点行号","物料编码" ,"库位","储位","负责人","盘点人","盘点备注"
        e.DataRow("盘点日期") = now()
        \'msgbox("1")
        DataTables("盘点记录").save()
        e.DataRow("盘点金额") = e.DataRow("成本价") * e.DataRow("盘点数量")
        e.DataRow("盘点差异") = e.DataRow("盘点数量") - e.DataRow("账面数量")
        e.DataRow("仓库结存") = e.DataRow("盘点数量")
        \'msgbox("2")
        DataTables("盘点记录").save()
        
        Dim pr7 As DataRow
        \'pr7 =  DataTables("产品资料").Find("物料编码=\'" & e.NewValue & "\'")
        pr7 =DataTables("产品资料").Find("物料编码=\'" & e.DataRow("物料编码")  & "\'")
        If pr7 IsNot Nothing Then
        
        
        Dim pr06 As DataRow
        pr06 = DataTables("盘点记录").SQLFind("物料编码 = \'" & e.DataRow("物料编码") & "\'and [_identify] <> " & e.DataRow("_identify"),"盘点日期 DESC")
        \'pr06 = DataTables("盘点记录").SQLFind("物料编码 = \'" & e.DataRow("物料编码") & "\'")
        msgbox("找编码最后盘点时间盘点数量")
        
        \'If pr06 IsNot Nothing Then
        \'msgbox("3")
        pr7("盘点数量") = pr06("盘点数量")
        
        msgbox("赋值")
        \'pr7("盘点金额") = pr06("盘点金额")
        \'pr7("盘点差异") = pr06("盘点差异")
        \'pr7("盘点备注") = pr06("盘点备注")
        \'pr7("盘点人") = pr06("盘点人")
        \'pr7("库位") = pr06("库位")
        \'pr7("储位") = pr06("储位")
        \'pr7("负责人") = pr06("负责人")
        \'pr7("成本价") = pr06("成本价")
        pr7.save()
        msgbox("保存产品资料行")
        
        End If
        
        Dim pr As DataRow
        pr = DataTables("盘点单").Find("盘点单号 = \'" & e.DataRow("盘点单号") & "\'")
        If pr IsNot Nothing Then
            
            pr("批次数量") = DataTables("盘点记录").sqlCompute("sum(盘点数量)","盘点单号 = \'" & pr("盘点单号") & "\'")
            pr("批次金额") = DataTables("盘点记录").sqlCompute("sum(盘点金额)","盘点单号 = \'" & pr("盘点单号") & "\'")
            pr("批次款数") = DataTables("盘点记录").sqlCompute("count(物料名称)","盘点单号 = \'" & pr("盘点单号") & "\'")
            pr.save
        End If
End Select


2.把   pr06 = DataTables("盘点记录").SQLFind("物料编码 = \'" & e.DataRow("物料编码") & "\'and [_identify] <> " & e.DataRow("_identify"),"盘点日期 DESC")
改为: pr06 = DataTables("盘点记录").SQLFind("物料编码 = \'" & e.DataRow("物料编码") & "\'")可以赋值成功,但是没有盘点日期为最后判断


[此贴子已经被作者于2019/11/1 15:41:57编辑过]

--  作者:有点蓝
--  发布时间:2019/11/1 15:49:00
--  
pr06 = DataTables("盘点记录").SQLFind("物料编码 = \'" & e.DataRow("物料编码") & "\'","盘点日期 DESC")