Conversione date

martedì 09 novembre 2010 - 15.38

mauri1961 Profilo | Senior Member

Durante l'esecuzione di una insert di un record in un database sqlserver mi segnala questo errore:

conversion failed after converting date and/or time from character string.

Questo errore mi viene segnalato utilizzando la procedura sul server web che ha una versione di sqlserver 2008 in inglese.
Nella versione locale dove sql server è in italiano il programma funziona correttamente.

i campi che utilizzo come data sono tre definiti come "date" e sul server si presentano aaaa-mm-gg (come in locale).

I campi del form sono due date (gg/mm/aaaa) definite come text ed uno SelectedDate.ToShortDateString.

La insert è la seguente

"insert into notifiche_01(not_comunicazione, not_opera, not_indirizzo, not_localita, not_committente, not_comm_cf, not_responsabile, not_resp_cf, not_coord1, not_cor1_cf, not_inizio, not_fine, not_impresa, not_impr_cf, not_comune, not_importo)" & _
"values ('" & comunica.SelectedDate.ToShortDateString & "', '" & ubicazione.Text & "', '" & indirizzo.Text & "', '" & comune.SelectedValue & "', '" & committente.Text & "', '" & comm_cf.Text & "', '" & responsabile.Text & "', '" & resp_cf.Text & "', '" & coordinatore.Text & "', '" & coord_cf.Text & "', '" & dataini.Text & "', '" & datafin.Text & "', '" & impresa.SelectedValue & "', '" & partitaiva.Text & "', '" & comunesede.Text & "', '" & CInt(importo.Text) & "')"

Ho grossi dubbi sulla corretta formattazione dei campi ed immagino che l'errore stia nella diversa versione (con il db in italiano funziona), ma non conosco le istruzioni per poter convertire il tutto.


Grazie, Maurizio

paoval72 Profilo | Senior Member

Ciao, purtroppo le date in Sql sono sempre "brutte bestie".
Puoi provare così:
comunica.SelectedDate.ToString("yyyy/MM/dd")

Dimmi se funziona.

Ciao,
PV

mauri1961 Profilo | Senior Member

Ho provato con la modifica che mi hai inviato ma nessun risultato...

Grazie, Maurizio

paoval72 Profilo | Senior Member

Scusa, avevo dimenticato la formattazione del separatore!
In SQL vuole il trattino. Prova come prima, ma col trattino :
comunica.SelectedDate.ToString("yyyy-MM-dd")


PV

mauri1961 Profilo | Senior Member

ho provato, ma anche con i trattini non c'è niente da fare. Non vorrei che si trattasse delle altre due date quelle che inputo come campi text (peraltro controllate nella digitazione gg/mm/aaaa). La cosa strana è che sul database sul server le date dei record esistenti (trasferiti dal locale) sono corrette yyyy-mm-dd ma, come dicevo, nella versione inglese presente sul server remoto non funziona mentre in locale funziona tranquillamente.
Cmq ora il codice si presenta in questo modo ora:

If operazione.Text = "INSERIMENTO" Then
strsql = "insert into notifiche_01(not_comunicazione, not_opera, not_indirizzo, not_localita, not_committente, not_comm_cf, not_responsabile, not_resp_cf, not_coord1, not_cor1_cf, not_inizio, not_fine, not_impresa, not_impresa_noniscritta, not_impr_cf, not_comune, not_importo)" & _
"values ('" & comunica.SelectedDate.ToString("yyyy-MM-dd") & "', '" & ubicazione.Text & "', '" & indirizzo.Text & "', '" & comune.SelectedValue & "', '" & committente.Text & "', '" & comm_cf.Text & "', '" & responsabile.Text & "', '" & resp_cf.Text & "', '" & coordinatore.Text & "', '" & coord_cf.Text & "', '" & dataini.Text & "', '" & datafin.Text & "', '" & impresa.SelectedValue & "', '" & impresanoniscritta.Text & "', '" & partitaiva.Text & "', '" & comunesede.Text & "', '" & CInt(importo.Text) & "')"
strdiv = "RECORD INSERITO CORRETTAMENTE <br /><a href='PAGEINI2.aspx'>CLICCARE QUI PER TORNARE AL MENU</a>"
End If
...come dicevo non è possibile che il problema si presneti nelle date datafin e dataini ?

Sempre grazie, Maurizio


p.s. c'è un altro thread con un secondo problema....se hai voglia e tempo...

sankyu Profilo | Senior Member

controlla la lingua di connessione dell'utente di sql server e risolvi il problema!! anche se hai sql server in inglese setta la lingua del database in italiano così se ti va in prova sul tuo pc con sql in italiano ti andrà anche in inglese
Oppure usa il formato universale di input
'yyyymmdd'

quindi non 'yyyy-MM-dd' ma 'yyyymmdd' quando fai il toString della variabile date

Consulente e Sviluppatore .net in ambito finanziario
Dai un occhio al mio blog potrebbe tornarti utile
http://dotnetmemo.blogspot.com

mauri1961 Profilo | Senior Member

funziona !!!! grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5