如何从MSSQL的连接查询中的字段中获取表名? (相当于mysql_field_table)

时间:2013-03-15 11:56:32

标签: sql-server delphi ado tablename

我正在使用ADO在Delphi中执行查询管理器,我需要知道查询将返回的所有字段,无论它们有多复杂和多少连接。我想调用一个函数,它返回给我,将在特定查询中返回的所有字段,以及字段信息,如表格中的字段。

在使用php的mysql中,我有命令mysql_field_table,在这个命令中我传递了结果对象和字段索引,这个命令为我返回了表名。

嗯,这是我的梦想,从查询中的字段索引中获取表名,如:

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

1 个答案:

答案 0 :(得分:12)

您可以使用TADODataSet来获取Recordset,迭代Fields集合,并获取如下所示的表/字段名称:

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;