Problema con orario

lunedì 04 luglio 2005 - 15.03

stee85 Profilo | Senior Member

Ciao a tutti,
devo inserire nel db [sql server] un orario. Il campo in sql server è di tipo datetime.

prendo il valore da una textbox e poi la inserisco nel db solo che mi dice che il campo è out-of-range

Il codice è questo:
string inizio=txInizio.Text.Trim();
inizio=Convert.ToDateTime(inizio).ToLongTimeString();
......(altri campi)

string query="INSERT INTO Rec (RecHfr, RecHto, RecHst, RecDat, RecInv, RecInm, RecDes, RecSit, RecAnaId, RecActId, RecNot, RecRspId, RecCdcId, RecTrp) VALUES ('"+ inizio +"','"+ fine +"', '"+ pausa +"', '"+d+"', "+ Convert.ToInt32(fatt) +", '"+ tipo_fatt +"', '" + des +"', '" + luogo +"', " + Convert.ToInt32(Session["IDANA"]) + ", " + act +", '"+txNot.Text+"',"+Convert.ToInt32(rsp)+","+Convert.ToInt32(cdc)+",'"+trp+"')";
SqlCommand cmd=new SqlCommand(query,conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();

grazie mille per qualsiasi suggerimento

Andy Profilo | Senior Member

Ciao Stee..le soluzioni sono 2..o ti crei un parametro di tipo data per il tuo command (mi sembra quasi di essere monotono ^_^), che è la soluzione migliore, oppure gliela passi come stringa in questo modo:

..., '" + String.Format("{0:MM\/dd\/yyyy}", Now) + "', ..."

Andy

stee85 Profilo | Senior Member

intendi questo?
string inizio=txInizio.Text.Trim();
inizio=Convert.ToDateTime(inizio).ToString();

cmd.Parameters.Add(new SqlParameter("@inizio", SqlDbType.DateTime)).Value = inizio;

perchè mi dice sempre che il campo è out of range

Ste

Andy Profilo | Senior Member

Secondo me ti da errore perchè tenti di passare una stringa ad un parametro di tipo DateTime..

string inizio=txInizio.Text.Trim(); ' il dato è una stringa

inizio=Convert.ToDateTime(inizio).ToString();


' ma il parametro è un datetime..

cmd.Parameters.Add(new SqlParameter("@inizio", SqlDbType.DateTime)).Value = inizio;

prova a passargli il dato come datetime:

cmd.Parameters.Add(new SqlParameter("@inizio", SqlDbType.DateTime)).Value = Convert.ToDateTime(inizio)

Andy

stee85 Profilo | Senior Member

mi da sempre lo stesso errore

Ho provato
string inizio=txInizio.Text.Trim();
cmd.Parameters.Add(new SqlParameter("@inizio", SqlDbType.DateTime)).Value = Convert.ToDateTime(inizio);
ma dice:
Syntax error converting datetime from character string.

poi ho provato:
string inizio=txInizio.Text.Trim();
inizio=Convert.ToDateTime(inizio).ToLongTimeString();
cmd.Parameters.Add(new SqlParameter("@inizio", SqlDbType.DateTime)).Value = Convert.ToDateTime(inizio);
Ma mi dice:
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value. The statement has been terminated.

Boh nn capisco




Ste

Andy Profilo | Senior Member

mmm..strano..prova ad usare la funzione CDate..so che non è nuovissima, ma a me funziona..sintassi:

Data = CDate(stringa)

Andy

stee85 Profilo | Senior Member

ma in C# esiste CDate?

Ste

stee85 Profilo | Senior Member

Funziona!!!!!

string inizio=txInizio.Text.Trim();
inizio=inizio.Replace(".",":");
inizio=a+"/"+m+"/"+g+" "+inizio;
DateTime i=Convert.ToDateTime(inizio);

cmd.Parameters.Add(new SqlParameter("@inizio", SqlDbType.DateTime)).Value = i;


grazie mille

Ste

Andy Profilo | Senior Member

ehm..no, sorry.. -.-' è l'abitudine di lavorare in Vb..

Dovresti trovare il corrispondente in C#..

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