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:

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 ; ^
Dans Delphi, j'utilise les composants IBDatabase, IBTable et IBTransaction, DBGrid, DBNavigator et DataSource.

Ou est le problème ?

Merci.