Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Formula Rio Buscado Ralte Cleo
Formula Rio Buscado Ralte Cleo
La segunda es que el cuadro de lista nos permite seleccionar varios valores de los encontrados,
mostrándonos, tras un click de botón, la información referente a aquello que hayamos
seleccionado.
El botón para añadir registros lo vamos a llamar cmdAñadir 2 porque veremos que tiene un
tratamiento especial en los códigos.
Los botones para trabajar con registros han sido creados usando el asistente, por lo que no
1
Visítame en http://neckkito.siliconproject.com.ar
cabe destacar nada de ellos. El botón para cerrar el formulario, que se llama cmdCerrar, tiene
el siguiente código3 en el evento “Al hacer click”:
…
Private Sub cmdCerrar_Click()
DoCmd.OpenForm "FMenu"
DoCmd.Close acForm, Me.Name
End Sub
…
…
Private Sub cmdNuevaR_Click()
AbreFormAgenda 1
DoCmd.Close acForm, Me.Name
End Sub
3 Para generar código debemos sacar las propiedades del control → Pestaña Eventos, y nos situamos en la parte “blanca” a la
derecha del evento que queremos programar. Veremos un pequeño botón de puntos suspensivos. Si hacemos click sobre él nos
aparecerá una ventana que nos pedirá qué operación deseamos realizar. Le indicamos que queremos “generar código”.
2
Visítame en http://neckkito.siliconproject.com.ar
…
…
Private Sub cmdBuscar_Click()
DoCmd.OpenForm "FBuscador"
DoCmd.Close acForm, Me.Name
End Sub
…
Como vemos se abrirá un formulario llamado FBuscador, que comentaremos más adelante.
…
Private Sub cmdSalir_Click()
DoCmd.Quit
End Sub
…
En el encabezado añadimos un botón que nos servirá para cerrar el formulario, que
llamaremos cmdcerrar.
A continuación nos creamos un cuadro de lista que llamaremos lstPersonas. Cuando nos
aparezca el asistente lo configuramos de la siguiente manera:
Sacamos las propiedades de lstPersonas y nos vamos a Pestaña Otras → Selección múltiple, y
fijamos su valor en “Extendida”.
Para acabar, en el pie del formulario, añadimos un botón de comando, que llamaremos cmdVer.
3
Visítame en http://neckkito.siliconproject.com.ar
Vamos a por los códigos de los controles.
…
Private Sub cmdCerrar_Click()
DoCmd.OpenForm "FMenu"
DoCmd.Close acForm, Me.Name
End Sub
…
…
Private Sub cmdVer_Click()
'Declaramos las variables
Dim ctlList As Control
Dim Opcion As Variant
Dim miSeleccion As String
'Iniciamos la estructura del filtro
miSeleccion = "[ID] IN ("
4
Visítame en http://neckkito.siliconproject.com.ar
Debemos crearnos un filtro para abrir nuestro formulario
FAgenda filtrado. Como el filtro va a depender de la
selección que hagamos en el cuadro de lista inicializamos el
filtro con algo que no va depender de dicha selección. Ese
“algo” es
Una vez examinados los elementos seleccionados, ¿cómo sabemos que el usuario no ha
seleccionado ninguno? Pues para comprobarlo contamos los caracteres del filtro miSelección.
Si recordamos, inicializábamos el filtro con <miSeleccion = "[ID] IN (">, y esa expresión lleva
9 caracteres. Si no ha “crecido” es porque no se ha seleccionado ningún valor del cuadro de
lista. Ese control nos lo proporciona la línea:
If Len(miSeleccion) = 9 Then
Si el proceso ha sido correcto la variable miSelección contendrá una serie de valores, pero
como al construirla íbamos añadiendo una coma al final ahora debemos eliminar esa última
coma para evitar que el código nos dé errores, ya que contendría un error de sintaxis. Además,
debemos cerrar el paréntesis de la lista. Eso es lo que hace la línea:
Únicamente nos queda ahora el código que nos va a ir filtrando según escribamos en el textbox
txtBuscar. Para ello, en dicho control, en el evento “Al cambiar” le generamos el siguiente
código:
…
Private Sub txtBuscar_Change()
Me.lstPersonas.RowSource = "SELECT TAgenda.ID, TAgenda.Nombre FROM TAgenda" _
& " WHERE TAgenda.Nombre " _
& "LIKE '*" & Me.txtBuscar.Text & "*' ORDER BY Nombre"
Me.lstPersonas.Requery
End Sub
…
5
Visítame en http://neckkito.siliconproject.com.ar
Lo que hace este código es ir modificando, a medida que se
escribe, el origen del registro de lstPersonas. Para ello, va
creando una SQL que busca por aproximación en función de
lo que estemos escribiendo. Al final de cada pulsación de
teclado, además de realizar la SQL de filtro, va refrescando
la información de la lista.
…
'------------------------------------------------------------------------------------------------
' Procedimiento para abrir el formulario "Agenda" en distintos modos
' Modos: 1=Añadir, 2=Editar, 3=Consultar
'------------------------------------------------------------------------------------------------
Como vemos el procedimiento admite dos parámetros, uno obligatorio (Modo) y otro Opcional
(Filtro).
Los parámetros que le podemos pasar son los números 1, 2 o 3. Con el 1 abriríamos el
formulario para poder añadir registros, con el 2 para editarlos y el 3 para consultarlos.
Lo que hacemos en la primera línea de código es abrir FAgenda en modo diseño y de manera
oculta, para que el usuario no vea que estamos manipulando el formulario.
Si lo abrimos en modo 1 para añadir lógicamente debe verse el botón para añadir registros,
pero si lo abrimos en modo 2 o 3 no debe abrirse. Esto es lo que hace el bloque IF...END IF,
situando la propiedad VISIBLE del botón en TRUE o FALSE según el modo.
Una vez cambiada la propiedad VISIBLE se cierra FAgenda guardando los cambios.
El bloque siguiente, el SELECT CASE, lo que hace es abrir el formulario FAgenda en vista
formulario en el modo que hemos seleccionado. Si el modo es 1 para añadir añadimos, a la
orden de apertura, el argumento acFormAdd; si el modo es 2 para modificar no le pasamos
argumento alguno; si el modo es 3 para consultar le pasamos el argumento acFormReadOnly.
4 Para insertar un módulo estándar podemos abrir el editor de VB (ALT+F11) y nos vamos a Menú → Insertar → Módulo
6
Visítame en http://neckkito.siliconproject.com.ar
¿Fácil, verdad? ;-)
¡suerte!
7
Visítame en http://neckkito.siliconproject.com.ar