2010-06-10 1 views
2

Когда пакет SQL возвращает более одного сообщения, например. print, то я могу получить только первый, используя коллекцию ошибок Errors ADO. Как получить остальные сообщения?Как получить все ошибки и сообщения из запроса с использованием ADO

Если я запускаю этот скрипт:

Option Explicit 
Dim conn 
Set conn = CreateObject("ADODB.Connection") 
conn.Provider = "SQLOLEDB" 
conn.ConnectionString = "Data Source=(local);Integrated Security=SSPI;Initial Catalog=Master" 
conn.Open 

conn.Execute("print 'Foo'" & vbCrLf & "print 'Bar'" & vbCrLf & "raiserror ('xyz', 10, 127)") 

Dim error 
For Each error in conn.Errors 
    MsgBox error.Description 
Next 

Тогда я только получить "Foo" назад, никогда не "Bar" или "АБВ".

Есть ли способ получить оставшиеся сообщения?

ответ

6

Я понял это самостоятельно.

Это работает:

Option Explicit 
Dim conn 
Set conn = CreateObject("ADODB.Connection") 
conn.Provider = "SQLOLEDB" 
conn.ConnectionString = "Data Source=(local);Integrated Security=SSPI;Initial Catalog=Master" 
conn.Open 

Dim rs 
Set rs = conn.Execute("print 'Foo'" & vbCrLf & "print 'Bar'" & vbCrLf & "raiserror ('xyz', 10, 127)") 

Dim error 
While not (rs is nothing) 
    For Each error in conn.Errors 
     MsgBox error.Description 
    Next 
    Set rs = rs.NextRecordSet 
Wend 
+1

Я знаю, возрождая давно мертв нить, но это было очень полезно для меня. Мне пришлось обновить плохо написанный унаследованный VbScript, который передает данные в базу данных SQL, и даже если я захватил объект «Err», я никогда не видел никаких ошибок. Похоже, мне придется добавить такую ​​проверку ошибок в мои SQL-команды. Благодаря! –