I'm running an append query to update a weekly payroll table. I need to create and store a serial number field for each employee who is getting paid that week. The number of employees who gets paid each week varies from 2-6. The serial number will be used on the employee's paystub to coincide with the check number.
What I have right now pulls the highest used/saved check number and adds +1 to get the next check number. However this next sequenced check number shows for all employees for that week.
I've got to be missing something little. How can I force it to generate a new serial number for each new record?
INSERT INTO tblTESTpayroll ( ID, EMPLOYEE, START, [END], [TOTAL PAY],
[TOTAL TIPS], MARITIAL, [FED EXMPT], [STATE EXMPT],
[SCHL DIST], SSNO, SSNOXX, [ADDT'L WTHLDNG], [CHCK NO] )
SELECT DISTINCTROW qryTESTpayrollgross.ID,
qryTESTpayrollgross.NAME,
Min(qryTESTpayrollgross.aptDate) AS [MIN DATE],
Max(qryTESTpayrollgross.aptDate) AS [MAX DATE],
Sum(qryTESTpayrollgross.TPay) AS [TOTAL PAY],
Sum(qryTESTpayrollgross.TTip) AS [TOTAL TIP],
tblEmployee.empMarital AS MARITIAL,
tblEmployee.empFedFile AS [FED EXMPT],
tblEmployee.empStFile AS [STATE EXMPT],
tblEmployee.empSchlDst AS [SCHL DIST],
tblEmployee.empSS AS [SS NO],
dbo_Employee.empEmail AS [SS NO CODED],
tblEmployee.empAddtlWthdng AS [ADDTL WTHLDNG],
Nz(DMax("[CHCK NO]","tblTESTpayroll"),0)+1 AS [CHECK NO]
FROM ((qryTESTpayrollgross INNER JOIN tblEmployee ON qryTESTpayrollgross.ID = tblEmployee.ID)
INNER JOIN dbo_Employee ON qryTESTpayrollgross.ID = dbo_Employee.empId)
INNER JOIN tblTESTpayroll ON qryTESTpayrollgross.ID = tblTESTpayroll.ID
GROUP BY qryTESTpayrollgross.ID,
qryTESTpayrollgross.NAME,
tblEmployee.empMarital,
tblEmployee.empFedFile,
tblEmployee.empStFile,
tblEmployee.empSchlDst,
tblEmployee.empSS,
dbo_Employee.empEmail,
tblEmployee.empAddtlWthdng;
答案 0 :(得分:0)
INSERT INTO tblEmployeePayroll ( ID, EMPLOYEE, START, [END], [TOTAL PAY], [TOTAL TIPS], MARITIAL, [FED EXMPT], [STATE EXMPT], [SCHL DIST], SSNO, SSNOXX, [ADDT'L WTHLDNG], [CHCK NO] )
SELECT DISTINCTROW qryWeeklyPayrollPrep.ID,
qryWeeklyPayrollPrep.NAME,
qryWeeklyPayrollPrep.Min,
qryWeeklyPayrollPrep.Max,
qryWeeklyPayrollPrep.[TOTAL PAY],
qryWeeklyPayrollPrep.[TOTAL TIP],
tblEmployee.empMarital AS MARITIAL,
tblEmployee.empFedFile AS [FED EXMPT],
tblEmployee.empStFile AS [STATE EXMPT],
tblEmployee.empSchlDst AS [SCHL DIST],
tblEmployee.empSS AS [SS NO],
dbo_Employee.empEmail AS [SS NO CODED],
tblEmployee.empAddtlWthdng AS [ADDTL WTHLDNG],
Nz(DMax("[CHCK NO]","tblEmployeePayroll"),0)+DCount("ID","qryWeeklyPayrollPrep","ID<=" & [dbo_Employee].[empID]) AS [CHECK NO]
FROM ((qryWeeklyPayrollPrep LEFT JOIN dbo_Employee ON qryWeeklyPayrollPrep.ID = dbo_Employee.empId)
LEFT JOIN tblEmployeePayroll ON qryWeeklyPayrollPrep.ID = tblEmployeePayroll.ID)
INNER JOIN tblEmployee ON qryWeeklyPayrollPrep.ID = tblEmployee.ID
GROUP BY qryWeeklyPayrollPrep.ID,
qryWeeklyPayrollPrep.NAME,
qryWeeklyPayrollPrep.Min,
qryWeeklyPayrollPrep.Max,
qryWeeklyPayrollPrep.[TOTAL PAY],
qryWeeklyPayrollPrep.[TOTAL TIP],
tblEmployee.empMarital,
tblEmployee.empFedFile,
tblEmployee.empStFile,
tblEmployee.empSchlDst,
tblEmployee.empSS,
dbo_Employee.empEmail,
tblEmployee.empAddtlWthdng,
Nz(DMax("[CHCK NO]","tblEmployeePayroll"),0)+DCount("ID","qryWeeklyPayrollPrep","ID<=" & [dbo_Employee].[empID]);
Nz(DMax())+ DCount()非常适合序列化工资核算号码。 我所要做的就是在此查询之前运行查询,以将每个唯一的EmpID#压缩为仅1条记录。每个EmpID#拥有超过1条记录,这让我感到头疼。
希望这有助于将来的人!!