Newsgroup: it.comp.lang.visual-basic
Titolo: Formato data

Ho un problema con l'inserimento dei campi data in un database access. Il
problema e' che mi scrive le date nel formato americano mm/dd/yyyy se dd <
12 nel formato italiano in caso contrario. Questo fatto mi fa' saltare tutti
i confronti.
Ho provato diverse soluzioni anche a passarli la data come stringa usando
questo codice:
Dim start As String = data.Day & "/" & data.Month & "/" & data.Year & " " &
data.Hour & ":" & data.minutes & ":" & data.second
Me non e' cambiato niente.
Qualcuno puo' aiutarmi?
Grazie in anticipo

 Qualcuno puo' aiutarmi?
solo se prima ti (e ci) chiarisci le idee
-- 
ciao, hal

 solo se prima ti (e ci) chiarisci le idee
A cui puo essere utile in una prima fase una ricerca con Google ?!
L'argomento DATA penso sia stato tra i più trattati in assoluto.
-- 
Gulp
....forse mi sono perso qualcosa ! 

 ciao, hal
Ciao

 La varibile data e' di tipo Date. 
vedi? confronti mele con pere ;-)
stai concatenando una String (la variabile che contiene la SELECT) con una
Date.
un compilatore serio ti fermerebbe, invece visual basic che fa? 
converte automaticamente di nascosto la tua Date in String  secondo quanto
impostato nel pannello di controllo.
devi provvedere a convertire tu esplicitamente da Date a String:
' da qualche parte c'e` un
' Dim data As Date
sql = "SELECT data" & vbNewLine & _
	"FROM Table1" & vbNewLine & _
	"WHERE UserID=" & id & _
	" and data < #" & Format$(data, "MM/DD/YYYY") & "# " & _
	" and eseguita = false"
Nota anche che ho impostato esplicitamente il FALSE.
A seconda delle macchine VB trasforma TRUE nella stringa VERO e FALSE
nella stringa FALSO, causando altri problemi.
-- 
ciao, hal

 ciao, hal
Ciao

Ho detto che funziona troppo presto.
Le date me le inserische corrette, ma quando devo andate a leggerle non
funziona.
Continua a confondere i mesi con i giorni. Anche usando la query che hai
suggerito la cosa non cambia:
sql = "SELECT data" & vbNewLine & _
"FROM Table1" & vbNewLine & _
"WHERE UserID=" & id & _
" and data < #" & Format$(data, "MM/DD/YYYY") & "# " & _
" and eseguita = false"
Ho provato anche ad estrarre tutti record e a convertirli in date con
convert.todatetime e poi a confrontarli prima unsando compareto poi
somponendo la data in mese giorno anno e fare il confronto con vari if, ma
il risultato e' lo stesso.
L'ultima cosa che posso fare e' convertirlo in stringa.
Non esiste una soluzione migliore?

 Ho detto che funziona troppo presto.
Lo sapevo gia`: ho letto la tua precedente risposta ;-)

ma quale database stai usando? avevo capito access (poiche` mi parlavi
del carattere '#') ma quel convert.todatetime mi fa capire che stai
confondendo l'SQL (di quale db?) con il linguaggio di programmazione.
vogliamo accettare, una volta per tutte, che, con un linguaggio debolmente
tipizzato come visual basic, dobbiamo essere noi a pilotare le conversioni
di dato?
supponiamo sia sql server:
-- estrazione dei record di questo anno
SELECT campo1, campo2
FROM nometabella
-- uso il formato ODBC canonico per la data
-- funziona con tutti i db seri
WHERE campodata >= '2006-01-01'
-- inserisco un record nuovo per il 31 maggio
INSERT INTO nometabella
(campo1, campo2, campodata)
VALUES ('sono il campo1', 'sono il campo2', '2006-05-31')
oppure per oggi
INSERT INTO nometabella
(campo1, campo2, campodata)
VALUES ('sono il campo1', 'sono il campo2', GETDATE())
stabilito questo, nella costruzione dell'SQL devi concatenare sempre e 
soltanto stringhe in modo esplicito:  se si sa cosa si sta facendo, ti
garantisco che funziona sempre.
Posta il codice che non ti funziona, perche` ne abbiamo gia` parlato
anche troppo.
-- 
ciao, hal


Ciao e grazie per la pazienza

 Adesso le date nel database sono nel formato DD/MM/YYYY
il "formato" che dici tu e` solo in visualizzazione, Date e` un tipo binario,
non confonderlo con la sua rappresentazione a video: una cosa e` l'informazione
ed un'altra e` come viene rappresentata.
fai conto di essere ad un semaforo.
potresti vedere una singola luce rossa oppure una scritta "stop" o "alt"
l'informazione e` che devi fermarti, la sua rappresentazione e` la luce oppure
la scritta. la rappresentazione cambia (stringa), ma l'informazione e` sempre la 
stessa (data).
-- 
ciao, hal