Newsgroup: it.comp.appl.access
Titolo: Query e totali

Ciao a tutti,
Vorrei sottoporvi il mio problema:
Sto creando un'applicazione che confronta quanti soldi mi deve un cliente e quanto ho già speso in
avvocati perchè non mi ha ancora pagato. Ho creato tre tabelle che contengono:
- estremi fatture (tbl fatture)
- nomi dei clienti (btl anagraficacliente)
- spese legali (tbl speselegali)
Le tre tabelle sono collegate attraverso il codice cliente e ho fatto un report per visualizzare e
fare i confronti che ho detto sopra. Ho creato un report con questa query:
SELECT SpeseLegali.CodiceLegale, SpeseLegali.CodiceCliente, SpeseLegali.NumeroParcella,
SpeseLegali.DataParcella, SpeseLegali.Codice, SpeseLegali.Costo, AnagraficaCliente.Denominazione,
Sum(Fatture.Importo) AS SommaDiImporto, AnagraficaCliente.Agenzia, AnagraficaCliente.Città,
AnagraficaCliente.DataAffidamentoEsterno, CodiciGestoriEsterni.Descrizione
FROM ((AnagraficaCliente INNER JOIN SpeseLegali ON AnagraficaCliente.Codice =
SpeseLegali.CodiceCliente) INNER JOIN CodiciGestoriEsterni ON SpeseLegali.CodiceLegale =
CodiciGestoriEsterni.Codice) INNER JOIN Fatture ON SpeseLegali.CodiceCliente = Fatture.CodiceCliente
GROUP BY SpeseLegali.CodiceLegale, SpeseLegali.CodiceCliente, SpeseLegali.NumeroParcella,
SpeseLegali.DataParcella, SpeseLegali.Codice, SpeseLegali.Costo, AnagraficaCliente.Denominazione,
AnagraficaCliente.Agenzia, AnagraficaCliente.Città, AnagraficaCliente.DataAffidamentoEsterno,
CodiciGestoriEsterni.Descrizione;
e fino a qui tutto bene. Il problema si manifesta quando voglio creare un campo che contenga quanto
ho speso finora per gli avvocati vicino alla cifra che il cliente mi deve dare. In pratica bisogna
calcolare il totale del campo 'speselegali.costo' per tutti i record per ogni cliente. Ho provato a
inserire 'Sum(speselegali.costo) AS speselegalipercliente' nella select come ho fatto con
sum(fatture.importo), ma non ottengo i risultati sperati.
Dove sto sbagliando ?
Grazie per la collaborazione.
Stay alive !
Pio Pio (utente newbe)
Win XP & Office 2000
www.ticom.it/tennisbuscate

 ha scritto nel messaggio
news:gtpbqusov324hdfk5...@4ax.com...

Il problema sta nella Proposizione GROUP BY; tu raggruppi praticamente per
tutti i campi della tabella Spese legali, addirittura per SpeseLegali.Costo,
di fatto esegui una lista di tutti i record di SpeseLegali: astanti così le
cose, che significato ha chiedere il totale di SpeseLegali,Costo se su
questo campo fai il raggruppamento?
Entro certi limiti, il totale delle fatture te lo dà in quanto non raggruppi
su tale campo.
Se devi fare una valutazione del cliente non dovresti raggruppare solo per
cliente o giù di lì?
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

tutti i campi [cut]
Hai ragione Roberto. Avevo già provato a togliere alcuni campi nella parte dei raggruppamenti, (sia
dalla composizione automatica di query che togliendolo a mano) però ottengo l'errore "impossibile
eseguire una query che non include l'espressione [nome del campo non raggruppato] specificata come
parte di una funzione di aggregazione". 
Quello che vorrei realizzare è un report che mi faccia vedere il contenuto di una determinata
fattura di un certo avvocato (oppure tutte le fatture di tutti gli avvocati) che scelgo io. 
In questo report vorrei apparisse, subito dopo il nome dell'avvocato e il numero della fattura posti
nell'intestazione del primo raggruppamento, l'elenco di tutti i nomi dei clienti per i quali
l'avvocato mi fa pagare quello che ha fatto.
A fianco del nome dei clienti vorrei apparisse il costo addebitato in fattura dall'avvocato e il
totale delle fatture che il cliente mi deve. In pratica:
------------------------------------------------------------------------------------------------------------------------------------------------------
Avv.to XXXX Fattura YYYY
cliente: AAAAA  costo della fattura avvocato: BBBB fatture cliente aperte CCCC costi sostenuti
finora per l'avvocato DDDDD (somma di tutti record della tabella delle spese legali che contengono
il codice cliente corrente). 
ecc. per tutti i clienti contenuti nella fattura YYYY
tot fattura ZZZZ
------------------------------------------------------------------------------------------------------------------------------------------------------
In pratica lo scopo di questo report è quello di capire se quello che abbiamo speso finora per
l'avvocato è maggiore o minore di quanto il cliente ci deve pagare.
Grazie ancora.
Stay alive !
Pio Pio (utente newbe)
Win XP & Office 2000
www.ticom.it/tennisbuscate

 Win XP & Office 2000
--




L'ipotesi sulla struttura degli archivi di Roberto è corretta.
Dopo il suo suggerimento sono riuscito a risolvere il problema aggiungendo questo campo alla
selezione della query:
Format(DSum("[costo]","speselegali","[CodiceCliente] = '" & [anagraficacliente].[codice] & "'"),"€
#,###.00") AS TotCostiSostenuti
Anche questo campo è stato raggruppato e ho ottenuto quello che cercavo.
Grazie Roberto.
Stay alive !
Pio Pio (utente newbe)
Win XP & Office 2000
www.ticom.it/tennisbuscate