2017-10-05 115 views
0

使用VBScript成功执行sql语句时需要捕获sql消息。这是我的代码。使用VBScript在成功执行sql语句时需要捕获sql消息使用VBScript在成功执行sql语句时返回数据库消息

Public Function ExecuteAPI_String(sql_Statement) 
Dim num 
On Error Resume Next 
Set objRecordSet = objConnection.Execute sql_Statement,num,adExecuteNoRecords 
If Err.Number <> 0 Then 
    ExecuteSQLStatement_String = Err.description 
    objRecordSet.Close 
    Err.Clear 
Else 
    ExecuteAPI_String = num & "records were affected" 
    objRecordSet.Close 
End If 
+0

如果您发布从“ExecuteSQLStatement_String”或“ExecuteAPI_String”收到的结果消息,会有帮助。 – Lankymart

回答

0

这里的问题是使用On Error Resume Next,因为这将导致跳过错误的陈述,并设置Err对象。如果你注释掉On Error Resume Next,你会看到实际的错误,这与你的SQL查询的执行无关,

Set objRecordSet = objConnection.Execute sql_Statement,num,adExecuteNoRecords 

不是一个有效的声明,因为方法需要用括号括起来;

Set objRecordSet = objConnection.Execute(sql_Statement, num, adExecuteNoRecords) 

你还需要确保所有你传递给Execute()方法的值是有效(如adExecuteNoRecords被正确定义)

一旦你确定该行正确执行,那么你可以取消注释On Error Resume Next

+0

谢谢@Lankymart。我尝试这样做:和我得到所需要的错误对象 '昏暗NUM Err.Clear 集objRecordSet = connStr.Execute(Sql_Statement,NUM,ADODB.ExecuteOptionEnum.adExecuteNoRecords) 如果Err.Number的<> 0,则 ExecuteSQLStatement_String = Err.Description Err.Clear 否则如果ISNULL(objRecordSet)或objRecordSet.EOF =真,那么ExecuteSQLStatement_String = NULL 否则ExecuteSQLStatement_String = objRecordSet.Fields(colname的)。价值 结束如果 结束如果 objRecordSet.Close 对错误转到0 ' – user2329418

+0

抱歉无法正确格式化上面的代码。 – user2329418