Newsgroup: it.comp.appl.access
Titolo: [? suggerimento cercasi] Raggruppamento si, ma che raggruppi alla prima varianza,

Ho un caso simile a questo (per semplificare):
DATA		DESC	VALORE
01-01-2000	AAA	1
02-01-2000	AAA	2
05-01-2000	AAA	4
07-01-2000	BBB	1
15-01-2000	BBB	5
18-01-2000	CCC	5
10-02-2000	AAA	3
15-02-2000	AAA	2
17-02-2000	BBB	1
vorrei raggruppare i dati in modo da ottenere questo
01-01-2000	AAA	7
07-01-2000	BBB	6
18-01-2000	CCC	5
10-02-2000	AAA	5
17-02-2000	BBB 	1
ovvero raggruppare per DESC, ma fermando il raggruppamento alla prima
variazione, e non accorpando tutti i DESC assieme.
La somma e la data (prendere la prima) non e' un problema, il mio problema e'
raggruppare x DESC ma secondo la modalita' esposta, utilizzando solo query
access, senza scrivere codice VB o VBA.
Qualcuno mi puo' aiutare ?
Grazie !
Luis

access, senza scrivere codice VB o VBA.
Il problema sembra interessante. Cosi' su due piedi direi che non e'
risolvibile senza un minimo di codice. Secondo me hai bisogno di un
campo supplementare su cui poi fare il raggruppamento. Questo campo
supplementare, in pratica un contatore che cambia di valore ogni volta
che incontri un record con una descrizione diversa (dopo aver ordinato
per data, ovviamente), lo potresti creare leggendo riga per riga un
recordset puntato sulla tua tabella.
-- 
Ciao,
Giovanni

recordset puntato sulla tua tabella.
ti ringrazio della risposta
comunque, introducendo un altro campo sul quale fare il raggruppamento, e che
posso tranquillamente creare io da codice esaminando riga per riga il recordset,
e' una soluzione alla quale ho certamente pensato.
per quello ho specificato il "senza codice"
la query deve essere richiamabile sia da un programma VB (e quindi potrei usare
del codice), sia da access e basta (e quindi senza codice di supporto, dato che
se scrivo codice in un modulo vba access, poi questo non e' accessibile quando
il programma e' in esecuzione... ecc. ecc.)
A parte tutto, mi sembra strano che con SQL e basta il problema non si riesca a
risolvere....
Ciao !
Luis

access, senza scrivere codice VB o VBA.
Non si puo'! Devi per forza scrivere dure righe di codice, ma e' piuttosto
semplice direi. Devi scorrerti il recordset con due variabili. La seconda la
confronti con la prima per verificare il cambiamento, poi prima del loop
passi alla seconda il valore della prima e dopo il loop alla prima quello
del nuovo record. Tutto qua'!:-)
Saluti.
Luciano

 17-02-2000 BBB 1
   La seguente query (da copiare e incollare nella finestra delle query in
modalita SQL) produce (mi pare) l'output da te descritto:
SELECT DatePart("yyyy",[Data]) & Format$(DatePart("m",[Data]),"00") & [desc]
AS Espr1, First(Tabella1.Data) AS PrimoDiData, First(Tabella1.Desc) AS
PrimoDiDesc, Sum(Tabella1.Valore) AS SommaDiValore
FROM Tabella1
GROUP BY DatePart("yyyy",[Data]) & Format$(DatePart("m",[Data]),"00") &
[desc]
ORDER BY DatePart("yyyy",[Data]) & Format$(DatePart("m",[Data]),"00") &
[desc];
(al posto di Tabella1, ovviamente, dovrai scrivere il nome della tua
tabella)
   L'ordinamento (ed il raggruppamento) viene effettuato sul campo
'virtuale' AnnoMeseDesc. Per ogni gruppo considero solo il primo elemento di
Data e di Desc. Vedi te se il tutto può essere adatto al tuo scopo.
   Ciao.

Data e di Desc. Vedi te se il tutto può essere adatto al tuo scopo.
Ti ringrazio, ma direi che questa tua soluzione e' in grado di ottenere il
risultato voluto "per combinazione", e solo con i dati di esempio che ho
fornito. Non e' una soluzione generale.
Si basa infatti sul raggruppamento di Anno+Mese e del campo DESC, e funziona
(per combinazione appunto) con i seguenti dati:
dati che ho postato di esempio:
DATA		DESC	VALORE
01-01-2000	AAA	1
02-01-2000	AAA	2
05-01-2000	AAA	4
07-01-2000	BBB	1
15-01-2000	BBB	5
18-01-2000	CCC	5
10-02-2000	AAA	3
15-02-2000	AAA	2
17-02-2000	BBB	1
Ma basta aggiungere una riga come questa:
17-01-2000	AAA	3
e la query non funziona piu' correttamente, dato che ottengo questo:
01-01-2000	AAA	10
07-01-2000	BBB	6
18-01-2000	CCC	5
10-02-2000	AAA	5
17-02-2000	BBB	1
mentre il risultato corretto e' questo:
01-01-2000	AAA	7
07-01-2000	BBB	6
17-01-2000	AAA	3
18-01-2000	CCC	5
10-02-2000	AAA	5
17-02-2000	BBB	1
Voglio dire: non e' la soluzione al mio problema, ovvero il raggruppare per DESC
ma fermando il raggruppamento alla prima variazione, ma una soluzione
particolare per un gruppo di dati particolari, e cambiandone uno, non va piu'.
Grazie comunque :-)
Altre idee ?
Luis


Grazie per la risposta.
ho specificato il "senza codice" proprio perche' so bene che altrimenti si puo
fare tranquillamente come ha detto tu.
il mio problema e' che la query deve essere richiamabile sia da un programma VB
(e quindi potrei usare del codice), sia da access e basta (e quindi senza codice
di supporto, dato che se scrivo codice in un modulo vba access, poi questo non
e' accessibile quando il programma visual basic e' in esecuzione... ecc. ecc.)
A parte tutto, mi sembra strano che con SQL e basta il problema non si riesca a
risolvere....
Altre idee ?
Ciao !
Luis