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).