Newsgroup: it.comp.appl.access
Titolo: Totale progressivo su campo calcolato

Sul sito comune ho trovato i due esempi relativi al totale progressivo in
una query e/o maschera, pero' non riesco a modificarli per il mio uso,
perche', facilmente, sono un po' duro di comprendonio....
Cerco di spiegrami meglio.
Ho la tabella "Operazioni" con i segg. campi:
IdOperazione, DataOperazione, Ch_Tipo, Ch_Modo, Descrizione, Importo
In una query calcolo:
EntrateBanca: IIf([Ch_Tipo]="I" And [Ch_Modo]="B";([Importo]))
UsciteBanca: IIf([Ch_Tipo]="P" And [Ch_Modo]="B";([Importo])*(-1))
EntrateCassa: IIf([Ch_Tipo]="I" And [Ch_Modo]="C";([Importo]))
UsciteCassa: IIf([Ch_Tipo]="P" And [Ch_Modo]="C";([Importo])*(-1))
Vorrei calcolare altri due campi che siano:
ScalareBanca=progressivo di ScalareBanca+EntrateBanca+UsciteBanca
(chiaramente uno di questi due ultimi valori e' nullo)
ScalareCassa=progressivo di ScalareCassa+EntrateCassa+UsciteCassa
Come si fa?
-- 
                     -o-o-o-o-
                 Ciao da Herry
      he...@IOSONOprofoco.com
   (per le risposte togliere IOSONO)

"Herry (con 2 r)" <he...@IOSONOprofoco.com> ha scritto nel messaggio
news:bvbgdc$oqs$1...@fata.cs.interbusiness.it...

Non puoi effettuare la somma di campi Null.
Prova a modificare i campi calcolati nel modo seguente:
EntrateBanca: Nz(IIf([Ch_Tipo]="I" And [Ch_Modo]="B";([Importo]);0);0)
UsciteBanca: Nz(IIf([Ch_Tipo]="P" And [Ch_Modo]="B";([Importo])*(-1);0);0)
EntrateCassa: Nz(IIf([Ch_Tipo]="I" And [Ch_Modo]="C";([Importo]);0);0)
UsciteCassa: Nz(IIf([Ch_Tipo]="P" And [Ch_Modo]="C";([Importo])*(-1);0);0)
Quindi lo ScalareBanca sarà uguale al totale progressivo di (EntrateBanca -
UsciteBanca) e lo ScalareCassa sarà uguale al totale progressivo di
(EntrateCassa - UsciteCassa).
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 (EntrateCassa - UsciteCassa).
Qua non ci sono gia' piu', ahime' ! In effetti sarebbe (Entrate.. +
Uscite..) dato che il segno e' gia' cambiato, ma a parte cio', riesco a fare
solo la somma per ogni singolo record non sapendo gestire il progressivo
come indicato negli esempi del sito comune (es:
ProgressivoAlRecord2=ProgressivoAlRecord1+SommaRecord2,
ProgressivoAlRecord3=ProgressivoAlRecord2+SommaRecord3, ... ) in cui si fa
riferimento diretto a campi di tabella e non a campi calcolati di query.

 riferimento diretto a campi di tabella e non a campi calcolati di query.
Sicuramente ti è sfuggito che il saldo progressivo nella funzione del Sito
Comune non viene calcolato sommando i dati del record in corso al saldo del
record precedente, ma viene calcolato facendo la somma tra i dati del record
in corso ed i dati di TUTTI i record che lo precedono; insomma con la
funzione pubblicata nel Sito Comune devi fare il totale progressivo del
campo calcolato EntrateBanca e sommargli algebricamente il totale
progressivo del campo calcolato UsciteBanca; idem per la cassa.


 progressivo del campo calcolato UsciteBanca; idem per la cassa.
Comincio a capire il funzionamento... (spero)
ma ancora non mi funge :-(
Riporto le prime righe del modulo per praticita':
Function TotProgrQry(KeyName As String, KeyValue, FieldNameToGet As String,
NomeTabella As String)
Dim RS As DAO.Recordset
Nel modulo, salta alla routine errore alla riga:
Set RS = CurrentDb().OpenRecordset(NomeTabella, dbOpenDynaset)
ed alla riga:
Select Case RS.Fields(KeyName).Type
il suggerimento che appare e'
<Variabile oggetto o variabile del blocco With non i...
immagino perche' non viene impostato RS
Io ho inserito questo campo nella query:
ScalareBanca:
CDbl(TotProgrQry("ID_Opera";[ID_Opera];"SommaBanca";"q01_SpecOperazione"))
dove:
"ID_Opera" e' la chiave (contatore) della tabella "t01_Operazioni" (fa
differenza se questa e' collegata o meno?)
"SommaBanca" e' un campo calcolato nella query (EntrateBanca+UsciteBanca)
"q01_SpecOperazione" e' il nome della query basata sulla tabella
"t01_Operazioni"
e non capisco proprio cosa possa dare l'errore.
Ho ricontrollato con l'esempio sul sito comune facendo dei confronti e
debug, ma chiaramente ho... controllato male :-(


    (per le risposte togliere IOSONO)
-- 


 Vedi se cosě gli errori spariscono.
Ho Access 97 ed ho controllato i riferimenti: ho spuntato il DAO 3.5
Ho provato a riferirmi al DAO 3.6 (presente anche la .dll nella cartella
DAO), ma segnala "Nome gia' utilizzato per modulo, progetto o libreria degli
oggetti esistente".
Boh!
Grazie mille.... e a presto (tanto avro' sicuramente ancora bisogno di aiuto
:-)) )
-- 
                     -o-o-o-o-
                 Ciao da Herry
       herry(2r)@
despammed.com