fechas en select - urgente

puni
27 de Octubre del 2003
tengo un problema
tengo un select dentro del cual en la clausula where tengo un campo FECHA ( de una base acces ) BETWEEN FECHA1 AND FECHA2
esto no me funciona correctamente, es como que esta comparando y no se da cuenta de que son fechas, porque si pongo el mismo mes, funciona, en vez si pongo distintos meses no
ejemplo 01/01/2003 al 09/01/2003 anda
en vez 20/01/2003 al 02/02/2003 no anda
que hago mal?
muchas gracias

V?or M. Salda?
27 de Octubre del 2003
Lo que pasa es que cuando utilizas BETWEEN, tu determinas un valor "and" otro valor o en su defecto utilizas "or", pero recuerda que es un rango de valores no de nombres de campos, si es en fecha debera ser por ejemplo #01/01/2003# and #09/01/2003#, es sobre valores aunque tu trabajes variables, recuerda que la variable tiene un valor, por ejemplo:
varFecha = #01/01/2003#.
En este caso tu debes generar tu recordset sin el BETWEEN debes ejercer los comparativos por codigo te será más accesible, o hazlo pero tu proporciona el rango de valores, no pongas el nombre del campo.

Es lo que te sugiero, ya que para reconocer una fecha recuerda que debes utilizar el " # " antes y despues.
pruebalo y checa los resultados.
Esto lo puedes checar incluso en la ayuda de Vb, en el apartado de Between and operator.

Atentamente.

Víctor M. Saldaña


Baltasar
27 de Octubre del 2003
Perdona que entre a corregir tu respuesta, pero creo que puede llevar a confusión.
En una cláusula BETWEEN no se puede usar OR, y sí que puedes usar campos, siempre que a la sentencia SELECT le lleguen los valores de los mismos.
y ahora contestando a la pregunta inicial, yo prefiero usar la funcion datevalue, que me permite más libertad a la hora de enviar los datos.

"SELECT * FROM facturas WHERE fecha BETWEEN DATEVALUE('1/3/2003') AND DATEVALUE ('5/3/2003')"

si necesitaras enviar las fechas desde código, con variables, cada datevalue se quedaría en:

DATEVALUE(' " + CSTR(mifecha) + " ')

Saludos.