Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Daten Abfragen (https://www.delphipraxis.net/146111-daten-abfragen.html)

Sektalas 13. Jan 2010 17:29

Datenbank: SQLite • Version: Sqlite: 3 ZEOS:6.6.6 • Zugriff über: ZEOS

Daten Abfragen
 
Hallo,

ich habe gestern und heute den ganzen Tag diverse Delphi Foren und Google durchsucht, aber scheinbar ist mein Problem so simpel, das es dazu keine Erklärung gibt.

Einfache Frage: Wie kann ich die durch "SELECT * FROM tabelenname" abgefragten Daten ohne ein DBGrid lesen?

Die Befehle um die abfrage selbst zu gestalten ect. ist kein Problem, aber wie komme ich an den Inhalt der einzelnen Felder?

fishbrain 13. Jan 2010 17:31

Re: Daten Abfragen
 
über Fieldbyname(Feldname)

Sektalas 13. Jan 2010 18:03

Re: Daten Abfragen
 
ich frage einfach nochmal nach

Delphi-Quellcode:
ShowMessage('Name: ' + ZQuery1.FieldByName('name').AsString)
Sollte das so richtig aussehen?
Weil da bekomme ich die Fehlermeldung dass das Feld name nicht existiert, tut es aber definitiv

haentschman 13. Jan 2010 18:20

Re: Daten Abfragen
 
Hallo...

so sollte es eigentlich richtig sein. Du könntest ja mal Groß / Kleinschreibung probieren. Das heißt, den Feldnamen angeben so wie er in der DB steht. Bist du sicher, daß die Query mit Daten voll ist ?

:hi:

Sektalas 13. Jan 2010 18:26

Re: Daten Abfragen
 
danke shonmal für die schnellen antworten.

ich hab die Tabellele selbst erstellt.
Ich poste mal entsprechenden Code, bitte nicht schimpfen und wundern über die unsauberkeit, dashier dient erstmal nur zum verstehen der materie um es in das eigentliche Project einzubinden.
Delphi-Quellcode:
//Button 1:

ZQuery1.SQL.Clear;
ZConnection1.Database:=Edit1.Text + '.db'; //db.db
ZConnection1.Connected:=TRUE;
Zquery1.SQL.Add(Edit4.Text); // CREATE TABLE punktelimit ([ID] INTEGER PRIMARY KEY, [name] VARCHAR (40), [punke] INTEGER (10))
ZQuery1.Active:=TRUE;
ZQuery1.ExecSQL;
ZQuery1.SQL.Clear;
ZConnection1.Disconnect;

// Button 2:
ZConnection1.Database:=Edit1.Text + '.db'; // db.db
Zconnection1.Connected:=TRUE;;
Zquery1.SQL.Clear;
Zquery1.SQL.Add(Edit3.Text); // INSERT INTO [punktelimit] ([name]) VALUES (:test)
Zquery1.Active:=TRUE;
Zquery1.ExecSQL;
Zquery1.SQL.Clear;
ZConnection1.Disconnect;

// Button 3:
ZConnection1.Database:=Edit1.Text + '.db'; // db.db
Zconnection1.Connected:=TRUE;
Zquery1.SQL.Clear;
Zquery1.SQL.Add(Edit2.Text); // SELECT * FROM [punktelimit]
ZQuery1.Active:=TRUE;
Zquery1.ExecSQL;
Zquery1.SQL.Clear;
ShowMessage('Feld jetzt');
ShowMessage('Name: ' + ZQuery1.FieldByName('name').AsString) ; //Hier wird der Fehler ausgelöst
Zquery1.SQL.Clear;
ZConnection1.Disconnect;

MikeR 13. Jan 2010 19:35

Re: Daten Abfragen
 
Hallo,
wenn Du eine SELECT Abfrage startest, dann darfst Du die Query nicht mit ExecSQL ausführen, sondern musst Open nutzen, um auf die Daten zugreifen zu können.

burn 13. Jan 2010 19:43

Re: Daten Abfragen
 
Hallo,

probier doch mal für Button3 folgendes:

Delphi-Quellcode:
// Button 3:
ZConnection1.Database:=Edit1.Text + '.db'; // db.db
Zconnection1.Connect;
Zquery1.SQL.Clear;
Zquery1.SQL.Add(Edit2.Text); // SELECT * FROM [punktelimit]
ZQuery1.Open;
 
// Daten sind jetzt im ZQuery1 geladen

ShowMessage('Feld jetzt');
ShowMessage('Name: ' + ZQuery1.FieldByName('name').AsString) ; //Hier wird der Fehler ausgelöst
//Zquery1.SQL.Clear;
// ich glaube der Fehler kommt hier, wahrscheinlich:
// "Aktion kann bei geöffneter Datenmenge nicht ausgeführt werden"
// Also erst ZQuery1 schließen dann SQLText löschen
// mfg burn

ZQuery1.Close;
Zquery1.SQL.Clear;
ZConnection1.Disconnect;
mfG burn

Sektalas 13. Jan 2010 20:22

Re: Daten Abfragen
 
so ist wahrscheinlich sinnvoller burn, aber der wahre Fehler war so wie es MikeR gesagt hat, SELECT einfach mit Open ausführen...

Aber ich danke euch trotzdem allen.


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