Autor |
Beitrag |
daywalker0086
      
Beiträge: 243
Delphi 2005 Architect
|
Verfasst: Fr 16.01.15 09:35
Hallo Leute,
ich habe ein großes Problem beim verbinden mit einer Access Datenbank.
Ich hoffe ich poste den Beitrag in der richtige Rubrik.
Also ich habe ein Delphiprogramm mit dem ich mich mit Hilfe von ADO Komponentne auf eine Datenbank verbinde.
Das funktioniert auch super bei mir auf den PC und noch bei 3 anderen PCs in der Firma. Ohne das ich irgendwas zusätzlich installieren müsste.
Auf manchen PC kommt aber am Anfang die Meldung das der Provider nicht gefunden wurde.
ich benutze folgenden Connection String:
Quelltext 1:
| Provider=Microsoft.ACE.OLEDB.12.0;Data Source=T:\VERWALTUNG-TECHNIK\Geraetedb.accdb;Persist Security Info=False |
Ok dachte ich mir installierst ihn mal: Microsoft Access Database Engine 2010 Redistributable
runtergeladen und installiert
Dann kommt aber die Meldung: "Nicht erkennbares Datenbankformat '"meinDateipfad".accdb'
Ja was nun sprach Zeus.
Gibt es irgendwelche Einträge in der Registry die man mal vergleichen könnte zwischen den PC?
Mindestens einer wo es nicht geht hat das gleiche Office und das gleiche Windows wie ich und bei mir läufts ohne Probleme.
Ich bin jetzt echt ratlos.
Moderiert von Th69: Topic aus Datenbanken (inkl. ADO.NET) verschoben am Fr 16.01.2015 um 09:11
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 16.01.15 09:57
Ich nutze ADO nicht, aber ich nehme mal an das ist ein 64-Bit System? Da ist das Problem nämlich bekannt.
Es sollte reichen die "2007 Office System-Treiber: Datenkonnektivitätskomponenten" zu installieren:
www.microsoft.com/de...etails.aspx?id=23734
|
|
daywalker0086 
      
Beiträge: 243
Delphi 2005 Architect
|
Verfasst: Fr 16.01.15 11:13
Also ich denke ich habe das Problem gefunden.
Wie du schriebst handelt es sich um 64bit Systeme, wobei aber auf den funktionierenden PC's Office in der 32bit Version installiert ist.
Auf den nicht funktionierenden PC's ist Office 64bit installiert.
Dein Link mit dem Treibern funktioniert übrigens nicht um das Problem zu beheben.
Ich werde jetzt mal 32bit Office installieren und schauen ob der Fehler behoben ist.
Man müsste mal probieren die Delphi Anwendung für 64bit Systeme zu kompilieren, aber das kann ich mangels Kompiler nicht testen.
|
|
jaenicke
      
Beiträge: 19313
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 16.01.15 12:20
daywalker0086 hat folgendes geschrieben : | Man müsste mal probieren die Delphi Anwendung für 64bit Systeme zu kompilieren, aber das kann ich mangels kompiler nicht testen. |
Dafür sollte ja die Trial von XE7 reichen. Wenn das dann allerdings nicht gekauft werden kann, bringt das auch nichts.
|
|
airdreamer
Hält's aus hier
Beiträge: 7
|
Verfasst: Mo 23.09.24 22:42
So, nun habe ich mir einmal alles durchgelesen.
Ich habe ebenfalls das Problem dass ich keine Access (accdb) Verbindung hinbekomme.
Umgebung: Windows 10, Embarcadero Delphi 11.3, Access 2021 (aus Hilflosigkeit auch noch Access Database Engine 2016 redist) installiert.
Ich bekomme keinen Datenprovider (z.B. Microsoft Access) angezeigt der accdb Dateien unterstützt.
Wer kann mir eventuell aufs Pferd helfen?
|
|
Th69
      

Beiträge: 4796
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Di 24.09.24 10:58
Die Antwort wurde (dir) in Delphi-PRAXiS: Zugriff auf ACCESS (ACCDB) über ADO gegeben (Crossposts bitte immer selber hier angeben): also OLE-Treiber "Microsoft.ACE.OLEDB.12.0" herunterladen.
Für diesen Beitrag haben gedankt: Sinspin
|
|
airdreamer
Hält's aus hier
Beiträge: 7
|
Verfasst: Di 24.09.24 19:53
Wie ich bereits schrieb, habe ich ALLE Antworten durchprobiert.
Die Probleme fangen damit an, dass es keinen gültigen Downloadlink für die Datei "Microsoft.ACE.OLEDB.12.0" mehr gibt.
Es wird auf die Version 16 verwiesen, der dazugehörige Link führt zur "Microsoft Access Database Engine 2016 Redistributable"
Wie ich auch geschrieben habe, habe ich diese auch installiert
Siehe Screenshots
Deine Antwort hilft mir also leider nicht weiter.
Einloggen, um Attachments anzusehen!
|
|
Th69
      

Beiträge: 4796
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Di 24.09.24 21:12
Sorry,
daß Microsoft die Treiber-Version 12 seit diesem Jahr als Download nicht mehr anbietet, sondern stattdessen die Version 16, wußte ich nicht - aber mit dieser sollte es funktionieren.
Hast du denn die (zu deinem Delphi) passende Version installiert (x64 bzw. x32)?
Und dein Screenshot bzgl. ODBC ist irrelevant, denn dies ist veraltet. Darum gibt es ja extra ADO bzw. OLE Treiber.
|
|
airdreamer
Hält's aus hier
Beiträge: 7
|
Verfasst: Mi 25.09.24 00:56
Ja,
Access aus der Version 2021, zusätzlich Microsoft Data Access Engine 2016 redistribution 64 Bit (Alle Office Programme ebenfalls 64 Bit).
Delphi hat als Zielplattform ebenfalls 64 Bit.
Ich muss dringend eine Verbindung zwischen einen SQL Server (geht, keine Probleme) und einer Acess accdb Datenbank herstellen.
Bisher sehe ich kein Land und bin etwas ratlos!
Wie schon erwähnt, alle Tips und Infos abgearbeitet. An irgendeiner Stelle muss noch ein Brett vorm Kopf sein.
|
|
Th69
      

Beiträge: 4796
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Mi 25.09.24 08:08
Was passiert denn, wenn du nicht den Delphi-Dialog benutzt, sondern direkt im Code die Verbindung (mittels ConnectionString) herstellst?
Da du Datenmodule (mit verschiedenen ADO-Komponenten) benutzt, s.a. Mit TADOConnection eine Verbindung zu einem Datenspeicher einrichten.
Und ADOQuery (Delphi) zeigt ein vollständiges Beispiel.
PS: Bei dem Delphi-Dialog geht es darum, ob Delphi selbst als x64 oder x32 läuft (egal was die Zielplattform des Projekts ist).
|
|
airdreamer
Hält's aus hier
Beiträge: 7
|
Verfasst: Mi 25.09.24 14:05
Mein Windows läuft als 64 BIT
Ich bin bei der Installation von Delphi (weder bei 11.3 noch bei 12.2) gefragt worden ob 32 oder 64 Bit Installation, daher gehe ich davon aus dass sich Delphi als 64 Bit installiert hat. Eine entsprechende Info habe ich in der Delphi IDE nicht gefunden.
Zur Access Datenbank, die wurde mir zunächst als accdb Datenbank geschickt, und ich kann sie mit Access auch öffnen. Mir wurde auch kein Username und Passwort mitgeteilt.
Insofern stehe ich auch mit Deinem Embarcadero Beispiel auf den Schlauch.
Ziel soll es sein ein Feld aus Accesstabelle mit Daten einer MS-SQL Datenbank zu aktualisieren. Die Verbindung zum SQL Server macht überhaupt keine Probleme, ich bekomme nur die accdb Datenbank nur nicht verbunden
(Bis hierher schon einmal Danke für Deine Geduld)
|
|
Th69
      

Beiträge: 4796
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Mi 25.09.24 16:20
Ob ein Programm als 32 oder 64 Bit läuft, kannst du im Task Manager sehen, wenn nach dem Programmnamen "(32 Bit)" angezeigt wird - oder eben nicht.
Und den ConnectionString gibt es als Beispiel doch im Eingangsbeitrag. Der Delphi-Dialog macht auch nichts anderes als diesen zusammenzusetzen und in der ".dfm"-Datei direkt zu hinterlegen.
Für dich dann also:
Delphi-Quelltext 1: 2: 3: 4: 5:
| const Filename = '<path-to>/<name>.accdb'; ConnString = 'Provider=Microsoft.ACE.OLEDB.16.0;Data Source=%s;Persist Security Info=False';
adoConnection.ConnectionString := Format(ConnString, [Filename]); |
(und '<path-to>/<name>' entsprechend anpassen)
|
|
airdreamer
Hält's aus hier
Beiträge: 7
|
Verfasst: Mi 25.09.24 17:34
So, Delphi 11.3. und 12.2 laufen als 32 Bit Anwendung!
Heißt nun, dass ich das komplette Office 2021 64 Bit deinstallieren und gegen eine 32 Bit Version austauschen muß, das irritiert, da es für die Database Ole 16 Engine ja sowohl 32 als auch 64 Bit gibt (64 habe ich installiert)
|
|
Th69
      

Beiträge: 4796
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Do 26.09.24 09:57
Nein, damit hat es nichts zu tun - dein Office kann (und sollte) in 64Bit installiert sein. Nur gibt es eben verschiedene Treiber für 32-Bit oder 64-Bit, um auf die Daten zuzugreifen.
Ein 32-Bit Programm kann aber nur auf die Einstellungen für 32-Bit zugreifen (wie z.B. die Liste der Treiber) - genaueres dazu findet man unter dem Stichwort "WOW64".
Du kannst also mit Delphi 32-Bit nur auf die 32-Bit Datenquellen-Treiber zugreifen (dies betrifft aber nur die Auswahl innerhalb des Designers).
Zur Laufzeit, wenn du dein erzeugtes Programm als 64-Bit kompiliert hast, greift dieses jedoch dann auf die 64-Bit Treiberliste zu!
Wie schon geschrieben, erstelle einfach in deinem Code den ConnectionString.
|
|
airdreamer
Hält's aus hier
Beiträge: 7
|
Verfasst: Do 26.09.24 13:44
Das klappt so (bei mir) nicht.
Problem, ich kann die 32 Bit Version des MS Access Datenbankprovider nicht installieren, da Microsoft Office als 64 Bit installiert ist. Ich bekomme die Meldung auch wenn ich die 64 Bit Version des Acces Datenbankprovider 16.0 deinstalliere.
Manuell kann ich den String nicht generieren, da der im Beispiel aufgeführte Datenbank Provider in der Auswahl nicht vorhanden ist.
Auch die restlichen Parameter im Verbindungsstring sind für mich böhmische Dörfer
Einloggen, um Attachments anzusehen!
|
|
Th69
      

Beiträge: 4796
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Do 26.09.24 15:53
Liest du eigentlich, was ich schreibe?
Wenn du doch schon den Code für den Zugriff auf den SQL-Server hast, dann kannst du doch diesen kopieren (und dann eben nur den ConnectionString ändern).
|
|
airdreamer
Hält's aus hier
Beiträge: 7
|
Verfasst: Do 26.09.24 17:45
Nun habe ich auch Antwort von Embarcadero bekommen.
Zitat: | Hello
My name is Steve xxxxx. I am looking at this case.
Really you should be talking to Microsoft about this but you are not doing anything wrong. The error message says it all - you cannot install a 32 bit MSAccess OLE-DB or ODBC driver on a machine running a 64 bit version of MS Office. I have the same problem on the machine that I am typing this reply on. I have another Windows VM that does not have Office installed on where I would look at Access problems.
Regards
Steve xxxxxx
Embarcadero Support
|
Demnach geht es wohl tatsächlich nicht mit installierten 64 Bit Office.
Moderiert von Th69: Quote-Tags hinzugefügt
|
|
Th69
      

Beiträge: 4796
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Fr 27.09.24 11:07
Du hast doch geschrieben:
airdreamer hat folgendes geschrieben: | Delphi hat als Zielplattform ebenfalls 64 Bit. |
Also erzeugt Delphi aus deinem Projekt ein 64-Bit Programm, welches dann auch zur Laufzeit auf den 64-Bit Microsoft.ACE.OLEDB.16.0-Treiber zugreift (den du ja auch installiert hast!).
Ich habe übrigens sowohl Microsoft.ACE.OLEDB.12.0 als auch Microsoft.ACE.OLEDB.16.0 bei mir als 64-Bit installiert und kann auf beide (wenn auch von einem C#-Programm aus) darauf zugreifen (mit demselben ConnectionString)...
airdreamer hat folgendes geschrieben: | Manuell kann ich den String nicht generieren, da der im Beispiel aufgeführte Datenbank Provider in der Auswahl nicht vorhanden ist. |
Du sollst ja auch nicht den Auswahl-Dialog benutzen (da dieser eben nur die 32-Bit Treiber anzeigt), sondern direkt im Code.
Probiere es einfach aus...
|
|