[AccessD] custom sorts/groups in a report

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.




More information about the AccessD mailing list