Newsgroup: it.comp.appl.access
Titolo: Query.... problema

Salve a tutti,(come già postai precedentemente.....)
sto' costruendo un db in A2000 per gestire gli investimenti aziendali.
Ora mi si presenta questo problema che non so risolvere:
Un investimento puo' durare diversi anni con diversi acquisti mensili (poi
raggruppati in trimestri) che
riguardano lo stesso.
Ho la necessità di creare una maschera, ove alla selezione di un anno
specifico,  per esempio 2001, mi faccia vedere tutti gli
acquisti per totale dei vari mesi, e sommi invece in un'unica campo gli
acquisti
degli anni precedenti, ed oltretutto invece trascuri gli acquisti successivi
al 2001.
Non riesco a creare questa query (?), qualcuno mi puo' aiutare ?
Questo e'il codice della query che ho costruito finora, e per adesso tutto
bene, ma
non riesco ad inserire il campo del riepilogo acquisti anni precedenti anni
precedenti (dove CAR e' l'investimento):
SELECT [Q-NUOVA CAR].[Codice CAR], [Q-NUOVA CAR].[Descrizione CAR],[Q-13
Quarter 1].[Q-01Gen].[SommaDiImporto FATTURA], [Q-13 Quarter
1].[Q-02Feb].[SommaDiImporto FATTURA], [Q-13 Quarter
1].[Q-03Mar].[SommaDiImporto FATTURA], [Q-13 Quarter 1].[1 Quarter], [Q-14
Quarter 2].[Q-04Apr].[SommaDiImporto FATTURA], [Q-14 Quarter
2].[Q-05Mag].[SommaDiImporto FATTURA], [Q-14 Quarter
2].[Q-06Giu].[SommaDiImporto FATTURA], [Q-14 Quarter 2].[2 Quarter], [Q-15
Quarter 3].[Q-07Lug].[SommaDiImporto FATTURA], [Q-15 Quarter
3].[Q-08Ago].[SommaDiImporto FATTURA], [Q-15 Quarter
3].[Q-09Set].[SommaDiImporto FATTURA], [Q-15 Quarter 3].[3 Quarter], [Q-16
Quarter 4].[Q-10Ott].[SommaDiImporto FATTURA], [Q-16 Quarter
4].[Q-11Nov].[SommaDiImporto FATTURA], [Q-16 Quarter
4].[Q-12Dic].[SommaDiImporto FATTURA], [Q-16 Quarter 4].[4 Quarter], +[1
Quarter]+[2 Quarter]+[3 Quarter]+[4 Quarter] AS [Totale Anno], [Q-anno].Anno
FROM ((((([Q-NUOVA CAR] LEFT JOIN [Q-13 Quarter 1] ON [Q-NUOVA CAR].[Codice
CAR] = [Q-13 Quarter 1].[Codice CAR]) LEFT JOIN [Q-14 Quarter 2] ON [Q-NUOVA
CAR].[Codice CAR] = [Q-14 Quarter 2].[Codice CAR]) LEFT JOIN [Q-15 Quarter
3] ON [Q-NUOVA CAR].[Codice CAR] = [Q-15 Quarter 3].[Codice CAR]) LEFT JOIN
[Q-16 Quarter 4] ON [Q-NUOVA CAR].[Codice CAR] = [Q-16 Quarter 4].[Codice
CAR]) LEFT JOIN [Q-anno] ON [Q-NUOVA CAR].[Codice CAR] = [Q-anno].[Codice
CAR]) LEFT JOIN [q-fattura x car] ON [Q-NUOVA CAR].[Codice CAR] = [q-fattura
x car].[Codice CAR]
GROUP BY [Q-NUOVA CAR].[Codice CAR], [Q-NUOVA CAR].[Descrizione CAR],[Q-13
Quarter 1].[Q-01Gen].[SommaDiImporto FATTURA], [Q-13 Quarter
1].[Q-02Feb].[SommaDiImporto FATTURA], [Q-13 Quarter
1].[Q-03Mar].[SommaDiImporto FATTURA], [Q-13 Quarter 1].[1 Quarter], [Q-14
Quarter 2].[Q-04Apr].[SommaDiImporto FATTURA], [Q-14 Quarter
2].[Q-05Mag].[SommaDiImporto FATTURA], [Q-14 Quarter
2].[Q-06Giu].[SommaDiImporto FATTURA], [Q-14 Quarter 2].[2 Quarter], [Q-15
Quarter 3].[Q-07Lug].[SommaDiImporto FATTURA], [Q-15 Quarter
3].[Q-08Ago].[SommaDiImporto FATTURA], [Q-15 Quarter
3].[Q-09Set].[SommaDiImporto FATTURA], [Q-15 Quarter 3].[3 Quarter], [Q-16
Quarter 4].[Q-10Ott].[SommaDiImporto FATTURA], [Q-16 Quarter
4].[Q-11Nov].[SommaDiImporto FATTURA], [Q-16 Quarter
4].[Q-12Dic].[SommaDiImporto FATTURA], [Q-16 Quarter 4].[4 Quarter], +[1
Quarter]+[2 Quarter]+[3 Quarter]+[4 Quarter], [Q-anno].Anno
HAVING ((([Q-anno].Anno) Between [Anno Iniziale] And [Anno Finale]))
ORDER BY [Q-anno].Anno;
Saluti e grazie a tutti per i consigli.
Marco

 Marco
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:kZ7Y9.40512$ZE.11...@twister2.libero.it...


 ha scritto nel messaggio
news:FcdY9.104179$AA2.4...@news2.tin.it...

[CUT]
Per prima cosa quando rispondi scrivi DOPO e non prima del testo dei
messaggi precedenti.
Ci sono molte cose che non mi sono ancora chiare come ad esempio dal codice
SQL della tua query si capisce che hai creato un sacco di queries che poi
metti in join: ma a cosa servono queste queries?
Dal codice SQL che hai postato sembrerebbe che vuoi selezionare i dati per
piů anni contemporaneamente ([Anno Iniziale] e [Anno Finale]); ma quando vai
a creare i totali per mese dell'anno in corso cosa fai, sommi insieme gli
importi di tutti i mesi di gennaio degli anni selezionati e cosě pure per
gli altri mesi? Mi sembra un modo quanto mai strano di analizzare i dati!!
Io ho capito che serve operare solamente con la tabella NUOVA CAR.
Se vuoi raggruppare i dati per Codice Car.
Se vuoi sommare il campo Importo suddividendolo per SpesoAnniPrecedenti,
totale speso per mese dell'anno in corso, TotaleAnnoInCorso e Rimanenza.
Se la tabella NUOVA CAR ha una struttura simile a questa:
ID                  Contatore e chiave primaria
Codice Car    Tetso o Numerico
Data               Data/ora
Importo          Valuta
ecc. ecc.
Creati una query di raggruppamento chiamata Query1 che abbia il seguente
codice SQL:
SELECT [NUOVA CAR].[Codice Car], [NUOVA CAR].Descrizione,
Sum(IIf(Year([Data]) < [Forms]![MAschera1]![CercaAnno], [Importo], 0)) AS
SpesoAnniPrecedenti, Sum(IIf((Year([Data]) =
[Forms]![Maschera1]![CercaAnno]) And Month([Data]) = 1, [Importo], 0)) AS
Gennaio, Sum(IIf((Year([Data]) = [Forms]![Maschera1]![CercaAnno]) And
Month([Data]) = 2, [Importo], 0)) AS Febbraio, Sum(IIf((Year([Data]) =
[Forms]![Maschera1]![CercaAnno]) And Month([Data]) = 3, [Importo], 0)) AS
Marzo, Sum(IIf((Year([Data]) = [Forms]![Maschera1]![CercaAnno]) And
Month([Data]) = 4, [Importo], 0)) AS Aprile, Sum(IIf((Year([Data]) =
[Forms]![Maschera1]![CercaAnno]) And Month([Data]) = 5, [Importo], 0)) AS
Maggio, Sum(IIf((Year([Data]) = [Forms]![Maschera1]![CercaAnno]) And
Month([Data]) = 6, [Importo], 0)) AS Giugno, Sum(IIf((Year([Data]) =
[Forms]![Maschera1]![CercaAnno]) And Month([Data]) = 7, [Importo], 0)) AS
Luglio, Sum(IIf((Year([Data]) = [Forms]![Maschera1]![CercaAnno]) And
Month([Data]) = 8, [Importo], 0)) AS Agosto, Sum(IIf((Year([Data]) =
[Forms]![Maschera1]![CercaAnno]) And Month([Data]) = 9, [Importo], 0)) AS
Settembre, Sum(IIf((Year([Data]) = [Forms]![Maschera1]![CercaAnno]) And
Month([Data]) = 10, [Importo], 0)) AS Ottobre, Sum(IIf((Year([Data]) =
[Forms]![Maschera1]![CercaAnno]) And Month([Data]) = 11, [Importo], 0)) AS
Novembre, Sum(IIf((Year([Data]) = [Forms]![Maschera1]![CercaAnno]) And
Month([Data]) = 12, [Importo], 0)) AS Dicembre, Sum(IIf(Year([Data]) =
[Forms]![MAschera1]![CercaAnno], [Importo], 0)) AS TotaleAnnoInCorso,
Sum(IIf(Year([Data]) > [Forms]![MAschera1]![CercaAnno], [Importo], 0)) AS
Rimanenza
FROM [NUOVA CAR]
GROUP BY [NUOVA CAR].[Codice Car], [NUOVA CAR].Descrizione;
Creati una maschera con visualizzazione a Maschere continue chiamata
Maschera1 e che abbia come origine record Query1.
Inserisci nell'Intestazione di Maschera1 (ho scritto Intestazione e non
Corpo) una casella combinata non associata che si chiami CercaAnno. Tale
casella combinata deve avere una sola colonna e deve avere come origine riga
il seguente codice SQL:
SELECT DISTINCT Year([NUOVA CAR].[Data]) AS Espr1
FROM [NUOVA CAR]
ORDER BY Year([NUOVA CAR].[Data]);
A fronte dell'evento "Dopo aggiornamento" della casella combinata CercaAnno
genera la seguente riga di codice VBA:
Private Sub CercaAnno_AfterUpdate()
Me.Requery
End Sub
Affinché il tutto ti funzioni č necessario che la maschera si chiami
effettivamente Maschera1 e la casella combinata si chiami CercaAnno; in caso
contrario adegua di conseguenza il codice SQL di Query1.
A questo punto apri Maschera1, seleziona un anno dalla casella combinata
CercaAnno: nel corpo della maschera dovresti vedere ciň che tu volevi
(almeno spero: dopo tutta sta faticata).
Comunque, se in futuro avrai ancora bisogno di una mano, cerca di essere piů
chiaro su cosa ti serve e su quale sia la struttura delle tabella da usare
(solo quelle!!); la fatica piů grossa per me č stato ipotizzare queste due
cose: speriamo che mi abbia funzionato bene la sfera di cristallo.
