16 messaggi dal 29 maggio 2001
Salve a tutti.

Ho un problema che non so come risolvere. Ho un tabella in MS ACCESS con molti record (circa 15000) che mi serve per fare delle statistiche.

Il problema è che molti di questi record sono doppioni e avrei bisogno di scremarli e prendere in considerazione solo quello con la data più recente.

Mi spiego meglio: la tabella ha i seguenti campi

CODICE campo1 campo2 DATA
AAA ... ... 16/07/02
BBB ... ... 15/08/02
AAA ... ... 09/09/02

e per avere delle statistiche attendibili me ne dovrei fregare del record col codice AAA in data 16/07/02 e prendere solo quello in data 09/09/02

Ho pensato di mettere i dati scremati in una nuova tabella e su questa fare le statistiche. Dovrebbe quindi avere la forma:

CODICE campo1 campo2 DATA
BBB ... ... 15/08/02
AAA ... ... 09/09/02

avendomi eliminato il (o i) record doppi con la data più vechia.


Potete darmi una mano ?

Grazie mille
27 messaggi dal 11 ottobre 2001
ordina per data i tuoi records, poi crea una tabella nuova, vuota provvisoria con tutti i campi uguali uguali per nome, ordine e struttura, ed assegna a "codice" il ruolo di chiave primaria.
Poi seleziona tutti i records della tabella originale e incollali nella nuova, access ti dirà che non può incollare tutti i dati, digli sempre ok, ok ok, ed alla fine ti ritroverai la tabella "scremata", a questo punto puoi togliere il ruolo di chiave primaria al campo "codice" ed ggiungerti il classico "id" .

NB= lo stesso risultto si potrebbe ottenere con un query di accodmento, ma si stà + tempo spiegare cos'è che fare come ti ho detto...

fmmi sapere!

marco

3.122 messaggi dal 16 maggio 2002
Esegui questa query
select * from tabella order by codice asc, data desc
e apri un recordset rs con permessi di modifica, poi cicli il recordset tenendo in memoria il codice del record passato. La tua query ti ha restituito i records "raggruppati" per codice, quindi basta che fai

codice=""
do while not rs.eof
if codice=rs("codice") then
rs.delete
end if
codice=rs("codice")
rs.movenext
loop

Non l'ho provata (perche' non ne ho bisogno) ma mi sembra a posto.
Forse potresti risolvere anche con la clausola group by, ma io non l'ho mai utlizzata percio' non ti so consigliare in tal senso. Comunque penso proprio che la sintassi da me proposta vada bene.

P.S. questa sintassi ti mantiene il record piu' recente, se vuoi tenere il record piu' vecchio basta che ordini per data asc

The day Microsoft makes something that doesn't suck
is probably the day they start making vacuum cleaners.

Get caught!
Get caught again!
16 messaggi dal 29 maggio 2001
Grazie per i suggerimenti.

Purtroppo ho letto solo oggi le vostre risposte ma (per fortuna) sono riuscito ugualmente ad arrivare ad una soluzione.


Grazie ancora e a presto.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.