Foros del Web » Programación para mayores de 30 ;) » Programación General »

Urgente Problemas Con Fechas En Acces - Vb

Estas en el tema de Urgente Problemas Con Fechas En Acces - Vb en el foro de Programación General en Foros del Web. Hola a todos, el problema q tengo es el siguiente: Tengo una base de datos creada en Access, a la cual accedo mediante VB 6.0 ...
  #1 (permalink)  
Antiguo 11/11/2004, 13:51
Avatar de edi87  
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 113
Antigüedad: 20 años
Puntos: 0
Exclamación Urgente Problemas Con Fechas En Acces - Vb

Hola a todos, el problema q tengo es el siguiente:
Tengo una base de datos creada en Access, a la cual accedo mediante VB 6.0 usando DAO.
El problema es que necesito buscar datos entre dos fechas utilizo lo siguiente:
Código:
"SELECT * FROM Clientes WHERE 1 AND Recibida BETWEEN #" & txtRecDesde & "# AND #" & txtRecHasta & "#"
las fechas que introduzco para buscar, las escribo como mm/dd/yyyy y en la base de datos estan guardadas asi tambien, pero no logro que busque bien, es como que confunde mm/dd con dd/mm

NECESITO URGENTE ALGUNA YUDA AL RESPECTO

Muchas Gracias
__________________
IntoXicadoS -- Rock Argentina
"Cuando estes triste ponete a pensar, la solucion en vos esta..."

edi!
  #2 (permalink)  
Antiguo 11/11/2004, 14:09
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
echale un ojo a este post y despues veremos si que resultado te da

http://www.forosdelweb.com/f69/filtrar-fechas-visual-basic-246112/

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #3 (permalink)  
Antiguo 11/11/2004, 22:25
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Edi87:
Yo tenía un problema idéntico. Ingresaba las fechas con el formato #mm/dd/aaaa# y al realizar búsquedas, solía tener resultados incorrectos. Intenté utilizar como literales de fecha formatos como #22/Dic/1985#, o sus versiones en inglés, alternando la posición del mes y del día, pero eso me ocasionaba nuevos errores. Al final, la solución es la más simple, pero no la más obvia.
La fecha para Visual Basic, no es otra cosa que un número decimal. Bueno, no decimal sino double. La parte entera del número representa fechas (conteo de días). La parte decimal representa la hora. Es por eso que el tipo de dato date puede contener fecha y hora, y es la razón por la cual puedes usar expresiones que sumen fecha y hora (Time() + Date() es equivalente a Now()).
Para acabar con este rollo: Si ya tienes la variable date inicializada conviértela a Long para considerar sólo la fecha, y pásala como parámetro en la búsqueda. Access devolveré sin problemas la fecha que corresponda al número, porque access almacena exactamente el mismo formato que VB. Para incluir también la hora de la variable date, conviértela a Double. Siempre lo hago así para evitar complicaciones, y aún no me han reportado errores debido a esto en los equipos donde se está aplicando esto.
Por ejemplo, usando tu sintaxis, pondría:
Código:
'Para considerar sólo la fecha
"SELECT * FROM Clientes WHERE 1 AND Recibida BETWEEN " & CLng(CDate(txtRecDesde)) & " AND " & CLng(CDate(txtRecHasta))
 
'Para considerar también la hora
"SELECT * FROM Clientes WHERE 1 AND Recibida BETWEEN " & CDbl(CDate(txtRecDesde)) & " AND " & CDbl(CDate(txtRecHasta))
Esto no es nada ortodoxo. Pero por lo menos a mí, me resulta muy útil, y quizás a tí también pueda serte de utilidad.

Hasta luego.
  #4 (permalink)  
Antiguo 11/11/2004, 23:40
Avatar de edi87  
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 113
Antigüedad: 20 años
Puntos: 0
Bueno antes que nada quiero agradecerles por las rapidas respuestas, pero no tuve buenos resultados, les cuento:

El post que me dejaste, GeoAvila, ya lo habia leido, pero no me dio resultado...:(
En cuanto al ejemplo de Beakdan, por un momento me ilusione, pero al probarlo no me funciono me salta un error de tipos de datos en la expresion de criterio o algo asi, no obstante esto, creo q el error puede aparecer por otro tipo de cosa.
Te agradeceria que me re-expliques como seria todo este tema, y si tengo q tener algo mas en cuenta, ya sea en la base de datos o en el dato q ingreso en el text de busqueda.

Aca dejo un pequeño ejemplo de lo que hago:

En la base de datos tengo 5 registros, con 3 campos cada uno (Nombre, Apellido y Fecha)

ACLARACION: EN LA BASE DE DATOS TODAS LAS FECHAS ESTAN GUARDADAS CON EL FORMATO mm/dd/aaaa

|NOMBRE|APELLIDO|FECHA |
|JUAN |SECAS |08/02/2004|
|OSCAR |XXXXX |08/04/2004|
|ALBERT |SIRIO |08/07/2004|
|EDGARD|SOLARI |08/12/2004|
|JUANSE |ROMA |08/16/2004|

Ahora bien, yo en VB tengo dos textbox, en los cuales pongo una fecha de inicio y una de fin por ejemplo:

DESDE: 08/05/2004
HASTA: 08/13/2004

Pero al hacer la consulta, me devolvia todos los registros, como ignorando lo que le ponia, y si le cambiaba alguna fecha me ponia cualquier resultado como si se confundiera.

Espero que me puedas ayudar con esto....le tengo FE a la solucion que me diste, pero debo estar haciendo algo mal!

Muchisimas Gracias nuevamente a los dos!

Saludos
__________________
IntoXicadoS -- Rock Argentina
"Cuando estes triste ponete a pensar, la solucion en vos esta..."

edi!
  #5 (permalink)  
Antiguo 11/11/2004, 23:51
Avatar de edi87  
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 113
Antigüedad: 20 años
Puntos: 0
INFO DE ULTIMO MOMENTO!!!!!!!!!!!!!

Haciendole algunas modificaciones, anduvo un poco mejor, pero no del todo, explico:

puse 5 registros en la base de datos, con estas fechas

08/02/2004
08/04/2004
08/06/2004
08/10/2004
08/15/2004

hice la busqueda desde el 08/10/2004 hasta el 08/15/2004 y me devolvio uno solo, el que tiene de fecha 08/10/2004, pero me tendria que haber devuelto los dos, el del 08/10 y 08/15.
Se me ocurrio que talvez el problema sea que no sea inclusive la fecha con la que busque, osea...si quiero buscar del 10 al 15 de agosto, tendria que poner la busqueda entre el 10 y el 16 de agosto...
pero nose..

gracias!!
__________________
IntoXicadoS -- Rock Argentina
"Cuando estes triste ponete a pensar, la solucion en vos esta..."

edi!
  #6 (permalink)  
Antiguo 12/11/2004, 00:35
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
bueno la verdad si

y tendria que ser algo asi

Dim fecha As Date
dim Fecha2 as date
fecha = Format$(Date-5, "mm/dd/YYYY")
fecha2 = Format$(Date, "mm/dd/YYYY")
"SELECT * FROM MITABLA WHERE FECHA BETWEEN #" & fecha & "# And #" & fecha2 & "#"

espero te sea de mucha ayuda

si esta usando un DTPicket solo pone en vez del date el Dtpicker.value y listo

nos vemos.
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #7 (permalink)  
Antiguo 12/11/2004, 11:10
Avatar de edi87  
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 113
Antigüedad: 20 años
Puntos: 0
Bueno, el unico problema que encuentro es que yo saco la fecha de un textbox, y no le puedo dar Format() porque me cambia el mes y el dia de lugar, osea...si en el textbox pongo 08/12/2004 (lo que seria 12 de agosto de 2004) y le aplico el format(text,"mm/dd/yyyy"), me lo transforma a 12/08/2004 y no me sirve....

Muchas Gracias
__________________
IntoXicadoS -- Rock Argentina
"Cuando estes triste ponete a pensar, la solucion en vos esta..."

edi!
  #8 (permalink)  
Antiguo 12/11/2004, 12:43
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
Entonces usa un DTPicker que para las fechas..

seria mejor
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #9 (permalink)  
Antiguo 14/11/2004, 23:11
Avatar de edi87  
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 113
Antigüedad: 20 años
Puntos: 0
Ok, voy a probar, sinceramente nunca lo use.....
Muchas Gracias y te pronto te comento q paso
__________________
IntoXicadoS -- Rock Argentina
"Cuando estes triste ponete a pensar, la solucion en vos esta..."

edi!
  #10 (permalink)  
Antiguo 14/11/2004, 23:43
Avatar de edi87  
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 113
Antigüedad: 20 años
Puntos: 0
Bueno, sinceramente me tengo q rendir......la verdad no pude encontrar el dtpicker, busque busque y busque, pero no lo encontre....nose si lo tengo q bajar o ya viene con el VB, lo q si llegue a leer es q te pone el calendario,¿puede ser?.....porq nose si esto solucionara mi problema.....en todo caso, yo le paso bien la fecha, pero no me la reconoce...o no funciona....
la verdad creo q esto no tiene mas solucion....tengo todas mis esperanzas puestas en ustedes...

Gracias de nuevo...

Diganme como puedo hacer para agregar un dtpicker...
__________________
IntoXicadoS -- Rock Argentina
"Cuando estes triste ponete a pensar, la solucion en vos esta..."

edi!
  #11 (permalink)  
Antiguo 14/11/2004, 23:58
Avatar de edi87  
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 113
Antigüedad: 20 años
Puntos: 0
Bueno, aunque no lo crean....le hice una modificacion a la instruccion q me habia dejado beakman y empezo a funcionar...

Si, no lo puedo creer..

Les doy MIL GRACIAS por contestar y sacarme de este aprieto...

Tengo otra duda que no tiene nada q ver con Acces ni nada por el estilo...
Como hago para anular la cruz para cerrar los forms?
Necesito q si el usuario hace click para cerrar un formulario en la cruz de arriba no lo haga, osea, obligarlo a cerrar el formulario con el boton q yo cree.

Saludos
__________________
IntoXicadoS -- Rock Argentina
"Cuando estes triste ponete a pensar, la solucion en vos esta..."

edi!
  #12 (permalink)  
Antiguo 15/11/2004, 01:58
 
Fecha de Ingreso: abril-2002
Mensajes: 55
Antigüedad: 22 años
Puntos: 0
Utiliza el evento "QueryUnload" del formulario.

Saludos,
miper
  #13 (permalink)  
Antiguo 15/11/2004, 05:10
Avatar de Beakdan  
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
El control dtpicker es parte de Microsoft Windows Common Controls 2.
Me has dejado intrigado. Creí que tal y como había puesto el código habría de funcionarte... ¿Qué hiciste para que funcionara?

Saludos.


***********
Editado 15/11/2004 05:24

Ni me digas, acabo de darme cuenta de que omití algo importante...
Para que CDate considere tu cadena como fecha faltó poner los caracteres de numeral...
Debío quedarte al final algo como CLng(CDate("#" & texto & "#")) ¿O me equivoco?
La razón de esto es simple. Cuando no le pones el símbolo de numeral, VB interpreta lo que tu pones en la caja de texto como una división. Por ejemplo 22/12/2003 para CDate es igual a 22 dividido entre 12 dividido entre 2003. Como el resultado es una fracción, VB lo interpreta como hora en lugar de fecha, es decir 00:01:19 en lugar de 22/dic/2003.
Te ofrezco disculpas. No sé como se me pasó algo como esto.

Última edición por Beakdan; 15/11/2004 a las 05:23
  #14 (permalink)  
Antiguo 15/11/2004, 05:16
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 19 años, 8 meses
Puntos: 13
Hola. Fijate la propiedad ControlBox del formulario. Si esta en True, te aparecen los botones de minimizar, maximizar y cerrar, sino no.

Espero que te sirva. Saludos.
Lucas
  #15 (permalink)  
Antiguo 15/11/2004, 11:23
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
bueno.. se le dio solucion al problema..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #16 (permalink)  
Antiguo 17/11/2004, 23:36
Avatar de edi87  
Fecha de Ingreso: mayo-2004
Ubicación: Argentina
Mensajes: 113
Antigüedad: 20 años
Puntos: 0
Asi es, el problema fue resuelto, te comento BeakDan que ese no era el problema, sino que en el campo de la base de datos lo habia declarado como texto, entonces nunca me tomaba como fecha el dato que estaba adentro, una vez q lo pase a fecha, la ayuda q me diste, me funciono a la perfeccion.
En cuanto al tema de la cruz de arriba del form, lo solucione con la propiedad controlbox, como bien dijo lucasiramos...


Asi que no tengo mas que decirles MUCHAS GRACIAS por todaaaaaa la ayuda!!!!!

Saludos
__________________
IntoXicadoS -- Rock Argentina
"Cuando estes triste ponete a pensar, la solucion en vos esta..."

edi!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:37.