2010-06-10 13 views
2

Lorsqu'un lot SQL renvoie plus d'un message, par ex. instructions d'impression, alors je ne peux récupérer le premier en utilisant la collection Errors de la connexion ADO. Comment puis-je obtenir le reste des messages?Comment récupérer toutes les erreurs et les messages d'une requête à l'aide d'ADO

Si je lance ce script:

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 

Puis-je obtenir que "Foo" retour, jamais "Bar" ou "xyz".

Existe-t-il un moyen d'obtenir les messages restants?

Répondre

6

Je l'ai compris par moi-même.

Cela fonctionne:

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

Je sais que je relance un fil mort depuis longtemps, mais cela a été très utile pour moi. J'ai dû mettre à jour un VbScript hérité mal écrit qui alimente des données dans une base de données SQL, et même si je piégeais l'objet 'Err', je n'ai jamais vu d'erreurs. On dirait que je vais devoir ajouter ce genre de vérification d'erreur à mes commandes SQL. Merci! –