Newsgroup: it.comp.appl.access
Titolo: campo progressivo in una query

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. 
 

 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

 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
--

 
 
 
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 ^^


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
 
 


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.


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.


Tutto in 1 riga:
 
progressivo: DCount("*";"tabella";"articolo='" & [articolo] & "' And data<=" 
& clng([data]))
 
-- 
Ciao
Karl
*********
Access FAQ: 
www.donkarl.com/it
 
 
 

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.... 
 

 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