错误恢复时,下一步不会捕获vbscript中的SQL server错误

错误恢复时,下一步不会捕获vbscript中的SQL server错误,vbscript,qtp,Vbscript,Qtp,我有一段vbscript代码,正在QTP中运行 objRecordSet.Open "select regn_code from region where regn_code ='" & rCode & "'",objConnection On Error Resume Next If Err.Number <> 0 Then Reporter.ReportEvent micFail,"Error in " &

我有一段vbscript代码,正在QTP中运行

objRecordSet.Open "select regn_code from region where regn_code  ='" & rCode & "'",objConnection 
    On Error Resume Next
     If Err.Number <> 0  Then
             Reporter.ReportEvent micFail,"Error in " & module,"" & ErrObject.Description
         End If

     On error goto 0
objRecordSet.Open“从regn_code='”的区域中选择regn_代码(&rCode&“”,objConnection
出错时继续下一步
如果错误号为0,则
Reporter.ReportEvent micFail,“模块和错误对象中的错误”说明
如果结束
错误转到0
rCode是数据库中的一个数值。当rCode值在QTP中作为varchar提供时,例如“er”,SQL server会向我抛出一个错误 无效的列名“er”,它停止我的QTP AUT


我想知道为什么“下一步继续出错”无法处理此错误。任何建议都会有帮助。作为一种解决方法,如果rCode是非数字的,我只是尝试跳过此sql查询。

在我看来,您的“解决方法”——如果没有合适的参数,则不执行sql——是正确的解决方案

如果要禁用.Open行的正常错误捕获,则必须先执行OERN:

On Error Resume Next
objRecordSet.Open "select regn_code from region where regn_code  ='" & rCode & "'",objConnection 
...

在我看来,您的“变通方法”——如果没有合适的参数就不执行SQL——是正确的解决方案

如果要禁用.Open行的正常错误捕获,则必须先执行OERN:

On Error Resume Next
objRecordSet.Open "select regn_code from region where regn_code  ='" & rCode & "'",objConnection 
...

那没有道理。在字符串比较(
regn_code='…')中使用时,
rCode
怎么可能是一个数值?此外,强烈反对通过连接构建SQL查询。用a代替。@Ansgar Wiechers对不起Ansgar,我想写的是它给出了错误-当提供的值为“er”时,无法将varchar转换为numeric,但如果提供的值为“1”,则可以工作。这可能是因为DBMS隐式地将带有数值的字符串从varchar转换为numeric。如果你需要比较数值,不要把它们放在引号之间。那没有意义。在字符串比较(
regn_code='…')中使用时,
rCode
怎么可能是一个数值?此外,强烈反对通过连接构建SQL查询。用a代替。@Ansgar Wiechers对不起Ansgar,我想写的是它给出了错误-当提供的值为“er”时,无法将varchar转换为numeric,但如果提供的值为“1”,则可以工作。这可能是因为DBMS隐式地将带有数值的字符串从varchar转换为numeric。如果需要比较数值,不要将它们放在引号之间。