Anda di halaman 1dari 3

ABRIR FORMULARIO FILTRANDO1

Queremos seleccionar un valor a través de un cuadro


combinado y que nuestro formulario se abra precisamente
en el registro que estamos buscando. Pues con este
ejemplo podremos hacer eso.

Además, aprovecharemos para ver cómo se busca si un


valor es numérico o de tipo texto (el código VBA es
ligeramente diferente).

Pero antes, como siempre, los preparativos iniciales.

PREPARATIVOS INICIALES

Vamos a crear una nueva BD. En ella crearemos una nueva tabla, a la que llamaremos TDatos,
con los siguientes campos:

– [Id] → autonumérico (para este ejemplo le quitamos que sea clave principal)
– [Nom] → texto (nos recogerá un nombre)
– [Prof] → texto (nos recogerá una profesión)

Metemos varios registros en dicha tabla, para tener “carne fresca” con la que operar.

Ahora creamos un formulario basado en esa tabla TDatos. Lo llamamos FDatos.

NUESTRO “PANEL DE BÚSQUEDA”

Vamos a crear un formulario en blanco. Lo guardaremos con el nombre de FBusca. En ese


formulario, en vista diseño, hacemos lo siguiente:

1.- Insertamos un cuadro combinado, que nos servirá para buscar por ID. Cuando se nos abra
el asistente lo configuramos de la siguiente manera:

– Deseo buscar los valores en una tabla


– Seleccionamos la tabla TDatos
– Añadimos, por este orden, los campos [Id] y [Nom]
– Si queremos podemos ordenar ascendente por [Nom]
– Redimensionamos a nuestro gusto
– Decimos que el valor a guardar es el del campo [Id]
– Y en la etiqueta, le ponemos algo así como “Buscar persona:”

2.- Sacamos las propiedades de ese combo y nos vamos a pestaña Otras->Nombre, y
sustituimos el valor que hay por cboBuscaId

3.- Creamos un segundo cuadro combinado. Cuando nos salga el asistente lo configuramos así:

– Deseo buscar los valores en una tabla


– Seleccionamos TDatos
– Añadimos el campo [Prof]
– Lo podemos ordenar ascendente
– Redimensionamos a nuestro gusto
– Y como etiqueta podemos ponerle “Buscar por profesión:”

4.- Sacamos las propiedades de ese combo y nos vamos a la pestaña Otras->Nombre, y

1 La BD de ejemplo os la podéis bajar aquí.

1
Visítame en http://siliconproject.com.ar/neckkito/
sustituimos el valor que hay por cboBuscaProf

PROGRAMANDO NUESTROS COMBOS

Ya tenemos prácticamente el pastel cocido. Sólo nos hace


falta un poquito de VBA para que funcione.

Pero, antes de eso, hay que tener en cuenta un detalle (que


ya veremos con más detenimiento en cada uno de los
códigos): si el valor a buscar es tipo texto debemos situarlo
entre comillas simples ('); si es tipo numérico no debemos
utilizar comillas simples.

Vamos allá:

5.- Sacamos las propiedades de nuestro combo cboBuscaId y nos vamos a la pestaña Eventos
->Después de actualizar.

Si nos situamos sobre el espacio en blanco que hay a su derecha veremos que nos aparece un
pequeño botón de puntos suspensivos. Hacemos click sobre él y, en la ventana que nos
aparece, le decimos que queremos generar código.

6.- Se nos abrirá el editor de VB (VBE), con dos líneas por defecto (Private Sub... y End Sub).
Esas líneas no debemos tocarlas. En medio de ellas escribiremos el siguiente código:


Private Sub cboBuscaId_AfterUpdate()
'Creamos la variable y le asignamos el valor del combo
Dim vId As Variant
vId = Me.cboBuscaId.Value
'Si el combo está vacío sale del proceso
If IsNull(vId) Then Exit Sub

'Abrimos el formulario filtrando por el valor seleccionado


DoCmd.OpenForm "FDatos", , , "[Id]=" & vId
End Sub

Como [Id], que es el valor que le hemos dicho que guardara el combo, es un número, en la
parte del código que filtra por ese valor no hemos utilizado comillas simples. Es decir:

"[Id]=" & vId

Ahora veremos cómo utilizar las comillas simples con texto.

7.- Sacamos las propiedades del combo cboBuscaProf y nos vamos a la pestaña Eventos->
Después de actualizar. A este evento le generamos el siguiente código (os recuerdo que el
proceso para eso está explicado en el punto 5).


Private Sub cboBuscaProf_AfterUpdate()
'Creamos la variable y le asignamos el valor del combo
Dim vProf As Variant
vProf = Me.cboBuscaProf.Value
'Si no hay valor sale del proceso
If IsNull(vProf) Then Exit Sub

2
Visítame en http://siliconproject.com.ar/neckkito/
'Abrimos el formulario filtrado por profesión
DoCmd.OpenForm "FDatos", , , "[Prof]='" & vProf & "'"
End Sub

Ahora sí podemos ver que hemos “enmarcado” la variable


entre comillas simples, a través del filtro "[Prof]='" & vProf
& "'"

Bueno... Y eso es todo. Espero que este ejemplo os sea de utilidad


para vuestras BD's.

¡Suerte!

3
Visítame en http://siliconproject.com.ar/neckkito/

Anda mungkin juga menyukai