consultas SQL con fechas en VB

Diego Uribe
29 de Septiembre del 2003
Cordial Saludo

Tengo una consulta SQL que tiene la siguiente forma:

cons="select * from Tabla where fecha="&Format(fecha,"ddmmyyyy")&""

cuando ejecuto esta consulta, la base de datos me retorna un recordset vacio, apesar de que
existen registros que cumplen dicha condicion.

como debo hacer la anterior consulta para que funcione correctamente?

Muchas Gracias

pancho pantera
29 de Septiembre del 2003
Estoy peor que tù, hermano.

luis
29 de Septiembre del 2003
copia lasiguiente consulta
cons="select * from Tabla where fecha='"&Format(fecha,"ddmmyyyy")&"'"
luego coloca esta variable en el recordsource del data o de cualquier coneccion a la DB


Penetrator
29 de Septiembre del 2003
Eres un pobre gueon al buscar ayuda aqui

Telemann
29 de Septiembre del 2003
Independientemente del uso de comillas simples o almohadillas, debes también considerar si el campo de tipo fecha al que comparas es de fecha y hora. Si es así, es posible que el resultado sea un recordset vacío debido a que se está comparando con la fecha indicada a las 00:00 de la medianoche por defecto, y no haya tal caso. Una solución sería no comparar con una igualdad, si no establecer un rango del día entero, por ejemplo desde las 00:00 hasta las 23:59. Suerte.

VAMPIRE
29 de Septiembre del 2003
debes de poner las comillas antes y despues de la fecha como con un string

Ragayaga
29 de Septiembre del 2003
Saludos Diego, si mal no recuerdo tu problema estriba en que las fechas en una consulta SQL debes pasarlas entre almohadillas (#), es decir, tu consulta debería ser más o menos así:

cons = "SELECT * FROM Tabla WHERE fecha = #" & Format(fecha,"ddmmyyyy") & "#"

y creo que así debe funcionar, sino nos avisas...


Adiós y Suerte...




luismo
29 de Septiembre del 2003
Yo creo que la sentencia format esta mal usada, la misma deberías usarla asi:

cons="SELECT * FROM tabla WHERE fecha = FORMAT(varfecha,"dd/mm/yyyy")".
Chau y suerte.-


webJose
29 de Septiembre del 2003
Diego:

Cierto que las fechas se colocan entre almohadillas. Sin embargo, le ofrezco una solución más versátil, ya que es independiente del formato de fecha que se use. La solución consiste en transformar la fecha en un número entero si no contiene información de hora, o un número doble si contiene hora.

Algo como esto:

cons="select * from Tabla where fecha=" & cstr(clng(fecha))

Eso si fecha es una variable tipo Date. Si no lo es, entonces esto:

cons="select * from Tabla where fecha=" & cstr(clng(cdate(fecha)))

Debe cambiar la función clng por la función cdbl si la parte de la hora debe ser utilizada.

Esto es más sencillo porque no tiene que usar almohadillas y no debe preocuparse por el formato de fecha a usar.

ERICKO
29 de Septiembre del 2003
Gracias! Esta genial tu truco!!!