Guten Morgen!
Hab´mal wieder ´ne Frage zum DBGrid (meine Lieblings-Kompo....
)
Ich verknüpfe per
SQL mehrere Tabellen und gebe das Resultat in einem DBGrid aus.
Nun möchte ich den Injalt der
selektierten Zeilen [Multiselect] in eine eigene Tabelle schreiben.
Nur leider führt das Programm die Prozedur nur für die aktuell selektierte Zeile durch, nicht für
alle in der Bookmark-List. Warum?
Hier die Prozedur:
Delphi-Quellcode:
procedure TForm1.SpeedButton3Click(Sender: TObject);
var
i : integer;
begin
tblMyTable.Open;
for i := 0 to DBGrid6.SelectedRows.Count - 1 do
try
begin
tblMyTable.Insert;
tblMyTable.FieldByName('ZimmerIdent').AsInteger := DBgrid6.Columns[0].Field.Value;
tblMyTable.FieldByName('AnbieterIdent').AsInteger := DBgrid6.Columns[1].Field.Value;
tblMyTable.FieldByName('HotelIdent').AsInteger := DBgrid6.Columns[2].Field.Value;
tblMyTable.FieldByName('Hotelname').AsString := DBgrid6.Columns[3].Field.Value;
tblMyTable.FieldByName('Name').AsString := DBgrid6.Columns[4].Field.Value;
tblMyTable.FieldByName('Zimmername_s').AsVariant := DBgrid6.Columns[5].Field.Value;
tblMyTable.Post;
end;
except
Application.MessageBox('Es ist ein Fehler aufgetreten.' + chr(13) + 'Möglicherweise existriert ein gewählter '
+ 'Eintragg bereits.','Fehler',MB_OK or MB_ICONEXCLAMATION);
end;
tblMyTable.Close;
end;
Die zuletzt (aktuell) angewählte Zeile wird geschrieben, danach bekomme ich (logischerweise) ´ne
Key Violation, da die Prozedur bis zum erreichen von DBGrid6.SelectedRows.Count versucht die gleichen Daten -> Key
in die Tabelle zu schreiben. Hat jemand ´ne abhilfe? Kann ich da was über die Bookmark-List machen?
Die zu schreibenden Daten stehen ja leider nicht in einer festen Tabelle...
Vielen Dank, Philipp