Bonjour,

Pour une petite application , j'utilise des fichiers locaux (cds) via le composant TSimpleDataSet .
Je crée le fichier de cette manière :

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
with Etodo do
 begin
   try  Active:=False; except   end;
   if FileExists(EFile.Text) then DeleteFile(EFile.Text);
   try
     Active:=True;
     EmptyDataSet;
   except
     with FieldDefs do
       begin
        Clear;
        Add('NUMART',ftString,10,true); //EAN modele+Coloris
        Add('NOM',ftString,30,true);
        for i := 1 to 24 do
         begin
           Add('PT'+inttostr(i),ftString,3,false);
           Add('QT'+inttostr(i),ftInteger,0,false);
         end;
        Add('PRIX',ftCurrency,0,false);
        add('NOMDA',ftString,80,false);
       end;
     CreateDataSet;
     Active:=True;
     with IndexDefs do
       begin
         AddIndex('PKNUM','NOMDA',[ixPrimary]);
       end;
     SaveToFile;
   end;
 end;
et le remplit généralement par code, à l'occasion les quantités (Champs QT1-QT24 sont modifiées) via un DbCtrlGrid. Jusque là pas de difficultés.
Un DbNavigator permet de naviguer au sein du fichier. Je n'avais jusque là pas utilisé le (-) de ce dernier et là, ça coince !

Si je clique dessus (exécution en mode debug) j'ai un joli ding-dong, pas de message d'erreur et plantage du programme !
J'ai essayé de passer un message avec le BeforeDelete : ça se passe avant !
J'ai essayé de vérifier lors de l'utilisation du bouton
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
begin
if Button=nbDelete then Showmessage('nav : '+EtodoNOMDA.Value);
même chose cela se passe avant !
Moralité, j'ai raté quelque chose (certainement au niveau du SimpleDataSet), mais quoi ?