Filtro en formulario de Access 2003

willy_chaos

Hola, os comento.

Tengo un formulario en Access que me muestra los registros de una consulta.

Ahora me he creado 4 campos que son los que filtraran esos registros que aparecen, estos campos son (Distrito, Situacion, Mes y Año).

Lo que no encuentro forma es la de que al darle a estos campos y darle al boton aplicar me haga el filtro y al darle al boton treure (quitar) quite este filtro. Me interesa hacerlo mediante el mismo formulario, no en las opciones de la barra de arriba de access.

Teneis algun ejemplo o alguien me puede poner un ejemplo de como hacerlo?

Estoy mirando por internet pero encuentro eso de que lo ponen mediante la barra de Access (el dibujito del rayo, etc)

Aqui os dejo una imagen para que os hagais una idea

http://dl.dropbox.com/u/9998961/Access_Filtro.png

MegalomaniaC

Lo haces con asistente? Para filtrar los datos como quieres has de crear una consulta que lo haga y asignarle la macro manualmente al boton, con asistente no se como se hace en el 2003, yo manejo el 2007 xD

willy_chaos

Vale he conseguido hacer los filtros y me funcionan, pero ahora quiero que pueda poner 1 boton por filtro y se vayan añadiendo.

Por ejemplo:
Clic Filtro Distrito (y me los filtra por distrito)
Clic Fitro Situación (y me los filtra por distrito + situación)

O

Clic Filtro Año (me los filtra por año)
Clic Fitro Distrito (me los filtre por año + distrito)

Vamos que no quiero hacer una macro que me ejecute otra, si no que si ejecuto un filtro, este se añada al filtro que ya hay, de manera que luego también mediante un botón que ya tengo hecho, me quita todos los filtros que hay.

MegalomaniaC

No se me ocurre otra que usar consultas para cada boton de filtrado, o un subformulario que filtre y muestre el resultado.

willy_chaos

Ya esta solucionado, me he tirado bastante rato esta tarde investigando (era la primera vez que toco Visual en codigo), aunque pueda parecer que no, tu primera respuesta me sirvio bastante (me encamino un poco, luego ya he ido haciendo un poco mas profesional el tema) Gracias!

Private Sub VISORFITXES_MOSTRARTOT_Click()
On Error GoTo Err_VISORFITXES_MOSTRARTOT_Click
    
Dim vFiltro As String Dim vDistricte As String Dim vMes As String Dim vAny As String Dim vSituacio As String vFiltro = "" If Not IsNull(Form_VISOR_FITXES.FILTRE_DISTRICTE.Value) Then vDistricte = Form_VISOR_FITXES.FILTRE_DISTRICTE.Value End If If Len(vDistricte) > 0 Then If Len(vFiltro) > 0 Then vFiltro = vFiltro + " AND" End If vFiltro = vFiltro + " DISTRITO = '" + vDistricte + "'" End If If Not IsNull(Form_VISOR_FITXES.FILTRE_MES.Value) Then vMes = Form_VISOR_FITXES.FILTRE_MES.Value End If If Len(vMes) > 0 Then If Len(vFiltro) > 0 Then vFiltro = vFiltro + " AND" End If vFiltro = vFiltro + " FEN_MESFACTURACION = " + vMes End If If Not IsNull(Form_VISOR_FITXES.FILTRE_ANY.Value) Then vAny = Form_VISOR_FITXES.FILTRE_ANY.Value End If If Len(vAny) > 0 Then If Len(vFiltro) > 0 Then vFiltro = vFiltro + " AND" End If vFiltro = vFiltro + " FEN_ANYFACTURACION = " + vAny End If If Not IsNull(Form_VISOR_FITXES.FILTRE_SITUACIO.Value) Then vSituacio = Form_VISOR_FITXES.FILTRE_SITUACIO.Value End If If Len(vSituacio) > 0 Then If Len(vFiltro) > 0 Then vFiltro = vFiltro + " AND" End If vFiltro = vFiltro + " EST_NOMBRE = '" + vSituacio + "'" End If If Len(vFiltro) > 0 Then DoCmd.ApplyFilter , vFiltro Else MsgBox ("Error: No s'ha executat el filtre, tots els camps son buits.") End If

Exit_VISORFITXES_MOSTRARTOT_Click: Exit Sub Err_VISORFITXES_MOSTRARTOT_Click: MsgBox Err.Description Resume Exit_VISORFITXES_MOSTRARTOT_Click

Aqui dejo el codigo por si sirve de ayuda.

Usuarios habituales

  • willy_chaos
  • MegalomaniaC