Newsgroup: it.comp.lang.delphi
Titolo: Progressivo nel DBGrid

In un DBGrid visualizzo un dataset con un campo importo e ho creato un campo 
calcolato perch� vorrei cacloare e visualizzare accanto alla colonna 
Importo, una colonna Progressivo, che contiene la somma progressiva dei vari 
importi (come in un estratto contom bancario).
Penso di aver fatto una cosa non tanto bella, ma funziona..Prima di 
descrivermi la mia brutta soluzione (che funziona solo se il dataset rimane 
nell'ordine in cui � stato creato..), vi chiederei se qualcuno ne conosce 
una che funziona in tutti i casi. 

 ha scritto nel messaggio 
news:4b705800$0$1134$4faf...@reader3.news.tin.it...

In alternativa ci sono i campi calcolati. Metti il codice per il calcolo 
nell'evento OnCalcFields e usi TDataset.RecNo per sapere a quale record ti 
trovi per terminare la somma progressiva. Cerca, all'interno dell'evento, di 
limitare i casi nei quali ti e' necessario ricalcolare il campo altrimenti 
rallenti tutto.
Ciao Giorgio

 ha scritto nel messaggio 
news:4b7141c3$0$1119$4faf...@reader2.news.tin.it...


 ha scritto

Hai preso in considerazione di fare quasto a livello DB, oppure calcolando 
il progressivo al interne del query? Mi sa che solo cos� puoi garantire che 
hai sempre i valori giusti - pur cambiando l'ordinamento delle righe per la 
visualizzazione.
Comunque: un progressivo ha senso quando non deriva dal ordinamento 
visualizzato?
Saluti,
Fritz 

 ha scritto nel messaggio 
news:4b7283b2$0$6557$9b4e...@newsspool4.arcor-online.net...



Dovresti fare una pre-elaborazione prima di visualizzare la grid
calcolando i progressivi
Altrimenti nell'evento OnGetData della TTable calcoli il progressivo
C. 

 secondo. E' ancora recno 1 o recno 2 ?
I tuoi dubbi nascono dal fatto che non stai legando al database la 
sequenza dei progressivi. Una cosa simile, un estratto conto scalare ad 
esempio, ha fondamento se ti riferisci ad un ordinamento ben conosciuto 
che proviene dalla base dati, vale a dire dal classico indice ordinato 
per data movimento, ad esempio, o per numero di registrazione 
contabile.
Se tu vuoi fare una cosa simile legandoti all'ordinamento "on the fly" 
determinato da una griglia, ï¿œ ovvio che non ti trovi piï¿œ perchï¿œ ogni 
volta che cambi ordinamento i campi calcolati ricalcolano seguendo 
l'ordine volatile che hai in griglia.
Decidi innazitutto su quale sequenza ha senso calcolare la somma 
incrementale, poi rendi possibile ordinare solo per quel tipo di 
ordinamento.
-- 
Morde


Per esperienza, che io sappia, il Recno si adegua all'ordinamento che 
imponi, come il .first., in quanto rappresenta
il record "a cui ti trovi". Pittosto che non caschino eventi di ricalcolo 
mentre sta riordinando, eventualmente nel gestore dell'evento
usa un flag di controllo.
Quindi se cambi criterio d'ordinamento il record effettivo relativo a 
Recno=0 cambia, naturalmente
assicurati che venga ricalcolato in campo.
Al contrario i Bookmark, quando non diventano inutilizzabili.
Ciao Giorgio 

 ha scritto nel messaggio 
news:4b73fc16$0$702$5fc...@news.tiscali.it...


 Altre idee ?
Ti ho giï¿œ detto nel mio post che potresti risolvere questa cosa coi 
campi calcolati, mi spieghi come mai non ti va bene come soluzione?
Ciao
-- 
Morde


Mi torna, non uso mai le ttable ma sempre le tquery con Order By per 
ordinare, Giorgio 

 ha scritto nel messaggio 
news:4b75...@news.x-privat.org...


 MyTablePROGRESSIVO.Value := ArrProgressivi[MyTable.Recno-1];
Hai completamente ragione.Ma non c'ï¿œ un modo per rinumerare al volo 
tutte le righe nel dataset?
Se provassi a caricarti tutti i dati in un tclientdataset, poi ogni 
qualvolta cambia l'ordinamento rilanci la tua procedura di ricalcolo su 
tutti i record. Considerando che viene fatto in memoria non avresti poi 
tanti problemi di performance..
-- 
Morde


Nel caso usassi un CDS dai un occhio alla property Aggregates, che 
"dovrebbe fare al caso tuo...(se non ricordo male .. ovvio)
^_Goblin_^
-- 
Ibis et redibis non morieris in bello
http://goblinland.myminicity.com/

 ha scritto nel messaggio 
news:4b79...@news.x-privat.org...
