![]() |
Query gibt nur 1 Zeile zurück
Hallo Leute
ich versuche mich gerade daran, mit den Interbase-Kompos auf eine Firebird Datenbank zuzugreifen. Ich habe schon viel mit MySQL auch unter Delphi gearbeitet. Ich habe jetzt diesen Code hier konstruiert:
Delphi-Quellcode:
Auf meinem Formular sitzt:
procedure execquery(str:string;passv:boolean);
begin; form1.qrmain.Close; form1.qrmain.SQL.Clear; form1.qrmain.SQL.Add(str); if (passv) then form1.qrmain.Open else form1.qrmain.ExecSQL; end; procedure TForm1.Button2Click(Sender: TObject); var i:integer; begin execquery('SELECT * FROM sachbuch sb, gliederung gl WHERE (sb.sbid = gl.sbid)',true); for i:= 0 to qrmain.RecordCount-1 do begin; qrmain.RecNo := i; showmessage(qrmain.fieldbyname('SBNR').asstring+'->'+qrmain.fieldbyname('GLNR').asstring); end; end; qrmain : TIBQuery dbmain : TIBDatabase trmain : TIBTransaction Wenn ich jetzt auf den Button klicke kommt nur der erste Datensatz heraus. "qrmain.recordcount" enthält ja auch nur 1. Obwohl, wenn ich im "IB Expert" (Admin-Tool) das Query ausführe ich 3 Zeilen als Result bekomme. Es muß also an meinem Code liegen, aber wo? Danke und Grüße TO |
Re: Query gibt nur 1 Zeile zurück
Hai theomega,
Zitat:
Probiere mal das:
Delphi-Quellcode:
Was mich noch wundert: Du möchtest die Felder "SBNR" und "GLNR" anzeigen hast sie aber nicht in der SELECT Anweisung stehen?
...
procedure TForm1.Button2Click(Sender: TObject); var i:integer; begin execquery('SELECT * FROM sachbuch sb, gliederung gl WHERE (sb.sbid = gl.sbid)',true); while NOT (qrmain.eof) do begin showmessage(qrmain.fieldbyname('SBNR').asstring+'->'+qrmain.fieldbyname('GLNR').asstring); qrmain.next; end; end; |
Re: Query gibt nur 1 Zeile zurück
Zitat:
@theomega: RecordCount funktioniert bei SQL-Datenbanken nicht immer. Laß Dir das Ergebnis doch mal in einem DBGrid anzeigen. Der Fehler liegt aber glaube ich an dem Semikolon nach den begin. Ansonsten würde ich deine for-Schleife durch folgenden Code ersetzen:
Delphi-Quellcode:
qrmain.First;
while not qrmain.Eof do begin showmessage(qrmain.fieldbyname('SBNR').asstring+' >'+qrmain.fieldbyname('GLNR').asstring); qrmain.Next; end; |
Re: Query gibt nur 1 Zeile zurück
Zitat:
Ist ja furchtbar was ich alles übersehe :shock: |
Re: Query gibt nur 1 Zeile zurück
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz