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