IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Création de champs calculé en runtime.


Sujet :

Bases de données Delphi

  1. #1
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut Création de champs calculé en runtime.
    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 .....

  2. #2
    Débutant

    Inscrit en
    Décembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 166
    Points : 120
    Points
    120
    Par défaut
    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

  3. #3
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    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é**

  4. #4
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    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 .....

  5. #5
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    Citation Envoyé par Andry
    Mais est ce qu'il y a un moyen de cacher l'affichage d'un champs dans la grille.

    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

  6. #6
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    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 .....

  7. #7
    Membre actif
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Points : 286
    Points
    286
    Par défaut
    Citation Envoyé par Andry
    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
    Yes

  8. #8
    Débutant

    Inscrit en
    Décembre 2003
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 166
    Points : 120
    Points
    120
    Par défaut
    Tu rends visible ou non, le champs au moment ou tu le crée et hop !

  9. #9
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    En gros voici le souci , car j'ai une erreur lors d'appel de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Ma_query.Fieldbyname('Mon_champs').Visible:=false
    J'ai une classe qui a une propriété publique ListeDossier qui est en faites qu'une instance de TIbQuery.
    Le code SQL de Listedossier est comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DS_NO,DS_DATE,DS_GARANTIE FROM TDOSSIERS WHERE ....
    Comme DS_GARANTIE est un champs SmallInt, j'ai voulu creer un champs calculé de type Boolean basé sur DS_GARANTIE.
    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 .....

  10. #10
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    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é**

Discussions similaires

  1. Réponses: 7
    Dernier message: 06/05/2010, 17h58
  2. Création d'un champs calcul dans une table
    Par arnold95 dans le forum Modélisation
    Réponses: 4
    Dernier message: 16/09/2009, 20h40
  3. Réponses: 4
    Dernier message: 05/05/2008, 18h51
  4. Création de champs calculés dynamique
    Par momo_gea dans le forum IHM
    Réponses: 1
    Dernier message: 01/06/2007, 16h39
  5. [TQuery] champs calculés
    Par Amenofis dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/01/2004, 14h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo