我是Access的新手,我试图在我工作的地方构建一个表单。Access-VBA从一个表中提取相应的记录写入另一个表
我有一个mainform,它具有如下的组合框。
部:[MainDepartment]可能的值(焊接,绘画,等。)
移位:[MainShift]可能的值(1,2,3)
日期:[MainDate]
我的mainform也有一个唯一的ID字段[ID]并链接到tblReportPersonnel。
tblPersonnel
PerID NameSurname Department Week1 Week2 Week3 ... Week52
123 John Doe Welding 1 2 3 2
456 James Rod Painting 2 3 1 1
当用户选择日期,移位和部门我想运行VBA代码从tblPersonnel查找匹配值和写入的相应值与mainforms id来tblReportPersonnel。
此vba代码需要将日期转换为weeknumber并将其用作列名称。 我将使用其中一个mainform字段的AfterUpdate事件触发VBA代码。 tblReportPersonnel的表结构如下。
tblReportPersonnel
ID PerID
785 123
785 872
785 578
Private Sub fetch()
Dim varWeek As String
varWeek = Format([Forms]![Mainform]![MainDate] - 1, "ww")
CurrentDb.Execute "SELECT tblPersonnel.[PerID]"
From Personel
WHERE (((Personel.varWeek)=[Forms]![MainForm]![MainShift] And ((tblPersonnel.Department)=[Forms]![MainForm]![MainDepartment));
End Sub
感谢
重新考虑你在人事表中做了什么,做一个快速的规范化搜索。任何时候当你看到一个带有“week1”,“week2”,“week3”等字段的表格时......通常表示设计不正确的表格结构。使用EmployeeID(FK),WeekNum,WeekValue等表结构可以简化您的工作。在你的表单上,你已经知道了employeeID,然后计算weekNum,然后运行一个查询来查找相应的值。 – Gene
我正在进入员工将在52周内工作的班次。 –
我明白了,只是说桌子设计不当。你让自己变得更加困难,那么你也是。正确设置表格,它变得更简单。 – Gene