Thursday, 10 May 2007

When is Sunday Monday?

Time for an infinite wisdom post now. On my system and in Microsoft Access 2002 the following VBA command:

yields the result


Why does this happen? Well, it turns out that the help file is right but the actual command in Access doesn't do what it says on the tin.

Returns a string indicating the specified day of the week.

WeekdayName(weekday, abbreviate, firstdayofweek)

The WeekdayName function syntax has these parts:
weekdayRequired. The numeric designation for the day of the week. Numeric value of each day depends on setting of the firstdayofweek setting.
abbreviateOptional. Boolean value that indicates if the weekday name is to be abbreviated. If omitted, the default is False, which means that the weekday name is not abbreviated.
firstdayofweekOptional. Numeric value indicating the first day of the week. See Settings section for values.

The firstdayofweek argument can have the following values:
vbUseSystem0Use National Language Support (NLS) API setting.
vbSunday1Sunday (default)

Note the help file shows us a third argument that changes the first day of the week. It states that the default is vbSunday (value: 1).

Not true. The default value is 0 and on my system the first day of the week is set to Saturday. This system-wide value is the one that is used to determine which day comes first on those month-at-a-time views such as the one you get by double-clicking the time in the Windows system tray.

Therefore, according to this function on my system, vbSunday is Monday.

No comments: