Newsgroup: it.comp.www.asp
Titolo: Problemi con gli intervalli di date in Access 2000

Salve,
devo estrarre un intervallo di date da un campo di una tabella in Access 
2000.
Uso (semplificando):
sSQL = "SELECT campo_date FROM tabella "
sSQL = sSQL & "WHERE campo_date BETWEEN #" & data1 & "# AND #" & data2 & "#"
ma non mi estrae niente.
Uso MDAC 2.8.
Ho cambiato il formato di data ma non funziona lo stesso.
Se eseguo la query in Access funziona che č una meraviglia, se incollo e 
correggo (virgolette) il codice generato da Access nello script ASP non 
funziona piů di nuovo.
Qualcuno č a conoscenza di qualche bachetto di Access?
Grazie
ciao
Giovanni 

 Grazie
Prego.
Ciao!
-- 
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo
http://italy.mvps.org
 

Ciao Lorenzo,
scusa il ritardo nel rispondere.
Li ho provati un po' tutti, ma mi risponde cicca su tutti.
Per quel che ne so, lasciando vuoto il campo nelle proprietà prende le
impostazioni internazionali del PC impostate nel Pannello di controllo,
mentre scegliendo un formato si bypassa l'impostazione di default (si
personalizza).
Comunque non credo che sia quello il problema. Io credo che il problema sia
ADO (infatti, direttamente in Access funziona tutto).
La documentazione di Access dice di usare per gli intervalli di date delle
query con gli operatori "maggiore o uguale" e "minore o uguale", ossia:
sSQL = "SELECT campo_date FROM tabella "
sSQL = sSQL & "WHERE campo_date >= #" & data1 & "# AND campo_date <= #" &
data2 & "#"
anziché l'operatore BETWEEN. Ho provato anche così, ma niente da fare (tra
l'altro, BETWEEN usa un confronto migliore degli altri per le mie esigenze
perché non considera la parte dell'ora ma solo la data nel parametro che
viene passato in input).
Di nuovo, in Access funziona tutto, con ambedue le query, quindi non ottengo
informazioni supplementari all'interno di Access perché il problema non si
manifesta.
Per quel che ne so, ADO modifica di fatto le query che gli vengono passate
in input in base al provider a cui deve passarle (non esegue conversioni
automatiche di "dialetti" SQL, ma il wrapper "aggiusta" le query secondo un
suo standard interno a seconda del provider OLE DB a cui si interfaccia.
Secondo me è questo il problema.
Forse qualcuno è a conoscenza di questo problema e magari l'ha risolto
cambiando la stringa di connessione di ADO (magari collegandosi ad una
versione più recente del Jet di Access? Ho provato anche spostare il
database in Access 2003 e a usare il codice con il suo provider, ma niente
lo stesso. Sono bloccato.
Se usassi ODBC? Che ne pensate? E' un po' più lento della connessione
diretta ma potrebbe funzionare secondo voi?
Grazie a tutti per l'interessamento
ciao Lorenzo e grazie delle risposta
Ciao
Giovanni

 ciao Lorenzo e grazie delle risposta


Ciao Lorenzo,
è tutto OK nel tuo codice perché usi l'oggetto Command e non l'oggetto 
Recordset di ADO.
Con l'oggetto Command richiami una query in Access e gli passi i parametri,
quindi è Access che lavora e anche a me funziona così.
Io invece dovrei usare l'oggetto Recordset normalmente e non capisco perché
non mi debba dare il risultato corretto.
Devo usare il Recordset perché la stringa SQL parametrizzata viene costruita
al volo pescando il codice da un'altra tabella di Access che ne contiene
varie (circa un centinaio) e vengono ripescate a seconda della pagina ASP
che la richiede. Scrivere tante query in Access quante necessarie, diventa
un problema.
ciao
Giovanni