Filtrar en un subformulario a través de dos campos

Tengo dos campos en un formulario que, al pulsar enter, quiero que me filtren el contenido de un subformulario, al ser rellenado uno de ellos. Uno de los campos es, por ejemplo, el Codid. Con este no hay problema. Otro, es nombre y apellidos. En este último caso, quisiera también filtrar si solo me rellena una parte (por ej: el nombre y un apellido, o los dos apellidos solo). ¿Cómo puedo conseguir esto último? ¿Cómo puedo filtrar uno u otro campo al pulsar enter?

1 Respuesta

Respuesta
1

En la página: http://angelessebas.es/

En el apartado supuestos y soluciones ---> Cuadros de texto ---> Seleccionar datos que -Contengan- mediante un Cuadro de Texto

Tienes un ejemplo de como filtrar por una parte del campo.

Cualquier duda, me consultas.

Gracias Angeles. Tengo otra pregunta: ¿Cómo puedo filtrar en un subformulario por Codid o por lo que me rellenen en "Nombre y apellidos"? No sé qué condición he de poner para que me filtre por un campo o por otro, a la misma vez...

Podrías jugar con la función IsNull() para ver cual de los dos cuadros de texto tiene datos:

if isnull(form!nombrecuadrotexto)=false then

... Filtraría por este cuadro

else

... Filtraría por el otro

end if

De todos modos, para el código yo pondría un cuadro combinado en el que me saliesen todos los códigos, de esta forma no tendría que teclearlo y la codición de filtro la pondría en la acción al hacer clic de este cuadro.

No puedo poner un cuadro combinado para el código..... son más de 6.000 códigos distintos... Por eso pienso que es mejor lo de la condición que me has mencionado... No sé mucho de código visual basic, pero entiendo que en "Filtraría por este cuadro" te refieres a intentar adaptar el código que me comentaste antes ¿?.

Gracias! Ando un poco perdida...

Efectivamente, son muchos códigos para un cuadro combinado.

Cuando te pongo "filtraría por este cuadro" lo que quiero decir es que daría el origen del registro del formulario.

Para dar un origen del registro del formulario (por ejemplo filtrado por el código) harías:

Form!NombreDelSubformulario.Form.RecordSource="Select <nombre de los campos> from <nombre de la tabla> where código=form!nombrecuadrodetexto.Value"

Para el nombre y el apellido, lo tendrás que hacer que "contenga" como explico en el supuesto que te dije.

Buenos días, Angeles. Mira, esto no me funciona. ¿Qué me falta?

Private Sub NombreCompleto_LostFocus()
Me.Refresh
Dim vNombre As String
vNombre = "*" + Form!NombreCompleto.Value + "*"
Form!subform1.Form.RecordSource = "select CodViv,[Nombre y apellidos],Edad,Teléfono,Municipio,Provincia,Clave,CambioTfno,CambioMunicipio,Principal From ES2012_IND Where [Nombre y apellidos] like '&vNombre&'"
End Sub

Gracias.

Hola,

Tengo otra pregunta: ¿Dónde he de colocar la sentencia que me comentaste ayer de if isnull...?

Hola de nuevo: Quería enseñarte mi bdd de prueba donde estoy intentando obtener todo lo que te he dicho, pero veo que por aquí no puedo subirte nada.... Existe alguna forma de enseñártela? Gracias.

Tendrá que ser en access 2003 (no tengo otro)

[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas