Data e ora

lunedì 24 gennaio 2011 - 18.33
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Windows XP  |  Visual Studio 2008  |  SQL Server 2005

Zagor60 Profilo | Junior Member

Salve,
ho un campo con data e ora (es. 25/01/2010 18.00) formattato in una tabella come tipo "datetime" , quando salvo i dati in una stored procedure, mi viene dato il seguente errore "Errore durante la conversione del tipo di dati da nvarchar a datetime" .
Come deve essere convertito nella stored?
Gli altri compi che hanno solo la data funzionano normalmente.

alx_81 Profilo | Guru

>Salve,
ciao

>ho un campo con data e ora (es. 25/01/2010 18.00) formattato
>in una tabella come tipo "datetime" , quando salvo i dati in
>una stored procedure, mi viene dato il seguente errore "Errore
>durante la conversione del tipo di dati da nvarchar a datetime".
>Come deve essere convertito nella stored?
il parametro della stored procedure di che tipo è? Spero datetime.
Chi passa il dato alla chiamata? Sei in .net? Usi quindi ado.net?
di che tipo è la variabile che mappa il parametro?
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

Zagor60 Profilo | Junior Member


Ciao
Esatto nella store è datetime, uso vb.net e uso la stringa sqlconnection
di che tipo è la variabile che mappa il parametro? non capisco puoi formularmi la domanda in altra maniera?

lbenaglia Profilo | Guru

>Esatto nella store è datetime, uso vb.net e uso la stringa sqlconnection
>di che tipo è la variabile che mappa il parametro? non capisco
>puoi formularmi la domanda in altra maniera?

Se il parametro di input della stored procedure è datetime, allora quando definisci l'oggetto SqlCommand parametrico dovresti definire il parametro con quel data type (sempre che tu stia utilizzando tale oggetto ).
Qui trovi iun esempio di codice di Andrea Zani:
http://groups.google.com/group/microsoft.public.it.dotnet.asp/msg/fe79b908b3a469b7

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

alx_81 Profilo | Guru

>Esatto nella store è datetime, uso vb.net e uso la stringa sqlconnection
>di che tipo è la variabile che mappa il parametro? non capisco
>puoi formularmi la domanda in altra maniera?
ok, pubblica la parte della dichiarazione del parametro.
Se non fai uso della collection parameters ma concateni le stringhe stai sbagliando approccio per due motivi fondamentali:
- incorri in attacchi di tipo sql injection
- non usi le query parametriche e quindi sei legato al formato delle stringhe, cosa non buona quando puoi usare i data type corretti

Detto questo, dovresti seguire l'esempio proposto da Lorenzo nel post precedente, ma non usare quel metodo che sarà presto obsoleto.
Utilizza invece il metodo AddWithValue:
http://msdn.microsoft.com/it-it/library/system.data.sqlclient.sqlparametercollection.addwithvalue.aspx

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

Zagor60 Profilo | Junior Member

Salve,
Risolto il problema così:
Classe formattazione
Case TipoFor.Data 'Data
Return DateTime.Parse(valore).ToString("dd/MM/yyyy")
Case TipoFor.datatime 'DataTime
Return DateTime.Parse(valore).ToString("dd/MM/yyyy HH.mm")
--------------------------------------
di seguito parte dei dati in vb da inserire nella stored: PRIMA
txtdataInizio.Text = Formatta(txtdataInizio.Text, TipoFor.datatime)
cmdins.Parameters.AddWithValue("@data_inizio", txtdataInizio.Text).

DOPO:
txtdataInizio.Text = Formatta(txtdataInizio.Text, TipoFor.datatime)
cmdins.Parameters.AddWithValue("@data_inizio", cdate(txtdataInizio.Text)) <---- mettendo CDate


-----------------------
di seguito parte della stored in sql server:
@data_inizio datetime ,


INSERT INTO TABVIAGGI
[data_inizio]......
VALUES @data_inizio....

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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5