![]() |
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; |
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ß |
Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery
Zitat:
Zitat:
|
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 |
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. :(
|
Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery
Zitat:
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. |
Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery
Zitat:
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 :-) |
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:
|
Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery
Zitat:
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. |
Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 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-2025 by Thomas Breitkreuz