Thema: Delphi Multidelete im cxGrid

Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Multidelete im cxGrid

  Alt 17. Jan 2009, 10:53
Zitat von Morphie:
Ich versuche mit dem cxGrid eine Art Multidelete durchzuführen. Also alle markierten Datensätze sollen gelöscht werden...

Mein code dazu sieht wie folgt aus:
Delphi-Quellcode:
procedure Tkunden.LoeschenExecute(Sender: TObject);
var
i: integer;
bm: TBookmarkStr;
begin
  for i := 0 to GridDBTableView1.Controller.SelectedRecordCount-1 do
  begin
    bm:=GridDBTableView1.DataController.GetSelectedBookmark(i);
    queryKundenliste.Bookmark:=bm;
    queryKundenliste.Delete;
  end;
end;
Jetzt bekomme ich aber immer folgende Fehlermeldung:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt test.exe ist eine Exception der Klasse EcxInvalidDataControllerOperation mit der Meldung 'DataController not in GridMode' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------


Der DataController soll aber auch nicht im GridMode arbeiten.
In diesem Fall würde ich alle markierten Sätze durchlaufen, die Werte der Primary Keys auslesen und jeweils ein SQL Delete Statement an die Datenbank senden. Wenn Konsistenz wichtig ist, natürlich in einer Transaktion, für den Fall dass ein Satz sich nicht löschen lässt.

Im DevExpress Forum gibt es Beispielsource, wie man die markierten Sätze durchläuft ohne dabei auf die verbundene Query zuzugreifen (die Daten stehen ja schon im Grid).
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat