Newsgroup: it.comp.lang.visual-basic
Titolo: [!] date nei database

Queste considerazioni sono state testate su vb6 sp5, utilizzando un database
access come fonte dati. Per fare una cosa completa bisognerebbe provare con
altri motori, che io non ho a disposizione. Se qualcuno si prende la briga di
completarlo, potrebbe essere pubblicato come articolo sul sito comune del ng, in
modo tale che esista un posto con tutte le informazioni necessarie,
doverosamente ignorato da tutti ;-)
<articolo>
Piccolo prontuario per il trattamento delle date nei database tramite vb6
Premessa: pare che trovare o filtrare i recordset tramite il contenuto di un
campo di tipo date/time sia una impresa difficilissima, ed in effetti il
comportamento da adottare è diverso in funzione del tipo di approccio
programmatico che si è scelto. Vedremo di affrontare la materia in modo
sistematico, affrontandone tutti i diversi aspetti.
1) Raccolta recordset filtrato all'origine, tramite clausola where
dell'istruzione sql
in questo caso la corretta sintassi per la scrittura della data è quella
definita dal particolare dialetto sql utilizzato dal particolare database a cui
ci stiamo collegando. In particolare, in access, la data deve essere racchiusa
tra i caratteri #, e all'interno di tali delimitatori può essere scritta nei
seguenti formati:
aaaa/mm/gg
aaaa-mm-gg
aaaa,mm,gg
mm/gg/aaaa
mm-gg-aaaa
mm,gg,aaaa
bisogna prestare molta attenzione a non formattare la data secondo la specifica
gg/mm/aaaa, in quanto, se la data ha un numero di giorni inferiore al tredici,
verrà interpretata dal sistema come mm/dd/aaaa. Per esempio il giorno 02/03/2003
verrà sempre interpretato come tre febbraio 2003
2) ricerca nel recordset non filtrato all'origine, tramite metodi find o filter
2.a) tramite DAO
valgono le stesse considerazioni fatte per la costruzione del comando sql
2.b) tramite ado
la data può essere inserta tra i delimitatori # o ', oppure senza alcun
delimitatore, nei seguenti formati
aaaa/mm/gg
aaaa-mm-gg
aaaa,mm,gg
gg/mm/aaaa
gg-mm-aaaa
gg,mm,aaaa
nel caso in cui si opti per uno degli ultimi tre, bisogna porre attenzione al
fatto che tale formato non è fisso, ma dipende dalle impostazioni internazionali
della macchina su cui viene eseguita l'applicazione, quindi è da utilizzare con
tutte le precauzioni del caso
</articolo>
--
Salutoni
Sergio

 
Ottimo!
Ho anche una proposta per il webmaster del SC.
E' possibile fare in modo che un certo numero di articoli del SC come 
questo o quello di LOKAR o il manifesto vengano inviati automaticamente 
al NG con una cadenza regolare, non so:
lunedi': date
martedi': problemi di installazione
mercoledi': formato di database non riconosciuto
giovedi': gnocchi
...
ciao
	maxx
-- 
NOSPAM: Rimuovere i trattini dallo username!
Cut hyphens from my username!

giovedi': gnocchi
Noooo, c'e' gia' abbastanza traffico cosi'.
Piuttosto pubblicherei sul SC questi articoli di CSSoft, Lokar, ecc.
e renderei il piu' evidenti possibili i link ad essi.
Anzi, si potrebbe fare il "link della settimana", dato che
sembra che i problemi arrivino a ondate: c'e' il periodo in cui
la gente gioca con i socket, poi con le date (be', questa e'
un'onda molto lunga), poi con gli scanner e le telecamere,
ecc. ecc.
E noi, da bravi sitocomunali, rispondiamo ai messaggi semplicemente
postando il link.
-- 
ciao, hal

 e renderei il piu' evidenti possibili i link ad essi.
Si', ovviamente intendevo postare un messaggio con il link all'articolo 
sul SC ...
Un'alternativa potrebbe essere quella di chiedere al produttore di 
niubbi di rimuovere il filtro con cui escono dalla fabbrica ... :-)


 aaaa,mm,gg
...
Non mi torna, ho provato con ADO verso Access.
Senza delimitatore a volte non segnala errore, ma non trova niente ( ho le
impostazioni in italiano con separatore - )
Il delimitatore ' non me lo accetta mai.
L'unico delimitatore che non segnala errore e restituisce quel che deve è #
???

 Non mi torna, ho provato con ADO verso Access.
ti assicuro che ho fatto tutte le prove del caso, prima di "espormi" con un
punto esclamativo come tag.
posso fare alcune ipotesi per spiegare il diverso comportamento:
1) diversa versione del jet o del mdac
2) tasso alcoolico del produttore delle librerie :-)
3) tasso alcoolico del testatore.
A parte gli scherzi, lunedì (adesso non se ne parla neanche) farò una
piccola applicazione di test, poi vedremo come và a finire
--
Salutoni
Sergio

 piccola applicazione di test, poi vedremo come vŕ a finire
Non dubito dell'attenzione che hai messo nelle verifiche, assolutamente.
Io credo (ma non ho verificato ... a mia volta) che ... il segreto stia in
quel separatore per le date ( - ) che io ho nelle mie impostazioni, odio la
/, non mi piace proprio esteticamente...

*Lupo* non ha bevuto più del solito, ma è un pirla lo stesso:
Ritiro tutto, non avevo ben letto quel
"2) ricerca nel recordset non filtrato all'origine, tramite metodi find o
filter"
e facevo le prove con normali comandi SQL.
Mi prostro in attesa delle frustate. ;-(

 
In questo caso con sql-server (forse anche con altri db se si usa ado)
si puo' usare il formato ansi standard
{ d '1990-12-31' }
{ ts '1990-12-31 00:00:00' }
-- 
Samuele Battarra
prova il mio newsreader:
http://digilander.iol.it/battarsa/programmi/news/