Formulario filtrado por rango de fecha Access

Tengo un formulario basado en una consulta, deseo filtrar mi formulario por rango de fechas que pueda capturar desde el formulario, sin necesidad de colocar el criterio sobre la consulta, Además que una vez que ya se haya filtrado y cargado los registros de este rango de fechas, pueda hacer un filtro más, por status del registro

1 respuesta

Respuesta
1

Supongamos que los cuadros de texto dónde vas a meter la fecha inicial y final por las que quieres filtrar se llaman txtFecIni y txtFecfin respectivamente. A la tabla la llamaré Tabla1 y el campo fecha Fec.

Puedes poner un botón, y en el código de este botón (también lo podrías poner en el evento Al cambiar del cuadro de texto txtFecFin):

Form.RecordSource="Select * from Tabla1 where Fec Between cDate('" & Form!txtFecIni.Value & "') and cDate('" & Form!txtFecFin.Value & "')"

Es decir, al hacer clic sobre el botón damos el origen del registro del formulario (RecordSource) filtrando por los valores de los cuadros de texto.

Para filtrar por el status del registro, puedes poner un cuadro combinado (le llamaré selStatus) con los valores de los distintos status, al campo status de la tabla lo llamo status.

En el origen de la fila del cuadro combinado:

Select status from Tabla1 group by status order by status

Es decir, elijo los valores de los distintos status de la tabla, agrupándolos para que no se repitan en el cuadro combinado.

Al hacer clic: Procedimiento de evento ---> Damos el nuevo origen del registro del formulario añadiendo el filtro por status:

Form.RecordSource="Select * from Tabla1 where Fec Between cDate('" & Form!txtFecIni.Value & "') and cDate('" & Form!txtFecFin.Value & "') and status='" & Form!selStatus.Value & "'"


Muchas gracias ángeles.
Me ha funcionado de manera excelente, sólo un pregunta más: con que código podría restablecer mi formulario con los registros que tenía antes de ser filtrado.
Muchas gracias

Hola Angeles

Ya logré resolver lo del botón "limpiar formulario" Pero ahora me a surgido otra duda. Me han funcionado todos los filtros que he puesto, excepto uno, llamado ID CLIENTE, ya que la tabla de donde estoy jalando los datos contiene el campo ID CLIENTE que es un campo que tiene una relación  con otro campo con el mismo nombre ubicado en una tabla llamada CLIENTES, es una relación con integridad referencial. Por lo tanto mi código quedó así:

Private Sub Comando65_Click()
Form.RecordSource = "SELECT CLIENTES.STATUS, * FROM CLIENTES INNER JOIN SERVICE ON CLIENTES.[ID CLIENTE]=SERVICE.[ID CLIENTE] where SERVICE.[ID CLIENTE] ='" & Form!selEmpresa.Value & "'"
End Sub

Lo que no se es si el where SERVICE.[ID CLIENTE] ='" & Form!selEmpresa.Value & "'" es correcto, porque no me esta funcionando. Debo de cambiar la instrucción?

SALUDOS Y MUCHAS GRACIAS

Si el campo id cliente es numérico tendrás que quitar la comilla simple (que es el delimitador de texto)

SERVICE.[ID CLIENTE] =" & Form!selEmpresa.Value & "

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas