Delphi-PRAXiS
Seite 1 von 2  1 2      

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 18:36

Datenbank: MS Access • Version: 2002 • Zugriff über: ADO

Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery
 
Hallo!
Ich habe hier ein kleines Problem bei meinem Programm und wollte mal fragen, ob mir einer von euch weiterhelfen kann.
Beim ersten Query werden Daten eines Praktikumsbetriebes ausgelesen, unter anderem auch die ID des Betriebes.
Der/das zweite Query soll jetzt alle Schüler raussuchen, die unter sBetrieb die ID des Betriebes eingetragen haben.

Nur leider bekomme ich die ID aus dem ersten Query nicht korrekt in den zweiten Query. So wie es jetzt ist, werden immer alle Schüler mit der ID "3" ausgelistet, egal, welcher Betrieb ausgewählt wird.

Was mache ich falsch? :(
Schon einmal danke im Vorraus für eure Hilfe.
MfG Jens


Delphi-Quellcode:
  with ADOQuery1 do begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT a.pbID, a.pbName, a.pbStrasse, a.pbPLZ, a.pbOrt, a.pbTelefon, a.pbURL, a.pbASP, b.brName FROM `praktikum` a LEFT JOIN `branchen` b ON(b.brId = a.pbBranche)');
    SQL.Add('ORDER BY a.pbName');
    Open;
  end;

  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;

bttb930 29. Apr 2005 19:16

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery
 
VIELLEICHT muß der ParamByName... := Befehl NACH dem zuweisen des sql-befehls stehen. probier das mal. sonst debugge und schau nach was denn in dem id steht.

schon mal was von master / detail gehört? das ginge mit adotables soweit ich weiß

Kranky 29. Apr 2005 20:27

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

Zitat von bttb930
VIELLEICHT muß der ParamByName... := Befehl NACH dem zuweisen des sql-befehls stehen. probier das mal. sonst debugge und schau nach was denn in dem id steht.

Ich hab den Befehl FieldByName (ParamByName gibt es irgendwie nicht) an verschiedene Stellen verschoben und das hat alles nichts gebracht. In der ID steht immer "3"... egal, was ich anklicke.

Zitat:

Zitat von bttb930
schon mal was von master / detail gehört? das ginge mit adotables soweit ich weiß

Nein, da hab ich noch nichts von gehört. Wofür ist das denn gut, bzw. was macht das?

marabu 29. Apr 2005 20:47

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery
 
@Kranky:

Du wirst einen guten Grund dafür haben, dass du deine Abfrage auf zwei Queries verteilt hast. Wenn du aber in der zweiten Query den Fremdschlüssel fest einstellst, dann musst du dich nicht wundern, wenn er immer 3 bleibt. Vermutlich ist 3 der Betriebsschlüssel des ersten Satzes aus AdoQuery1. Wenn du den Cursor von AdoQuery1 ab und zu mit Next() oder Prev() bewegst, dann wirst du auch mal andere Schlüssel sehen.

Grüße vom marabu

Kranky 29. Apr 2005 20:49

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery
 
Kannst du das vielleicht etwas verständlicher erklären? Bin leider totaler Anfänger und finde das Thema Datenbanken noch extrem verwirrend. :(

marabu 29. Apr 2005 21:00

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

Zitat von Kranky
Bin leider totaler Anfänger und finde das Thema Datenbanken noch extrem verwirrend.

Immerhin hast du schon einen JOIN hingekriegt...

Du musst aber etwas genauer beschreiben, was du vorhast.
Willst du nur einen Betrieb verarbeiten oder alle?
Was machst du mit zwei Queries, wenn du die erste um einen zweiten Join erweitern kannst?

Lieber wäre mir du würdest fragen und ich könnte antworten.

Jelly 29. Apr 2005 21:05

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

Zitat von Kranky
Kannst du das vielleicht etwas verständlicher erklären?

Ich probiers mal.

Was du machst, ist 2 Queries hintereinander zu öffnen. Dabei kriegst du natürlich immer das gleiche Ergebnis. Du willst doch in der 2. Query die des gewählten Betriebes aus Query1 erhalten. Auf ein Wechseln des Cursors im ersten Recordset reagierst du aber gar nicht. Und genau das musst du tun... Also die Lösung:

öffne die 2. Query erst in AfterScroll Ereignis der 1. Query... Dann klappts auch mit den Nachbarn :-)

Kranky 29. Apr 2005 21:10

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery
 
Also... zuerst mal: das Join-Ding ist nicht von mir. Da wurde mir geholfen.

Ich habe eine DBLookupListbox, in der lasse ich mir die Namen von (Praktikums-)Betrieben anzeigen. Jeder Betrieb hat mehrere Daten (Adresse, Telefon, usw) und ist durch eine einmalige ID gekennzeichnet. Wenn ich jetzt einen Betrieb in der Liste anklicke, werden mir in den speziellen DB-Labeln die weiteren Infos über den Betrieb angezeigt.
Zusätzlich habe ich dann eine Tabelle "schueler". Zu jedem Schüler wird die ID des Betriebes gepspeichert, bei dem dieser Schüler Praktikum gemacht hat.
Klicke ist jetzt einen Betrieb an, bekomme ich die Infos über den Betrieb und möchte zusätzlich in einer zweiten DBLookupListBox die Namen aller Schüler angezeigt bekommen, die in dem ausgewählten Betrieb ihr Praktikum absolviert haben.
Mein Problem ist jetzt, dass ich absolut keine Ahnung habe, wie ich dem zweiten Query die ID des Betriebes übergeben kann.

Auch wenn ich mir jetzt mit der Frage keine Freunde mache:

Zitat:

Zitat von Jelly
öffne die 2. Query erst in AfterScroll Ereignis der 1. Query... Dann klappts auch mit den Nachbarn

Wie genau geht das denn? Sorry, aber Datenbanken sind ein Rätsel für mich. Bitte habt Geduld mit mir. :(

Jelly 29. Apr 2005 21:15

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

Zitat von Kranky
Wie genau geht das denn? Sorry, aber Datenbanken sind ein Rätsel für mich. Bitte habt Geduld mit mir. :(

Nana... Das kriegen wir schon hin.

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.

Airblader 29. Apr 2005 21:19

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

Zitat von marabu
Immerhin hast du schon einen JOIN hingekriegt...

Falsch, den hab ich ihm gebastelt ;)


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