Hier noch einmal der Code:
Delphi-Quellcode:
begin
inherited;
with dm_Nails4You_Artikel do
BEGIN
ADOQuery_Preisliste.Active := False;
ADOQuery_Preisliste.SQL.Clear;
ADOQuery_Preisliste.SQL.Text := 'INSERT INTO Preisliste(ID_Artikel, Bezeichnung) VALUES( :ID, :Bezeichnung)';
ADOQuery_Preisliste.Parameters.ParseSQL(ADOQuery_Preisliste.SQL.Text, true);
with DBGrid1.DataSource.DataSet do
begin
// DBGrid1.SelectedRows.Refresh;
for i := 0 to DBGrid1.SelectedRows.Count - 1 do
BEGIN
DBGrid1.DataSource.DataSet.GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
ShowMessage('i: ' + InttoStr(i) );
ADOQuery_Preisliste.Parameters.ParamValues['ID'] := AdoQuery_Artikel.FieldValues['id'];
ADOQuery_Preisliste.Parameters.ParamValues['Bezeichnung'] := AdoQuery_Artikel.FieldValues['Bezeichnung'];
ADOQuery_Preisliste.ExecSQL;
End;
end;
end;
Die Schleife for i := 0 to DBGrid1.SelectedRows.Count - 1 do funktioniert. Es wird tatsächlich zu jedem Datensatz im Grid gesprungen. D.h., dass auch DBGrid1.DataSource.DataSet.GotoBookmark(pointer(
DB Grid1.SelectedRows.Items[i])); funktioniert.
Aber dann wird immer nur der 1. Datensatz kopiert.