Access - Filtrando por fechas

   
Vista:

Filtrando por fechas

Publicado por José Maria (134 intervenciones) el 08/04/2016 19:36:16
Buenas amigos,

Estoy intentando filtrar un formulario que puede tener 3 Fechas:
Fecha_Cierre,Fecha_Cierre2,Fecha_Cierre3
Tengo un formulario que me filtra a ese formulario:
Tengo 2 variables para los campos de Fechas:
vIni = Me.Fecha1.Value
vFin = Me.Fecha2.Value

Con una fecha haría lo sigiuente:
DoCmd.OpenForm "SubInformeCerrados", , , "[Fecha_Cierre]>=#" & Format(vIni, "mm/dd/yy") & "#"

Con esto funciona perfecto y si quiero filtrar entre dos fechas uso este mismo pero añado AND y le pongo la Fecha 2.
El problema es que eso me vale si uno solo Fecha_Cierre y yo tengo 3 posibles fechas de cierre

He probado lo siguiente pero no funciona:
DoCmd.OpenForm "SubInformeCerrados", , , "[Fecha_Cierre]>=#" & Format(vIni, "mm/dd/yy") & "# OR [Fecha_Cierre2]<=#" & Format(vIni, "mm/dd/yy") & "# OR [Fecha_Cierre3]<=#" & Format(vIni, "mm/dd/yy") & "#"


Alguna idea?

Gracias!!
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

Filtrando por fechas

Publicado por Enrique Heliodoro (1663 intervenciones) el 09/04/2016 17:19:37
En principio parece que no debería haber problemas, pero como habrá que 'adaptarse a los datos reales', lo adecuado seria que aplicases en esa línea un PUNTO DE INTERRUPCION y tras ello (en la ventana de inmediato), copiar esa condición para ver que es lo que devuelve realmente, algo como (con tus datos y en la ventana de inmediato):

? , "[Fecha_Cierre]>=#" & Format(vIni, "mm/dd/yy") & "# OR [Fecha_Cierre2]<=#" & Format(vIni, "mm/dd/yy") & "# OR [Fecha_Cierre3]<=#" & Format(vIni, "mm/dd/yy") & "#"

Tras ello un ENTER y analizas su respuesta (o la plasmas aquí para tener alguna referencia).
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

Filtrando por fechas

Publicado por José Maria (134 intervenciones) el 10/04/2016 11:59:41
Estoy haciendo lo que me dices, pongo un punto de interrupcion en el codigo
DoCmd.OpenForm "SubInformeCerrados", , , "[Fecha_Cierre]>=#" & Format(vIni, "mm/dd/yy") & "# OR [Fecha_Cierre2]<=#" & Format(vIni, "mm/dd/yy") & "# OR [Fecha_Cierre3]<=#" & Format(vIni, "mm/dd/yy") & "#"

Luego me voy a la ventana inmediato y he copiado lo que me has dicho y le he dado a play, y me pide una macro...no sé exatamente como hacer lo que me pides enrique, si pudieras guiarme un poco.

De todas formas, es que no entiendo porque mi codigo me devuelve cero valores, no lo entiendo, deberñia de estar bien,no?

El resultado que me muestra es todo lo que tenga fecha de cierre,pero no lo filtra
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

Filtrando por fechas

Publicado por Enrique Heliodoro (1663 intervenciones) el 10/04/2016 14:04:14
Los pequeños detalles son importantes, si no se presta atención a ellos las cosas no funcionan bien.

....., algo como (con tus datos y en la ventana de inmediato):

? , "[Fecha_Cierre]>=#" & Format(vIni, "mm/dd/yy") & "# OR [Fecha_Cierre2]<=#" & Format(vIni, "mm/dd/yy") & "# OR [Fecha_Cierre3]<=#" & Format(vIni, "mm/dd/yy") & "#"

Tras ello un ENTER y analizas su respuesta (o la plasmas aquí para tener alguna referencia).
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

Filtrando por fechas

Publicado por José Maria (134 intervenciones) el 11/04/2016 15:50:11
eso ya lo hice.....por eso he escrito......porque no sé como hacerlo
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

Filtrando por fechas

Publicado por Enrique Heliodoro (1663 intervenciones) el 11/04/2016 18:50:49
La ventana de inmediato es muy similar a una ventana de MS-DOS (o la actual CMD) y en ella 'no se hace play', se ejecutan los comandos y demás (tras escribirlos y estando al final de la línea) con un simple ENTER.

Si has puesto un STOP inmediatamente antes de la línea en cuestión, (la que abre el formulario) has ejecutado el formulario 'y se ha parado en esa linea':
.- sin mas se copia la condición ==> ("[Fecha_Cierre]>=#" & ...." & Format(vIni, "mm/dd/yy") & "#")
.- Ya en la ventana de inmediato se escribe el signo de interrogación final (?)
.- a continuación se pega lo copiado
.- tras ello (y al final de esa línea recién transcrita) se pulsa ENTER.

'El' devolverá lo que interpreta con los datos actuales sera un símil a:
[Fecha_Cierre]>=#1/31/2016# OR [Fecha_Cierre2]<=#1/31/2016# OR [Fecha_Cierre3]<=#1/31/2016#

Si ello es correcto (la respuesta contendrá las fechas en formato americano), lo único que faltarían serian los datos relativos a esas fechas ....¿existen?
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

Filtrando por fechas

Publicado por José Maria (134 intervenciones) el 26/04/2016 11:26:51
Gracias por tu ayuda.
Esto es lo que me devuelve
[Fecha_Cierre]>=## OR [Fecha_Cierre2]<=## OR [Fecha_Cierre3]<=##
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

Filtrando por fechas

Publicado por Enrique Heliodoro (1663 intervenciones) el 26/04/2016 11:34:48
Conclusion (mi conclusion) el dato 'vini' NO existe o esta fuera del entorno de trabajo .... y eso ya sera cosa del diseñador.
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

Filtrando por fechas

Publicado por José Maria (134 intervenciones) el 26/04/2016 13:35:10
Es extraño porque si lo hago solamente con Fecha_Cierre si funciona.
El problema está cuando le meto la 2 y la 3.

Se te ocurre alguna otra forma de poder hacer el filtro?

Un saludo y gracias por todo
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

Filtrando por fechas

Publicado por Enrique Heliodoro (1663 intervenciones) el 26/04/2016 14:54:17
Vamos a intentarlo:

Lanza de nuevo ese informe y cuando llegue al punto de interrupción, en la ventana de inmediato escribe lo siguiente:

? vini

Y si es posible, aclara de donde sale es dato, ¿esta en el formulario? .... ¿es un cuadro de texto? ....¿es una variable publica? .... si lo fuere (una variable publica) ¿de que tipo es?.....
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

Filtrando por fechas

Publicado por José Maria (134 intervenciones) el 26/04/2016 16:36:51
El informe lo lanzo desde otro formulario que tiene los datos de las FECHAS:

Declaro las variables:
vIni = Me.Fecha1.Value
vFin = Me.Fecha2.Value

De momento estoy probandolo solo con Vlni pero con las 3 posibles fechas, si consigo uno seguro que hago el otro.

He probado a declararlo solo en la ventana inmediato y no me devuelve nada.
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

Filtrando por fechas

Publicado por Enrique Heliodoro (1663 intervenciones) el 26/04/2016 17:05:25
Sospecho que lo de las variables es como una nube en el horizonte .....

Asúmelo que es como las normas (o leyes), según donde se establezcan tienen un ámbito y (por poner un ejemplo) las normas (leyes) de circulación que tienen los países acogidos bajo el techo de los británicos, difieren de las que hay (por ejemplo) en el resto de Europa.

Y dentro de esas normas, las de aparcamiento difieren de una ciudad a otra y las que aplican en Madrid no tiene que ser cumplidas en Guadalajara (por decir dos ciudades), pero ambas ciudades tienen que respetar las consensuadas a nivel estatal y las estatales están subyugadas a las Europeas.

Si un en un formulario se dimensiona una variable (formulario = ciudad cualquiera) en otro formulario (otra ciudad) no tiene que ser conocida ni obedecida, pero aquellas que se dimensionen a nivel territorial si han de ser obedecidas y conocidas en todo ese ámbito (que incluiría a las dos ciudades/formularios anteriores).

Mas aun, si un formulario esta cerrado (1) o se cierra (2) esas variables no existen (caso uno) o desaparecen (caso dos) ....... y eso si fueran declaradas como publicas, que si son a nivel local .....

En definitiva: tienes un problema de ámbito y para casos como ese lo ideal es dejarse de jugar con lo que aun no se domina y hacer una referencia directa (absoluta) a los objetos que tienen los datos, en la practica:

Antes:
...." & Format(vIni, "mm/dd/yy") & "#")

Después ( o mientras se sigue creciendo):
...." & Format(Forms.[formularioXXX].Fecha1, "mm/dd/yy") & "#")
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

Filtrando por fechas

Publicado por José Maria (134 intervenciones) el 26/04/2016 18:08:36
Perdona mi insistencia:

Me da error diciendome que se esperaba fin de instruccion y me marca "mm"

DoCmd.OpenForm "SubInformeCerrados", , , "& Format(Forms.[CerradosValidados].Fecha1, "mm/dd/yy") & "#")
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

Filtrando por fechas

Publicado por Enrique Heliodoro (1663 intervenciones) el 27/04/2016 01:01:33
Sinceramente, creo que lo mejor es que lo dejemos en este punto .....

Los PUNTOS SUSPENSIVOS es una forma clásica y utilizada desde remotos tiempos para indicar que 'hay algo mas' y sinceramente tomar al pie de la letra un ejemplo (que 'esta sintetizado') y utilizarlo de esa forma tan libre solo indica (o a mi me indica) que tu real interés no esta en llegar a una solución y sacar un beneficio (sacar beneficio = aprender algo nuevo y útil), lo que pareces pretender lo dejo en tu conciencia pero como no comparto ese estilo de vida prefiero poner un punto y final.

(la verdad que esta expresión: DoCmd.OpenForm "SubInformeCerrados", , , "& Format(Forms.[CerradosValidados].Fecha1, "mm/dd/yy") & "#") se me asemeja un montón a un burla ...)
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

Filtrando por fechas

Publicado por José Maria (134 intervenciones) el 27/04/2016 10:13:08
Gracias por tu tiempo y perdona las molestias.
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