2009-10-14 129 views
2

我有一個表單,用戶在特定日期輸入測試運行的信息。這將創建一個表格,然後根據日期和ID與另一個表格鏈接。在另一個表格(由其他人創建的表格填充)中,所有時間都是上午7:00。無論誰爲那張桌子創造了形式,都做了我現在要問的東西;因爲日期必須完全匹配才能使表加入,所以我也需要這樣做。我想這樣做的方式是在我的表單中有兩個字段。一個用於日期(mm/dd/yyyy),另一個用於時間(##:##:## xM),我希望用戶可以不編程時間字段。這樣用戶知道他/她不能編輯時間。到目前爲止,我知道如何通過輸入掩碼等來完成所有這些。但是,我不知道如何將這兩個字段添加到一起,然後將其存儲在表中。幫幫我?ms訪問日期和時間。時間必須是上午7:00,用戶不得編輯時間

+0

如果你想讓所有的日期字段有相同的時間,那麼你根本不需要存儲時間部分。只需存儲Date()部分(即整數值)。如果您使用Now()填充字段,則將其更改爲Date()。問題是,如果所有字段都有相同的時間,則根本不需要存儲它。 – 2009-10-15 03:44:58

+0

...但不格式化以添加驗證規則或CHECK約束來強制執行規則以確保問題不再發生。 – onedaywhen 2009-10-15 13:26:33

+0

我確實需要存儲它。還有另外一張桌子,我內心的加入這張桌子的日期。在另一張表中,日期已經存儲了日期和時間,並且所有時間都是上午7點。這很愚蠢,我知道,但我沒有寫舊的表格代碼,我不能改變它。我只需要忍受它。 – Matt 2009-10-15 13:45:03

回答

0

看起來您的表單記錄源中只有一個日期/時間字段,並且您希望在一個表單控件中顯示日期部分,而在另一個控件中顯示時間部分。時間部分應該始終是早上7點。

添加兩個文本框控件(txtDatetxtTime)到您的形式都使用相同的日期/時間字段作爲其控制源。將Format財產txtDate改爲短日期。將txtTime的Format屬性設置爲中等時間。此外,在txtTime的「數據」選項卡上,將「啓用」設置爲「否」並將其鎖定爲「是」。

然後,在txtDate的後更新事件,你可以使用:

Private Sub txtDate_AfterUpdate() 
    Me.txtDate.Value = DateValue(Me.txtDate.Value) + #7 AM# 
End Sub 

如果您需要按摩你的表中的現有值,你可以使用UPDATE查詢:

UPDATE YourTable SET YourDateField = DateValue(YourDateField) + #07:00# 
WHERE YourDateField IS NOT NULL; 
+0

完美!謝謝。 – Matt 2009-10-14 15:47:41

+0

+1。很好的答案。 – 2009-10-15 13:48:12

1

我會寫一個更新以將所有現有時間設置爲午夜(即00:00:00),然後更改表單以便將日期截斷爲午夜。添加驗證規則或CHECK約束以確保值不能是午夜以外的任何值。然後,如果您使用的是用戶級安全性,請查看錶權限以確保用戶無法刪除驗證規則或約束條件。

1

用戶一個日期時間選擇器控件 - 讓用戶選擇日期部分。時間部分位於另一個控件中 - 標籤或鎖定文本框。

當你寫你的SQL更新/插入到你的表,你可以簡單地一起在SQL語句中添加這兩個控制值,如圖

Declare MyDateTimeValue as String 
'This creates value of MM/DD/YYYY 
MyDateTimeValue = MyDateTimePickerControl.Value 

'This adds a blankspace and HH:MM:SS to become "MM/DD/YYYY HH:MM:SS" 
MyDateTimeValue = MyDateTimeValue + ' ' + MyTimeLabelControl.Value 

使用可變MyDateTimevalue作爲

DoCmd.ExecuteSQL ('Insert Into MyTable (Col1, DateTimeColumn) Values (1, #' & MyDatetimeValue & '#') 
相關問題