Connecting Tech Pros Worldwide Forums | Help | Site Map

Determine and MDB file's Access version without opening it?

Me
Guest
 
Posts: n/a
#1: Nov 13 '05
Hi all,


I have an Access application that has to import hundreds of other
MDB's, some access 97 and some 2000, and merge them into several large
mdb's. so far so good, but my command:

Set appAccess = GetObject(TargetDBPathNAme, "Access.Application.9")

sometimes fails, of course, when the MDB to be imported is Access 97
type.

How do I determine in advance (before GetObject) what version a closed
(unaccessed) MDB is created with?

the best I have come up with, shamefully, was to use "On error"
detection
like this:
<the beginning of the import loop>

OpenImportConnection = true
Set appAccess = GetObject(TargetDBPathNAme, "Access.Application.9")
OpenImportConnection = false


< the error handling section >


If (Err.Number = 7866 Or InStr(1, Err.Description, "Microsoft Access
can't open the database because it is missing") > 0) And
OpenImportConnection Then

' probably trying to open an Access 97 file as an Access 2000 version,
' so switch importing to version 97

Set appAccess = Nothing
Set appAccess = GetObject(TargetDBPathNAme,
"Access.Application.8")
Resume Next

End If



(I got two types of error mesasges occuring because of this).

is there anything better than this, that doesn't depend on
errorhandling?


Thanks for reading.

hh.

Eric Schittlipz
Guest
 
Posts: n/a
#2: Nov 13 '05

re: Determine and MDB file's Access version without opening it?



"Me" <heruti@lycos.com> wrote in message
news:2d4c3262.0409200303.15107319@posting.google.c om...[color=blue]
> Hi all,
>
>
> I have an Access application that has to import hundreds of other
> MDB's, some access 97 and some 2000, and merge them into several large
> mdb's. so far so good, but my command:
>
> Set appAccess = GetObject(TargetDBPathNAme, "Access.Application.9")
>
> sometimes fails, of course, when the MDB to be imported is Access 97
> type.
>
> How do I determine in advance (before GetObject) what version a closed
> (unaccessed) MDB is created with?
>
> the best I have come up with, shamefully, was to use "On error"
> detection
> like this:
> <the beginning of the import loop>
>
> OpenImportConnection = true
> Set appAccess = GetObject(TargetDBPathNAme, "Access.Application.9")
> OpenImportConnection = false
>
>
> < the error handling section >
>
>
> If (Err.Number = 7866 Or InStr(1, Err.Description, "Microsoft Access
> can't open the database because it is missing") > 0) And
> OpenImportConnection Then
>
> ' probably trying to open an Access 97 file as an Access 2000 version,
> ' so switch importing to version 97
>
> Set appAccess = Nothing
> Set appAccess = GetObject(TargetDBPathNAme,
> "Access.Application.8")
> Resume Next
>
> End If
>
>
>
> (I got two types of error mesasges occuring because of this).
>
> is there anything better than this, that doesn't depend on
> errorhandling?
>
>
> Thanks for reading.
>
> hh.[/color]





Function FindVersion(strDbPath As String) As String
Dim dbs As Database
Dim strVersion As String
Const conPropertyNotFound As Integer = 3270

On Error GoTo Err_FindVersion

' Open the database and return a reference to it.
Set dbs = OpenDatabase(strDbPath)

' Check the value of the AccessVersion property.
strVersion = dbs.Properties("AccessVersion")

Debug.Print strVersion


' Return the two leftmost digits of the value of
' the AccessVersion property.
strVersion = Left(strVersion, 2)

' Based on the value of the AccessVersion property,
' return a string indicating the version of Microsoft Access
' used to create or open the database.
Select Case strVersion
Case "02"
FindVersion = "2.0"
Case "06"
FindVersion = "95"
Case "07"
FindVersion = "97"
Case "08"
FindVersion = "2000"
Case "09"
FindVersion = "2002"
End Select

Exit_FindVersion:
On Error Resume Next
dbs.Close
Set dbs = Nothing
Exit Function

Err_FindVersion:
If Err.Number = conPropertyNotFound Then
MsgBox "This database hasn't previously been opened " & _
"with Microsoft Access."
Else
MsgBox "Error: " & Err & vbCrLf & Err.Description
End If
Resume Exit_FindVersion
End Function










Closed Thread


Similar Microsoft Access / VBA bytes