A.D.Tejpal
adtp at touchtelindia.net
Fri Apr 23 08:44:29 CDT 2004
Susan, Did you happen to try out the solution given by me ? It makes use of the existing date field in report's record source and is not dependent upon the form having to remain open. No special alteration needed for the source query and no parameters to contend with. If due to any reason, the value of starting day of the week is not passed to report's OpenArgs, default value of 1 (Sunday) is assumed and there is no error situation. Regards, A.D.Tejpal -------------- ----- Original Message ----- From: Susan Harkins To: 'Access Developers discussion and problem solving' Sent: Friday, April 23, 2004 18:38 Subject: RE: [AccessD] custom sorts/groups in a report Thank you Ken. ;) My final solution is to refer to the form value in the query. This time around, I hid the report, forcing the user to use the form to open the report, but that isn't the best way to do it. Unfortunately, I didn't know how to ward off the dread parameter prompt when the user opens the report naturally instead of through the form. I've no problem setting a default for the sort, but couldn't stop that stupid prompt because it's coming from the query. :( Susan H. Susan, You can do this using only a query, without any code, OpenArgs, or calculated controls on the report's part. You simply need a query with four variables: MajorInt - the major date interval MinorInt - the minor date interval CurInt - the current date's minor interval (1 - 7 for weekdays, etc) MaxInt - the number minor intervals in the major interval For the following Major/Minor groups, use these values: Group MajorInt MinorInt MaxInt CurInt ======================================================================= Week/Day "ww" "w" 7 DatePart("w", Date) Month/Day "m" "d" 31 DatePart("d", Date) Year/Day "yyyy" "y" 366 DatePart("y", Date) Year/Week "yyyy" "ww" 54 DatePart("ww", Date) This will group by MajorInt, then MinorInt, ordering the records starting with CurInt for each MajorInt. Sample Query: (For a report, replace the Parameters with Form control references, and replace the OrderBy with grouping by GroupMajor, GroupMinor) PARAMETERS MajorInt Text ( 255 ), MinorInt Text ( 255 ), CurInt Short, MaxInt Short; SELECT DatePart([MajorInt],[DateField]) AS GroupMajor, (DatePart([MinorInt],[DateField])+IIf(DatePart([MinorInt],[DateField])<[CurI nt],[MaxInt],0)) AS GroupMinor, tblDemo.DateID, Format([DateField],"yyyy") AS [Year], Format([DateField],"mmm") AS [Month], DatePart("ww",[DateField]) AS Week, DatePart("d",[DateField]) AS DayMonth, Format([DateField],"ddd") AS [Day] FROM tblDemo ORDER BY DatePart([MajorInt],[DateField]), (DatePart([MinorInt],[DateField])+IIf(DatePart([MinorInt],[DateField])<[CurI nt],[MaxInt],0)); -Ken ----- Original Message ----- From: Susan Harkins To: 'Access Developers discussion and problem solving' Sent: Sunday, April 18, 2004 04:16 Subject: [AccessD] custom sorts/groups in a report I'm grouping and sorting a report on a date field. The grouping is by the week -- but I want it to handle a changing first day of the week variable. I can't get my head around it at all. Passing the first day of the week around is no problem -- I just can't seem to get Access to group by it. I've looked at CreateGroupLevel, but I don't see how that can help. I tried adding a DatePart expression to the Detail section and using the OpenArgs property to pass the first day of the week, and while the expression works, I can't group by it -- it's a calculated control. I don't want the users manipulating the underlying query either. They choose the first day of the week from a simple form and the rest needs to happen behind the scenes. Any suggestions? Susan H.