我是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