Página principal



Formularios en Microsoft Access

Descargar 40.82 Kb.

Formularios en Microsoft Access





Descargar 40.82 Kb.
Fecha de conversión13.05.2017
Tamaño40.82 Kb.




















Práctica 2:

Sistema de Gestión

de Bases de Datos




Parte V: Introducción a Visual Basic





Ofimática 2003/2004


Dpto. Lenguajes y Sistemas Informáticos

1. El modelo de programación de Visual Basic.


Un evento es una acción reconocida por un formulario, un informe o un control. Los objetos de Visual Basic reconocen automáticamente un conjunto predefinido de eventos y responden a cada evento en particular. Cuando se desea que un control responda a un evento de una forma determinada, se puede escribir un procedimiento de evento en Visual Basic para dicho evento.


Algunos eventos activan automáticamente otros eventos. Por ejemplo, cuando ocurre el evento Al hacer doble clic, ocurren también los eventos Al bajar mouse, Al subir mouse y Al hacer clic.


En una aplicación controlada por eventos, el orden en que se ejecuta el código depende de los eventos que se produzcan, lo que a su vez depende de lo que haga el usuario.


El código de Visual Basic se estructura en procedimientos. Hay dos tipos de procedimientos:


  • Procedimientos Function: pueden aceptar argumentos y siempre devuelven un valor, pudiendo incluirse en expresiones.

  • Procedimientos Sub: pueden aceptar argumentos pero no devuelven ningún valor, por lo que no pueden usarse en expresiones.


Los procedimientos de Visual Basic se almacenan en módulos. Los módulos son una forma de organizar los procedimientos. Una base de datos puede contener dos tipos de módulos:


  • Módulos de formulario o de informe. Cada formulario o informe de la base de datos tiene un módulo incorporado que contiene los procedimientos que permiten responder a los eventos que sucedan en ese formulario o informe. Este módulo forma parte del diseño del formulario o informe: Access crea automáticamente el módulo al crear el formulario o el informe.

  • Módulos globales. Son objetos independientes de la base de datos y se utilizan para almacenar código que se desea ejecutar desde cualquier lugar de la aplicación.


Una aplicación sencilla puede constar de un solo formulario e incluir todo el código de la aplicación en el módulo asociado al formulario. Sin embargo, a medida que las aplicaciones crecen en tamaño y complejidad, puede darse el caso de que sea necesario ejecutar el mismo código en varios formularios e informes. Para ello podemos crear un módulo global independiente que contenga los procedimientos a los que se puede invocar desde cualquier formulario o informe. Con el tiempo, podemos crear una biblioteca de módulos globales que contengan procedimientos comunes útiles.


Un módulo puede contener:


  • Declaraciones. Se aplican a todos los procedimientos del módulo.

  • Procedimientos de evento. Se trata de procedimientos Sub que se aplican a un objeto determinado y que se ejecutan como respuesta a un evento. Los procedimientos de evento siempre se almacenan en el módulo de un formulario o informe.

  • Procedimientos generales. No están asociados directamente a un objeto o evento. Se ejecutan solamente cuando son llamados explícitamente. Pueden incluirse tanto en un módulo de formulario o de informe, como en un módulo global. Los procedimientos generales pueden ser Sub o Function.


El hecho de que un procedimiento se encuentre en el módulo de eventos de un formulario o informe, o bien en un módulo global, puede determinar dónde se puede utilizar dicho procedimiento. Un procedimiento incluido en un módulo de formulario o informe es privado para ese formulario o informe y no puede utilizarse en ningún otro lugar. Un procedimiento incluido en un módulo global puede utilizarse en toda la aplicación, a menos que se convierta en privado mediante la palabra reservada Private.


Un nombre de procedimiento de evento consta de:


  • la palabra Form (si es un evento de un formulario), la palabra Report (si es un evento de un informe), o bien el nombre del control (si es un evento de un control),

  • seguido de un signo de subrayado (_),

  • seguido del nombre del evento.


Por ejemplo, si deseamos que un botón de comando llamado MiBotón invoque un procedimiento de evento al hacer clic sobre él, utilizamos el procedimiento MiBotón_Click. No obstante, en general no hace falta escribir el nombre del procedimiento de evento, ya que Access crea automáticamente una plantilla de código de procedimiento de evento para cada objeto y sus posibles eventos.


2. Colecciones.


Una colección es un grupo de objetos del mismo tipo. Así por ejemplo, la colección Formularios (Forms) contiene los formularios abiertos de la base de datos. Hay muchas y diferentes colecciones disponibles en Access y todas ellas tienen una propiedad en común: Count. La propiedad Count muestra el número total de objetos contenidos dentro de una determinada colección.


El ejemplo siguiente muestra dos formas posibles de acceder a los objetos de una colección. El procedimiento TodosLosFormulariosAbiertos enumera la colección Formularios (Forms) mediante un bucle For—To, mostrando en la ventana de Depuración el nombre de cada formulario de la colección. Por cada formulario, enumera la colección Controles (Controls) de cada formulario mediante un bucle For—Each, mostrando el nombre de cada control del formulario.


Sub TodosLosFormulariosAbiertos()

Dim i As Integer, ctl As Control

For i = 0 To Forms.Count - 1

Debug.Print Forms(i).Name

For Each ctl In Forms(i).Controls

Debug.Print ">>>"; ctl.Name

Next ctl

Next

End Sub


Cada vez que un formulario se abra, será añadido a la colección Formularios. El primer formulario tendrá la posición ordinal cero, el segundo tendrá la posición ordinal uno, y así sucesivamente. Los números ordinales de los objetos son dinámicos: cuando se cierra un formulario, se elimina de la colección y los formularios restantes se re-enumeran partiendo de cero.


Mediante el uso de las colecciones Formularios e Informes, podemos especificar tanto el nombre como la posición ordinal del objeto dentro de la colección. La siguiente función, EstáCargado, utiliza el nombre del formulario dentro de la colección Forms para averiguar si está abierto en modo diseño (una vez ha determinado que el formulario está abierto, mediante la función SysCmd):


Function EstáCargado(ByVal cadNombreFormulario As String) As Integer

' Devolver True si está cargado el formulario especificado.

Const conVistaDiseño = 0

Const conEstadoObjetoCerrado = 0


EstáCargado = False

If SysCmd(acSysCmdGetObjectState, acForm, cadNombreFormulario) <> _

conEstadoObjetoCerrado Then

If Forms(cadNombreFormulario).CurrentView <> conVistaDiseño Then

EstáCargado = True

End If

End If

End Function


3. Creación de código genérico para formularios e informes.

Los nombres de los formularios e informes son a menudo muy largos. Al utilizar un módulo de formulario o informe, podemos hacer referencia al formulario o informe de manera genérica desde el código de varias maneras:


  • Screen.ActiveForm y Screen.ActiveReport: se refieren, respectivamente, al formulario o informe que actualmente tiene el enfoque. Solamente pueden ser utilizados cuando el formulario o informe se encuentra activo.

  • Me: se refiere al objeto en el que se está ejecutando el código. Sólo puede utilizarse en un módulo de formulario o informe.

  • CodeContextObject: tiene la misma funcionalidad que la palabra clave Me, excepto que podrá ser utilizado tanto en un módulo de formulario o informe como en un módulo global. Las funciones que ejecutan CodeContextObject solamente podrán ser llamadas desde un objeto formulario o informe.

  • Variables que representen los nombres y objetos de formulario o informe.


Una de las razones para utilizar módulos globales es que permiten crear código reutilizable. Podemos crear variables de los tipos Form y Report para representar formularios o infomes:


Dim miFormulario As Form

Dim miInforme As Report


Un vez que la variable ha sido declarada, podrá ser inicializada. Debido a que un formulario o informe es un objeto, debemos inicializar el objeto utilizando la sentencia Set. El siguiente ejemplo cambia el título del formulario que se le pasa como argumento:


Function ChangeCaption (ByVal cadNombreFormulario As String)

Dim miFormulario As Form

Set miFormulario = Forms (cadNombreFormulario)

MiFormulario.Caption = “¡Hola Mundo!”

End Funcion


4. La clase DoCmd.


Access nos facilita la clase DoCmd para que podamos interactuar desde Visual Basic con el gestor de bases de datos. Access instancia siempre un objeto de esta clase y con este mismo nombre, por lo que no tenemos que instanciarlo explícitamente, sino que directamente podremos acceder a sus métodos, usando la siguiente sintaxis:


DoCmd.método [arg1, arg2, ...]


La mayoría de los métodos del objeto DoCmd tienen argumentos, algunos son obligatorios, mientras que otros son opcionales. Si se omiten los argumentos opcionales, los argumentos asumen los valores predeterminados para el método particular. Se puede dejar en blanco un argumento opcional en mitad de la sintaxis, pero se debe incluir la coma del argumento. Si deja en blanco un argumento de la cola, no se usa una coma a continuación del último argumento que se especifique.


Se pueden utilizar los métodos del objeto DoCmd para ejecutar las acciones de Microsoft Access desde Visual Basic. Una acción realiza tareas como por ejemplo cerrar ventanas, abrir formularios y establecer el valor de los controles. Por ejemplo, se puede utilizar el método OpenForm del objeto DoCmd para abrir un formulario. OpenForm utiliza siete argumentos, aunque sólo el primer argumento, el nombre del formulario, es obligatorio:


DoCmd.OpenForm nombreformulario[, vista][, nombrefiltro][, condiciónwhere]

[, mododatos][, modoventana][, abrirargs]



Argumento

Descripción

nombreformulario

Una expresión de cadena que es el nombre válido de un formulario en la base de datos activa.

vista

Una de las siguientes constantes intrínsecas:

  • acDesign

  • acFormDS

  • acNormal (predeterminado, se asume si se deja el argumento en blanco)

  • acPreview

  • acNormal abre el formulario en la vista Formulario.

nombrefiltro

Una expresión de cadena que es el nombre válido de una consulta en la base de datos activa.

condiciónwhere

Una expresión de cadena que es una cláusula WHERE de SQL válida sin la palabra WHERE.

mododatos

Una de las siguientes constantes intrínsecas:

  • acFormAdd

  • acFormEdit

  • acFormPropertySettings (predeterminado, se asume si se deja el argumento en blanco)

  • acFormReadOnly

Si se deja en blanco este argumento, Microsoft Access abre el formulario en el modo de datos establecido por las propiedades PermitirEdiciones, PermitirEliminación, PermitirAgregar y EntradaDeDatos del formulario.

modoventana

Una de las siguientes constantes intrínsecas:

  • acDialog

  • acHidden

  • acIcon

  • acWindowNormal (predeterminado, se asume si se deja el argumento en blanco)

abrirargs

Una expresión de cadena. Esta expresión se utiliza para establecer la propiedad AbrirArgs del formulario. Este argumento sólo está disponible en Visual Basic.

El siguiente ejemplo muestra cómo se puede abrir el formulario Empleados en la base de datos activa. Sólo se incluyen los empleados con el título Representante de ventas.


DoCmd.OpenForm “Empleados”, , ,”[Título] = ‘Representante de ventas’”


Para obtener más información sobre la acción de Microsoft Access que se corresponda con un método DoCmd, buscamos en el índice de la ayuda el nombre de la acción.


Práctica


Vamos a crear un formulario de búsqueda que nos permita localizar un afiliado o una empresa en nuestra base de datos de forma sencilla. El formulario contiene los siguientes elementos:


  • Un grupo de opciones para indicar la entidad sobre la que deseamos realizar la búsqueda. Este grupo se llamará BuscarEn y tiene tres opciones, Afiliados, Empresas y Actividades.

  • Dos grupos de opciones para establecer los criterios de búsqueda. Los grupos de opciones se llamarán CriteriosAfiliados y CriteriosEmpresasActividades, y van colocados en el formulario uno encima del otro, de manera que en cada caso veremos solamente uno de ellos según esté establecida la propiedad Visible. Cada uno de estos grupos tiene dos opciones: búsqueda por código y búsqueda por apellido (para los afiliados) o nombre (para empresas y actividades).

  • Un control de cuadro de texto para introducir el dato a buscar.

  • Un botón de comando para buscar el afiliado o empresa y abrir el formulario correspondiente.

  • Un botón de comando para salir del formulario de búsqueda.



Lo primero que debemos hacer es conseguir que, al abrir el formulario, el foco se establezca sobre el cuadro de texto. Además, dependiendo del valor del grupo de opciones BuscarEn haremos visible el grupo de opciones CriterioAfiliados o el grupo CriterioEmpresas. Para ello, en el evento Al activar de las propiedades del formulario, incluimos el código:


Private Sub Form_Activate()

Me!TextoBusqueda.SetFocus

If Me!BuscarEn = 1 Then

Me!CriterioAfiliados.Visible = True

Me!CriterioEmpresasActividades.Visible = False

Else

Me!CriterioAfiliados.Visible = False

Me!CriterioEmpresasActividades.Visible = True

End If

End Sub


Los criterios de búsqueda cambiarán dependiendo de que la opción que elijamos en el grupo BuscarEn. En el evento Después de actualizar de las propiedades del grupo de opciones, introduciremos el código:


Private Sub BuscarEn_AfterUpdate()

Select Case Me!BuscarEn

Case 1

Me!CriterioAfiliados.Visible = True

Me!CriterioEmpresasActividades.Visible = False

Case 2, 3

Me!CriterioAfiliados.Visible = False

Me!CriterioEmpresasActividades.Visible = True

End Select

End Sub


Ya solamente nos falta conseguir que el botón buscar sea capaz de averiguar dónde tiene que buscar la información que hemos introducido en el cuadro de texto. Una vez que lo haya averiguado debe abrir el objeto donde se encuetra, y mostrarnos únicamente el registro que contiene ese dato. Para ello, utilizamos el método OpenForm del objeto DoCmd. Debemos establecer el dato que queremos buscar como una expresión de cadena que actúe de la misma forma que una cláusula WHERE de SQL. Para ello, utilizamos la siguiente función, que devuelve la expresión de cadena formada por el nombre del campo en el que buscamos y el valor que buscamos (podemos almacenar esta función en un módulo general llamado Filtros):


Public Function Crear_Filtro(Campo, Mascara) As String

Crear_Filtro = "(" + Campo + " LIKE " + “'” + Mascara + “'” + ")"

End Function


El la propiedad Al hacer clic del botón de comando Buscar haremos lo siguiente:

  1. Establecemos en una variable Formulario, de tipo String, el nombre del formulario a abrir.

  2. Establecemos en otra variable CriterioBusqueda, de tipo String, la expresión WHERE que pasaremos al método OpenForm del objeto DoCmd. Si no se introdujo nada en el cuadro de texto

  3. llamaremos a la función Crear_Filtro para establecer el criterio de búsqueda




Similar:

Formularios en Microsoft Access iconEspecificaciones de Access
Tamaño de archivo de una base de datos de Microsoft Access (. mdb) (base de datos de Microsoft Access: colección de datos y objetos...
Formularios en Microsoft Access iconMicrosoft Word v-formularios doc
Manual del Usuario de Microsoft Access Formularios Página 1
Formularios en Microsoft Access iconQué es Microsoft Access y sus características
Una base de datos de Microsoft Access es un conjunto de información relacionada con un tema o propósito particular
Formularios en Microsoft Access iconMódulo Microsoft Access
Tema: Creación de Formularios. Ingreso, Modificación y Eliminación de Registros
Formularios en Microsoft Access iconManual basico para manejar microsoft access generalidades
Una base de datos de Microsoft Access es un conjunto de información relacionada con un tema o propósito particular
Formularios en Microsoft Access iconRevista access 2010
Access es un sistema gestor de bases de datos preparado para los sistemas Microsoft Windows. Es un componente de la suite ofimática...
Formularios en Microsoft Access iconCrear un formulario en Access
Un formulario en Access es muy similar a un formulario en papel el cual tiene el formato adecuado para desplegar las etiquetas y...
Formularios en Microsoft Access iconMicrosoft Access 2013
Microsoft Access 2013 nos permite gestionar bases de datos y poderlos adaptar a las
Formularios en Microsoft Access iconMicrosoft Word Tema 4 Formularios e informes doc
Access. Con los formularios se podrán ver, introducir y modificar datos de las tablas. Con los informes se podrán generar informes...


Descargar 40.82 Kb.