Visual Basic.NET - Filtado de rango de fechas con DateTimePicker

 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 414 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Filtado de rango de fechas con DateTimePicker

Publicado por Lucas (6 intervenciones) el 03/07/2021 00:37:26
Hola buena gente, tengo un problema y ya me estoy volviendo loco por eso recurro a ustedes, necesito filtrar por rango de fechas y mostrarla en un Datagridview con dos Datatimepicker, les dejo mi codigo que ya lo di vuelta como 200 veces y no logro que funcione, en realidad la falla que hace es que cuando es el mismo mes el que quiero filtrar, lo filtra casi sin problemas pero si agarro por ej. desde 30/06/21 al 01/07/21 me trae fechas anteriores ej. 20/06/21 etc. No entiendo en que estoy fallando y no soy experto ni nada, recien recien estoy empezando con esto de la programacion.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Try
 
    Dim fechaIni As String = DateTimePicker1.Value.ToString("dd/MM/yyyy")
 
    Dim fechaFin As String = DateTimePicker2.Value.ToString("dd/MM/yyyy")
 
    Dim sql As String = "select * from Registros where fecha between '" & fechaIni & "' and '" & fechaFin & "' "
    Dim adaptador As New OleDbDataAdapter(Sql, cadena)
    Dim tblFiltro As New DataTable()
 
    adaptador.Fill(tblFiltro)
    DataGridView1.DataSource = tblFiltro
 
    cadena.Close()
 
Finally
    cadena.Close()
End Try

Saludos

y de ante mano, gracias!
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Filtado de rango de fechas con DateTimePicker

Publicado por Phil Rob (1554 intervenciones) el 03/07/2021 10:51:54
Hola,

Propongo que intentas el código siguiente :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
' ... ... ...
Dim fechaIni As String = DateTimePicker1.Value.ToString("dd/MM/yyyy")
Dim fechaFin As String = DateTimePicker2.Value.ToString("dd/MM/yyyy")
 
Dim sql As String = "select * from Registros where FORMAT( fecha , 'dd/MM/yyyy') BETWEEN '" & fechaIni & "' AND '" & fechaFin & "'"
 
Dim adaptador As New OleDbDataAdapter(Sql, cadena)
Dim tblFiltro As New DataTable
 
adaptador.Fill(tblFiltro)
DataGridView1.DataSource = tblFiltro
 
cadena.Close()
adaptador.Dispose()

No pienso que el Try esta necesario en este caso. Si no en escrito bien, el sistema da el mensaje o el resultado es vacía.

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
Val: 2
Ha aumentado su posición en 414 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Filtado de rango de fechas con DateTimePicker

Publicado por Lucas (6 intervenciones) el 04/07/2021 00:53:10
No me funciono, por las dudas aviso que estoy usando de base de datos ACCESS, no se si sea de relevancia pero bueno capaz si, me sigue tirando el problema que me filtra mal cuando cambio de mes la busqueda. no entiendo, tiene que ser algo del formato creo yo pero no se.
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Filtado de rango de fechas con DateTimePicker

Publicado por Phil Rob (1554 intervenciones) el 04/07/2021 08:18:17
Hola,

El ejemplo que te enviado funciona con Access (OleDBAdapter).
Si existe error con tu programa, envias me las mensajes. Si no mensaje, envias me una parte de la DB, o toda, con la tabla Registros para que pruebo varios códigos y que comprenda el problema.
Si no demasiado large, también puedes envias todo tu proyecto (en ZIP).

Buen domingo ...
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
Val: 2
Ha aumentado su posición en 414 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Filtado de rango de fechas con DateTimePicker

Publicado por Lucas (6 intervenciones) el 05/07/2021 01:11:25
Te quedaste pensando un Domingo, que nivel el tuyo.
En realidad si existen las fechas, da igual que ponga fechas que no existan, me tira el mismo resultado, en el mismo mes no hay drama, filtra bien, pero ocuando cambio de mes es el problema, en el mismo mes yo puedo poner que filtre entre 10/06/2021 al 15/06/2021 y lo filtra bien, ahora si pongo por ej. (estuve probando) 22/06/2021 al 01/07/2021 me trae todo las fechas (desordenas pero las trae) ej trae 02/07/2021 y tambien fechas como 15/06/2021.

voy a ver el archivo ese que me pasaste a ver si lo resuelvo, vi que varios tuvieron este problema pero no se como lo solucionaron.

pruebo y aviso como me fue
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
Val: 2
Ha aumentado su posición en 414 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Filtado de rango de fechas con DateTimePicker

Publicado por Lucas (6 intervenciones) el 05/07/2021 02:07:13
cuando quiero ejecutar ese programita me salta el siguiente error "System.InvalidOperationException: 'El proveedor 'Microsoft.ACE.OLEDB.12.0' no está registrado en el equipo local.'"

mmm... busque por internet y descarge el Componente redistribuible del motor de base de datos de Microsoft Access 2010, aparentemente eso tenia que instalar.
Igualmente me siguio saltando ese error.

voy a analizar el codigo mejor
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Filtado de rango de fechas con DateTimePicker

Publicado por Phil Rob (1554 intervenciones) el 05/07/2021 08:11:45
Hola,

Si utilizas fichero .accdb, debes utilizas la conexión :
1
2
Dim RutaYNombreDB As String = "D:\Tmp\TestAccesDBSimpleConMostrar\MiFicheroDB.accdb"
MiConexion.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & RutaYNombreDB & ";"  ' Ejecutar en x64

Si utilizas fichero .mdb, debes utilizas la conexión :
1
2
Dim RutaYNombreDB As String = "D:\Tmp\TestAccesDBSimpleConMostrar\MiFicheroDB.mdb"
MiConexion.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & RutaYNombreDB & ";"  ' Ejecutar en x86

Ante compilar, debes seleccionar el modo x86 o x64. Mira la video : https://www.dropbox.com/s/og10skte49cy4ah/X86X64.mp4?dl=0.
Después, debes Limpiar y Compilar ante de ejecutar.

He cargado tu proyecto. Lo miraré en la tarde.

...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 2
Ha aumentado su posición en 414 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Filtado de rango de fechas con DateTimePicker

Publicado por Lucas (6 intervenciones) el 05/07/2021 03:24:15
No se lo que pasa, te dejo el proyecto a ver que le ves, recien lo estoy empezando.
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 Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Filtado de rango de fechas con DateTimePicker

Publicado por Phil Rob (1554 intervenciones) el 05/07/2021 11:44:11
Re ...

No olvida de ver mi mensaje de esta mañana (05/07/2021 08:11:45) para saber como cambiar la plataforma de la solucione.

Me permito varias comentos sobre tu DB. Adjunto el fichero LasFechas.zip (LasFechas.pdf) con mis explicaciones y imágenes.

Sobre el problema de las fecha, es bastado que reemplazas en los códigos del programa, el formato de las fechas dd/MM/yyyy por yyyy/MM/dd. Explico para que en el documento LasFechas.pdf.

1
2
3
4
5
6
7
Dim fechaIni As String = DateTimePicker1.Value.ToString("yyyy/MM/dd")
       Dim fechaFin As String = DateTimePicker2.Value.ToString("yyyy/MM/dd")
 
        WHEREParte1 = "FORMAT( Dia , 'yyyy/MM/dd')" & " BETWEEN " & "'" & fechaIni & "'"
        WHEREParte2 = "'" & fechaFin & "'"
 
        Consulta = "SELECT * FROM Registros WHERE " & WHEREParte1 & " AND " & WHEREParte2 & " ORDER BY Dia"

Que tenga un buen día ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 2
Ha aumentado su posición en 414 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Filtado de rango de fechas con DateTimePicker

Publicado por Lucas (6 intervenciones) el 05/07/2021 14:50:50
Ahora si !!!!!!!!!! Muchas Gracias.... después de tanto renegar pude así como pusiste, el problema era el formato de la fecha, ya lo pude corregir aparentemente quedo bien, en la DB no toque nada aun, pero funciono, me estaba volviendo loco.

MUCHAS GRACIAS!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar