Escolar Documentos
Profissional Documentos
Cultura Documentos
Objetos
Por fin los objetos... auque parezca que este va ser un tema complicado en realidad es
muy sencillo.
Los objetos son los culpables de que veamos el cdigo "complicado" y que muchas
personas se "decepcionen" al ver tantas lneas, pero todo esta en la perspectiva con la
que miramos.
Los objetos estn diseados para facilitarnos la vida, realizarnos muchas acciones o
proporcionarnos datos.
Si alguien te pasa una fecha, con ella podemos devolver varios datos (En este momento
se me ocurren):
-Sacar los das transcurridos hasta el da de hoy
-Sacar los meses
-Sacar los aos
-Cuantos domingos han transcurrido
-Que da fue esa fecha
Etc., etc., seguro a ti se te ocurren muchos mas datos para devolver, todo esto lo
podemos realizar con clculos.
Entonces, nosotros podemos crear un objeto que, pasndole la Fecha deseada, nos
devuelva los datos anteriores. Todos los datos dependen de dicha fecha, si no
proporcionamos la fecha al objeto no obtendremos nada porque no hay punto de partida
para realizar los clculos.
En general eso son los objetos, estructuras que nos piden uno o mas datos que le sirven
como partida para saber que es lo que nos interesa, y con eso desencadenan una serie de
acciones y clculos que nosotros podemos aprovechar. Existen miles y miles de objetos
y nadie puede conocerlos todos, lo nico que sabemos es que un objeto nos pedir
ciertos datos y con esto le podemos ordenar que ejecute acciones o que nos devuelva
datos.
Que acciones y que datos nos proporciona un objeto?
Eso es especficamente diferente en cada objeto, depende de para que fue diseado.
Quieres saber que hace un objeto?
Busca ayuda sobre el, solo as sabrs que puedes sacarle. Adelante veremos como
podemos investigarlos
En general eso es mucho de lo que es la programacin, usar objetos segn nuestra
necesidad.
Quieres manejar los registros/datos de una tabla? Usa el objeto Recordset
Quieres manejar formularios? Usa el objeto Form
Quieres manejar controles? Usa el objeto Control
Etc., etc....
El que puedas hacer muchas cosas por cdigo depende de que tantos Objetos conozcas y
que tan a fondo los hayas usado, porque hay objetos que tienen una cantidad muy
grande de cosas que se pueden realizar, incluso hay objetos que contienen sub objetos, y
estos pueden tener otros sub objetos, etc.
Utilizar Los Objetos
Vamos a utilizar el ejemplo de la fecha que dimos anteriormente, asumamos que
creamos un objeto segn las especificaciones que dimos, el objeto que creamos se llama
"DatosDeFecha"
Para trabajar con el objeto, primero se debe declarar una variable como el tipo de
objeto:
Dim objFecha as DatosDeFecha
Con esto el sistema ya sabe que es lo que va a contener tu variable, ahora, para empezar
a utilizarla debemos de "Alistarla", esto se hace regularmente con la instruccin SET,
esto es mas o menos como sacarle una copia al objeto, esta copia es la variable y es con
la que trabajaremos:
Set objFecha = DatosDeFecha
'Ingresando los datos necesarios
objFecha.FechaDeseada = #01/01/1975#
'Imprimiendo los datos
Debug.Print objFecha.DiasTranascurridos
Debug.Print objFecha.MesesTranscurridos
Debug.Print objFecha.AosTranscurridos
Debug.Print objFecha.CantidadDomingos
Debug.Print objFecha.NombreDia
'Al terminar de usarlo siempre hay que destruirlo
objFecha = Nothing
Para facilitar la escritura podemos trabajar el objeto con With (ya lo vimos), podra
haber sido as:
With objFecha
'Ingresando los datos necesarios
.FechaDeseada = #01/01/1975#
'Imprimiendo los datos
Debug.Print .DiasTranascurridos
Debug.Print .MesesTranscurridos
Debug.Print .AosTranscurridos
Debug.Print .CantidadDomingos
Debug.Print .NombreDia
End With
Los nombres pudieron haber estado en ingles (si fue un objeto elaborado en ingles), y al
ver el cdigo nos hubieran parecido lneas raras, pero ahora sabemos que solo son datos
que estamos solicitando/obteniendo.
Nota: Si copias lo anterior obtendrs error porque en tu sistema no existe ningn objeto
llamado "DatosDeFecha", solo lo estamos suponiendo para ver como es que se usa.
Cuando escribes el nombre del objeto, mejor dicho, la variable declarada como el tipo
de objeto y despus escribes el punto (.), se te desplegara la lista de propiedades y
mtodos que contiene el objeto
Para dar un ejemplo con un objeto real, veamos un objeto Recordset, con el cual se
pueden manejar los registros de una tabla:
Sub PruebaObjetoRecordset()
'Declaracion de la variable...
'El Recordset es un objeto que esta contenido dentro de un objeto mayor que se llama
DAO
Dim rst As DAO.Recordset
'La declaracin tambin se pudo haber hecho as:
'Dim rst As Recordset
'Pero tambin existe el objeto ADO.Recordset, en algunas ocasiones necesitamos
'trabajar con ambos Recordset, Como sabe el sistema con cual es con el que deseamos
trabajar?
'Por eso la declaracin como la que realizamos
'Abrir el objeto,
'Donde estn los datos que deseamos manejar?
'manejaremos la tabla clientes, solo le especificamos esto y el objeto se trae los
registros...
Set rst = CurrentDb.TableDefs("Clientes")
'Aqu tambin puedes ver que hay una sucesin de objetos
'CurrenteDb = Base de datos, esta contiene al objeto:
'TablaDefs = Coleccin de todas las tablas
'le especificamos que tome la tabla "Clientes"
'Con el objeto ya disponible, realizamos acciones con sus propiedades y mtodos
rst.MoveLast 'ir al ultimo registro
rst.MoveFirst 'ir al primer registro
rst.AddNew 'iniciar un nuevo registro
rst!IdCliente = "CRZTUL" 'ingresando datos en un campo
rst.Update 'grabar el registro
rst.Close 'este objeto requiere que lo cerremos
Set rst = Nothing 'destruyendo el objeto
End Sub
Aunque parece un procedimiento largo y complicado, segn lo que hemos explicado, se
puede ver que el objeto lo manejamos en general con:
Dim rst As DAO.Recordset 'declarar la variable
Set rst = CurrentDb.TableDefs("Clientes") 'Inicializar la variable de objeto
...
Set rst = Nothing 'destruir el objeto
Todo lo dems en el medio son puras propiedades y mtodos propios del objeto
Entendiste?, Difcil?, O ya lo ves diferente?
Hay que tener claro que no todos los objetos se inicializan de la misma manera, hay que
investigar como se inicializa cada objeto, el objeto que te interesa.
En este ejemplo se crea un objeto nuevo, mas bien se crea una "Copia nueva" de un
objeto DAO.Recordset, que es la que se encuentra en la variable y es con la que
trabajamos
Otra forma para un Recordset:
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("SELECT * FROM Clientes;")
...
Set rst = Nothing
No todos los objetos tienen que crearse como nuevos, algunos podemos obtenerlos por
referencia, pero para hacer esto se necesita que el objeto se encuentre abierto:
Un formulario:
Dim frm As Form
Set frm = Forms("Nombre formulario")
'Otra forma:
'Set frm = Forms!NombreFormulario
'Otra forma:
'Set frm = [Forms]![NombreFormulario]
...
Set frm = Nothing
Cuando tomamos un objeto por referencia, al destruirlo con:
Set frm = Nothing
Realmente no estamos destruyendo el objeto abierto, solo destruimos la variable con la
que estamos teniendo acceso directo a el (referencia)
Un Control:
Dim ctr As Control
Set ctr = Forms!NombreFormulario!NombreControl
...
Set ctr = Nothing
Para usar un control Treeview (rbol) es necesario que primero se inserte el objeto
ActiveX en el formulario luego haces:
Dim objArbol As TreeView
Set objArbol = NombreDelControDeArbolInsertadoEnElFormulario.Object
Etc.,...
Bucles
Los bucles nos sirven para realizan una misma rutina un determinado numero de veces.
La mas simple es For..Next, copia-pega y corre el procedimiento siguiente:
Sub PruebaForNext()
'variable que nos servir para el bucle
Dim i As Long
'Aqu le estamos diciendo:
'A la variable "i", inciela con el valor 1, termine el bucle cuando valga 5
'la variable que le asignamos predeterminadamente aumentara en 1 unidad en cada
vuelta (en este caso la variable i)
For i = 1 To 5
'imprimir el valor de la variable
Debug.Print "Valor de la variable: " & i
Next i 'indica dar la siguiente vuelta al bucle
End Sub
Tambin tenemos otros tipos de bucles, en los cuales el objetivo no es ir cambiando de
valor a la variable como el For Next, el objetivo es cumplir con alguna condicin, y
hasta que se cumpla deja de correr el bucle, veamos este ejemplo (copia-pega y corre):
Sub PruebaBucleConCondicion()
Dim i As Long 'variable para el bucle
'Esta es la condicin:
'Mientras i sea menor a 10, siga con el bucle
While i < 10
'imprimir el valor de la variable
Debug.Print "Valor de la variable: " & i
'Este tipo de bucle no aumenta predeterminadamente ningn valor a la variable,
'solo se esta preocupando por cumplir la condicin inicial.
'Aqu nosotros le vamos a aumentar el valor a la variable, que ser
'igual al valor que ya tiene mas uno. De esta manera conseguiremos que en cada
vuelta
'del bucle la variable aumentara de valor en 1 unidad
i = i + 1
'IMPORTANTE:
'Si no le aumentramos esta unidad, la variable i se quedara en cada
'vuelta con el valor inicial de cero (su valor de inicio), entonces
'nunca se cumplira la condicin inicial y el bucle correra eternamente...
'trabara el sistema, esto es lo que hay que cuidar con los bucles con condiciones
Wend
End Sub
Lo prometido es deuda, aqu les pongo un bucle para llenar datos de a una matriz:
Sub PuebaMatrizConBucle()
Dim mtzNumeracion(9) As String 'matriz de 10 filas
Dim i As Long 'variable para correr el bucle
'Cargar los datos de la matriz...
'vamos desde 0 hasta el limite de la matriz
'Porque desde cero?, porque el primer elemento de las matrices es cero
For i = 0 To UBound(mtzNumeracion)
'cargar el numero
mtzNumeracion(i) = "Elemento numero: " & i
Next i
'Imprimir los datos de la matriz
For i = 0 To UBound(mtzNumeracion)
'imprimir en la ventana Inmediato
Debug.Print mtzNumeracion(i)
Next i
End Sub
Existen varios tipos de bucles (aqu solo vimos dos), donde se pueden definir diferentes
criterios para que el bucle siga dando vueltas en la misma rutina.
Colecciones
Las colecciones son objetos que podemos comparar con matrices de una sola columna,
la ventaja es que son mas flexibles para agregar y consultar datos, podemos ingresarles
elementos antes o despus de alguna fila existente, tambin le podemos dar un cdigo
de identificacin y acceder a los elementos por este cdigo, y no solo por el numero de
fila como las matrices. La primera fila inicia en uno.
Veamos un ejemplo (copia, pega y corre):
Sub PruebaColeccion()
Dim colPrueba As Collection
Dim strCodigo As String
Dim i As Long
'Inicializamos la variable para el objeto Collection
Set colPrueba = New Collection
'llenaremos 5 elementos por bucle
For i = 1 To 5
'El cdigo en cada elemento es opcional pero se lo agregaremos para este ejemplo
strCodigo = "Cdigo" & i
'Si solo agregamos elementos sin especificar la posicin, el elemento se crea al final
colPrueba.Add "Elemento por bucle numero: " & i, strCodigo
Next
'ahora vamos a agregar un nuevo elemento, se lo agregaremos al inicio
colPrueba.Add "Agregado despus del bucle", "CodigoDiferente", 1
'Imprimir los datos
'vamos desde el primer elemento hasta el ultimo contenido
For i = 1 To colPrueba.Count 'total de elementos contenidos
Debug.Print "Elemento nmero " & i & " = " & colPrueba(i)
Next i
'Imprimir un elemento llamndolo por el cdigo
Debug.Print "Elemento llamado por su cdigo (CodigoDiferente) = " &
colPrueba("CodigoDiferente")
Set colPrueba = Nothing 'destruyendo el objeto
End Sub
Instrucciones De Condicin
Con estas instrucciones podemos ordenarle al sistema que evale resultados, y
dependiendo de lo que se obtenga que haga una cosa u otra. Entre estas tenemos:
IF... THEN... ELSE
Que mas o menos quiere decir:
SI (Esta condicin es verdadero) ENTONCES (Haga esto) SI NO SE CUMPLIO (Haga
esto)
Lo usaramos as:
SI (Esta condicin es verdadero) ENTONCES
(Haga esto)
SI NO SE CUMPLIO
(Haga esto)
TERMINAR SI
Ya en lneas de cdigo:
IF (Esta condicin es verdadero) THEN
'aqu lo que quieres que se ejecute si la condicin es verdadera
ELSE
'aqu lo que quieres que se ejecute si la condicin es falsa
END IF
Sub PruebaIF()
If 10 > 8 Then
Debug.Print "La condicin SI se cumple"
'aqu tambin se pueden meter otros IF si fuera necesario
Else
Debug.Print "La condicin NO se cumple"
'aqu tambin se pueden meter otros IF si fuera necesario
End If
End Sub
Hay ocasiones en deseamos hacer un anlisis a un dato, y deseamos actuar de diferente
manera segn sea el valor. Para esto podemos usar:
SELECT CASE
Un ejemplo lo muestra mas claro:
Sub PruebaSelectCase()
Dim bytPrecio As Byte
bytPrecio = 15 'este valor lo puedes ir variando para hacer pruebas
'Segun el valor del precio imprimiremos una nota...
'Analizar el valor contenido en la variable "bytPrecio"
Select Case bytPrecio
Case 0 'si el precio es cero
Debug.Print "Es regalada"
Case 1 'si es igual a uno
Debug.Print "Es casi regalado"
Case 2, 3, 4 'si es igual a 2, 3 o 4
Debug.Print "Esta a buen precio"
Case Is < 10 'si es menor a 10
Debug.Print "Un precio justo"
Case Else 'cualquier otra posibilidad
Debug.Print "Precio fuera de rango, no compres"
End Select
End Sub
Enumerados
Un enumerado nos sirve para mostrar una lista que se nos desplega mientras estamos
escribiendo, esta lista tiene varias opciones donde debemos seleccionar solo un
elemento, esto nos facilita la escritura del cdigo y nos limita las opciones a escoger a
solo valores validos. Hagamos esta prueba, escribamos a mano en la ventana de
inmediato:
docmd.selectobject acForm
Esta es una instruccin que le dice al sistema que seleccione un objeto de Access.
Te pudiste dar cuenta que cuando escribiste el espacio (despus de docmd.selectobject)
te despleg un lista donde aparecan los nombres de los objetos que podemos
seleccionar, eso es un enumerado, una lista que nos permite ver que opciones tenemos
con nombre y escoger el elemento que nos interesa.
Un enumerado debe crearse a nivel de modulo. Creemos este enumerado:
'Las primeras dos lneas estn puestas solo para que se vea que el enumerado esta a
nivel de modulo
Option Compare Database
Option Explicit
Enum enuMensaje
mBajo
mMedio
mAlto
End Enum
El primer elemento del enumerado toma el valor cero, el siguiente toma el valor del
elemento anterior +1 (en este caso seria uno), etc. Estos valores son predeterminados,
pero si nosotros deseamos podemos cambiarles el valor, lo haramos as:
Enum enuMensaje
mBajo = -1
mMedio = 10
mAlto = 20
End Enum
Con esto ya podemos crear una variable y declararla como tipo "enuMensaje" en donde
necesitemos. Copia y pega este procedimiento:
Sub PruebaEnumerado(TipoMensaje As enuMensaje)
'Metemos al Select la variable del parmetro y hacemos algo
'segn sea el valor que venga
Select Case TipoMensaje
Case mBajo
Debug.Print "sin importancia"
Case mMedio
Debug.Print "Tomar en cuenta"
Case mAlto
Debug.Print "MENSAJE CRITICO!"
End Select
End Sub
Ahora escribe a mano esto en la ventana Inmediato:
PruebaEnumerado mBajo
Pulsas enter...
Prueba con las 3 opciones...
Control De Errores
Hay varias razones por las que puede ocurrir un error en un procedimiento, olvidamos
poner un valor necesario, asignamos valores que no corresponden, manejamos mal un
objeto, etc.
Cuando ocurre un error, el sistema predeterminadamente se detiene, abre la ventana
VBA y nos lleva a la lnea donde ocurri el error, dicha lnea tambin la pinta de
amarrillo, de esta manera podemos realizar los cambios que sean necesarios. Pero que
pasa si el error ocurre en una aplicacin que has hecho para otras personas?, ellos no
tienen porque ver el cdigo.
Para evitar esto podemos controlar los errores con algunas rutinas, all nosotros le
diremos que es lo que queremos que el sistema haga cuando ocurra un error.
Las rutinas de errores son muy importantes porque los errores pueden ser inesperados,
puede ser que en tu computadora corra un procedimiento sin problemas, pero al llevar tu
base de datos a otra computadora con otras propiedades ocurra algn error, por el
sistema operativo de otra versin, Office de otra versin, libreras, dll, etc.
Empecemos por pasos,
GoTo (Ir Hacia) y Etiquetas De Lnea
GoTo (Ir Hacia): Le indica al sistema que salte hacia una Etiqueta de Lnea
Etiqueta De Lnea: Es un nombre cualquiera finalizado con dos puntos (:)
Veamos un ejemplo, copia, pega y prueba este procedimiento:
Sub PruebaSaltoPorEtiquetas()
GoTo SoyEtiquetaDeLinea 'Ir hacia la etiqueta especificada
MsgBox "Mostrando el Primer mensaje"
SoyEtiquetaDeLinea: 'Etiqueta, puede tener cualquier nombre
MsgBox "Mostrando el Segundo mensaje"
End Sub
Como te pudiste dar cuenta al correr el procedimiento, el primer mensaje nunca se
mostr, esto es porque en la primera lnea del procedimiento se le esta indicando con
GoTo que se valla a la etiqueta "SoyEtiquetaDeLinea" y con esto se esta saltando el
primer mensaje
Claro?, veamos un segundo ejemplo, copia-pega y prueba el siguiente procedimiento,
sigue la secuencia de saltos de lnea:
Sub PruebaSaltoPorEtiquetasDos()
'Saltar hacia la etiqueta que esta al final del procedimiento
GoTo Etiqueta_Del_Final
Etiqueta_Del_Inicio:
MsgBox "Mostrando el Primer mensaje"
'Salir de procedimiento
Exit Sub
Etiqueta_Del_Final:
MsgBox "Mostrando el Segundo mensaje"
'Saltar/regresar hacia la etiqueta que se encuentra al inicio
GoTo Etiqueta_Del_Inicio
End Sub
En este procedimiento podemos observar que en la primera lnea se salta hacia una
etiqueta al final, de all se hace otro salto hacia una etiqueta que se encuentra al inicio.
Importante:
Hay que tener mucho cuidado en los saltos hacia atrs, si te das cuenta en el ejemplo, al
hacer el salto hacia atrs hay un "Exit Sub" que sirve para salir del procedimiento, si no
existiera, el procedimiento correra infinitamente porque cada vez que llega al final
vuelve a saltar hacia el inicio
Objeto Err (Error)
Existe un objeto llamado Err (Error) que siempre esta presente, este objeto tienes varias
propiedades que predeterminadamente se encuentran vacas, cuando ocurre cualquier
error el sistema llena estas propiedades para que nosotros podamos consultarlas y saber
que es lo que ha ocurrido. Hagamos esta prueba, en la ventana Inmediato escribe:
? Err.Number
Pulsamos Enter, nos imprime el valor cero. Este valor quiere decir que no hay ningn
error disponible, no a ocurrido ningn error.
Todos los errores estn identificados con un valor que es un numero entero.
Activar Una Rutina De Errores
Una rutina de error se activa con la sentencia OnError. Hay varias formas de manejar las
rutinas de error, vamos a analizar una de las mas comunes (si creas un control con el
asistente Access automticamente te crea una rutina de error como esta):
Copia-pega y analiza este procedimiento,
Sub ComprendiendoUnaRutinaDeErrorComun()
'Las palabras "On Error" activan la rutina de error, la siguiente lnea dice:
'Al ocurrir un error (en cualquier lugar) saltar a la etiqueta "Tratamiento_Error"
On Error GoTo Tratamiento_Error
'Aqu el cuerpo de procedimiento...
Salir_Del_Procedimiento:
'Si no ocurre ningn error llegamos a esta etiqueta limpiamente y salimos del
procedimiento (con Exit Sub), esto
'porque no necesitamos llegar a la parte donde se trata el error
'Al ocurrir un error, el sistema pasara a las lneas del tratamiento del error, desde all
se regresara
'a este punto (con la instruccin Resume)
'Podemos aprovechar este espacio para realizar algunas cosas como desvincular
variables o cerrar objetos,
'porque esas son cosas que necesitamos hacer antes de cerrar un procedimiento, haya
error o no
'Aqu la lneas para resolver cualquier cosa antes de salir, porque siempre se pasara
por este punto...
Exit Sub
Tratamiento_Error:
'Aqu se llega solo si ha ocurrido un error...
'Desplegar un mensaje con la descripcin del error
MsgBox Err.Description
'La palabra Resume hace dos cosas:
'Elimina el error y hacer un salto hacia la etiqueta especificada
Resume Salir_Del_Procedimiento
End Sub
Otro metodo comun de manejar errores es con:
On Error Resume Next
Que es como decirle al sistema "Cuando ocurra un error, siga la ejecucin del
procedimiento en la lnea siguiente de donde se origino el error". Muy til cuando
trabajamos con objetos.
Con la primer rutina al ocurrir un error el sistema va hacia la rutina del error luego se
sale del procedimiento, pero a veces necesitamos que aunque ocurra un error el sistema
siga ejecutando las dems lneas del procedimiento, es cuando podemos usar "On Error
Resume Next"
Haremos un ejemplo, vamos a probar dos procedimientos que tienen un cuerpo idntico
pero con diferente manejo de errores, copia-pega y corre:
Sub PruebaOnErrorGoTo()
On Error GoTo Tratamiento_Error
Dim rst As DAO.Recordset 'variable para manejar los datos/registros de una tabla
'Asignamos la tabla de donde agarraremos los datos/registros
'Aqu se originara un error porque la tabla de nombre "Inexistente" no existe
Set rst = CurrentDb.TableDefs("Inexistente")
MsgBox "Este mensaje esta puesto despus del error"
Salir_Del_Procedimiento:
Set rst = Nothing 'desvincular variable
Exit Sub
Tratamiento_Error:
MsgBox "Error ocurrido: " & Err.Description
Resume Salir_Del_Procedimiento
End Sub
Sub PruebaOnErrorResumeNext()
On Error Resume Next
Dim rst As DAO.Recordset 'variable para manejar los datos/registros de una tabla
'Asignamos la tabla de donde agarraremos los datos/registros
'Aqu se originara un error porque la tabla de nombre "Inexistente" no existe
Set rst = CurrentDb.TableDefs("Inexistente")
MsgBox "Este mensaje esta puesto despus del error"
Set rst = Nothing 'desvincular variable
End Sub
Corriendo el primer procedimiento nos lanza un mensaje, el mensaje que indica el error
que acaba de ocurrir, este mensaje esta puesto en las lneas donde se trata el error.
Corriendo el segundo procedimiento, se genera el mismo error pero el sistema no se
detiene y sigue con las lneas de cdigo y nos muestra el mensaje que esta puesto en la
lnea debajo de donde se origino el error.
Algunos Tips
Continuar Lneas Largas En La Siguiente Lnea
Algunas lneas son tan largas que se salen del rea de pantalla, para tenerlo todo a la
vista puedes cortar una lnea escribiendo un espacio seguido de un guin bajo ( _):
Sub PruebaContinuandoLineas()
'Una lnea larga:
'Aqu se encuentra una lnea que puede llegar a salirse de la pantalla porque al autor se
le ocurrio que deba hacer muchos comentarios para dejar bien claro lo que tenia que
decir
'La misma lnea larga:
'Aqu se encuentra una lnea que puede llegar a salirse de la _
pantalla porque al autor se le ocurri que deba hacer muchos _
comentarios para dejar bien claro lo que tenia que decir
MsgBox _
"Este es un mensaje donde se muestra como cortar lneas"
End Sub
De esta manera lo puedes hacer con cualquier lnea, en cualquier parte de la lnea,
media vez no cortes ninguna palabra por el medio porque as no funcionaria
Juntar Varias Lneas En Una Lnea
Se puede juntar dos o mas lneas aunque no tengan ninguna relacin, solo debes colocar
dos puntos ( : ) al final de la lnea:
Sub PruebaJuntandoLineas()
'Normal
Debug.Print "Mensaje Uno"
Debug.Print "Mensaje Dos"
MsgBox "Mensaje Tres"
Debug.Print "-------------------"
'Juntando lneas
Debug.Print "Mensaje Uno": Debug.Print "Mensaje Dos": MsgBox "Mensaje Tres"
End Sub
Objeto DoCmd
Esta es una objeto exclusivo de Access que te permite realizar muchas acciones. Haz
esta prueba, escribe:
Docmd.
Al escribir el punto te aparece una lista larga con cosas que puedes realizar, all tienes
un bonito tema para explorar. Si usas por ejemplo:
DoCmd.RunCommand "Parmetro"
Esta opcin te permite realizar cualquier accin de los mens, como que dieras un clic
en algn elemento. En el parmetro opcin te aparecer un enumerado con todas las
acciones de los mens
ME (Palabra para referirse al formulario del Mdulo Asociado Actual)
Me es una palabra que solo puedes usar en los Mdulos Asociados (Mdulos que estn
ligados a los formularios), e indica que vas a usar explcitamente el objeto formulario al
que pertenece el modulo asociado en el que estas actualmente.
Para usar un objeto de formulario (como vimos antes) haras:
Dim frm as Form
Set frm = Forms!UnFormulario
frm.UnControl.Visible = True
Al escribir frm. se te desplega el listado de propiedades, mtodos y sub objetos para el
objeto frm (Un objeto de tipo formulario)
Si estas en un modulo asociado y deseas trabajar con el objeto formulario al que
pertenece haras:
Me.UnControl.Visible = True
Que seria como decir:
Con este formulario.UnControl.Visible = True
Estas haciendo referencia a un objeto formulario, el formulario actual.
Usar La Ayuda De Manera Fcil y Directa
Si estas observando un cdigo y tienes alguna duda sobre algo que ves, solo haz clic en
la palabra, pulsas la tecla F1 y se mostrara automticamente la ayuda para ese tema,
para la palabra que seleccionaste con un clic. Haz la prueba, haz clic por ejemplo sobre
la palabra MsbBox (despus pulsas F1)
Viste?, as podrs especializarte en el cualquier tema de los que hemos tocado aqu o
en el que desees, ahora que ya llegaste a esta parte, Eres libre para explorar!,
bienvenid@ al mundo de la programacin...
Finalizando
El unico "Pero" de escribir artculos como este es que casi siempre se le ha ido por alto
algn tema y hay que estar actualizando... si alguien se da cuenta de algo por favor me
comunica, as ayudamos a todos
En este articulo iba a explicar como se crea un objeto con un modulo de clase, pero al
final me pareci que esto ya seria un tema muy especifico, as que lo voy a escribir pero
en un articulo diferente
Saludos, Byron