Newsgroup: it.comp.appl.access
Titolo: Query con data e ora

Salve a tutti, ho un problema :
Sto creando una query che estrappola i dati da un campo data e ora  di una
tabella che ha il seguente formato"18/08/2000 19.56.00".  Dovrei cercare
tutti i record che siano compresi per es. tra "18/08/2000 21.00.00" e
"18/08/2000 21.30.00". Per la data vorrei cercare tutti i dati con data
odierna e mi va benissimo la funzione Date ( ) , ma non riesco ad associarci
l'ora e i relativi intervalli!!!
Dovrei riuscire a fare tutto con una espressione se e' possibile.
Grazie e buona giornata a tutti
Gian Luigi

Dovrei riuscire a fare tutto con una espressione se e' possibile.
hai provato a scrivere nell'editor delle query qualcosa tipo quello
qui sotto?
between 18/08/2000 21.00.00 and 18/08/2000 21.30.00 
poi ci dovrebbe pensare lui a trasformarlo in qualcosa di più
sintatticamente corretto.
sennò prova direttamente con:
between #2000/08/18 21:00:00# and #2000/08/18 21:30:00#
cioè la data la devi riscrivere tutta comunque.
per estrapolare l'ora usa hour(), minute(), second(), ma penso fai
prima a riscrivere la data.

 Dovrei riuscire a fare tutto con una espressione se e' possibile.
In che senso?


non devo estrapolare l' ora ma altri record che sono compresi in quel lasso
di tempo

Devo usare un' espressione (generatore di espressioni!!!) perche' mi e' +
comodo all'interno di una query , ho gia' usato between #18/08/00 19.00.00#
and #18/08/00 19.30.00# , pero' non devo mettere la data odierna sempre
vorrei che me la cercasse in automatico, mi proponesse sempre la data di
oggi, ecco perche' Date( )!!!!!!!!!

l' ora
allora puoi passare alla query dei parametri, o meglio ancora te la
puoi scrivere in sql.  la data di oggi te la prendi da date().
la cosa non è difficile da fare ma non è immediata, casomai se ti
interessa riscrivi.


Innanzi tutto se adoperi come impostazioni internazionali quelle standard
italiane, il separatore che devi adoperare tra ore, minuti e secondi sono i
due punti e non il punto.
Visto che bisogna digitare dei parametri per le ore, io mi creerei una
maschera con quattro caselle di testo non associate chiamandole
rispettivamente OraDa, DataOraDa, OraA, DataOraA.
A OraDa e OraA darei un formato "Ora esatta" e una maschera di imput
09:00:00 .
A DataOraDa e DataOraA darei un formato "Data generica" e renderei questi
controlli non visibili.
A fronte dell'evento "Dopo aggiornamento" di OraDa genererei il seguente
codice VBA:
    Me![DataOraDa] = Date + Me![OraDa]
e a fronte dell'evento "Dopo aggiornamento" di OraA genererei il seguente
codice VBA:
    Me![DataOraA] = Date + Me![OraA]
Nei criteri della query scriverei:
Between [Forms]![NomeMaschera]![DataOraDa] And
[Forms]![NomeMaschera]![DataOraA]
A questo punto aprirei la maschera, digiterei l'ora di inizio e quella di
fine, quindi, avendo cura che la maschera resti aperta, aprirei la query.
Roberto

Ciao
Mi interessa il quesito e leggo volentieri (quando riesco) questo NG.
GRANDE ROBERTO: per la spiegazione chiara e precisa.
Luciano


 wrote in message
39ad4880...@news.flashnet.it...

Si mi interessa tantissimo anche perche' sono bloccato!!!!
Ciao


Sei riuscito a farmi arrossire per l'imbarazzo  :o)
Roberto

Si mi interessa tantissimo anche perche' sono bloccato!!!!
allora, non riesco a scrivere nell'editor delle query un'espressione
soddisfacente che faccia uso di parametri, sicché ti dico come fare a
creare una query dinamica, cioè una stringa sql, che poi puoi usare
direttamente o passare alla query.
dim ssql as string
dim oggi as string
dim dbs as database
dim qdf as querydef
oggi = Format(now, "yyyy/mm/dd")
ssql = "SELECT * FROM NomeTabella " & _
          "WHERE CampoData BETWEEN " & _
          "#" & oggi & " " & inputbox("Ora inizio?") & "# And " & _
          "#" & oggi & " " & inputbox("Ora fine?") & "#"
set dbs = currentdb
set qdf = dbs.querydefs("NomeQuery")
qdf.sql = ssql
il codice qui sopra, nel comporre la variabile stringa ssql, esegue
due inputbox, cioè due finestrelle che ti chiedono un valore.
ovviamente dovrai digitarlo correttamente, qualcosa tipo: 10:00:00,
cioè ore, minuti, secondi in due cifre e intervallati dal segno due
punti.
alla fine la stringa ssql sarà qualcosa del tipo:
SELECT * FROM NomeTabella 
WHERE CampoData BETWEEN 
#2000/08/28 10:00:00# AND #2000/08/28 11:30:00# 
questa stringa viene passata all'oggetto querydef, che altro non è che
un riferimento ad una query di access vera e propria, e gli viene
passato per "costruire" la query stessa.  la parametrizzazione, cioè,
avviene prima della query, avviene nella creazione della stringa sql.
puoi usare la stringa sql anche per settare un recordset, se la cosa
ti è più comoda (come penso):
dim ssql as string
dim rst as recordset
ssql = ... idem come sopra ...
set rst = currentdb.openrecordset(ssql)

 wrote in message
39ae2ca5...@news.flashnet.it...

Ti ringrazio tantissimo per il tuo impegno perche' hai fatto veramente  un
lavoro eccezionale pero' molto umilmente
ti devo dire che inserendo il tuo codice in un modulo mi da "errore di
runtime 13 tipo non corrispondente", nel debug mi evidenzia di giallo
l'ultima riga inserita "set rst = currentdb.openrecordset(ssql)"
sicuramente ho fatto qualche stupidaggine io, il codice che ho inserito e'
questo :
dim ssql as string
dim rst as recordset
oggi = Format(now, "yyyy/mm/dd")
ssql = "SELECT * FROM pippo " & _
"WHERE dataeora BETWEEN " & _
"#" & oggi & " " & inputbox("Ora inizio?") & "# And " & _
"#" & oggi & " " & inputbox("Ora fine?") & "#"
set rst = currentdb.openrecordset(ssql)
Fammi sapere qualcosa
PS: volendo mettere al posto della input box dei valori preimpostati come
intervalli di termpo per es. 09.00.00 e 09.59.00  poi 10.00.00 e 10.59.00
ancora 11.00.00 e 11.59.00 come faccio???
Grazie mille di nuovo
ciao ;-)
Gian Luigi

ancora 11.00.00 e 11.59.00 come faccio???
se vedi sull'help di inputbox trovi come fare ad impostare i valori di
default, credo sia il secondo argomento, ma non ci giurerei:
 ... & inputbox("Ora inizio?", "09:00:00") & ...
 ... & inputbox("Ora fine?", "09:59:00") & ...

 wrote in message
39af901e...@news.flashnet.it...

Ho inserito la riga ma non e' successo niente da sempre quell' errore!!!!
ciao
comunque ho controllato bene e' un campo data/ora.

Ho inserito la riga ma non e' successo niente da sempre quell' errore!!!!
quella riga non serve a correggere l'errore ma solo a vedere com'è
fatta la stringa sql che proviamo a creare.
quella riga viene eseguita?  hai aperto la finestra di debug (ctrl-G)?
cosa c'è scritto?
--
make it idiot proof and someone will make a better idiot.
--
il sito comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/