Documente Academic
Documente Profesional
Documente Cultură
CAPTULO 1
ndice de contenido
1.- INTRODUCCIN AL CURSO......................................................................................................2
2.- EL ENTORNO DE TRABAJO.......................................................................................................2
MDULOS......................................................................................................................................4
COMPARACIN Y DECLARACIN DE VARIABLES..............................................................4
3.- VARIABLES Y TIPOS DE DATOS...............................................................................................6
VARIABLES...................................................................................................................................6
TIPOS DE DATOS..........................................................................................................................8
Vistame en http://neckkito.eu5.org
Si seguimos este curso podremos hacer un montn de cosas, pero no todas. Hay que
moverse, por eso...
No lo s todo de VBA. Mi gran amiga es la tecla F1, y tambin los foros de ayuda que
hay por Internet. Pero, adems...
Utilizad un poquito de imaginacin...
Mi gran ilusin sera que al acabar el curso fuerais capaces no slo de hacer, sino de, si no lo
sabis hacer, sacar de la chistera una solucin vuestra, propia, o si encontris algn cdigo
que alguien ha pensado previamente, seis capaces de entender que hace ese cdigo, y
poder decir: Vaya! Este pedazo de cdigo me sirve para lo que yo necesito... y s cmo
adaptarlo!
Dicho lo anterior esta primera leccin ser un poco dura porque hay que empezar por utilizar
unos conceptos bsicos, y eso representa un poquito de teora. Intentar hacerlo lo ms
suave posible.
Vistame en http://neckkito.eu5.org
Vistame en http://neckkito.eu5.org
Mdulo de objeto: es el mdulo que se asocia a aquel objeto de Access que contiene
cdigo. Si miramos la ventana de proyecto veremos que mi BD tiene tres formularios y un
informe con cdigo asociado.
Mdulo de clase: es mdulo que, como su nombre indica, sirve para definir clases. Este
tipo de mdulo es algo complejo de entender para quien se inicia en VBA, por lo que lo
dejaremos para una explicacin posterior.
Qu ventaja tiene programar mdulos estndar? Para que nos entendamos, para trabajar
menos. Vamos a poner un ejemplo abstracto: imaginemos que tenemos un formulario con
diez cuadros de texto, y que necesitamos que en cada uno de ellos, tras escribir un valor, se
realice una comprobacin para saber si el valor es correcto. Deberamos programar el evento
Despus de actualizar de cada TextBox de la manera siguiente:
.- Cgeme el valor introducido
.- Haz todas estas operaciones de comprobacin
.- Avsame si el valor introducido no es correcto.
Ello nos obligara a escribir ese cdigo en cada uno de los TextBox (bendito copy-paste!).
Pero, y si creamos un mdulo que nos haga las operaciones de comprobacin? Esas
operaciones slo deberan ser escritas una sola vez, mientras que a los TextBox deberamos
decirle: llmame al mdulo y dime si ha detectado que el valor es incorrecto.
S que esta explicacin es un poco abstracta, pero an no tenemos las herramientas
necesarias para un ejemplo prctico. Que no cunda el pnico, que pronto podremos ver lo
abstracto en accin ;)
COMPARACIN Y DECLARACIN DE VARIABLES
Si nos fijamos en la imagen vemos que los tres mdulos de objeto que se ven empiezan
siempre con dos lneas:
Vistame en http://neckkito.eu5.org
Si ahora situamos el cursor dentro del cdigo y en la barra de mens le damos al Play (o
pulsamos la tecla F5) veremos que Access nos dice que es el mismo nombre. Esto es as
porque lo ha comparado como texto.
Cmo podramos hacer para discriminar entre maysculas y minsculas? Pues para hacer eso
le deberamos indicar que queremos otro sistema de comparacin, que sera el BINARY.
Es decir, que si ahora cambiamos nuestra primera lnea de cdigo, de manera que nos quede
as:
Vistame en http://neckkito.eu5.org
CONST: si declaramos una variable como Const estamos dicindole a Access que esa
variable siempre tendr un valor constante y que no puede cambiar.
DIM: si declaramos una variable como Dim estamos dicindole a Access que esa
variable puede ir cambiando su valor
STATIC: si declaramos una variable como STATIC estamos dicindole a Access que esa
variable puede ir cambiando su valor, el cual no se reiniciar en cada pasada del cdigo.
Claro, verdad? Como yo no lo tengo tan claro vamos a utilizar un ejemplo muy simple para
ver cmo funciona la historia.
Creamos un mdulo (ahora ya deberamos saber cmo hacerlo) y escribimos el siguiente
cdigo:
Vistame en http://neckkito.eu5.org
Otra cosa que podemos ver es que las variables numricas, como en este caso, aceptan la
realizacin de operaciones matemticas.
Es decir, hemos utilizado la suma, pero podramos haber utilizado expresiones del tipo:
miDim = miDim * 3
miDim = miDim / 2
Y lgicamente podemos mezclar las distintas variables, siempre y cuando sean del mismo tipo
de dato.
Por ejemplo, podramos haber escrito:
miDim = miConst + miStatic
Tambin ahora ya sabemos que para ver los resultados en la ventana Inmediato debemos
7
Vistame en http://neckkito.eu5.org
Vistame en http://neckkito.eu5.org
Y los siguientes son tipos de nmeros con decimales; es decir, lo que se denomina con coma
flotante:
Single: es un dato de tipo numrico con . Por ejemplo
Const miSing As Single = 2.1
Double: es un dato de tipo numrico, de mayor rango
que el single (y de mayor precisin en los decimales). Por
ejemplo
Const miDbl As Double = 24.456
Currency: es un dato de tipo numrico, de mayor precisin que el double. Por ejemplo
Const miCurrency As Currency = 1526.63579
Aunque pueda parecer que el tipo currency lo utilizamos slo para valores de moneda, lo
podemos utilizar si queremos una precisin muy grande en los decimales.
Decimal: es un dato de tipo numrico, con una enorme precisin en los decimales. En
Access no podemos declararlo directamente, sino que primero lo tenemos que declarar como
Variant y despus convertirlo a decimal. Esto lo veremos en un captulo posterior.
Un par de puntualizaciones al tema de las variables y tipos de datos:
Existen lo que se denominan caracteres de definicin de tipos, que permiten identificar el
tipo de la variable sin tener que escribir dicho tipo. Es decir, que si yo escribo
Dim miVariable% es como si escribiera Dim miVariable As Integer
La lista de equivalencias existentes la tenis aqu:
CARCTER DE DEFINICIN DE TIPO
TIPO VARIABLE
String
Integer
&
Long
Single
Double
Currency
Existen unos valores que no pueden ser definidos por los tipos de datos que hemos visto,
exceptuando uno: el tipo de dato Variant.
Es decir, si no hay valor en un campo ese campo es nulo (NULL), o tambin podemos tener un
dato vaco (EMPTY), un valor nada (NOTHING), o un valor error (ERROR). Para recoger esa
ausencia o tipo especial de valor debemos emplear el tipo Variant. Ahora es un poco difcil
entrar en detalles sobre esta caracterstica, pero a lo largo del curso veremos algunos ejemplos
de lo anterior y lo entenderemos perfectamente.
Y ya para acabar con este tema vamos a ver la utilidad de nuestra Option Explicit, ahora que
controlamos el tema de las variables y de los tipos de datos. Vamos a hacer lo siguiente:
1.- En nuestro VBE creamos un nuevo mdulo (o reciclamos uno que tengamos con las
pruebas que hayamos podido hacer). Escribimos el siguiente cdigo:
9
Vistame en http://neckkito.eu5.org
Private Sub miError()
Dim miInt As Integer
miString = "Aqu hay un error"
Debug.Print miString
End Sub
Y ejecutamos el cdigo... Je, je... alguien nos chiva que hay algo mal?
Por tercera vez reescribimos el cdigo de la siguiente manera:
10
Vistame en http://neckkito.eu5.org
Por qu? Porque hemos definido miInt como Integer y cuando el valor que hemos asignado es
de tipo String.
Es interesante que nos vayamos familiarizando con el error 13 en tiempo de ejecucin, dado
que, en nuestros primeros proyectos, con toda probabilidad se va a convertir en un buen
amigo nuestro... O al menos as lo dicta mi experiencia!
Os dejo como ejercicio (fcil, fcil) la correccin del cdigo para que en la ventana inmediato
os aparezca un valor.
Suerte!
11
Vistame en http://neckkito.eu5.org