Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Auf Acces DB zugreifen --> mit Delphi7 (https://www.delphipraxis.net/59458-auf-acces-db-zugreifen-mit-delphi7.html)

Christian18 22. Dez 2005 16:36

Datenbank: - • Version: - • Zugriff über: -

Auf Acces DB zugreifen --> mit Delphi7
 
Hallo,

ich versuche schon seit einigen tagen auf eine access DB zuzugreifen. bis jetzt aber ohne erfolg.

Welches ist die beste möglichkeit auf eine access db zuzugreifen???

alzaimar 22. Dez 2005 16:47

Re: Auf Acces DB zugreifen --> mit Delphi7
 
Nimm ADO

dfried 22. Dez 2005 16:48

Re: Auf Acces DB zugreifen --> mit Delphi7
 
Und schau dir die Demos von Delphi unter \Demos\Ado an.

Christian18 22. Dez 2005 16:49

Re: Auf Acces DB zugreifen --> mit Delphi7
 
Zitat:

Zitat von alzaimar
Nimm ADO

ja das hatte ich mir auch schon so gedacht. mit ado bekomme ich das aber nicht hin.

MFG Christian18

edit

hast du vieleicht ein bsp für mich???

edit

Christian18 22. Dez 2005 17:32

Re: Auf Acces DB zugreifen --> mit Delphi7
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich bins nochmal. Ich habe das jetzt mal mit Access und ADO getestet. Ich habe im Internet eine kleine Anleitung gefunden, wie ich eine Verbindung zwischen Aces und Delphi herstellen kann. Bei mir kommt jetzt immer eine Fehlermeldung. Ich hänge sie als bild mal an. wenn ich das programm das zweite mal ausführe, dann kommt die fehlermeldung nnicht mehr. Was hat das zu bedeuten???

MFG Christian18

PS: Wenn ich die fertig erzeuge exe außerhalb von delphi starte, dann kommt keine fehlermeldung. woran kann das liegen. ist das normal?

Christian18 23. Dez 2005 07:40

Re: Auf Acces DB zugreifen --> mit Delphi7
 
Hallo,

schade das ich immer an dieser stelle stehn bleibe. wie geht es denn weiter??? kennt sich keine mit access und delphi aus??? ich habe schon ein paar mal diese frage gestellt. und immer bleibe ich dieser stelle stehen. könnt ihr mir diesmal weiter helfen???

MFG Christian18

Jens Schumann 23. Dez 2005 07:50

Re: Auf Acces DB zugreifen --> mit Delphi7
 
Hallo,
den einzigen Anhaltspunkt den Du uns geliefert hast ist eine Fehlermeldung.
Das ist ziemlich dünn.

- Verwendest Du die ADO-Komponenten oder den direkten Weg über die Typebiliotheken ?
- Wie sieht Dein Connectionstring aus?
- Wann kommt es zu dem Fehler?
> Beim Verbindungsaufbau ?
> Bei einer Abfrage?
- Ist die Access Datenbank Passwort geschützt?
- Wie sieht Dein Sourcecode aus?

Der Jan 23. Dez 2005 07:55

Re: Auf Acces DB zugreifen --> mit Delphi7
 
Hab zwar noch nie mit Delphi auf ne Access DB zugegriffen. Aber dieser Fehler hat IMHO nicht so arg viel mit dem Zugriff selbst zu tun. Vielmehr sag sie folgendes: Ein Feld enthält einen NULL-Wert, den versuchst du, in einen String zu konvertieren. So sinngemäß:

Delphi-Quellcode:
//Pseudocode
var s: string;

//...

s := Tabelle.Field['feldnname'].Value;
Da Value vom Typ Variant ist, kann er in nix konveritert werden, wenn er NULL ist.

Jens Schumann 23. Dez 2005 08:03

Re: Auf Acces DB zugreifen --> mit Delphi7
 
Zitat:

Zitat von Der Jan
Hab zwar noch nie mit Delphi auf ne Access DB zugegriffen. Aber dieser Fehler hat IMHO nicht so arg viel mit dem Zugriff selbst zu tun. Vielmehr sag sie folgendes: Ein Feld enthält einen NULL-Wert, den versuchst du, in einen String zu konvertieren. So sinngemäß:

Delphi-Quellcode:
//Pseudocode
var s: string;

//...

s := Tabelle.Field['feldnname'].Value;
Da Value vom Typ Variant ist, kann er in nix konveritert werden, wenn er NULL ist.

Mit der Fehlermeldung und dem Debugger kommt man auf die Lösung etwa in ca. 15 Sekunden. Schon deshalb weil in diesem Fall die Lösung schon in der Fehlermeldung steht. Darum bin ich nicht davon ausgegangen, dass es sich um solch einen einfachen Fall handeln könnte.

jensw_2000 23. Dez 2005 08:08

Re: Auf Acces DB zugreifen --> mit Delphi7
 
NULL's könnte man mit Delphi u.A. so abfangen ...

Delphi-Quellcode:
if AdoTable1.FieldValues['EinFelfname'] = NULL then
  edit1.text:='' else
  edit1.text:=AdoTable1.FieldValues['EinFelfname'];
Falls du die Daten mit einer Query aus der DB aurufst bzw. aus einer Access Abfrage, kannst du das Problem schon DB-seitig umschiffen ...

SQL-Code:
SELECT ISNULL(Vorname,'') AS 'Vorname', ISNULL(Nachname,'') AS 'Nachname' FROM Adressen
Schöne Grüße,
Jens

Christian18 23. Dez 2005 08:14

Re: Auf Acces DB zugreifen --> mit Delphi7
 
Hallo,

der Fehler kommt immer wenn ich das programm kompiliere, aber auch immer nur beim ersten mal. wenn das programm dann das zweite mal kompiliere, dann funktioniert alles und wenn ich die exe direkt starte, dann kommt auch kein fehler. immer nur wenn ich das programm das erste mal kompiliere.

mein connection string sieht so aus:

Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DBQ=C:\Dokumente und Einstellungen\Christian\Desktop\db1.mdb;DefaultDir =C:\Dokumente und Einstellungen\Christian\Desktop;Driver={Driver do Microsoft Access (*.mdb)};DriverId=25;FIL=MS Access;FILEDSN=C:\Dokumente und Einstellungen\Christian\Desktop\db1.mdb.dsn;MaxBuf ferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTrans actions=0;Threads=3;UID=admin;UserCommitSync=Yes;"

dfried 23. Dez 2005 08:15

Re: Auf Acces DB zugreifen --> mit Delphi7
 
Zitat:

Zitat von jensw_2000
NULL's könnte man mit Delphi u.A. so abfangen ...

Delphi-Quellcode:
if AdoTable1.FieldValues['EinFelfname'] = NULL then
  edit1.text:='' else
  edit1.text:=AdoTable1.FieldValues['EinFelfname'];

Da es sich bei "FieldValues" um einen Variant handelt ist wahrscheinlich
AdoTable1.FieldValues['EinFelfname'].Isnull besser.

jensw_2000 23. Dez 2005 08:35

Re: Auf Acces DB zugreifen --> mit Delphi7
 
Zitat:

Zitat von Christian18
Hallo,

der Fehler kommt immer wenn ich das programm kompiliere, aber auch immer nur beim ersten mal. wenn das programm dann das zweite mal kompiliere, dann funktioniert alles und wenn ich die exe direkt starte, dann kommt auch kein fehler. immer nur wenn ich das programm das erste mal kompiliere.

mein connection string sieht so aus:

Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DBQ=C:\Dokumente und Einstellungen\Christian\Desktop\db1.mdb;DefaultDir =C:\Dokumente und Einstellungen\Christian\Desktop;Driver={Driver do Microsoft Access (*.mdb)};DriverId=25;FIL=MS Access;FILEDSN=C:\Dokumente und
Einstellungen\Christian\Desktop\db1.mdb.dsn;MaxBuf ferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTrans actions=0;Threads=3;UID=admin;UserCommitSync=Yes;"

Das ändert nichts an der Tatsache das du irgendwo versuchst, ein Feld das Null-Werte enthalten kann in einen String zu konvertieren (bzw. in einer datensentisiven Komponente darzustellen, die einen String erwartet).

Es ist übrigens ungünstig, den Connectionstring hart in der Anwendung zu hinterlegen. Der Pfad der DB darf sich so nie ändern.
Die AdoConnection sollte ebenfalls immer auf Connected:=false stehen bevor du das Projekt kompiliertst.
Hier gibt es ein Beispiel wie man eine Access DB dynamisch verbinden kann.





Schöne Grüße,
Jens
:hi:


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