Access - Filtrar Formulario Fechas

   
Vista:

Filtrar Formulario Fechas

Publicado por José Maria (134 intervenciones) el 04/10/2015 12:04:34
Buenas amigos,

Llevo un rato intentando filtrar un formulario que tiene

Fecha_Cierre, Fecha_Cierre2, Fecha_Cierre3

Tengo un cuadro de texto en el cual quiero poner el filtro de una fecha.
Si le digo al filtro que solo se haga con una fecha de las 3 flechas con el siguiente código no tengo problema:

'DoCmd.OpenForm "SubInformeCerrados", , , "[Fecha_Cierre]>=#" & Format(vIni, "mm/dd/yy") & "#"

El Problema es que yo quiero que sea Or Fecha_Cierre2 Or Fecha_Cierre3

He probado mil formas pero nada de nada, me sale el error 13.

DoCmd.OpenForm "SubInformeCerrados", , , "[Fecha_Cierre]>=#" & Format(vIni, "mm/dd/yy") & "#" Or "[Fecha_Cierre2]>=#" & Format(vIni, "mm/dd/yy") & "#"

Alguien me ayuda?
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

Filtrar Formulario Fechas

Publicado por jose (741 intervenciones) el 04/10/2015 12:18:30
la sintais la tienes mal , prueba asi


DoCmd.OpenForm "SubInformeCerrados", , , "[Fecha_Cierre]>=#" & Format(vIni, "mm/dd/yy") & "# Or [Fecha_Cierre2]>=#" & Format(vIni, "mm/dd/yy") & "#"


¿solo usas dos digitos para el año ?
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

Filtrar Formulario Fechas

Publicado por José Maria (134 intervenciones) el 04/10/2015 13:14:12
Lo que uso es una consulta que me recoge unos expedientes Cerrados.
Esos expedientes se pueden cerrar hasta 3 veces, por lo tanto tengo 3 fechas.
Pero para este ejemplo solo estoy usando 2.
Tu filtro me funciona, ahora si usa las dos fechas, pero no me lo termina de filtrar bien.
Me salen todas las fechas de cierre no los que se han cerrado con la fecha que pongo.

La Variable que uso es esta:

Dim vIni As Date

vIni = Me.txtFecha1.Value




Por cierto, el formulario lo filtro con un cuadro de texto.

Mira lo que me hace con el filtro, le he quitado el > y le he dejado solo el =

en el Cuadro de texto para Filtrar pongo esto: 01/10/2015

10/09/2015
01/09/2015
01/10/2015

No lo hace Exacto lo hace igual que si buscase algo parecido pero no exacto.

Sin Embargo si lo hago solo con Fecha_Cierre

Si me lo filtra por el 01/10/2015 y no me sale nada raro.
Que cosa mas rara,no?
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

Filtrar Formulario Fechas

Publicado por Enrique Heliodoro (1663 intervenciones) el 04/10/2015 14:16:06
Complicais lo sencillo ...

Una fecha básicamente es un numero y a ese 'numero' le damos el formato que en cada país represente a su 'standard', asi ESE NUMERO en Europa se representa con el formato dia/mes/año, en America el formato es mes/dia/aña y en Japón se utiliza este formato año/mes/dia y TODOS SIN EXCEPCION son .... el mismo numero.

La lógica mas elemental consiste en tratar a los numero como números y después .... ya se le dará 'el formato regional' (un simple automatismo de conversión a un formato consensuado).

Por una parte tenemos UN TEXTO (es lo que se escribe en un cuadro de texto no asociado a nadie) que habrá que convertir a 'Fecha Access' y tras ello a numero:

De texto a Fecha-Access ==> CDate("el texto en formato regional")
Si partimos de una 'fecha-Access' (por ejemplo: procede de una tabla con formato de fecha en ese campo) la conversión a numero es asi:
CDbl (Una-fecha-Access)

Vamos al texto que se desea convertir a numero y que representa a una fecha en formato regional
CDbl(CDate(Me.[El-cuadro-de-texto]))

La condición anterior quedaría asi:

Original:
.... "[Fecha_Cierre]>=#" & Format(vIni, "mm/dd/yy") & "# Or [Fecha_Cierre2]>=#" & Format(vIni, "mm/dd/yy") & "#"

Nueva:
.... "[Fecha_Cierre] =" & Cdbl(Cdate(Me.txtFecha1)) & " Or [Fecha_Cierre2]=" & Cdbl(CDate(Me.txtFecha1))

Y para tres o mas....
.... "[Fecha_Cierre] =" & Cdbl(Cdate(Me.txtFecha1)) & " Or [Fecha_Cierre2]=" & Cdbl(CDate(Me.txtFecha1)) & " Or [Fecha_Cierre3]=" & Cdbl(CDate(Me.txtFecha1))


Aunque yo lo haría asi:

Dim vIni As Long
vIni = Cdbl(CDate(Me.txtFecha1))
.... "[Fecha_Cierre] =" & vIni & " Or [Fecha_Cierre2]=" & vIni & " Or [Fecha_Cierre3]=" & vIni

Lo 'peor' que puede pasar (podría suceder en alguna versión y en función de sus 'parches') es que de un error de tipo de dato, lo cual se solucionaría así (algo que suele ser redundante)

.... "CLong([Fecha_Cierre]) =" & vIni & " Or CLong([Fecha_Cierre2])=" & vIni & " Or CLong([Fecha_Cierre3])=" & vIni

Por añadir algo:
Cdbl ==> la fecha completa (con horas , minutos, segundos)
CLong ==> La misma fecha sin horas, minutos ni segundos

En las comparaciones hay que ser cuidadoso, la parte decimal (que se elimina el los datos tipo Long) representa a la fracción del día en curso (horas, minutos .... ) puede ser la diferencia entre encontrar y no encontrar datos que existen (Access diferencia el "7/5/1999" y el "7/5/1999 3:45")

Una atenta lectura y poco de experimentación, resuelven las dudas que pueda generar esta aportación.
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