• Domingo 22 de Diciembre de 2024, 23:27

Autor Tema:  Llenar Un Datagridview Con Una Consulta De Fechas  (Leído 6505 veces)

robbie110487

  • Miembro activo
  • **
  • Mensajes: 66
    • Ver Perfil
Llenar Un Datagridview Con Una Consulta De Fechas
« en: Jueves 28 de Febrero de 2008, 00:48 »
0
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
  1. Public Sub CargarRegistros(ByVal sql As String, ByVal dv As DataGridView)
  2.         Try
  3.             AdaptadorSql = New SqlDataAdapter(sql, cs)
  4.             Dim cb As New SqlCommandBuilder(AdaptadorSql)
  5.  
  6.             Dim dt As New DataTable
  7.  
  8.             AdaptadorSql.Fill(dt)
  9.  
  10.             bs.DataSource = dt
  11.  
  12.             dv.Refresh()
  13.             dv.FirstDisplayedScrollingRowIndex = bs.Position
  14.  
  15.         Catch ex As SqlException
  16.             MsgBox(ex.Message, MsgBoxStyle.Critical, "ERROR CAPTURADO SQLEXCEPTION")
  17.         Catch ex As Exception
  18.             MsgBox(ex.Message, MsgBoxStyle.Critical, "ERROR")
  19.         End Try
  20.  

En otro form utilizo dos datetimepicker para pedir las fechas, y el codigo de ejecucion para llenar el gridview es:
Código: Text
  1. Private Sub cmdBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBuscar.Click
  2.         Dim sql As String
  3.         Dim fecha1 As String
  4.         Dim fecha2 As String
  5.         fecha1 = dtpDesde.Value.Date.ToString
  6.         fecha2 = dtpHasta.Value.Date.ToString
  7.  
  8.         sql = "SELECT nom_cliente,tel,fecha,hora,motivo,status,obs,fecha_alta FROM citas WHERE fecha BETWEEN '" & fecha1 & "' AND '" & fecha2 & "' ORDER BY nom_cliente"
  9.  
  10.         CargarRegistros(sql, GV)
  11.  
  12.     End Sub
  13.  
  14.  
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)

Les agradezco cualquier sugerencia.

Saludos

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Llenar Un Datagridview Con Una Consulta De Fechas
« Respuesta #1 en: Jueves 28 de Febrero de 2008, 01:52 »
0
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
  1. sql = "SELECT nom_cliente,tel,fecha,hora,motivo,status,obs,fecha_alta FROM citas WHERE fecha BETWEEN '" & fecha1 & "' AND '" & fecha2 & "' ORDER BY nom_cliente"
  2.  
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.
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

robbie110487

  • Miembro activo
  • **
  • Mensajes: 66
    • Ver Perfil
Re: Llenar Un Datagridview Con Una Consulta De Fechas
« Respuesta #2 en: Jueves 28 de Febrero de 2008, 02:20 »
0
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
  1. fecha1 = dtpDesde.Value.Date.ToString
  2.        fecha2 = dtpHasta.Value.Date.ToString
  3.  
utilice:
Código: Text
  1. fecha1 = dtpDesde.Value.Day & "/" & dtpDesde.Value.Month & "/" & dtpDesde.Value.Year
  2.         fecha2 = dtpHasta.Value.Day & "/" & dtpHasta.Value.Month & "/" & dtpHasta.Value.Year
  3.  
  4.  

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
  1. 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)"
  2.  

Gracias a todos, y espero ayudar a alguien que pase por lo mismo, ya que es algo realmente frustrante  :lightsabre:

Saludos

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Llenar Un Datagridview Con Una Consulta De Fechas
« Respuesta #3 en: Jueves 28 de Febrero de 2008, 09:49 »
0
En buena hora robbie. Es un placer ayudar.
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.