Newsgroup: it.comp.lang.visual-basic
Titolo: Curiosità, ancora su "virgola ballerina"

Ecco un altro rompicapo
Tutti noi sappiamo che una data è in realtà internamente un double (non lo
sai? allora vai a studiare! :P )
Allora ecco un problema di proprietà transitiva
? #2005/1/31 16.21.01# = cdbl(#2005/1/31 16.21.01#)
? cdbl(#2005/1/31 16.21.01#)
? #2005/1/31 16.21.01# = cdbl(38383.
6812615741
#)
ecco... notato niente di strano?
adesso questo
? #2005/1/31 16.21.01# = cdbl(38383.681261574074#)
(tra parentesi, 0.681261574074 è il cdbl() del solo orario)
Vabbeh, uno dice... non capisco ma mi adeguo.
Il problema è ad es. in Access, che a quanto pare nelle select questi
confronti sono coerenti con VB, ma nelle WHERE no (sembra che usi due
sistemi di arrotondamento differenti) quindi potrebbe darsi che
"SELECT data #" = Format(data, "yyyy/mm/dd hh.mm.ss") & "#"
restituisca True, ma
"SELECT data #" = Format(data, "yyyy/mm/dd hh.mm.ss") & "# "
"WHERE data #" = Format(data, "yyyy/mm/dd hh.mm.ss") & "#"
non restituisca nessun record.
Però funziona così, in barba a quanto detto sopra:
"SELECT data #" = Format(data, "yyyy/mm/dd hh.mm.ss") & "# "
"WHERE data " = Replace(cdbl(data), ",", ".")
Carino, vero? :)
Ciao

 "WHERE data " = Replace(cdbl(data), ",", ".")
A parte l'obbrobrio di sql irriverente a qualsiasi standard
iche ne' venuto fuori, con le impostazioni regionali come la
mettiamo?
-- 
ciao, hal

 mettiamo?
Scusa?
Ciao

 non restituisca nessun record.
C'è un operatore ribaltato, ma il senso si capisce.
E' strano. Se ho tempo guardo cosa fa Sql-Server, nella stessa situazione.
Ciao
Alberto
-- 
E tutto mi sembrava andasse bene... 

 avere ulteriori decimali non rappresentati.
sì, l'ho capito, ma se il valore è lo stesso è lo stesso che venga trattato
come double che come data.
Non so se capisci quello che voglio dire.
Ciao

 Scusa?
In realta' volevo dire che: 
1.
a parte i comandi che vanno solo su Access;
2.
a parte la scommessa della diretta corrispondenza della data
con un double che potra' anche funzionare con Access, ma non
hai garanzia per gli altri database e neanche per lo stesso
Access nel tempo da una versione all'altra; 
3.
la conversione implicita da Double a String;
4.
manca la FROM nel sql (sono pignolo, lo so ;-);
IMVVVVHO e' un codice che, senza offesa, credimi, sara' anche
comprensibile alla macchina, ma... lascio la parola alla tua
recente sign.
-- 
ciao, hal

 recente sign.
Forse non mi sono spiegato.
Sono perfettamente consapevole che quanto scritto è un'aberrazione, ma non
riesco a capire il perchè nel metodo classico non funzioni, e l'unico modo
che ho trovato funzionante è quello con data vs double.
E' più una domanda accademica che altro (beh, in realtà anche pratica, ma a
me piace anche capirle le cose).
Ciao
--
Qualunque mentecatto può scrivere codice che un computer possa capire.
I buoni programmatori scrivono codice che gli uomini possano capire.
[Martin Fowler]

 me piace anche capirle le cose).
Mi trovi perfettamente d'accordo :-)
A questo punto, ripesco la tua sign e la modifico cosi':
"Qualunque mentecatto può scrivere codice che un computer possa capire,
e, se e' bravo, puo' lavorare in Microsoft.
I buoni programmatori scrivono codice che gli uomini possano capire e,
se e' bravo, si stupisce delle 'stranezze' dei software microsoft."
-- 
ciao, hal

 e, se e' bravo, puo' lavorare in Microsoft.
Mmmmh... mi ricorda una storiella che lessi tempo fa e che faceva più o meno
così:
"
Un giorno un disoccupato andò in una delle sedi Microsoft a cercare lavoro
come inserviente.
L'addetto alla reception gli chiese l'e-mail per poterlo informare di
eventuali colloqui o possibilità di lavoro.
L'uomo rispose 'e-mail? Ma io non ce l'ho!'.
E il dipendente 'allora mi spiace ma non ci sono altre possibilità'.
L'uomo un po' sconsolato il giorno dopo decise di andare da un contadino,
comprare qualche cassetta di frutta che poi vendette ai lati di una strada.
Dopo qualche tempo ebbe abbastanza denaro da comprarsi un furgoncino.
Poi un negozio e poi una catena di negozi e divenne ricco.
Un giorno un fornitore gli chiese l'e-mail.
E lui ancora 'io non ho l'e-mail!'.
'Non hai l'e-mail? Accidenti, pensa cosa saresti oggi se tu avessi
un'indirizzo e-mail!'
'Sarei uno che passa lo straccio nei corridoi della Microsoft'
"
--
Qualunque mentecatto può scrivere codice che un computer possa capire.
I buoni programmatori scrivono codice che gli uomini possano capire.
[Martin Fowler]

 'Sarei uno che passa lo straccio nei corridoi della Microsoft'
LOL :-D
-- 
ciao, hal