VB6使用ADODB.Recordset将NULL值绑定到Textbox

时间:2010-12-03 14:44:15

标签: data-binding vb6 null adodb

我不得不深入研究一个旧的VB6应用程序,而且我对这门语言没有很多经验。

现在我有一个控件绑定到ADODB.Recordset的表单。因此TextBox的“DataField”属性设置为“MyIntColumnName”。

当文本框留空时,我希望将null放入数据库,但是我得到零和外键违规。有没有办法指定绑定,以便空== NULL?

3 个答案:

答案 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

然后记录集不会尝试更新绑定字段中的值。