Access - consulta entre fechas texto

   
Vista:

consulta entre fechas texto

Publicado por Josep Maria (10 intervenciones) el 23/03/2010 16:05:06
Tengo una base de datos que se alimenta de un fichero de texto que envian diariamente.

En la base de datos la fecha entra en formato texto DDMMAA pero como texto.
El campo creado desde siempre es en este mismo formato de texto, por lo que para hacer consultas debe ser en este.

El problema que tengo es que necesito hacer consultas entre fechas y me coge solo los 2 primeros digitos, por lo que nunca puedo seleccionar una fecha entera sino solo los dias.

Existe alguna solucion para hacer una consulta seleccionando fecha inicial y fecha final en este formato?
Gracias.
JM
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Enrique Ramírez

RE:consulta entre fechas texto

Publicado por Enrique Ramírez (617 intervenciones) el 23/03/2010 21:05:19
No se cual sea en si tu problema, hice un pequeño ejercicio en donde capturé varios registros ejemplos:

010310
020310
030310
040310
050310
etc

hice esta consulta y no tengo ningún problema para ver la consulta filtrada, preba de esta forma si no te funciona sube tu codigo para verlo.

SELECT Tabla1.FechaTexto FROM Tabla1
WHERE (((Tabla1.FechaTexto) Between [del ?] And [al ?]));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta entre fechas texto

Publicado por Josep Maria (10 intervenciones) el 24/03/2010 09:51:36
En el ejemplo que has puesto funciona sin problema, ya que coge el orden por los 2 digitos iniciales.

Cuando hay fechas de distintos años y meses es cuando da el problema.

Digamos que tenemos fehas siguientes:

201009
011109
151209
211209
010110
220110
030210
150210
200210
010310
310310

Como ves aqui hay dias y fechas distintas y para el orden o para la seleccion de fechas ..... ejemplo de seleccion del dia 010110 a 150210 te salen:

011109
010110
010310
030210

No se si hago algo mal o es que esto no tiene encuenta el resto de digitos, solo ordena o busca los 2 primeros.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta entre fechas texto

Publicado por Josep Maria (10 intervenciones) el 24/03/2010 10:12:55
En la explicacion anterior veo que me deje 2 fechas que tb salen al sere la busqueda de 01 al 15:

011109
010110
010310
030210
151209
150210

como se ve, solo busca los 2 digitos iniciales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Enrique Ramírez

RE:consulta entre fechas texto

Publicado por Enrique Ramírez (617 intervenciones) el 24/03/2010 19:35:46
El detalle es que lo que se esta manipulando es texto y lo quieres tratar como si fuera fecha pero al fin y al cabo es 100% texto, la solución que encontre y me funciono es :

1) armar la el texto como si fuera fecha con los Mid
2) reconvertir la cadena a texto con CStr(), esto lo hice porque al hacer el punto 3 no lo tomaba como texto y asi ya lo tomó como tal.
3) convertir el texto a fecha CDtate()
4) y en base a esa conversion hacer el filtro.

Pruebalo y comentas.

SELECT CDate(CStr(Mid([Fechatexto],1.2) & "/" & Mid([Fechatexto],3.2) & "/20" & Mid([Fechatexto],5.2))) AS FechaFecha
FROM Tabla1
WHERE (((CDate(CStr(Mid([Fechatexto],1.2) & "/" & Mid([Fechatexto],3.2) & "/20" & Mid([Fechatexto],5.2)))) Between #1/1/2010# And #3/31/2010#));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta entre fechas texto

Publicado por Josep Maria (10 intervenciones) el 25/03/2010 11:24:38
He probado la solucion que has dado y es mas o menos como lo tenia, pero sigue dandome problemas,

Para que veas lo que tenia puesto y es parecido a lo indicado (simplemente cambia la seleccion de mid con iqz, mid, der)

SELECT ((CDate(CStr(Left("FECHA2",2) & "/" & Mid("FECHA2",3,2) & "/" & Right("FECHA2",2)))="fecha3"))
FROM [REMREC consulta]
WHERE (((CDate(CStr(Left("FECHA2",2) & "/" & Mid("FECHA2",3,2) & "/" & Right("FECHA2",2)))) Between [fini] And [ffi]));

Si en lugar de poner REMREC consulta pongo tabla, me da error de sintaxis.
Lo que no veo claro es el tema =fecha3.

El error que me sale es:

"Esta expresión no está escrita correctamente o es muy compleja para evaluarse. Por ejemplo, una expresión numérica puede contener muchos elementos complicados. Intente simplificar la expresión asignando a variables partes de la misma."

Por cierto estoy utilizando Windows XP Profesional 2002 y la versión de Acces es la 2000 (9.0.6926 SP-3).

Se que algunas cosas cambian con la version.
Gracias.
Josep Maria
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Enrique Ramírez

RE:consulta entre fechas texto

Publicado por Enrique Ramírez (617 intervenciones) el 25/03/2010 18:26:37
Tampoco me queda claro para que metes Fecha3.

Pienso que el Right y el Left están de mas.

El error a mi también me lo dio y es por los parámetros en el Between como que con este tipo de armado de cadena no lo reconoce, en ratos me daba el error y en ratos solo me permitía teclear el primer parámetro y en seguida ejecutaba la consulta sin que me permitiera teclear el segundo parámetro no se si sea mi computdarora que este haciendo cosas raras, por eso puse las fechas como constantes y asi si funcionó.

Aunque tengo Windows Vista trabajo con Acces para XP 2002.

utilizando mi ejemplo tal cual ¿tampoco te funcionó? porque ami si.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:consulta entre fechas texto

Publicado por Josep Maria (10 intervenciones) el 26/03/2010 09:33:36
Pues no se si es la version o no, copie exactamente tu formula sin izq o der pero continua con el mismo error.

lo de fecha3 era para darle un nombre de campo nuevo en el que almacenar todo, aunque no creo sea la forma correcta.

Creo que intentare bajarme la version del 2003 para ver si es quiza eso lo que me de problemas, aunque un compañero mio que lo tiene tb le da problema similar... no se pues como resolverlo.
Josep Maria
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Enrique Ramírez

RE:consulta entre fechas texto

Publicado por Enrique Ramírez (617 intervenciones) el 26/03/2010 16:14:08
No se si sea la version pero el codigo que subi a mi si me funciona y tengo 2002, a veces pienso que es la foma enque se instala el officce ó el windows en cada equipo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar