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

SQL Firebird Discussion :

ca ne fonctionne pas (generateur auto-incrémentant)


Sujet :

SQL Firebird

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 213
    Points : 102
    Points
    102
    Par défaut ca ne fonctionne pas (generateur auto-incrémentant)
    Je ne sais pas si c'est moi, mais avec interbase 6 et en fesant le code suivant je ne parvient pas à obtenir un numéro incrémentant sur ma clé:

    CREATE TABLE EMPLOYES
    (
    NUM_EMP INT NOT NULL,
    NOM_EMP CHAR (25),
    PRE_EMP CHAR(25),
    PRIMARY KEY (NUM_EMP)
    );

    CREATE GENERATOR EMPLOYES_GenId;

    SET TERM !!;

    CREATE TRIGGER TRIG_EMPLOYES_GenId FOR EMPLOYES
    ACTIVE BEFORE INSERT AS
    BEGIN
    IF ( NEW.NUM_EMP IS NULL ) THEN
    NEW.NUM_EMP = GEN_ID(EMPLOYES_GenId,1);
    END !!

    SET TERM; !!

    Tous passe et ce crée, mais quand j'entre des données (sauf dans NUM_EMP ou je laisse le champ <NULL>), je n'arrive pas à passer au champ suivant tant que je n'entre pas moi même une donnée.

    D'avance merci pour votre aide.

  2. #2
    Membre à l'essai
    Inscrit en
    Septembre 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    Je crois que tu utilise la grille de saisie d'IBConsole, non ?! c'est vrai que ça ne fonctionnera pas comme ça et je ne sais pas pourquoi.
    Tu dois faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO Employes(NOM_EMP,PRE_EMP) VALUES('X-Man','Test');
    dans une fenêtre SQL d'IBConsole ou dans ton code.

    @ +

    PS: T'es pas obligé de créer un nouveau sujet pour ça, t'aurais pu continuer avec le précédent

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 213
    Points : 102
    Points
    102
    Par défaut dans l'ibconsole
    Si je comprend bien dans l'IBConsole quand on vas dans les propriétés "d'employes" et que l'on inscrit directement dans les data y a pas moyen d'avoir un numéro auto-incrémentant?

    Merci pour votre aide.

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    Ben j'en ai bien l'impression ... dailleurs c'est pas cool

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 213
    Points : 102
    Points
    102
    Par défaut Ou l'incorporer
    si je veux utilisser le code

    INSERT INTO EMPLOYES (NOM_EMP, PRE_EMP) VALUES ('.......','........');
    COMMIT;

    Ou le mettre dans mon code quand j'utilise builder ou delphi

    disons que je fasse un fiche avec une TTable, TDataSource, TDBEdit et TDBNavigator uniquement pour voir et introduire des données dans ma base de données pour que quand je fasse le commit de la TDBNavigator il ne m'iscrive pas une erreur pacequ'il manque la valeur NUM_EMP.

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    Tu met ta requête dans la propriété SQL d'un de tes composants non ???

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 213
    Points : 102
    Points
    102
    Par défaut Dans C++ builder et interbase
    Je suis maintenant avec un num_emp auto-incrémentant avec l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into employes(nom_emp, pre_emp) values ('x','y');
    mais quand j'installe ce code en builder en passant par le TQuery
    il ne passe que si je met un numero dans num_emp, il ne s'occupe pas que dans interbase j'ai fait un generateur et un trigger qui incrémente se num_emp.

    Comment puis-je y arriver en builder??

    Merci pour votre aide

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 21
    Points : 24
    Points
    24
    Par défaut
    si tu as créer ton trigger et que tu ne veux pas de soucier de ton champ autoincrémenter

    dans l'évènement AfterOpen de ton DataSet faut rajouter

    DataSet.FieldByName('NOchamp').Required := False;

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

Discussions similaires

  1. Réponses: 21
    Dernier message: 28/06/2010, 08h40
  2. [MySQL] valeur id ne changeant pas avec un auto incrément
    Par zabdaniel dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 19/03/2008, 17h00
  3. Auto suggestion des adresses ne fonctionne pas
    Par Ludo75 dans le forum Outlook
    Réponses: 1
    Dernier message: 27/12/2007, 08h42
  4. Réponses: 3
    Dernier message: 02/12/2006, 16h10
  5. Réponses: 1
    Dernier message: 27/10/2005, 21h48

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