83 messaggi dal 17 giugno 2005
Increbile ma vero,ancora un problema con le date!
Passando in produzione ho scoperto che il server web invia a SQL server il formata della data estesa, generando un errore...

andiamo con ordine:
-l'istruzione sql usata è la seguente:
cmdAggiorna.Parameters.Add(New OleDb.OleDbParameter("@LIDATREGISTRAZIONE", OleDb.OleDbType.Date, 8, ParameterDirection.Input, True, Precisione23, Scala3, "LIDATREGISTRAZIONE", DataRowVersion.Original, DataRegistrazione.ToString("yyyy/MM/dd HH:mm:ss")))

quindi IMPONGO il formato

-nel web config ho aggiunto il tag:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="it-IT" uiCulture="it-IT"/>

..passiamo al SERVER

-il regional settings è impostata in Italiano ed è IDENTICO a quello del server di sviluppo,dove non si presenta il problema..

usando Query Analazeir ho visto che nella frase sql la data viene passata in formata estea ( 8 magg 2008 per esempio)...

Dove si OBBLIGA il server ad utilizzare il formato di data breve???
Non fare alcuna conversione alla data che invii al server. E' non solo inutile, è anche dannoso!

Scrivi:
cmdAggiorna.Parameters.Add(New OleDb.OleDbParameter("@LIDATREGISTRAZIONE", OleDb.OleDbType.Date, 8, ParameterDirection.Input, True, Precisione23, Scala3, "LIDATREGISTRAZIONE", DataRowVersion.Original,
DataRegistrazione))

Sql server memorizzerà la data nel formato corretto.

Ciao
.

Andrea Zani
Undicesimo comandamento: NON utilizzare Explorer 6
83 messaggi dal 17 giugno 2005
ci provo subito!

in realtà io normalmente uso la sintassi:

convert(datetime,'" & Now.tostring("yyyy/MM/dd HH:mm:ss") & "',102)

e non ho mai avuto problemi..ora ho usato i parametri!
Il bello dei parameter è che non ti devi preoccupare più delle varie conversioni perché saranno il framework e sql server a passarsi i parametri in modo corretto indipendentemente dai setting delle culture di uno e dell'altro

Ciao
.

Andrea Zani
Undicesimo comandamento: NON utilizzare Explorer 6
83 messaggi dal 17 giugno 2005
niente,mi ha scritto ancora la data in formato estesa..
Aspetta, allora forse ho capito male io.

Il proplema è che ti scrive la data con data-time?

Nel db la data è memorizzata nel modo corretto?

Ciao
.

Andrea Zani
Undicesimo comandamento: NON utilizzare Explorer 6
83 messaggi dal 17 giugno 2005
praticamente eseguebndo l'istruzione di insert con la data specificata con la sintasssi :

cmdAggiorna.Parameters.Add(New OleDb.OleDbParameter("@LIDATREGISTRAZIONE", OleDb.OleDbType.Date, 8, ParameterDirection.Input, True, Precisione23, Scala3, "LIDATREGISTRAZIONE", DataRowVersion.Original, DataRegistrazione))

sul server di sviluppo va bene.

Su quello di produzione mi dava errore.
Nel messagio ho gfatto scrivere a video il valore di tutti i parametri e ho visto che valorizzo bene la datacioè:

09/05/2008 13.18.20

Attivando lo strumento 'SQL Profiler' di SQL Server ho visto che nella istruzione sql compare invece il formato:

'mag 9 2008 1:18:21:000PM'
non ho capito perchè la data viene inviata a SQL server con il formato 'esteso'

PS: server web e server sql coincidono
83 messaggi dal 17 giugno 2005
fermi tutti!

il troncamento era su un altro cmapo, il trace di sql server mi aveva sviato non so perchè mi mostrava la data in quel formato ma usando il paramameter senza fare conversione sulla variabili datetime funziona tutto..per la serie ' quando usi gli strumenti giusti !' grazie lo stesso scusa se ti ho fatto perdere tempo.

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.
Community
Ultimi messaggi
UTENTI ONLINE
    In primo piano

    I più letti di oggi

    Media
    In evidenza
    MISC