AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery
Thema durchsuchen
Ansicht
Themen-Optionen

Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery

Ein Thema von Kranky · begonnen am 29. Apr 2005 · letzter Beitrag vom 30. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
Kranky

Registriert seit: 7. Dez 2004
8 Beiträge
 
Delphi 7 Enterprise
 
#1

Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery

  Alt 29. Apr 2005, 18:36
Datenbank: MS Access • Version: 2002 • Zugriff über: ADO
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;
  Mit Zitat antworten Zitat
bttb930

Registriert seit: 6. Okt 2003
372 Beiträge
 
#2

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery

  Alt 29. Apr 2005, 19:16
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ß
  Mit Zitat antworten Zitat
Kranky

Registriert seit: 7. Dez 2004
8 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery

  Alt 29. Apr 2005, 20:27
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 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?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery

  Alt 29. Apr 2005, 20:47
@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
  Mit Zitat antworten Zitat
Kranky

Registriert seit: 7. Dez 2004
8 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery

  Alt 29. Apr 2005, 20:49
Kannst du das vielleicht etwas verständlicher erklären? Bin leider totaler Anfänger und finde das Thema Datenbanken noch extrem verwirrend.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery

  Alt 29. Apr 2005, 21:00
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.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery

  Alt 29. Apr 2005, 21:05
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
  Mit Zitat antworten Zitat
Kranky

Registriert seit: 7. Dez 2004
8 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery

  Alt 29. Apr 2005, 21:10
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 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.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery

  Alt 29. Apr 2005, 21:15
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.
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#10

Re: Zweites ADOQuery bekommt keine Daten vom ersten ADOQuery

  Alt 29. Apr 2005, 21:19
Zitat von marabu:
Immerhin hast du schon einen JOIN hingekriegt...
Falsch, den hab ich ihm gebastelt
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:48 Uhr.
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