我不得不深入研究一个旧的VB6应用程序,而且我对这门语言没有很多经验。
现在我有一个控件绑定到ADODB.Recordset的表单。因此TextBox的“DataField”属性设置为“MyIntColumnName”。
当文本框留空时,我希望将null放入数据库,但是我得到零和外键违规。有没有办法指定绑定,以便空== NULL?
答案 0 :(得分:2)
您可能想要检查数据库中的列:听起来它设置为Not Null且默认值为0,这就是为什么当您不输入任何内容时,会提交零。
我不认为更改绑定,以便空= = Null将有所帮助,因为您仍然会遇到外键违规 - 您的表有一个取决于输入的有效值的外键。
您将不得不更改您的表(删除默认和外键) - 这可能不是最佳解决方案 - 或更改您的表单字段 - 可能更改为与之相关的组合或列表值来自外键表的值。
答案 1 :(得分:0)
这是一种解决方法:
Private Sub txtDataField_Change
Dim cDataField As String
Dim rsTmp as ADODB.Recordset
If txtDataField.Text = "" And Not txtDataField.DataSource Is Nothing Then
cDataField = txtDataField.DataField
txtDataField.DataField = ""
set rsTmp = txtDataField.DataSource
rsTmp.Fields(cDataField).Value = Null
set rsTmp = Nothing
txtDataField.DataField = cDataField
End If
End Sub
答案 2 :(得分:0)
您也可以尝试:
YourADODBRecordset.Fields("MyIntColumnname").value = Null
txtTextBox.Datachanged = False
然后记录集不会尝试更新绑定字段中的值。