Newsgroup: it.comp.appl.access
Titolo: Query su ultimo record

Avrei l'esigenza di eseguire una query, che prelevi però solo l'ultimo 
record dalla tabella....questo per delle esigenze particolari....
Dovrei prelevare l'ultimo record da una tabella, copiarlo in una tabella 
temporanea, eseguire una query di aggiornamento sul record appena copiato, e 
accodare il record modificato nella stessa tabella d'origine, per poi 
svuotare la tabella temporanea in modo da essere pronta per una nuova 
operazione... Il tutto poi inserirlo in un ciclo che mi eseguirà 
l'operazione automaticamente fino a quando un contatore presente nel record 
stesso non sarà >= di un valore presente in una maschera.
ora il problema è: come fare a prelevare solo l'ultimo record? Non c'è un ID 
di controllo, nè ce lo posso mettere perchè ho l'esigenza di avere tante 
operazioni con lo stesso ID, che non è un contatore, ma un valore Long 
copiato da un contatore generale situato in un'altra tabella che mi fornisce 
i record...
In pratica la struttura gerarchica sarebbe questa:
Tabella principale, con record univoci e ID univoco, contatore;
Tabella Secondaria, di cui alcuni record hanno lo stesso ID della tabella 
principale, con ID Long, copiato da quella principale in modo che i record 
qui presenti facciano capo a un'ID principale situato nell'altra 
tabella...questo per gestire delle eliminazioni a catena tramite ID...;
Tabella di appoggio che mi permette di eseguire delle operazioni sui record 
di quella secondaria, e una volta eseguite, di accodare i risultati alla 
secondaria.
Ho quindi la necessità di trattare i record di quella secondaria uno per 
volta, selezionando solo l'ultimo.....come dovrei fare?
Sono abbastanza niubbo quindi col codice ci so fare veramente poco, spero 
sarete comprensivi :-)
Grazie 

R1[[ky ha scritto:

Quel che dici non ha molto senso. Esiste il concetto di "ultimo record" 
solo subordinato al concetto di ordinamento.
Un ID si può sempre mettere, anzi, la tua tabella ha una chiave univoca 
? Se ci sono più record con lo stesso ID aggiungi un altro campo ("PROG" 
per esempio) che contenga un numero progressivo. In modo che ID e PROG 
siano chiave univoca della tabella
O altrimenti mettere un ID aggiuntivo che sia chiave primaria della tabella.

 ha scritto nel messaggio 
news:OX1he.891550$b5.39...@news3.tin.it...

Ok ho aggiunto un campo contatore...adesso il concetto di ultimo record ha 
senso :-)
Fatto questo, come faccio a dire alla mia query di prelevare i dati solo 
dall'ultimo record?
Grazie 

 solo dall'ultimo record?
SELECT TOP 1 * FROM MiaTabella
ORDER BY MioContatore DESC;
HTH.
Alessandro

 ha scritto nel messaggio 
news:d62eaa$jeu$1...@newsread.albacom.net...

Grande, funziona! Grazie mille!
Adesso perň l'ultimo quesito, dopo prometto che non rompo piů, anche perchč 
fatto questo, il programma si puň dire quasi finito...
Devo impostare il loop per il ciclo che ho appena costruito, il quale 
sarebbe:
Do While [TMP_Calendario]![Prossima]  < = [DATA_AL]
    'confronta il valore di una data nella tabella in cui sono memorizzati i 
record, con un campo presente nella maschera di         'inserimento, data 
di fine intervallo.
    DoCmd.OpenQuery "Q_acc_appoggio_ele"
    DoCmd.OpenQuery "Q_aggiorna_data"
    DoCmd.OpenQuery "Q_accoda_calendario_ele_da_appoggio"
    DoCmd.OpenQuery "Q_svuota_appoggio_ele"
 Loop
Purtroppo ricevo il messaggio "Impossibile trovare il campo "|" a cui si fa 
riferimento.
Dove sta l'errore? Sicuramente nell'impostazione della condizione del While, 
provando While 1=1, il loop funziona, anzi bisogna sparare al computer 
perchč si fermi :-) 

 
[TMP_Calendario]![Prossima] è il campo della tabella ??
Se così fosse non puoi riferirti in questo modo ad un campo
ed inoltre la tabella TMP_Calendario contiene un solo record o più di 
uno ?? Come sai a quale record riferirti ??
Se il record è unico:
Dim RS as DAO.RecordSet
Set RS = Currentdb.OpenRecordset("TMP_Calendario")
Do While RS!Prossima < = [DATA_AL]


 Loop
Hai proprio ragione, non posso eseguire il riferimento cosě, altrimenti non 
sa che record guardare....
Sarebbe possibile fare questo controllo su una query come quella che hai 
postato poco fa, che esegue una selezione sull'ultimo record della tabella?
Grazie per la tua pazienza... 

"R1[[ky" <ric...@NOSPAMlibero.it> ha scritto nel messaggio 
news:nx6he.6568$795.1...@twister1.libero.it...

Ciao, ho risolto facendo cosě:
Calcolo_Date:
    Dim RS As DAO.Recordset
    Set RS = CurrentDb.OpenRecordset("TMP_Calendario")
    RS.MoveLast
    If RS!Prossima < RS!DATA_AL Then
        DoCmd.OpenQuery "Q_acc_appoggio_ele"
        DoCmd.OpenQuery "Q_aggiorna_data_ele"
        DoCmd.OpenQuery "Q_accoda_calendario_da_appoggio_ele"
        DoCmd.OpenQuery "Q_svuota_appoggio_ele"
    GoTo Calcolo_Date
    Else
   DoCmd.Close
   End If
Sembra tutto ok, adesso farň un bel beta testing....
Grazie ancora...