PRB: Info Message Not Appended to ADO Errors Collection

ID: Q193865


The information in this article applies to:
  • ActiveX Data Objects (ADO), versions 2.0, 2.1 SP2


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 is researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.


MORE INFORMATION

ADO versions prior to 2.0 did not support events. Starting with 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:


  5. Option Explicit
        
         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
     
  6. Modify the connection string to match your server settings.


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


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


  9. Run the project again and note that the following error occurs:


  10. The error collection is empty.
(c) Microsoft Corporation 1999, All Rights Reserved. Contributions by Hussain Abuthuraya, Microsoft Corporation.

Additional query words:

Keywords : kbdta kbADO200 kbADO200bug kbADO210bug kbDatabase kbGrpVBDB kbGrpMDAC kbDSupport kbADO210sp2
Version : WINDOWS:2.0,2.1 SP2
Platform : WINDOWS
Issue type : kbprb


Last Reviewed: November 13, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.