Compartir a través de


Programa con módulos de clase

En Access, hay dos tipos de módulos: los módulos estándar y los módulos de clase. En Access 95, los módulos de clase solo existían en asociación con un formulario o un informe. En Access 97, también existían en la pestaña Módulos de la ventana Base de datos.

Creación de objetos personalizados con módulos de clase

Use un módulo de clase para crear una definición para un objeto personalizado. El nombre con el que guarda el módulo de clase se convierte en el nombre del objeto personalizado. Los procedimientos públicos Sub y Function que define dentro de un módulo de clase se convierten en métodos personalizados del objeto. Los procedimientos públicos Property Let, Property Get, y Property Set se convierten en propiedades del objeto.

Después de definir los procedimientos dentro del módulo de clase, puede crear el nuevo objeto mediante la creación de una nueva instancia de la clase . Para crear una nueva instancia de una clase, declare una variable del tipo definido por esa clase. Por ejemplo, si el nombre de su clase es ABasicClass, crearía una nueva instancia de la misma de la siguiente manera:

Dim abc As New ABasicClass

Cuando se ejecuta el código que contiene esta declaración, Visual Basic crea la nueva instancia. Entonces se pueden aplicar sus métodos y propiedades usando la variable. Por ejemplo, si definió un método personalizado llamado ListNames, podría aplicarlo del modo siguiente:

abc.ListNames

Creación de la instancia predeterminada de una clase de formulario (Access 95)

Cuando se abre un formulario en la vista Formulario, tanto desde la interfaz de usuario como desde Visual Basic, se crea una instancia del módulo de clase de ese formulario. En otras palabras, se asigna espacio en memoria donde existe ahora el objeto, con lo que puede llamar entonces a sus métodos y establecer o devolver sus propiedades desde el código, como lo haría con cualquier objeto integrado. Lo mismo es cierto cuando abre un informe en la Vista preliminar.

Cuando se hace referencia a un formulario en código de Visual Basic, normalmente se trabaja con la instancia predeterminada de la clase del formulario. Una clase del formulario sólo tiene una instancia predeterminada. También puede crear múltiples instancias de la misma clase del formulario desde Visual Basic. Cuando crea múltiples instancias de una clase del formulario, se crean instancias no predeterminadas.

Hay cuatro formas de crear la instancia predeterminada de un formulario. Puede abrir un formulario existente mediante la interfaz de usuario, ejecutando el método OpenForm del objeto DoCmd , llamando al método CreateForm y cambiando el nuevo formulario a la vista Formulario, o usando Visual Basic para crear una variable de tipo Form para hacer referencia a la instancia predeterminada. El siguiente ejemplo abre un formulario Empleados y apunta una variable de objeto Form al mismo:

Dim frm As Form 
DoCmd.OpenForm "Employees" 
Set frm = Forms!Employees

Access proporciona también un acceso directo que le permite abrir un formulario y hacer referencia a un método o propiedad de ese formulario o a uno de sus controles en un solo paso. Al módulo de clase del formulario se hace referencia como se muestra en el siguiente ejemplo:

Form_Employees.Visible = True 
Form_Employees.Caption = "New Employees"

Al ejecutar este código, Access abre el formulario Empleados en la vista Formulario si aún no está abierto y establece el título del formulario en "Nuevos empleados". El formulario no es visible hasta que establezca explícitamente su propiedad Visible en True. Cuando el procedimiento que llama a este código termina de ejecutarse, se elimina esta instancia del formulario, es decir, se cierra el formulario.

Si intenta ejecutar este código cuando el formulario Employees está abierto en la vista Diseño, Access genera un error en tiempo de ejecución. Si se abre el formulario, debe hacerse en la vista Formulario.

Si usa esta sintaxis para cambiar una propiedad del formulario o de uno de sus controles, ese cambio se pierde cuando se cierra el formulario. Esto es también verdad cada vez que cambie el valor de una propiedad de un formulario en la vista Formulario. La propiedad se debe cambiar en la vista Diseño y guardar el cambio con el formulario.

Creación de varias instancias no predeterminadas de formularios

Puede crear múltiples instancias no predeterminadas de una clase de un formulario si desea mostrar a la vez más de una instancia de un formulario. Por ejemplo, podría desear mostrar los registros de un empleado y el jefe del empleado al mismo tiempo. Puede crear una instancia de la clase del formulario Empleados para mostrar el registro del empleado, y otra para mostrar el registro del jefe.

Para crear nuevas instancias no predeterminadas de una clase de un formulario desde Visual Basic, declare una variable para la que el tipo es el nombre del módulo de clase del formulario. Debe incluir la palabra clave New en la declaración de la variable. Por ejemplo, el siguiente código crea una nueva instancia del formulario Empleados y la asigna a una variable del tipo Form:

Dim frm As New Form_Employees

Esta instancia no predeterminada del formulario no es visible hasta que establezca de forma explícita su propiedad Visible.

Cuando el procedimiento que crea esta instancia ha finalizado la ejecución, la instancia se elimina de la memoria, a menos que haya declarado la variable que la representa como una variable en el nivel de módulo. Como las variables en el nivel de módulo conservan sus valores hasta que se restablecen con el comando Restablecer del menú Ejecutar o con el botón Restablecer de la barra de herramientas, el formulario estará abierto si la variable ha sido declarada como una variable en el nivel de módulo.

Cualquier propiedad que se establezca afectará a esta instancia de la clase del formulario, pero no será guardada con el formulario. Además, no se podrá crear una nueva instancia de la clase del formulario si el formulario está abierto en la vista Diseño.

No se puede hacer referencia a una instancia no predeterminada de la clase de un formulario por nombre en la colección Forms . Consulte solo por número de índice. Puesto que puede crear varias instancias de un formulario, y cada instancia tiene el mismo nombre, puede tener más de un formulario con el mismo nombre en la colección Forms, sin tener ninguna forma de distinguirlos salvo por el número de índice.

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.