On循环内发生错误时,Error语句不起作用

时间:2011-12-27 14:11:02

标签: vb6 error-handling

这可能是个错误吗?或者我在这里想念smt?

Do While Not somevalue= ""

sorgu = "INSERT INTO somedb VALUES('" & somevalue & "')"
On Error GoTo est
rs.Open sorgu, cnn

j = j + 1

est: Loop

我得到了唯一的密钥错误,但我不想被提示,只想恢复下一行。

发生此错误时

On Error无效。

我必须使用Do While Loop才能将其更改为错误。

如何避免被提示输入错误以及为什么On Error语句此时无效。

1 个答案:

答案 0 :(得分:3)

您的示例有几个问题,但要回答您的问题,请将错误处理程序更改为 On Error Resume Next 或添加实际的错误处理程序,检查那里的err.Number并确定操作采取。

    Do While Not somevalue= ""

        sorgu = "INSERT INTO somedb VALUES('" & somevalue & "')"
        On Error GoTo est
        rs.Open sorgu, cnn

        j = j + 1

    Loop

est:
    'some error handling code

我还建议将GoTo语句移到Do语句之前。正如您所拥有的那样,每次循环执行时都会不必要地分配On Error重定向。

    On Error GoTo est
    Do While Not somevalue= ""

        sorgu = "INSERT INTO somedb VALUES('" & somevalue & "')"
        rs.Open sorgu, cnn

        j = j + 1

    Loop

est:
    If err.Number = (unique key error)
        Resume Next
    Else
        MsgBox "An error occurred while inserting records. Error " & CStr(Err.Number) & ", " & Err.Description