Saltar al contenido principal

 none
rango de dos fechas en vb.net y access RRS feed

  • Pregunta

  • como puedo hacer un rango de fechas con vb.net y base de datos access me sale error utilizo esta funcion sale bien con una base de datos sql pero no da con una base de datos access

    Sub confecha(ByVal tabla As DataGridView, ByVal fechaI As Date, ByVal fechaF As Date)
            adaptador = New OleDbDataAdapter("select * from casos where fecha_caso between '" & fechaI & "' and '" & fechaF & "'", cn)
            Dim dataS As New DataSet
            adaptador.Fill(dataS, "casos")
            tabla.DataSource = dataS.Tables("casos")
        End Sub

    lunes, 27 de junio de 2016 2:18

Todas las respuestas

  • Hola angel_0000,

    prueba "SELECT * FROM CASOS WHERE fecha_caso >= '" & fechaI & "' AND fecha_caso <= '" & fechaF & "'"


    Javier

    lunes, 27 de junio de 2016 2:32
  • Por q usas concatenacion dentro de tu consulta (esta Mal) Parametriza tu consulta

    Algo asi

    Private Sub ConjuntoDatosOleDb()
                Dim tabla As System.Data.DataTable = new System.Data.DataTable()
                Dim SQL As String = "select * from Allergies Where fecha1 >= @fecha1 and fecha2 <= @fecha2"
                Dim comando As New OleDbCommand(SQL, cn)
                Dim adaptador As New OleDbDataAdapter(comando)
                comando.Parameters.Clear()
                comando.Parameters.AddWithValue("@fecha1", "01/01/2015")
                comando.Parameters.AddWithValue("@fecha2", "01/01/2016")
                adaptador.Fill(tabla)
                dataGridView1.DataSource = tabla
    
            End Sub
    
    


    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    lunes, 27 de junio de 2016 2:40
  • angel_0000,

    Si haces uso recurrente del bloque de código que presentas entonces te recomiendo que implementes una función que retorne un origen de datos de tipo DataTable.

    Private Function ObtenerFilas(FechaI As DateTime, FechaF As DateTime) As DataTable
    	Using cn As New OleDbConnection("CADENA_CONEXION")
    		Dim ConsultaSQL As String = "SELECT * FROM casos WHERE fecha_caso BETWEEN ? AND ?"
    		Dim cmd As New OleDbCommand(ConsultaSQL, cn)
    
    		cmd.Parameters.AddWithValue("FechaI", FechaI)
    		cmd.Parameters.AddWithValue("FechaI", FechaF)
    
    		Dim da As New OleDbDataAdapter(cmd)
    
    		Dim dt As New DataTable()
    
    		da.Fill(dt)
    
    		Return dt
    	End Using
    End Function
    

    Para invocar al método:

    Dim FechaI As New DateTime(2016, 6, 1)
    Dim FechaF As New DateTime(2016, 6, 20)
    DataGridView1.DataSource = ObtenerFilas(FechaI, FechaF)


    lunes, 27 de junio de 2016 2:41
  • Hola angel_0000,

    No deberías concatenar así los valores, para eso existen los Parameters.

    Using cn As New OleDbConnection("miCadenaConexion")
        adaptador = New OleDbDataAdapter("select * from casos where fecha_caso between @fi and @ff", cn)
        adaptador.SelectCommand.Parameters.AddWithValue("@fi", fechaI)
        adaptador.SelectCommand.Parameters.AddWithValue("@ff", fechaF)
    
        Dim dt As New DataTable
        adaptador.Fill(dt)
       tabla.DataSource = dt
    End Using

    Esto te funcionará siempre y cuando tus fechas sean del tipo Date, sino tendrías que formatearlas.

    Además no muestras el error que te produce.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    lunes, 27 de junio de 2016 2:43
  • muy buen aporte. me ayud mucho.
    martes, 19 de noviembre de 2019 23:00