none
Access 97 Datei nach Access2003 konvertieren

    Frage

  • Heute habe ich mir Office 2013 installiert.

    Jetzt kann ich keine Access97 Datei öffnen und konvertieren. Mit Access2010 ging das noch.

    Weiss jemand wie ich das jetzt mache kann ?

    Danke Andreas

    PS: Wenn ich nicht so anhängig vom MS wäre, würde ich mir auch einen MAC kaufen. Hab auf Win8.1 und VS 2013 und Office 2013 umgestellt. Seitdem nur noch ärger..... (Warum Altbewährtes, wenn man Nutzer mit neuem Ärger kann)

    Freitag, 6. Dezember 2013 19:11

Antworten

  • Lieb, wie ich bin, mach ich das ja trotzdem. Aber ganz ehrlich, das hat jetzt 2 Minuten gedauert, sowas sollte man zumindest mal selbst probieren, bevor man andere drum bittet.

    private void button1_Click( object sender, EventArgs e )
    {
        CompactDatabase();
    }
    
    private void CompactDatabase()
    {
    String Provider;
    String SourceDatabase;
    String TargetDatabase;
    String Path;
    String SourceConnectionString;
    String TargetConnectionString;
    
        Provider       = "PROVIDER=Microsoft.Jet.OLEDB.4.0;";
        SourceDatabase = "source.mdb";
        TargetDatabase = "target.mdb";
        Path           = "X:\\Order\\Datenbank\\";
    
        SourceConnectionString = Provider + "DATA SOURCE=" + Path + SourceDatabase + ";";
        TargetConnectionString = Provider + "DATA SOURCE=" + Path + TargetDatabase + ";";
    
        JRO.JetEngine JetEngine;
        JetEngine = new JRO.JetEngine();
        JetEngine.CompactDatabase( SourceConnectionString, TargetConnectionString );
        JetEngine = null;
    }
    

    Wie gesagt, Verweis auf die COM DLL wie oben angegeben nicht vergessen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 7. Dezember 2013 14:52

Alle Antworten

  • Am 06.12.2013 schrieb Andreas Waning:

    Jetzt kann ich keine Access97 Datei öffnen und konvertieren. Mit Access2010 ging das noch.

    Du könntest die kostenlose A2010er Runtime downloaden und
    installieren. Evtl. funktioniert das.

    Weiss jemand wie ich das jetzt mache kann ?

    Wenn das mit der Runtime nicht funktioniert, bleibt nur A2010 in der
    Vollversion übrig. Alternativ zu jemandem bringen der die
    Konvertierung vornehmen kann.


    Servus
    Winfried

    Gruppenrichtlinien
    WSUS Package Publisher
    HowTos zum WSUS Package Publisher
    NNTP-Bridge für MS-Foren

    Freitag, 6. Dezember 2013 19:18
  • Hallo Andreas,

    Du musst die Anwendung mit Acc 2000, 2002, 2003, 2007 o der 2010 in das jeweils aktuelle Format konvertieren. Diese Datei kannst Du dann mit Access 2013 öffnen.


    Thomas@Team-Moeller.de
    Blog: Blog.Team-Moeller.de
    Homepage: www.Team-Moeller.de



    Samstag, 7. Dezember 2013 11:59
  • Danke für die Antworten.

    Das weis ich. Ich hab aber nicht Access2013 und Access2010 auf meinem Rechner. 

    Schön wäre wenn man mit einem Tool die Datei konvertieren könnte. Gibt es sowas ?

    Ich habe Office2013 installiert und will nicht noch eine altes Access auf dem Rechner haben. Ich brauch für Migrationen aber eine Möglichkeit Access97 zukonvertieren. (Sich kann ich auch jedes mal einen "alten" PC nutzen. Den hab ich aber nicht immer dabei.

    Ein Tool wäre ideal !!!

    Danke Andreas

    Samstag, 7. Dezember 2013 12:19
  • Hallo Andreas,

    die Liste der Tools habe ich Dir genannt:
    Access 200, 2002, 2003, 2007 oder 2010

    > Ich habe Office2013 installiert und will nicht noch eine altes
    > Access auf dem Rechner haben. Ich brauch für Migrationen
    > aber eine Möglichkeit Access97 zukonvertieren.

    Wenn Du alle Datenbank auf einmal konvertierst, dann brauchst Du die Installation ja nicht dauerhaft.

    CU


    Thomas@Team-Moeller.de
    Blog: Blog.Team-Moeller.de
    Homepage: www.Team-Moeller.de



    Samstag, 7. Dezember 2013 13:06
  • Hallo Andreas,

    wenn dir ein kleines VBScript nichts ausmacht, kannst Du das per JRO.JetEngine machen. Eigentlich gibt es auch hier keine Konvertierung, die Methode CompactDatabase erzeugt aber eine Zieldatei im Format Access 2002-2003, auch wenn das Ausgangmaterial Access 97 ist.

    Dim Provider
    Dim SourceDatabase
    Dim TargetDatabase
    Dim Path
    Dim SourceConnectionString
    Dim TargetConnectionString
    
        Provider       = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
        SourceDatabase = "source.mdb"
        TargetDatabase = "target.mdb"
        Path           = "X:\Ordner\Datenbank\Konvertierung\"
    
        SourceConnectionString = Provider & "DATA SOURCE=" & Path & SourceDatabase & ";"
        TargetConnectionString = Provider & "DATA SOURCE=" & Path & TargetDatabase & ";"
    
    Dim JetEngine
    Set JetEngine = CreateObject("JRO.JetEngine")
        JetEngine.CompactDatabase SourceConnectionString, TargetConnectionString
    Set JetEngine = Nothing
    

    Achte beim Aufruf aber bitte darauf, dass die 32 Bit CScript Engine verwendet wird. Ein Doppelklick auf die .vbs Datei auf einem 64 Bit System oder der Aufruf per cscript X:\Pfad\Datei.vbs erzeugt einen Fehler, da das JRO.JetEngine Objekt nicht erzeugt werden kann.

    Ruf die Datei daher bspw. in einer DOS Box bitte so auf:

    C:> C:\Windows\SysWOW64\cscript X:\Ordner\CompactDatabase.vbs


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 7. Dezember 2013 13:41
  • Ich mach dann mal die Ingrid^^,

    wenn dir ein kleines VBScript nichts ausmacht, ...

    man kann das natürlich auch mit einer kleinen .NET Anwendung machen. Die muss dann nur explizit als x86 kompiliert werden.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 7. Dezember 2013 14:07
  • Hallo Stefan,

    in .NET (C#) wäre das super. 

    Hast du da ein CodeSnippsel ?

    Danke,

    Andreas

    Samstag, 7. Dezember 2013 14:33
  • Hallo Andreas,

    och komm. Die paar Zeilen wirst Du doch problemlos schreiben können.

    Der Code kann fast 1:1 in VB.NET übernommen werden. Noch die Typdeklarationen einfügen ( ... As String, ... As JRO.JetEngine, ... ) und die beiden Set Angaben entfernen (also nur das Wort Set jeweils, der Rest bleibt^^) und CreateObject( "JRO.JetEngine" ) durch New JRO.JetEngine setzen.

    In C# sind die paar Codezeilen auch schnell übersetzt. Probiers doch bitte einfach mal, ein wenig Eigeninitiative ist nie verkehrt.

    Verweis auf die COM DLL nicht vergessen (Microsoft Jet and Replication Objects 2.6 Library), fertig.

    Alternativ kannst Du das auch direkt in Access VBA machen. Siehe dazu:

      http://msdn.microsoft.com/de-de/library/office/bb237197.aspx


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community



    Samstag, 7. Dezember 2013 14:43
  • Lieb, wie ich bin, mach ich das ja trotzdem. Aber ganz ehrlich, das hat jetzt 2 Minuten gedauert, sowas sollte man zumindest mal selbst probieren, bevor man andere drum bittet.

    private void button1_Click( object sender, EventArgs e )
    {
        CompactDatabase();
    }
    
    private void CompactDatabase()
    {
    String Provider;
    String SourceDatabase;
    String TargetDatabase;
    String Path;
    String SourceConnectionString;
    String TargetConnectionString;
    
        Provider       = "PROVIDER=Microsoft.Jet.OLEDB.4.0;";
        SourceDatabase = "source.mdb";
        TargetDatabase = "target.mdb";
        Path           = "X:\\Order\\Datenbank\\";
    
        SourceConnectionString = Provider + "DATA SOURCE=" + Path + SourceDatabase + ";";
        TargetConnectionString = Provider + "DATA SOURCE=" + Path + TargetDatabase + ";";
    
        JRO.JetEngine JetEngine;
        JetEngine = new JRO.JetEngine();
        JetEngine.CompactDatabase( SourceConnectionString, TargetConnectionString );
        JetEngine = null;
    }
    

    Wie gesagt, Verweis auf die COM DLL wie oben angegeben nicht vergessen.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 7. Dezember 2013 14:52
  • Hallo Stefan,

    das klappt gut. Danke für deine Hilfe.

    Gruß Andreas

    PS: Du hast recht das hätte ich auch selbst umsetzen können.

    Montag, 9. Dezember 2013 07:42