Access:crear expresión sql compleja para filtrado de subformulario

Quiero filtrar los datos de un subformulario en función de varios campos seleccionados del formulario. Ya he leído que la mejor forma es creando el origen de datos del subformulario mediante una expresión sql del tipo select from. Mi pregunta es cual es la mejor forma de crear esa expresión sql.

Pongo el ejemplo para que resulte más compresible:

Tengo un formulario con la tabla misvehiculos a la que he vinculado el subformulario todoslosvehiculos mediante el campo 'marca'. La idea es filtrar los registros del subformulario en función de varios campos del formulario como "modelo", "añocomercializacion", "cilindrada", "emsiisonesco2", y quizás algún que otro más, y en función de su selección o no, selección que no sería excluyente sino acumulativa.(La idea es ir reduciendo poco a poco y a voluntad los registros visualizados del subformalario hasta hacerlo coincidir con el registro del formulario)

No tengo problema en construir la expresión sql en función de un solo campo pero desconozco cual será la mejor forma para construir dicha expresión sql "select * from todoslosvehiculos where... En la que se concatenen los campos en la forma descrita.Había pensado en usar if... Then (de hecho la he utilizado para dos campos de filtrado) pero al ser tantas las combinaciones lo encuentro un sistema muy engorroso. Acabo de leer algo sobre la función silmm que creo puede ser interesante, pero seguramente conozcáis alguna forma más simple y efectiva para hacer lo que pretendo.

Agradezco cualquier sugerencia o enlace que me permita estudiar la solución de este problema.

1 Respuesta

Respuesta
1

Si bien puedes hacerlo modificando el recorsource de tu formulario, modificando la SQL como sugieres, en mi opinión quizás te sería mejor hacerlo usando las propiedades Filter y FilterOn del tu subformulario (o formulario).

La idea es esta: si por ejemplo seleccionas como criterio de filtro Modelo->Focus, las instrucciones serían:

Dim miFiltro As String

miFiltro="Modelo='Focus'"

Me.NombreSubformulario.Fom.Filter=miFiltro

Me.NombreSubformulario.Fom.FilterOn=True

Te adjunto un enlace a un ejemplo de mi amigo Neckkito Nck en el que explica paso a paso cómo crear un filtro múltiple a través de cuadros combinados.

Si tienes dudas, o prefieres hacerlo modificando la SQL, te indico cómo hacerlo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas