Bonjour,
J'ai un petit problème avec un champ autoincrémenté dans Delphi. Lorsque je veux ajouter un enregistrement, j'ai chaque fois le message d'erreur "Le champ ID doit evoir une valeur". Ce champ ID est un autoincrémenté géré par FireBird.
J'ai créé ma base de données et ma table avec IBExpert. Dans IB expert lors de l'ajout d'un enregistrement l'autoincréménté fonctionne parfaitement par contre dans Delphi ca ne fonctionne pas.
Voici le code pour créé la table et les autoincrémentés dans IBExperts:
Dans Delphi, j'utilise les composants IBDatabase, IBTable et IBTransaction, DBGrid, DBNavigator et DataSource.
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
31
32
33
34
35
36 CREATE TABLE CLIENTS ( ID INTEGER NOT NULL, NOM CHAR(30), PRENOM CHAR(30)); alter table CLIENTS add constraint PK_CLIENTS primary key (ID); CREATE GENERATOR GEN_CLIENTS_ID; SET TERM ^ ; CREATE TRIGGER CLIENTS_BI FOR CLIENTS ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID(GEN_CLIENTS_ID,1); END ^ SET TERM ; ^ SET TERM ^ ; CREATE PROCEDURE SP_GEN_CLIENTS_ID RETURNS (ID INTEGER) AS BEGIN ID = GEN_ID(GEN_CLIENTS_ID, 1); SUSPEND; END ^ SET TERM ; ^
Ou est le problème ?
Merci.
Partager