Bonjour à tous.

Cet exemple propose la création d'un champ Auto Incrément à partir d'un champs Numérique (NUM_PRDK) de la table MAJPRDSTK.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
procedure TMDT.DataModuleCreate(Sender: TObject);
 begin
 MAJPRDSTK.Active:=True ;   
 MAJPRDSTK.AddIndex('C','NUM_PRDK',[]) ; //ordre numérique
 MAJPRDSTK.AddIndex('L','LBL_PRDK',[]) ; //ordre alphabétique.
 end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
procedure TFrmMAJPRDSTK.FormActivate(Sender: TObject);
 begin
   MDT.MAJPRDSTK.IndexName:='L' ; //d'origine, la table est indexée par ordre alphabétique.
   MDT.MAJPRDSTK.First ;
 end;
-Insertion d'un nouvel enregistrement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
procedure TMDT.MAJPRDSTKBeforeInsert(DataSet: TDataSet);
begin
if MAJPRDSTK.RecordCount>0 then
   MAJPRDSTK.IndexName:='C' ;       //établissement momentané de l'ordre numérique, c'est aussi un 
   MAJPRDSTK.Last;
I:=MAJPRDSTK.FieldValues['NUM_PRDK']; //rafraîchissement pour les enregistrements de la table.
end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
procedure TMDT.MAJPRDSTKAfterInsert(DataSet: TDataSet);
begin
  if I=Null then
     I:=0;
MAJPRDSTK.FieldValues['NUM_PRDK']:=I+1;
end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
procedure TMDT.MAJPRDSTKAfterPost(DataSet: TDataSet);
begin
  MAJPRDSTK.ApplyUpdates ;
  MAJPRDSTK.IndexName:='L' ; //restitution de l'ordre initial de la table.
end;
merci à tous.