PRB: "Data Type Conversion Error" When Using a Data Control (172101)
The information in this article applies to:
- Microsoft Visual Basic Professional Edition for Windows 5.0
- Microsoft Visual Basic Professional Edition for Windows 6.0
- Microsoft Visual Basic Enterprise Edition for Windows 5.0
- Microsoft Visual Basic Enterprise Edition for Windows 6.0
- Microsoft Visual Basic Standard Edition, 32-bit, for Windows 4.0
- Microsoft Visual Basic Professional Edition, 32-bit, for Windows 4.0
- Microsoft Visual Basic Enterprise Edition, 32-bit, for Windows 4.0
This article was previously published under Q172101 SYMPTOMS
Deleting the data from a text box bound to certain data types, such as an
integer or date, causes Error 3421:
"Data Type Conversion Error."
NOTE: If you are using a dbGrid, it's Error Method will produce Error 16389.
CAUSE
This is designed behavior of DAO. The data control is sending a NULL string
to DAO and DAO attempts to coerce it to a number and fails. This is not a
problem with the Data Control: The same behavior can be observed without
the use of a Data Control, using only code. For example:
Set db = OpenDatabase("nwind.mdb", False, False)
Set rs = db.OpenRecordset("select shipvia from orders", dbOpenDynaset)
rs.Edit
rs(0) = ""
RESOLUTION
Use the following code in the Data Controls Validate method to allow the
edit to occur as expected by user:
Private Sub Data1_Validate(Action As Integer, Save As Integer)
If Text1.DataChanged Then
Text1.DataChanged = False 'So this data is not saved
Data1.UpdateRecord ' This saves the data that
' may have changed in the other controls
' Now clear the numeric field
Data1.Recordset.Edit
Data1.Recordset![Year Born] = Null
Data1.Recordset.Update
End If
End Sub
STATUS
This behavior is by design.
Modification Type: | Major | Last Reviewed: | 6/28/2004 |
---|
Keywords: | kbprb KB172101 |
---|
|