Newsgroup: it.comp.appl.access
Titolo: clacolo ultimo costo

Ciao a tutti,
        Forse avete già discusso questo problema, ma putroppo non ne ho 
trovato traccia.
problema:
Ho una tabella "movimenti magazzino" con all'interno tutti i movimenti di 
magazzino, vorrei estrapolare con una quey l'ulimo costo, ma non ci riesco.
Ho già provato le query di aggregazione ma il comando utlimo non mi serve, 
perchè potrei aver inserito movimenti nella tabella non in ordine 
cornologico.
quindi devo estrapolare gli utlimi movimenti in base alla data e non 
all'inserimento.
Se provo on un singolo articolo, ci riesco, ma non ci riesco se voglio avere 
un elenco completo.
Qeury del singolo articolo:
----------------------
PARAMETERS LngProdotto Long, DATATRANS Text ( 255 );
SELECT [Transazioni magazzino].DataTransazione, [Transazioni 
magazzino].PrezzoUnitario, Categorie.NomeCategoria, 
Prodotti.DescrizioneProdotto, Prodotti.NomeProdotto, 
Categorie.NomeCategoria, [Transazioni magazzino].QuantitaVenduta, 
[Transazioni magazzino].QuantitaRicevuta, Prodotti.IDProdotto, 
SOTTOGRUPPI.NomeCategoria
FROM Categorie RIGHT JOIN ((SOTTOGRUPPI RIGHT JOIN Prodotti ON 
SOTTOGRUPPI.IDCategoria = Prodotti.IDSOTTOGRUPPI) RIGHT JOIN [Transazioni 
magazzino] ON Prodotti.IDProdotto = [Transazioni magazzino].IDProdotto) ON 
Categorie.IDCategoria = Prodotti.IDCategoria
WHERE ((([Transazioni magazzino].DataTransazione) In (SELECT TOP 1 
[Transazioni magazzino].DataTransazione FROM [Transazioni magazzino] 
WHERE(( [Transazioni magazzino].IDProdotto)=[lngprodotto] AND [TRANSAZIONI 
MAGAZZINO].DATATRANSAZIONE <= CDATE([DATATRANS])) ORDER BY [Transazioni 
magazzino].DataTransazione DESC)) AND (([Transazioni 
magazzino].IDProdotto)=[LngProdotto]) AND ((True)<>False) AND (([Transazioni 
magazzino].IDAcquisto)>0) AND (([Transazioni 
magazzino].TEST_ULCOSTO)=False))
ORDER BY [Transazioni magazzino].DataTransazione;
----------------
Ho utilizzato il metodo della sottoqury per estrarre l'ultimo movimento e di 
consegnuenza il prezzo.
Purtroppo non riesco a ricavare l'elenco completo degli articoli con 
l'ultimo costo esatto.
Grazie a tutti quelli che possono aiutarmi.
Ciao ;)

 all'inserimento.
Qual'è la struttura della tabella?
Ciao
Marco 

 Qual'è la struttura della tabella?
idmovimenti:contatore
idacquisto:intero lungo
datamovimento:data
idprodotto:intero lungo
quantitaà: double
prezzo: double

 prezzo: double
Per reperire l'ultimo in ordine cronologico, devi fare un ordinamento DESC 
su una data.
Ma il "cronologico" che ti serve a te è la data del movimento o la data in 
cui materialmente hai inserito il record?
Nel primo caso c'è datamovimento e ti basta fare un ORDER BY datamovimento 
DESC.
Nel secondo caso non puoi farlo. Devi aggiungere un campo datainserimento 
che aggiorni via VBA con la data corrente.
A quel fai la ORDER BY come sopra.
Ciao
Marco 

Mi dispiace, ma non è cosiì semplice,
forse mi sono spiegato male,
mi serve un elenco in cui risulti un unico movimento per ogni prodotto in 
cui sia indicata l'ultima data di acquisto ed il relativo prezo(costo)
se li metto semplicemnte in ordine mi viene un borgliaccio di giornale di 
magazino.
"napo" <na...@NOPRIVATEMESSAGE.com> ha scritto nel messaggio 
news:dmple2$dfs$1...@news.tiscali.fr...


 cui sia indicata l'ultima data di acquisto ed il relativo prezo(costo)
Bene, allora prova a buttare giů un esempio di tabella e di risultato.
Cosě entriamo nel problema.
Ciao
Marco 

ok in modo semplice
idmovimento    datamovimento    prezzo    idarticolo
1                        20/10/2005       100        50
2                        05/11/2005        53         60
3                        06/11/2005        115        50
4                        06/08/2005        45          60
il risultato dovrą essere
idprodotto    datamovimento    prezzo
50                06/11/2005         115
60                05/11/2005         53

 60                05/11/2005         53
Ah, se lo dicevi subito! :-)
SELECT t1.*
FROM Tabella1 AS t1
WHERE t1.datamovimento >= ALL(SELECT t2.datamovimento FROM Tabella1 AS t2 
WHERE t2.idarticolo=t1.idarticolo)
ORDER BY t1.idarticolo;
Ciao
Marco 

Funziona perfettamente, grazie
:))))
"napo" <na...@NOPRIVATEMESSAGE.com> ha scritto nel messaggio 
news:dmpn4k$em2$1...@news.tiscali.fr...
