tgomas
Messages postés21Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention19 août 2002
-
12 juil. 2002 à 10:29
Cobuce
Messages postés19Date d'inscriptionmardi 10 mai 2005StatutMembreDernière intervention 1 août 2006
-
13 mai 2005 à 13:48
Bonjour,
je voudrais pouvoir modifier une requete dynamiquement. J'arrive a modifier la requete sql, mais je n'arrive pas a ajouter des champs à mon objet TQuery pour récupérer les données résultantes de ma requete. Quelqu'un pourrait-il me conseiller?
(un exemple de code serait meme le bienvenu)
tgomas
Messages postés21Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention19 août 2002 12 juil. 2002 à 15:03
voici la requete initiale
SELECT tb1.ID , tb1.IDX , tb1.VAL_NUM
FROM Cote tb1
WHERE tb1.ID = :Value
pour laquelle sont donc definis les champs:
ID, IDX et VAL_NUM
voici la requete modifiee (c'est un exemple ou je n'ajoute qu'un seul champ. elle peut etre plus complexe, mais toujours selon le meme shema):
SELECT tb1.ID , tb1.IDX , tb1.VAL_NUM, tb2.VAL_NUM1 as VAL_NUM235
FROM Cote tb1, Cote tb2
WHERE tb1.ID = :Value
AND tb2.ID = 235
AND tb2.IDX = tb1.IDX
je voudrais donc pouvoir afficher les donnees contenues dans le champ VAL_NUM235
en fait la table Cote contient des series de donnees distinguees par leur identifiant(ID), pour chaque serie les donnees sont un indexees(IDX).
l'objectif de ma requete est de pouvoir afficher les valeurs de plusieurs series dont le nombre (au moins une) et les identifiants sont determines au cours de l'execution. c'est pourquoi je modifie ma requete et que je voudrais afficher le (ou les) champ(s) supplementaire(s).
l'objet TQuery est relie a un objet TDBGrid pour pouvoir afficher les donnees. je suppose qu'il faut aussi ajouter le champ VAL_NUM235 a cette grille, mais je ne sais pas vraiment comment faire.
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 13 juil. 2002 à 00:22
As-tu défini des colonnes dans ton DbGrid ?
Tu peux déjà essayer d'utiliser un DbGrid sans colonnes définies, dans ce cas le DBGrid affiche tous les champs en réponse de la requète.
Si tu souhaites conserver le définition des colonnes, tu peux les modifier à l'exécution en utilisant TStringGrid.Columns. Regarde l'aide en ligne à ce sujet.
tgomas
Messages postés21Date d'inscriptionlundi 24 juin 2002StatutMembreDernière intervention19 août 2002 15 juil. 2002 à 10:01
j'ai deja une colonne de definie, et je veux en definir d'autres pour pouvoir leur donner un titre. en fait tout mon probleme a l'air de se situer a ce niveau:
comment definir des nouvelles colonnes a l'execution???
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 15 juil. 2002 à 21:39
Ce n'est pas très simple de gérer les colonnes à l'exécution. Il faut utiliser TStringGrid.Columns.Items pour gérer les colonnes, principalement TStringGrid.Columns.Items.Add pour en ajouter.
Si les colonnes doivent changer suivant les requètes, alors le plus simple est de na pas définir de colonnes. Le DBGrid affichera alors tous les champs résultant de la requète. Il reste néanmoins possible d'en cacher avec ceci :
Query1.FieldByName('LeChampACacher').Visible:=False;
C'est à faire à la suite de chaque ouverture ( Open ) de la requète.
Tu peux aussi changer le titre ou la taille des colonnes ainsi définie par :
Query1.FieldByName('MonChamp').DisplayLabel:='MonTitre';
Query1.FieldByName('MonChamp').DisplayWidth:=5;