17 messaggi dal 01 luglio 2003
Ciao a tutti,

ho il seguente problema: devo fare una query su db access che mi estragga solo i record con campo data (scad) inferiore ad oggi.
Ho provato in diversi modi:
1)
sql = "SELECT * FROM "&tablename&" WHERE scad<=#" & Now() & "# "

2)
sClausolaWhere = Day(Date()) & "/" & Month(Date()) & "/" & Year(Date())
SQL = "SELECT * FROM "&tablename&" WHERE scad <= #" & sClausolaWhere &"#"

...

ma ottengo sempre lo stesso risultato:
se metto "<=" non trova nulla mentre se metto ">=" mi visualizza tutti i record che hanno qualcosa nel campo "scad" anche se scad non è
maggiore o uguale ad oggi.
Se controllo con Datediff infatti mi da i giusti valori:
es. oggi 01/07/2003
record 1: scad 07/07/2003 -> datediff -> 6 giorni
record 2: scad 26/06/2003 -> datediff -> -5 giorni

In pratica, estrae i dati solo se metto ">" e quando stampo i dati del RS se controllo con Datediff mi da ancha valori negativi.

Come faccio ad impostare correttamente la query in modo che mi dia un RS con SOLO RISULTATI GIUSTI, cioè con "scad<=oggi" ?
11.886 messaggi dal 09 febbraio 2002
Contributi
Ricorda sempre che nelle query su access, per avere buoni risultati dovresti sempre inserire le date nel formato anglosassone
quindi nella 2) avresti dovuto fare:

sClausolaWhere = Month(Date()) & "/" & Day(Date()) & "/" & Year(Date())

Ma a parte questo, il tuo problema è semplice da risolvere perchè sembra banale ma puoi fare:

SQL = "SELECT * FROM "&tablename&" WHERE scad <= Now"

Now() è una funzione che puoi usare direttamente nella query così come altre funzioni vbscript. Esempio: voglio trovare tutti i record di 3 settimane fa?

SQL = "SELECT * FROM "&tablename&" WHERE scad >= DateAdd('ww',-3,Now)"

Vuoi un'efficace alternativa al LIKE?

SQL = "SELECT * FROM "&tablename&" WHERE Instr(nomecampo, 'parola') >0"

e così via, ricordati però che le funzioni che adoperi nelle query funzionano solo con il tipo di database che stai usando. Se usi questi esempi qui sopra con mySQL molto probabilmente non funzioneranno...

Modificato da BrightSoul il 01 luglio 2003 13.04 -

Enjoy learning and just keep making
17 messaggi dal 01 luglio 2003
Caspita, era più facile di quello che pensassi.
Avevo provato in mille modi, non sapevo che si potesse inserire NOW nella query.
Io usavo DATE
sql = "SELECT * FROM "&tablename&" WHERE scad <=" &Date
e mi dava quello stupido errore: col "<=" non mi visualizzava niente mentre col ">=" mi dava anche i risultati "<".

Grazie di cuore

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.