Je rencontre un problème lors de l'obtention d'une liste de champs à partir d'une requête définie lors de l'exécution par les utilisateurs de mon programme. Je laisse mes utilisateurs entrer une requête SQL dans un contrôle mémo et ensuite je veux les laisser passer par les champs qui reviendront et faire des choses telles que le format de la sortie, les valeurs de colonne de somme et ainsi de suite. Donc, je dois obtenir les noms des colonnes afin qu'ils aient un endroit pour entrer les informations supplémentaires.Obtention d'une liste de champs à partir d'un DBExpress TSQLQuery
Je ferais bien s'il n'y avait pas de paramètres, mais je dois aussi les laisser définir les paramètres de filtre pour la requête. Donc, si je veux mettre les paramètres à zéro, je dois savoir quel est le type de données du paramètre. J'utilise Delphi 2006. Je me connecte à une base de données Firebird 2.1 en utilisant le composant DBExpress TSQLConnection et TSQLQuery. Auparavant, j'ai réussi à utiliser:
pour i: = 0 à Qry.Params.Count - 1 do Qry.Params [i] .value: = varNull;
J'ai découvert que j'avais un problème lorsque j'ai essayé d'utiliser un paramètre de date. C'était juste une coïncidence que tous mes paramètres jusque-là avaient été des entiers (ID d'enregistrement). Il s'avère que varNull est simplement une constante énumérée avec une valeur de 1, donc j'obtenais des résultats acceptables (aucun enregistrement) fonctionnait bien.
J'ai seulement besoin d'une liste des champs. Peut-être que je devrais juste analyser la clause SELECT de l'instruction SQL. Je pensais mettre Qry.Prepared à True m'obtiendrait une liste des champs, mais pas une telle chance. Il veut des valeurs pour les paramètres.
Si vous avez une idée, je voudrais bien l'entendre. Merci pour toute aide.