以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]这段代码问题出在哪里!  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=25772)

--  作者:hiliqi
--  发布时间:2012/11/16 11:09:00
--  [求助]这段代码问题出在哪里!
这段代码可以正执行,但是运行的同时会报一个错!这是出错的截图
图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看
以下是代码:
If MessageBox.Show("确认下达吗","确认",MessageBoxButtons.OKCancel,messageboxicon.question) = DialogResult.OK Then
    Dim dr As DataRow \'引用新表中要增加的行
    Dim dr2 As DataRow \'遍历该表中的所有行并找到符合条件的行
    
    For Each dr2 In DataTables("生产计划单").DataRows()
        If dr2 IsNot Nothing
            If dr2.IsNull("标签需求量") = True Or dr2.IsNull("筒子需求量") = True Or dr2.IsNull("纸箱需求量") = True Then  \'如果有一列为空则重新循环
                Continue For
            Else
                Dim dr3 As DataRow = DataTables("生产计划单").Find("产品名称 = \'" & dr2("产品名称") & "\'","序号 desc") \'找到与dr2的产品名称相同的所有行,取序号最大的那一行
                
                dr = DataTables("物料需求单").AddNew() \'往新表中增加一行
                dr("物料名称") = dr3("所需筒子")       \'往新表中写入该列数据
                dr("需求数量") = dr3("筒子需求量")
                dr("下单时间") = Date.Today            \'写入当前日期
                
                dr = DataTables("物料需求单").AddNew() \'往新表中增加一行
                dr("物料名称") = dr3("所需标签")       \'往新表中写入该列数据
                dr("需求数量") = dr3("标签需求量")
                dr("下单时间") = Date.Today            \'写入当前日期
                
                dr = DataTables("物料需求单").AddNew() \'往新表中增加一行
                dr("物料名称") = dr3("所需纸箱")
                dr("需求数量") = dr3("纸箱需求量")     \'往新表中写入该列数据
                dr("下单时间") = Date.Today            \'写入当前日期
                DataTables("生产计划单").DeleteFor("产品名称 = \'" & dr3("产品名称") & "\'") \'避免重复向新表写入数据
            End If
        End If
    Next
    DataTables("生产计划单").DeleteFor("")
End If

--  作者:hiliqi
--  发布时间:2012/11/16 11:18:00
--  
有没有高人帮忙看看啊
--  作者:mr725
--  发布时间:2012/11/16 11:43:00
--  

可以先在 生产计划单 作个标记,到时一次删除这些有标记的行。

不要在for each   ···· next  中删除行。

[此贴子已经被作者于2012-11-16 11:43:44编辑过]