2010-12-03 89 views
1

我不得不深入到一箇舊的VB6應用程序,並且我對這種語言沒有太多的經驗。VB6將NULL值綁定到帶有ADODB.Recordset的文本框

現在我已經有了一個窗體,控件綁定到ADODB.Recordset。所以TextBox的「DataField」屬性設置爲「MyIntColumnName」。

當文本框留空時,我期望一個null被放入數據庫,但相反,我得到零和外鍵違規。有什麼方法可以指定綁定,使空== NULL?

回答

2

您可能想要檢查數據庫中的列:它聽起來像是設置爲空和默認值爲0,這就是爲什麼當您不輸入任何內容時,會提交一個零。

我不認爲更改綁定,以便空==空將有所幫助,因爲你仍然會得到一個外鍵違例 - 你的表有一個外鍵取決於輸入的有效值。

你將不得不改變你的表格(刪除默認和外鍵) - 這可能不是最好的解決方案 - 或者改變你的表單字段 - 可能是一個組合或列表值相關聯來自外鍵表的值。

+0

不,不幸的是,該字段是無效的,並且沒有默認值。此外,NULL值在外鍵字段上沒有問題。也許在某些數據庫中情況並非如此,但在MS SQL和Oracle上確實沒問題。 – Clyde 2010-12-09 17:55:47

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 

末次

0

您也可以嘗試:

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

然後記錄將不會嘗試更新從綁定字段的值。