PRB: Info Message Not Appended to ADO Errors Collection

ID: Q231985


The information in this article applies to:


SYMPTOMS

The InfoMessage event of the connection object in ActiveX Data Objects (ADO) fires only when there is at least one Informational Message that resulted while establishing a connection to a database server. When opening an Asynchronous ADO connection, even if an InfoMessage event fires, no errors are appended to the Errors collection. In other words, the Errors collection is empty although there are one or more Info messages. If you open a synchronous connection, all Info Messages are appended to the Errors collection.


STATUS

Microsoft has confirmed this to be a problem in the Microsoft products listed at the beginning of this article.


MORE INFORMATION

ADO versions prior to 2.0 did not support events. In ADO 2.0, Connection and Recordset objects have events associated with them. While establishing a connection to most database servers the ODBC driver returns one or more Informational messages. These messages generally have a lower error severity level (usually below 10).

The following sample code establishes a connection to SQL Server, Synchronously and Asynchronously, using Visual Basic code. The Errors collection shows two Info Messages for Synchronous connection while it shows none for an Asynchronous connection.

Steps to Reproduce Behavior

  1. Start standard project in Visual Basic 6.0.


  2. Add a reference to the Microsoft ActiveX Data Objects 2.0 Library.


  3. Add one command button to the default form.


  4. Paste the following code in the form:
    
    
       Option Explicit
    
         Dim WithEvents Cn As ADODB.Connection
    
          Private Sub Cn_InfoMessage(ByVal pError As ADODB.Error, _
                                     adStatus As ADODB.EventStatusEnum, _
                                     ByVal pConnection As ADODB.Connection)
    
             If pConnection.Errors.Count > 0 Then
                For Each pError In pConnection.Errors
                   MsgBox pError.Description
                Next
             Else
                MsgBox "The error collection is empty"
             End If
    
          End Sub
    
          Private Sub Command1_Click()
    
             Dim CnStr As String
             Dim i As Integer
    
             Set Cn = New ADODB.Connection
    
             CnStr = "Driver={SQL Server};Server=<ServerName>;" & _
                      "UID=<UserName>;PWD=<UserPassword>"
    
             Cn.Open CnStr   ', , , adAsyncConnect
    
             For i = 1 To 100
                DoEvents
             Next
    
             MsgBox "Connection is established"
    
          End Sub
    
     


  5. Modify the connection string to match your server settings.


  6. Run the project. Note that the informational messages display in a message box followed by a "Connection is established" message.


  7. Uncomment the commented section of the Cn.Open line.


  8. Run the project again and note that the following error occurs:
    The error collection is empty.


(c) Microsoft Corporation 1999, All Rights Reserved. Contributions by Hussain Abuthuraya, Microsoft Corporation.

Additional query words: kbADO200bug kbADO200


Keywords          : kbdta kbADO200 kbADO200bug 
Version           : WINDOWS:2.0
Platform          : WINDOWS 
Issue type        : kbprb 

Last Reviewed: May 21, 1999