2014-09-25 84 views
1

在舊的VB6程序中,我有一個與表單上的文本控件相關的數據控件。一些表字段是JET數據庫中的日期時間字段。使用VB6重置DAO日期時間字段爲空

對於日期時間字段沒有默認值,所以當第一次顯示在窗體上時,它們顯示爲空白。當它們最終被設置時,文本字符串被驗證爲日期並且數據控件適時地更新記錄。

如果用戶想要清除日期(例如,對先前數據輸入的校正),他們只需將空白空白。保存沒有發生錯誤,但受影響的日期時間字段未更新。當再次查看記錄時,最後輸入的日期是可見的。

通過檢查文本控件的DataChanged屬性,我可以看到日期值已更改爲空白(= cNullString)。

因此,我假設記錄的最終保存會忽略cNullString,因爲它認爲它對於日期時間字段無效。

當我的用戶輸入空白時,如何強制日期時間字段變成空白,以便下次查看時它會再次變爲空白?

+0

嘗試輸入0.日期通常自日期起以單位存儲。在Windows中,整數是天數,分數是從(1/1/1601 ??)開始的一天中的時間。 – Noodles 2014-09-25 19:13:59

+0

如果我這樣做,我實際上會輸入日期,當用戶再次查看記錄時,他們會看到第0天的日期。我希望他們看到空白。我也試圖避免轉換,例如檢測第0天並將該字段留空,然後在保存之前恢復0。 – 2014-09-26 14:56:58

回答

1

務必通過IDE將TextBox.DataFormat設置爲「日期」或特定的日期格式。然後底層的StdDataFormat對象應該有它的NullValue屬性=「」,它就會生效。

由於文檔說:

忽略當類型屬性設置爲fmtGeneral。每次獲取空字段時,都會讀取NullValue屬性。

我不確定這可以在代碼中完全設置。當IDE在設計時設置你的屬性設置爲(美國英語語言環境在這裏):

BeginProperty DataFormat 
    Type   = 1 
    Format   = "M/d/yyyy" 
    HaveTrueFalseNull= 0 
    FirstDayOfWeek = 0 
    FirstWeekOfYear = 0 
    LCID   = 1033 
    SubFormatType = 3 
    EndProperty 

然而SubFormatType似乎是鑰匙,這個屬性似乎並沒有被曝光的改變運行。

注意

測試對ADO數據控件,而不是老年人DAO版本。然而,這些綁定屬性超越了ADO-DAO的差別,所以這應該是適用的。

+0

我從來沒有使用DataFormat,但在研究此問題時進行了實驗。當我嘗試設置它時,VB會說:「DataFormat屬性不支持這個DataSource,有問題的數據源是一個標準的VB數據控件,我認爲我是一個版本(Access 97,而不是Access 2000),儘管如此,你的提示是非常好的信息,謝謝 – 2014-09-27 03:44:25

+0

好吧,它可能是一個DAO問題,或者是Jet 3.x的問題,我猜想,對不起,你不能使用它,它完全按照你的要求ADO數據控件和Jet 4.0數據庫。 – Bob77 2014-09-27 15:57:24

相關問題