Access, Excel, VBA y más

Microsoft Access – Como construir un MultiBuscador

Buscar Registros de Diferentes Tablas de Datos desde una Única Ventana usando VBA

La mayoría de las veces cuando creamos nuestra aplicación ya sea una aplicación pequeña o grande, de interfaz sencilla o al estilo de un CRM (Customer Relationship Management), una de nuestras intenciones, bien por nosotros mismos, por los demás, o porque así nos lo exigen los clientes o usuarios a los que va destinada nuestra aplicación, es poder buscar algún dato  concreto de una serie de registros ubicados en nuestras tablas. Esto que os comento, alguna gente lo soluciona indicando que para buscar un dato en un formulario en concreto pulsemos las teclas CTRL+B, lo cual nos muestra la ventana de “Buscar” que lleva el Office incorporado en sus aplicaciones. Otros utilizan una ventana donde “únicamente” permite buscar por un solo campo:

Pero, si queremos hacer algo más profesional y versátil lo suyo es construir una ventana donde nos permita buscar por más de un dato como Nombre,  Ciudad, Provincia, Fecha, Teléfono Fijo, Móvil, Fax, etc.

Normalmente, y así lo hacía yo hasta hace no mucho, cuando disponemos de una aplicación sobre todo de gestión, lo que se suele hacer es crear un buscador para cada cosa, un buscador para clientes, un buscador para proveedores, un buscador para materiales, un buscador para facturas, etc…, con lo cual podemos llegar a tener una serie de ventanas, que realmente son objetos y que ocupan un espacio en nuestra aplicación, dedicadas para buscar algo concreto.

La idea que hoy traigo es explicaros cómo en una sola ventana poder buscar registros en diferentes tablas, así como indicarle al cuadro de lista qué debe mostrar, Nº de columnas, ancho de las columnas, etc.

Este ejemplo lo vamos a dividir en tres partes: buscar, abrir el registro desde el buscador y abrir el buscador desde el formulario de registros.

1) Buscar.

Para hacer esto, lo primero que debemos hacer es diseñar una ventana parecida a esta:

Como podréis observar en este caso he añadido más opciones que serán visibles únicamente cuando marque en el primer cuadro la opción de “Cliente”.

Para este ejemplo, en el primer cuadro de lista   los valores se los indico a mano:

En la pestaña Eventos “Al hacer click”, deberemos poner este código:

De tal manera que si pulsamos sobre Cliente en el cuadro “Buscar por:” nos quedaría así:

Si os fijáis nos indica (círculo rojo) cuántos registros encuentra.

Para el segundo cuadro de lista

en la pestaña Eventos “Al hacer click”, deberemos poner este código:

Y por último, nos queda indicarle al campo por el que buscamos que nos muestre los resultados según lo indicado en el mismo, para ello,

en la pestaña Eventos “Después de actualizar”, deberemos poner este código. Nota: Como el código de este evento es muy extenso se ha optado por no copiarlo en el artículo por lo que te aconsejo que te descargues el ejemplo y lo veas funcionar.

Lo cual, y siguiendo nuestro ejemplo si yo marco en Cliente y después por Nombre, y ponemos “ca” y pulsamos Intro, éste será el resultado:

¿Y porqué sucede esto?. Porque según el código que le hemos indicado esos son los registros que contienen las letras “ca” dentro del campo Nombre (marcado en amarillo)

Lo que acabo de resaltar en negrita es lo que busca dentro de la tabla Clientes, aquellos que NO son Históricos ((([Clientes].[Historico])=0)) y que dentro del campo Nombre coincida en cualquier parte de la longitud del mismo like ‘*» & Busca.Text & «*’ con lo que se haya puesto en el campo que búsqueda. Lo importante es y como ya se ha explicado en otro post de este blog son los asteriscos (*) delante y detrás del campo que hace de búsqueda. Si os fijáis, la coincidencia puede estar al principio, en medio o al final, pero todas ellas se verán en el buscador.

2) Abrir el registro desde el buscador.

En esta segunda parte y ya sobre los resultados arrojados por el buscador voy a indicar qué hacer para que se abra el formulario en concreto y sobre ese registro en concreto. Para ello en el cuadro de lista que nos muestra los registros encontrados en la pestaña Eventos “Al hacer doble clic”, deberemos poner este código:

Nos mostrará esta ventana:

Con lo que habréis podido comprobar que me abre la ventana de Clientes justo en el registro que quiero visualizar.

3) Abrir el buscador desde el formulario de registros.

Si observáis el formulario anterior tiene un botón el cual si lo pulsamos nos mostrará nuestro buscador con el cuadro seleccionado, los campos a buscar y los registros que hay. Para ello en el cuadro de propiedades en la pestaña Eventos “Al hacer clic”, deberemos poner este código:

Y tras pulsarlo nos mostrará esto:

Como no quiero hacer esto mucho más extensivo, en el ejemplo hay cuatro casos diferentes (Cliente, Escrito, Gasto, Organo/Tribunal), y así podréis ver cómo funciona ya que tiene cada parte bien diferenciada.

Puedes descargarte el fichero con el multibuscador desde el siguiente enlace.

Salir de la versión móvil