14 messaggi dal 13 novembre 2006
Buongiorno a Tutti.
In un DB Access ho una tabella che contiene un campo tipo Data/ora. Orbene, sul mio PC locale tutto funziona bene ma, dopo la pubblicazione, sul sito remoto la data mi viene scritta in formato USA con la conseguenza che il mio 2 Marzo mi viene visualizzato, dopo la registrazione, in 3 Febbraio.
Ho posizionato la Culture sia sulla pagina che sul Web.Config.
Ho passato la stringa di formattazione (dd/MM/yyyy).
Nulla di tutto questo ha effetto.
Esiste un modo per forzare la scrittura della data in un formato differente anche su un DB appartenente ad un ambiente (quello del Provider) settato sul formato USA?
Grazie per i suggerimenti.
Roberto
VB.NET / Access
637 messaggi dal 12 agosto 2005
Dove hai messo la stringa di formato? Nella fase di inserimento nel DB o in fase di visualizzazione?

Posta un po' di codice, così vediamo.
13 messaggi dal 24 marzo 2006
Ho avuto lo stesso problema però con un database SqlServer (non solo relativamente alle date ma anche con il separatore dei decimali), e l'ho risolto aggiungendo alla stringa di connessione la proprietà "Language=Italian" nel Web.Config.

Purtroppo non so se per la connessione ad un database Access esiste una proprietà analoga.
14 messaggi dal 13 novembre 2006
Ciao r.chiodaroli,

grazie per la risposta e l’interessamento.

Ti elenco il codice coinvolto per la scrittura della data. Mi lascia perplesso il fatto che, a parità di codice, la data viene scritta invertendo il giorno ed il mese se lavoro sul DB locale di sviluppo o sul server a regime.

Ho scaricato il DB dal server ed ho controllato il contenuto del campo in questione.
Quindi, deduco, sia una opzione che riguarda la globalizzazione legata alla lingua.

La variabile ST, prima della scrittura, contiene il valore corretto da scrivere quindi e’ proprio Access che imposta le proprietà del campo tipo Data/ora secondo la lingua.



Intestazione Pagina
<%@ Page Language="VB" Culture="it-IT" UICulture="it" %>

Dichiarazione ed associazione
Dim ST As Date = Format(CType(FormView1.FindControl("dtpicker"),_ DateandTimePicker).selectedDateTime, "dd/MM/yyyy HH.mm.ss")

Costruzione stringa di inserimento
Dim insertString As String = "INSERT INTO Tabella " & _
"(ID,StartTime ... VALUES ('" & Codx & "','" & ST ...

Lettura ed esposizione
<p>
<asp:Label Text='<%# Eval("StartTime","{0:f}") %>' runat="server" ID="Label2" />
</p>


Grazie per ogni idea al riguardo.

Roberto
637 messaggi dal 12 agosto 2005
Robertoxy ha scritto:
Lettura ed esposizione
<p>
<asp:Label Text='<%# Eval("StartTime","{0:f}") %>' runat="server" ID="Label2" />
</p>


Il problema è qui. In questo caso usi "{0:f}" che è un formato predefito, dipendente dalla cultura. A volte (spesso) il runtime non imposta correttamente la cultura del thread che esegue le pagine, ed utilizza quella di default del sistema.

Prova a cambiare con Eval("StartTime").ToString("dd/MM/yyyy HH:mm:ss").

Hope this helps.
14 messaggi dal 13 novembre 2006
Ciao a Tutti.
Mi rispondo da solo per la soluzione al problema proposto.
Il formato generico (O:f) l'avevo gia sostituito con vari formati. Quello che non capivo era perche' sul DB locale mi scriveva la data nel formato corretto e poi sul DB del Provider, le stesse istruzioni provocavano una scrittura invertita.
Evidentemente il problema risiedeva a monte cioè nella fase di scrittura. E, piu' ci pensavo e più attribuivo ad Access questa trasformazione.
Poi ho scoperto l'arcano. Il tutto è da attribuire alla OleDB che viene utilizzata nella costruzione dellve varie stringhe di comando del DB.
Orbene, per far funzionare il tutto correttamente occore, necessariamente, ricorrere all'utilizzo dei parametri e "passare" il parametro:

Cmd.Parameters.Add("@p1",OleDB.OleDbType.Date).Value = ST
dove ST contiene la mia data.

Con questa metodica il funzionamento risulta corretto sia in locale che in remoto.

Grazie a chi mi ha risposto e... alla prossima
Roberto

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.