Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi zugriff auf Access DB mit ado (https://www.delphipraxis.net/51691-zugriff-auf-access-db-mit-ado.html)

Susanne 17. Aug 2005 11:36

Datenbank: MS Access • Zugriff über: ADO

zugriff auf Access DB mit ado
 
Zitat:

ADO über die Jet-Engine
Wenn Sie Microsoft Jet 4.0 OLE DB Provider wählen, dann können Sie auf der
Registerseite Verbindung den Datenbanknamen auswählen. Anschließend sollten
Sie den Button VERBINDUNG TESTEN betätigen.
das habe ich gemacht und erhalte dann auch die Meldung, dass der Zugriff auf die Datenbank geklappt hat.

Danach mache ich eine sql Abfrage auf eine bestimmte Tabelle und dann erhalte ich die IDispatch error #3092

was läuft da schief?

Gollum 17. Aug 2005 11:45

Re: zugriff auf Access DB mit ado
 
Hallo,

ohne die entsprechenden Code-Zeilen, ist das schwierig zu sagen.

Hast Du der ADOQuery auch die ADOConnection zugewiesen?

Susanne 17. Aug 2005 11:58

Re: zugriff auf Access DB mit ado
 
Delphi-Quellcode:
 Conn:= ini.ReadString('Datenbank', 'ConnectionString', '');
 Unit2.Form2.ADOQuery1.Active:= false;
 Unit2.Form2.ADOQuery1.ConnectionString:= Conn;
 Tabelle:= ini.ReadString('Datenbank', 'Tabelle', '');

 sql:= 'Select * from '+Tabelle+ ' where '+Kennnummer+ '='''+ Kennnr+'''';
 Form2.ADOQuery1.Close;
 Form2.ADOQuery1.SQL.Clear;
 Form2.ADOQuery1.SQL.Add(sql);
 Form2.ADOQuery1.Open;
Der Fehler muss bei .close verursacht werden, ich hatte vorhin noch eine MessageBox danach eingebaut, die wurde aber nicht angezeigt.

mikhal 17. Aug 2005 12:02

Re: zugriff auf Access DB mit ado
 
Setze einen Breakpoint auf die erste Zeile und steppe dann mit F8 durch den Code, wenn das Programm am Breakpoint stehengeblieben ist.

Ansonsten versuche mal folgendes Konstrukt:
Delphi-Quellcode:
sql:= 'Select * from ' + Tabelle + ' where ' + Kennnummer + '=' + QuotedStr(Kennnr);
Form2.ADOQuery1.SQL.Text := sql;

if Form2.ADOQuery1.Active then
  Form2.ADOQuery1.Requery
else
  Form2.ADOQuery1.Open;
Grüße
Mikhal

[edit] QuotedStr eingefügt

Susanne 17. Aug 2005 12:22

Re: zugriff auf Access DB mit ado
 
was soll mir denn eigentlich die Fehlermeldung jetzt genau sagen?

shmia 17. Aug 2005 12:32

Re: zugriff auf Access DB mit ado
 
Zitat:

Zitat von Susanne
was soll mir denn eigentlich die Fehlermeldung jetzt genau sagen?

Wahrscheinlich ist der Tabellenname falsch geschrieben.
Bei Zugriff auf Access Datenbanken ist folgendes zu beachten:

1.) man sollte MDAC Version 2.7SP2 oder Version 2.8 installieren.
MDAC enthält wie jede Software auch Bugs; obige Versionen laufen aber recht gut.
2.) man sollte unbedingt die JET Engine 4.0 mit dem Servicepack 8 updaten.
Auch der Kern von Access (die JET Engine) enthält Bugs, Servicepack 8 fixed die Meisten.
Download: http://msdn.microsoft.com/data/downl...s/default.aspx

Susanne 17. Aug 2005 12:42

Re: zugriff auf Access DB mit ado
 
ich führe aber doch als erste das Close durch, warum kommt dann eine Fehlermeldung, ich benutze in diesem Moment ja noch gar keinen Tabellennamen, den kennt er da ja noch gar nicht, danach erst gebe ich ihm das SQL-Statement und bis dahin kommt er ja gar nicht.

shmia 17. Aug 2005 12:49

Re: zugriff auf Access DB mit ado
 
Zitat:

Zitat von Susanne
ich führe aber doch als erste das Close durch, warum kommt dann eine Fehlermeldung, ich benutze in diesem Moment ja noch gar keinen Tabellennamen, den kennt er da ja noch gar nicht, danach erst gebe ich ihm das SQL-Statement und bis dahin kommt er ja gar nicht.

Ich würde eine TADOConnection Komponente verwenden und diese mit allen deinen TADOQuery, TADOTable verbinden.
So hast du nur eine Connection offen, anstatt eine Connection pro Query.
Auch wenn du jetzt nur eine Query hast, ist das einfach sauberer.
Nachdem du den ConnectionString gesetzt hast:
Delphi-Quellcode:
   ADOConnection1.Active := True;


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