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 :

[TQuery] champs calculés


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 103
    Points : 120
    Points
    120
    Par défaut [TQuery] champs calculés
    Salut tout le monde,

    pour rebondir sur ces deux sujets
    http://www.developpez.net/forums/vie...=ajouter+champ
    et
    http://www.developpez.net/forums/vie...=ajouter+champ

    je rencontre des problèmes pour utiliser le code fourni, à savoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    table1.oncalcfields := nil; 
    table1.open; 
    table1.close; 
    // maintenant, fielddefs est remplis 
    for i := 0 to fielddefs.count-1 do begin table1.fielddefs[i].createfield(table1); 
    l_champ := tbooleanfield.create(table1); 
    with l_champ do begin 
      fieldname := 'MONCALC'; 
      calculated := true; 
      dataset := table1; 
    end; 
    table1.oncalcfields := table1calcfields; 
    table1.open;
    car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fielddefs[i].createfield(table1)
    ne passe pas à la compil, de plus je comprends pas ce que fait ce code, et ça j'aime pas trop...

    mon problème est exactement le même que celui de Bloon : ajouter un champ calculé sur une requête dynamique...

    en espérant que quelqu'un pourra m'aider...

    Bloon peut-être ?

    d'avance merci

    @+
    Ce n'est pas parce qu'on pédale dans la semoule, qu'on est sûr de manger du couscous... (anonyme)

  2. #2
    Membre expérimenté
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Points : 1 339
    Points
    1 339
    Par défaut
    Voici du code qui marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i : integer;
    begin
      query1.Close;
      // mise à jour de la liste des champs du dataset
      query1.FieldDefs.Update;
      // création des TField correspondant aux champs du dataset
      for i := 0 to query1.FieldDefs.count-1 do
        query1.FieldDefs[i].CreateField(self);
      // création du TField calculé
      with TStringField.Create(self) do
      begin
        FieldName := 'NOMPRENOM';
        DisplayLabel := 'Nom Prénom';
        Size := 255;
        FieldKind := fkCalculated;
        DataSet := query1;
      end;
      query1.Open;
    end;
     
    procedure TForm1.Query1CalcFields(DataSet: TDataSet);
    var
      f : TField;
    begin
      f := DataSet.FindField('NOMPRENOM');
      if assigned(f) then
        f.AsString := DataSet.FieldByName('NOM').AsString + ' ' + DataSet.FieldByName('PRENOM').AsString;
    end;
    Le principe de ce code, c'est de créer tous les champs dynamiquement, qu'il s'agisse des champs du dataset ou bien des champs calculés.

    Bloon
    A lire : Les règles du club
    Delphi : La FAQ - Articles

  3. #3
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 103
    Points : 120
    Points
    120
    Par défaut
    Salut,

    Que voilà une affaire que je qualifierai de rondement menée

    Merci Bloon

    Choses curieuses quand même :
    - je vois pas bien la différence entre les deux codes
    - CreateField(self) n'est pas proposé dans la liste en "auto saisie"

    bizarre bizarre...

    Cela dit, ça marche et c'est bien le principal

    Merci encore à tous ceux qui ont réfléchi et à Bloon en particulier

    @+
    Ce n'est pas parce qu'on pédale dans la semoule, qu'on est sûr de manger du couscous... (anonyme)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. tclientdataset et champs calculés
    Par frantzgac dans le forum Bases de données
    Réponses: 1
    Dernier message: 06/10/2004, 22h38
  2. Group by à partir d'un champ calculé || substr
    Par SegmentationFault dans le forum Bases de données
    Réponses: 4
    Dernier message: 30/07/2004, 15h55
  3. Recherche sur champ calculé
    Par srvremi dans le forum Bases de données
    Réponses: 5
    Dernier message: 06/07/2004, 14h04
  4. Réponses: 2
    Dernier message: 22/03/2004, 10h50
  5. champ calculé
    Par tomm dans le forum Bases de données
    Réponses: 22
    Dernier message: 25/02/2004, 00h31

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