Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta base de datos: Filtro con Fecha()

Estas en el tema de Consulta base de datos: Filtro con Fecha() en el foro de Mysql en Foros del Web. Hola! Soy nuevo y me inscribí en la pagina porque no puedo avanzar en la creación de un formulario en access 2007. Se trata de ...
  #1 (permalink)  
Antiguo 19/02/2012, 12:29
 
Fecha de Ingreso: febrero-2012
Mensajes: 10
Antigüedad: 12 años, 1 mes
Puntos: 0
Pregunta Consulta base de datos: Filtro con Fecha()

Hola!
Soy nuevo y me inscribí en la pagina porque no puedo avanzar en la creación de un formulario en access 2007. Se trata de abrir un formulario con los registros en que el campo Fecha sean los del día de hoy. Lo hago con otro formulario (TableroPrincipal) con un botón que acciona una macro que tiene la acción "AbrirFormulario" y en la Condición WHERE puse:
[Formularios]![MiForm]![Fecha]=Fecha()
Se abre MiForm con un registro en blanco y el campo Fecha no tiene el "Selector de Fecha]. Si ya dentro de MiForm le quito el filtro, aparecen todos los registros de la tabla, y ubicándome en el campo fecha en alguna de ellas puedo usar el botón secundario y me aparece "Igual a (la fecha en que estaba ubicado)". También puedo alli hacer clic en el botón "Filtro" y funciona correctamente.
El campo Fecha tiene formato Fecha corta y la mascar de entrada es 90/90/9900.
Tambien probe poner un control independiente al que al abrí formulario sea igual a Fecha() y le cargué el evento "después de actualizar" para que el campo Fecha sea igual al de ese cuadro de texto y tampoco funciona.
Se que la consulta es muy simple por lo que me disculpo pero realmente no se cómo seguir. Desde ya gracias
  #2 (permalink)  
Antiguo 20/02/2012, 07:07
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años
Puntos: 574
Respuesta: Consulta base de datos: Filtro con Fecha()

No se te acaba de entender...

En la ficha Datos de las propiedades del formulario tienes "Filtro" ahí tienes que poner una expresion válida tipo WHERE sin la palabra WHERE que haga el filtro que buscas.

p.e.

Fecha=Fecha()

si Fecha es el nombre del campo que contiene la fecha que quieres filtrar.

Si lo que quieres es que un objeto del formulario tenga como valor predeterminado el fecha de hoy busca en la ficha "Datos" de las propiedades del objeto en "Valor predeterminado" pon Fecha() o =Fecha() no lo recuerdo.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 22/02/2012, 07:57
 
Fecha de Ingreso: febrero-2012
Mensajes: 10
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Consulta base de datos: Filtro con Fecha()

Gracias por tu rápida respuesta!!!
La condición de filtro del formulario se creó automáticamente cuando armé el formulario en base a la tabla que tenía la condición SQL. Efectivamente en la ficha datos del formulario dice en "Filtro":
[Formularios]![MiForm]![Fecha]=Date()
Aún así no anda! Por eso ya no se qué hacer, dónde puede estar la falla!

Lo de poner como valor Predeterminado Fecha() en el cuadro de texto, en su simpleza, no se me había ocurrido y lo hacia complicado con la acción EstablecerValor con la macro que abría el formulario. Gracias por "avivarme"!!! (soy novato en esto).
  #4 (permalink)  
Antiguo 22/02/2012, 08:12
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años
Puntos: 574
Respuesta: Consulta base de datos: Filtro con Fecha()

[Formularios]![MiForm]![Fecha]=Date()

se refiere al objeto de MIForm, el filtro debe referirse al nombre del campo de la tabla o consulta

nombreCampo=Date()
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #5 (permalink)  
Antiguo 22/02/2012, 08:39
 
Fecha de Ingreso: febrero-2012
Mensajes: 10
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Consulta base de datos: Filtro con Fecha()

Estuve borrando filtros esperando no se "superpongan", porque pensé que esa podría ser la falla. No logré nada pero advertí que lo que sale en Filtro en la ficha Datos del formulario no era por haberlo creado automáticamente de la tabla sino por la acción AbrirFormulario de la macro del botón del TableroPrincipal. Parece que automáticamente se traslada esa expresión al Formulario.
  #6 (permalink)  
Antiguo 22/02/2012, 08:46
 
Fecha de Ingreso: febrero-2012
Mensajes: 10
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Consulta base de datos: Filtro con Fecha()

Gracias Quim nuevamente!
Puse [TabladeOrigen]![Fecha]=Fecha() en la tabla como me has sugerido pero sigo obteniendo un registro en blanco con ID nuevo en el campo autonumerico
  #7 (permalink)  
Antiguo 22/02/2012, 10:45
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años
Puntos: 574
Respuesta: Consulta base de datos: Filtro con Fecha()

Propiedades formulario > Datos

Permitir filtros Sí
Permitir ediciones Sí
Permitir eliminación Sí
Permitir agregar Sí
Entrada de datos NO

No será que no tienes ningún registro con fecha de hoy?
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #8 (permalink)  
Antiguo 22/02/2012, 14:53
 
Fecha de Ingreso: febrero-2012
Mensajes: 10
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Consulta base de datos: Filtro con Fecha()

Eres un genio quim!!!
Parece que el error estaba en que le puse Entrada de datos SI y eso es lo que no permitía que saliera el formulario filtrado, además de filtrar el formulario y no la tabla de origen. Muchas gracias!!!
  #9 (permalink)  
Antiguo 23/02/2012, 07:22
 
Fecha de Ingreso: febrero-2012
Mensajes: 10
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Consulta base de datos: Filtro con Fecha()

Me disculpo por molestar de nuevo!
Le puse al formulario un botón "Ayer" para desplazarme en los registros de los días en que se van haciendo las operaciones según el campo [Fecha]. Para ello agregué un cuadro de texto independiente "EntradaFecha" en el que el valor predeterminado es hoy y se le resta 1 día cada vez que le hago clic al botón "Ayer". Le agregué una macro incrustada al cuadro de texto después de actualizar para aplicar un filtro: [Fecha]=[Formularios]![MiForm]![EntradaFecha] pero no funciona. Probé ponerle MostrarTodosLosRegistros antes y que la macro funcione al cambiar pero tampoco funciona.

Última edición por danielvecchio64; 23/02/2012 a las 12:43 Razón: ponerlo de forma más amable pq la expresión da lugar a mal entendido
  #10 (permalink)  
Antiguo 24/02/2012, 02:59
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años
Puntos: 574
Respuesta: Consulta base de datos: Filtro con Fecha()

Vamos a cambiar la estrategia,

1. quita el filtro de la propiedad Filtro,
2. elimina ese objeto EntradaFecha
3. quita la macro incrustada
4. el boton "Ayer" debe llmarse "botonayer" (propiedades del boton ficha "otras" Nombre=botonayer
5. crea un boton "Hoy" nombre=botonhoy
6. crea un boton "-1" nombre=botonmenos1

En propiedades del formulario busca la ficha "Eventos" en "Al abrir" ve al generador de codigo (boton "..." > generador de codigo)

Ahora estas en el modulo asociado al formulario, si no tenias otros eventos, deberia aparecer algo asi

Código vb:
Ver original
  1. Private Sub Form_Open(Cancel As Integer)
  2.  
  3. End Sub

seleccionando des de Private pega el siguiente codigo

Código vb:
Ver original
  1. 'Al abrir aplicar filtro fecha=fecha()
  2. Private Sub Form_Open(Cancel As Integer)
  3.    DoCmd.ApplyFilter , "fecha=Date()"
  4. End Sub
  5.  
  6. 'Codigo para el boton "Ayer" aplica filtro fecha=fecha()-1
  7. Private Sub botonayer_Click()
  8.    DoCmd.ApplyFilter , "fecha=Date()-1"
  9. End Sub
  10.  
  11. 'Codigo para el boton "Hoy" aplica filtro fecha=fecha()
  12. 'permite regresar a la situación inicial
  13. Private Sub botonhoy_Click()
  14.    DoCmd.ApplyFilter , "fecha=Date()"
  15. End Sub
  16.  
  17. 'Codigo para el boton "-1"
  18. 'Crea una variable "dia" con formato fecha
  19. 'Lee el valor del campo fecha le resta 1 y lo guarda en la variable dia
  20. 'Aplica el filtro fecha=dia
  21. Private Sub botonMenos1_Click()
  22.    Dim dia As Date
  23.    dia = Me.fecha - 1
  24.    DoCmd.ApplyFilter , "fecha=#" & dia & "#"
  25. End Sub
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #11 (permalink)  
Antiguo 29/02/2012, 13:12
 
Fecha de Ingreso: febrero-2012
Mensajes: 10
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Consulta base de datos: Filtro con Fecha()

Gracias de nuevo Quin!!! Perdón por no haber contestado antes pero he estado con mucho trabajo.
En el código del botonmenos1 da error dia=Me.Fecha -1 porque Me.Fecha=Nulo
Igual podría ponerle este código directamente al botonayer?
Me parece que el problema es cuando dos días seguidos no tengo entradas en el cuadro Fecha (lo que ocurre todos los fines de semana) porque cuando retrocedo al domingo me muestra un registro en blanco y cuando quiero ir al sábado no hay nada que poner en el cuadro Fecha.
Igual me resisto un poco a usar códigos a pesar que tengo que admitir su simpleza. Pero por qué una macro no puede hacer una acción tan simple como aplicar un filtro?
Una cosa que me gustaba del cuadro EntradaFecha era el selector de fechas que trae Access 2007 (que por cierto trae un botón "Hoy" porque permitiría aplicar un filtro con solo seleccionar la fecha. Se le puede asignar a él la variable día?
  #12 (permalink)  
Antiguo 01/03/2012, 01:57
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años
Puntos: 574
Respuesta: Consulta base de datos: Filtro con Fecha()

Supongo que si pero no uso Access 2007, de hecho miro de no usar access.

Deberias hacer algo así para el boton -1 para evitar ese nulo


Código vb:
Ver original
  1. Private Sub botonMenos1_Click()
  2.    Dim dia As Date
  3.  
  4. 'Lee me.fecha, ahora no es nul porque estamos en un registro
  5.       dia = Me.fecha
  6.    
  7. 'Inicia bucle
  8. do
  9.        dia=dia-1
  10. 'aplica el filtro
  11.       DoCmd.ApplyFilter , "fecha=#" & dia & "#"
  12. 'lee me.fecha si es nul sigue el bucle si no
  13.   Loop while Me.fecha is null
  14. End Sub

Así el boton -1 buscara la primera fecha anterior a la actual con registros....

Claro que si "hoy" no tienes registros todo fallará, tendrias que modificar con un bucle similar a este el codigo de hoy y de ayer...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 01/03/2012 a las 02:19
  #13 (permalink)  
Antiguo 05/03/2012, 13:44
 
Fecha de Ingreso: febrero-2012
Mensajes: 10
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Consulta base de datos: Filtro con Fecha()

Gracias Quim por tu amabilidad!
Me sale un error "424 en tiempo de ejecución, se requiere un objeto". Cuando depuro me queda señalado en amarillo el "Loop While" y si le pongo el cursor encima hoy lunes me pone Fecha=Nulo. Insisto solo una vez más (para no ser molesto) si se puede ligar la variable dia a un cuadro de entrada y que se pueda buscar el día con los botones de "Hoy", "Ayer", o "Menos1" o ingresando una fecha en ese cuadro.
  #14 (permalink)  
Antiguo 06/03/2012, 02:40
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años
Puntos: 574
Respuesta: Consulta base de datos: Filtro con Fecha()

Si puedes poner un cuadro de entrada independiente donde puedas entrar la fecha... para que sea independiente solo debes dejar en blanco el origen del control


dia=me.fechaManual

hara que todo funcione con esa fecha,

sobre el date picker que hablabas de Access 2007 supongo que será similar, si es un objeto del formulario siempre puedes acceder a su valor con Me.nombreobjeto.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #15 (permalink)  
Antiguo 11/03/2012, 10:47
 
Fecha de Ingreso: febrero-2012
Mensajes: 10
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Consulta base de datos: Filtro con Fecha()

Gracias Quim!
1)y por qué nunca anda el loop del botonmenos1: Me sale un error "424 en tiempo de ejecución, se requiere un objeto". Cuando depuro me queda señalado en amarillo el "Loop While" y si le pongo el cursor encima hoy lunes me pone Fecha=Nulo.
2) De acuerdo a tu indicación probé ponerle un procedimiento de evento "después de actualizar" al cuadro de texto independiente "FechaManual" que aplica el filtro DoCmd.ApplyFilter , "Fecha=FechaManual". Sin embargo ingreso una fecha y me sale un mensaje "Introduzca el valor del parámetro: FechaManual" o en otras oportunidades me sale un registro en blanco
  #16 (permalink)  
Antiguo 11/03/2012, 10:55
 
Fecha de Ingreso: febrero-2012
Mensajes: 10
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Consulta base de datos: Filtro con Fecha()

Cabe aclarar respecto a la segunda consulta que al poner el cursor sobre la variable día da el valor correcto (dentro del loop que me sugeriste más arriba)

Etiquetas: registros, select, tabla, filtros, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:33.