2013-03-15 9 views
9

Sto facendo un gestore di query in Delphi utilizzando ADO, ho bisogno di conoscere tutti i campi che verranno restituiti da una query, non importa quanto sia complesso e quanti join avranno. Voglio chiamare una funzione, che restituisca a me, tutti i campi che verranno restituiti in una query specifica e le informazioni sui campi, come la tabella da cui proviene questo campo.Come ottenere il nome della tabella da un campo in una query di join con MSSQL? (mysql_field_table equivalent)

In mysql con php, ho il comando mysql_field_table, in questo comando passo l'oggetto risultato e l'indice campo e questo comando restituisce il nome della tabella per me.

Beh, questo è il mio sogno, ottiene il nome della tabella da un indice di campo in una query come:

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

risposta

12

È possibile utilizzare un TADODataSet a prendere il Recordset, iterare la raccolta Fields, e ottenere le tabelle/campi nomi come questo:

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

Non sai quanto mi aiuti. molto molto molto grazie ... sono molto grato ... tu sei il migliore !!! scusa ma non ho la reputazione di votare, ma mi sento votato! – user2092868

+0

Siete i benvenuti :) – kobik

+0

+1 non sapevo che fosse possibile. Questa proprietà è generica per tutti i tipi di database? – whosrdaddy

Problemi correlati