2013-07-29 39 views
-1

如何強制在綁定文本框中輸入的Date/Time值包含日期組件和時間組件(換句話說是一個完整的時間戳)?需要在MS Access文本框中的日期和時間

更新(澄清):列是用戶輸入的時間戳,因此缺少日期或缺失時就沒有意義。

+1

如果您使用當前的日期和時間,您可以禁用該字段並手動編寫'= Now()'。要麼是使用驗證規則。 – Grant

+0

文本框的控制源字段的數據類型是什麼? – HansUp

+0

@HansUp:日期/時間 – Steven

回答

2

如果你真的想這樣做,那麼你可以創建一個使用輸入掩碼,例如:當他們開始鍵入它會堅持所有數字被輸入一旦

00/00/0000\ 00:00:00;0;_ 

。然後仍然可以按Esc放棄字段編輯。

我不是輸入掩碼的狂熱粉絲,特別是對於日期,因爲它強制用戶使用他們可能不太舒服的格式。

如果您還使用Format屬性,使用Input Masks時要小心;如果它們不匹配,可能會很麻煩。

我還建議,如果您對此數據項有不同的表單,請始終使用相同的掩碼。

+0

+1我同意面具。如果沒有蒙版,我可以在日期/時間文本框中輸入'7-29-13 3p',並且Access可以正確識別它。面具不太靈活。 – HansUp

+0

輸入掩碼似乎是一個簡單的(但氣餒)的方式來執行一個完整的時間戳(日期和時間)。你能推薦任何替代品嗎? – Steven

+0

我認爲這是最好的解決方案。你可以使用事件'Change','KeyUp'等編寫一些複雜的代碼,但是如果你想堅持日期/時間的完整數據輸入,那麼使用輸入掩碼。 –

2

文本框綁定到日期/時間字段。日期/時間值總是包括日期和時間組件。如果用戶沒有提供日期組件,則日期將爲第0天(1899年12月30日)。如果用戶不提供時間組件,則時間將是午夜(00:00:00)。

如果1899年12月30日在您需要適應的日期值範圍之外,很容易要求用戶輸入一個(非零)日期。

查看此立即窗口會話是否有助於澄清情況。

? #07:00# 
7:00:00 AM 
? Format(#07:00#, "yyyy-m-d hh:nn:ss") 
1899-12-30 07:00:00 
? DateValue(#07:00#) = CDate(0) 
True 

您可以使用文本框的前更新事件檢查DateValue(Me.TextBoxName) = CDate(0)如果表達式是True,顯示通知用戶和Cancel更新。

對於時間要求...

? #2013-7-31# 
7/31/2013 
? Format(#2013-7-31#, "yyyy-m-d hh:nn:ss") 
2013-7-31 00:00:00 
? TimeValue(#2013-7-31#) = CDate(0) 
True 

的邏輯是類似的時間片,其中併發症午夜可能是可接受的時間值。如果是這樣,我沒有看到你如何區分用戶輸入午夜和午夜,因爲沒有輸入時間值。也許最好的選擇是要求用戶確認午夜時間。

相關問題