In dettaglio: Sottomaschera1 contiene un campo data che filtra/sincronizza
Sottomaschera2 che pure contiene un campo data che a sua volta e' collegata
a Sottomaschera3 dove inserisco le "ore" di pertinenza. (A una data di
Sottomaschera1 corrispondono più date di Sottomaschera2).
Vorrei ottenere, per la data di Sottomaschera1, il totale complessivo delle
ore inserite in Sottomaschera3, ed eventualmente anche il gran totale delle
ore (sempre di Sottomaschera3).
Per ora riesco solo a fare il totale in Sottomaschera3 relativo alla data di
Sottomaschera2 con il comando Sum, ho provato con il comando DSum, ma non so
se e' la strada giusta...
Ciao
Beppe
Usa la funzione DSum (vedi help); impostando adeguatamente i criteri della
DSum piloterai i totali a tuo piacimento.
>
> Ciao
> Beppe
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------
L'help di access e' davvero poco incoraggiante, sembra fatto per chi non ne
ha bisogno...
Comunque sto provando con DSum, tralasciando per il momento i "criteri", ma
non faccio altro che ottenere errori.
Da quello che ho capito, se sono in Sottomaschera1 dove voglio visualizzare
i totali, posso iniziare a impostare DSum cosi':
"=DSum(Forms!MacheraMaster!Sottomaschera2!Form!Mio_Campo_Ore ;
Forms!MacheraMaster!Sottomaschera2)"
dove "Mio_Campo_Ore" e' un campo contenuto in "Sottomaschera2"
Rispetto il tuo punto di vista ma non lo condivido: io faccio ricorso con
soddisfazione all'help solamente per le cose di Access che non conosco.
Certo è che per leggere e usare l'help occorre che si siano studiati almeno
i fondamentali di Access.
> Comunque sto provando con DSum, tralasciando per il momento i "criteri",
Naturalmente poi, per risolvere il tuo problema, dovrai invece usare i
criteri, altrimenti non avrai il risultato desiderato.
> ma
> non faccio altro che ottenere errori.
>
> Da quello che ho capito, se sono in Sottomaschera1 dove voglio
visualizzare
> i totali, posso iniziare a impostare DSum cosi':
>
> "=DSum(Forms!MacheraMaster!Sottomaschera2!Form!Mio_Campo_Ore ;
> Forms!MacheraMaster!Sottomaschera2)"
>
> dove "Mio_Campo_Ore" e' un campo contenuto in "Sottomaschera2"
Per prima cosa nelle maschere (quindi nelle sottomaschere) non ci sono i
campi ma i controlli: i campi sono invece contenuti nelle tabelle e nelle
queries.
La funzione DSum, come tutte le funzioni di aggregazione (se non ho capito
male tu hai già usato Sum), somma i valori dei campi e non i valori dei
controlli di una maschera (sottomaschera nel caso tuo).
Nella sintassi della DSum va indicato pertanto il nome del campo da sommare
ed il nome della tabella o della query che sono origine record della tua
sottomaschera, quindi indicherai le eventuali condizioni per le quali Access
deve effettuare la somma ; insomma, per una DSum senza criteri scriverai una
cosa del genere:
= DSum("Mio_Campo_Ore"; "[NomeTabellaQuery]")
Hai ragione tu, io riesco a districarmi nell'help di excel, pero' e' anche
vero che a volte l'help si dilunga a spiegare cose facili con termini
difficili (le paroline scritte e sottolineate in blu che se cliccate
mostrano la spiegazione scritta in verde) e per certe fuznioni usa esempi
che presuppongono la conoscenza del linguaggio di programmazione, (vedi
l'esempio per DSum). Io che ci arrivo dall'expression builder non so che
pesci pigliare con l'esempio che mi viene fatto.
> La funzione DSum, come tutte le funzioni di aggregazione (se non ho capito
> male tu hai già usato Sum), somma i valori dei campi e non i valori dei
> controlli di una maschera (sottomaschera nel caso tuo).
Io ho usato Sum nelle maschere sommando, o meglio credendo di sommare, i
valori delle maschere, ovvero con la sintassi del mettere Sum ([Forms!][nome
del controllo]), ci arrivavo usando l'expression builder e selezionando
quelli che credevo campi (ma sono controlli) di cui volevo la somma. Questo
non funziona con Dsum.
Grazie della spiegazione, e' stata piu' chiara dell'help di access.
Ciao
Beppe
A mio parere è difficile programmare Access (anzi dirrei impossibile) senza
conoscere almeno i rudimenti dei linquaggi VBA e SQL.
Se pensi di continuare a programmare in Access mi permetto di consigliarti
di studiare almeno i suoi fondamentali ed i rudimenti dei suoi due linguaggi
di programmazione, in caso contrario penso dovrai accontentarti di usare
l'applicativo in maniera interattiva, limitandoti, al limite, ad usare le
macro che però ti permettano solo di automatizzare quello che puoi fare con
la barra dei comandi e con la barra dei menu, ovvero usando solo una piccola
parte delle potenzialità di Access.
> Io che ci arrivo dall'expression builder non so che
> pesci pigliare con l'esempio che mi viene fatto.
Me lo immagino, ma la programmazione è un piatto che bisogna mangiare con
calma e non è un panino da azzannare di corsa al fastfood.
>
> > La funzione DSum, come tutte le funzioni di aggregazione (se non ho
capito
> > male tu hai già usato Sum), somma i valori dei campi e non i valori dei
> > controlli di una maschera (sottomaschera nel caso tuo).
>
> Io ho usato Sum nelle maschere sommando, o meglio credendo di sommare, i
> valori delle maschere, ovvero con la sintassi del mettere Sum
([Forms!][nome
> del controllo]), ci arrivavo usando l'expression builder e selezionando
> quelli che credevo campi (ma sono controlli) di cui volevo la somma.
Come hai giustamento precisato, tu con la funzione Sum credivi di aver
sommato i valori contenuti in una casella di testo, invece Access ha sommato
i valori del campo associato a quella casella di testo.
> Questo
> non funziona con Dsum.
Un conto è VBA (di cui fa parte la funzione DSum) generato a fronte di un
evento ed un altro conto è il codice ottenuto dal generatore di espressioni
che viene scritto nell'origine controllo di una casella di testo o in un
campo calcolato di una query: insooma, come si dice dalle mie parti, attento
a non confondere il cioccolato con la m...a. ;-)
>
> Grazie della spiegazione, e' stata piu' chiara dell'help di access.
>
> Ciao
> Beppe
--
Slow food... si digerisce meglio
Esatto!!