Nel gestore eventi AfterPost per ClientDataSet, ho bisogno delle informazioni se la funzione ApplyUpdates per il record corrente farà un aggiornamento o un inserimento.Come posso rilevare se ApplyUpdates inserirà o aggiornerà i dati?
L'evento AfterPost verrà eseguito per i record nuovi e aggiornati e non desidero dichiarare una nuova variabile Flag per indicare se è in corso un'operazione di 'aggiornamento' o 'inserimento'.
codice Esempio:
procedure TdmMain.QryTestAfterPost(DataSet: TDataSet);
begin
if IsInserting(QryTest) then
// ShowMessage('Inserting')...
else
// ShowMessage('Updating');
QryTest.ApplyUpdates(-1);
end;
L'applicazione scriverà un registro nel metodo Afterpost, dopo ApplyUpdate ha completato. Quindi questo metodo è il posto più vicino all'azione, preferirei una soluzione che possa essere completamente inserita in questo gestore di eventi.
Come è possibile implementare la funzione IsInserting, utilizzando le informazioni nell'istanza di ClientDataSet QryTest?
Modifica: Proverò ClientDataSet.UpdateStatus che è spiegato here.
Che cosa hai intenzione di fare? Effettua convalide, aggiorna l'interfaccia utente o manipola alcuni dati? – zendar
L'applicazione scriverà un registro nel metodo AfterPost, dopo che ApplyUpdate è stato completato. Quindi questo metodo è il posto più vicino all'azione, preferirei una soluzione che possa essere completamente inserita in questo gestore di eventi. Controllare l'array Delta qui sembra essere il modo più semplice. – mjn
Questo è il posto migliore se si registra per utente, sul lato client. Se si desidera il registro centrale per tutti gli utenti, il posto migliore sarebbe sul lato server nell'evento AfterApplyUpdates su TDataSetProvider. – zendar