Moin...
Sorry, aber für die Mitlesenden Neulinge...
Der Code ist ein Kandidat für ein umfassendes Refactoring.
1: SQL keine Parameter:
https://de.wikipedia.org/wiki/SQL-Injection
...besser
Delphi-Quellcode:
sqlAbfrage := sqlAbfrage +
' SELECT tabelle1.*, tabelle2.* ' +
' FROM ' +
' tabelle1, tabelle2' +
' WHERE ' +
' tabelle1.ag_id = :DID' +
' AND ' +
' tabelle2.vst_id = :DID';
AQuery.ParamByName('DID').AsInteger := ADasaId;
Das
SQL so zusammenzusetzen ist nicht mein Fall...die '' + Orgien.
Ist aber Geschmackssache...
... habe ich im Originalcode drin. Der Einfachheit halber aber hier vor dem Post rausgenommen...
vst_id ist bestimmt zwei Mal im Select
und da Namen eindeutig sind, wird hier einfach hochgezählt.
Ist wie das selbe Feld, nur quasi mit AS umbenannt.
hier kann es nur aus beiden Tabellen kommen,
aber es passiert auch gern, wenn man Felder explizit drin hat und zusätzlich noch einmal das *
Danke @himitsu, das wird es wohl sein!
Ich habe das Feld vst_id einmal in Tabelle1 als ganz normales Integer-Feld (dahinein kommt nach erfolgreichem Eintrag des zugehörigen Dasa in Tabelle2 die dort im Feld vst_id (PK) erzeugte Datensatz-ID). Und das andere Mal, wie gerade geschrieben, in Tabelle2 als Pk-Feld. Nun war ich immer der Meinung, dass die Zuordnung über Tabellenname.Feldname eindeutig wäre und es egal ist, ob zwei Felder in unterschiedlichen Tabellen gleiche Namen haben.
Offensichtlich falsch, also setzen 5 und lernen!
Ich werde Euren Rat befolgen und die Abfrage umbauen (also ohne *).
Schönen Sonntag!