Вы находитесь на странице: 1из 3

ABRIR FORMULARIO FILTRANDO1 Queremos seleccionar un valor a travs de un cuadro combinado y que nuestro formulario se abra precisamente en el registro

que estamos buscando. Pues con este ejemplo podremos hacer eso. Adems, aprovecharemos para ver cmo se busca si un valor es numrico o de tipo texto (el cdigo 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] autonumrico (para este ejemplo le quitamos que sea clave principal) [Nom] texto (nos recoger un nombre) [Prof] texto (nos recoger una profesin)

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 BSQUEDA Vamos a crear un formulario en blanco. Lo guardaremos con el nombre de FBusca. En ese formulario, en vista diseo, 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 Aadimos, 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 pestaa 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 Aadimos el campo [Prof] Lo podemos ordenar ascendente Redimensionamos a nuestro gusto Y como etiqueta podemos ponerle Buscar por profesin:

4.- Sacamos las propiedades de ese combo y nos vamos a la pestaa Otras->Nombre, y
1 La BD de ejemplo os la podis bajar aqu.

Vistame en http://neckkito.eu5.org

sustituimos el valor que hay por cboBuscaProf PROGRAMANDO NUESTROS COMBOS Ya tenemos prcticamente el pastel cocido. Slo 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 ms detenimiento en cada uno de los cdigos): si el valor a buscar es tipo texto debemos situarlo entre comillas simples ('); si es tipo numrico no debemos utilizar comillas simples. Vamos all: 5.- Sacamos las propiedades de nuestro combo cboBuscaId y nos vamos a la pestaa Eventos ->Despus de actualizar. Si nos situamos sobre el espacio en blanco que hay a su derecha veremos que nos aparece un pequeo botn de puntos suspensivos. Hacemos click sobre l y, en la ventana que nos aparece, le decimos que queremos generar cdigo. 6.- Se nos abrir el editor de VB (VBE), con dos lneas por defecto (Private Sub... y End Sub). Esas lneas no debemos tocarlas. En medio de ellas escribiremos el siguiente cdigo: 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 vaco 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 nmero, en la parte del cdigo que filtra por ese valor no hemos utilizado comillas simples. Es decir: "[Id]=" & vId Ahora veremos cmo utilizar las comillas simples con texto. 7.- Sacamos las propiedades del combo cboBuscaProf y nos vamos a la pestaa Eventos-> Despus de actualizar. A este evento le generamos el siguiente cdigo (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

Vistame en http://neckkito.eu5.org

'Abrimos el formulario filtrado por profesin DoCmd.OpenForm "FDatos", , , "[Prof]='" & vProf & "'" End Sub Ahora s podemos ver que hemos enmarcado la variable entre comillas simples, a travs del filtro "[Prof]='" & vProf & "'" Bueno... Y eso es todo. Espero que este ejemplo os sea de utilidad para vuestras BD's. Suerte!

Vistame en http://neckkito.eu5.org

Вам также может понравиться