action sur une sélection multiple dans un DBGRID
Salut tous j'ai un problème pour faire une action dans une sélection multiple dans un DBGrid.
j'affiche un DBGRID grâce a une requête query
Code:
1 2
| Datamodule1.Query31.SQL.Text := 'SELECT * from adherent.DB' ;
Datamodule1.Query31.Active:=true; |
j'affiche le résultat dans un DBGrid avec une case à cocher ,pour l'instant tout est ok.
Je sélectionne mes cases a coché et sur un bouton je veux créer un enregistrement en récupérant l'id le nom et le prénom mais la j'ai une érreur
Code:
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
| procedure Talloue_cotisation.BitBtn4Click(Sender: TObject);
var
i: Integer;
begin
for i:=0 to SMDBGrid1.SelectedRows.Count-1 do
begin
SMDBGrid1.DataSource.DataSet.GotoBookmark(pointer(SMDBGrid1.SelectedRows.Items[i]));
SMDBGrid1.DataSource.DataSet.Edit;
//SMDBGrid1.DataSource.DataSet.FieldByName('Lieu_trn').AsInteger := 3;
SMDBGrid1.DataSource.DataSet.FieldByName('Idadherent').AsString;
SMDBGrid1.DataSource.DataSet.FieldByName('Nom').AsString;
SMDBGrid1.DataSource.DataSet.FieldByName('Prenom').AsString;
Datamodule1.Table9.Active:=true;
Datamodule1.Table9.Append;
Datamodule1.Table9.FieldByName('Idadherent').Value := SMDBGrid1.DataSource.DataSet.FieldByName('Idadherent').AsString;
Datamodule1.Table9.FieldByName('Nom').Value := SMDBGrid1.DataSource.DataSet.FieldByName('Nom').AsString;
Datamodule1.Table9.FieldByName('Prenom').Value := SMDBGrid1.DataSource.DataSet.FieldByName('Prenom').AsString;
SMDBGrid1.DataSource.DataSet.Post;
Datamodule1.Table9.Post();
end;
end; |
message erreur
Citation:
Query31:Impossible de modifier un ensemble de données en lecture seule
si mon DBGrid est alimenté par un Ttable tous fonctionne bien .Mais j'ai besoin de faire un critaire de sélection donc une requête il me faut impérativement un query ?
je ne trouve pas la solution merci de votre aide