Filtrar Sub-formulario desde dos campos

Es lo siguiente: Tengo un subformulario (x) dentro del formulario (y); mi inteción es filtrar desde dos campos que se encuentran en el formulario principal, uno de ellos contendrá el nombre de la columna a filtrar y el otro la palabra con la cual filtrare dicha columna. He intentado el siguiente código pero no he tenido éxito.

Dim Fil1 As String
Dim Fil2 As String
Dim Fil3 As String
Dim Cl1 As String
Dim Cl2 As String
Dim Cl3 As String
Dim sF1 As String
Dim sF2 As String
Dim sF3 As String
Dim sF12 As String
Dim sF123 As String

Fil1 = Me.F1
Fil2 = Me.F2
Fil3 = Me.F3
Cl1 = Me.C1
Cl2 = Me.C2
Cl3 = Me.C3

sF1 = "Fil1 LIKE'*" & Cl1 & "*'"
sF2 = "Fil2 LIKE'*" & Cl2 & "*'"
sF3 = "Fil3 LIKE'*" & Cl3 & "*'"                

' La idea es que el nombre del campo a filtrar pueda ser modificado desde un combobox.

sF12 = sF1 & " AND " & sF2
sF12 = sF1 & " AND " & sF2 & " AND " & sF3
Me.[Subformulario Tbl_Matriz_Riesgos].Form.Filter = sF123
Me.[Subformulario_Tbl_Matriz_Riesgos].Form.FilterOn = True

Quedo muy atento a su ayuda, puesto que me urge poder terminar el diseño de este aplicativo.

2 respuestas

Respuesta
2

Voy a aportar la solución a tu problema, porque es un error de sintaxis en la construcción del filtro.

Veamos tu tienes esto:

sF1 = "Fil1 LIKE'*" & Cl1 & "*'"
sF2 = "Fil2 LIKE'*" & Cl2 & "*'"
sF3 = "Fil3 LIKE'*" & Cl3 & "*'"    

Cuando tendría que ser así:

sF1 = Fil1 & " LIKE '*" & Cl1 & "*'"
sF2 = Fil2 & " LIKE '*" & Cl2 & "*'"
sF3 = Fil3 & "LIKE '*" & Cl3 & "*'"    

Es decir, lo que tienes recogido en variables tiene que ir obligatoriamente fuera de las comillas (igual que hacías con Cl1...). Además has de acordarte de dejar espacios en blanco y no ponerlo todo junto (no separas los LIKE de las comillas simples).

Así te tendría que funcionar, pero yo le añadiría al código controles por si no seleccionas algún valor.

Saludos!


Respuesta
1

Oscar: Lo que interpreto que pretendes hacer es>>

-Combo para elegir los campos de la Fuente de Datos del SubForm

-Una vez elegido el "Campo", un segundo Combo que muestre los "Distintos" valores que se encuentran en ese campo. Elegir valor y que muestre los Registros que cumplan esa condición.

Ejemplo: Tabla con Nombre, Apellido1,... AñoNacimiento,... FechaContrato,... SueldoActual...

Personalmente y si es así, habrá que saber primero el tipo de datos de ese campo, para aplicar el Filtro adecuado. Eso es lo que creo.

Puede ser que al ver éste texto alguien se anime y emita una respuesta.

Si realmente lo que buscas es lo que te he expuesto en las dos líneas de arriba, me comentas porque sin verlo dificilisimo si que le veo cierta complicación, sin haber profundizado.

Mis saludos >> Jacinto

Oscar: Se me ha olvidado preguntarte: ¿Por qué un Formulario y un SubFormulario?

¿Por qué no utilizar un Formulario Continuo y los Filtros en la Cabecera?

Mis saludos >> Jacinto

Hola Jacinto, En efecto es lo que entendiste; los tipos de datos son texto y memo.

Oscar: Aquí ya es tarde. Si mañana veo que no hay alguna respuesta, le echo una ojeada y te comento. Mis saludos >> Jacinto

Oscar: Ya he observado que Sveinbjorn te ha aportado una solución que te funcionará.

No obstante y para que te sirva como alternativa para ésta ocasión o para otra, te he preparado un ejemplo que te dejo en éste enlace de Mediafire.

http://www.mediafire.com/download/duwiska2k9ta2b4/BuscaEnCampoSeleccionado.rar 

Mis saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas