准备访问表单

时间:2014-03-11 13:45:44

标签: vba ms-access

我有一个用于数据输入的表单,为了更容易我希望根据EmployeeID字段预先填充一些字段,例如,一旦我输入我的员工ID,那么EmployeeName字段将是Auto与John Doe一起生活,性别将是男性,EEOC将是白人等等。这有可能吗?它将基于另一个表标题EmpData中的数据。

2 个答案:

答案 0 :(得分:1)

在EmployeeID的AfterUpdate事件中,您可以输入类似的内容(未经测试的代码,因此需要稍微调整一下):

Dim db as DAO.Database
Dim rec as DAO.Recordset

Set db = CurrentDB
Set rec = db.OpenRecordset("Select * from EmpData where EmployeeID = " & Me.EmployeeID & "")

Me.EmployeeName = rec("EmployeeName")
Me.Gender = rec("Gender")
Me.EEOC = rec("EEOC")
etc...

Set rec = Nothing
Set db = Nothing

如果EmployeeID是Text字段,则需要在“Set rec”行中用单引号括起来。像这样:

Set rec = db.OpenRecordset("Select * from EmpData where EmployeeID = '" & Me.EmployeeID & "'")

答案 1 :(得分:1)

如果您创建一个连接两个表的查询,那么Access将自动为您完成所有操作。然后,您应该将该查询用作表单的DataSource。

SELECT MyDataTable.*, EmpData.*
FROM MyDataTable LEFT JOIN EmpData
ON MyDataTable.EmployeeID = EmpData.EmployeeID;

这样做,您可能希望锁定来自EmpData的列无法编辑。

在表单中,显示MyDataTable中的字段和EmpData中的相关字段。应该从EmpData填写的MyDataTable中的任何字段都不应显示给用户。 即您从EmpData显示EmployeeName而不是MyTableData。

在EmployeeID上的AfterUpdate事件中,您将数据从EmpData复制到MyTableData

Me.RecordSet!MyTableData.EmployeeName = Me.RecordSet!EmpData.EmployeeName