The gist of it is that only the Forms, Reports, Macros and Modules are
stored in a different format for each. The Tables and Queries are stored in
a generic format that's the same for both. Since DAO only knows about
Tables and Queries, it can't really create a database that's one or the
other; it creates a v4.0 database which is later modified by Access itself
to be whichever format it wants. This also explains the behaviour you saw
with your code in Alex's sub-thread; there's no version to the database
until you actually open it.
What the conversion utility does is to convert all the other objects from
2000 to 2002/2003. If you change your options to view System Objects,
you'll see an MSysAccessObjects in 2000 vs. and MSysAccessStorage in 2002/3.
This is where all the Forms, Reports, etc. are stored.
Oh and it appears that Norton has corrupted you. It's not "symantecs", it's
"semantics".
Anyway, if it's important for you to select the database format before first
GUI access, try the following code instead. Note that if you need "tdb" to
point to the database once it's done, you'll have to re-open the database
through DAO afterwards. Access can't create the necessary table while DAO
has a lock on it (at least I don't think so...you can try opening it in
shared mode and see if that works out).
Public Sub MyCreateDatabase(ByVal TargetPath As String)
Dim tdb As DAO.database
Dim accapp As Access.Application
Dim PrevSetting As Variant
' create new microsoft access database file in Access 2000 format.
On Error Resume Next
Kill TargetPath
On Error GoTo 0
Set tdb = DBEngine.Workspaces(0).CreateDatabase(TargetPath, dbLangGeneral)
tdb.Close
Set tdb = Nothing
Set accapp = New Access.Application
PrevSetting = accapp.GetOption("Default File Format")
accapp.SetOption "Default File Format", 9
accapp.OpenCurrentDatabase TargetPath
accapp.CloseCurrentDatabase
accapp.SetOption "Default File Format", PrevSetting
Set accapp = Nothing
End Sub
Rob