Newsgroup: it.comp.lang.visual-basic
Titolo: [?]Date nelle query

So che la domanda e' stata ripetuta piu' volte, ma il comportamento
diverso dei programmi che ho realizzato sembra cambiare di settimana in
settimana e quindi ...
Quando in una query con DAO 3.51 e un database tipo access mi serve fare
una selezione su un periodo ho sempre fatto cosi':
Select * from tabella where data>#03/21/2000#   
ed ha sempre funzionato senza alcun problema. Da qualche tempo (il 13
gennaio forse ricordate erano cominciati alcuni threads sull'argomento)
non e' piu' cosi': 
se uso il formato della data all'americana la query non funziona, ovvero
mi riporta un risultato errato per tutte le date ambigue 21 marzo non e'
ambigua, ma se la data e'... ambigua ...
Vorrei capire se esiste una regola che mi sono perso. Un tempo le date
scritte tra # # non dovevano essere in inglese?
Devo riscrivermi tutti i programmi che facevano questa assunzione?
Perche' alcuni programmi gia' installati funzionano correttamente ed
altri no?
Dipende dalla versione delle librerie di accesso al database? E se si'
perche' mai e' stato deciso di cambiare il comportamento delle funzioni
per le date? (Quest'ultima temo sia una domanda retorica ;-(
Esiste un metodo per evitare questa confusione? Alcuni miei programmi
non girano solo su pc italiani e quindi le impostazioni nostrane non
sempre vanno bene. C'e' una funzione che sia compatibile sia per vb che
per le altre librerie utilizzate da VB?
grazie
	maxx
 
P.S. C'e' un modo per sapere quale e' il formato riconosciuto come
corretto per le date? Non mi rispondete che c'e' scritto nello help
perche' ...
P.P.S. Da "Scrittura di codice Visual Basic per l'utilizzo a livello
internazionale
Data
In Visual Basic è necessario evitare di digitare le date in forma di
stringhe all'interno del codice. L'immissione all'interno del codice
delle date nel formato #mese/giorno/anno# ne garantisce una corretta
interpretazione in qualsiasi impostazione internazionale del sistema.
Poiché con Visual Basic è possibile utilizzare solo Inglese/Stati Uniti
come impostazione internazionale per la programmazione, la data sarà la
stessa, indipendentemente dall'ambiente in cui viene eseguito il
codice."

ambigua, ma se la data e'... ambigua ...
Potrebbe essere il millenium bug, hai provato a vedere sul sito ms o
installare i vari service pack?
Cmq la data deve essere nel formato mm/gg/aa quando si fanno le query.
I problemi possono sorgere con le date che l'utente inserisce, se e'
italiano le mette come gg/mm/aa e il programma deve convertirle prima di
usarle, se l'utente e' inglese le mette in mm/gg/aa e il programma non deve
convertirle.
Salve
                Dbg

 convertirle.
Il problema e' che lo stesso codice, compilato in tempi successivi ed
installato su pc diversi o semplicemente lo stesso pacchetto installato
in tempi diversi danno risultati diversi.
Da qualche mese mi ritrovo con segnalazioni di  errori o inesattezze
nelle query e routine collegate , ma facendo un controllo con utenti
diversi dello stesso programma di errori non ne riscontro!
Io  credo che qualche dll di database sia stata ultimamente modificata
per quanto riguarda le date.
Suggerisco di fare questa prova:
In visual data manager io provo a fare la seguente query:
"Select * from tabella WHERE data>#03/01/2001#" mi apsetto che mi
vengano restituiti tutti i records con data successiva al primo marzo
2001.
In realta' mi vengono restituiti i records successivi al 3 gennaio 2001
!!!!! 
La data viene cioe' interpretata tenendo conto del formato preimpostato
di win (o di qualcos'altro)
I miei utenti insersicono sempre le date nel formato gg/mm/yyyy e sono
io che nel codice trasformo in #mm/dd/yyyy# !!!!
Se poteste fare dei test in VDM pper verificare quanto dico mi fareste
una cortesia.
Uso VB6 SP4 e database di tipo access 97
grazie
	maxx

di win (o di qualcos'altro)
Beh fai presto a fare la prova, vai nelle impostazioni internazionali, cambi
il formato della data, riavvi e provi.
Salve
                Dbg

 Poiché con Visual Basic è possibile utilizzare solo Inglese/Stati Uniti
come impostazione internazionale per la programmazione, la data sarà la
stessa, indipendentemente dall'ambiente in cui viene eseguito il codice."
E allora?
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

 E allora?
Lo ha scritto Bill, mica io!!
ciao
	maxx

 Lo ha scritto Bill, mica io!!
:-)
La mia idea e` che se si scrive:
    "Select * from tabella where data>" _
        & "#" & Format$(dtmData, "mm/dd/yyyy") & "#"
ottenendo il valore:
    Select * from tabella where data>#03/21/2000#
non si hanno problemi. Se invece ve ne sono prego di informare il ng
fornendo tutte le informazioni necessarie per riprodurre l'errore. Grazie.


collisione col fragile dbg, e poi ci sei tu e questa storia che in realta`
]zac[

 Spiegazioni precise le posso dare solo in privato.
mailto:
maurizio...@freepass.it


Purtroppo per il mio orgoglio mi sono accorto di essere una pippa!
Nella query il problema non era la data ma un altro campo.
Ritiro tutto e taccio, meditando ancora sulla stesura del "Manuale del
cattivo programmatore"
grazie per avermi riportato sulla retta via :-)
ciao
	maxx

 grazie per avermi riportato sulla retta via :-)
:-))


 
Ad averla saputa ai tempi del liceo sarebbe stata un'ottima citazione
per non rispondere a qualche domanda, non so, sulla poetica dell'Ariosto
;-)
ciao
	maxx

 ;-)
:-)


 cose!?!...
L'accento e' sulla prima sillaba! E' di origine crucca. Forse non sono
scusato comunque, ma ... 
E siamo ormai molto OT ...
ciao
	maxx