以下是一个示例代码,用于按周汇总员工的总工资明细。
Option Compare Database
Sub GetWeeklySalaryDetails()
Dim strSQL As String
Dim rs As DAO.Recordset
Dim startDate As Date
Dim endDate As Date
' 设置起始日期和结束日期
startDate = #1/1/2022#
endDate = #12/31/2022#
' 清空查询结果表
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE FROM tblWeeklySalaryDetails"
DoCmd.SetWarnings True
' 循环计算每周的总工资明细
Do While startDate <= endDate
strSQL = "INSERT INTO tblWeeklySalaryDetails (WeekStartDate, WeekEndDate, TotalSalary) " & _
"SELECT #" & startDate & "# AS StartDate, #" & DateAdd("d", 6, startDate) & "# AS EndDate, " & _
"Sum(Salary) AS TotalSalary " & _
"FROM tblEmployees " & _
"WHERE DateValue(HireDate) <= #" & DateAdd("d", 6, startDate) & "#"
' 执行查询
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
' 移动到下一周
startDate = DateAdd("d", 7, startDate)
Loop
' 显示查询结果
DoCmd.OpenQuery "qryWeeklySalaryDetails"
MsgBox "总工资明细已按周汇总。"
End Sub
在上述示例代码中,我们首先设置起始日期和结束日期,然后使用一个循环来计算每周的总工资明细。在每次循环中,我们构建一个SQL查询语句,用于计算该周的总工资,并将结果插入到名为tblWeeklySalaryDetails
的表中。最后,我们使用DoCmd.OpenQuery
命令打开名为qryWeeklySalaryDetails
的查询,以显示按周汇总的总工资明细。
请注意,示例代码中使用的表和查询名称仅供参考,您需要根据自己的数据库结构进行相应的更改。