Newsgroup: it.comp.lang.visual-basic
Titolo: Solito problema date

Dico "solito problema", perchè ho visto che è stato discusso diverse volte 
ma non ne vengo fuori:
Ho un Text1.text = "01/12/2005"
e quindi vado ad eseguire la funzione format come segue:
Format("01/12/2005","dd/MM/yyyy")
mi restituisce due risultati diversi a seconda che io abbia impostato 
Windows con le date americane o italiane:
Risultato americano: 12/01/2005
Risultato italiano: 01/12/2005 'OK
Questa data deve essere successivamente scritta in un database Access con il 
seguente codice:
rsRecordSet.Fields("Data").Value = ValoreData (in che formato?: americano o 
italiano?)
ora è chiaro, penso... che per utilizzare la funzione Format devo 
preventivamente controllare le impostazioni internazionali di Windows.. 
Giusto?
Se si come si fa? altrimenti mi date qualche dritta?
Ringrazio tutti in anticipo.
LupoNero 

 Ho un Text1.text = "01/12/2005"
visto che va a finire in un DB :
Format("01/12/2005","yyyy/MM/dd")
E' una delle poche stringhe di opzioni che restituisce "sempre" Anno Mese e
Giorno.
Addirittura nel db e nel sw potresti gestirle come stringhe o numeri e
fregartene del formato data (sempre che non ne usi funzioni particolari
allora ti serve un format)
-- 
-Gigio@work-
G2k Blog : 
http://www.g2kweb.it/?3098
G2k Snip Url : 
http://www.g2kweb.it/?3015
G2k Free Gallery : 
http://www.g2kweb.it/?218

 Format("01/12/2005","yyyy/MM/dd")
No ho provato... prima vorrei chiederti conferma; la mia paurą č che con la 
riga di codice da te suggerita accada questo:
Impostazione Italiano:
Format("01/12/2005","yyyy/MM/dd") -->2005/12/01
Impostazione Americana:
Format("01/12/2005","yyyy/MM/dd") -->2005/01/12
Se cosi fosse mi trovo al punto di partenza!
Grazie
LupoNero

 con la riga di codice da te suggerita accada questo:
fai una prova al volo, apri VB e usa la finestra immediata per i test , poi
cambi le impostazioni, riavvi vb e riprovi.


 italiano?)
Se il campo "Data" è di tipo DataOra, il .Value del recordset è di tipo 
Date (beh, sottotipo, ma non sottilizziamo).
E un tipo Date *non* ha formato.
E' una data punto e basta.
Ben diverso se tu usassi una stringa Sql, perchè nel passare da un tipo 
Date a un tipo String, viene usato un formato di rappresentazione (e 
qui occorre adeguarsi alla sintassi del db).
Ma se usi un .Value, il formato è un concetto che non esiste.
Se oggi è il 22 Dicembre 2005, e tale data viene memorizzata con la 
sequenza di bit 1001010101010101001, questa sequenza è italiana, 
inglese o thailandese?
Ciao
Alberto
-- 
A questo punto hanno trovato un muro,
un muro duro, molto molto duro,
che siamo noi.

 
il tuo problema non e' l'output, soltanto, ma l'input: la stringa che tu 
passi viene convertita dalla format usando le impostazioni del SO.
La conversione da stringa a data viene eseguita usando le impostazioni 
internazionali, quindi se tu hai una stringa "01/12/2005" in un sistema 
italiano verra convertita come "gg/mm/aaaa"
mentre un sistema americano sara' interpretata "mm/dd/yyyy".
Se e' questo il problema, devi farti una tua funzione per la conversione 
  stringa->data usando la Split e mettendo il risultato in una variabile 
data, quando passi le date al database usa sempre il formato 
"yyyy/mm/dd", che e' standard.
bye
r

 standard.
Non confonderlo.
Se lui usa il .Value del recordset, non deve usare alcun formato.
E comunque il formato che citi non è standard.
Innanzitutto per Access non è standard, poi comunque l'uso di 
separatori locali non è certo standard.
Per la maggior parte dei dbms (ma non per Access), il formato sarebbe 
'yyyyMMdd hh:mm:ss.nnn'


 
bye
r

Sembra che nerone abbia detto :

Sono stato tratto in inganno dal tuo utilizzo dei doppi apici quando 
hai scritto il formato "yyyy/mm/dd".
Pensavo ti riferissi alla stringa da passare al Format come secondo 
parametro. E in questo caso ovviamente sarebbe sbagliato, in quanto la 
barra viene convertita dal Format nel separatore locale, che potrebbe 
anche essere il punto, o chissà quale altro carattere, e non sarebbe 
certamente universalmente accettato dal db.
Se invece ti riferivi al formato da inserire nella stringa Sql, per 
quanto a me non piaccia, devo riconoscere che tutti i dbms accettano 
sia la barra che il trattino.
Diciamo che, a scanso di equivoci, meglio non usarli e dormire 
tranquilli.


LupoNero ha scritto:

A me hanno consigliato di usare la funzione DateValue, non ho 
approfondito granchè ma problemi non ne ho ancora avuti. Vedi esempio ...
  rsRecordSet.Fields("Data").Value = DateValue("01/12/2005")
A dire il vero lo uso nelle stringhe SQL INSERT INTO o UPDATE ma penso 
che sia lo stesso.
Ciao