问题
I'm doing a query manager in Delphi using ADO
, I need to know all fields that will be returned by a query, does no matter how complex and how much joins they will have. I want to call a function, that return to me, all fields that will be returned in a specific query, and fields information, like table what is this field from.
In mysql with php, I have the command mysql_field_table
, in this command I pass the result object and the field index and this command return the table name for me.
Well, that is my dream, get the table name from a field index in a query like:
SELECT * FROM TableOne Left Join Table2 ON Table2.MasterField = Table1.KeyField
回答1:
You could use a TADODataSet
to fetch the Recordset
, iterate the Fields
collection, and get the tables/fields names like this:
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;
来源:https://stackoverflow.com/questions/15431830/how-to-get-the-table-name-from-a-field-in-a-join-query-with-mssql-mysql-field