Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Feststellen der Version einer AccDB/MDB
zurück: Unterformular aus Abfrage aktualisiert nicht. weiter: Fix auf Spalten einer Tabelle anwenden Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Offen Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
JMalberg
Es wird so langsam sinnig ...


Verfasst am:
16. Nov 2012, 11:36
Rufname:
Wohnort: Saarbrücken

Feststellen der Version einer AccDB/MDB - Feststellen der Version einer AccDB/MDB

Nach oben
       Version: (keine Angabe möglich)

Bisher benutze ich diesen Code um die Version einer DB festzustellen
Code:
    Static mAccessVersionDB As Variant 'Byte
    Dim wrk As DAO.Workspace
    Dim DB As DAO.Database
    Dim strPWD As String
    Dim bytDbVersion As Byte

'    If IsNull(mAccessVersionDB) Or IsEmpty(mAccessVersionDB) Or mAccessVersionDB = 0 Then
    If Nz(mAccessVersionDB, 0) = 0 Then
        ' Prüfung ob DB-Kennwort angegeben wurde
        'If IsNull(Password) Or Password = "" Then
        '    strPWD = ";pwd="
        '  Else
        '    strPWD = ";pwd=" & Password
        'End If
        strPWD = ";pwd=" & Password
        Set wrk = CreateWorkspace("CheckVersion", "admin", "", dbUseJet)
        On Error Resume Next
        Set DB = wrk.OpenDatabase(TestDBname, False, False, strPWD)
        Select Case Err.Number
          Case 0:
            ' Für Versionen 1.0 und 2.0 wird die Jet Version verwendet, für Versionen darüber die AccessVersion property.
            ' Referenz setzen auf Microsoft DAO 3.6 Library
            bytDbVersion = Val(DB.Version)
            Select Case bytDbVersion
              Case Is > 4:
                Select Case bytDbVersion
                  Case 12:
                    mAccessVersionDB = 12
                  Case 14:
                    mAccessVersionDB = 14
                  Case Else
                    mAccessVersionDB = bytDbVersion
                End Select
              Case 3 To 4:
                Select Case DB.Properties("AccessVersion")
                  Case "09.50":       mAccessVersionDB = 11
                  Case "08.50":       mAccessVersionDB = 9
                  Case "07.53":       mAccessVersionDB = 8
                  Case "06.68":       mAccessVersionDB = 7
                  'Case Else:          mAccessVersionDB = Val(db.Properties("AccessVersion"))
                End Select
              Case Is < 3:
                Select Case DB.Version
                  Case "2.0":         mAccessVersionDB = 2
                  Case "1.0":         mAccessVersionDB = 1
                  Case Else:          mAccessVersionDB = Val(DB.Version)
                End Select
            End Select
          Case 3343
            'Error 3343: Unrecognized database format
            mAccessVersionDB = 255
            MsgBox "Database '" & TestDBname & "' is corrupt!!" & vbCrLf & "Access shutdown", vbCritical + vbOKOnly
            Application.Quit acQuitSaveAll
          Case 3045
            mAccessVersionDB = 253
          Case 3033
            mAccessVersionDB = 254
          Case Else
            mAccessVersionDB = 255
        End Select
        If Not DB Is Nothing Then
            DB.Close
            Set DB = Nothing
        End If
        wrk.Close
        Set wrk = Nothing
    End If
    GetAccessVersionDB = mAccessVersionDB
    If GetAccessVersionDB > 64 Then
        MsgBox "Database '" & TestDBname & "' is corrupt!!" & vbCrLf & "Access shutdown", vbCritical + vbOKOnly
        Application.Quit acQuitSaveAll
    End If
End Property
Mir scheint es aber, dass das nur die Accessversionsnummer ist die für das Erstellen der DB verwendet wurde aber nicht die Version der DB selbst.

Meine TestDB "xyz.mdb" ist mit Acc2007 im Acc2003-Format erstellt worden und GetAccessVersionDB gibt jetzt V12 aus. Es sollte aber V11 sein.

In DB.Properties("AccessVersion") steht "09.50" => V11
In DB.Version steht "12.0" => V12

Wie kann ich denn dann zuverlässig die Version der Datei feststellen?

_________________
Gruß
Jürgen

Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie!
Nouba
nicht ganz unwissend :)


Verfasst am:
16. Nov 2012, 20:29
Rufname:
Wohnort: Berlin


AW: Feststellen der Version einer AccDB/MDB - AW: Feststellen der Version einer AccDB/MDB

Nach oben
       Version: (keine Angabe möglich)

Hallo Jürgen,

schau Dir CurrentProject.FileFormat an.

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
JMalberg
Es wird so langsam sinnig ...


Verfasst am:
16. Nov 2012, 21:26
Rufname:
Wohnort: Saarbrücken

AW: Feststellen der Version einer AccDB/MDB - AW: Feststellen der Version einer AccDB/MDB

Nach oben
       Version: (keine Angabe möglich)

Danke. Sieht besser aus
Code:
Public Function GetAccessVersionDB(TestDBname As String, Optional Password As String = "") As Variant   'Byte
    Dim objAccess As Access.Application     'Object     'Access
   
    Set objAccess = CreateObject("Access.Application")
    objAccess.OpenCurrentDatabase TestDBname, False, Password
    GetAccessVersionDB = objAccess.CurrentProject.FileFormat
    objAccess.CloseCurrentDatabase      'Quit  'Close
    Set objAccess = Nothing
End Function
Allerdings wird dann die DB als Anwendung gestartet und eben auch das Startformular bzw Autoexec-Makro.
Wie kann ich denn das umgehen?

_________________
Gruß
Jürgen

Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie!
steffen0815
VBA-Programmierer


Verfasst am:
16. Nov 2012, 21:36
Rufname:

AW: Feststellen der Version einer AccDB/MDB - AW: Feststellen der Version einer AccDB/MDB

Nach oben
       Version: (keine Angabe möglich)

Hallo,
irgendwie habe ich dein Problem nicht verstanden Confused
Zitat:
In DB.Properties("AccessVersion") steht "09.50" => V11
Das Ergebnis ist doch korrekt. Wo ist das Problem?
_________________
Gruß Steffen
JMalberg
Es wird so langsam sinnig ...


Verfasst am:
17. Nov 2012, 03:02
Rufname:
Wohnort: Saarbrücken

AW: Feststellen der Version einer AccDB/MDB - AW: Feststellen der Version einer AccDB/MDB

Nach oben
       Version: (keine Angabe möglich)

@steffen: Ich brauche aus verschiedenen Gründen die korekte Formatversion und dieser Code stimmt bei diesen Bedingungen nicht
Zitat:
Meine TestDB "xyz.mdb" ist mit Acc2007 im Acc2003-Format erstellt worden und GetAccessVersionDB gibt jetzt V12 aus. Es sollte aber V11 sein.

In DB.Properties("AccessVersion") steht "09.50" => V11
In DB.Version steht "12.0" => V12
Wird eine 2003-MDB mit Access2007/2010 bearbeitet, wird unter mir noch nicht bekannten Bedingungen DB.Version auf "12.0" gesetzt, obwohl DB.Properties("AccessVersion") auf "09.50"=V11 bleibt.

Ich habe verschiedene DBs getestet:
Code:
Version2010.accdb     12    korrekt
Version2003.mdb        9    falsch, sollte 11 sein
Version2003_2.mdb     11    korrekt
Hier nochmal der Kern-Code
Code:
            ' Für Versionen 1.0 und 2.0 wird die Jet Version verwendet, für Versionen darüber die AccessVersion property.
            bytDbVersion = Val(DB.Version)
            Select Case bytDbVersion
              Case 12:              mAccessVersionDB = 12   'Acc 2007/2010
              Case 3, 4:
                Select Case DB.Properties("AccessVersion")
                    Case "09.50":   mAccessVersionDB = 11   'Acc 2003
                    Case "08.50":   mAccessVersionDB = 9    'Acc 2000
                    Case "07.53":   mAccessVersionDB = 8    'Acc 97
                    Case "06.68":   mAccessVersionDB = 7    'Acc 95
                    'Case Else:      mAccessVersionDB = Val(db.Properties("AccessVersion"))
                End Select
              Case 2:               mAccessVersionDB = 2    'Acc 2.0
              Case 1:               mAccessVersionDB = 1    'Acc 1.x
              Case Else:            mAccessVersionDB = bytDbVersion
            End Select

_________________
Gruß
Jürgen

Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie!



VersionTest.zip
 Beschreibung:

Download
 Dateiname:  VersionTest.zip
 Dateigröße:  44.49 KB
 Heruntergeladen:  12 mal

MissPh!
Office-VBA-Programmiererin


Verfasst am:
18. Nov 2012, 12:07
Rufname:
Wohnort: NRW

AW: Feststellen der Version einer AccDB/MDB - AW: Feststellen der Version einer AccDB/MDB

Nach oben
       Version: (keine Angabe möglich)

Hi,

was wäre, wenn du lediglich die Properties auswertest?

_________________
Gruß MissPh!
JMalberg
Es wird so langsam sinnig ...


Verfasst am:
18. Nov 2012, 13:41
Rufname:
Wohnort: Saarbrücken


AW: Feststellen der Version einer AccDB/MDB - AW: Feststellen der Version einer AccDB/MDB

Nach oben
       Version: (keine Angabe möglich)

Nur die Properties sind leider auch nicht eindeutig und daraus lässt sich mWn keine Version >V11/Acc2003 erkennen.

Es ist zum Mäusemelken... Ich finde keine eindeutige Regel oder Daten.

_________________
Gruß
Jürgen

Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie!
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Formulare: Listenfeld funktioniert in mdb, als accdb ist es leer? 14 Petrocelli 300 22. Aug 2012, 15:05
Petrocelli Listenfeld funktioniert in mdb, als accdb ist es leer?
Keine neuen Beiträge Access Tabellen & Abfragen: wie Ergebniszusammenfassung aus mehreren *.mdb Files 6 cmjub 292 13. Okt 2011, 11:30
Gast wie Ergebniszusammenfassung aus mehreren *.mdb Files
Keine neuen Beiträge Access Formulare: Mdb (2002-2003) in eine 2003 Mde umwandeln 0 derArb 484 21. Aug 2010, 21:57
derArb Mdb (2002-2003) in eine 2003 Mde umwandeln
Keine neuen Beiträge Access Tabellen & Abfragen: Kein Import von Paradox 7 nach Access 2000 in .mdb 2 Hermann Nobel 1503 26. Mai 2010, 10:41
gcalvia Kein Import von Paradox 7 nach Access 2000 in .mdb
Keine neuen Beiträge Access Formulare: Anlage mdb wird geblockt - Access 2007 0 GeorgK 597 21. Sep 2009, 12:37
GeorgK Anlage mdb wird geblockt - Access 2007
Keine neuen Beiträge Access Tabellen & Abfragen: 2 Tabellen vergleichen und Unterschiede feststellen 1 Gast 2029 09. Aug 2006, 16:26
Nouba 2 Tabellen vergleichen und Unterschiede feststellen
Keine neuen Beiträge Access Formulare: Feststellen, welches Feld den Fokus hat? 1 Florus 2323 21. Nov 2005, 23:19
gaga Feststellen, welches Feld den Fokus hat?
Keine neuen Beiträge Access Programmierung / VBA: per Skript eine mdb Datei nach xls exportieren 3 antonatom 1096 05. Sep 2005, 13:11
Willi Wipp per Skript eine mdb Datei nach xls exportieren
Keine neuen Beiträge Access Tabellen & Abfragen: Öffnen von mdb 3 dAccess 2513 02. Aug 2005, 18:41
jens05 Öffnen von mdb
Keine neuen Beiträge Access Programmierung / VBA: Unterschiede feststellen 0 mknelles 495 11. Mai 2005, 09:20
mknelles Unterschiede feststellen
Keine neuen Beiträge Access Tabellen & Abfragen: mdb wird riesengross 1 wyver 496 02. Mai 2005, 20:41
jens05 mdb wird riesengross
Keine neuen Beiträge Access Programmierung / VBA: Tabellen aus .adp in .mdb kopieren 6 dot 2928 12. Apr 2005, 12:11
Gast Tabellen aus .adp in .mdb kopieren
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft-Excel Diagramme