Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   ZEOS und MS-Access (https://www.delphipraxis.net/191453-zeos-und-ms-access.html)

H.Bothur 18. Jan 2017 12:11

Datenbank: ACCESS • Version: ? • Zugriff über: Delphi / ZEOS

ZEOS und MS-Access
 
Moin,

nachdem ich Indy und die ZIP-Routinen unter RAD-Studio 10.1 wieder zum laufen bekommen habe kämpfe ich jetzt mit ZEOS - und irgendwie habe ich da gar keine echte Ahnung von und in den letzten zwei Tagen bei dem ganzen suchem im Netz auch nichts gefunden :( Bisher hatte ich unter Delphi 6.0 Prof den Zugriff auf die Access-Datenbanken so gemacht:

Delphi-Quellcode:
function TLieferantenForm.DatenbankOeffnen(LieferantenDBName: String): Integer;
begin
LieferantenADOConnection.ConnectionString := 'Provider=Microsoft.ACE.OLEDB.12.0;';
  LieferantenADOConnection.ConnectionString := LieferantenADOConnection.ConnectionString +'Data Source=' +LieferantenDBName +';';
  LieferantenADOConnection.ConnectionString := LieferantenADOConnection.ConnectionString +'Persist Security Info=False;';
LieferantenADOConnection.ConnectionString := LieferantenADOConnection.ConnectionString +'Jet OLEDB:Database Password=d15wfm30';
  LieferantenADOConnection.Connected := True;
  if LieferantenADOConnection.Connected then
  begin
    LieferantenADOQuery.close;
    LieferantenADOQuery.Sql.Text := ('SELECT count(*) as Anzahl FROM Artikel');
    LieferantenADOQuery.open;
    MainForm.LieferantenDBLEd.Text :=MainForm.LieferantenDBLEd.Text +': ' +IntToStr(LieferantenADOQuery.FieldByName('Anzahl').AsInteger);
    Result := LieferantenADOQuery.FieldByName('Anzahl').AsInteger;
    LieferantenADOQuery.close;
  end;
end;
Vielleicht kann mir jemand sagen wie ich das dann in ZEOS umsetze ?? Oder hat ein Beispiel wie er mit ZEOS auf ACCESS-Datenbanken zugreift ?

Vielen Dank
Hans

P.S: Crosspostet in Delphi-Treff

nahpets 18. Jan 2017 12:40

AW: ZEOS und MS-Access
 
http://www.delphipraxis.net/22650-hi...uf-access.html
Delphi-Quellcode:
ZConnection1.Protocol := 'ado';
ZConnection1.Database :=      'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Datenbank.mdb;Persist Security Info=False';
Eigentlich muss in deine Routine von oben am Anfang nur die Zeile
Delphi-Quellcode:
LieferantenADOConnection.Protocol := 'ado';
eingefügt werden.

H.Bothur 18. Jan 2017 13:25

AW: ZEOS und MS-Access
 
Moin,

den Beitrag hatte ich schon fünfmal gelesen - bis ich dann endlich merkte wo ich auf "Verbindung" klicken soll :-(

Allerdings bekomme ich jetzt einen Fehler "Die Anwendung kann nicht gestartet werden. Die Informationsdatei für die Arbeitsgruppe fehlt oder ist exclusiv von einem anderen Benutzer geöffnet".

Die Eigenschaft Jet OLEDB:Database Password habe ich bereits mit dem Password der Datenbank belegt. Was mache ich denn jetzt falsch ??

Gruß
Hans

nahpets 18. Jan 2017 13:44

AW: ZEOS und MS-Access
 
Das dürfte ein Rechteproblem sein.

Im Dialog zum Auswählen der Datenbank müsste es einen Reiter "Erweitert" geben. Schau bitte mal, was dort alles so angekreuzt ist, bzw. nicht.

Davon abhängig darf ausschließlich nur Deine Applikation auf die Datenbank zugreifen oder eben eine andere Applikation.

Schließ bitte erstmal alles an Programmen, was eventuell auf die Datenbank zugreift.
Die Datenbankverbindung sollte auch in der IDE nicht geöffnet sein.

Und dann nochmal probieren.

Die Fehlermeldung hängt eventuell mit dem Ablageort der system.mdb zusammen.

Ansonsten mal hier schauen: https://social.msdn.microsoft.com/Fo...orum=accessdev

http://sqlfaq.de/blog/?p=50

Weitere Hinweise sind eventuell hier zu finden: https://www.benefind.de/web.php?org=...+arbeitsgruppe

H.Bothur 18. Jan 2017 14:13

AW: ZEOS und MS-Access
 
Moin Stefan,

angehakt war unter "Erweitert" Share Deny None - ich habe das jetzt mal auf "ReadWrite" geändert - das gibt aber das gleiche Ergebnis.

Die Datei ist nicht irgendwie anders geöffnet und liegt auf einem lokalem Laufwerk. Trotzdem bekomme ich noch diese Meldung :-(

Direkt mit Access kann ich übrigens problemlos auf die Datenbank zugreifen: Doppelklick, Passwort eingeben und läuft :-(

Und in den Links nach der Fehlermeldung habe ich bisher leider auch keinen Ansatz gefunden :-(

Hans

nahpets 18. Jan 2017 14:38

AW: ZEOS und MS-Access
 
Beim Zugriff auf Access-Datenbanken entstehen temporäre Dateien, in der Regel im %TEMP%-Verzeichnis. Der Name beginnt mit JET.

Schau bitte mal nach, ob es davon welche in Deinem Temp-Verzeichnis gibt. Wenn ja, lösche sie.
Solange das nicht gelingt, gibt es noch einen Prozess, der auf eine Access-Datenbank zugreift.
Leider kann man an den Dateien nicht erkennen, welcher Prozess das ist. Eventuell hilft hier der ProcessExplorer.

https://technet.microsoft.com/en-us/...sexplorer.aspx

Beim Öffnen einer Access-Datenbank entsteht neben der Datenbankdatei eine weitere Datei mit 'nem Dateinamen in der Form Datenbankname.ldb.

Gibt es diese Datei? Wenn ja, kannst Du sie löschen?
Wenn nein, dann greift noch irgendein Prozess auf die Datenbank zu. Finde den heraus und beende ihn.
Dann erneut probieren.

Ist für die Datenbank ein ODBC-Treiber eingerichtet?

Wenn ja, geh' bitte mal in dessen Konfiguration.
Dort müsste es irgendwo die Auswahlmöglichkeit zu einer Systemdatenbank geben. Wähle dort bitte "Keine" aus.

Ist sichergestellt, dass Dein Programm in dem Verzeichnis, in dem sich die Access-Datenbank befindet, Schreibrechte hat?

Falls weiterhin eine Fehlermeldung kommt, diese bitte im Dialog mit Strg+C in die Zwischenablage kopieren und dann hier einfügen.

H.Bothur 19. Jan 2017 10:53

AW: ZEOS und MS-Access
 
Ich habs endlich raus - natürlich war es mein Fehler - welch Frage:

Ich hatte 'Persist Security Info=False;' leider nicht gesetzt und das stand auf True :-(
Jetzt klappt es - vielen Dank !!

Hans


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:17 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