Ajout de champs a une requete

Signaler
Messages postés
21
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
19 août 2002
-
Messages postés
19
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
1 août 2006
-
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

7 réponses

Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
1
Pour éclaicir la question, pourrais-tu nous donner la requète originale et modifié ainsi que les résultat que tu voudrais lire...

--- :sleepy) Nono du Moulin :sleepy) ---
Messages postés
21
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
19 août 2002

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.
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
1
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.

--- :sleepy) Nono du Moulin :sleepy) ---
Messages postés
21
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
19 août 2002

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???
Messages postés
962
Date d'inscription
mercredi 3 avril 2002
Statut
Membre
Dernière intervention
12 septembre 2006
1
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;

--- :sleepy) Nono du Moulin :sleepy) ---
Messages postés
19
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
1 août 2006

Messages postés
19
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
1 août 2006