Création d'un champ auto incrément
Bonjour à tous. :P
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:
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:
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:
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:
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:
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. 8-)