J'essayé d'obtenir le No d'enregistrement après insertion de plusieurs données dans une table d'une base de données (Access 2000), table qui porte le nom DOSSIER.

Dans l'extrait de mon programme suivant .....

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
37
38
39
40
41
42
43
 
           //Création d'un nouveau enregistrement dans la table DOSSIER (local)
           ADOTable1.TableName := 'DOSSIER';
           adosqlcommand1.Clear;
           ADOQuery1.SQL.Clear;
 
           adosqlcommand1.Add('INSERT INTO DOSSIER (DOS_EMPR_NOM, DOS_EMPR_PRENOM, CIV_ID)' + ' VALUES(''' + CreationKey + ''',''test'',' + '1' +');');
 
           AdoQuery1.SQL.Text := adosqlcommand1.Text;
           try
             AdoQuery1.ExecSQL;
           except
              { A faire : traitement d'erreur }
           end;
           AdoQuery1.Close;
 
           //Lancer une requête pour récupérer la clé de la table DOSSIER (Champ DOS_ID)
           ADOTable1.TableName := 'DOSSIER';
           adosqlcommand1.Clear;
           ADOQuery1.SQL.Clear;
           adosqlcommand1.Add('SELECT (DOS_EMPR_NOM) from DOSSIER' +' WHERE (DOS_EMPR_NOM=''' + 'xp9000creationkey' + ''');');
           AdoQuery1.SQL.Text := adosqlcommand1.Text;
           try
             AdoQuery1.Open;
           except
              { A faire : traitement d'erreur }
           end;
 
 
           try
               //Obtenir le No de l'enregistrment
               Edit1.Text := IntToStr(AdoQuery1.RecordCount);
               while not ADOQuery1.EOF do
               begin
                    // Et voila la ligne suivante qui fait planter mon programme.
                    DOS_ID := ADOQuery1.Fields.FieldByName('DOS_ID').AsInteger;
                    ADOQuery1.Next;
               end;
               AdoQuery1.Close;
 
           except
              { A faire : traitement d'erreur }
           end;
il se produit une erreur sur la ligne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
       DOS_ID := ADOQuery1.Fields.FieldByName('DOS_ID').AsInteger;
avec le message suivant:




Explication : DOS_ID est la clé primaire de la table DOSSIER. C'est une clé auto-incrémenté, et elle existe bien dans la table contrairement à ce que le message dit!

Ma question : Comment éviter cette erreur :

Merci d'avance pour votre aide.