Newsgroup: it.comp.appl.access
Titolo: Calcolo del totale: non viene memorizzato!

Ciao a tutti.
Scusate ma non non sono riuscito a venire a capo di una questione:
io ho una form CALCOLI la cui origine dei dati è una tabella che si
chiama DATA.
In questa tabella, e dualmente anche nella form, ci sono tre campi
numerici: uno di essi si chiama SPESE_A un altro si chiama SPESE_B e
infine l'ultimo SPESE_TOT.
Nell'origine controllo delle SPESE_TOT ho scritto "= [SPESE_A] +
[SPESE_B]" (ovviamente senza virgolette).
Sono davanti alla form, inserisco per esempio 500 nel campo delle
SPESE_A e 300 nel campo delle SPESE_B. Se clicco su campo delle
SPESE_TOT riesco effettivamente a visualizzare il numero 800.
Se passo al record successivo vengono memorizzati solo i due valori 300
e 500 ma non 800!!!!!!!!
Se torno indietro mi ritrovo ancora 300 e 500 ma sul totale non compare
800. Perché?
Io ho bisogno che venga memorizzato il valore 800 perché poi quella
tabella deve essere esportata in un altro formato.
Qualcuno di voi ha qualche idea???????
Grazie mille per l'aiuto.
Saluti.
Alessandro

 ha scritto nel messaggio
news:nJQHe.28150$2U1.1...@news3.tin.it...

Ciao Alessandro,
secondo me, se hai inserito correttamente l'origine di controllo, e da
quanto dici lo hai fatto ( correttamente) la somma la deve calcolare su
tutti i record.
Ciò che non devi fare è memorizzare un campo calcolato nella tabella : ti
consiglio ti utilizzare una query con un campo calcolato che faccia quella
semplice somma ! ( la tecnica che vorresti utilizzare genera ridondanza di
dati e alla lunga appesantisce il db e va contro i principi della
normalizzazione del database: questo te lo dico per indicarti alcuni dei
problemi ai quali puoi andare incontro)
L'sql della query puo essere simile a questo :
SELECT speseA, speseB, [speseA]+[speseb] AS spese_tot FROM data
che imposterai come recordSource della tua Form. Ovviamente la query la puoi
esportare in uno dei formati previsti da Access. Altro consiglio che mi
sento di darti è di fare attenzione ai nomi che dai ai controlli : data non
dovrebbe dare problemi come nome di tabella, ma ti consiglio un T_data a
scanso di equivoci.
Ciao, buon lavoro e buona notte !
Sandro

 esportare in uno dei formati previsti da Access.
E qui viene il problema!
Quando io esporto il database in formato dBase, esso deve contenere 
esattamente SOLO i campi che c'erano nella tabella DATA e soprattutto la 
somma deve essere riportata correttamente nel campo "SPESE_TOT". In 
questo momento il campo SPESE_TOT è vuoto.
A questo punto ci vorrebbe qualcosa (query, macro, VBA) che mi copiasse 
tutto quello che contiene il campo "Espr1" nel campo "SPESE_TOT". Poi, 
prima dell'esportazione, devo eliminare in qualche modo la colonna 
"Espr1", così da poter esportare una tabella o una query per intero, ma 
questo non è un grosso problema, casomai poi basta fare una query di 
creazione tabella ed è tutto finito.
Grazie per la pazienza e per la veloce risposta.
Saluti. Alessandro. 

 ha scritto nel messaggio
news:2bSHe.40200$fm.26...@news4.tin.it...

Secondo me potresti anche imporre un valore al controllo Spese_tot della
maschera basata sulla tabella Data (ma perché non cambi il nome in T_data o
tblData come ti è già stato suggerito?).
A fronte dell'evento dopo aggiornamento del controllo Spese_B potresti
lanciare una routine del tipo:
Private Sub Spese_B_AfterUpdate()
Dim Spese as Double
Spese=Me!Spese_A + Me!Spese_B
Me!Spese_tot=Spese
End Sub
Ovviamente il controllo Spese_tot è associato al corrispondente campo della
tabella Data.
Potrebbe andare?
Ciao
--
Kaloma

 ha scritto nel messaggio news:nJQHe.28150$2U1.1...@news3.tin.it...

Il controllo calcolato devi posizionarlo nel corpo della form; ma comunque i dati di un controllo calcolato non vengono salvati in 
tabella. Se devi esportare i dati con il totale, creati una query (o lo fai via codive VBA) ed eseguendo li la somma...
Ciao.
-- 
Sergio MAZZA 

 End Sub
Perfetto! Funzia tutto come volevo! Ora il valore SPESE_TOT viene 
correttamente
In realtà la routine l'ho associata anche all'evento Enter() e poi 
queste due routine sono state associate anche al campo SPESE_A (io non 
so se il cliente inserisce prima le SPESE_A oppure le SPESE_B)
Ultimissima cosa: qual è l'istruzione che dovrei scrivere nella routine 
associata all'evento Enter() per aggiornare direttamente il record ogni 
volta che viene fatta una modifica?
Grazie mille a te a Sandro e a Sergio per le risposte. 

 ha scritto nel messaggio
news:XD1Ie.41530$fm.27...@news4.tin.it...

Intendi a fronte dell'evento su Invio?
La routine è la stessa: ricopiala.
Modifica però la riga
Spese=Nz(Me!Spese_A,0) + Nz(Me!Spese_B,0) per evitare la comparsa
dell'errore dovuto a valore nullo.
Ciao
--
Kaloma