Filtros

Tengo un formulario no enlazado a ninguna tabla y dentro de el tengo otro subformulario con los datos de una tabla clientes. Pues bien lo que quiero es hacer filtros en este subformulario mediante código. ¿Cómo se haría? Porque intento haciendo docmd. Gotocontrol "Clientes" y después docmd. ApplyFilter,"NUMERO=2" pero no hace nada, es decir, filtra pero solo el primero de la lista. ¿Cómo hacer pa solucionarlo?

4 respuestas

Respuesta
1
Tienes dos formas de hacerlo:
Si se trata de filtrar por un solo campo, lo más sencillo es usar las propiedades "vincular campos principal" y "vincular campos secundario" del control subformulario.
En V.C.Principal, escribes el nombre del Control del Formulario "Padre" que vas a usar como filtro.
En V.C.secundario, escribes el nombre del campo del Form. Interior que debe coincidir en valor con el del campo externo.
Este método tiene la ventaja de que no hay que escribir código pero tiene el inconveniente de que si no hay nada en el control de Filtro, no muestra nada en el subformulario.
Si lo que prefieres es filtrar si hay contenido y, si no lo hay, que no filtre, entonces sí que tienes que ir al código.
Si el control de filtro se llama txtFiltro, el control subForm se llama subForm y el campo a Filtrar se llama NUMERO (según tu ejemplo) entonces prueba el siguiente código en el evento "Al perder el foco" del control txtFiltro:
Private Sub txtFiltro_LosFocus()
If IsNull(Me.txtFiltro) Then
Me.subForm.Form.Filter=""
Me.SubForm.Form.FilterOn = False
Else
Me.subForm.Form.Filter="NUMERO=" & me.txtFiltro
Me.SubForm.Form.FilterOn = True
End If
End Sub
Respuesta
1
Yo he probado lo siguiente:
Pongamos que el subformulario se llama sub
y el campo de datos por el que quieres filtrar se llama id.
Pongamos que el control del formulario independiente se llama texto1, y que quieres que filtre al subformulario justo después de que el usuario actualice su contenido.
Private Sub Texto1_AfterUpdate()
Me.sub.Form.Filter = "id=" & Me.Texto1
Me.sub.Form.FilterOn = True
End Sub
Respuesta
1
Yo normalmente para filtrar en subformularios lo hago mediante el form. Recordsource y le pongo la sentencia SQL por la que quiero filtrar.
Por ejemplo, tienes un subformulario llamado SF en la que quieres seleccionar todos los clientes llamados 'Ramon'. Entonces, en el evento del formulario principal en el cual quiero filtrar. Pondría me. SF. Form. Recordsource = "SELECT * FROM CLIENTES WHERE NOMBRE LIKE 'ramon'".
Se trata de aplicar consultas directamente al origen de datos del subformulario, la verdad es que es muy potente, ya que puedes filtrar por tantos campos como quieras.
Si tienes cualquier duda sobre esto por favor especifícame un poco más el problema y intentaremos arreglarlo.
Respuesta
Explícamelo mejor
Pega un combobox y ponle buscar el elemento seleccionado y le das siguiente selecciona la tabla y sig aasta el final

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas