Newsgroup: it.comp.appl.access
Titolo: Ricerca record per data

Buonasera a tutti.
 
Stavo tentando di aiutare un'altra persona per risolvere un problema nel 
suo db pensando fosse più semplice del previsto ed a mia portata, invece 
mi sbagliavo... In pratica, c'è questo db con svariati record, 
l'esigenza è quella di trovare il record per data. Poniamo di inserire 
nella combobox la data odierna 14/07/21, la query deve rendermi il primo 
record che trova da questa data in poi.
 
Chiedo gentilmente una dritta. Grazie.
 
-- 
RoBort


Dimenticavo... Un solo record.
 
-- 
RoBort


SELECT tuatabella.*
FROM tuatabella
WHERE (((tuatabella.datat)=[Forms]![MacheraDoveHaiLaCombo]![TuaCombo]));
 
BFS

 WHERE (((tuatabella.datat)=[Forms]![MacheraDoveHaiLaCombo]![TuaCombo]));
 
Grazie BFS per l'aiuto. Ho impostato tale query ma non ottengo nulla, 
ovviamente ho cambiato i riferimenti (nome tabella, nome combo etc.). In 
pratica questo db si riferisce alle estrazioni del lotto. Al suo interno 
ha tutte le estrazioni a partire dal 1939, l'ideatore di tale progetto 
cerca di ottenere con quello che sto chiedendo, l'estrazione più vicina 
alla data digitata. Se per esempio nella combobox digito la data 
9/04/2000, l'estrazione successiva è quella del 12/04/2000, poi si passa 
al 15 etc. etc.
E' l'estrazione del 12/04/2000 che mi dovrebbe rendere come risultato.
 
-- 
RoBort


scusa mi era sfuggito quel "in poi"
 
cosi dovrebbe andare
 
SELECT TOP 1 tuatabella.*
FROM tuatabella
WHERE (((tuatabella.datat)>=[Forms]![MacheraDoveHaiLaCombo]![TuaCombo]));


Hai controllato il formato della data restituito dalla combo?
per le query la data dev'essere nel formato AAAA/MM/GG

 WHERE (((tuatabella.datat)>=[Forms]![MacheraDoveHaiLaCombo]![TuaCombo]));
 
 
 
 
Ciao BSF grazie per la dritta e la pazienza. Rispondo solo ora perchè mi 
arrendo nonostante mi ritengo molto puntiglioso ed orgoglioso. Sono tre 
giorni che ci dò sotto quasi tutti i giorni ma niente.
Ricapitolando, la query che mi hai indicato funziona alla grande e l'ho 
trascritta così:
 
SELECT TOP 1 Lotto.*
FROM Lotto
WHERE (((Lotto.data)>=[Forms]![frmMetodi]![cboSceltaData]));
 
 
Mi rendo conto che il problema è stupido però non ne vado fuori, in 
sintesi ho messo la query come origine record della form. Nella combobox 
o ricerco la data che mi interessa, in questo caso la digito. Dovrei 
Ottenere il risultato della ricerca, nelle caselle di testo posizionate 
nella form.
 
Ho usato il condizionale perchè un banale errore mi ferma. So che è 
banale ma non riesco a capire dove mettere mano. In pratica già 
all'apertura del db viene visualizzata la finestra di dialogo "Immettere 
valore parametro - Maschere!frmMetodi!cboSceltaData. Se digito la data 
che mi interessa il risultato della ricerca è corretto, però ho sempre 
questa finestra di dialogo che si apre e non riesco a fare in modo di 
poter digitare la data di ricerca nella combobox. Ho guardato i 
riferimenti, mi sembrano corretti. Guardati e riguardati.
 
Questa è la query della combobox:
 
 
SELECT Lotto.IDArchivio, Lotto.Data
FROM Lotto;
 
Niente di particolare, ho guardato anche il relativo help dell'errore, 
guardato, riguardato, fatto una miriade di prove portando all'osso la 
form, cancellando tutto quello che non serviva, nulla da fare...
 
 
 
 
 
 
-- 
RoBort

prova a usare la funzione datevalue:
SELECT TOP 1 tuatabella.* 
FROM tuatabella 
WHERE (((tuatabella.datat)>=datevalue([Forms]![MacheraDoveHaiLaCombo]![TuaCombo]))); 


fai cosi
togli l'origine dati alla maschera/oppure metti l'intera tabella lotto
sull'evento dopo aggiornamento della combo metti
 
Me.RecordSource = "Me.RecordSource = "SELECT TOP 1 lotto.* FROM lotto 
WHERE lotto.dataEstrazione>=#" & Format(Me.cboSceltaData, "yyyy/mm/dd") 
& "# order by lotto.dataEstrazione "
 
 
occhio all'eventuale formato delle date...non so nel tuo db in che modo 
siano archiviate
 
provato e funziona
 
BFS

 BFS
 
Ho provato ad interpetare quello che mi indichi di fare, vado in 
difficoltà quando mi dici "Togli l'origine dati alla maschera/oppure" 
etc. etc. Quell'oppure potrebbe significare o l'una o l'altra maniera... 
Io comunque ho provato in questo modo; Ho tolto l'origine dati alla 
maschera ed ho messo l'intera tabella (anzichè la query) e sull'evento 
dopo aggiornamento della combo ho messo il listato  indicato, ottengo un 
errore di sintassi, viene evidenziato in rosso appena digitato.
Ho saltato qualche passaggio?
 
 
 
 
-- 
RoBort


scusa ho sbagliato il copia incolla
va bene quello che hai fatto
dopo aggiornamento della combo è questo il comando


 order by lotto.dataEstrazione "
 
 
Niente da fare...
 
Ricapitolo, come origine dati nella maschera ho collegato la tabella. 
Nella combobox dopo aggiornamento ho inserito il listato succitato. 
Digito una data da ricercare nella cobobox, il risultato che ottengo è 
un errore; Il testo immesso non corrisponde a una voce nell'elenco. Se 
invece di digitare una data la seleziono dalla combobox, mi si apre una 
finestra di dialogo "immettere valore parametro" questo credo di aver 
capito perchè, probabilmente per il parametro lotto.dataEstrazione
 
 
 
-- 
RoBort


se vuoi condividere il tuo database vedo dove sbagli
 
occhio però, devi sostituire lotto.dataEstrazione con il nome della 
colonna che contiene la data dell'estrazione nella tua tabella
 


Ecco il db
 
https://drive.google.com/file/d/1spOj43P70TXec7fezAx0ftL8bwEKqpsk/view?usp=sharing
 
 
Avrei potuto condividerlo prima, non l'ho fatto per non scocciare.
 
Il db così com'è è originale, senza nessuna modifica di quelle che mi 
sono state indicate.
 
Ricapitolando la funzione cercata, digitando una data nella combobox il 
db deve restituire l'estrazione successiva alla data digitata. Es 
20/07/2021 estrazione del 21/07/2021.
 
Grazie.
 
-- 
RoBort


l'inghippo è che la prima colonna della combo è un id e non una data
modifica l'origine dalla combo con :
 
1)select lotto.data from lotto order by lotto.data
2)numero colonne : 1
3)larghezza colonne : 3
4)solo in elenco: no
 
 
l'istruzione corretta nel dopo aggiornamento è della combo data è:
 
 
Me.RecordSource = "SELECT TOP 1 lotto.* FROM lotto WHERE lotto.data>=#" 
& Format(Me.cboSceltaData, "yyyy/mm/dd") & "# order by lotto.data "
 
e funziona anche nel tuo db
 
 
BFS
 
 
 
 
 
 
 
 
 
 
 

 BFS
 
Grazie BFS per la dritta, ora funziona come l'ideatore lo voleva. E 
pensare che tale db non è neanche mio, volevo solo aiutare l'ideatore 
pensando che fosse alla mia portata... Avevo sistemato altre 
problematiche sul db ma questa era impossibile...
 
Grazie ancora e buona serata.
 
-- 
RoBort


ottimo
ciao