Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Grundsätzlicher Zugriff auf Access-Datenbanken (https://www.delphipraxis.net/68226-grundsaetzlicher-zugriff-auf-access-datenbanken.html)

Chuqa 26. Apr 2006 16:24

Datenbank: Access • Zugriff über: noch gar nicht

Grundsätzlicher Zugriff auf Access-Datenbanken
 
Aloha,

ich möchte ein kleines Verwaltungsprogramm schreiben. Die Daten sollen in einer Access-DB abgelegt werden. In der Datenbank existieren noch keine Tabellen, die sollen beim ersten Eintrag angelegt werden. Nun bin ich allerdings völlig unbefleckt im Umgang mit Datenbank in Kombination mit Delphi, ich habe also rein gar keine Ahnung wie ich an die Sache rangehen soll geschweige denn welche Komponenten ich benutzen sollte. Da es eilt, habe ich nicht wirklich die Zeit mich durch die Api's zu wühlen, deswegen hoff ich hier schneller fündig zu werden. Also nun zu meinen Fragen.
  • 1. Welche Komponenten?
    • - TQuery, TADOQuery, TTable, TADOQuery, usw.
    2. Wie benutze ich diese Komponenten?
    • - ich habe bisher in Java einen Datenbankzugriff auf eine PostgreSQL-DB realisiert, dort hatte ich dann ein ResultSet (Tabelle) in dem meine Daten enthalten waren, die ich vorher mittels SQL-Syntax abgefragt habe. Gibt es in Delphi etwas Ähnliches?
    3. Wie frage ich sämtliche Tabellen ab, die bisher in der Datenbank enthalten sind?
    • - um so die Tabellen nur anzulegen, wenn sie noch nicht vorhanden sind
Ganz wunderbar wären auch Codeschnipsel.

mfg chuqa

shmia 26. Apr 2006 16:38

Re: Grundsätzlicher Zugriff auf Access-Datenbanken
 
Zitat:

Zitat von Chuqa
ich möchte ein kleines Verwaltungsprogramm schreiben. Die Daten sollen in einer Access-DB abgelegt werden. In der Datenbank existieren noch keine Tabellen, die sollen beim ersten Eintrag angelegt werden.

Ich würde die Access-Datenbank als Datei mit der Anwendung mitgeben.
Das ist deutlich weniger Arbeit; man kann das Erzeugen der Datenbankstruktur aus der Anwendung
auch später noch nachholen.
Zitat:

Zitat von Chuqa
1. Welche Komponenten?

TADOconnection (gibt's nur einmal im ganzen Programm, sollte auf einem zentralen Datenmodul liegen)
TADOQuery (Standard-Komponente)
TADODataset (bei erweiterten Anforderungen)
TADOTable (bitte auf diese Komponente verzichten, wenn SQL für dich keine Fremdsprache ist)
Zitat:

Zitat von Chuqa
2. Wie benutze ich diese Komponenten?

"Spielerisch": TADOConnection zu einer AccessDB verbinden (OLE DB Provider: Jet-Engine)
TADOQuery über Property Connection mit der TADOConnection verknüpfen.
TADOQuery.SQL eingeben
TADOQuery mit TDataSource verknüpfen, TDBGrid mit TDataSource verknüpfen und ADOQuery aktiv schalten.

mikhal 26. Apr 2006 19:14

Re: Grundsätzlicher Zugriff auf Access-Datenbanken
 
Auf maeiner Homepage findest du einige Code-Schnipsel:

- Wie du ADOX in Delphi einbinden kannst und damit eine Access-Datenbank erstellen kannst.

- Wie du mit AdoQuery eine neue Tabelle in Access anlegen kannst.

Um festzustellen, welche Tabellen bzw. welche Felder einer Tabelle existieren, verwendest du die Methoden GetTableNames und GetFieldNames der TAdoConnection.

Grüße
Mikhal

Chuqa 27. Apr 2006 11:09

Re: Grundsätzlicher Zugriff auf Access-Datenbanken
 
Herzlichen Dank erstmal, habe ein bißchen rumprobiert und müsste eigentlich hinzubekommen sein ;).
Trotzdem noch ein paar Fragen:

Benötige ich für jede Komponente, die irgendwie eine Spalte oder eine ganze Tabelle enthält (DBGrid, DBListBox, DBComboBox) eine DataSource und eine ADOQuery oder reicht es, wenn ich während der Laufzeit die SQL-Property des ADOQuery änder und dann die Datenzugriffskomponente an die ADOQuery zuweise?

mfg chuqa

mikhal 27. Apr 2006 11:58

Re: Grundsätzlicher Zugriff auf Access-Datenbanken
 
DBGrid, DBEdit etc stellen lediglich dein Abfrageergebnis auf dem Bildschirm dar, also benötigen sie immer eine Datenquelle. Sie visualisieren nur das Abfrageergebnis oder dienen zur Erfassung neuer Daten oder von Datenänderungen.

Grüße
Mikhal

Chuqa 27. Apr 2006 12:16

Re: Grundsätzlicher Zugriff auf Access-Datenbanken
 
hmm ok, dann anders,

gibt es eine möglichkeit, dass ich eine abfrage an die datenbank stelle und dann mit dem ergebnis etwas anstelle, also nicht dass ich das abfrageergebnis an eine komponente zuweise sondern anhand meines ergebnisses etwas ausführe, also z.b. ich betätige einen button, eine sql-abfrage wird ausgeführt und anhand des abfrageergebnisses wird z.b. eine meldung ausgegeben.

mfg

mkinzler 27. Apr 2006 12:18

Re: Grundsätzlicher Zugriff auf Access-Datenbanken
 
Natürlich geht das. bei einer DS kannst du z.B. mit der Eigenschaft .FieldByName('<feldname>').Value auf die Felder zugreifen.

Chuqa 27. Apr 2006 13:34

Re: Grundsätzlicher Zugriff auf Access-Datenbanken
 
ok danke erstmal, aber irgendwie begreif ich das ganze noch nicht richtig, sry.

also mal angenommen ich habe dbcombobox und zwei dbtext-komponenten. nun habe ich in meiner datenbank eine tabelle mit mehreren spalten. mal angenommen ich möchte nun die erste spalte der tabelle in der combobox abbilden. nun soll bei auswahl eines eintrages der combobox der zugehörige eintrag in der spalte 2 der tabelle in dem einem dbtext und der zugehörige eintrag in der dritten spalte in der anderen dbtext-komponente abgebildet werde.
so nun:
wie binde ich die datensteuerungskomponenten (dbcombobox,dbtext) an die datenbank an?
wieviel datasource-komponenten mit welcher abfrage benötige ich?

mfg

Hasse 27. Apr 2006 14:03

Re: Grundsätzlicher Zugriff auf Access-Datenbanken
 
Moin,

den drei Datensteuerungskomponeneten weist du die gleiche Datasource zu (Du brauchst also nur eine Datasource). Der Datasource weist du die AdoQery zu, die dein SQL-Statment enhält.

Hasse

mkinzler 27. Apr 2006 14:17

Re: Grundsätzlicher Zugriff auf Access-Datenbanken
 
Die Antwort
Zitat:

Zitat von ich
Natürlich geht das. bei einer DS kannst du z.B. mit der Eigenschaft .FieldByName('<feldname>').Value auf die Felder zugreifen.

bezog sich auf:
Zitat:

Zitat von Chuqa
gibt es eine möglichkeit, dass ich eine abfrage an die datenbank stelle und dann mit dem ergebnis etwas anstelle, also nicht dass ich das abfrageergebnis an eine komponente zuweise sondern anhand meines ergebnisses etwas ausführe



Alle Zeitangaben in WEZ +1. Es ist jetzt 16:05 Uhr.
Seite 1 von 2  1 2      

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