CONSULTA SELECT BASE DE DATOS VARIABLES FECHA

[email protected]
30 de Diciembre del 2004
AMIGOS TENGO EL SIGUIENTE PROBLEMA ESTOY USANDO EL SELECT * FROM TABLA WHERE... EL PROBLEMA ES CUANDO DESPUES DEL WHERE COLOCO UNA VARIABLE EJEMPLO:
Dim FECHA As Date

FECHA = #12/27/2005#

sBuscar = "SELECT * FROM CONF WHERE HI = " & FECHA &""

Set tRs = db.OpenRecordset(sBuscar, dbOpenSnapshot)


CUANDO LAS BUSQUEDA NO ES CON LA VARIABLE FECHA SI NO QUE ES COLOCADA EN EL SELECT SI FUNCIONA BIEN, EJEMPLO:

sBuscar = "SELECT * FROM CONF WHERE HI = #12/27/2005#"

Set tRs = db.OpenRecordset(sBuscar, dbOpenSnapshot)

para mi es que estoy nombrando mal la variable en el select y el no esta buscando una fecha en la base de datos.

se que las variables de otro tipo funcionan (numeros o palabras) porque lo siguientes ejemplo funcionan correctamente:

Dim nombre As string

nombre = "pedro"

sBuscar = "SELECT * FROM CONF WHERE HI = ' " & nombre & " ' "

Set tRs = db.OpenRecordset(sBuscar, dbOpenSnapshot)

y

Dim numeroAs long

numero = 34

sBuscar = "SELECT * FROM CONF WHERE HI = " & numero & " "

Set tRs = db.OpenRecordset(sBuscar, dbOpenSnapshot)


pueden observar que la variable palabla se coloca con ' y luego " y luego & en cambio con numero es solo " &. para mi el problema que tengo con las fechas es ese debo colocar algun caracter antes de la variable para el select lo reconosca como fecha y no numero o palabra.

pd: los campos esta bien configurados si busco fecha el campo es de fecha.

balderman
30 de Diciembre del 2004
Buenas!
Yo tuve problemas parecidos, y en mi caso los solucione haciendo lo siguiente, que no se si es demasiado elegante, pero funciona:
1. En lugar de emplear una variable Date en la consulta SQL, utilizaba una variable de tipo String, previamente construida con el formato dd/mm/yyyy. Esto era sencillo pues la fecha se introducia en tres testBox, de manera que no hay mas que concatenarlos con la /. Una vez compruebes que las cadenas son correctas
2. Realizar la consulta SQL, pero empleando la funcion Format en la comparacion. Por ejemplo:
dados una variable cadFecha de tipo String y una tabla con un atributo fechaNacimiento la consulta sería:
"SELECT * FROM tabla WHERE Format (fechaNacimiento, 'dd/mm/yyyy')=cadFecha "

Espero que te sea de utilidad

Un saludo

l_island
30 de Diciembre del 2004
Es un problema sencillo de resolver, en lugar de asignar la fecha como lo estas haciendo, prueba a hacerlo de este modo:

Fecha = "#12/27/2004#"

o volviendo a poner los almodillados en la SQL,
dado que haciendolo como lo haces, a la hora de concatenar la SQL con la variable Fecha te está omitiendo las almohadillas.

Saludos!!
l_island

[email protected]
30 de Diciembre del 2004
AHORA SI SE JODIO ESE TRUQUITO SI FUNCIONO Y ESTA VEZ LO PUSE A FUNCIONA DE VARIAS FORMA A VER SI SIRVE DE VERDAD. Y FUNCIONA BIEN BIEN. GRACIAS A TODOS POR SU AYUDA

[email protected]
30 de Diciembre del 2004
Dim FECHA As Date

FECHA = #12/27/2005#

sBuscar = "SELECT * FROM CONF WHERE HI = " & #FECHA# &""

Set tRs = db.OpenRecordset(sBuscar, dbOpenSnapshot)

SI LO COLOCO DE ESTA MANERA ME DA UN ERROR QUE DICE " ERROR DE COMPILACION SE ESPERABA EXPRESION", ES DEBIDO A LAS COMILLA EN EL SELECT

SI COLOCO COMILLAS CUANDO DETEMINO EL VALOR DE LA VARIABLE FECHA

FECHA = "#12/27/2005#" SI FUNCIONA DE ESTA FORMA Y DEL CARAJO, GRACIAS PANA, ESO ES LO DEPINGA DE ESTOS FOROS, TE RESPONDE RAPIDO Y CON PROPIEDAD, ESTE FORO ES MUY BUENO, TIENE BUENOS LECTORES

[email protected]
30 de Diciembre del 2004
LO UNICO ES QUE PARA DALE EL VALOR A LA VARIABLE FECHA CON LAS COMILLAS ES NECESARIO DECLARARLA COMO STRING SI NO DA UN ERROR. PERO ESO SE RESUELVE PORQUE USO OTRA VARIABLE "STRFECHA" Y MANTENGO MI VARIABLE FECHA COMO DATE Y LUEGO LAS RELACIONO DE LA SIGUIENTE MANERA:

DIM FECHA AS DATE
DIM STRFECHA AS STRING

FECHA = #12/27/2004#

STRFECHA = "(FECHA)"

sBuscar = "SELECT * FROM SALACONF WHERE FECHA = " & STRFECHA & ""

Y FUNCIONA DEL CARAJO..

[email protected]
30 de Diciembre del 2004
MENTIRA MENTIRA TODO LO QUE DIJE ANTERIORMENTE ES MENTIRA ESO NO FUNCIONA, TODO FUE PARTE DE UN ESPEJISMO, EN REALIDAD NO BUSCA LA VARIABLE COLOCADA EN EL STRFECHA. DA LA CASUALIDAD QUE FECHA SE LLAMA EL CAMPO DE LA BASE DE DATOS Y ME MUESTRA TODOS LOS VALORES DE LA BASE DE DATOS.

SIGO JODIO PERO AHORA SE QUE CUANDO LAS VARIABLES SON STRING Y SE ESCRIBEN CON COMILLAS FUNCIONA. PERO SIGO JODIO = PORQUE LA VARIABLE FECHA ES DATE Y ESO SI NO LO PUEDO CAMBIAR LA VAINA AHORA ES CAMBIAR EL VALOR DATE A STRING CON COMILLAS.