Je souhaite supprimer plusieurs enregistrements sélectionnés que j'ai affichés dans TDBAdvGrid. Un certain nombre d'enregistrements sont sélectionnés en cochant la case en face d'eux. Après avoir cliqué sur le bouton Supprimer, il déclenche la procédure comme suit. Il retourne les valeurs des lignes sélectionnées avec succès seulement problème avec la suppression de tous les enregistrements. Il supprime uniquement le premier enregistrement sélectionné.Comment supprimer les enregistrements sélectionnés de TDBAdvGrid?
procedure TForm5.Button3Click(Sender: TObject);
var
i,j,idn: Integer;
State: Boolean;
begin
j := 0;
for i := 1 to DBAdvGrid1.RowCount - 1 do
begin
if DBAdvGrid1.GetCheckBoxState(1,i,state) then
begin
if state then
begin
idn := StrToInt(DBAdvGrid1.Cells[6,i]);
UniQuery1.SQL.Text := 'Delete from userplays where id = :id';
UniQuery1.ParamByName('id').AsInteger := idn;
UniQuery1.ExecSQL;
end;
end;
end;
end;
Il supprime seulement le premier enregistrement de la gamme. Après la suppression du premier enregistrement, il est interrompu pour la boucle et le contrôle retourne à TDBAdvGrid avec les données mises à jour après la suppression.
Supprimer directement sur la borne Dataset DBAdvGrid1.Datasource.Dataset. – bummi
Avez-vous essayé 'DBAdvGrid1.SelectedRows.Delete'? – kobik
@kobik 'DBAdvGrid1.SelectedRow' est là et c'est la propriété pas fonction/procédure. –