Thanks!
There were some syntax changes necessary to get it to work with the Progress ODBC driver:
weekday() = DAYOFWEEK()
IF, THEN, ELSE = CASE WHEN, THEN, ELSE, END
Here it is translated to accessing via ODBC:
In the query define a field as:
(CASE WHEN DAYOFWEEK(MFGSYS.PUB.LaborDtl.ClockInDate) = '1)' THEN (MFGSYS.PUB.LaborDtl.ClockInDate - 6) ELSE (MFGSYS.PUB.LaborDtl.ClockInDate - DAYOFWEEK(MFGSYS.PUB.LaborDtl.ClockInDate) + 2) END)
Set the Criteria to:
= (CASE WHEN DAYOFWEEK(CURDATE()) = '1)' THEN (CURDATE() - 6) ELSE (CURDATE() - DAYOFWEEK(CURDATE()) + 2) END)
Full SQL:
SELECT MFGSYS.PUB.EmpBasic.Name AS Team, SUM(MFGSYS.PUB.LaborDtl.LaborQty) AS QTY, SUM(MFGSYS.PUB.LaborDtl.LaborQty * MFGSYS.PUB.Part.Number02)
AS Score, 'THIS WEEK:' AS txt
FROM MFGSYS.PUB.LaborDtl, MFGSYS.PUB.EmpBasic, { oj MFGSYS.PUB.JobProd LEFT OUTER JOIN
MFGSYS.PUB.Part ON MFGSYS.PUB.JobProd.PartNum = MFGSYS.PUB.Part.PartNum AND MFGSYS.PUB.JobProd.Company = MFGSYS.PUB.Part.Company }
WHERE MFGSYS.PUB.LaborDtl.Company = MFGSYS.PUB.EmpBasic.Company AND MFGSYS.PUB.LaborDtl.EmployeeNum = MFGSYS.PUB.EmpBasic.EmpID AND
MFGSYS.PUB.LaborDtl.Company = MFGSYS.PUB.JobProd.Company AND MFGSYS.PUB.LaborDtl.JobNum = MFGSYS.PUB.JobProd.JobNum AND
(MFGSYS.PUB.LaborDtl.ClockOutTime < 24) AND ((CASE WHEN DAYOFWEEK(MFGSYS.PUB.LaborDtl.ClockInDate)
= '1)' THEN (MFGSYS.PUB.LaborDtl.ClockInDate - 6) ELSE (MFGSYS.PUB.LaborDtl.ClockInDate - DAYOFWEEK(MFGSYS.PUB.LaborDtl.ClockInDate) + 2) END)
= (CASE WHEN DAYOFWEEK(CURDATE()) = '1)' THEN (CURDATE() - 6) ELSE (CURDATE() - DAYOFWEEK(CURDATE()) + 2) END))
GROUP BY MFGSYS.PUB.EmpBasic.Name
HAVING (MFGSYS.PUB.EmpBasic.Name = 'Wood Shop QC')
ORDER BY Team
There were some syntax changes necessary to get it to work with the Progress ODBC driver:
weekday() = DAYOFWEEK()
IF, THEN, ELSE = CASE WHEN, THEN, ELSE, END
Here it is translated to accessing via ODBC:
In the query define a field as:
(CASE WHEN DAYOFWEEK(MFGSYS.PUB.LaborDtl.ClockInDate) = '1)' THEN (MFGSYS.PUB.LaborDtl.ClockInDate - 6) ELSE (MFGSYS.PUB.LaborDtl.ClockInDate - DAYOFWEEK(MFGSYS.PUB.LaborDtl.ClockInDate) + 2) END)
Set the Criteria to:
= (CASE WHEN DAYOFWEEK(CURDATE()) = '1)' THEN (CURDATE() - 6) ELSE (CURDATE() - DAYOFWEEK(CURDATE()) + 2) END)
Full SQL:
SELECT MFGSYS.PUB.EmpBasic.Name AS Team, SUM(MFGSYS.PUB.LaborDtl.LaborQty) AS QTY, SUM(MFGSYS.PUB.LaborDtl.LaborQty * MFGSYS.PUB.Part.Number02)
AS Score, 'THIS WEEK:' AS txt
FROM MFGSYS.PUB.LaborDtl, MFGSYS.PUB.EmpBasic, { oj MFGSYS.PUB.JobProd LEFT OUTER JOIN
MFGSYS.PUB.Part ON MFGSYS.PUB.JobProd.PartNum = MFGSYS.PUB.Part.PartNum AND MFGSYS.PUB.JobProd.Company = MFGSYS.PUB.Part.Company }
WHERE MFGSYS.PUB.LaborDtl.Company = MFGSYS.PUB.EmpBasic.Company AND MFGSYS.PUB.LaborDtl.EmployeeNum = MFGSYS.PUB.EmpBasic.EmpID AND
MFGSYS.PUB.LaborDtl.Company = MFGSYS.PUB.JobProd.Company AND MFGSYS.PUB.LaborDtl.JobNum = MFGSYS.PUB.JobProd.JobNum AND
(MFGSYS.PUB.LaborDtl.ClockOutTime < 24) AND ((CASE WHEN DAYOFWEEK(MFGSYS.PUB.LaborDtl.ClockInDate)
= '1)' THEN (MFGSYS.PUB.LaborDtl.ClockInDate - 6) ELSE (MFGSYS.PUB.LaborDtl.ClockInDate - DAYOFWEEK(MFGSYS.PUB.LaborDtl.ClockInDate) + 2) END)
= (CASE WHEN DAYOFWEEK(CURDATE()) = '1)' THEN (CURDATE() - 6) ELSE (CURDATE() - DAYOFWEEK(CURDATE()) + 2) END))
GROUP BY MFGSYS.PUB.EmpBasic.Name
HAVING (MFGSYS.PUB.EmpBasic.Name = 'Wood Shop QC')
ORDER BY Team
--- In vantage@yahoogroups.com, "jckinneman" wrote:
>
> I have used this to calculate the Monday of the current week when I needed to group jobs by their due date
>
> "Create a calculated field call StartOfWeek
>
> (if weekday(Date(JobOper.DueDate)) = 1 then (JobOper.DueDate - 6) else (JobOper.DueDate - weekday(JobOper.DueDate) + 2))
>
> Then I grouped on this field, all jobs that are scheduled to run that week will be grouped together. Add a sort on the due date so that they appear in Monday to Sunday order in the grouping."
>
> Jim Kinneman
> Encompass Solutions, Inc
>
> --- In vantage@yahoogroups.com, "sbraudrick@" wrote:
> >
> > I have a report that groups data by week and have learned today that it appears the week number assigned is set at 7 day intervals from the first day of the year, regardless of the day of week.
> >
> > For example, this year started on Tuesday 1/1. So when I group using the WEEK() function it returns values based on a Tues-Mon week instead of the desired Mon-Sun.
> >
> > In MS SQL Server you can use the DatePart() function and stipulate what the first day of the week is, does anyone know how to do this with the ODBC driver for Progress?
> >
> > Thanks,
> > Sean
> >
>