以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  表事件DataColChanging 问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=103416)

--  作者:Springamy
--  发布时间:2017/7/7 14:56:00
--  表事件DataColChanging 问题

问题如图: 1、审核之后库存减少,但是审核还是false状态,再次点击就报错,索引超出数组界限的错误

部分代码:

 s = "select * fr om 入库条码明细 where 条码 = \'" & tm & "\'"
    cmd.CommandText = s
    dt2 = cmd.ExecuteReader
    Dim dr As DataRow = dt2.DataRows(0)
    s = "select * fr om 出库条码明细 where 条码 = \'" & tm & "\'"
    cmd.CommandText = s
    dt = cmd.ExecuteReader
    s = "select * fr om 库存表 where 条码 = \'" & tm & "\'"
    cmd.CommandText = s
    dt1 = cmd.ExecuteReader
    rkrq = dt1.DataRows(0)("入库日期")
    If ckdd = "" OrElse cpx = "" OrElse cbs = "" OrElse kclx = "" OrElse cksx = "" OrElse cghth = "" OrElse tm = "" OrElse bom = "" OrElse sl <= 0 OrElse ckrq.year <= 2015 Then
        e.Cancel = True \'取消变动
        StatusBar.Message1= "关键信息不全,请核查!"
    End If
    If e.NewValue = True And e.DataRow("审核") = False Then  \'审核出库

        If dt1.DataRows.Count > 0 Then  \'库存中有此条码的数据
            cmd.CommandText = "delete 库存表  where 仓库地点 = \'" & ckdd & "\' and 产品线 = \'" & cpx & "\'and 库存类型 = \'" & kclx & "\' and 仓库属性 = \'" & cksx & "\' and 条码 = \'" & tm & "\' and BOM编码 = \'" & bom &  "\' and 产品型号 = \'" & cpxh &  "\' and 采购合同号 = \'" & cghth &  "\' and 入库日期 = \'" & rkrq & "\'"
            cmd.ExecuteReader
            StatusBar.Message1 = tm & "出库审核成功!库存减少"
            MessageBox.Show("出库审核成功!库存减少!")
            DataTables("出库录入_Table1").Save
        Else
            MessageBox.Show("库存1中无此条码,请重新输入")
        End If
    End If  \'
    If e.NewValue = False And e.DataRow("审核") = True Then  \'反审入库
        \' If r("单据类型") = "出库" Then
        If dt1.DataRows.Count <= 0 Then  \'库存中没有此条码的数据
            If dt.DataRows.Count > 0 Then  \'并且出库条码明细中有数据,才能插入数据到库存中
                cmd.CommandText = "insert into 库存表(id,仓库地点,产品线,库存类型,仓库属性,条码,BOM编码,产品型号,数量,采购合同号,入库日期) values (" & dr("rkid") &  ",\'"  & ckdd & "\',\'" & cpx &  "\',\'"  & kclx &  "\',\'"  & cksx &  "\',\'"  & tm &  "\',\'"  & bom &  "\',\'"  & cpxh &  "\'," & sl &  ",\'"  & cghth &  "\',\'"  & rkrq & "\')"
                cmd.ExecuteReader
                StatusBar.Message1 = tm & "反审成功!库存增加"
                MessageBox.Show("反审成功,库存增加!")
                DataTables("出库录入_Table1").Save
            Else \'库存中没有这条码并且明细中也没有
                MessageBox.Show("库存2,条码都没有此条码,请核对")
            End If
        End If
    End If
End If


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2017/7/7 15:00:00
--  

报错,查询到的表没有数据,你直接引用,就会报错

 

Dim dr As DataRow = dt2.DataRows(0)

 

你要加入判断

 

If dt2.DataRows.Count > 0 Then

 

End If

[此贴子已经被作者于2017/7/7 15:00:13编辑过]

--  作者:有点甜
--  发布时间:2017/7/7 15:03:00
--  

 审核状态的问题,你去掉多余代码,单独测试看看。

 

 不行,就做个例子发上来测试


--  作者:Springamy
--  发布时间:2017/7/7 15:11:00
--  例子
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试1.rar


--  作者:有点甜
--  发布时间:2017/7/7 15:16:00
--  
 数据发上来,无法连接测试。
--  作者:Springamy
--  发布时间:2017/7/7 15:27:00
--  

暂时先不用,谢谢阿,貌似应该是找到问题了

我插入数据的时候用了库存表的入库日期,审核之后库存是delete了的是吧?

所以这个入库日期应该是没有了的吧,是这样的吧???

我再测试测试,有问题再发过来给你


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2017/7/7 15:29:00
--  

查询后,都应该加上判断,不能直接用

 

If dt1.DataRows.Count > 0 Then

 

End If