Fix For Data Control Error 3426

Fix For Data Control Error 3426

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.


Share the Post: