Visual Basic.NET - Insertar campos vacios de un datagridview en un campo DateTime de una tabla en sql

 
Vista:
sin imagen de perfil

Insertar campos vacios de un datagridview en un campo DateTime de una tabla en sql

Publicado por Davis (2 intervenciones) el 09/08/2016 20:08:41
Hola Buenas Tardes

Antes que nada un agradecimiento por tomarse el tiempo de leer.

Les comento, llevo dias batallando con un problema que presento al momento de querer insertar registros de un datagridview a una tabla de sql, ya que en este datagridview existen campos de fechas en los cuales algunos no tienen datos y al momento de realizar la insercción a la tabla en sql, no me deja por esos campos vacios. Los campos son: Checada_Entrada, Checada_SalidaC, Checada_EntradaC y Checada_Salida. Si defino estos campos en la BD como nvarchar y en la insercción realizo el Convert.ToString si me guarda los registros sin problemas, pero yo necesito guardarlos en tipo DateTime para realizar operaciones posteriores.

Si alguien pudiera orientarme, para saber que estoy haciendo mal o que tipo de función u otra opción podria aplicar, les agradeceria el dato.

Este es un extracto de mi codigo de insercción

Dim insert As SqlCommand = New SqlCommand("insert into Datos_Reloj values (@Clave_Empleado, @Checada_Entrada,@Checada_SalidaC,@Checada_EntradaC, @Checada_Salida, @Fecha_Inicio, @Fecha_Termino)", conexion)
Try
Dim fila As DataGridViewRow = New DataGridViewRow()
For Each fila In DGridImportar.Rows

insert.Parameters.Clear()
insert.Parameters.AddWithValue("@Clave_Empleado", Convert.ToString(fila.Cells("Clave empleado").Value))
insert.Parameters.AddWithValue("@Checada_Entrada", Convert.ToDateTime(fila.Cells("Checada entrada").Value))
insert.Parameters.AddWithValue("@Checada_SalidaC", Convert.ToDateTime(fila.Cells("Checada al salir de comer").Value))
insert.Parameters.AddWithValue("@Checada_EntradaC", Convert.ToDateTime(fila.Cells("Checada entrar a comer").Value))
insert.Parameters.AddWithValue("@Checada_Salida", Convert.ToDateTime(fila.Cells("Checada salida").Value))
insert.Parameters.AddWithValue("@Fecha_Inicio", TxtFechaImportar1.Text)
insert.Parameters.AddWithValue("@Fecha_Termino", TxtFechaImportar2.Text)
insert.ExecuteNonQuery()
Next
MsgBox("Datos agregados correctamente", MsgBoxStyle.Information, "Operación Exitosa")
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
sin imagen de perfil
Val: 481
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Insertar campos vacios de un datagridview en un campo DateTime de una tabla en sql

Publicado por Miguel (476 intervenciones) el 10/08/2016 00:15:24
Hola,
¿Y si haces una validación antes de agregar el parámetro, es decir, una sentencia "If" para verificar si tiene valor, y en caso contrario le agregas el valor default?...
Si utilizas valores varchar para esos campos luego los puedes convertir a DateTime, sólo verificas si tiene valor y lo conviertes.


Saludos
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

Insertar campos vacios de un datagridview en un campo DateTime de una tabla en sql

Publicado por Davis (2 intervenciones) el 10/08/2016 16:43:01
Hola Miguel

Muchas gracias por tu tiempo y por tu respuesta, estuve investigando en cuanto a validar con un if si es nulo o tiene valor e intente con esta sentencia y me arroja error:

insert.Parameters.AddWithValue("@Checada_Entrada", If(fila.Cells("Checada entrada").Value = DBNull.Value, DateTime.Now, Convert.ToDateTime(fila.Cells("Checada entrada").Value))) 'me dice que el operador = no es valido para el tipo 'Object' o 'System.DBNull'

Si no es molestia, ¿sera que puedas ilustrarme en que me estoy equivocando?

De antemano 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
Imágen de perfil de Wilfredo Patricio Castillo
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Insertar campos vacios de un datagridview en un campo DateTime de una tabla en sql

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 10/08/2016 19:34:16
Para agregar datos a una tabla con campos date, se debe definir el campo de tipo date y permitir valores nulos.

Ahora desde la aplicación si lo tienes en un datagridview, verifica que el valor de una determinada celda sea==null o =="" con lo cual, asignas null, en ese campo, con eso te quedarán datos en los campos que lleven datos y en los que no tienen datos, tendrá NULL, para recuerar los registros, deberás comprobar si viene DBNull, y asignas null a la aplicación.

En el datagridview, no puedes comparar DBNull, ya que un DBNull, es cuando viene de una base de datos, así que en el datagridview debes comparar contra null o "", según sea el caso.

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