Also ergänzend zum vorangegangenen Posting:
Der Doppelpunkt hat mit
SQL herzlich wenig zu tun, er kennzeichnet einen Parameter für ein Delphi-TDataSet und soll Dir als Delphianer nur das Leben ein bisserl erleichtern.
Die TDataSet-Komponente "parst" (liest/durchsucht) Deinen
SQL-Text und wenn sie auf einen Doppelpunkt stößt, interpretiert sie das darauf Folgende als Parameternamen (wie eine benamste Variable halt) und versucht dann, diesen Parameter-Platzhalter durch einen Wert zu ersetzen, bevor sie den
SQL-Text auf die Datenbank losläßt (Die könnte mit dem Doppelpunkt/Parametername-Konstrukt nämlich nichts anfangen).
Da wir die 2.
Query über die 1. DataSource an die 1.
Query gebunden haben und dort ein Feld mit dem Namen "id_..." existiert, welches genauso heißt wie unser Doppelpunkt-Parameter, nimmt Dir die TQuery-Komponente Arbeit ab, indem Sie den Parameter in der 2.
Query durch den entsprechenden Feldwert aus der 1.
Query immer dann ersetzt, wenn dort ein Wechsel des Datensatzes vorgenommen wird.
Das gleiche Ergebnis würdest Du erzielen, wenn Du auf jeden Datensatzwechsel der 1.
Query (Ereignis OnScroll) "von Hand" reagieren würdest und in der OnScroll-Routine der 1.
Query folgendes tätest:
1. Schliessen 2.
Query,
2. Löschen des
SQL-Textes der 2.
Query
3. denselben neu generieren (letzte Zeile dort:
Code:
Query2.SQL.Add('where sid_BlaBlaBla = '+IntToStr(Query1.FieldByName('id_BlaBlaBla').AsInteger));
4. 2.
Query wieder öffnen
Du siehst, das die Doppelpunktvariante um einiges bequemer ist.
Ausserdem ist der Doppelpunkt so neu für Dich nicht - schau Dir mal Deine ursprünglichen Querys an - dort verwendest Du :p1 - das ist nix anderes als eine Variable Namens "p1", die Du dann später mit dem Wert des Edits füllst.
Gruß