Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/11/2002, 10h30   #1
Membre du Club
 
Homme
Ingénieur développement logiciels
Inscription : juin 2002
Messages : 163
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2002
Messages : 163
Points : 52
Points : 52
Envoyer un message via ICQ à tripper.dim Envoyer un message via AIM à tripper.dim Envoyer un message via MSN à tripper.dim Envoyer un message via Yahoo à tripper.dim Envoyer un message via Skype™ à tripper.dim
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.
tripper.dim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2002, 18h48   #2
Futur Membre du Club
 
Inscription : septembre 2002
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 19
Points : 19
Points : 19
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 :
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
SuperTotor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2002, 21h33   #3
Membre du Club
 
Homme
Ingénieur développement logiciels
Inscription : juin 2002
Messages : 163
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2002
Messages : 163
Points : 52
Points : 52
Envoyer un message via ICQ à tripper.dim Envoyer un message via AIM à tripper.dim Envoyer un message via MSN à tripper.dim Envoyer un message via Yahoo à tripper.dim Envoyer un message via Skype™ à tripper.dim
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.
tripper.dim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2002, 01h14   #4
Futur Membre du Club
 
Inscription : septembre 2002
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 19
Points : 19
Points : 19
Ben j'en ai bien l'impression ... dailleurs c'est pas cool
SuperTotor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2002, 10h32   #5
Membre du Club
 
Homme
Ingénieur développement logiciels
Inscription : juin 2002
Messages : 163
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2002
Messages : 163
Points : 52
Points : 52
Envoyer un message via ICQ à tripper.dim Envoyer un message via AIM à tripper.dim Envoyer un message via MSN à tripper.dim Envoyer un message via Yahoo à tripper.dim Envoyer un message via Skype™ à tripper.dim
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.
tripper.dim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2002, 20h48   #6
Futur Membre du Club
 
Inscription : septembre 2002
Messages : 19
Détails du profil
Informations forums :
Inscription : septembre 2002
Messages : 19
Points : 19
Points : 19
Tu met ta requête dans la propriété SQL d'un de tes composants non ???
SuperTotor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2002, 14h04   #7
Membre du Club
 
Homme
Ingénieur développement logiciels
Inscription : juin 2002
Messages : 163
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2002
Messages : 163
Points : 52
Points : 52
Envoyer un message via ICQ à tripper.dim Envoyer un message via AIM à tripper.dim Envoyer un message via MSN à tripper.dim Envoyer un message via Yahoo à tripper.dim Envoyer un message via Skype™ à tripper.dim
Par défaut Dans C++ builder et interbase

Je suis maintenant avec un num_emp auto-incrémentant avec l'instruction
Code :
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
tripper.dim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2002, 00h10   #8
Inactif
 
Inscription : juillet 2002
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 21
Points : 14
Points : 14
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;
okeefe est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h22.


 
 
 
 
Partenaires

Hébergement Web