Hallo Darkchild,
mal sehen, ob ich helfen kann.
Mit der folgenden Methode durchläufst du die gefilterten Records der Grid und ermittelst die ID:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var
i : Integer;
ID: Integer;
begin
with cxGridView.DataController
do
begin
for i := 0
to FilteredRecordCount - 1
do
begin
// ID ermitteln anhand des Index
ID := GetRecordId(FilteredRecordIndex[i]);
// Jetzt am Besten eine SP zum Setzen von gesperrt auf Feld mit dieser ID
end;
// und jetzt ein Refresh auf die Table
// das Refresh ist ausreichend, wenn die Table mit der Query eine gemeinsame Transaction benutzt.
// Sonst wäre ein CommitRetaining der SP und der Table notwendig.
end;
end;
Voraussetzung ist, dass du das Feld mit der eindeutigen ID in der Grid einträgst:
cxGridView.DataController.KeyFieldNames := 'zeiterfassung_id';
das geht auch im
OI.
Ich denke, wenn du die zeiterfassung_id hast, kommst du weiter.
Wenn ich in der Grid eine Abfrage mit mehreren Tabellen habe und benötige Änderungen, erzeuge ich auf der
DB einen Updateable View. Da kannst du über Trigger steuern, wie in welchen Tabelle Werte eingetragen werden.
Cu, Frank