【问题标题】:VB6 Binding NULL value to Textbox with ADODB.RecordsetVB6 使用 ADODB.Recordset 将 NULL 值绑定到文本框
【发布时间】:2010-12-03 14:44:14
【问题描述】:

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

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

当文本框为空时,我希望将空值放入数据库,但我得到的是零和外键违规。有什么方法可以指定绑定,使empty == NULL?

【问题讨论】:

    标签: data-binding vb6 null adodb


    【解决方案1】:

    您可能想要检查数据库中的列:听起来它设置为 Not Null 并且默认值为 0,这就是为什么当您不输入任何内容时,会提交一个零。

    我不认为将绑定更改为 empty==Null 会有所帮助,因为您仍然会遇到外键违规 - 您的表有一个取决于输入的有效值的外键。

    您将不得不更改您的表(删除默认值和外键)——这可能不是最好的解决方案——或者更改你的表单字段——可能是一个组合或与相关的列表值外键表中的值。

    【讨论】:

    • 不,不幸的是,该字段是 NULLable 并且没有默认值。此外,NULL 值在外键字段上也没有问题。也许在某些数据库上不是这样,但在 MS SQL 和 Oracle 上肯定没问题。
    【解决方案2】:

    这里有一个解决方法:

    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
    

    结束子

    【讨论】:

      【解决方案3】:

      你也可以试试:

      YourADODBRecordset.Fields("MyIntColumnname").value = Null
      txtTextBox.Datachanged = False
      

      那么记录集将不会尝试更新绑定字段的值。

      【讨论】:

        猜你喜欢
        • 2017-04-07
        • 1970-01-01
        • 2011-09-15
        • 1970-01-01
        • 2022-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多