Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid nur markierte Datensätze löschen (https://www.delphipraxis.net/44420-dbgrid-nur-markierte-datensaetze-loeschen.html)

Quake 19. Apr 2005 10:34

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:
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;
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.

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

Sourcemaker 19. Apr 2005 10:45

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

Stevie 19. Apr 2005 11:09

Re: DBGrid nur markierte Datensätze löschen
 
Hallo Martin
Delphi-Quellcode:
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;
MfG
Stevie

Quake 19. Apr 2005 15:21

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.

Quake 20. Apr 2005 06:58

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 03:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz