2014-09-25 34 views
2

我有一個綁定到查詢(只是從表中選擇)的表單。更新表格上的記錄

有窗體上的一個空白日期字段,當用戶輸入一個日期並點擊「保存」按鈕,我運行這個VBA:

If IsDate(Me.PaidDate) = True Then 
    DoCmd.RunCommand acCmdSaveRecord 
    DoCmd.SetWarnings False 
    DoCmd.OpenQuery "BeneEmployeePaidUnitsUpdateQry" 
    DoCmd.SetWarnings True 
Else 
    Me.Dirty = False 
    ' Omitted code 
End If 

Me.Refresh 
Me.Requery 

我只是運行查詢,設置一個字段在另一個表中設置爲值,但僅當用戶正在更新的表中的日期字段(表單上的日期字段)不爲空時才適用。

現在,連續表單的問題似乎是,如果用戶僅輸入日期並單擊「保存」按鈕而不執行任何其他操作,則日期不會立即保存到表中,並且查詢也不會因爲日期字段在被擊中時仍爲空。

我試圖通過使用acCmdSaveRecord來削減一個角落,但這似乎不適用於這種情況。

注意:連續窗體上的每個記錄都有其自己的Save按鈕。

爲什麼我需要在該字段的AfterUpdate事件上運行acCmdSaveRecord?這是我唯一的選擇嗎?連續表單僅在該記錄失去焦點後纔對綁定字段執行更新?

+0

只有一個保存按鈕還是每個表單都有自己的保存按鈕? – 2014-09-25 13:46:14

+0

@rontornambe每個記錄/行都有其自己的保存按鈕。這對於功能來說實際上是強制性的。對不起,我沒有指定。 – 2014-09-25 13:47:38

+1

select語句是什麼樣的?主鍵是否包含在內? – 2014-09-25 13:58:50

回答

2

有時可以將此行爲歸因於主鍵未包含在查詢中。爲了更新正確的記錄,需要主鍵(或唯一鍵)。