none
AccessDatabaseEngine und Access 2007

Antworten

Alle Antworten

  • Hallo Michael,

    das ist ein typisches Problem von Access (bzw. Office), dass es die Bibliotheken als seine Domäne ansieht.  Es kann nur eine Version auf dem Rechner geben.

    Office / Access 2007 erkennt, dass die Dateien verändert wurden und startet eine Selbstreparatur. Die neuere Version erkennt es dabei nicht als valide an. Darauf wird indirekt auch hingewiesen in:
    Fehlermeldung "Sie können nicht die 64-Bit-Version von Office 2010 installieren, weil 32-Bit-Versionen von Office-Produkten installiert sind"
    (wo man Office 2007 deinstallieren muss, wenn man eine 64-Bit Version von Office 2010 verwendet will).

    Beste Lösung (neben dem Verzicht auf die ACE):
    Wenn Dein Programm mit einer Access 2007 Datenbank-Version zufrieden ist, diese zu verwenden. Denn faktisch unterscheiden die sich nicht wirklich, wenn man nur die Database-Engine verwendet - und Access als Anwendung außen vor lässt.

    Für Office 2007 sollte mindestens Service Pack 2 (aktuell ist SP 3) installiert sein, da es die Kompatibilität zwischen Access 2007/2010 verbessert (siehe auch die Antwort von Sharon M in Deinem zweiten Link).

    Gruß Elmar

    Dienstag, 20. November 2012 16:15
  • Hallo Elmar, vielen Dank für deine Antwort. Problem ist nur, das ich auf dem PC wo ich es laufen lassen will , nur Access 2007 32 Bit installiert habe. Ausserdem will ich die AccessDatabaseEngine 32 Bit zusätzlich installieren. Nicht das komplette Access 2010.
    Aber scheinbar kommt das System hier schon völlig durcheinander.
    >Für Office 2007 sollte mindestens Service Pack 2 (aktuell ist SP 3) installiert sein, da es dieKompatibilität zwischen Access 2007/2010 verbessert .
    Auf dem PC ins Windows 7 installiert und ist auf dem aktuellsten Update stand.

    >Beste Lösung (neben dem Verzicht auf die ACE):
    >Wenn Dein Programm mit einer Access 2007 Datenbank-Version zufrieden ist, diese zu verwenden

    Ist ja auch wieder eine völlig verkorkste Lösung. Sorry da kannst du ja nichts dafür, aber für was hast Access 2010 wenn es damit nur üble Probleme gibt ? Ich hatte schon anderen Ärger mit der Version.

    Beschäftigt sich keiner denn aktuell mehr damit ? (Sage nur Click Once Setup)
    Ich sehe ja schon schwarz wenn ich mit der Windows 8 Programmierung starte.

    Dienstag, 20. November 2012 18:44
  • Hallo Michael,

    mal so ganz blöd gefragt: Warum willst Du dir den Krams mit ACE antun? Kompilier deine Anwendung als 32 Bit (x86), nimm die Jet-Engine und gut ist. Ok, das klappt dann halt nur mit .mdb und nicht mit den .accdb Dateien aber ich wüsste nicht, was die wirklich besser können, wenn man sie per OleDb ansprechen will.

    Alternativ musst Du halt notgedrungermaßen alle möglichen Varianten vorhalten.

    OS 64 Bit, Access 2007 32 Bit -> ACE 2007 32 Bit
    OS 64 Bit, Access 2007 64 Bit -> ACE 2007 64 Bit
    OS 32 Bit, Access 2007 32 Bit -> ACE 2007 32 Bit

    OS 64 Bit, Access 2010 32 Bit -> ACE 2010 32 Bit
    OS 64 Bit, Access 2010 64 Bit -> ACE 2010 64 Bit
    OS 32 Bit, Access 2010 32 Bit -> ACE 2010 32 Bit

    Ggfs. muss man dabei dann zusätzlich noch auf die installierten Office ServicePacks achten. IMHO ist es das nicht wirklich wert.


    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

    Dienstag, 20. November 2012 19:07
  • Hallo Michael,

    ich hatte es hier schon mal geschrieben:
    Seit die Jet Engine Teil von Office ist, ist sie kein Teil des Betriebssystems (bzw. MDACs) mehr und unterliegt den Schalten und Walten des Office / Access Teams. Und die Wege der Office Teams waren immer schon ein wenig "verkorkst".

    Für mich - der vor zehn Jahren als Access MVP unterwegs war - war damit die Jet als Datenbank für Lösungen abseits von Access gestorben.

    Da Du Windows 8 ansprichst:
    Dort gilt für die Windows Runtime Apps, das nicht einmal der SQL Server / Compact unterstützt wird, geschweige denn die Jet. Da kreisen derzeit solche Lösungen wie diese:
    http://timheuer.com/blog/archive/2012/08/07/updated-how-to-using-sqlite-from-windows-store-apps.aspx

    (und Tim Heuer ist ein Microsoft Program Manager, also nicht irgendwer)

    SQLite wiederum läuft auch hervorragend unter Standard ADO.NET  ;)

    Gruß Elmar

    Dienstag, 20. November 2012 19:53
  • Hallo Stefan, du schreibst
    >>OS 32 Bit, Access 2007 32 Bit -> ACE 2007 32 Bit

    Verstehe ich nicht so ganz. Also ich habe Win7 mit Access 2007 32 Bit auf einem Pc am laufen. Hier will ich mein Programm ausführen, welches eine Access 2010 benutzt ! Brauch ich da gar keine AccessDatabaseEngine 2010 drauf installieren , um die Access2010 DB zu öffnen?
    Sind die benötigten Treiber in der ACE 2007 drin?
    Wäre das folgende Version
    http://www.microsoft.com/de-de/download/details.aspx?id=23734

    Aber an beide, ich verstehe schon, das es doch besser ist die gute alte Access 2007 zu verwenden.

    @Elmar
    >Da Du Windows 8 ansprichst:
    >Dort gilt für die Windows Runtime Apps, das nicht einmal der SQL Server / Compact unterstützt wird, >geschweige denn die Jet

    Ja das habe ich auch schon gelesen. Da wird einem Angst und Bange. Kann mir nicht vorstellen irgendwie alle Daten nur noch Online zu halten. Soll ja das bevorzugte Sytem auf WP8 sein.
    Gruss

    Dienstag, 20. November 2012 20:10
  • Hallo,

    michael floeter wrote:

    Hallo Stefan, du schreibst

    OS 32 Bit, Access 2007 32 Bit -> ACE 2007 32 Bit

    Verstehe ich nicht so ganz. Also ich habe Win7 mit Access 2007 32 Bit
    auf einem Pc am laufen. Hier will ich mein Programm ausführen, welches
    eine Access 2010 benutzt ! Brauch ich da gar keine AccessDatabaseEngine
    2010 drauf installieren , um die Access2010 DB zu öffnen? Sind die
    benötigten Treiber in der ACE 2007 drin?

    Die Frage ist, ob du das DB-Format aus 2010 = ACE, Zugriff per ACEDAO auch
    wirklich brauchst.

    Das ist dann der Fall, wenn du die neuen Datentypen Multi-Value-Field,
    Attachment und Calculated Field verwenden willst. Alle drei erscheinen an
    der Oberflaeche als nicht normalisiert (obwohl sie es im ueber interne
    Systemtabellen sind) und wurden wegen Kompatibilitaet zu SharePoint
    eingefuehrt.

    Wenn du diese nicht brauchst, kannst du auf ACE verzichten, wie dir Elmar
    und Stefan schon nahegelegt haben. Solltest du mit SQL Server als Backend
    arbeiten, kannst du die neuen Datentypen eh nicht verwenden.

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Montag, 3. Dezember 2012 15:02
    Moderator
  • Hallo Michael

    Was ist der Grund, dass Du eine ACCDB und nicht eine MDB einsetzt? Benutzt Du die neuen Felddatentypen der ACE wie MultiValueFields oder Attachment oder basiert Deine Anwendung auf Calculated Fields oder setzt sie Datenmakros ("Trigger") ein?

    Falls ja, dann ist ACCDB ok und halt mit Installations verbunden und Du landest, wie Du bereits gesehen hast, in der DLL Hölle, welche nun noch von 32 auf 64 bit erweitert wurde. Und Du wirst erhebliche Mühe haben, das jemals auf einen anderen RDBMS zu migrieren, falls das mal notwendig werden sollte.

    Falls nein, dann empfehle ich Dir dringend, DAO, rsp. Jet und nicht ACE zu verwenden und eine MDB einzusetzen. Es gibt dann keinen Grund es anders zu machen, ausser wenn Deine Anwendung im 64-bit Modus laufen muss und Du nicht auf die WOW64 (die 32-bit Umgebung des 64-bit Win7) basieren kannst/darfst. Allerdings: Selbst MS empfiehlt Office in der WOW64 im 32-bit Modus zu installieren. Wenn Du also auch mit Office Anwendungen zusammenspielen musst, dann wirst Du zwangsläufig in der WOW32 landen.

    Der grosse Vorteil von DAO/Jet: Die Jet Engine ist seit vielen Versionen von Windows Bestandteil des Betriebssytems und wird automatisch (und nicht als Option) bei jeder Installation installiert. Du musst da nichts installieren und hast über DAO (und andere Mechanismen wie ODBC, OLEDB, ADO) einen vollständigen Satz von Zugriffsmethoden, mit denen Du auf die Datenbank zugreifen kannst - kostenfrei vom Betriebssystem zur Verfügung gestellt.

    Daher nochmals meine dringende Empfehlung: Verwende Jet, wenn es machbar ist und bleibe im 32-bit Raum den das Betriebssystem zur Verfügung stellt.

    "michael floeter" schrieb im Newsbeitrag news:9602de75-5443-430f-99f6-e18e7b2632e4@communitybridge.codeplex.com...

    Hi zusammen, in meiner Anwendung benutze ich eine Access 2010 Datenbank.
    Jetzt wollte ich mein Programm geben, der nur Access 2007 auf dem
    Rechner hat. Dies erkenne ich und installier die Access Database
    Engine. Mein Programm läuft nun und er öffnet die Access Datenbank.
    Will er aber nun eine Access Datenbank öffnen, kann er diese nicht
    öffnen und er das System versucht irgendwie Access 2007 zu reparieren.
    Anschliessend kann er die Access 2007 Datenbank wieder öffnen , aber
    nicht mehr die Access 2010 Datenbank.

    Dienstag, 4. Dezember 2012 06:24
  • Hallo Elmar

    "Elmar Boye [MVP]" schrieb im Newsbeitrag news:a7c8bafe-9187-45be-a919-835454a35a25@communitybridge.codeplex.com...

    ich hatte es hier schon mal geschrieben:
    Seit die Jet Engine Teil von Office ist, ist sie kein Teil des
    Betriebssystems (bzw. MDACs) mehr und unterliegt den Schalten und
    Walten des Office / Access Teams. Und die Wege der Office Teams waren
    immer schon ein wenig "verkorkst".

    Ich sehe das nicht so schwarz wenn es um die eigentliche Jet geht. Es basieren einge betriebsnahe Komponenten darauf und die eigentliche Jet (32-bit) hat das Office Team glücklicherweise kaum angefasst. Diese haben mit A2007 den Jet Code genommen und diesen verknorkst als ACE bereit gestellt, dort denormalisierte Datentypen und Trigger, die keine Trigger sind eingebaut, sowie die Präsentation (zB. der MVF) in die Database Engine eingebaut.

    Jet war übrigens IIRC ursprünglich nicht in der Windows/Betriebssystem Gruppe, sondern in der SQL Server Gruppe angesiedelt. Dort wurden auch die wesentlichen Entwicklungen der Jet gemacht. Es ist also auch damals im engeren Sinne nicht Bestandteil des Betriebssystemes gewesen und wurde nur einfach mit diesem vertrieben und installiert.

    Allerdings: Was ist "Bestandteil des Betriebssystems"? Für mich gilt: Solange Betriebssystem(nahe) Komponenten auf Jet basieren und die Jet Engine automatisch bei der Betriebsystem Installation installiert wird, dann ist es mir eigentlich gleich, ob nun das Office Team, welches sich auf farbige UIs konzentriert, diese Komponente im Körbchen hat, solange diese nicht direkt angefasst wird und das ist eigentlich der Fall. Das was sie angefasst haben, haben sie als neue ACE Engine rausgebracht und ist auch 64-bit verfügbar, Jet haben Sie in den letzten Jahren glücklicherweise nicht mehr angefasst.

    Wenn ich bei der JET bleibe und die DAO Zugriffsmetoden verwende, dann bin ich IMNSHO auf einer sicheren Seite. Ob allerdings DAO auch in Win8 noch zwangsweise mit dem Betriebssystem installiert wird, weiss ich nicht. Und wenn ich sehe, was die Windows Gruppe aus Windows gemacht hat, bin ich eigentlich sogar froh, wenn Jet nicht mehr dort angesiedelt ist und die Office Gruppe Angst hat, Jet direkt anzufassen ;-)

    Für professionelle Einsatzgebiete bieten sich andere Datenbank Manager an, allerdings bedeutet dies dann jeweils eben die Installation der selben (Services, Konfiguration, etc), sowie ein (minimales) Operating. Bei Jet entfällt das, daher betrachte ich es für viele Zwecke als genügend und geeignet.

    Gruss
    Henry

    Dienstag, 4. Dezember 2012 06:42