C sharp - Guardar Fechas desde C# a Sql Server

 
Vista:
sin imagen de perfil
Val: 16
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Guardar Fechas desde C# a Sql Server

Publicado por Fabian (11 intervenciones) el 15/12/2018 17:40:50
Buen día para todos, espero se encuentren bien...

Bueno, pues tengo un inconveniente con una aplicación que estoy diseñando en Visual Studio 2012 .Net en lenguaje C# con conexión a SQL Server 2005.

El inconveniente que tengo es al momento de guardar fechas ya que me arroja un error "Error de conversión al convertir una cadena de caracteres a datetime".

Tengo un monthCalendar y un dateTimePicker en C# y en SQL Server los campos son HosrDisp, HorFecha y HorFechaCita de tipo de datos DateTime.

Lo que requiero es que HorFechaCita y HorFecha guarde solo la fecha sin horas y HorDisp guarde solo la hora en que yo grabo mi registro, es decir la hora actual.


El código que uso es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
con.Open();
 
string HorEstado = "A";
string HorDisp = textBox98.Text;
string HorUsr = textBox51.Text;
string HorFecha = textBox97.Text;
string HorTipoDoc = comboBox3.Text;
string HorDoc = textBox1.Text;
DateTime HorFechaCita = dateTimePicker1.Value.Date;
string HorHoraCita = textBox9.Text;
string HorEspecialidad = comboBox4.Text;
string HorProfesional = comboBox1.Text;
string HorCia = textBox3.Text;
string HorCenMed = comboBox2.Text;
string HorBod = textBox5.Text;
string HorRegMed = textBox6.Text;
string HorImpPac = textBox2.Text;
string HorImpTel = textBox96.Text;
string HorCod = textBox75.Text;
string Hor1 = textBox2.Text;
 
SqlCommand cmd = new SqlCommand(@"Insert into Horario (HorEstado, HorDisp, HorUsr, HorFecha, HorTipoDoc, HorDoc, HorFechaCita, HorHoraCita, HorEspecialidad, HorProfesional, HorCia, HorCenMed, HorBod, HorRegMed, HorImpPac, HorImpTel, HorCod, Hor1) values (@param1 , @param2 , @param3 , @param4 , @param5 , @param6 , @param7 , @param8 , @param9 , @param10 , @param11 , @param12 , @param13 , @param14 , @param15 , @param16 , @param17 , @param18)",con);
 
 
    cmd.Parameters.AddWithValue("@param1", HorEstado);
    cmd.Parameters.Add(new SqlParameter("@param2", SqlDbType.DateTime)).Value = textBox98.Text;
    cmd.Parameters.AddWithValue("@param3", HorUsr);
    cmd.Parameters.Add(new SqlParameter("@param4", SqlDbType.DateTime)).Value = textBox97.Text;
    cmd.Parameters.AddWithValue("@param5", HorTipoDoc);
    cmd.Parameters.AddWithValue("@param6", HorDoc);
    cmd.Parameters.Add(new SqlParameter("@param7", SqlDbType.DateTime)).Value = dateTimePicker1.Value.Date;
    cmd.Parameters.AddWithValue("@param8", HorHoraCita);
    cmd.Parameters.AddWithValue("@param9", HorEspecialidad);
    cmd.Parameters.AddWithValue("@param10", HorProfesional);
    cmd.Parameters.AddWithValue("@param11", HorCia);
    cmd.Parameters.AddWithValue("@param12", HorCenMed);
    cmd.Parameters.AddWithValue("@param13", HorBod);
    cmd.Parameters.AddWithValue("@param14", HorRegMed);
    cmd.Parameters.AddWithValue("@param15", HorImpPac);
    cmd.Parameters.AddWithValue("@param16", HorImpTel);
    cmd.Parameters.AddWithValue("@param17", HorCod);
    cmd.Parameters.AddWithValue("@param18", Hor1);
 
    cmd.ExecuteNonQuery();
 
MessageBox.Show("Cita asignada correctamente");

Requiero guardar las fechas bien sea desde el monthCalendar o dateTimePicker no importa pero que sirva. No he dado con una solución efectiva siempre me arroja el mismo error. Haciendo la prueba quitando el parametro 7 del datetimepicker si guarda, pero al colocar este no me funciona.

Les agradezco si alguien me puede colaborar. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Wilfredo Patricio Castillo
Val: 707
Oro
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Guardar Fechas desde C# a Sql Server

Publicado por Wilfredo Patricio Castillo (416 intervenciones) el 15/12/2018 18:26:31
Hola Fabián

Si quieres guardar solo fecha en sql server, debes definir tu campo con tipo de datos Date y NO datetime, solo DATE, para hora debes definir el campo con tipo de datos TIME.

Además estás tratando de meter un string en un parámetro que necesita un tipo de datos hora (horacita), si aún así lo quieres meter al menos castealo al tipo de dato datetime.

El problema es que esos tipos de datos están disponibles a partir de SQ Server 2008.

Lo que te recomiendo, es que te subas de versión, la versión 2005 ya quedó obsoleta.

Te recomodiendo usar SQL Server 2017, la edición Express podría servirte y es gratuita.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 16
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Guardar Fechas desde C# a Sql Server

Publicado por Fabian (11 intervenciones) el 17/12/2018 03:16:42
Hola te agradezco la respuesta, pero ya encontré la forma de guardar lo que requiero solamente cambie la forma de definir la variable HorFechaCita de la siguiente manera y todo funciono OK también funciona para hora

1
2
3
DateTime HorFechaCita = Convert.ToDateTime(dateTimePicker1.Value.Date.ToString("dd-MM-yyyy"));
 
DateTime HorHoraCita = Convert.ToDateTime(dateTimePicker1.Value.Date.ToString("HH:mm tt"));

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar