Zitat von
Hansa:
Zitat von
SirThornberry:
ich glaube bei den feldnamen im result wird nicht mehr angegeben aus welcher tabelle diese sind da ja bei entsprechender anweisung das Feld in aus beiden tabellen genommen wird und als eine spalte dargestellt werden kann
Wer soll das verstehen ? *singt*
Das AS bezieht sich schon auf die Feldnamen. Nicht auf die Tabellennamen !
Dataset.SQL.Text := 'SELECT * FROM tabelle1 AS a, tabelle2 AS b';
Was ist zu tun ? Das AS weglassen.
Das AS wird eher verwendet bei Berechnungen. Also gut beides gemischt. Ich brauche einen Wert, der aus 2 Tabellen errechnet wird :
Dataset.SQL.Text := 'SELECT A.NR, A.PREIS, B.MENGE, A.PREIS * B.MENGE AS GESPREIS FROM TABLE1 A, TABLE2 B ORDER BY A.NR');
*auch klugscheißen will* *g*
'AS' sagt nur aus, dass du in der Abfrage einer Spalte einen bestimmten Namen geben willst.
Im
SQL Standard darf man 'AS' _NICHT_ für Tabellen aliase verwenden!
Da das TDataSet keine Ahnung von der Tabelle hat, aus der Spalte kommt, musst du die Spalten in der Abfrage eindeutig benennen.
Die 2. Möglichkeit sollte aber tunlichst vermieden werden.
SQL-Code:
SELECT A.Nr as SomeCol
,A.Preis "Noch eine Spalte"
,B.Menge Miep
,A.Preis * B.MENGE as GesPreis
FROM Table1 A
,Table2 B
ORDER BY A.Nr
Wesentlich besser ist aber der Zugriff über den Index.
SomeTDataSetDesc.Fields(1).AsInteger
Edit: Ich hatte FiledByName(1)!