PRB: Info Message Is Not Appended to ADO Errors Collection (231985)



The information in this article applies to:

  • ActiveX Data Objects (ADO) 2.0
  • ActiveX Data Objects (ADO) 2.1 SP2
  • ActiveX Data Objects (ADO) 2.5
  • ActiveX Data Objects (ADO) 2.6
  • ActiveX Data Objects (ADO) 2.7

This article was previously published under Q231985

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 that this is a problem in the Microsoft products that are listed at the beginning of this article.

MORE INFORMATION

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 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:
    Connection is established.

Modification Type:MinorLast Reviewed:3/14/2005
Keywords:kbBug kbDatabase kbDSupport kbprb KB231985