[AccessD] AXP: Report/Subreport parameters

Gustav Brock gustav at cactus.dk
Wed Jul 30 11:05:04 CDT 2003


Hi Charlotte

Yeah, I too noticed the sloppiness from the hand of Mr. Static
himself.
And if you initially fire those functions _without_ a parameter, they
return 1899-12-30 which may or may not be what you want; I would
prefer that a non-specified date would be today's date ... but that,
of course, depends.

So Arthur, is this your new style - writing junior code - or did you
experience a senior moment??? 

/gustav


> Arthur,

> Aren't *all* variables declared in a static function automatically
> static?  I thought that was the point.  If you declare the function
> without the static keyword, then only dCurrent would be static within
> the function.  The end result would be the same.

> Charlotte Foust

> -----Original Message-----
> From: Arthur Fuller [mailto:artful at rogers.com] 
> Sent: Wednesday, July 30, 2003 6:15 AM
> To: 'Access Developers discussion and problem solving'
> Subject: RE: [AccessD] AXP: Report/Subreport parameters


> Yet another case for static functions! You could create a pair of static
> functions called, say, DateRangeBegin() and DateRangeEnd() and then
> modify your subforms' recordsource queries to refer to the static
> functions rather than accepting parameters. IOW:

> SELECT * FROM someTables WHERE DateColumn BETWEEN DateRangeBegin() AND
> DateRangeEnd();

> Here are the functions:

> <code>
> Static Function DateRangeBegin(Optional dNew As Date) As Date
>     Static dCurrent
>     Dim dTemp As Date   'defaults to 12/30/99
>     If dNew <> dTemp Then dCurrent = dNew
>     DateRangeBegin = dCurrent
> End Function

> Static Function DateRangeEnd(Optional dNew As Date) As Date
>     Static dCurrent
>     Dim dTemp As Date
>     If dNew <> dTemp Then dCurrent = dNew
>     DateRangeEnd = dCurrent
> End Function

> </code>

> To use them, you call them passing a variable (which might come from a
> form that has the date-time picker on it, or simply requests dates):

> DateRangeBegin( myControl )
> DateRangeEnd( myControl )

> To retrieve the values, you call the functions without a parameter:

> DateRangeBegin()
> DateRangeEnd()

> That's it. Nothing to it, once you understand the concept. And the
> really cool part about this approach is that you're not tied to any
> specific form etc. So your queries don't need parameters or anything;
> they can simply refer to the functions and you get what you want. For
> example, having copied the functions into a module, you can do this from
> the debug window:

> ? daterangebegin(now())
> 30/07/2003 10:14:12 AM 
> ? daterangebegin()
> 30/07/2003 10:14:12 AM 

> Hth,
> Arthur



More information about the AccessD mailing list