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 :

generateur et delphi


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    869
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 869
    Par défaut generateur et delphi
    bonjour,

    considérant que j'ai déclaré dans une base firebird le trigger suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CREATE TRIGGER CLIENT_BI FOR CLIENT
    ACTIVE BEFORE INSERT POSITION 0
    AS
    BEGIN
      IF (NEW.ID IS NULL) THEN
        NEW.ID = GEN_ID(GEN_CLI,1);
    END;
    Dans la copie d'écran ci joint (ibquerygeneratorfield) : quel choix faut il cocher dans le menu appliquer l'événement ?


    merci
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Cela dépend de tes besoins. Ces 3 options permettent de préciser le moment où sera effectué l'appel au générateur.

    1. Sur nouvel enregistrement: c'est-à-dire sur l'évènement OnNewRecord
    2. Lors de la validation: c'est-à-dire sur OnBeforePost

    Pour ces 2 premiers cas, tu récupères la valeur du générateur (affectée à ton champ) et peut l'utiliser pour d'autres traitements. (par exemple alimenter une table enfant: FK)

    et enfin
    3. Tu laisses le serveur se débrouiller comme un grand, mais il faudra faire un refresh si tu veux récupérer la valeur de l'ID.

    @+ Claudius

  3. #3
    Membre émérite Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Par défaut
    Bonjour,

    Je me permets de faire une précision, dans la mesure où pour les 2 premiers cas sités par Claudius, le composant TIBQuery va faire le travail d'incrémentation à la place du trigger dans la table interbase. Donc si les deux (trigger et TIBGeneratorField) sont utilisés simultannément, le compteur sera incrémenté 2X à chaque nouvel enregistrement.

    Par conséquent si un trigger existe dans interbase/firebird, il faudra pendre l'opion 3 dans TIBQuery.

    Une autre réponse, c'est qu'il n'est pas necessaire d'utiliser un trigger dans Interbase/firebird pour les cas 1) et 2), d'où l'intérêt du principe. Mais quelques soient les cas envisagés, il faut au minimum (au préalable) que le générateur "Gen_Cli" soit créé dans Interbase/Firebird.

Discussions similaires

  1. Différences entre Delphi et Visual Basic ?
    Par Anonymous dans le forum Débats sur le développement - Le Best Of
    Réponses: 75
    Dernier message: 30/03/2009, 20h09
  2. Réponses: 1
    Dernier message: 13/05/2002, 09h19
  3. [Kylix] Migration delphi -> kylix
    Par Christian dans le forum EDI
    Réponses: 1
    Dernier message: 03/04/2002, 22h50
  4. Réponses: 4
    Dernier message: 27/03/2002, 11h03
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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