Filtrar una tabla que se encuentra como subformulario en un formulario por valores de campo

Soy principiante en VB. Mi intención es hacer un formulario donde filtrar una tabla según unos campos.

Quiero plantearlo del siguiente modo:

(1) Crear un formulario donde existan como filtro, cuatro campos de la tabla principal. Dos campos deben ser multiselección (p.e. Provincias) y los otros dos deben ser campos numéricos (p.e. Nº seguridad social). En cualquiera de ellos, deberá tener la posibilidad de marcar o no un valor, es decir, tendrá que ser capaz de solo marcar un campo y los demás que estén por defecto.

(2) Una vez seleccionado un filtro (dos, tres o todos) independientemente de cual, he hecho alguna prueba y si le digo al combobox que tenga origen en una consulta, él mismo comprueba si está en la lista, si no se tendría que comprobar.

Los campos son: Acción estratégica (son 3 siglas, "XXX"), Provincia, Código de material, código de proyecto.

(3) El resultado se debe ir actualizando en una tabla mostrada como subformulario.

El formulario es solo para filtrar, sin añadir o modificar ningún campo.

Pido ayuda porque he hecho muchas pruebas y estoy atascado.

Muchas gracias de antemano.

PD: si se necesita cualquier aclaración, sin problemas para explicarlo mejor.

1 respuesta

Respuesta
1

¿Lo qué desea es filtrar los datos del subformulario desde cuadros combinados en el subformulario?

¿El filtro debe ser por reducción?

Es decir que un cuadro me limite los resultados a sus valores coincidentes de los datos mostrados en el subformulario y lo es otros cuandro combinados lo limenten aun mas?

Bueno si ese es el caso creo que si le puedo ayudar.. déjeme saber

Exactamente! Al final lo he conseguido realizando un filtrado a mano machacando el source de la sql, es decir, me he construido a mano una sentencia de filtro (frmCondicion) y he ejecutado:

frmSql= " SELECT * FROM tblResultado WHERE " & frmCondicion

frmSubformulario.Form.RecordSource = frmSql

Lo he podido hacer con un botón de filtrado, de este modo filtro de golpe por los 4 campos estén seleccionado o no.

Mi siguiente paso será mostrar otras tablas. Estas serán tal cual, sin trabajarlas, es decir, las importaré de un Excel y solo quiero mostrarlas.

Me gustaría hacerlo en el mismo formulario con un recuadro de selección, tipo menú de opciones, y que al seleccionar el nombre de una tabla, saliera ella misma en otra ventana (en principio quiero que salte como subformulario de tabla de datos).

Muchas gracias de antemano por tu respuesta.

Un saludo,

Esta bastante rara la forma en la que construiste tu sentencia...

Te iva a sugerir lo siguiente

Tengo una pagina de tutorial de un modulo de contá algo sencillo pero donde aplico la técnica de filtro a lo mejor te puedes ver el video 2 para saber si eso te puede resultar y me dices

www.vivienda2000.yolasite.com

El souce del subform es una consulta.. el el source de los cuadros combinados es la misma consulta...

En los cuadros comibnados ademas le he agregado un campo nulo para que al seleccinarlo me devuelva todos los datos en el subformulario

Algo mas o menos así

SELECT DISTINCT empleadosfilt1.apellidome FROM empleadosfilt1 UNION SELECT "" FROM empleadosfilt1;

y en el criterio de la consulta uno mas o menos la siguiente sintaxis

Como SiInm(EsNulo([Formularios]![hrmain]![Cuadro combinado14]),"*",[Formularios]![hrmain]![Cuadro combinado14])

Aparte a todos los cuadro combinados les he puesto un código para que vuelva a hacer una consulta en el subformulario usando el método requery

Private Sub Cuadro_combinado14_AfterUpdate()
empleadoslitsact
Me.Cuadro_combinado11.Requery
Me.Cuadro_combinado13.Requery
Me.Cuadro_combinado14.Requery
Me.Cuadro_combinado15.Requery
Me.Cuadro_combinado16.Requery
Me.Cuadro_combinado17.Requery
End Sub

---empleadoslistact es sola la llamada a un public sub

lo hago de esa manera porque me ha funcionado mejor que me.subform.requery

y lo escribo así

Public Sub empleadoslitsact()
Dim daubmo As Control
Set daubmo = Forms!hrmain!listaempleados
daubmo.Requery
End Sub

Esto hace que inmediatamente después de seleccionar pues ya me aparece el filtrada la info...

Ojala te sirva esta info... ahora para la pregunta que sigue esta muy fácil.. solo por favor finaliza esta y vuelve a a preguntarme. Son las reglas de la pagina para que nuestras repuestas puedan ayudar a otras personas que andan buscando info.

Muchas gracias, esta tarde mismo lo pruebo!

Un saludo,

Probado, también funciona con el método de consultas como método de filtrado.

Muchas gracias!!

Ahora me toca la segunda parte!

gracias de antemano :)

Que bien que has logrado solucionar tu problema..

Ahora es necesario que cierres esta pregunta y califiques al experto...

Que tengas muy buen día..

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas