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???
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
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
.
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!
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
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
.
83 messaggi dal 17 giugno 2005
niente,mi ha scritto ancora la data in formato estesa..
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
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
.
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.