Entwickler-Ecke

Datenbanken - query


Procedure - Mo 15.07.02 00:56
Titel: query
Hi @ll!!!!

ich hab jetzt mal mit sql angefangen!
aber ich verstehe nicht so ganz, wie das mit der query funzt!
hab also ne query und ne db!
hab den sql string eingefügt:

Quelltext
1:
2:
3:
4:
5:
6:
7:
 
sqlstring := 'select * from meinedb where alter=30';
with query1 do
begin
sql.clear;
sql:= sqlstring;
sql.open;


aber jetzt versteh ich nicht, wo das ergebnis aus der sql abfrage hingeschrieben wird! ob in ne variable oder so, und wie man darauf zugreifen kann!

kann mir jemand mal das erklären?
hab ja schon gesucht, aber nirgends steht was drüber!

bin echt dankbar für alle antworten!

gruß, matthias


wwerner - Mo 15.07.02 07:06

http://www.auq.de/viewtopic.php?t=363


catweasel - Mo 15.07.02 17:13
Titel: DataSource...
du hängst ein dbgrid z.b. an eine datasource.
Die DataSet eigenschaft der dadasource ist dann entweder die TTable komponente oder die TQuery komponente (in diesem fall zeigt das grid das ergebnis des querys an, eben des datasets seiner datasource...

hoff hat geholfen,bin tippfaul heute...
CU
Catweasel


Christian S. - Fr 19.07.02 16:59

Hi! Was catweasel geschrieben hat, ist auf jeden Fall die beste und gebräuchliste Methode. Du kannst die Datensätze in einem Query aber auch einzeln durchlaufen und auslesen:

Beispiel: ein Query, welches die Spalten "Vorname" und "Nachname" enthält.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
//Irgendwas ...
VAR vorname, nachname : ARRAY OF String;
//Irgendwas ...

procedure auslesen;
begin

  SetLength(vorname,0);
  SetLength(nachname,0);
  
  while not query.eof do
  begin
    SetLength(vorname,High(vorname)+2);
    SetLength(nachname,High(nachname)+2);
    
    vorname[High(vorname)]:=query.FieldByName('vorname').AsString;
    nachname[High(nachname)]:=query.FieldByName('nachname').AsString;

    query.next;
  end;
end;


Ich habe den Code nicht getestet, es sind wahrscheinlich also noch einige kleinere Bugs drin, aber so im Großen und Ganzen sollte es stimmen.

ABER: diese Methode ist nur in einigen wenigen Fällen sinnvoll, aber ich dachte, es kann nicht schaden, sie zu erwähnen.

MfG,
Peter