2013-03-15 4 views
9

Ich mache einen Abfrage-Manager in Delphi mit ADO, ich muss alle Felder kennen, die von einer Abfrage zurückgegeben werden, egal wie komplex und wie viel Joins sie haben werden. Ich möchte eine Funktion aufrufen, die mir alle Felder zurückgibt, die in einer bestimmten Abfrage zurückgegeben werden, und Feldinformationen, wie Tabelle, aus der dieses Feld stammt.Wie erhält man den Tabellennamen aus einem Feld in einer Join-Abfrage mit MSSQL? (mysql_field_table äquivalent)

In mysql mit PHP habe ich den Befehl mysql_field_table, in diesem Befehl übergebe ich das Ergebnisobjekt und den Feldindex und dieser Befehl gibt den Tabellennamen für mich zurück.

Nun, das ist mein Traum, die Tabellennamen in einer Abfrage aus einem Feldindex erhalten wie:

SELECT * FROM TableOne Left Join Table2 ON Table2.MasterField = Table1.KeyField 

Antwort

12

Sie könnten ein TADODataSet verwenden, um die Recordset zu holen, durchlaufen die Fields Sammlung und erhalten Sie die Tabellen/Felder Namen wie folgt:

for I := 0 to ADODataSet1.Recordset.Fields.Count - 1 do 
begin 
    TableName := ADODataSet1.Recordset.Fields[i].Properties['BASETABLENAME'].Value; 
    FieldName := ADODataSet1.Recordset.Fields[i].Properties['BASECOLUMNNAME'].Value; 
end; 
+1

Sie wissen nicht, wie viel Sie mir helfen. sehr sehr sehr danke ... ich bin sehr dankbar ... du bist der beste !!! Entschuldigung, aber ich habe keinen Ruf zu wählen, aber fühle dich selbst gewählt! – user2092868

+0

Sie sind herzlich willkommen :) – kobik

+0

+1 wusste nicht, das war möglich. Ist diese Eigenschaft für alle Datenbanktypen generisch? – whosrdaddy

Verwandte Themen