PRB: ADODC Error on Reposition When EOFAction is adDoAddNewID: Q190642
|
When you move past EOF, a new blank record is displayed and the ADO Data
Control's EOFAction property is set to 2-adDoAddNew. If you do not enter
data for the new record and move off the record, you get the error message:
"Cannot insert an empty row - must have at least one column value set".
ADO does an implicit update on a Move in a recordset. When the ADO Data
Control's EOFAction property is set to 2-adDoAddNew, ADO adds a new record
and allows the user to edit the record in bound controls. When the user
moves off of the newly-created record, ADO does a recordset Update. If the
user has decided not to add a record, leaves the bound controls blank, and
moves off the newly-created record, the attempted update causes ADO to
display the message, "Cannot insert an empty row - must have at least one
column value set".
The ADO Data Control's EOFAction - adDoAddNew behavior is different than
the DAO Data Control's EOFAction - Add New behavior and the Remote Data
Control's EOFAction - rdAddNew behavior. You will not get a message if you
move off of a newly-added record when using the Data Control or the Remote
Data Control.
You can work around this behavior by adding error handling code in the
ADO Data Control's Error event procedure. Here is an example of code to
handle this specific error, which is error number 16389:
Private Sub Adodc1_Error(ByVal ErrorNumber As Long, _
Description As String, ByVal Scode As Long, _
ByVal Source As String, ByVal HelpFile As String, _
ByVal HelpContext As Long, fCancelDisplay As Boolean)
If ErrorNumber = 16389 Then
If Adodc1.Recordset.State = ADODB.adStateOpen Then
Adodc1.Recordset.CancelUpdate
Adodc1.Recordset.MoveLast
fCancelDisplay = True
End If
End If
End Sub
This behavior is by design.
Provider=Microsoft.Jet.OLEDB.3.51;Data Source=C:\Program
Files\Microsoft Visual Studio\VB98\Biblio.mdb
Click the Message box's OK button."Cannot insert an empty row - must have at least one column value set".
If ErrorNumber = 16389 Then
If Adodc1.Recordset.State = ADODB.adStateOpen Then
Adodc1.Recordset.CancelUpdate
Adodc1.Recordset.MoveLast
fCancelDisplay = True
End If
End If
In Visual Basic, select Help, Search... and enter "ADO Data Control".
On the form containing your ADO Data Control, select the control, then
press the F1 key.
Additional query words: kbADO150 kbADO200 kbDSupport kbdse kbvbp600
Keywords :
Version :
Platform : WINDOWS
Issue type : kbprb
Last Reviewed: June 17, 1999