Stuart McLachlan
stuart at lexacorp.com.pg
Mon Apr 16 17:09:05 CDT 2007
On 16 Apr 2007 at 14:44, John Clark wrote:
> stuck on the one record only. But...finally, we're at my question...how do I
> reference this record?
>
> Example:
>
> Currently: [AmtOwed] = [Miles] * .485
>
> Would like: [AmtOwed] = [Miles] * [tblMileageRate]![CurRate]
You would use DLookup("CurRate","tblMIleageRate"). Problem is there are
several situations where Access can't handle this - notably in CrossTab
queries.
One solution is to use STATIC functions. They've been discussed several
times here in the past, search the archives for a discussion of the
benefits. Here's how I would approach your problem.
[AmtOwed] = [Miles] * CurRate()
.......
Static Function CurRate() As Curency
Dim store As Long
If store = 0 Then
store = DLookup("CurRate", "tblMileageRate")
End If
CurRate = store
End Function
First time you use the function, it does the lookup, from then on, it
doesn't need to so is a lot faster - important if you use the rate over
many rows in a query.
If you want to be able to change the rate during a session then you need to
expand the function:
Static Function CurRate(Option Rate as Currency = -1 ) As Curency
Dim store As Currency
If Rate <> -1 then
CurrentDB.Execute "Update tblMileageRate Set CurRate = " & Rate
store = Rate
End If
If store = 0 Then
store = DLookup("CurRate", "tblMileageRate")
End If
CurRate = store
End Function
Now "CurRate 0.485" will set the rate, "CurRate()" willl return the rate.
--
Stuart