Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery (https://www.delphipraxis.net/45107-zweites-adoquery-bekommt-keine-daten-vom-ersten-adoquery.html)

Kranky 29. Apr 2005 21:29

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery
 
Zitat:

Zitat von Jelly
Du hast doch sicherlich irgendwo eine TQuery oder TADOQuery o.ä. Komponente auf deiner Form liegen, über die du den SQL Befehl ausführst. Und diese hat auch Ereignisse, und eins davon ist ein, das ausgelöst wird, wenn sich der Cursor ändert, sprich wenn du auf einen anderen Datensatz springst. Und daruaf muss du reagieren, denn wenn du auf den Betrieb 27 gehst, musst du dir diese 27 ja aus der 1. Query rausziehen, und als Parameter in der 2. Query nutzen.

Ich habe das jetzt mal in das AfterScroll-Ereignis ausgelagert, aber jetzt bekomme ich einen "list index out of bounds (0)" Error.

Delphi-Quellcode:
procedure TForm1.ADOQuery1AfterScroll(DataSet: TDataSet);
begin
  with ADOQuery2 do begin
    Close;
    SQL.Clear;
    Parameters[0].Value:=AdoQuery1.FieldByName('pbID').AsInteger;
    SQL.Add('SELECT sName FROM schueler WHERE sBetrieb=:id');
    Open;
  end;
end;

marabu 30. Apr 2005 11:30

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery
 
Delphi-Quellcode:
Parameters[0].Value:=AdoQuery1.FieldByName('pbID').AsInteger;
Vielleicht existiert der Parameter mit dem Index 0 noch gar nicht. Du kannst ihn im Object-Inspector der IDE anlegen, oder im OnCreate-Event deiner Form mit AdoQuery2.CreateParameter().

Grüße vom marabu

Kranky 30. Apr 2005 11:36

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery
 
Doch, der existiert. Den habe ich ja schon gestern im Objektinspektor erstellt, als ich den zweiten Query gleich nach dem ersten aufgerufen habe. Deswegen versteh ich die Fehlermeldung ja nicht, denn das ist der einzige Index, der falsch sein kann.

marabu 30. Apr 2005 11:55

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery
 
Vertrauen ist gut - Kontrolle ist besser. Vor der Benutzung des Index 0 prüfe einfach den Wert von AdoQuery2.Parameters.Count.

Kranky 30. Apr 2005 12:35

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery
 
Ich habe mir mal den Count-Wert ausgeben lassen. Der steht auf 1. Aber der durchläuft "AfterScroll" mehr als einmal. Und beim zweiten Durchgang ist der Wert von Count=0 und es kommt zum Fehler. :gruebel:

marabu 30. Apr 2005 13:25

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery
 
Delphi-Quellcode:
procedure TForm1.ADOQuery1AfterScroll(DataSet: TDataSet);
begin
  with ADOQuery2 do begin
    Close;
    SQL.Text := 'SELECT sName FROM schueler WHERE sBetrieb=:id';
    Parameters.ParamByName('id').Value := AdoQuery1.FieldByName('pbID').AsInteger;
    Open;
  end;
end;
Bei der Zuweisung des SQL-Statements wird intern die Parameterliste aufgebaut. Darum ist es besser du setzt den Parameter nach dieser Zuweisung. Anbei dein etwas verbogener Code. Auf zum nächsten Versuch.

Grüße vom marabu

Kranky 30. Apr 2005 13:48

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery
 
:kiss: Danke danke danke... jetzt geht es! :bounce2: :hello:
Danke, dass ihr geduldig geblieben seid. War sicher nicht meine letzte DB-Frage *euchschonmalvorwarn*

MfG Jens


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

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-2025 by Thomas Breitkreuz