Newsgroup: it.comp.appl.access
Titolo: funzione dsum

SALDO: Format(DSum("TOT";"MASTRINO SALDI PROGR";"num_mov<=" &
[num_mov]);"#.###")
con questa semplice istruzione che mi diede Roberto dal portatile riesco a
calcolare il saldo progressivo dei movimenti contabili. Ora ho l'esigenza di
metterli non più in ordine di numero progressivo bensì di data. Ho pertanto
riscritto la funzione
SALDO: Format(DSum("TOT";"MASTRINO SALDI PROGR";"data_mov<=" &
[data_mov]);"#.###")
ma non mi calcola il saldo.
Come mai?
Grazie


Primo problema; non
"data_mov<=" & [data_mov]
bensě
"data_mov<=#" & Format([data_mov] ; "mm/dd/yyyy") & "#"
Secondo problema; se hai, come penso, piů movimenti con la stesa data,
ordina per data_mov e per num_mov, a questo punto dovrebbe funzionare con:
SALDO: Format(DSum("TOT";"MASTRINO SALDI PROGR"; "data_mov<=#" &
Format([data_mov] ; "mm/dd/yyyy") & "# AND num_mov<=" & [num_mov]);"#.###")
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/
---------------------------------------------


credo ci sia un errore di sintassi nella tua stringa perché inserendola mi
viene corretta nella seguente:
SALDO: Format(DSum("TOT";"MASTRINO SALDI PROGR";"data_mov<=#" &
Format([data_mov];"mm/""dd""/""yyyy""") & "# AND num_mov<=" &
[num_mov]);"#.###")
probabilmente si tratta semplicemente di un apice, ma non so dove metterlo:
ho provato do & "#" ma pur non dandomi più l'errore mi calcola la somma di
tutti e non progressiva.
Attendo tue notizie
Ciao e grazie

 ha scritto nel messaggio
news:92g1ia$8be$1...@fe1.cs.interbusiness.it...

Hai ragione, non "mm/dd/yyyy" ma "mm/gg/aaaa".
Quindi, fermo restando  che la query si chiami MASTRINO SALDI PROG e che
l'ordinamento sia fatto prima per data e poi per numero movimento, dovrebbe
essere:
SALDO: Format(DSum("TOT";"MASTRINO SALDI PROGR";"data_mov<=#" &
Format([data_mov];"mm/gg/aa") & "# AND num_mov <= " & [num_mov]);"#.###")
Per scrupolo l'ho provata e funziona.


 ma non mi calcola il saldo.
Prova cosi':
SALDO: Format(DSum("TOT";"MASTRINO SALDI PROGR";"data_mov<= #" & [data_mov]
& "#");"#.###")
Sib
--
------------------------------------------------------
il sito comune di it.comp.database.access:
http://members.xoom.it/it_db_access
------------------------------------------------------
La mia home (ancora non completa)
http://digilander.iol.it/syb
------------------------------------------------------
4000 anni fa', il saggio egizio Ptahhotep scrisse:
"... perche' non esistono saggi per nascita."
------------------------------------------------------
Saturiamo ECHELON:
bomba saddam attentato medio oriente


in effetti ora funziona ma mi restituisce il valore del saldo sbagliato. Ho
fatto un pò di prove e forse ho capito il problema pur non riuscendo a
risolverlo. Capita che l'ordine dei movimenti possa essere il seguente:
01/01/00    200
01/01/00    201
02/01/00    202
01/01/00    350
03/01/00    203
mettendo nella query come ordinamento crescente data_mov e num_mov compaiono
nel seguente ordine
01/01/00    200
01/01/00    201
01/01/00    350
02/01/00    202
03/01/00    203
nella colonna del saldo però mi mette un risultato sbagliato come se fossero
ancora nell'ordine vecchio. Probabilmente perché il criterio
num_mov<=num_mov non viene rispettato in quanto 350 é maggiore di 202.
che casino...

 ha scritto nel messaggio
news:92hfgh$9eq$1...@fe1.cs.interbusiness.it...

E' come dici tu, ma come dice un vecchio adagio: "Chi la dura la vince".
Ipotizzando che num_mov non superi mai il valore 999999, prova così:
SALDO: Format(DSum("TOT";"MASTRINO SALDI
PROGR";"(Year([data_mov])*10000000000+Month([data_mov])*100000000+Day([data_
mov])*1000000+[num_mov])<=" &
(Year([data_mov])*10000000000+Month([data_mov])*100000000+Day([data_mov])*10
00000+[num_mov]));"#.###")
Facci sapere.



 perfetto! probabilmente stilisticamente c'é qulacosa di meglio [senza
offesa :-)))] però ottengo il risultato voluto, d'altra parte credo che 2777
movimenti al giorno non li facciano nemmeno alla Microsoft :-)
Cercando altre soluzioni ho visto nell'help che c'é la funzione
frm.CurrentRecord valida per le maschere. Immagino che farebbe al caso mio
perché sarebbe sufficiente mettere CurrentRecord (ipotesi numero 1) <
currentrecord +1. Sbaglio?? e come mai non esiste nelle query la possibilità
di restituire il numero di record?
Ciao e grazie ancora