Pense à la balise [CODE] icone # pour nous faciliter la lecture de ton code
1 2 3 4 5 6 7 8 9
| if (DataModule4.Table3.IsEmpty = false) Then
begin
for i:=1 to DataModule4.Table3.RecordCount do
begin
if DataModule4.Table3.FieldValues['nom']=F then
DataModule4.table3.Delete;
end;
DataModule4.table3.next;
end; |
Pense que le Delete effectue une sorte de Next
Mais ton Next est curieusement placé hors de la boucle, à un moment, tu devais bloquer sur le même enreg différent de F
Evite RecordCount ce n'est pas fiable (certains composant ne le supporte pas avec Exception, d'autres gère de la pagination de donnée qui fausse cette valeur au profit de meilleure performance)
le mieux c'est EOF et BOF !
Pense au with pour éviter de dupliquer le nom de l'objet, pour un code court comme celui-ci, c'est idéal, ne pas en abuser !
DataModule4.Table3, pense à nommer intelligemment tes objets, comment vas-tu t'y retrouver quand tu en auras des centaines voir des milliers !
1 2 3 4 5 6 7 8 9 10 11
| with DataModule4.Table3 do
begin
First();
while not EOF do
begin
if FieldByName('nom').AsString=F then
Delete()
else
Next();
end;
end; |
personnellement, je préfère écrire "not test" que "test = false"
certains n'aime pas
if not DataModule4.Table3.IsEmpty then
Partager