CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 Llenar Un Datagridview Con Una Consulta De Fechas

(1/1)

robbie110487:
Hola a todos, hasta ahora no habia batallado para rellenar los datagridview, pero esta vez me ha dado mas de un dolor de cabeza.

Tengo una función para rellenar los datagridview, la cual la pongo en un modulo:

--- Código: Text ---Public Sub CargarRegistros(ByVal sql As String, ByVal dv As DataGridView)        Try            AdaptadorSql = New SqlDataAdapter(sql, cs)            Dim cb As New SqlCommandBuilder(AdaptadorSql)             Dim dt As New DataTable             AdaptadorSql.Fill(dt)             bs.DataSource = dt             dv.Refresh()            dv.FirstDisplayedScrollingRowIndex = bs.Position         Catch ex As SqlException            MsgBox(ex.Message, MsgBoxStyle.Critical, "ERROR CAPTURADO SQLEXCEPTION")        Catch ex As Exception            MsgBox(ex.Message, MsgBoxStyle.Critical, "ERROR")        End Try 
En otro form utilizo dos datetimepicker para pedir las fechas, y el codigo de ejecucion para llenar el gridview es:
--- Código: Text ---Private Sub cmdBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBuscar.Click        Dim sql As String        Dim fecha1 As String        Dim fecha2 As String        fecha1 = dtpDesde.Value.Date.ToString        fecha2 = dtpHasta.Value.Date.ToString         sql = "SELECT nom_cliente,tel,fecha,hora,motivo,status,obs,fecha_alta FROM citas WHERE fecha BETWEEN '" & fecha1 & "' AND '" & fecha2 & "' ORDER BY nom_cliente"         CargarRegistros(sql, GV)     End Sub  Pero al hacer eso me lanza un SQLException:
Conversion Failed when converting datetime from character string.

Si quito el try...catch de la funcion CargarRegistros, el errror aparece en:
--- Citar ---AdaptadorSql.Fill(dt)
--- Fin de la cita ---

Les agradezco cualquier sugerencia.

Saludos

Mollense:
Seguramente la fecha que estás pasando no tenga el formato correcto.

Te aconsejo que pongas un punto de interrupción en esta línea:

--- Código: Text ---sql = "SELECT nom_cliente,tel,fecha,hora,motivo,status,obs,fecha_alta FROM citas WHERE fecha BETWEEN '" & fecha1 & "' AND '" & fecha2 & "' ORDER BY nom_cliente" y veas que valor toma la variable "sql" y que compruebes cual es el formato de fecha de tu DB (Me refiero a: dd/mm/yyy o mm/dd/yyyy, etc)

Si no encontrás el problema, entonces peganos la consulta (variable sql) que estás mandando.

robbie110487:
Exactamente, eso era, mira que el DateTimePicker en su propiedad Value.Date me devolvia '27/02/2008 0:00:00 a.m.' y eso provocaba el error.

Para solucionarlo en vez de:
--- Código: Text ---fecha1 = dtpDesde.Value.Date.ToString       fecha2 = dtpHasta.Value.Date.ToString utilice:
--- Código: Text ---fecha1 = dtpDesde.Value.Day & "/" & dtpDesde.Value.Month & "/" & dtpDesde.Value.Year        fecha2 = dtpHasta.Value.Day & "/" & dtpHasta.Value.Month & "/" & dtpHasta.Value.Year  
Pero eso no es todo, tambien modifique la consulta sql, a la cual le pase un par de CONVERT, total que quedó:
--- Código: Text ---sql = "SELECT nom_cliente,tel,fecha,hora,motivo,status,obs,fecha_alta FROM citas WHERE fecha BETWEEN CONVERT(datetime,'" & fecha1 & "',103) AND CONVERT(datetime,'" & fecha2 & "',103)" 
Gracias a todos, y espero ayudar a alguien que pase por lo mismo, ya que es algo realmente frustrante  :lightsabre:

Saludos

Mollense:
En buena hora robbie. Es un placer ayudar.

Navegación

[0] Índice de Mensajes

Ir a la versión completa