如何从 SQL 服务器和 FIREDAC 的连接查询中的列中获取 table 名称?

How to get the table name from a column in a join query with SQL Server and FIREDAC?

我在 TFDQuery (FireDAC) 上寻找元数据。

我有这个查询:

SELECT * 
FROM Table1 t1 
INNER JOIN Table2 t2 ON t1.Code = t2.code

我想知道列信息(table名称,table中的真实列名,....)

我发现这个 post : How to get the table name from a field in a join query with MSSQL? (mysql_field_table equivalent) 但我在 FireDac 上没有相同的结构。

正如 RBA 已经提到的,您必须首先在连接中启用 ExtendedMetaData。完成后,您可以通过 query.GetFieldColumn(field) 获取字段列描述,并使用其 ActualOriginTabNameActualOriginColName 属性访问 table 和列名称。

column := query.GetFieldColumn(field);
orgTableName := column.ActualOriginTabName;
orgColumnName := column.ActualOriginColName;