BUG: RecordsetChangeComplete Does Not Fire on Recordset.Open

ID: Q192645


The information in this article applies to:
  • ActiveX Data Objects (ADO), versions 2.0, 2.1 SP2
  • Microsoft Visual Basic Enterprise Edition for Windows, versions 5.0, 6.0


SYMPTOMS

The RecordsetChangeComplete event of an ADO Recordset does not fire on the Recordset.Open event.


RESOLUTION

You can issue a Recordset.MoveFirst immediately after the Recordset.Open as a workaround, which causes the RecordsetChangeComplete event to fire.


STATUS

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


MORE INFORMATION

Steps to Reproduce Behavior

  1. Open a Standard .exe project.


  2. From the Projects menu, choose Components, and then select the Microsoft ActiveX Data Objects Library.


  3. Remove Form1 from the project.


  4. Insert a module (.bas) with the following code:


  5. 
          Sub main()
          Dim myADOEvents As New ADOEvents
          Dim cn As New ADODB.Connection
          Dim rs As New ADODB.Recordset
          Set myADOEvents.rsEvent = rs
    
          cn.Provider = "sqloledb"
          cn.Open "Data Source=zjason2;Initial Catalog=pubs;", "sa", ""
    
          'rs.open does not fire the RecordsetChangeComplete which it should.
          rs.Open "Select * from authors", cn, adOpenForwardOnly, _
          adLockReadOnly
          'rs.MoveFirst 'if you uncomment this line than the
          'RecordsetChangeEvent.
          DoEvents
          Stop
          'Does fire the RecordsetChangeEvent, which is expected.
          rs.Close
          DoEvents
          End Sub 
  6. Insert a class module and name it ADOEvents in the Name property.


  7. Paste the following code in this ADOEvents class module:


  8. 
          Public WithEvents rsEvent As ADODB.Recordset
    
          Private Sub rsEvent_RecordsetChangeComplete(ByVal adReason As
          ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As
          ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
          Debug.Print "RecordsetChangeComplete"
          End Sub 
  9. Run the project.


Additional query words:

Keywords : kbADO200 kbADO200bug kbDatabase kbVBp500 kbVBp600 kbGrpVBDB kbGrpMDAC kbDSupport kbADO210sp2 kbADO210sp2bug kbMDAC210SP2bug
Version : WINDOWS:2.0,2.1 SP2,5.0,6.0
Platform : WINDOWS
Issue type : kbbug


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