Newsgroup: it.comp.appl.access
Titolo: origine dati nei campi calcolati

Ho due query che estrapolano dati da una tabella "spese".
La prima query (Query1) restituisce semplicemente l'elenco delle spese con
un dettaglio di tre campi: "descrizione", "importo" e "data".
Nella seconda query (Query2) le stesse informazioni vengono raggruppate per
"descrizione": resta, appunto, il campo "descrizione", il campo "importo"
diventa "SommaDiImporto", il campo "data" non mi serve più.
Ho costruito una maschera (in visualizzazione maschere continue) che ha come
origine dati "Query1". Tre caselle di testo (txt1, txt2 e txt3) che hanno
come origine, ovviamente, "descrizione", "importo", e "data". Nel "piè di
pagina maschera" ho un campo calcolato (totale) che ha come origine dati
"=Somma([importo])". Tutto questo per visualizzare il mio elenco di spese,
con il dettaglio relativo, e la somma complessiva.
Nel caso io voglia vedere le spese raggruppate sotto un'unica voce ho
pensato di fare così:
DESCRIZIONE    IMPORTO    DATA
Spesa xyz                120,00        10/01/04
Spesa abc                150,00        22/01/04
Spesa xyz                160,00        30/01/04
                            TOTALE    430,00
deve diventare così
DESCRIZIONE    IMPORTO
Spesa abc                150,00
Spesa xyz                 280,00
            TOTALE    430,00
aggiungo un pulsante "raggruppa" che, alla pressione, cambia l'origine dati
della maschera in "Query2", sistema l'origine anche dei campi e sono a
posto. Il problema è che il campo calcolato nel "piè di pagina" non si
aggiorna.
Questo è il codice del pulsante "cmdRaggr" che, all'apertura della maschera,
riporta l'etichetta "Raggruppa":
Private Sub cmdRaggr_Click()
    Select Case cmdRaggr.Caption
        Case Is = "Raggruppa"
            Me.RecordSource = "Query2"
            txt3.visible = False  (questo è il campo della "data", nel caso
di raggruppamento non mi serve)
            txt2.ControlSource = "SommaDiImporto"    (setto il campo
dell'importo con il relativo campo della Query2)
            cmdRaggr.Caption = "Dividi"
            Totale.ControlSource = "=Sum([SommaDiImporto])"
            Me.Requery
        Case Is = "Dividi"
            Me.RecordSource = "Query1"
            txt3.visible = True
            txt2.ControlSource = "Importo"
            cmdRaggr.Caption = "Raggruppa"
            Totale.ControlSource = "=Sum([Importo])"
            Me.Requery
    End Select
End Sub
Quando raggruppo funziona tutto tranne il totale a fondo pagina che mi dà
"#Errore". Se torno a dividere (a rivedere, cioè, tutte le spese
singolarmente) funziona anche il totale.
Come posso risolvere?
Ho anche provato a disegnare un secondo campo (totale2), nel piè di pagina,
mettendo subito, come origine dati, "=Somma([Imorto])" nel primo e
"=Somma([SommaDiImporto])" nel secondo. Ho pensato: "all'apertura della
maschera, il primo campo visualizzerà l'importo mentre il secondo, che cerca
di sommare dati non ancora esistenti, darà errore. Alla pressione di
'Raggruppa', quando l'origine dati diventerà 'Query2', il secondo campo darà
finalmente un risultato mentre il primo, ora, darà errore". Invece dà errore
su tutti e due!
Cercando di sommare dati non ancora esistenti provoca errore anche dove
questi ci sono. Se cancello dalla maschera il secondo campo, il primo torna
a funzionare.
Grazie per l'aiuto.
Frigster.

 ha scritto nel messaggio
news:XzAPc.27609$OH4.7...@twister1.libero.it...

Invece di utilizzare la funzione Sum (Somma) utilizza la DSum (vedi help)..
Ciao.
-- 
Sergio MAZZA