FIX: Error Messages "Change Canceled During Notification..." (MDAC 2.1) or "Operation Was Canceled" (MDAC 2.5) (249350)



The information in this article applies to:

  • ActiveX Data Objects (ADO) 2.1
  • ActiveX Data Objects (ADO) 2.1 SP1
  • ActiveX Data Objects (ADO) 2.1 SP2
  • ActiveX Data Objects (ADO) 2.5
  • Microsoft OLE DB Provider for Jet 3.51
  • Microsoft OLE DB Provider for Jet 4.0
  • Microsoft Visual Basic Professional Edition for Windows 6.0
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0

This article was previously published under Q249350

SYMPTOMS

The following error messages occur:
Change canceled during notification, no columns changed (MDAC 2.1)

-or-

Run-time error '-2147217842(80040e4e) Operation was canceled (MDAC 2.5 and later)
This problem occurs with the Jet Provider and does not occur with the SQL Server Provider. The problem also does not reproduce with client-side cursors.

The problem doesn't seem to be in the ADODC itself, because you can bind the controls directly to a Recordset object and click on a MoveNext command button to cause the problem.

RESOLUTION

The resolution is to issue a Recordset.Move 0 method in one of the events in the TextBox control.

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article. This bug was corrected in the latest service pack for Visual Studio 6.0.

For additional information about Visual Studio service packs, click the following article numbers to view the articles in the Microsoft Knowledge Base:

194022 INFO: Visual Studio 6.0 Service Packs, What, Where, Why

194295 How to tell that a Visual Studio service pack is installed

To download the latest Visual Studio service pack, visit the following Microsoft Web site:

MORE INFORMATION

Steps to Reproduce Behavior

  1. Create a new project and add the ADO Data control and the DataGrid (OLE DB) control to the components.
  2. Add a TextBox, a DataGrid, a CommandButton, and an ADO Data control to the form.
  3. Set the connection string on the ADO Data control to use the JET 4.0 OLEDB provider and then choose the Northwind database.
  4. Add the following code to the project:
        Dim rs As ADODB.Recordset
    Private Sub Form_Load()
    
        Set rs = New ADODB.Recordset
        rs.CursorLocation = adUseServer
        rs.ActiveConnection = Adodc1.ConnectionString
        rs.Properties("IRowsetIdentity") = True
        rs.Open "SELECT * FROM Customers", _
                , adOpenKeyset, adLockOptimistic, adCmdText
        Set Adodc1.Recordset = rs
        Set DataGrid1.DataSource = Adodc1
        Text1.DataField = "CompanyName"
        Set Text1.DataSource = Adodc1
    End Sub
    Private Sub Command1_Click()
    rs.MoveNext
    
    End Sub
    					
  5. Run the program.
  6. In the Grid, select an entire row about four lines down. Be sure to click on the Button column on the left so that you select the entire row.
  7. Edit the text in the TextBox (not in the Grid).
  8. In the Grid, select another entire row about four more lines down.
  9. Edit the text in the TextBox.
  10. Click on the Move Next button, and note that you get the error messages listed in the "Symptoms" section of this article.

Modification Type:MinorLast Reviewed:12/22/2003
Keywords:kbBug kbDatabase kbfix kbJET kbMDACNoSweep kbVS600sp4fix kbVS600sp5fix KB249350