2013-03-15 2 views
9

Je fais un gestionnaire de requêtes dans Delphi en utilisant ADO, j'ai besoin de connaître tous les champs qui seront retournés par une requête, peu importe la complexité et le nombre de jointures qu'ils auront. Je veux appeler une fonction, qui me revient, tous les champs qui seront retournés dans une requête spécifique, et les champs d'information, comme le tableau de ce champ.Comment obtenir le nom de table d'un champ dans une requête de jointure avec MSSQL? (équivalent mysql_field_table)

En mysql avec php, j'ai la commande mysql_field_table, dans cette commande je passe l'objet résultat et l'index de champ et cette commande retourne le nom de la table pour moi.

Eh bien, qui est mon rêve, obtenir le nom de la table à partir d'un index de champ dans une requête comme:

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

Répondre

12

Vous pouvez utiliser un TADODataSet pour aller chercher le Recordset, itérer la collection Fields, et obtenir les tables/noms de champs comme ceci:

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

Vous ne savez pas à quel point vous m'aidez. très très très merci ... im très reconnaissant ... vous êtes le meilleur !!! désolé mais je n'ai pas la réputation de voter, mais sentez-vous voté! – user2092868

+0

Vous êtes les bienvenus :) – kobik

+0

+1 ne savait pas que c'était possible. Cette propriété est-elle générique pour tous les types de base de données? – whosrdaddy

Questions connexes