2013-03-15 14 views
9

Robię menedżera zapytań w Delphi przy użyciu ADO, potrzebuję znać wszystkie pola, które zostaną zwrócone przez zapytanie, niezależnie od tego, jak skomplikowane i ile będą one miały. Chcę wywołać funkcję, która do mnie wróci, wszystkie pola, które zostaną zwrócone w konkretnym zapytaniu, oraz informacje o polach, takie jak tabela, z której jest to pole.Jak uzyskać nazwę tabeli z pola w zapytaniu o połączenie z MSSQL? (odpowiednik mysql_field_table)

W mysql z php, mam polecenie mysql_field_table, w tym poleceniu przekazuję obiekt wyniku, a indeks pola i to polecenie zwracają nazwę tabeli dla mnie.

Dobrze, że jest moim marzeniem, uzyskać nazwę tabeli z indeksem pola w zapytaniu jak:

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

Odpowiedz

12

Można użyć TADODataSet aby pobrać Recordset, iteracyjne kolekcji Fields i uzyskać tabele/nazwy pól:

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

Nie wiesz, ile mi pomagasz. bardzo, bardzo, bardzo dziękuję ... jestem bardzo wdzięczny ... jesteś najlepszy !!! przepraszam, ale nie mam reputacji, aby zagłosować, ale poczujcie swoje głosowanie! – user2092868

+0

Serdecznie zapraszamy :) – kobik

+0

+1 nie wiedziałem, że to możliwe. Czy ta właściwość jest typowa dla wszystkich typów baz danych? – whosrdaddy

Powiązane problemy