Newsgroup: it.comp.appl.access
Titolo: Estrarre ultime 4 vendite

Buongiorno a tutti.
Ho un Db con una tabella con i seguenti dati e dovrei estrarre per ogni 
prodotto, le ultime n vendite (in questo caso n � 4, ma potrebbe essere 5,6 
a seconda della esigenza del momento):
 
Data IDOgetto Qta Prezzo
.......
01/08/2012 penna    1    .50
07/08/2012 penna    2    .50
18/08/2012 matita    1    .25
23/08/2012 penna    1    .50
25/08/2012 matita    2    .30
27/08/2012 gomma    1    .70
29/08/2012 penna    1    .50
01/09/2012 matita    3    .20
05/09/2012 gomma    2    .25
07/09/2012 matita    3    .30
10/09/2012 matita    2    .25
10/09/2012 gomma    1    .50
12/09/2012 matita    1    .35
15/09/2012 gomma    2    .30
15/09/2012 penna    2    .25
17/09/2012 penna    2    .30
17/09/2012 gomma    1    .50
18/09/2012 gomma    2    .50
........
 
il risultato dovrebbe essere questo:
 
10/09/2012 gomma    1    .50
15/09/2012 gomma    2    .30
17/09/2012 gomma    1    .50
18/09/2012 gomma    2    .50
23/08/2012 penna    1    .50
29/08/2012 penna    1    .50
15/09/2012 penna    2    .25
17/09/2012 penna    2    .30
01/09/2012 matita    3    .20
07/09/2012 matita    3    .30
10/09/2012 matita    2    .25
12/09/2012 matita    1    .35
-- 
 
Grazie
 
 

 ...
 
C'� una chiave primaria in questa tabella?
Cos� tutta la vita di un db e in particolare la (sotto-) query
sarebbe pi� semplice.
 
La tabella ha un nome?
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 
 

 ha scritto nel messaggio 
news:abonpb...@mid.individual.net...

Grazie per l'attenzione, allora, la tabella viene alimentata da una serie di 
file txt che mi arrivano giornalmente, li carico tramite una query in modo 
da avere la tabella in questa situazione (viene svuotata e ripopolata tutti 
i giorni):
 
ID_Progressivo(chiave;contatore,); Id_ogg(testo); Data(data);Qta (Numerico) 
Prezzo(valuta)
 
1;penna;10/08/2012;1;.20
2;penna;12/08/2012;2;.20
3;penna;18/08/2012;4;.18
4;penna;22/08/2012;1;.20
5;penna;24/08/2012;1;.25
6;penna;30/08/2012;1;.20
7;matita;08/08/2012;2;.20
9;matita;09/08/2012;2;.20
10;matita;10/08/2012;1;15
11;matita;18/08/2012;3;15
12;matita;20/18/2012;1;15
13;matita30/08/2012;1;15
14;gomma;10/08/2012;3;30
15;gomma12/08/2012;1;30
16;gomma;18/08/2012;1;30
17;gomma;20/18/2012;1;30
18;gomma;24/08/2012;2;30
19;gomma24/08/2012;1;30
 
Il mio obiettivo � quello di tirare fuori: gli ultimi 2 ( o N) record di 
Id_ogg in base alla data (decrescente) e fare la somma della qta.
 
penna;2
matita;2
gomma;3
 
Grazie
 
 



 ...

Interessante che la gente spesso descrive tutti i campi, dati
e dettagli di una tabella senza di menzionare il suo nome,
nemmeno se chiedo. :-)
 
In principio puoi usare una query:
 
SELECT A.Id_ogg, Sum(A.Qta) AS SommaDiQta
FROM Tabella AS A
WHERE A.ID_Progressivo IN
(
  SELECT TOP 2 ID_Progressivo
  FROM Tabella
  WHERE Id_ogg = A.Id_ogg
  ORDER BY Data DESC
)
GROUP BY A.Id_ogg
 
Per rendere il numero 2 variabile puoi comporre la stringa
SQL con VBA e p.e. aggiornare la propriet� SQL di una
query salvata.
Se p.e. hai una maschera con un campo testo txtQuanti
per inserire il numero puoi farlo al clic di un pulsante:
 
Dim strSQL As String
 
strSQL = _
    " SELECT A.Id_ogg, Sum(A.Qta) AS SommaDiQta" & _
    " FROM Tabella AS A" & _
    " WHERE A.ID_Progressivo IN" & _
    "   (SELECT TOP " & Me!txtQuanti & " ID_Progressivo" & _
      "  FROM Tabella" & _
      "  WHERE Id_ogg = A.Id_ogg" & _
      "  ORDER BY Data DESC)" & _
    " GROUP BY A.Id_ogg"
 
CurrentDb.QueryDefs("TuaQuery").SQL = strSQL
DoCmd.OpenQuery "TuaQuery"


 ha scritto nel messaggio 
news:abouhm...@mid.individual.net...

Ciao, grazie della risposta, l'ho provato e funziona, ma ho dovuto creare 
una query di appoggio dove far girare il tuo suggerimento, con circa 800 
record, in quanto la tabella di origine,  che si chiama CHEK :-))) ha circa 
110 mila record con 4000 ID_ogg., ebbene in un ora stava ancora elaborando 
dati. Forse devo rivedere come impostare la struttura, o iniziare a 
"svecchiare " un po di dati.
Posso, secondo te, effettuare lo svecchiamento con questo sistema, tenendo 
in linea gli ultimi 15/20 movimenti ? Al limite lo faccio girare tutta la 
notte e mi creo una nuova tab...
 
Grazie 
 
 

 > SQL con VBA e p.e. aggiornare la proprietà SQL di una

Lavori su un mdb (x i dati)? Prova a separare le query. Prima selezioni i movimenti che ti servono (query 1), poi fai le somme (query 2 basata su query 1)