Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

TClientDataSet + OnBeforeDelete + ApplyUpdates

35 views
Skip to first unread message

colde

unread,
Apr 16, 2013, 1:32:43 AM4/16/13
to
Ciao a tutti,
In un progetto che sto sviluppando con SQLite e TClientDataSet, all'evento OnBeforeDelete di un record ho inserito la funzione ApplyUpdates(-1) e tutto sembra sembra funzionare alla perfezione non generando alcun tipo di errore ma quando eseguo il refresh mi compare sempre l'avviso "Must apply updates before refreshing data". Ho anche verificato gli errori che dovrebbe restituirmi all'evento OnReconcileError ma torna sempre valore zero. La cosa strana è che se invece applico gli update direttamente da DBNavigator non ho problemi e il dato viene cancellato correttamente. L'inserimento e la modifica dei dati invece funzionano alla perfezione e il procedimento è lo stesso usato per il delete. Avete idea di come fare a risolvere? Vorrei evitare di applicare gli update manualmente.

Grazie dell'aiuto.

Alberto Salvati

unread,
Apr 16, 2013, 2:40:17 AM4/16/13
to
tu fai delete
sulla before delete fai un apply
poi fai la delete

Come giro è un po strano.
Per quale motivo fai un applyupdates nella before delete?

A.

colde

unread,
Apr 16, 2013, 6:50:01 AM4/16/13
to
Proverò così ma temo vada in loop. Il delete lo devo fare sul CDS vero? L'uso del OnBeforeDelete mi serve per chiedere conferma prima della effettiva cancellazione.

Grazie

Alberto Salvati

unread,
Apr 16, 2013, 6:53:40 AM4/16/13
to
On Tuesday, April 16, 2013 12:50:01 PM UTC+2, colde wrote:
> Proverò così ma temo vada in loop.

cosi come?


> Il delete lo devo fare sul CDS vero?

L'alternativa quale sarebbe?


> L'uso del OnBeforeDelete mi serve per chiedere conferma

SBAGLIATO. ERRORE GRAVE.

A.

colde

unread,
Apr 16, 2013, 7:27:19 AM4/16/13
to
Explain please. Per quale motivo è così grave?

Grazie

Alberto Salvati

unread,
Apr 16, 2013, 7:44:02 AM4/16/13
to
xche il compito del dataset non è mostrare messaggi.
Quello è compito dell'interfaccia utente.
Il posto giusto per mettere il msg è il pulsante o altro che l'utente usa per dire "voglio cancellare".

A.

Marco Breveglieri

unread,
Apr 16, 2013, 9:24:12 AM4/16/13
to
Il giorno martedì 16 aprile 2013 07:32:43 UTC+2, colde ha scritto:
> In un progetto che sto sviluppando con SQLite e TClientDataSet, all'evento OnBeforeDelete di un record ho inserito la funzione ApplyUpdates(-1) e tutto sembra sembra funzionare alla perfezione non generando alcun tipo di errore ma quando eseguo il refresh mi compare sempre l'avviso "Must apply updates before refreshing data". [...]

Mi sembra un po' strano chiamare il metodo "ApplyUpdates" all'interno di quell'evento: hai verificato a cosa serve quel metodo e come lavora in generale il ClientDataSet, giusto?

--
MARCO BREVEGLIERI
#Home: http://www.marco.breveglieri.name
#Blog: http://www.compilaquindiva.net

colde

unread,
Apr 16, 2013, 12:48:06 PM4/16/13
to
Ok Alberto grazie del consiglio, effettivamente la logica mi sembra corretta. La gestione dei messaggi la inserivo in quel modo per praticità mia ma vedrò di aggiornare il tutto.

Marco, premesso che è la prima volta che uso il CDS, ho letto il funzionamento e a cosa serve ma proprio non riesco a capire per quale motivo non dovrei fare un ApplyUpdates in quell'evento; potresti darmi qualche info e spiegazione in merito?

Grazie

colde

unread,
Apr 16, 2013, 1:27:15 PM4/16/13
to
Come non detto. Risolto. L'ApplyUpdates non va messo in OnBeforeDelete ma in OnAfterDelete..mea culpa. Marco avevi ragione..come sempre.

Grazie dell'aiuto e dei consigli.
0 new messages