2014-02-17 87 views
0

我們有一個Access數據庫來跟蹤工作請求。我們有一個表單,用於輸入請求的信息。我們希望將可以輸入的部門限制在一個列表中,我們已經在一個名爲部門的表格中輸入了這個列表。MS-Access表單組合框不能限制粘貼的記錄

Departments控制我們的工作請求輸入表單是一個基於Departments表的組合框。這用於限制手工輸入的部門;然而,通常通過複製和粘貼舊信息作爲整個記錄來輸入作業,並根據需要更改任何信息。發生這種情況時,部門控制不受組合框的限制。

我需要一種方法來驗證在記錄保存到表格之前,在表單中根據Department字段中的條目在表單上的Department控件中輸入的數據。如果來自粘貼條目的部門與Departments表中的任何記錄不匹配,我希望它會拋出一個消息框。

我試圖使用BeforeUpdate事件過程,但無法弄清楚如何根據我的Departments表中的條目評估我的表單中當前的Department條目。任何人都可以建議如何創建此驗證?

回答

0

喜歡的東西:

Private Sub Form_BeforeUpdate(Cancel As Integer) 
Dim strSQL As String 
Dim RS As DAO.Recordset 
strSQL = "select * from Table1 where (Flda) = '" & Me.txtFldA & "';" 
Set RS = CurrentDb.OpenRecordset(strSQL) 
If RS.EOF Then 
    MsgBox "Not a valid Department", vbOKOnly, "Incorrect Department Entered" 
End If 
RS.Close 
Set RS = Nothing 
End Sub 
0

既然你運行Access 2010,您可以通過使用Before Change數據宏這樣的執行在表級別的驗證:

BeforeChange.png

欲瞭解更多信息,見

Create a data macro

+0

@SMartin你可以下載一個工作示例[here](http://wikisend.com/download/120420/Validation.zip)。 –

+0

找到另一種方式在DLookup的表單級別處理它,但不能發佈答案。這很有幫助,但我會在將來查看它。謝謝你的幫助。 –

0

我想你想要做的是建立你的部門領域和部門數據庫中的相應領域之間的關係。強制推薦的完整性(沒有級聯),並且這應該防止任何人在您的工作請求表中添加一個記錄,其中部門不在您的部門表中。