Im AfterPost-Ereignishandler für ein ClientDataSet benötige ich die Informationen, wenn die Funktion ApplyUpdates für den aktuellen Datensatz eine Aktualisierung oder eine Einfügung durchführt.Wie kann ich feststellen, ob ApplyUpdates Daten einfügt oder aktualisiert?
Das AfterPost-Ereignis wird für neue und aktualisierte Datensätze ausgeführt, und ich möchte keine neue Flag-Variable deklarieren, um anzuzeigen, ob ein 'Update' oder 'Insert' Vorgang ausgeführt wird.
Beispielcode:
procedure TdmMain.QryTestAfterPost(DataSet: TDataSet);
begin
if IsInserting(QryTest) then
// ShowMessage('Inserting')...
else
// ShowMessage('Updating');
QryTest.ApplyUpdates(-1);
end;
Die Anwendung wird ein Protokoll in der Afterpost Methode schreiben, nachdem ApplyUpdate abgeschlossen hat. Diese Methode ist also der Ort, der der Aktion am nächsten ist. Ich würde eine Lösung vorziehen, die vollständig in diesen Event-Handler eingefügt werden kann.
Wie kann ich die IsInserting-Funktion mithilfe von Informationen in der ClientDataSet-Instanz QryTest implementieren?
Bearbeiten: Ich werde ClientDataSet.UpdateStatus versuchen, die here erklärt wird.
Was planen Sie zu tun? Validierungen durchführen, Benutzeroberfläche aktualisieren oder Daten manipulieren? – zendar
Die Anwendung schreibt ein Protokoll in die AfterPost-Methode, nachdem ApplyUpdate abgeschlossen wurde. Diese Methode ist also der Ort, der der Aktion am nächsten ist. Ich würde eine Lösung vorziehen, die vollständig in diesen Event-Handler eingefügt werden kann. Das Überprüfen des Delta-Arrays scheint hier der einfachste Weg zu sein. – mjn
Dies ist der beste Ort, wenn Sie sich pro Benutzer auf der Clientseite anmelden. Wenn Sie eine zentrale Protokollierung für alle Benutzer durchführen möchten, ist die Position auf dem Server im AfterApplyUpdates-Ereignis für TDataSetProvider besser. – zendar