![]()
Jeff Kryzer
When I wrote a database that needed to exist in versions 2.0, 95, and 97, I wrote it to the least common denominator (Access 2.0).
In order to reduce bugs and ease the conversion from Access 2.0 to 95 and 97, I write my functions a certain way when they make API calls. For each function, I create a wrapper function that first checks the version of Access, then calls a different function depending on which version is being used, like this:
Function GetFileName (ByVal hWnd As Long) As String
Dim varVersion As Variant
varVersion = SysCmd(SYSCMD_ACCESSVER)
Select Case varVersion
Case 2
GetFileName = GetFileName16(CInt(hWnd))
Case >= 7
GetFileName = GetFileName32(hWnd)
End Select
End Function
Now, in any form I can just call the GetFileName() function and I don't have to worry about which version of Access I'm using. The window handle is passed in as a Long and then converted to an Integer only if I know I'm in Access 2.0. If I have to make a change to any part of the database, I make it in the version 2.0 copy, then convert the database to 95 and 97. No code change is necessary! Also, Access 2.0 doesn't seem to care whether I have 32-bit declarations in the module (as long as they're never called) and Access 95/97 doesn't care if I have 16-bit declarations in the module, so all the versions are happy!