Anda di halaman 1dari 55

v

vv1
11s
ssu
uua
aa1
11
8
88a
aas
ss1
11c
cc 6
66

I
Indice
1. Introduccin.............................................................................................................. 1
2. Creacin de un programa......................................................................................... 3
3. Entorno de Trabajo................................................................................................... 6
4. Componentes ........................................................................................................... 10
5. Proyectos ................................................................................................................. 13
6. Las variables............................................................................................................ 15
7. Operaciones bsicas................................................................................................ 20
8. Funciones generales ............................................................................................... 22
9. Matrices ................................................................................................................... 25
10. Control de flujo.................................................................................................... 30
11. Organigramas ...................................................................................................... 32
12. Funciones y Procedimientos ............................................................................... 34
13. Control de errores................................................................................................ 38
14. Depuracin........................................................................................................... 39
15. Cuadro de mensaje .............................................................................................. 40
Creacin de un men .................................................................................................... 42
17. SQL....................................................................................................................... 43
18. DAO...................................................................................................................... 49
19. API ....................................................................................................................... 53
v1sua1 8as1c 6

1

v1sua1 8as1c 6
0 1 2 3 4 5 6 7 9
1. 1. 1. 1. |i-J:- |i-J:- |i-J:- |i-J:-
Visual Basic es un lenguaje de programacin de alto nivel, cuyo nico proveedor es Microsoft.
Su mbito de aplicacin se limita al sistema operativo Windows 95, 98 NT.

Tipos de lenguajes de programacin:
Lenguajes de bajo nivel: Son los lenguajes ensambladores (Assembler), que hablan el mismo
lenguaje que el procesador de un ordenador; el llamado cdigo mquina. Son bastantes complejos y
difciles de utilizar aunque con ellos se crean programas con un rendimiento ptimo.
Lenguajes de alto nivel: Las instrucciones que componen un programa utilizan una especie de
sintaxis inglesa muy rgida. Al compilar, las instrucciones se traducen a cdigo mquina.
Normalmente una instruccin equivale a muchas instrucciones de cdigo mquina. Estos lenguajes
son ms sencillos de utilizar que los ensambladores. Ejemplos de este tipo de lenguaje son: Java,
C++, Delphi (Pascal), y Visual Basic.
Visual Basic es utilizado generalmente para programas de gestin donde predomina el acceso intensivo a
bases de datos. Las aplicaciones del paquete ofimtico Microsoft Office (Word, Excel o Access) incluyen
Visual Basic como lenguaje de programacin.
Con Visual Basic seremos capaces de crear nuestros propios programas ya compilados, es decir
crearemos un archivo de extensin EXE. Hay que tener en cuenta de todos modos, que harn falta una
serie de archivos complementarios adems del archivo EXE para que podamos distribuir nuestro
programa. Afortunadamente Visual Basic incluye una utilidad para crear una instalacin de nuestro
programa.
Delphi de Inprise es una alternativa a Visual Basic. Los dos lenguajes tienen un mbito de aplicacin muy
parecido, siendo Delphi ms sofisticado y por lo tanto algo ms complejo de aprender.
Como su propio nombre indica Visual Basic es un lenguaje de programacin VISUAL, es decir primero
se crea el diseo (el aspecto) del programa y luego se describe su comportamiento. Visual Basic, como
cualquier lenguaje para sistemas operativos grficos, es un lenguaje que responde a una serie de eventos
predeterminados de la forma que el programador decida.
El lenguaje ms potente es C/C++. Es un lenguaje de medio nivel puesto que est estructurado y se puede
utilizar como sustituto del ensamblador. Con este lenguaje se realizan, por ejemplo, los sistemas
operativos. A pesar de ser tan potente no es un lenguaje adecuado para realizar programas de gestin o
para Windows, ya que se ha de realizar un gran esfuerzo para conseguir lo mismo que con Visual Basic se
puede hacer en un abrir y cerrar de ojos.

Ventana principal de Visual Basic 6:
v1sua1 8as1c 6

2


v1sua1 8as1c 6

3


z. z. z. z. 0::- J: - 0::- J: - 0::- J: - 0::- J: -
Visual Basic utiliza una estructura de programacin orientada a eventos, el programador debe incluir el
cdigo en los sucesos de los controles.

Un programa es una serie de instrucciones que se ejecutan una detrs de otra para
que de una serie de datos iniciales se obtenga el resultado deseado.


Para crear un programa con Visual Basic siempre hemos de pensar en lo que el usuario va a hacer y cmo
se quiere que responda el programa, as como tener muy en cuenta las otras acciones que los
procedimientos de evento pueden realizar, como desencadenar otros procedimientos de evento, cambiar
las propiedades de un objeto, llamar a otros procedimientos generales que no estn asociados con ningn
evento, etc.
Mientras nuestra aplicacin espera un suceso al cual deba responder, el usuario podr ejecutar otras
aplicaciones. El cdigo de nuestra aplicacin estar siempre alerta para activarse cuando el usuario acte
sobre nuestro programa.

0:.i:-:. //.:..
Para escribir comentarios en Visual Basic se ha de preceder el comentario con un apstrofe ().
Para seguir escribiendo una instruccin muy larga en la lnea siguiente se utiliza el smbolo de
subrayado (_).
Para unir diferentes textos y variables en una sla cadena se utiliza el smbolo ampersand (&).
v1sua1 8as1c 6

4

|-:J:::i- .::
Los pasos en general que se han de seguir son:
1. Se ha de crear el diseo de nuestro programa en un formulario. Bsicamente consiste en aadir una
serie de controles, los cuales son una serie de componentes encapsulados que realizan una
determinado funcin.
2. Se ha de ajustar las propiedades de los controles. Las propiedades definen el aspecto y
comportamiento de los controles. Las propiedades ms comunes son: name, caption, text, value,
backcolor,...
3. Escribir el cdigo en respuesta a los eventos que sean necesarios. Un evento es un algo que le ocurre
a un control, como por ejemplo que se pulse una tecla o se haga clic con el ratn.


v1sua1 8as1c 6

5


/::i-. J: i/j-

Objeto: Tambin llamado control o componente. Elemento de Windows que cumple un
determinado cometido. Por ejemplo una ventana, un botn, un men, etc. Los objetos pertenecen a
una clase la cual lleva asociado por su naturaleza una serie de eventos, propiedades y mtodos que
se les atribuye.

Evento: Suceso o acontecimiento de un objeto. Se codidifica mendiante un procedimiento o
funcin dnde nosotros escribimos el cdigo para ajustar el comportamiento del control a nuestros
designios. Ejemplos de evento son hacer un clic, pulsar una tecla, o mover el ratn sobre un
determinado control.

Propiedad: Caracterstica que define el formato de visualizacin o el comportamiento de un objeto.
Algunas propiedades funcionan en tiempo de diseo y otras en tiempo de ejecucin y otras son de
slo lectura. Ejemplos de propiedades son el nombre del control, el texto que visualiza, su color de
fondo, el tipo de letra, etc. Las propiedades pueden ser modificadas o consultadas.

Mtodo: Funcin o procedimiento de un objeto para que ste realice una determinada tarea.
Ejemplo de mtodos en un objeto formulario son: dibujar un crculo, borrar el formulario, dibujar
una lnea, asociar un men contextual, etc.

v1sua1 8as1c 6

6


;. ;. ;. ;. i-- J: /j- i-- J: /j- i-- J: /j- i-- J: /j-
Paleta de
Controles:

Propiedades en tiempo de diseo:

Propiedades y mtodos de un objeto:

Lista de controles y lista de eventos:


v1sua1 8as1c 6

7

-:J- J: -/j:i-.
Para examinar los elementos que disponemos para programar en Visual Basic (clases, propiedades,
mtodos, eventos, constantes y procedimientos) disponemos de una herramienta muy potente denominada
examinador de objetos. Se puede utilizar tanto para buscar objetos que hayamos creado, como objetos de
otras aplicaciones.

v1sua1 8as1c 6




|:. J: l:./ f.: (
Archivo:

Edicin:

Ver:

Proyecto:

Formato:

Depuracin:


v1sua1 8as1c 6

9


Ejecutar:

Herramientas:





v1sua1 8as1c 6

10


;. ;. ;. ;. 0--:i:. 0--:i:. 0--:i:. 0--:i:.
Los componentes o controles son las herramientas con las que construir un formulario. Visual Basic nos
muestra de forma predeterminada una serie de controles muy utilizados:
CONTROL TRADUCCIN PREFIJO DESCRIPCIN
Form Formulario frm Formulario; base los controles

PictureBox Cuadro de dibujo pic Imagen o marco para otros controles

Label Etiqueta lbl Texto fijo

TextBox Cuadro de texto txt Texto introducido por el usuario

CommandButton Botn de comando cmd Botn que ejecuta una orden

Frame Marco fra Sitio donde colocar botones de opcin

OptionButton Botn de opcin opt Para elegir una de varias opciones

CheckBox Casilla de verificacin chk Indica opcin activada o desactivada

ListBox Cuadro de lista lst Lista de elementos

ComboBox Cuadro combinado cmb Combina un cuadro de texto y una lista

HScrollBar Barra de desplaza-miento
horizontal.
hsc Para realizar desplazamientos o variar un
valor numrico.

VScrollBar Barra de desplaza-miento
vertical
vsc Para realizar desplazamientos o variar un
valor numrico.

Timer Temporizador tim Eventos a intervalos fijos de tiempo

DriveListBox Cuadro de lista de
unidades
drv Lista de los discos del ordenador

DirListBox Cuadro de lista de
carpetas
dir Lista de carpetas de una unidad de disco

FileListBox Cuadro de lista de
archivos
fil Lista de archivos de una carpeta

Shape Forma shp Una forma: rectngulo, crculo, etc.

Line Lnea lin Una lnea separadora.

Image Imagen img Una imagen.
Data Datos dat Acceso a una tabla/consulta de una BD.

OLE Incrustacin de objetos
vinculados
ole Otros objetos como por ejemplo una hoja de
clculo.

CommonDialog Dilogos comunes dlg Dilogos comunes como Abrir o Guardar
archivos. Microsoft Common Dialog
Control

v1sua1 8as1c 6

11

Adems de los componentes bsicos se pueden insertar ms componentes. Algunos de ellos ya vienen con
el paquete de Visual Basic pero se pueden descargar nuevos componentes de Internet, o comprar
componentes a otras empresas distintas de Microsoft o incluso podemos crear nosotros mismos nuevos
componentes.
0--:i:. :.-. J: k:J-. 7s
Se pueden encontrar bajo el nombre Microsoft Windows Common Controls
CONTROL TRADUCCIN PREFIJO DESCRIPCIN

TabStrip Pestaas tab Diferentes fichas donde mostrar controles.

ToolBar Barra de herramientas tlb Conjunto de botones situados en la parte
superior del formulario.

StatusBar Barra de estado stb Informacin del programa situado en la parte
inferior del programa.

ProgressBar Barra de progreso prb Indica el porcentaje de trabajo hecho.

TreeView Vista de rbol trv Vista de objetos clasificados.

ListView Vista de lista lsv Lista con iconos y detalles.

ImageList Lista de imgenes iml Imgenes para otros componentes.

Slider Deslizador sld Ajuste numrico.

v1sua1 8as1c 6

12


k:j:::.
Permiten seleccionar objetos de otras aplicaciones para que estn disponibles en el cdigo. Ello se hace
con una referencia a una Biblioteca de objetos (Object Library). Una biblioteca de objetos es un archivo
con extensin OLB que contiene informacin de objetos disponibles. Con el Examinador de objetos se
puede obtener informacin de dichos objetos.
v1sua1 8as1c 6

13


s. s. s. s. |-:i-. |-:i-. |-:i-. |-:i-.
La forma de crear un programa en el entorno de desarrollo de
Visual Basic es a travs de proyectos. Un proyecto agrupa una
serie de archivos que son necesarios para realizar un programa
(EXE).
Los archivos ms comunes que se incluyen en un proyecto son:

DESCRIPCIN EXTENSIN TIPO CONTENIDO
El proyecto VBP Texto Propiedades del programa.
Formulario FRM Texto
La posicin y tamao de los controles en
el formulario. Y tambin el cdigo
asociado al formulario
Cdigo fuente BAS Texto Cdigo Basic de uso general.
Controles OCX Binario
Controles adicionales a los controles
estndar. (Antes eran VBX)
Formulario FRX Binario
Partes binarias del formulario, como las
imgenes.

Propiedades del proyecto:


v1sua1 8as1c 6

14


Con las propiedades del objeto App podemos obtener el nmero de versin de nuestro programa, el
nombre del ejecutable, la trayectoria y otros datos interesantes.
Men del proyecto:
v1sua1 8as1c 6

15


(. (. (. (. |. .://:. |. .://:. |. .://:. |. .://:.
Las variables son unas zonas de memoria con un nombre dnde podemos almacenar algn dato. En una
variable slo se puede almacenar un dato a la vez; o dicho de otra forma, al almacenar un nuevo dato, el
anterior queda reemplazado y se pierde.
Las constantes son como las variables pero que contienen un valor fijo que no se puede variar a lo largo
del programa. La sintaxis es:
Constantes:
[Global] Const nombreConstante = expresin
Dim nombreVariable [As tipo]
Global nombreVariable [As tipo]
Variables:
Static nombreVariable [As tipo]

Los tipos de datos sencillos para las variables son:
TIPO DE DATOS CONV. SUFIJO TAMAO RANGO
Boolean CBool 1 bit True o False
Byte CByte 1 byte Enteros en el rango de 0 a 255.
Integer CInt % 2 bytes De -32.768 a 32.767.
Long CLng &
4 bytes Entero largo. De -2.147.483.648 a 2.147.483.647.
Single

CSng !
4 bytes Signo flotante con precisin simple:
De -3,402823E38 a -1,401298E-45 para valores negativos;
de 1,401298E-45 a 3,402823E38 para valores positivos; y 0.
Double

CDbl #
8 bytes Signo flotante con precisin doble.
De -1,79769313486232E308 a -4,94065645841247E-324 para valores
negativos;
de 4,94065645841247E-324 a 1,79769313486232E308 para valores
positivos; y 0.
Currency CCur @
8 bytes Entero a escala.
De 922.337.203.685.477,5808 a 922.337.203.685.477,5807.
Date CDate
Fechas en el rango 1/1/100 a 31/12/9999
Object
Referencias a objetos.
String *
tamao
$
1 byte por
carcter
De 0 a aproximadamente 65.535 bytes. Es necesaria una cantidad
adicional de espacio de almacenamiento.
Variant CVar
Variable Cualquier valor numrico hasta el rango del tipo Double, o cualquier
cadena de caracteres o fechas o matrices.
Type


El requerido
por los
elementos
Definido por el usuario.
El rango de cada elemento es el mismo que el de su tipo de datos
fundamental, de entre los anteriores.
0-.ii:.
Para referirnos al nmero por PI y no por su nmero se puede hacer una constante:
Const PI = 3.14159
v1sua1 8as1c 6

16


:- l:i
El tipo Variant puede almacenar diferentes tipos de datos, haciendo las conversiones necesarias para
guardar el tipo de datos que convenga.
Para determinar el contenido de una variable Variant:
FUNCIN DEVUELVE VERDADERO SI TIENE
IsNumeric Cualquier tipo numrico
IsDate Una fecha u hora
IsObject Una referencia a un objeto
IsArray Una matriz
IsNull Contenido nulo
IsEmpty No se ha inicializado
IsError Contiene un error
o si queremos ms detalle:
FUNCIN VARTYPE TIPO DE VALOR QUE DEVUELVE
vbBoolean Contiene un Boolean
vbByte Contiene un Byte
vbInteger Contiene un Integer
vbLong Contiene un Long
vbCurrency Contiene un Currency
vbSingle Contiene un Single
vbDouble Contiene un Double
vbDate Contiene un Date
vbString Contiene un String
vbObject Referencia a un objeto OLE
vbDateObject Referencia a un objeto no OLE
vbArray Contiene una matriz
vbNull Contenido nulo
vbEmpty No se ha iniciado
vbError Contiene un error

El valor Null se propaga en las expresiones, es decir si algn valor es nulo, toda la expresin da nulo.
El valor Null se utiliza normalmente en Bases de Datos para indicar que no hay datos. Las variables
que no son Variant no admiten el valor Null, dando un error en caso de que se les intente asignar.
El valor Empty es cuando a una variable Variant an no se le ha asignado ningn valor. El valor
Empty es diferente de 0, Null o cadena vaca (), pero se trata como ste cuando se usa en
expresiones.

v1sua1 8as1c 6

17


:- -/j:i-
Se pueden declarar variables de tipo objeto y para asociar a la variable un objeto existente se utiliza la
instruccin Set.
Dim nombreVariable As Objeto
Set nombreVariable = expresinObjeto
:-. J: Ji-. -i://:
La mayora de los tipos de datos de Visual Basic se corresponden con los tipos de datos de los campos
que contienen datos. Los pocos tipos de datos que no tienen un equivalente directo entre los tipos de
Access Basic pueden tratarse mediante otro tipo de datos de Access Basic.
TIPOS DE DATOS DE CAMPO TIPOS DE DATOS COMPATIBLE EN BASIC
Autonumrico Long
Moneda Currency
Fecha/Hora Date (Double)
Memo String
Nmero (Byte) Byte (Integer, String * 1)
Nmero (Entero) Integer
Nmero (Simple) Single
Nmero (Doble) Double
Objecto OLE Object (String)
Texto String
S/No Boolean (Integer)

9:/:- J: .://:.
Para almacenar valores en un programa se utilizan las variables. Las variables son nombres que han de
empezar por una letra y adems el nombre slo puede contener letras, nmeros o el smbolo de subrayado
(_). El nombre de una variable no puede coincidir con el de una palabra reservada.
En principio Visual Basic permite la declaracin implcita de variables, es decir al usarla queda
automticamente declarada. Pero esto no es ms que una fuente de errores ya que podemos pensar que
estamos usando una variable cuando en realidad es otra variable (por un error de mecanografiado). Otros
lenguajes de programacin como C o Pascal slo permiten la declaracin explcita de variables, es decir,
se indican cuales son las variables que vamos a usar, as si ponemos una variable escrita incorrectamente
el compilador nos avisar del error. Visual Basic permite tambin la declaracin explcita de variables
pero para ello tenemos que incluir en el cdigo como primera lnea: Option Explicit
v1sua1 8as1c 6

1


4/:i- J: /. .://:.
El mbito de una variable se refiere al lugar donde se puede utilizar una variable. Puede ser de tres tipos,
dependiendo de dnde fue declarada.
MBITO DECLARACIN DESCRIPCIN
Local Dim, Static Variables declaradas dentro de procedimientos o funciones, slo
disponibles all dentro. Las variables se crean al iniciar la subrutina y
se destruyen al finalizar.
Mdulo Dim Estas variables se declaran en la seccin de declaraciones de un
formulario o mdulo de cdigo. Estn disponibles dentro del mdulo
dnde fueron declaradas, pero no se ven desde otros mdulos.
Global Global Variables declaradas en la seccin de declaracin de un mdulo de
cdigo, y se pueden utilizar en se o cualquier otro mdulo, ya sea de
formulario o de cdigo.

Cuando tenemos el mismo nombre de variable en mbitos diferentes, el que tiene preferencia es el ms
local.
Por ejemplo:
Dim a As Integer

Sub procediment ()
Dim a As Integer
a = 10 Se refiere a la a local
End Sub
::- J: .:J J: /. .://:.
El tiempo de vida de una variable nos indica cunto tiempo podemos utilizar una variable hasta que
finalmente esta se destruye.
Las variables con mbito de mdulo y global se crean cuando la aplicacin comienza y no se destruyen
hasta que se acaba. De esta forma, no perdemos el valor de la variable a no ser que le demos otro valor
distinto.
En cambio, las variables locales declaradas con Dim se crean cuando la funcin comienza y se destruyen
al acabar. Su tiempo de vida se reduce al tiempo de vida de la funcin.
Por ejemplo:
Sub Proc1 ()
Dim var1 As Long

Print var1
var1 = 344
End Sub

Cuando llamamos por primera vez al procedimiento Proc1, obtendremos el resultado 0 por pantalla.
Despus la variable var1 toma el valor 344, pero a continuacin acaba el procedimiento y la variable
queda destruida. As cuando volvamos a llamar al procedimiento Proc1, volver a pasar otra vez lo
mismo: visualizar un 0 por pantalla. Para que esto no pase, es decir que la variable conserve su valor, se
ha de utilizar el modificador Static al declarar la variable. Otra posible solucin sera hacer que var1
fuese una variable global.
Posibles soluciones:
Variable esttica:

Sub Proc1 ()
Static var1 As Long

Print var1
Todas son estticas:

Static Sub Proc1 ()
Dim var1 As Long

Print var1
Variable global:

Dim var1 As Long

Sub Proc1 ()
Print var1
v1sua1 8as1c 6

19

var1 = 344
End Sub

var1 = 344
End Sub

var1 = 344
End Sub


:-. J:j::J-. - :/ .:-
Un tipo definido por el usuario no es ms que una serie de variables agrupadas como una sola. En el
lenguaje C es el struct y en Pascal es el record.
Por ejemplo:
Type Cine
nombre As String
domicilio As String
numVentas As Integer
End Type
Para declarar una variable con el nuevo tipo de datos Cine se hace de la siguiente forma:
Dim arcadia As Cine
Para acceder a uno de los elementos de la estructura se utiliza un punto entre el nombre de la estructura y
del campo. Por ejemplo:
arcadia.nombre = Cine Arcadia
arcadia.domicilio = Balmes, 28
arcadia.numVentas = 3

o tambin con With:
With arcadia
.nombre = Cine Arcadia
.domicilio = Balmes, 28
.numVentas = 3
End With
v1sua1 8as1c 6

20


I. I. I. I. 0::-:. //.:. 0::-:. //.:. 0::-:. //.:. 0::-:. //.:.
| .::-
El smbolo de la asignacin es el igual. Lo que hace es evaluar la expresin de la derecha y el resultado
introducirlo en la variable de la izquierda. Esta es la forma que tenemos de iniciar o cambiar el valor que
guarda una variable.
variable = expresin
0::-:. :i:i:.
OPERADOR OPERACIN ARITMTICA QUE EFECTA EJEMPLO
+ Suma 2 + 10 12
- Resta 2 10 -8
* Multiplicacin 2 * 10 20
/ Divisin 2 / 10 0.2
\ Divisin entera (sin decimales) 2 \ 10 0
Mod Mdulo: resto de la divisin 2 Mod 10 2
^ Elevacin o exponenciacin 2 ^ 10 1024
0::-:. :/:-/:. - J: -:-
OPERADOR DEVUELVE VERDADERO SI DEVUELVE FALSO SI
= A y B son iguales A y B son distintos
<> A y B son distintos A y B son iguales
< A es menor que B A es mayor o igual que B
> A es mayor que B A es menor o igual que B
<= A es menor o igual que B A es mayor que B
>= A es mayor o igual que B A es menor que B
0:J-:. /-:-.
OPERADOR SIGNIFICADO DEVUELVE VERDADERO SI
And Y Los dos operandos A y B son verdadero
Or O Alguno de los operandos es verdadero
Xor O exclusivo Los operandos son distintos: uno verdadero y otro falso.
Eqv Equivale Los operandos son iguales: los dos verdadero o los dos falso.
Imp Implica Cuando el primer operando implica el segundo: si el primero
es verdadero el otro tiene que ser verdadero.
Not No Al contrario: si era verdadero es falso y viceversa.

//. J: .:JJ
A B A And B A Or B A Xor B A Eqv B A Imp B Not A Not B
True True True True False True True False False
True False False True True False False False True
False True

False True True False True

True False
v1sua1 8as1c 6

21

False False False False False True True True True

v1sua1 8as1c 6

22


2. 2. 2. 2. |:-:. ::/:. |:-:. ::/:. |:-:. ::/:. |:-:. ::/:.
|:-:. ::. ::/:.
FUNCIN SIGNIFICADO
Abs Devuelve el valor absoluto de un nmero (sin signo).
Sgn Indica el signo del nmero.
Sqr Indica la raz cuadrada.
Exp Calcula el nmero e elevado al exponente indicado.
Log Halla el logaritmo natural del nmero dado.
Rnd Nmero aleatorio entre 0 y 1 con decimales.
Round Redondea un nmero con las posiciones decimales indicadas.
|:-:. i:--:i:.
FUNCIN SIGNIFICADO
Sin Seno de un ngulo en radianes.
Cos Coseno de un ngulo en radianes.
Tan Tangente de un ngulo en radianes.
Atn
Arcotangente: Atn(1)*4 3,14159265358979
|:-:. j:::.
FUNCIN SIGNIFICADO
DDB Clculo de la depreciacin en un perodo de tiempo.
FV Valor futuro de unas aportaciones peridicas.
IPmt Inters pagado en un determinado perodo.
IRR Tasa interna de retorno.
MIRR Tasa interna de retorno modificada.
NPer Nmero de perodos de un pago constante.
PPmt Capital pagado en un determinado perodo.
PV Valor actual de un pago futuro.
Rate Tipo de inters por perodo.
|:- -J::-/
La funcin iif viene de Inmediate if (Si inmediato). Se utiliza para asignar a una variable uno de dos
valores posibles dependiendo de una condicin.
Por ejemplo:
importe = iif(descuento = True; precio * 0.95; precio) * unidades

v1sua1 8as1c 6

23

|:-:. J: J:.
FUNCIN SIGNIFICADO Y EJEMPLO
Extrae un nmero determinado de caracteres de la izquierda. Left
Left (Basic,2) Ba
Extrae un nmero determinado de caracteres de la derecha. Right
Right(Basic,2) ic
Extrae caracteres de cualquier punto de la cadena. Mid
Mid(Basic,2,3) asi
Elimina los espacios que hubiese al principio de la cadena. LTrim
LTrim ( Basic) Basic
Elimina los espacios que hubiese al final de la cadena. RTrim
RTrim(Basic ) Basic
Elimina espacios del principio y del final. Trim
Trim( Basic ) Basic
Convierte la cadena a minsculas. LCase
LCase(Basic) basic
Convierte la cadena a maysculas. UCase
UCase(Basic) BASIC
Convierte una cadena segn una opcin. StrConv
StrConv("visual basic", vbProperCase) Visual Basic
Invierte la secuencia de caracteres de la cadena. StrReverse
StrReverse(Basic) cisaB
Genera una cadena de espacios en blanco. Space
Space(10)
Genera una cadena con el carcter indicado. String
String(5,"*") "*****"
Nos devuelve la longitud de la cadena. Len
Len(Basic) 5
Indica la posicin de una cadena contenida en otra cadena. InStr
InStr("Basic","asi") 2
Realiza bsquedas y sustituciones en una cadena. Replace
Replace (Visual Basic,a,x) Visuxl Bxsic

0-J:-. 40|| J: /-. i::.
FUNCIN SIGNIFICADO EJEMPLO
Chr Obtiene el caracter correspondiente a un cdigo ASCII. Chr(65) A
Asc Obtiene el cdigo ASCII correspondiente a un carcter. Asc("A") 65

v1sua1 8as1c 6

24

|:-:. J: j:(
Para introducir una fecha directamente se escribe entre almohadillas. Por ejemplo: #4/28/1999# Y con la
hora: #7/30/1999 17:25#
FUNCIN SIGNIFICADO Y EJEMPLO
Date Devuelve la fecha actual de tipo Date.
Date #2/16/99#
Now Devuelve la fecha y hora actuales de tipo Date.
Now #2/16/99 11:33:23 AM#
Time Devuelve la hora actual de tipo Date
Time #11:33:23 AM#
Day Obtiene el da de una fecha
Day(#2/16/99#) 16
Month Obtiene el mes de una fecha.
Month(#2/16/99#) 2
Year Obtiene el ao de una fecha.
Year(#2/16/2000#) 2000
WeekDay Devuelve el da de la semana correspondiente.
WeekDay(#2/16/99#, vbMonday) 2 (Martes)
Hour Obtiene la hora.
Hour(#11:38:07 AM#) 11
Minute Obtiene los minutos.
Minute(#11:38:07 AM#) 38
Second Obtiene los segundos.
Second(#11:38:07 AM#) 7
DateAdd Aade un intervalo de tiempo a una fecha.
DateAdd("ww", -1, #2/16/99#) #2/9/99#
DateDiff Obtiene el intervalo transcurrido entre dos fechas.
DateDiff("ww", #2/16/99#, #2/9/99#) -1
DatePart Devuelve una parte de una fecha: semana, trimestre, etc.
DatePart("yyyy", #2/16/99#) 1999
DateSerial Compone una fecha a partir de parmetros relativos
DateSerial(1999, 2, 16) #2/16/99#
TimeSerial Compone una hora a partir de parmetros relativos
TimeSerial(11, 33, 23) #11:33:23 AM#
MonthName Obtiene el nombre del un mes
MonthName (#2/16/99#) Febrero
WeekdayName Obtiene el nombre de un da de la semana
WeekdayName (#2/16/99#) Martes
Timer Nmero de segundos desde medianoche.
Timer 41758

v1sua1 8as1c 6

25


Intervalos de tiempo
CADENA UNIDAD
s Segundos
n Minutos
h Horas
y Das de ao
d Das de mes
w Das de la semana
ww Semanas
m Meses
q Trimestres
yyyy Aos

|:- j-i
La funcin Format nos muestra un nmero o una fecha de la forma deseada: nmero de decimales,
separacin de millares, ao de 2 o 4 cifras, etc.
Ejemplos:
Format (5000.789, #,##0.00 ) 5.000,78
Format (2000.95, #,##0 Pts) 2.001 Pts
|-i-. ::-. - :/ -/:
NOMBRE DEL FORMATO DESCRIPCIN
General Number Visualiza el nmero sin separador de millares.
Currency Visualiza el nmero con el separador de millares si hace falta; visualiza dos
decimales. El smbolo monetario depende de la configuracin local del
sistema.
Fixed Visualiza al menos un dgito a la izquierda y dos dgitos a la derecha del
separador decimal.
Standard Visualiza el nmero con el separador de decimales, al menos un dgito a la
izquierda y dos dgitos a la derecha del separador decimal.
Percent Visualiza el nmero multiplicado por 100 con el signo de tanto por ciento
(%) aadido a su derecha; siempre visualiza dos dgitos a la derecha del
separador decimal
Scientific Utiliza la notacin cientfica estndar, tambin llamado coma flotante.
Yes/No Visualiza No si el nmero es 0; en otro caso, visualiza Yes
True/False Visualiza False si el nmero es 0; en otro caso, visualiza True
On/Off Visualiza Off si el nmero es 0; en otro caso, visualiza On


7. 7. 7. 7. |i::. |i::. |i::. |i::.
Las matrices (arrays) son tambin variables pero dnde se pueden guardar muchos datos a los que se les
hace referencia mediante un ndice numrico.
Para averiguar el ndice mnimo y mximo permitidos en una matriz, tenemos las funciones LBound y
UBound respectivamente.
v1sua1 8as1c 6

26

Las matrices con un solo ndice son unidimensionales, tambin llamadas vectores. Las matrices con dos
o ms ndices son multidimensionales.
Hay dos tipos de matrices: los estticos y los dinmicos. Los primeros son los que encontramos en otros
lenguajes como C y Pascal: tienen un nmero fijo de elementos que no podemos cambiar. Las matrices
dinmicas, por contra, pueden variar su tamao (nmero de elementos) cuando queramos.

Sintaxis de matrices estticas:
[Dim|Global|Static] nombreMatriz (tamao [, tamao]) As tipo
[Dim|Global|Static] nombreMatriz (Inferior To Superior) As tipo
Sintaxis de matrices dinmicas:
Dim nombreMatriz () As Tipo
ReDim nombreMatriz (tamao [, tamao])

/::i-. J: / i:
Para referirnos a un elemento en concreto de una matriz se ha de poner el nombre de la matriz y a
continuacin el ndice entre parntesis. Por ejemplo:
Dim matriz(-2 To 2) As String
ELEMENTO INDICE CONTENIDO (DE EJEMPLO)
1 matriz(-2) Alfa
2 matriz(-1) Beta
3 matriz(0) Gamma
4 matriz(1) Delta
5 matriz(2) Epsilon

v1sua1 8as1c 6

27


9:/:- J: i:
Una matriz se puede declarar indicando su tamao o indicando el ndice inferior y superior.
Dim matriz (0 To 9) As Integer
o bien
Dim matriz (10) As Integer
Cuando se declara por su tamao el ndice inicial es 0 y el ndice mayor es igual al nmero de elementos
menos uno. De todas formas se puede variar el ndice inicial con la orden:
Option Base indiceInicial
Para recorrer todos los elementos de una matriz unidimensional se utiliza un slo bucle For. Por
ejemplo:
Dim i As Integer
For i = LBound(matriz) To UBound(matriz)
Print matriz(i)
Next
o bien
Dim i As Integer
For i = 0 To 9
Print matriz(i)
Next

|i::. /i:J::.:-/:.
Para declarar una matriz de dos dimensiones se han de indicar dos ndices. Por ejemplo:
Dim matriz10x25 (0 to 9, 0 to 24) As Double
o bien
Dim matriz10x25 (10, 25) As Double
Para recorrer una matriz de varias dimensiones se utilizan una serie de For encadenados, uno por cada
dimensin. Por ejemplo:
Dim i As Integer, j As Integer
For j=0 to 24
For i=0 to 9
Print matriz (i, j)
Next
Next

v1sua1 8as1c 6

2


|i::. J:/:.
Para declarar una matriz dinmica haremos:
Dim vector () As Byte
Y cuando necesitemos un nmero determinado de elementos, la redimensionaremos as:
ReDim vector (20)
El comando ReDim es una orden de ejecucin y no de declaracin, y como tal puede ser utilizado cuando
haga falta.
ReDim admite la misma sintaxis que se utiliza para las matrices estticas normales. Hay una restriccin:
podemos cambiar el nmero de elementos de la matriz, pero no el nmero de dimensiones.
Cuando se utiliza la orden ReDim reinicia o vaca todos los elementos que pudisemos tener antes en la
matriz. Para que esto no ocurra se utiliza la palabra reservada Preserve:
ReDim Preserve vector (30)
En este ejemplo y continuando con el ejemplo anterior, los primeros 20 elementos quedan inalterados y
tenemos 10 nuevos elementos al final de la matriz.

v1sua1 8as1c 6

29


|i: J: -i-/:.
Una matriz de controles se compone de controles del mismo tipo que tienen todos el mismo nombre y que
tienen un ndice (propiedad Index) que los identifican. Al compartir tambin los mismos eventos stos
incorporan un argumento que indica el ndice del elemento que invoc el evento.

Private Sub txtMatriz_Change(Index As Integer)
End Sub

Para crear una matriz de controles se siguen los siguientes pasos:
1. Crear el primer control y darle un nombre, que
ser el nombre de la matriz.
2. Dar la orden de copiar y pegar (Ctrl+C, Ctrl+V)
3. Visual Basic nos preguntar si deseamos crear
una matriz de controles, le respondemos que s.
4. Pegamos tantas veces como controles se necesiten

El primer control tendr ndice 0, el segundo 1, etc. El
ndice se puede cambiar con la propiedad Index. Si se
borra dicha propiedad estamos haciendo que ese elemento
deje de pertenecer a una matriz, para lo cual antes se le
debera cambiar de nombre (para que no coincida con el
nombre de la matriz).

v1sua1 8as1c 6

30


10. 10. 10. 10. 0-i 0-i 0-i 0-i-/ J: j/j- -/ J: j/j- -/ J: j/j- -/ J: j/j-
El control de flujo nos permite decidir en que orden se ejecutarn las instrucciones de nuestro programa:
si hay instrucciones que se deben ejecutar slo en una algunas ocasiones o otras instrucciones que se
deben repetir una serie de veces.
La siguiente tabla muestra el nombre de las sentencias para control de flujo, una descripcin y la sintaxis.
Lo que est entre corchete son elementos opcionales.
Transfiere el control del programa a un procedimiento Sub de Access Basic o a un
procedimiento de biblioteca de vnculos dinmicos (DLL).
Call
Call nombre [(listaArgumentos)]
Repite un bloque de instrucciones siempre que una condicin sea verdadera o hasta que
la condicin se vuelva verdadera
Do ...
Loop

Do [{While | Until}
condicin]
[bloqueInstruccin]
[Exit Do]
[bloqueInstruccin]
Loop
Do
[bloqueInstruccin]
[Exit Do]
[bloqueInstruccin]
Loop [{While | Until} condicin]
Permite la ejecucin condicional, basndose en la evaluacin de una expresin.
If condicin Then entonces [Else sino]
If ... Then

If condicin1 Then
[bloqueInstruccin-1]
[ElseIf condicin2 Then
[bloqueInstruccin-2] ]
. . .
[Else
[bloqueInstruccin-n] ]
End If
Repite un grupo de instrucciones el nmero de veces especificado.
For ... Next

For contador = inicio To fin [ Step incremento ]
[bloqueInstruccin]
[Exit For]
[bloqueInstruccin]
Next [contador [, contador]]
Bifurcan hacia una subrutina dentro de un procedimiento y vuelven desde dicha
subrutina. Se uso est obsoleto y no es recomendable.
GoSub {etiquetaDeLnea| nmeroDeLnea}
GoSub ...
Return
etiquetaDeLnea: o nmeroDeLnea
. . .
Return
Se bifurca incondicionalmente a una lnea especificada dentro de un procedimiento. Se
uso est obsoleto y no es recomendable excepto para el control de errores.
Goto

GoTo {etiquetaDeLnea | nmeroDeLnea}
Select Case
Ejecuta uno de varios bloques de instrucciones dependiendo del valor de una
expresin.
v1sua1 8as1c 6

31


Select Case expresinPrueba
[Case listaExpresiones1
[bloqueInstruccin-1] ]
[Case listaExpresiones2
[bloqueInstruccin-2] ]
. . .
[Case Else
[bloqueInstruccin-n] ]
End Select
Ejecuta una serie de instrucciones en un bucle, siempre y cuando una condicin
determinada sea verdadera. Se uso est obsoleto y no es recomendable.
While ...
Wend

While condicin
[bloqueInstruccin]
Wend
0i. :.ii. J: l:./ f.:
Define una nueva estructura de datos creada por el usuario.
Type ...
End Type Type nombre
[Declaracin de variables]
End Type
Se utiliza para hacer ms cmoda la utilizacin de propiedades y mtodos de un objeto.
Dentro de la estructura para utilizar una propiedad o mtodo del objeto no es necesario
preceder del nombre del objeto sino tan slo del punto.
With ...
End With

With objeto
[bloqueInstruccin]
End With

Ejemplos:
TYPE WITH

Type EmployeeRecord
ID As Integer
Name As String * 20
Address As String * 30
Phone As Long
HireDate As Date
End Type

With MyObject
.Height = 100
.Caption = "Hello World"
With .Font
.Color = vbRed
.Bold = True
End With
End With


v1sua1 8as1c 6

32


11. 11. 11. 11. 0:. 0:. 0:. 0:.
Los organigramas se utilizan para representar grficamente la secuencia de ejecucin de las instrucciones
de un programa. Una instruccin normal se representa por una rectngulo y una pregunta o condicin se
representa por un rombo. Si una de las lneas que salen del rombo da marcha atrs nos encontramos ante
un bucle, es decir, una serie de instrucciones que se repiten un determinado nmero de veces. Como por
ejemplo el DO LOOP o el FOR. Si en cambio siempre van hacia delante se trata de un IF o de un
SELECT CASE.
Ejemplo de programa que calcula la factorial de un nmero:


Ejemplo de ejecucin del programa cuando se quiere calcular la factorial de 3:
INSTRUCCIN VARIABLES
ORDEN CDIGO N FACT
1 LEER N
2 FACT=1 3
3 N>1? (si) 3 1
4 FACT=FACT*N 3 1
5 N=N-1 3 3
6 N>1? (si) 2 3
7 FACT=FACT*N 2 3
8 N=N-1 2 6
9 N>1? (no) 1 6
10 ESCRIBIR FACT 1 6


LEER N
FACT=1
ESCRIBIR FACT
FACT=FACT*N
N=N-1
FIN
N > 1 ?
INICIO
S
NO
El programa codificado en Visual Basic sera:
Sub CalcularFactorial()
Dim n As Double
Dim fact As Double

n = InputBox("Introduce un nmero")
fact = 1
Do While n > 1
fact = fact * n
n = n - 1
Loop
MsgBox "El factorial es " & fact
End Sub

v1sua1 8as1c 6

33

:J- :j:/-
Averiguar si un nmero es positivo o negativo:

El programa codificado en Visual Basic sera:
Sub EsNegativo()
Dim n As Double

n = InputBox("Introduce un nmero")
If n < 0 Then
MsgBox Es negativo
Else
MsgBox Es positivo
End If
End Sub



LEER N
ESCRIBIR: Es negativo
FIN
N < 0 ?
INICIO
S NO
ESCRIBIR: Es positivo
v1sua1 8as1c 6

34


1z. 1z. 1z. 1z. |:-:. |-:J:::i-. |:-:. |-:J:::i-. |:-:. |-:J:::i-. |:-:. |-:J:::i-.
Las funciones y procedimientos se utilizan para encapsular un cdigo que ha de realizar una determinada
tarea. Una funcin es como un procedimiento pero que adems nos retorna un valor de vuelta o retorno.
La sintaxis es:
[Static] [Private] Function nombreDeFuncin [(lista de argumentos)] [As tipo]
[bloque de instrucciones]
[nombreDeFuncin = expresin]
[Exit Function]
[bloque de instrucciones]
[nombreDeFuncin = expresin]
End Function

[Static] [Private] Sub nombreDeSub [(lista de argumentos)]
[bloque de instrucciones]
[Exit Sub]
[bloque de instrucciones]
End Sub

La sintaxis de cada argumento es la siguiente:
[ByVal nombreVariable [()] [As tipo]

Las partes habituales de las que consta una funcin o procedimiento son:
1. Una cabecera de comentarios que describa el propsito de la
rutina, los argumentos que acepta y los posibles valores que
devuelve.
2. Declaraciones de constantes locales (Const)
3. Declaraciones de variables (Dim)
4. Cdigo de iniciacin de las variables
5. Cdigo restante
6. Cdigo para la gestin de errores
v1sua1 8as1c 6

35


|/J. -:J:::i-.
Los procedimientos no retornan ningn valor. Hay dos formas de utilizar (o llamar) a un procedimiento:
Mtodo 1:
NombreDelProdimiento par1, par2, ... parN
Mtodo 2:
Call NombreDelProcedimiento (par1, par2,..., parN)
|/J. j:-:.
Las funciones son igual que los procedimientos pero adems retornan un valor que puede ser Boolean,
Integer, String, etc. Si no se indica el tipo de retorno se asume que es Variant. Dos formas habituales de
llamar a una funcin son:
Mtodo 1:
Dim a as integer
a = FuncionSuma(3, 5)
Mtodo 2:
If FuncionSuma(3, 5) = 7 then
Tambin se puede llamar a una funcin con la instruccin Call, aunque as no podemos utilizar el valor
de retorno.
0/.:j::- J: -:J:::i-. j:-:.
Procedimientos de eventos: Son llamados automticamente al ocurrir un determinado suceso,
aunque existe tambin la posibilidad de que el programador los invoque a mano.
Eventos de un control:
Sub NombreControl_NombreEvento (parmetros)
Eventos de un formulario:
Sub Form_NombreEvento (parmetros)
Procedimientos y funciones generales: Son llamados exclusivamente por el programador. Hay dos
tipos:
Locales: Slo pueden ser utilizados desde el mdulo en que estn definidos y no desde otros
mdulos. Son los que van precedidos de la palabra Private.
Globales: Pueden ser llamados desde otros mdulos diferentes al que fueron definidos. Van
precedidos por la palabra Public.




|/:i-.
El paso de parmetros a procedimientos o funciones puede ser de dos formas distintas:
Por referencia.
Es el mtodo por defecto. No se pasa el valor
del parmetro sino tan slo su direccin. De esta
forma dentro de una funcin o procedimiento se
puede variar el valor del parmetro pasado. Es
una forma de poder retornar diferentes valores.

Por valor
Tan solo se pasa el valor del parmetro, y no su
direccin. De esta forma, el valor del parmetro ser el
mismo despus de ejecutar la funcin o procedimiento.
Estos parmetros vienen antepuestos por ByVal.
Ejemplo:
Sub Incrementar(i As Integer)
i = i + 1
End Sub

Dim a As Integer
a = 0
Incrementar a
Ejemplo:
Sub Incrementar(ByVal i As Integer)
i = i + 1
Print i Imprime 1
End Sub

Dim a As Integer
a = 0
v1sua1 8as1c 6

36

Print a Imprime 1

Incrementar a
Print a Imprime 0


v1sua1 8as1c 6

37


l:i /. j:-:.
Si no se indica el tipo de datos de un parmetro se asume que es Variant.
No se puede pasar un Variant como parmetro real si el parmetro formal es de otro tipo. El siguiente
cdigo no funcionara:
Function NumCars (s As String) As Integer
...
End Function

Dim v As Variant
v = Hola
Print NumCars(v)

Para solucionarlo tenemos tres opciones:
1. Convertir el Variant en una expresin ponindolo entre parntesis:
Print NumCars((v))
2. Convertir el Variant en una cadena con CStr:
Print NumCars(CStr(v))
3. Se declara el parmetro formal con ByVal:
Function NumCars (ByVal s As String) As Integer



v1sua1 8as1c 6

3


1;. 1;. 1;. 1;. 0-i-/ J: :-:. 0-i-/ J: :-:. 0-i-/ J: :-:. 0-i-/ J: :-:.
Cuando ocurre un error en nuestro programa podemos controlar la accin a tomar mediante la inclusin
de un controlador de errores. Para saber de qu error se trata disponemos de la variable error y de la
variable err que nos indican el error en String y en Integer respectivamente.
Un control de errores tpico en un procedimiento:
Sub nombreProc ()
On Error Goto Error_nombreProc
...
Exit_nombreProc:
[On Error Resume Next]
...
Exit Sub
Error_nombreProc:
MsgBox Error, vbCritical, Error n & Err
Resume Exit_nombreProc
End Sub

Se pueden generar errores en la instruccin:
Error cdigoError
| ./: J:/ -J:- J: :j- J: :-:.
INSTRUCCIN DESCRIPCIN
Resume Reanuda la ejecucin del programa desde la instruccin que
origin el error.
Resume Next Reanuda la ejecucin del programa desde la instruccin
inmediatamente siguiente a la que origin el error.
Resume lnea Reanuda la ejecucin del programa en la etiqueta especificada
por lnea, donde lnea es una etiqueta de lnea.
Error Err Vuelve a activar el error en tiempo de ejecucin ms reciente. Si
se ejecuta esta instruccin dentro del cdigo de manejo de
errores, Access Basic buscar retrospectivamente otro cdigo de
manejo de errores por la ruta de llamadas a procedimientos.
On Error GoTo 0 Desactiva el control de errores en el procedimiento.


v1sua1 8as1c 6

39


1;. 1;. 1;. 1;. 9::- 9::- 9::- 9::-
La depuracin consiste en ejecutar el programa instruccin a instruccin para ver en que orden se
ejecutan las instrucciones, cmo stas modifican las variables y as poder encontrar fcilmente dnde se
encuentran los errores que podamos haber cometido.
La forma habitual de proceder es primero insertar un punto de ruptura en alguna instruccin (sealado por
un punto rojo). El punto de ruptura nos asegura que el programa se parar al llegar a dicha instruccin. A
partir de ah y pulsando F8 repetidamente veremos como se ejecuta nuestro programa paso a paso.
Si mostramos la ventana de Variables Locales veremos como stas van siendo modificadas a medida que
ejecutamos nuestro programa paso a paso.
La ventana Inmediato nos permite evaluar cualquier expresin que se nos ocurra al momento. Para ello
anteponemos un interrogante al escribir una instruccin en la ventana de Inmediato, por ejemplo: ? 5
* 3

v1sua1 8as1c 6

40


1s. 1s. 1s. 1s. 0J- J: :.j: 0J- J: :.j: 0J- J: :.j: 0J- J: :.j:
Para visualizar cuadros de mensajes tenemos la orden MsgBox que se puede utilizar tanto como
procedimiento o funcin. Lo ms atractivo de MsgBox es su gran flexibilidad de formas de presentacin
dependiendo de tres conceptos que se pueden sumar:
BOTONES
0 vbOkOnly
1 vbOkCancel
2 vbAbortRetryIgnore
3 vbYesNoCancel
4 vbYesNo
5 vbRetryCancel

ICONOS
16 vbCritical

48 vbExclamation

32 vbQuestion

64 vbInformation


BOTONES POR DEFECTO
0 vbDefaultButton1
256 vbDefaultButton2
512 vbDefaultButton3

Aceptar
Cancelar
Aceptar
Anular
Ignorar
Cancelar
Repetir
Repetir Cancelar
S
S
No
No
1ro
2do
1ro
1ro
3ro
2do
v1sua1 8as1c 6

41


Primer ejemplo:
MsgBox "El cliente ya no existe", vbInformation, "Mensaje"


Segundo ejemplo:
Do Until vbCancel = MsgBox("No se tiene acceso al disco", _
vbCritical + vbRetryCancel + vbDefaultButton2)
...
Loop




Tercer ejemplo:
If vbYes = MsgBox("Guardar el archivo?", _
vbQuestion + vbYesNoCancel) Then
...
End If



v1sua1 8as1c 6

42


1(. 1(. 1(. 1(. 0::- J: : 0::- J: : 0::- J: : 0::- J: :
En la barra de herramientas de Visual Basic encontraremos el botn para que nos aparezca el Editor
de mens.

Cmo se hace el men:
Al poner el ttulo del men podemos poner un ampersand (&) delante de la letra que se quiere que
aparezca subrayada.
Todos los elementos del men que hagamos deben tener un nombre, normalmente con el prefijo
mnu.
Podemos asociar un atajo del teclado a una opcin.
Las opciones del men pueden ser una matriz de controles poniendo el mismo nombre en todas las
opciones y variando tan slo el ndice.
Para insertar una lnea separadora se pone como ttulo un guin y como nombre mnuBar1 (por
ejemplo).
Para que una opcin aparezca desactivada (
c
cco
oom
mmo
oo a
aap
ppa
aag
gga
aad
dda
aa) se le desactiva la propiedad Enabled
(desde cdigo sera False).
Para que una opcin aparezca marcada se le activa la propiedad Checked.


v1sua1 8as1c 6

43


1I. 1I. 1I. 1I. (| (| (| (|
Visual Basic es uno de los lenguajes favoritos por los desarrolladores de bases de datos, en especial por el
hecho de que VB implemente el lenguaje SQL, uno de los ms potentes y sencillos lenguajes de Bases de
Datos
9:j:::-
SQL es un lenguaje orientado a bases de datos cuyas siglas significan: Structured Query Language, es
decir, Lenguaje estructurado de consultas.
k:/. / :.:/: Ji-. : (|
1. Un mandato SQL se expresa en una cadena (String)
2. Los nombres de tablas y campos con ms de una palabra se encerrarn entre corchetes.
3. Cuando un campo aparece en diferentes tablas, se ha de agregar el nombre de la tabla y un punto
delante del campo al que hagamos referencia. Por ejemplo: [Tabla1].[Campo1]
4. Al especificarse una expresin de bsqueda referida a una cadena, sta se ha de encerrar entre
comillas simples (aunque tambin podran ser dobles). Por ejemplo: [Cliente]=Pepe
5. Para especificar una expresin de bsqueda de fechas, sta se ha de encerrar entre almohadillas. Por
ejemplo:
[Fecha factura]=#1/31/1999#
Las fechas se han de ajustar al formato estadounidense dnde primero va el mes, despus el da y por
ltimo el ao. Por ejemplo:
[Fecha factura] = & Format(miFecha,#mm/dd/yyyy#).
0-.:j-. / :.:/: Ji-. : (|
Una forma de aprender SQL o de crear sentencias SQL algo complejas es mediante Microsoft Access,
puesto que todas las consultas de Access se pueden mostrar en formato SQL.
Un mandato SQL se puede escribir en la propiedad RecordSource de un control Data. Al cambiar
dicha propiedad se ha de ejecutar a continuacin el mtodo Refresh del control Data.

v1sua1 8as1c 6

44


.ii |0... |k0|...
Es la estructura bsica para seleccionar campos de una tabla. Si se quieren seleccionar todos los campos
se utiliza el asterisco.
Sintaxis:
SELECT campo1, campo2, ... FROM tabla1, tabla2, ... [WHERE criterios [ORDER BY campo1,
campo2, ... ]]
Ejemplos:
select Nombre, Apellidos from Clientes;
select * from Categoras;
select Clientes.Nombre, Productos.Nombre from Clientes, Productos;
0//./ k0k
Se utiliza para seleccionar qu registros aparecern en la consulta.
Ejemplos:
select * from Clientes where Nombre=Alfredo;
select * from Abonados where Provincia=MADRID or
Provincia=VALENCIA;
select * from Abonados where Edad >= 18 and Edad <= 45;
select * from Abonados where edad between 18 and 45;
select * from Diario where Fecha <= #7/31/97#;
select * from Clientes where Nombre like AL*;
select * from Clientes where Apellidos like *EZ;
select * from Clientes where Apellidos like *ZAMO*;
select * from Clientes where Provincia in (MADRID, BARCELONA,
VALENCIA, SEVILLA);
0//./ 0k9k f/
Se utiliza para ordenar los registros de la consulta. Esta clusula se pone al final de la sentencia SQL. La
palabra reservada ASC es para orden ascendente y DESC para descendente.
Sintaxis:
ORDER BY campo1 [ASC | DESC] [, campo2 [ASC | DESC] ... ]
Ejemplos:
select Nombre, Apellidos, Telfono from Clientes order by
Apellidos, Nombre;
select * from Pedidos order by [Fecha pedido] desc;
select * from Abonados order by Apellidos, Nombre, Nacimiento
desc;
4:i:i: - (|
Para realizar clculos con los campos se pueden utilizar los operadores aritmticos convencionales y las
funciones que se detallan a continuacin:
SUM Suma un campo numrico o operaciones con campos numricos.
AVG Promedio
MIN Mnimo valor de un campo numrico o de fecha
MAX Mximo valor de un campo numrico o de fecha.
COUNT Para contar nmero de registros.

Los campos que surgen de una frmula no tienen nombre, as que es conveniente darles algn alias. Para
ello se utiliza la palabra reservada AS (como).
Ejemplos:
select sum(Unidades) from Pedidos;
select sum(Ingresos Gastos) from Diario;
select sum(Unidades) as Total, [Id Pedido] from Pedidos where
Fecha=now();
select avg(Unidades) from Pedidos;
v1sua1 8as1c 6

45

select min(Unidades) as Minimo, max(Unidades) as Maximo from
Pedidos;
select count(*) as NumPedidos from Pedidos where Fecha=now();
select count(*) as Casados from Clientes where Casado=True;
select count(*) as [Nmero pagos] from Diario where gastos>=10000;
select sum(Unidades) as Total, avg(Unidades) as Media, count(*) as
Registros, max(Unidades) as Maximo from Pedidos where Fecha between
#1/1/1999# and #6/31/2000#;
0:.:- J: ::.i-. J/:J-.
En una consulta podra ser til omitir los registros que estn duplicados, para ello se utiliza el predicado
DISTINCT.
Por ejemplo: Queremos un listado de los clientes que han hecho pedidos por da, sin importar cuntos
pedidos ha solicitado el cliente durante un mismo da.
select distinct [Id Cliente], Fecha from Pedidos;
v1sua1 8as1c 6

46


:i:: 9| |k0|
Se utiliza para borrar registros de una tabla. Si no se utiliza la clusula WHERE, se borraran todos los
registros de la tabla.
Sintaxis:
DELETE FROM tablas WHERE criterios
Ejemplo:
delete from Clientes where [Cdigo cliente]=4 and Fecha=Now();
:i:: U|94
Se utiliza modificar el contenido de los campos de una tabla. Si no se utiliza la clusula WHERE, se
modificaran todos los registros de la tabla.
Sintaxis:
UPDATE tablas SET campo1=valor1 [, campo2=valor2 ... ] [WHERE ... ]
Ejemplos:
update Artculos set Precio=Precio * 1.1;
update Productos set Precio1 = Precio1 * 1.15, Precio2 = Precio2 *
1.25;
update Asegurados set Importe=Importe/1.1 where Edad > 22 and
year(now) year(Expedicin) > 2;
0//./ (k0U| f/
Se utiliza para agrupar registros, es decir, para realizar resmenes y totales, prescindiendo del detalle.
Ejemplos:
select [Cdigo cliente], count([Cdigo cliente]) as NumPedidos,
sum(Unidades) as Cantidad from Pedidos group by [Cdigo cliente];
select Fecha, count(Fecha) as NumPedidos from Pedidos group by
Fecha;
select Fecha, sum(Unidades) as Cantidad from Pedidos group by
Fecha;
select Fecha, [Cdigo cliente], count([Cdigo cliente]) as
NumPedidos, sum(Unidades) as Cantidad from Pedidos group by Fecha,
[Cdigo cliente] having Fecha < #1/26/1999#;
select Fecha, count(Fecha) as Pedidos, sum(Unidades) as Subtotal,
min(Unidades) as Minimo, max(Unidades) as Maximo, avg(Unidades) as
Promedio from Pedidos group by Fecha;
v1sua1 8as1c 6

47


0-/::- J: Ji-. :i: J-. i//.
Para combinar datos de dos tablas utilizaremos la operacin JOIN. Para ello las tablas deben tener al
menos un campo en comn.
INNER JOIN Combina los datos de las dos tablas siempre que haya valores coincidentes en
los campos comunes o enlazados.
LEFT JOIN Incluye todos los registros de la primera tabla y aquellos registros de la segunda
tabla en que los campos comunes sean iguales a los de la primera tabla.
RIGHT JOIN Incluye todos los registros de la segunda tabla y aquellos registros de la primera
tabla en que los campos comunes sean iguales a los de la segunda tabla.

TABLA 1: CLIENTES TABLA 2: PEDIDOS
NOMBRE IDCLIENTE PEDIDO IDCLIENTE
Ana 1 Alfa 1
Mara 2 Beta 3
Pepe 3

Gamma 5

INNER JOIN LEFT JOIN RIGHT JOIN
NOMBRE PEDIDO NOMBRE PEDIDO NOMBRE PEDIDO
Ana Alfa Ana Alfa Ana Alfa
Pepe Beta Mara Pepe Beta


Pepe Beta

Gamma

Sintaxis:
tabla1 {INNER | LEFT | RIGHT} JOIN tabla2 ON tabla1.campo = tabla2.campo
Ejemplos:
select * from Pedidos inner join Clientes on Pedidos.IdCliente =
Clientes.IdCliente;
select * from Pedidos left join Clientes on Pedidos.IdCliente =
Clientes.IdCliente;
select Fecha, [Cdigo producto], Unidades, Apellidos, Nombre from
Pedidos inner join Clientes on Pedidos.[Cdigo cliente] =
Clientes.[Cdigo cliente] where Fecha < #1/17/1999#;
select Fecha, Unidades, Productos.* from Pedidos inner join
Productos on Pedidos.IdProducto = Productos.IdProducto;
select Fecha, Unidades, Productos.* from Pedidos inner join
Productos on Pedidos.IdProducto = Productos.IdProducto order by
Fecha, Producto;

v1sua1 8as1c 6

4


l:./ 9i
Para realizar sentencias SQL hay un programa VISDATA.EXE que podemos encontrar en el men de
Complementos de Visual Basic:

Para empezar a trabajar podemos abrir la base de datos BIBLIO.MDB (en formato Microsoft Access 97)
que contiene las tablas: Author (autores), Publishers (editoriales), Title Author (Autores de los libros) y
Titles (Libros). Adems hay la consulta All Titles dnde estn enlazadas todas las tablas.
Relaciones entre las tablas de Biblio:

v1sua1 8as1c 6

49


12. 12. 12. 12. 940 940 940 940
DAO es una coleccin de objetos que se utiliza para acceder a bases de datos y es utilizada tambin por
Access. DAO significa Data Access Objects (Objetos para acceso a datos). Para utilizar DAO hemos de ir
al men de nuestro proyecto y luego en Referencias agregar Microsoft DAO 3.51 Object Library. Los
objetos de DAO son los que utiliza el control Data.
Las bases de datos a los que tendremos acceso son:
Access (Microsoft Jet)
dBase y Paradox
Otras bases de datos mediante ODBC
0/j:i- 9i/.:
Base de datos por defecto y abrir una base de datos:
Dim db as Database
Set db = DBEngine.Workspaces(0).Databases(0)
Set db = OpenDatabase (Neptuno.mdb)
Set db = CurrentDB
...
db.Close
0::- J: k:-J.:i
Los objetos Recordset se utilizan par manipular los datos existentes en una B.D. Hay tres tipos de objetos
Recordset:
1. Table. Una tabla que no sea adjunta.
2. Dynaset. Hoja de respuestas dinmica. Permite extraer y actualizar
datos procedentes de varias tablas.
3. Snapshot. Instantnea. No se puede actualizar.

Creacin de un objeto Recordset para objetos de base de datos:
Set variable = baseDeDatos.OpenRecordset(origen[,tipo[,opciones]])

Creacin de un objeto Recordset para el resto de tipos de objeto
Set variable = objeto.OpenRecordset(origen[,tipo])

Cerrar un Recordset despus de utilizarlo:
variable.Close
v1sua1 8as1c 6

50


ARGUMENTO VALORES POSIBLES
objeto Database
TableDef
QueryDef
Recordset
origen TableDef
QueryDef
Consulta o instruccin SQL
tipo dbOpenTable
dbOpenDynaset
dbOpenSnapshot
opciones
Constantes intrnsecas que especifican la posibilidad de acceso multiusuario a
los datos.

Ejemplos de creacin de Recordset:
Set rs = db.OpenRecordset(Clientes)
Set myRS = db.OpenRecordset(select * from Clientes order by [Id Cliente])
Set rs = formulario.RecordsetClone
...
rs.Close
0J: k:-J.:i
Para ordenar con ndice
rs.Index = Ciudad

Para ordenar con un nuevo Recordset:
Set rs = db.OpenRecordset(Pedidos)
rs.Sort = [Pas], [Cd postal] DESC
Set rs = rs.OpenRecordset()
|:/i k:-J.:i
Limitar el nmero de registros que aparecern.
rs.Filter = [Regin] = Norte And [Estado] = D
Set rs2 = rs.OpenRecordset()

Utilizar variables QueryDef (consultas):
Set query = db.QueryDefs(Clientes del norte)
Set rs = query.OpenRecordset()

f/:. : k:-J.:i
Recorrido de registros mediante bucles:
Set rs = db.OpenRecordset (Empleados, dbOpenTable)
rs.MoveFirst
Do Until rs.EOF
rs.Edit
rs!Cargo = Ejecutivo de cuenta
rs.Update
rs.MoveNext
Loop
rs.Close

v1sua1 8as1c 6

51

Recorrido en orden inverso:
rs.MoveLast
Do Until rs.BOF
...
rs.MovePrevious
Loop
0-i :- J: ::.i-. : k:-J.:i
Si da -1 no hay cuenta de registros disponible
Dim total As Long
rs.MoveLast
total = rs.RecordCount
f. k::.i-. : k:-J.:i
Para buscar registros:
criterio = Cargo = Representante comercial
rs.FindFirst = criterio
Do Until rs.NoMatch
...
rs.FindNext criterio
Loop

Para buscar registros mediante ndices (en Recordset tipo Table). Se puede utilizar para comparar los
siguientes signos: =, >=, >, <=, <
rs.Index = PrimaryKey
rs.Seek =, idPedido, idProducto
Do Until rs.NoMatch
...
rs.Seek =, idPedido, idProducto
Loop

Uso de marcadores para identificar registros (en lugar de nmeros de registro). Los Bookmark son vlidos
entre Recorset generados con Clone.
Dim record As String
...
record = rs.Bookmark
...
rs.Bookmark = record
0/: /-. ::.i-. : k:-J.:i
Para modificar un registro existente:
rs.Edit
...
rs.Update

Para eliminar un registro existente:
rs.Delete

Para agregar un nuevo registro:
rs.AddNew
...
rs.Update
.:-:.
A menudo, para exigir la integridad de los datos, una serie de operaciones debe considerarse como una
sola unidad. Con una transaccin tenemos la posibilidad de realizar una serie de operaciones sobre los
datos y si dichas operaciones tienen xito, guardar los cambios y sino, anular todos los cambios.
v1sua1 8as1c 6

52

Set ws = DBEngine.Workspaces(0)
ws.BeginTrans
...
If MsgBox (Guardar cambios?, 32+4) = 6 Then
ws.CommitTrans
Else
ws.Rollback
End If
Adems de garantizar la integridad de los datos, las transacciones son importantes para mejorar el
rendimiento de las base de datos, pues aumentan la velocidad ya que indican el momento de poder volcar
la memoria cach sobre disco. Adems permite aumentar la concurrencia (nmero de usuarios que
pueden acceder a los datos simultneamente en aplicaciones multiusuario). Por ejemplo:
ws.BeginTrans
rs = db.OpenRecordset(Consulta larga en ejecucin)
ws.CommitTrans


v1sua1 8as1c 6

53

17. 17. 17. 17. 4|| 4|| 4|| 4||
Las Bibliotecas de Vnculos Dinmicos (DLLs) son uno de los elementos fundamentales de Microsoft
Windows. Estas bibliotecas contienen procedimientos que utilizan todas las aplicaciones para llevar a
cabo sus actividades, como mostrar ventanas y grficos, administrar la memoria etc. Estos
procedimientos tambin se conocen como interfaz de programacin de aplicaciones (API) de Windows.
9:/ -:J:::i- 9||
Declare Sub nombre Lib nombreDLL (argumentos)
Declare Function nombre Lib nombreDLL (argumentos) As Tipo

Los nombre de bibliotecas ms comunes son: User, GDI, Kernel, MMSystem.
Para transferir un argumento por valor se aade ByVal al principio.
Un argumento con tipo flexible de datos se ha declarar de tipo Any
Se pueden utilizar los procedimientos con un nombre diferente al original mediante. Se incluye la palabra
Alias seguida del nombre original del procedimiento, justo despus del nombre de la biblioteca.
Las cadenas pasadas a un procedimiento de DLL debe tener reservado un tamao mnimo, por ejemplo
con: cadena = String (255,0)
Una cadena transferida con ByVal es una cadena ASCIIZ (terminada en cero)
Un puntero nulo se pasa mediante ByVal 0&
Los procedimientos DLLs utilizan intensivamente los controladores (handles) como hWnd y HDC. Los
formularios y controles tienen propiedades hWnd y HDC que se pueden pasar a procedimientos DLLs.

Anda mungkin juga menyukai