Hallo,
ich versuche gerade das ein Datensatz der gelöscht werden soll geprüft wir und bei einem bestimmten Wert dem Anwender noch mal die Möglichkeit gegeben wird den Löschvorgang abzubrechen.
Ereigniss BeforeDelete. Der Datensatz wird aber immer gelöscht
Delphi-Quellcode:
procedure TDatenModule1.IAuftragBeforeDelete(DataSet: TDataSet);
begin
IAuftrag.Tag := 1; // andere Ereignisse abbrechen
// keine Rechnung geschrieben aber Auftrag schon ausgeführt
if ((IBCQRechnunginfo.RecordCount = 0) and (IAuftragAU_FERTIG.AsString > ''))
then
begin
if MessageDlg('Auftrag fertig ohne Rechnung. wirklich löschen? ',
mtConfirmation, [mbYes, mbNo], 0, mbYes) = mrNo then
begin
DataSet.cancel;
end;
end;
end;
procedure TDatenModule1.IAuftragAfterEdit(DataSet: TDataSet);
begin
if IAuftrag.Tag > 0 then
exit;
In der
Unit DB geht es dann in der Procedure weiter bzw springt gleich wieder bei
case State of
dsEdit, dsInsert: raus.
ist auch klar
Delphi-Quellcode:
procedure TDataSet.Cancel;
procedure CancelNestedDataSets;
var
I: Integer;
begin
if Assigned(FNestedDataSets) then
for I := 0 to FNestedDataSets.Count - 1 do
if FNestedDataSets[I].Active then FNestedDataSets[I].Cancel;
end;
var
IsInserting: Boolean;
begin
case State of
dsEdit, dsInsert:
begin
IsInserting := False;
CancelNestedDataSets;
DataEvent(deCheckBrowseMode, 0);
if not (csDestroying in ComponentState) then
begin
DoBeforeCancel;
IsInserting := State = dsInsert;
if IsInserting then DoBeforeScroll;
end;
UpdateCursorPos;
InternalCancel;
FreeFieldBuffers;
SetState(dsBrowse);
if not (csDestroying in ComponentState) then
begin
Resync([]);
DoAfterCancel;
if IsInserting then DoAfterScroll;
end;
end;
end;
end;
Kann mir jemand sagen wie ich das Löschen nachdem die Anfrage "soll der Datensatz gelöscht werden" mit
Ja bestätigt wurde doch noch verhindern kann?
Vielen Dank
Michael