Muchos programadores tienen problemas al hacer consultas a campos de tipo Fecha por una sencilla razón: La Fecha en formato Peruano (y en otros países) es dd/mm/yy y en formato americano es mm/dd/yy.
Si haces la siguiente consulta, suponiendo que la fecha actual es 03/05/07 (3 de Mayo del 2007)
Rs.open "Select * from ventas where fecha=' & Now & ' "
Si nuestra PC tiene el formato dd/mm/yy, y el motor que usemos (Access,SQL SERVER) tiene su configuración de formato en mm/dd/yy no vamos a tener los resultados que esperamos.
Otro problema que se puede dar es que muchos motores de base de datos que están configurados en mm/dd/yy , si le das un dato como 23/07/07 , lo ya a tomas como dd/mm/yy, y si tienes mala suerte y están programando por esas fechas, tu código va a trabajar bien, pero cuando llegues a 1/8/2007 (1 de agosto del 2007) tu sistema usara su configuración y lo tomara como 8 de Enero del 2007
Imagínense si estos problemas que les menciono se dan al hacer un consulta con un” =”, piensen en lo mostrara si pedimos mostrar datos en rangos de fecha
Solución:
Trabaja tus fechas en formato ISO que es yyyymmdd con eso no hay pierde
Tus consulta debe ser así: (este format es propio del lengua SQL, no tiene que ver nada el VB)
Rs.open "Select * from ventas where Format(Fecha,'yyyymmdd')=Format('" & Now & "','yyyymmdd')"
Con eso no hay pierde al hacer consulta a campos tipos fechas, no importa la configuración de ninguna PC, ya sea como server o como cliente
Ahora, cuando manejes fechas usa controles como DTpicker (Agrega componente Microsoft Windows Common Control-2 6.0) o declara una variable y dale el valor así (Visual Basic)
Dim Fecha as Date Fecha = DateSerial(2007,12,09) 'Año, mes, dia
Espero que esto les sirve
Saludos
Agregue un comentario