Newsgroup: it.comp.appl.access
Titolo: Raggruppamento di campi numero

Non è la prima volta che chiedo aiuto a questo newsgroup, ma vorrei sapere
se c'è soluzione al seguente problema.
ho del materiale il quale è associato un numero di matricola come segue
PEZZO            MATRICOLA
TV COLOR    1234
TV COLOR    1235
TV COLOR    1236
TV COLOR    1257
TV COLOR    1258
TV COLOR    1265
Dovrei fare un report di questo genere
TV COLOR    1234    TO    1236    TOTALE PEZZI    3
TV COLOR    1257    TO    1258    TOTALE PEZZI    2
TV COLOR    1265    TO    1265    TOTALE PEZZI    1
in pratica se i pezzi sono di matricola consecutiva mettili sulla stessa
riga mettendo la prima e l'ultima consecutiva e metti il numero di pezzi
altrimenti se la matricola non è consecutiva fai altra linea.
Qualcuno è in grado di aiutarmi per fare questo?
E possibile fare questo tramite una query in modo che posso prendere il
risultato già fatto e portarlo sul report?

 ha scritto nel messaggio
news:kvUob.395112$R32.13...@news2.tin.it...

Ciao Pluto
Data una tabella Materiali con i campi PEZZO (testo) e MATRICOLA (intero)
puoi costruire una query tipo questa.
=========================================
Select P.Pezzo,P.Matricola as Primo,
          (Select TOP 1 M1.Matricola
           FROM Materiale  AS M1
                       LEFT JOIN Materiale AS M2
                       ON M1.Matricola+1=M2.Matricola
           WHERE M2.Matricola IS NULL
                         AND M1.Pezzo=P.Pezzo
                        AND M1.Matricola>=P.Matricola
           ORDER BY M1.Pezzo,M1.Matricola) AS Ultimo
FROM [Select    M1.Pezzo,M1.Matricola
              FROM  Materiale  AS M1
                           LEFT JOIN Materiale AS M2
                           ON M1.Matricola-1=M2.Matricola
             WHERE  M2.Matricola IS NULL]. As P
ORDER BY P.Pezzo,P.Matricola
===========================================
La subTabella [P] (Primi valori) estrae solo le matricole più basse 1234 -
1257 - 1265
La subquery [Ultimo] (Ultimi valori) estrae la matricola più alta in base al
pezzo e alla matricola più bassa 1236 - 1258 - 1265.
Per il totale pezzi è inutile scomodare la query, creati un campo calcolato
che faccia la differenza tra Ultimo e Primo.
Purtroppo access esegue la query ma al momento di salvarla va in blocco e
per aggirare il problema bisogna suddividere in due query.
La Prima relativa alla subtabella P che sarà l'origine dati della seconda,
la puoi salvare ad esempio con nome Q_Matricole_P
===============================
Select    M1.Pezzo,M1.Matricola
FROM  Materiale  AS M1
              LEFT JOIN Materiale AS M2
             ON M1.Matricola-1=M2.Matricola
WHERE  M2.Matricola IS NULL]. As P
==============================
La seconda che inserirai come origine record del form..
==============================
SELECT P.Pezzo, P.Matricola AS Primo,
              (Select TOP 1 M1.Matricola
               FROM Materiale  AS M1
                           LEFT JOIN Materiale AS M2
                           ON M1.Matricola+1=M2.Matricola
              WHERE M2.Matricola IS NULL
                          AND M1.Pezzo=P.Pezzo
                        AND M1.Matricola>=P.Matricola
                       ORDER BY M1.Pezzo,M1.Matricola) AS Ultimo
 FROM Q_Matricole_P AS P
ORDER BY P.Pezzo, P.Matricola
===============================
Ciao Giorgio

 > ho del materiale il quale è associato un numero di matricola come segue
piccola correzione (te ne sarai accorto)
Togli il pezzo di stringa  "]. As P" da Q_Matricole_P
Ciao Giorgio

 ha scritto nel messaggio
news:bo2pke$e7d$1...@lacerta.tiscalinet.it...

Complimenti, Giorgio. Bella soluzione.
Ciao
Salvatore