Salut à tous.
Je sais ajouter des champs calculés à une Query en mode conception, mais je me demande si on peux le faire en mode runtime.
Merci
Salut à tous.
Je sais ajouter des champs calculés à une Query en mode conception, mais je me demande si on peux le faire en mode runtime.
Merci
On progresse .....
Oui tu peux le faire.
Pour voir comment tu doit les ajouter dans le code il suffit de double cliquer sur ton Composant TQuery, ajouter des champs et faire un copie sur le champ en question ( ou tous ) et de les coller dans le bloc-note !
En gros, ca peut donner un truc comme ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 object MaQueryMonChamp: TStringField FieldKind = fkCalculated FieldName = 'MonChamp' Size = 25 Calculated = True end
Mais en RunTime ça fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 with TFloatField.Create(Table1) do begin FieldName := 'NomChamps'; FieldKind := fkCalculated; DataSet := Table1; Name := Dataset.Name + 'NomChamps'; Table1.FieldDefs.Add('NomChamps', ftFloat, 0, False); end;
<On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**
Merci beaucoup.
Je vais le mettre en pratique ce code.
En faites, la query sers à alimenter uine grille en mode runtime.
Mais est ce qu'il y a un moyen de cacher l'affichage d'un champs dans la grille.
Merci
On progresse .....
Envoyé par Andry
soit tu passe apr les propriétés Colums de ta dbgrid (dbl-clique sur la grille)
soit Ma_query.Fieldbyname('Mon_champs').Visible:=false
En gros, je dois gerer l'evenement OnCalcField du query pour mon champs calculé, et ensuite cacher les champs dont je n'aurait pas besoin.
Merci
On progresse .....
Tu rends visible ou non, le champs au moment ou tu le crée et hop !
En gros voici le souci , car j'ai une erreur lors d'appel de :
J'ai une classe qui a une propriété publique ListeDossier qui est en faites qu'une instance de TIbQuery.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Ma_query.Fieldbyname('Mon_champs').Visible:=false
Le code SQL de Listedossier est comme suit
Comme DS_GARANTIE est un champs SmallInt, j'ai voulu creer un champs calculé de type Boolean basé sur DS_GARANTIE.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT DS_NO,DS_DATE,DS_GARANTIE FROM TDOSSIERS WHERE ....
Maintenant, un grille est rattaché à ListeDossier via un TDataSource.
Actuellement, ça marche bien mais j'aimerais ne pas afficher DS_NO et DS_GARANTIE dans la grille.
Le problème c'est que des que je mets
ListDossier.FieldByName('DS_NO').Visible := False, j'ai une erreur.
La question est, existe -il un moyen d'avoir les champs d'une Query en runtime comme ce qu'on fait en designTime et dble cliquant sur le composant IBQuery et rajoutter les champs ?
Merci
On progresse .....
Théoriquement t'as bien écris est c'est juste. Le problème dois être ailleurs.
quel message d'erreur tu as?
<On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager