Jürgen Welz
jwelz at hotmail.com
Sat Feb 28 19:30:05 CST 2004
Given that there were a few methods for returning a fixed end of week date, I rewrote a few of the procedures to speed up the procedures. Mine was written several years ago during my first month of experimenting with VBA so that is my excuse for calling the Date function three times in a single line of code. I started with a timeGetTime declare and ran a million calls to each revised procedure: Public Declare Function timeGetTime Lib "Winmm" () As Long Function EndsOfWeek() As Date Dim datLastOfWeek As Date datLastOfWeek = Date EndsOfWeek = datLastOfWeek + (7 - WeekDay(datLastOfWeek)) End Function Function fnLastOfThisWeek() As Date Dim dt As Date dt = Date fnLastOfThisWeek = DateSerial(Year(dt), Month(dt), Day(dt) + 7 - WeekDay(dt)) End Function Function WeekEndDate() As Date Dim dt As Date dt = Date WeekEndDate = DateAdd("d", 1 + WeekDay(dt), dt) End Function The test driver procedure was run by commenting out two of the three calls. Each was run in sequence several times. The results are shown as a comment immediately after the call: Sub timetest() Dim dt As Date Dim lng As Long Dim lngt As Long lngt = timeGetTime For lng = 0 To 1000000 'dt = EndsOfWeek() '1.79 'dt = fnLastOfThisWeek '3.56 dt = WeekEndDate '4.37 Next MsgBox timeGetTime - lngt End Sub Looks like DateAdd is slower than the DateSerial, but both can be skipped as demonstrated by Don Mcgillivray. There is little to choose between the approaches on an occasional call, but used in a query with calculated field returning a few million records, I'd go with a variation on Don's method as it's nearly twice as fast as the next fastest. As always, kudos to Gustav for providing an appropriately globalized approach. Ciao Jürgen Welz Edmonton, Alberta jwelz at hotmail.com _________________________________________________________________ The new MSN 8: smart spam protection and 2 months FREE* http://join.msn.com/?page=features/junkmail http://join.msn.com/?page=dept/bcomm&pgmarket=en-ca&RU=http%3a%2f%2fjoin.msn.com%2f%3fpage%3dmisc%2fspecialoffers%26pgmarket%3den-ca