Filtro en consulta con criterio de fecha

Tengo un problema en una consulta de Acess, tengo un formulario basado en una tabla y mediante una consulta tengo realizados varios filtros que funcionan perfectamente pero quiero agregar un criterio más sobre un campo fecha pero me da error

 

En la misma consulta tengo más criterios idénticos al campo IdEntidad pero no se si es posible que con el mismo método pueda hacerlo en el campo Domiciliado que es de tipo fecha, seguro que la sintaxis que he puesto no es correcta.

Respuesta
1

Dos acotaciones:

.- Las fechas 'son números con disfraz' (el disfraz lo pone la configuración regional).

.- Las fechas han de ir como numero (universales) o en formato americano (para que no se complique con los meses).

Las fechas van con el siguiente formato dd/mm/aaaa  08/03/2023

Las fechas que estén en formato 'fecha' de Access (un campo de fecha en una tabla) se ven con el formato que se tenga en a configuración regional de Windows y siguen siendo números.

Donde hay que ser precavido es cuando se introduce una fecha en modo texto y Access tiene que interpretarla, es cuando el formato puede generar problemas y complicarse al interpretar el día (que sea igual o inferior a doce) como mes y al mes como día.

Cuando se detecten resultados que no cuadran, es el primer punto a investigar.

2 respuestas más de otros expertos

Respuesta
1

Javier, al poner Como, estás usando un criterio de texto en un campo fecha, que es numérico. Mira, si tengo una tabla Pedidos

En la consulta lo pongo como

Cuando la abro, sólo me muestra aquellos registros en que su fecha de pedido sea mayor o igual que la fecha del sistema

Gracias Julián,  el problema es que el formulario está basado en los campos de la tabla factura y cuando abro este formulario me muestra todos los registros y puedo filtrar por múltiples campos como el ejemplo que envíe con el criterio "como......." por eso puedo utilizar múltiples filtros y al aplicar la solución que me das >= Fecha() solo me haría los filtros restantes de aquellos registros que la fecha sea >=Fecha y yo quisiera utilizar a mi antojo el filtro de fecha igual que el resto, poder poner o quitar el filtro fecha con un solo clic, por eso era poner como "*" & para que sino lo utilizo me muestre todos los registros aunque la fecha sea menor o nula, es posible lo que comento, gracias

Personalmente creo que lo mejor es usar filtros en cascada, donde, o bien eliges todos, o eliges alguno. Por ejemplo

Es decir, puedo filtrar por cliente, puedo filtrar por ciudad y fecha, puedo filtrar por pais entre fechas, por país y ciudad, etc., etc.

En este caso, repito, en este caso el código del botón Filtrar es

Private Sub Comando27_Click()
Dim vLargo As Integer, mifiltro As String
mifiltro = ""
If FCliente <> "" Then
        mifiltro = "AND [NombreCliente]='" & Me.FCliente & "'"
End If
If FContacto <> "" Then
        mifiltro = mifiltro & " AND [NombreContacto]='" & Me.FContacto & "'"
End If
If FCiudad <> "" Then
        mifiltro = mifiltro & " AND [Ciudad]='" & Me.FCiudad & "'"
End If
If FPais <> "" Then
        mifiltro = mifiltro & " AND [Pais]='" & Me.FPais & "'"
End If
If FFinal <> "" Then
        mifiltro = mifiltro & " AND [fecha] >= forms!formulario1!finicial and [fecha]<=forms!formulario1!ffinal"
End If
        vLargo = Len(mifiltro)
If vLargo > 0 Then
        mifiltro = Right(mifiltro, vLargo - 4)
End If
Me.TDatos.Form.Filter = mifiltro
Me.TDatos.Form.FilterOn = True
End Sub

¡Gracias! Por tu respuesta, modificare la forma de búsqueda

Buenas tardes Julián, por favor me puedes decir a que hace referencia esto

Me.TDatos.Form.Filter = mifiltro
Me.TDatos.Form.FilterOn = True

a una tabla o a un formulario

Se aplica a un formulario. Lo que le dice es que el filtro que se aplicará es la instrucción que haya en MiFiltro, que es

Mifiltro = Right(mifiltro, vLargo - 4)

Por que le ha quitado el primer AND y el espacio en blanco de la primera condición y la segunda línea es para decirle que se active( que funcione) dicho filtro.

También puedes poner en la casilla criterios de la consulta al como

>=[Escriba una fecha]

Cuando vayas a abrir la consulta te aparecerá un mensaje con eso de Escriba...

Escribes una fecha en formato dd/mm/aaaa y los registros que se muestren serán aquellos que tengan una fecha mayor a la que has escrito.

O también

Entre [Escriba una fechainicial] y [escriba una fecha final] y te sacará los comprendidos entre esas dos fechas que hayas escrito.

Es que lo puedes hacer de mil formas.

Entonces el formulario del ejemplo que has puesto se llama TDatos

Efectivamente

De todas formas, si quieres, repito, si quieres, mándame un mensaje, sólo el mensaje, a [email protected] y te mando unos ejemplos, que es como se mejor.

Si lo haces, en el asunto del mensaje pon tu alias Javier Pérez, ya que si no sé quien me escribe ni los abro.

¡Gracias! 

Perdona Julián que sea tan pesado, pero habría posibilidad que con los filtros múltiples de tu ejemplo existiese la posibilidad de anular un solo filtro de los seleccionados sin tener que limpiar y volver a seleccionar el resto como por ejemplo poniendo un botón debajo de cada filtro para que solo anule el que yo quiera, gracias.

El combinado se llama ElegirPais, y voy a seleccionar uno

En el momento que lo selecciono

Si pulso el botón

En este caso, pero se puede hacer de varias formas, el código del evento Al hacer clic del botón es

elegirpais=null

Respuesta

Click the Criteria row of the field where you wish to put the criteria in the query design grid. Enter the criteria and hit ENTER. You can use text, dates (learn about applying criteria to text and using dates as criteria), and connections functions as criterion.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas