![]() |
Datenbank: FB • Zugriff über: IBX
DBGrid nur markierte Datensätze löschen
Hallo,
ich möchte nur die markierten Datensätze aus einem DBGrid löschen. Dazu verwende ich folgenden Code:
Delphi-Quellcode:
Das dumme daran ist nur, dass MyGrid.SelectedRows.Count trotz des Refresh nicht ändert. :gruebel: Irgendwann kommt dann immer eine Exception 'Datensatz nicht gefunden', was auch logisch ist da MyGrid.SelectedRows.Count ja nie weniger wird.
while MyGrid.SelectedRows.Count>0 do
begin if MyDataSet.BookmarkValid(pointer(MyGrid.SelectedRows.Items[0]))then begin MyDataSet.GotoBookmark(pointer(MyGrid.SelectedRows.Items[0])); MyDataSet.Delete; end; MyGrid.SelectedRows.Refresh; end; Und dieser Code funktioniert in meinem Fall genauso wenig.
Delphi-Quellcode:
for i:=0 to MyGrid.SelectedRows.Count-1 do
begin if MyDataSet.BookmarkValid(pointer(MyGrid.SelectedRows.Items[i]))then begin MyDataSet.GotoBookmark(pointer(MyGrid.SelectedRows.Items[i])); MyDataSet.Delete; end; MyGrid.SelectedRows.Refresh; end; ciao Martin |
Re: DBGrid nur markierte Datensätze löschen
Hallo Martin,
ich würde die markierten Datensätze erst in ein Array kippen und anschließend an Hand des Arrays löschen das macht dich unabhängig von irgendwelchen unzuverlässigen DataSet- oder DBGrid-Refresh- routinen. Grüße Frank |
Re: DBGrid nur markierte Datensätze löschen
Hallo Martin
Delphi-Quellcode:
MfG
begin
DBGrid1.DataSource.DataSet.DisableControls; while DBGrid1.SelectedRows.Count > 0 do begin DBGrid1.DataSource.DataSet.GotoBookmark(Pointer(DBGrid1.SelectedRows[0])); DBGrid1.DataSource.DataSet.Delete; DBGrid1.SelectedRows.Refresh; end; DBGrid1.DataSource.DataSet.EnableControls; end; Stevie |
Re: DBGrid nur markierte Datensätze löschen
@Stivie: Das funktioniert auch nicht da das ja nur eine etwas andere Schreibeweise ist wie mein Code.
MyGrid.DataSource.DataSet ist das Gleich wie MyDataSet. |
Re: DBGrid nur markierte Datensätze löschen
Moin moin,
ich bin jetzt über den Hinter am Knie vorbei zum Herz gegangen :coder: :wall:. Es geht halt nicht anders (zu mindes in meinem Fall). Ich habe es so ähnlich gemacht, wie Frank es vorgeschlagen hat. 1. Erzeugen einer TList 2. Speichern aller Datensatz-IDs (primary key) 3. Alle Datensätze löschen die in der Liste vermerkt sind. Trotzdem Danke an euch. ciao Martin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz