Beruflich Dokumente
Kultur Dokumente
Si usas VBA para hacer tus programas de Microsoft Access ms inteligentes y especialmente si
usas formularios Desvinculados, casi con seguridad te dars cuenta de que la conveniencia
de los mdulos de clase bien vale la pena el esfuerzo inicial.
Los siguientes tips son una sencilla introduccin al uso de mdulos de clase y constituyen una
iniciacin a tu propia programacin orientada a objetos.
El tutorial asume que ests razonablemente familiarizado con el uso de VBA en aplicaciones de
Access.
Parte 1: Un sencillo ejemplo
Introduccin
En este primer ejemplo, vamos a crear un mdulo de clase muy bsico al cual llamaremos
clsSimple. Le agregaremos algunas propiedades que podremos establecer y cambiar usando
cdigo VBA normal.
Tambin mostraremos como usar el comando Stop en las pruebas de cdigo para seguir
vivos en la memoria.
Instrucciones:
1.
2.
3.
4.
Notemos cmo Access nos ofrece una lista de la cual elegir despus que hemos escrito
la palabra oSim seguida del punto
Incluso cuando declaramos el tipo de dato con: Dim oSim as, Access ya saba de la
existencia de nuestra clase.
Al pulsar la tecla Enter nos debera mostrar el nmero 99, que es nuevo valor de la propiedad
oSim.Valor, la cual acabamos de cambiar.
11. Para finalizar el programa, presionemos F5 : Ejecutar -> Continuar.
Qu hemos aprendido?
Este muy sencillo ejemplo nos ha mostrado cmo crear el objeto personalizado clsSimple con
las propiedades Idpedido, NombreCliente, y Valor; establecimos valores para dichas
propiedades y luego hicimos algunas cosas con ellas- aunque slo fuera mostrarlas en pantalla.
La creacin de una propiedad es algo tan sencillo como crear una variable pblica en el
mdulo de clase
Tambin vimos como configurar nuestro cdigo de prueba de manera de dejar nuestro objeto
vivo en la ventana inmediato y poder hacer pruebas y otras travesuras con l.
Ms
Como prctica adicional, abramos la ventana inmediato de nuevo (Ctrl + G) y escribamos los
siguientes comandos:
Acabamos de crear el objeto os en el aire, por as decirlo. El comando que realiz sta
accin fue: set os = new clsSimple.
Al presionar la tecla Enter despus de cada instruccin, observamos cmo se muestran (en los
sitios donde se observa el subrayado en la imagen) los valores contenidos en las propiedades
del objeto, as podemos ver en tiempo real cules son los valores por defecto de dichas
propiedades y cuales valores toman segn las manipulemos.
Debido a que el objeto no est declarado dentro de un mdulo real, no disponemos de la lista
de autocompletado sta vez, sin embargo, an podemos asignar y recuperar sus propiedades
Preguntas para investigar
1. Cules son los valores por defecto de las propiedades de nuestros nuevos objetos
cuando se crean por primera vez?
2. Qu pasa si olvidas un nombre y escribes, digamos, os.Val en vez de os.Valor?
3. Toma en cuenta Access la diferencia entre maysculas y minsculas si escribes
os.valor, os.VALOR u OS.valor?
Instrucciones
1. Creemos una nueva clase llamada clsReadOnly
2. Escribamos el siguiente cdigo:
Esta vez an podemos obtener el valor de la propiedad del objeto, pero no podemos
establecer se valor usando una instruccin tal como oro.IdPedido = 99.
En realidad, ste ejemplo en particular no sirve de mucho, pero en posteriores lecciones
veremos cmo ste cdigo puede ser usado de manera muy efectiva para proteger
propiedades importantes tales como IdPedido de cambios accidentales.
Lo opuesto a la instruccin Property get es la instruccin Property let. Si consultamos la ayuda
respecto a ste tema, podramos encontrar ejemplos como ste:
De hecho, no hay diferencia entre esto y declarar una variable como Public, tal como lo
hicimos en nuestro primer ejemplo. De ste modo, slo tomara ms cdigo. Sin embargo. Hay
cosas muy tiles que hacer con la instruccin Property Let, tal como limitar los valores que la
propiedad pueda tomar.
Qu hemos aprendido:
Pregunta:
Qu crees que significa la palabra Me en la expresin Me.Valor?
Parte 4. Conectando don la base de datos
Cmo conectamos los mdulos de clases con las tablas de nuestra base de
datos? Armemos un ejemplo elemental donde leamos los datos de clientes de
una tabla usando un objeto cliente.
Instrucciones
1. Creemos una nueva tabla llamada tblClientes con los siguientes campos:
Nombre del campo
IdCliente
NombreCliente
Direccion
Telefono
TasaDescuento
Tipo de datos
Auto numrico
Texto
Texto
Texto
Nmero
Terminos
Nmero
Ajustes
Clave Primaria
Doble,
formato
porcentaje
Entero
NombreCliente
Pedro
Direccion
Calle 123
Susana
Calle
cualquiera
Telefono
(02) 1234
1234
(02) 2345
5666
TasaDescuento
2.5
Terminos
30
60
10
11
Mostramos en pantalla los valores del objeto, usando comando como ste:
oCli.NombreCliente.
En la prxima parte veremos cmo guardar los datos de nuestro objeto en la base de
datos.
Algunas observaciones:
12
Introduccin:
Esta leccin explica cmo usar los mdulos de clase para capturar datos de un
formulario esttico o desvinculado y guardarlos en una tabla de la base de datos.
El ejemplo muestra cmo manipular un sencillo objeto Pedido mediante la
creacin de un nuevo mdulo de clase llamado clsPedido, una tabla tblPedidos
en la base de datos un un formulario frmCrearPedido el cual usar el objeto para
guardar un nuevo registro en la base de datos.
Instrucciones:
1. Creemos una nueva tabla llamada tblPedidos con los siguiente campos:
13
14
15
Tipo
Cuadro Combinado
Propiedades
Origen en la tabla
tblClientes.IdCliente
txtItem
Cuadro de texto
Txtcantidad
Cuadro de texto
txtPrecioUnitario
Cuadro de texto
Txtvalor
Cuadro de texto
btnCerrar
Botn de comando
(Ver abajo)
btnOk
Botn de comando
(Ver abajo)
16
17
18
Nuevamente, esto parece mucho esfuerzo para lograr tan poco. Hemos
dejado que el usuario llene algunos campos en un formulario y luego hemos
guardado los datos en un registro en la base de datos
Sin embargo, este ejemplo pone de relieve los elementos clave de la
tcnica. Cuando trabajemos con objetos complejos y queramos mantener a
los usuarios lejos de la base de datos hasta el ltimo minuto, ah es cuando
estas tcnicas entran en accin.
Observemos cmo hemos hecho uso del punto en expresiones del tipo
Me.NombreControl para referirnos a los valores de los controles en el
19
Fijmonos cmo el cdigo hace uso del valor de retorno del mtodo Crear
para ver si la tarea se llev a cabo con xito o no:
Introduccin
El Siguiente ejemplo nos ensea cmo extender nuestra clase clsPedido con mtodos
que nos permitan editar y borrar registros en la base de datos.
20
Instrucciones:
1. Creemos un nuevo mdulo de clase llamado clsPedido1 con el siguiente cdigo:
21
22
23
24
Esta vez hemos hecho uso de la funcin Nz al leer los los datos de la base de
datos con el mtodo Cargar.
Me.Item = Nz(.fields(Item),0)
Esto maneja el problema (con el que quiz ya nos hemos topado), de pretender asignar
un valor nulo de nuestra base de datos a alguna propiedad de nuestro objeto
25
El mtodo Actualizar que utiliza una consulta para filtrar los registros, tambin
dispone de un mecanismo de verificacin mediante el uso de la propiedad
RecordCount del Recordset si un registro en particular no es encontrado.
La declaracin del mdulo como Private significa exactamente eso: lo que sea que
haga el procedimiento, pertenece al mbito privado del mdulo y no puede ser
usado de manera accidental por un intruso.
26
Aun cuando ste cdigo podra lucir un poco complicado, una vez se ha escrito
por primera vez, podra ser fcilmente copiado en otros objetos y ser cambiado
con una sencilla edicin global.
FIN
27