none
Seleccion de datos en rango de fechas RRS feed

  • Pregunta

  • Buen día.... ya busque en los foros sobre este tema, pero aun no puedo encontrar la solución. Deseo seleccionar datos de mi BD (Access) en base a 2 fechas, la cual el campo Fecha es de tipo FECHA/HORA.

    El codigo del boton buscar es la siguiente:

     Dim fecha1 As Date = cmb_fecha1.Value.Date    'tomamos solo la fecha del datetimepicker1
     Dim fecha2 As Date = cmb_fecha2.Value.Date    'tomamos solo la fecha del datetimepicker2
     Dim cnn As New OleDbConnection("PROVIDER = MICROSOFT.ACE.OLEDB.12.0; DATA SOURCE =C:\suegro\lavadero.accdb; persist security info = false")
     Dim da As New OleDbDataAdapter("SELECT * FROM servicio WHERE Fecha <=" & fecha1 & "AND Fecha >=" & fecha2, cnn)
     Dim ds As New DataSet
     da.Fill(ds)
     dv.Table = ds.Tables(0)
     DataGridView1.DataSource = dv 'mostramos el rango seleccionado en el datagrid

    NOTA: debo aclarar que el campo FECHA/HORA solo guarda la fecha, mas no la hora

    Saludos!



    • Editado walo ruelas jueves, 4 de septiembre de 2014 2:45
    jueves, 4 de septiembre de 2014 2:25

Todas las respuestas

  • hola

    pero como le pasas los parametro de las fechas a la query?

    porque no usas

    Dim query As String = "SELECT * FROM servicio WHERE Fecha <= @fecha1 AND Fecha >= @fecha2" 
    Dim cmd As New OleDbCommand(query, cnn)
    cmd.Parameters.AddWithValue("@fecha1", fecha1)
    cmd.Parameters.AddWithValue("@fecha2", fecha2)
    
    Dim da As New OleDbDataAdapter(cmd)
    Dim ds As New DataTabla
    da.Fill(dt)
    dv.Table = dt

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 4 de septiembre de 2014 2:53
  • hola... pongo los datos que me pasaste pero no llena mi datagrid, queda en blanco, solo los TITULOS de los campos estan mas no el contenido

    Dim fecha1 As String = cmb_fecha1.Value.Date
    Dim fecha2 As String = cmb_fecha2.Value.Date
    Dim cnn As New OleDbConnection("PROVIDER = MICROSOFT.ACE.OLEDB.12.0; DATA SOURCE =C:\suegro\lavadero.accdb; persist security info = false")
     Dim query As String = "SELECT * FROM servicio WHERE Fecha <= @fecha1 AND Fecha >= @fecha2"
     Dim cmd As New OleDbCommand(query, cnn)
     cmd.Parameters.AddWithValue("@fecha1", fecha1)
     cmd.Parameters.AddWithValue("@fecha2", fecha2)
     Dim da As New OleDbDataAdapter(cmd)
     Dim dt As New DataTable("servicio")
     da.Fill(dt)
     dv.Table = dt
     DataGridView1.DataSource = dt

    jueves, 4 de septiembre de 2014 3:04
  • Hola. 

    Que fecha seleccionas en fecha1 y que fecha seleccionas en fecha2?

    Supongo que lo que quieres hacer es filtrar los datos según un rango de fechas, por lo tanto asumo que fecha1 sera la fecha de inicio (ej: 01/09/2014) y fecha2 será la fecha de fin de ese rango (ej: 06/09/2014). Y lo que quieres es obtener todos los servicios que estén comprendidos en ese rango de fecha. 

    Si lo que digo es correcto, entonces tu consulta esta mal. Bueno no toda la consulta, sino los signos que usas estan invertidos.

    Debería ser así:

    Dim query As String = "SELECT * FROM servicio WHERE Fecha >= @fecha1 AND Fecha <= @fecha2"

    De esa manera optendrás los servicios que tengan fecha mayor que fecha inicio (fecha1) y menor que fecha fin (fecha2). Osea en ese rango de fechas.

    sábado, 6 de septiembre de 2014 14:52
  • Hola

    SI SOLUCIONO TU PROBLEMA NO OLVIDES MARCAR COMO RESPUESTA Y VOTAR COMO UTIL

    1. Si te muetra las columnas de la consulta quiere decir que en el codigo no hay ERROR,TAMBIEN HAY QUE TOMAR EN CUENTA EL TIPO DE DATO DE fECHA EN TU TABLA ??

    prueba

    SELECT * FROM servicio WHERE CONVERT(smalldatetime, CONVERT(char(10), Fecha, 103), 103)  >= 
    @fecha1  AND CONVERT(smalldatetime, CONVERT(char(10), Fecha, 103), 103) 
    <= @fecha2

    2. Asegurate que tu GRID tiene el color de letra diferente a White...o puede estar contenido en un cotrol q tenga el forecolor de esta manera .... por eso no loves 


    EFRAIN MEJIAS C VALENCIA - VENEZUELA


    sábado, 6 de septiembre de 2014 16:01