2017-03-17 76 views
1

我在Access 2016數據庫中有多個拆分表單,這些拆分表單由各個員工定期用於數據輸入。用戶能夠看到舊記錄但不能編輯它們是非常重要的。基於條目日期更改AllowEdits屬性

但是,我想允許用戶編輯當天製作的記錄,以防他們注意到他們剛輸入的記錄中存在錯誤。

我目前的做法是設置形式是在AllowEdits屬性,然後重寫它用下面的代碼在同一天進行的條目

Private Sub Form_Load() 

If (Me![rec_date] < Now()) Then 
Me.AllowEdits = False 
Else: Me.AllowEdits = True 

End If 
End Sub 

我認爲這是與若問題儘管目前所有這些標準都是防止編輯所有記錄。

對於背景[rec_date]是指記錄輸入的日期。

回答

1

幾件事情:

  1. 如果你有記錄的更改工作使用的「當前」事件來代替。窗體加載只在窗體本身打開時才起作用。如果您更改記錄,它不會爲您做任何事情。
  2. 不妨將Else語句移到下一行併爲可讀性正確縮進。
  3. 您的條件聲明與您告訴我的不完全一致。您正在嘗試匹配特定的一天,但您使用日期時間(現在())而不是日期。您也可以使用小於等於等於。我建議使用equals和date函數(注意:不使用()並只返回now()的日期部分)。

希望有幫助!這裏是我的推薦代碼:

Private Sub Form_Current() 
    ' Only allow editing of records created today. 
    If (Me![rec_date] = Date) Then 
     Me.AllowEdits = True 
    Else 
     Me.AllowEdits = False 
    End If 
End Sub 

更短的形式通過Mat's Mug

Private Sub Form_Current() 
    Me.AllowEdits = Me![rec_date] = Date ' Only allow editing of records created today. 
End Sub 
+0

的建議,爲什麼不只是做'Me.AllowEdits =君[rec_date] = Date'!?請注意,括號在'If'語句的布爾表達式周圍是多餘的。 –

+0

哈哈!它變得越短。對我沒有理由;只是我喜歡保持可讀性的方式。我將添加您的代碼作爲另一個簡短的表單! –

+0

太棒了,謝謝你們!這兩個代碼的工作。我對數據庫管理/ VBA非常陌生,所以我非常感謝你的幫助,我在這裏學到了一些東西 - 今天早些時候,我正在將桌面撞到桌面上! 感謝提示re:縮進,這絕對確實使代碼更易於閱讀。 – DylanHarding