Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

campo progressivo in una query

672 views
Skip to first unread message

giorgio

unread,
Mar 14, 2012, 7:07:01 AM3/14/12
to
in una query che contiene (tra gli altri) un campo che si ripete n volte
vorrei inserire un campo progressivo che mi conti i record
ad esempio:

la tabella si chiama "tabella"
contiene: "articolo" , "data", "tipo"

articolo data tipo progressivo
pippo 01/01/2012 a 1
pippo 15/03/2012 a 2
pippo 15/06/2012 b 3
pluto 01/05/2012 a 1
pluto 17/07/2012 a 2
paperino 10/06/2012 b 1
paperino 11/01/2012 a 2
paperino 12/03/2012 a 3
paperino 13/06/2012 b 4

il campo "progressivo" è quello che voglio creare e riparte da 1 quando
cambia l'articolo
grz.

Popi - TheBadHabits

unread,
Mar 14, 2012, 7:40:23 AM3/14/12
to
Il giorno mercoledì 14 marzo 2012 12:07:01 UTC+1, giorgio ha scritto:
> in una query che contiene (tra gli altri) un campo che si ripete n volte
> vorrei inserire un campo progressivo che mi conti i record

Ciao!

Sul SitoComune dovrebbe esserci qualcosa (vado a memoria, non mi è accessibile da qua), ma IMHO temo che la via più semplice sia appoggiarsi ad una tabella temporanea in cui impostare (tramite ciclo) il tuo progressivo.

HTH
Popi

Paolo opg

unread,
Mar 14, 2012, 9:22:29 AM3/14/12
to
"giorgio" <bres...@yahoo.it> wrote in
news:4f607bd5$0$1388$4faf...@reader1.news.tin.it:
per contare i record usa le funzioni che fanno quello, non stare a
reinventarti la ruota...

cosa succede se per qualsiasi motivo hai due volte lo stesso numero
progressivo sullo stesso articolo? e se per caso ne salti uno o lo
elimini?

il primo caso e' facile: puoi impedire che si verifichi impostando un
indice univoco su articolo/progressivo.

il secondo non lo puoi impedire in nessuna maniera robusta (notare il
'robusta'); devi inventarti controlli, codice e query di verifica,
eseguire il tutto periodicamente oppure a ogni click degli utenti in
intrefaccia e piu' codice scrivi piu' codice hai da mantenere e
controllare...

se il campo progressivo ti serve solo per contare, lascialo perdere e
conta con:
select count(*), articolo from tabella group by articolo



--
Paolo opg

BE AWARE that this post uses a fake reply-to address
to contact me write to:
janickg ( at ) hotmail ( dot ) com
--

Paolo opg

unread,
Mar 14, 2012, 9:30:29 AM3/14/12
to
Paolo opg <spamc...@tiscali.it> wrote in
news:XnsA016923A6CE3Fsp...@193.43.96.1:

> "giorgio" <bres...@yahoo.it> wrote in
> news:4f607bd5$0$1388$4faf...@reader1.news.tin.it:
>
>> in una query che contiene (tra gli altri) un campo che si ripete n
[cut]
>
> se il campo progressivo ti serve solo per contare, lascialo perdere e
> conta con:
> select count(*), articolo from tabella group by articolo
>
>
>


hum...
mi sa che ho toppato alla grande...
tutto il mio commento vale se parti da una tabella, ma se si tratta di una
query in cui vuoi un valore incrementale, non c'entra un tubo...

sorry ^^

Bruno Campanini

unread,
Mar 14, 2012, 5:29:06 PM3/14/12
to
giorgio expressed precisely :
SELECT Tabella.Articolo, Tabella.Data, Tabella.Tipo, (SELECT COUNT(1)
FROM Tabella T WHERE T.Articolo = Tabella.Articolo AND
T.Data<=Tabella.Data) AS Progressivo
FROM Tabella
ORDER BY Tabella.Articolo, Tabella.Data, Tabella.Tipo;

Bruno


vlad...@alice.it

unread,
Mar 14, 2012, 5:53:09 PM3/14/12
to
Sicuro? :-)
Io opterei per un inserimento nel campo della tabella di un campo contatore chiamato ad esempio Id:

SELECT Tabella.Id, Tabella.Articolo, Tabella.Data, Tabella.Tipo, Count(Tabella_1.Articolo) AS Progressivo
FROM Tabella INNER JOIN Tabella AS Tabella_1 ON Tabella.Articolo = Tabella_1.Articolo
WHERE (((Tabella.Id)>=[Tabella_1].[Id]))
GROUP BY Tabella.Id, Tabella.Articolo, Tabella.Data, Tabella.Tipo
ORDER BY Tabella.Id, Tabella.Articolo;

Ciao Vladimiro.

vlad...@alice.it

unread,
Mar 14, 2012, 6:06:34 PM3/14/12
to
Puoi anche evitare di far vedere nella query l'Id:
SELECT Tabella.Articolo, Tabella.Data, Tabella.Tipo, Count(Tabella_1.Articolo) AS Progressivo
FROM Tabella INNER JOIN Tabella AS Tabella_1 ON Tabella.Articolo = Tabella_1.Articolo
WHERE (((Tabella.Id)>=[Tabella_1].[Id]))
GROUP BY Tabella.Articolo, Tabella.Data, Tabella.Tipo
ORDER BY Tabella.Articolo;

Di nuovo Vladimiro.

Karl Donaubauer

unread,
Mar 14, 2012, 7:00:49 PM3/14/12
to
Tutto in 1 riga:

progressivo: DCount("*";"tabella";"articolo='" & [articolo] & "' And data<="
& clng([data]))

--
Ciao
Karl
*********
Access FAQ: www.donkarl.com/it


giorgio

unread,
Mar 15, 2012, 4:58:03 AM3/15/12
to
Tutto in 1 riga:

progressivo: DCount("*";"tabella";"articolo='" & [articolo] & "' And data<="
& clng([data]))

--
Ciao
Karl

Mi sono accorto che la data qualche volta si ripete uguale, per cui crea
problemi.
se volessi basare il contatore solo sul cambio codice, tipo:
ARTICOLO PROGRESSIVO
pippo 1
pippo 2
pippo 3
pluto 1
pluto 2
paperino 1
paperino 2
paperino 3
paperino 4
come la cambio la tua riga ? e funzionerebbe anche se baso la mia query su
un'altra query invece che su una tabella?
grazie....

Karl Donaubauer

unread,
Mar 19, 2012, 1:14:05 PM3/19/12
to
giorgio ha scritto
>
> progressivo: DCount("*";"tabella";"articolo='" & [articolo] & "' And
> data<="
> & clng([data]))
>
> Mi sono accorto che la data qualche volta si ripete uguale, per cui crea
> problemi.
> se volessi basare il contatore solo sul cambio codice, tipo:
> ARTICOLO PROGRESSIVO
> pippo 1
> pippo 2
> pippo 3
> pluto 1
> pluto 2
> paperino 1
> paperino 2
> paperino 3
> paperino 4
> come la cambio la tua riga ? e funzionerebbe anche se baso
> la mia query su un'altra query invece che su una tabella?

No. Per un campo progressivo che conta ogni riga è necessario
un campo univoco, sia un campo data sia (meglio) un campo
contatore o simile per definire l'ordine di successione.

--
Ciao
Karl
*********
Access FAQ: http://www.donkarl.com/it


0 new messages