This code, which works fine under VB3, may generate runtime error 3426–“Theaction was canceled by an associated object”–in the 16-bit versionof VB4:
Private Sub cmdUpdate_Click() ' Save contents of bound controls ' to underlying recordset datCtl.Recordset.UpdateEnd Sub
The problem seems to occur because the 16-bit version of VB4, unlikeVB3, does not perform an implicit Edit method when the Data control movesto a new record. The solution is to check the record set’s EditMode andperform an explicit Edit method if necessary:
Private Sub cmdUpdate_Click() If datCtl.Recordset.EditMode = dbEditNone Then datCtl.Recordset.Edit End If datCtl.Recordset.UpdateEnd Sub
Another workaround is to replace the Update method with the Data control’sUpdateRecord method, which is equivalent functionally to performing anEdit followed by an Update. The drawback is that UpdateRecord does notfire a Validate event, so don’t use it if you rely on that event to performdata validation.