Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADO Fehler - Provider fehlt (https://www.delphipraxis.net/185067-ado-fehler-provider-fehlt.html)

simmi 12. Mai 2015 15:24

Datenbank: Access • Version: 2013 • Zugriff über: ADO

ADO Fehler - Provider fehlt
 
OS: Windows 7 64 - Delphi XE5 - Access 2013 64

Die Zielplattform soll 64 Bit Windows sein. Ich erhalte die Fehlermeldung, das der Provider nicht installiert ist. Für die Verbindung mit ADO habe ich zwei verschiende Provider versucht.
  • Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\Programm\Daten\dq.accdb;Persist Security Info=False
  • Provider=Microsoft.ACE.OLEDB.15.0;Data Source=d:\Programm\Daten\dq.accdb;Persist Security Info=False
Den Satz aus dem Internet
…ein Programm, auch wenn es 32 Bit ist, das auf einem 64 Bit Betriebssystem erstellt wird, kann nicht auf eine mit einem 32 Bit Office 2007-2013 erstellte Access DB zugreifen…
habe ich auch beachtet. Dafür die 64 Bit Variante des MS Office 2013 installiert und die Datenbanken darauf umgestellt. Sofern ich die Zielplattform 32 Bit Windows wähle ist alles korrekt.

Sofern jemand eine Lösung dafür kennt, Danke.

SvB 12. Mai 2015 18:17

AW: ADO Fehler - Provider fehlt
 
eventuell musst Du noch die Microsoft Access Database Engine 2010 Redistributable in der 64-Bit Variante installieren. Ich weiß nicht genau, ob diese mit Office x64 schon installiert werden.

Du kannst ja auch mal unter x64 mit
Delphi-Quellcode:
GetProviderNames(Names: TStrings);
aus Data.Win.ADODB die Provider auslesen, die installiert sind.

Sir Rufo 12. Mai 2015 18:30

AW: ADO Fehler - Provider fehlt
 
Ich habe da mal von so etwas ganz komischen gehört und soll sich ODBC-Datenquellen (32-Bit) bzw. ODBC-Datenquellen (64-Bit) nennen. Angeblich unter der Systemsteuerung / Verwaltung zu finden.

Dort soll es so eine Registerkarte Treiber geben und Datenquellen soll man dort auch anlegen können. Angeblich sieht man dort sogar beim hinzufügen einer Datenquelle die installierten Treiber.

Und nun zum absoluten Highlight:

Führe mal dieses Dingens hier aus (einmal als 32Bit und dann als 64Bit) und hau auf den Button. Da kann man sich so einen ConnectionString zusammenklicken.
Delphi-Quellcode:
unit Form.Main;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Data.DB, Data.Win.ADODB;

type
  TForm1 = class( TForm )
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click( Sender: TObject );
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click( Sender: TObject );
begin
  Memo1.Text := PromptDataSource( Self.Handle, Memo1.Text );
end;

end.
Das geht im übrigen auch, wenn man zur Designtime einen Doppelklick auf die Komponente
Delphi-Quellcode:
TADOConnection
macht ... schon ist das heitere ConnectionString-Raten zu Ende.

jobo 12. Mai 2015 19:39

AW: ADO Fehler - Provider fehlt
 
Das geht schon ohne weiteres indem man eine leere* TextDatei** mit der Endung .udl anlegt und doppelklickt. Damit kann man die ohne Hilfs-Programm anlegen.
Bei 64 Bit OLEDB Providern muss man leider so n Kunstgriff mit rundll.exe opendslfile machen und bekommt entsprechend den Kram für 64 bit angezeigt. Steht irgendwo im Internet, wie der Aufruf lautet.

* leer genügt, darf aber auch schon was richtiges drin stehen.
** was eine Textdatei ist, kann man hier auch aktuell irgendwo in einem Thread finden. ;)

simmi 14. Mai 2015 07:17

AW: ADO Fehler - Provider fehlt
 
Danke für eure Tipps. Ich werde diese einmal durcharbeiten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz