Está en la página 1de 159

Curso Visual Basic 5.

Qu es Visual Basic ?-----------------------------------------------------------------------------9


Ediciones de Visual Basic-----------------------------------------------------------------------------------------9

1- Introduccin:--------------------------------------------------------------------------------10
1.1- Programacin orientada a objetos.-----------------------------------------------------------10
1.1.1- Objetos.-----------------------------------------------------------------------------------------------------10
1.1.2- Propiedades.------------------------------------------------------------------------------------------------10
1.1.3- Mtodos.----------------------------------------------------------------------------------------------------10
1.1.4- Eventos.-----------------------------------------------------------------------------------------------------10
1.1.5- Explicacin integrada y ejemplo de Objetos, Propiedades, Mtodos y Eventos.----------------10
1.1.6- Diferencias entre la programacin procedural y la programacin bajo Windows.---------------11

1.3- Proyecto.------------------------------------------------------------------------------------------- 12
1.3.1- Definicin de Proyecto en Visual Basic.---------------------------------------------------------------12
1.3.2-Componentes de un Proyecto.----------------------------------------------------------------------------13

1.4-Entorno de Desarrollo.--------------------------------------------------------------------------- 14
1.4.1-Barra de men. y 1.4.2-Barra de Herramientas.-------------------------------------------------------14
1.4.3-Ventana de Proyecto.--------------------------------------------------------------------------------------14
1.4.4- Formulario.-------------------------------------------------------------------------------------------------14
1.4.5- Ventana de Propiedades.----------------------------------------------------------------------------------15
1.4.6- Caja de Herramientas.------------------------------------------------------------------------------------15

2-Programacin:---------------------------------------------------------------------------------16
2.1- Fundamentos de la Programacin.-----------------------------------------------------------16
2.1.1- Como funciona una aplicacin controlada por eventos.---------------------------------------------16

2.2- Variables.------------------------------------------------------------------------------------------- 16
2.2.1- Alcance de las variables.---------------------------------------------------------------------------------16

Establecimiento del alcance de las variables------------------------------------------------17


Variables utilizadas en un procedimiento---------------------------------------------------------17
Variables utilizadas en un mdulo------------------------------------------------------------------ 17
Variables utilizadas por todos los mdulos-------------------------------------------------------17
2.2.2- Declaracin-------------------------------------------------------------------------------------------------17
2.2.3- Tipos de variables-----------------------------------------------------------------------------------------18
2.2.4- Matrices-----------------------------------------------------------------------------------------------------18

2.3- Procedimientos y funciones.-------------------------------------------------------------------- 19


2.3.1-Introduccin a los Procedimientos.----------------------------------------------------------------------19
2.3.2- Procedimientos.--------------------------------------------------------------------------------------------20

Procedimientos generales---------------------------------------------------------------------------- 20
Procedimientos de evento---------------------------------------------------------------------------- 20
2.3.3- Funciones.--------------------------------------------------------------------------------------------------21
2.3.4- Llamadas a Procedimientos.-----------------------------------------------------------------------------22
2.3.5- Llamadas a Funciones.-----------------------------------------------------------------------------------22
2.3.6- Pasaje de argumentos a los procedimientos y funciones.--------------------------------------------22

Tipos de datos de los argumentos------------------------------------------------------------------- 22


Paso de argumentos por valor----------------------------------------------------------------------- 23
Paso de argumentos por referencia-----------------------------------------------------------------23
2.4- Estructuras de Control (Repeticin y Decisin).-------------------------------------------23
Pgina 2 de 159

Curso Visual Basic 5.0


2.4.1-Do While Loop / Do Loop While.------------------------------------------------------------------23
2.4.2- For Next.-------------------------------------------------------------------------------------------------24

2.4.3- If Else End If.------------------------------------------------------------------------------- 25


If...Then...Else------------------------------------------------------------------------------------------ 26
2.4.4- Select - Case-----------------------------------------------------------------------------------------------26

3- Controles-------------------------------------------------------------------------------------27
3.1- Controles bsicos--------------------------------------------------------------------------------- 27
3.1.1- APLICACION DE EJEMPLO--------------------------------------------------------------------------32

4 -Formularios.-----------------------------------------------------------------------------------34
4.1- Estableciendo las Propiedades ms importantes de los formularios.------------------34
4.2- Eventos y Mtodos de los formularios.-------------------------------------------------------34
4.3- Establecer el formulario de arranque de la aplicacin.-----------------------------------35

5 -Combo Box (lista combo)--------------------------------------------------------------------36


6- List Box (lista).--------------------------------------------------------------------------------37
7- Timer (cronmetro)---------------------------------------------------------------------------39
Propiedades:-------------------------------------------------------------------------------------------- 39

8- Shape (figura).--------------------------------------------------------------------------------39
9- Line (lnea).------------------------------------------------------------------------------------39
Mtodo Refresh---------------------------------------------------------------------------------------- 40
Mtodo ZOrder---------------------------------------------------------------------------------------- 40

10- Image (imagen)------------------------------------------------------------------------------40


11- Data (acceso a bases de datos)------------------------------------------------------------41
12- Controles enlazados-------------------------------------------------------------------------41
12.1 Funcionamiento---------------------------------------------------------------------------------- 41
12.2 Validacin----------------------------------------------------------------------------------------- 42
12.3 Objetos de acceso a datos---------------------------------------------------------------------- 42
12.4 Ediciones Profesional y Empresarial---------------------------------------------------------42
12.5 Consultas almacenadas------------------------------------------------------------------------- 42
12.6 Tratamiento de BOF/EOF--------------------------------------------------------------------- 42

13 -Eventos ms importantes de los controles estndares.--------------------------------43


13.1-Change--------------------------------------------------------------------------------------------- 43
Ejemplo del evento Change-------------------------------------------------------------------------- 44
13.2-Click------------------------------------------------------------------------------------------------ 45
Ejemplo del Evento Click--------------------------------------------------------------------------- 46
13.3- GotFocus----------------------------------------------------------------------------------------- 46

Pgina 3 de 159

Curso Visual Basic 5.0

13.4- KeyPress------------------------------------------------------------------------------------------ 47
13.5- Load----------------------------------------------------------------------------------------------- 48
13.6- LostFocus----------------------------------------------------------------------------------------- 48
Ejemplo del evento LostFocus----------------------------------------------------------------------- 49
13.7- MouseMove-------------------------------------------------------------------------------------- 49
13.8- Timer---------------------------------------------------------------------------------------------- 50
13.9- Unload-------------------------------------------------------------------------------------------- 52
13.10- QueryUnload----------------------------------------------------------------------------------- 53
13.11- Validate------------------------------------------------------------------------------------------ 54
Ejemplo de la propiedad DataChanged y del evento Validate--------------------------------55

14- Mtodos ms importantes de los controles estndares.-------------------------------55


14.1- AddItem------------------------------------------------------------------------------------------ 55
Ejemplo del mtodo AddItem----------------------------------------------------------------------- 56
14.2- AddNew (Objeto Recordset)------------------------------------------------------------------ 56
14.3- CancelUpdate (Objeto Recordset)----------------------------------------------------------57
14.4- Clear (Clipboard, Combo Box, List Box)--------------------------------------------------58
14.5- Close (Objetos Database, Recordset o Workspace)--------------------------------------59
14.6- Cls-------------------------------------------------------------------------------------------------- 60
Sintaxis--------------------------------------------------------------------------------------------------- 60
Comentarios-------------------------------------------------------------------------------------------- 60
14.7- CompactDatabase (Objeto DBEngine)-----------------------------------------------------60
Sintaxis--------------------------------------------------------------------------------------------------- 60
Ejemplo de mtodo CompactDatabase------------------------------------------------------------62
14.8- Delete (Objeto Recordset)--------------------------------------------------------------------- 62
Comentarios-------------------------------------------------------------------------------------------- 62
Ejemplo de mtodo Delete--------------------------------------------------------------------------- 64
14.9- Edit (Objeto Recordset)----------------------------------------------------------------------- 64
Comentarios-------------------------------------------------------------------------------------------- 64
Ejemplo de mtodo Edit------------------------------------------------------------------------------ 65
14.10- Hide---------------------------------------------------------------------------------------------- 65
Comentarios-------------------------------------------------------------------------------------------- 66
14.11-MoveFirst - MoveLast - MoveNext MovePrevious (Objeto Recordset)-----------66
Sintaxis--------------------------------------------------------------------------------------------------- 66
Comentarios-------------------------------------------------------------------------------------------- 66
14.12- OpenDatabase (Objeto Workspace)-------------------------------------------------------67
Pgina 4 de 159

Curso Visual Basic 5.0

14.13- OpenRecordset (Objeto Database)---------------------------------------------------------68


Ejemplo del mtodo OpenRecordset---------------------------------------------------------------70
14.14- RemoveItem------------------------------------------------------------------------------------ 70
14.15- RepairDatabase (Objeto DBEngine)------------------------------------------------------71
Ejemplo del mtodo RepairDatabase--------------------------------------------------------------72
14.16- SetFocus----------------------------------------------------------------------------------------- 72
Sintaxis--------------------------------------------------------------------------------------------------- 72
Ejemplo del mtodo SetFocus----------------------------------------------------------------------- 72
14.17- Show--------------------------------------------------------------------------------------------- 73
14.18- Update (Objeto recordset)------------------------------------------------------------------- 73
Sintaxis--------------------------------------------------------------------------------------------------- 74
Comentarios-------------------------------------------------------------------------------------------- 74

15- Propiedades ms importantes de los controles estndares.---------------------------74


15.1- ActiveControl------------------------------------------------------------------------------------ 75
15.2- BackColor, ForeColor-------------------------------------------------------------------------- 75
15.3- BackStyle----------------------------------------------------------------------------------------- 76
15.4-BOF. EOF (Objeto Recordset)---------------------------------------------------------------- 77
15.5-BOFAction, EOFAction------------------------------------------------------------------------ 78
15.6-BorderStyle--------------------------------------------------------------------------------------- 79
Valores--------------------------------------------------------------------------------------------------- 79
15.7-Caption-------------------------------------------------------------------------------------------- 79
Ejemplo de la propiedad Caption------------------------------------------------------------------ 80
15.8-DatabaseName----------------------------------------------------------------------------------- 80
String----------------------------------------------------------------------------------------------------------------81

15.9-DataChanged------------------------------------------------------------------------------------- 81
Sintaxis--------------------------------------------------------------------------------------------------- 82
Tipo de datos------------------------------------------------------------------------------------------- 82
15.10-DataField---------------------------------------------------------------------------------------- 82
15.11-DataSource-------------------------------------------------------------------------------------- 83
Comentarios-------------------------------------------------------------------------------------------- 83
15.12-Enabled------------------------------------------------------------------------------------------ 83
Ejemplo de la propiedad Enabled------------------------------------------------------------------ 84
15.13-FontBold, FontItalic, FontStrikethru, FontUnderline.---------------------------------84
15.14-FontName---------------------------------------------------------------------------------------- 85
15.15-FontSize------------------------------------------------------------------------------------------ 86
Pgina 5 de 159

Curso Visual Basic 5.0

Comentarios-------------------------------------------------------------------------------------------- 87
15.16-Heigth, Width----------------------------------------------------------------------------------- 87
15.17-Icon----------------------------------------------------------------------------------------------- 88
Sintaxis--------------------------------------------------------------------------------------------------- 88
15.18-Index (Matriz de Controles)----------------------------------------------------------------- 89
Ejemplo de la propiedad Index--------------------------------------------------------------------- 89
15.19-ListCount---------------------------------------------------------------------------------------- 90
15.20-ListIndex----------------------------------------------------------------------------------------- 91
Sintaxis--------------------------------------------------------------------------------------------------- 91
Comentarios-------------------------------------------------------------------------------------------- 91
15.21-Locked-------------------------------------------------------------------------------------------- 92
15.22-MousePointer----------------------------------------------------------------------------------- 92
Sintaxis--------------------------------------------------------------------------------------------------- 92
Comentarios-------------------------------------------------------------------------------------------- 93
15.23-Multiline----------------------------------------------------------------------------------------- 93
Sintaxis--------------------------------------------------------------------------------------------------- 94
Comentarios-------------------------------------------------------------------------------------------- 94
15.24-Name---------------------------------------------------------------------------------------------- 94
Sintaxis--------------------------------------------------------------------------------------------------- 94
15.25-NewIndex---------------------------------------------------------------------------------------- 95
Comentarios-------------------------------------------------------------------------------------------- 95
15.26-ItemData----------------------------------------------------------------------------------------- 95
Ejemplo de la propiedad ItemData-----------------------------------------------------------------96
15.27-PassWordChar--------------------------------------------------------------------------------- 96
Ejemplo de la propiedad PasswordChar----------------------------------------------------------97
15.28-Picture-------------------------------------------------------------------------------------------- 97
Comentarios-------------------------------------------------------------------------------------------- 97
15.29-Recordset---------------------------------------------------------------------------------------- 98
15.30-RecordsetType---------------------------------------------------------------------------------- 99
15.31-RecordSource---------------------------------------------------------------------------------- 101
Sintaxis------------------------------------------------------------------------------------------------- 101
String--------------------------------------------------------------------------------------------------------------102

15.32-Shape-------------------------------------------------------------------------------------------- 102
Valores-------------------------------------------------------------------------------------------------- 102
15.33-SQL (Objeto QueryDef)--------------------------------------------------------------------- 103
Pgina 6 de 159

Curso Visual Basic 5.0

Comentarios------------------------------------------------------------------------------------------- 103
15.34-Stretch------------------------------------------------------------------------------------------ 104
Comentarios------------------------------------------------------------------------------------------- 104
15.35-Style--------------------------------------------------------------------------------------------- 105
15.36-TabIndex--------------------------------------------------------------------------------------- 107
Ejemplo de la propiedad TabIndex---------------------------------------------------------------107
15.37-TabStop----------------------------------------------------------------------------------------- 108
15.38-Tag----------------------------------------------------------------------------------------------- 108
15.39-Text---------------------------------------------------------------------------------------------- 109
Comentarios------------------------------------------------------------------------------------------- 109
15.40-ToolTipText------------------------------------------------------------------------------------ 110
15.41-Value-------------------------------------------------------------------------------------------- 110
15.42-Visible------------------------------------------------------------------------------------------- 111
15.43-WindowState---------------------------------------------------------------------------------- 112

16- Operadores.---------------------------------------------------------------------------------113
16.1-Operadores Aritmticos.---------------------------------------------------------------------- 113
Operador ^: Se utiliza para elevar un nmero a la potencia del exponente.-------------114
16.2-Operadores de Comparacin.----------------------------------------------------------------114
Sintaxis------------------------------------------------------------------------------------------------- 114
16.3-Operadores de Concatenacin.--------------------------------------------------------------115
16.4-Operadores Lgicos.--------------------------------------------------------------------------- 115

17- Funciones ms importantes de Visual Basic.-----------------------------------------121


17.1-Asc.------------------------------------------------------------------------------------------------ 121
17.2-Date----------------------------------------------------------------------------------------------- 121
Date-------------------------------------------------------------------------------------------------------------121

17.3-DateDiff------------------------------------------------------------------------------------------ 121
17.4-DoEvents----------------------------------------------------------------------------------------- 123
17.5-Format------------------------------------------------------------------------------------------- 123
17.6-Iif-------------------------------------------------------------------------------------------------- 125
17.7-InputBox----------------------------------------------------------------------------------------- 125
17.8-Int, Fix-------------------------------------------------------------------------------------------- 126
Sintaxis------------------------------------------------------------------------------------------------- 126
Comentarios------------------------------------------------------------------------------------------- 127
17.9-IsDate--------------------------------------------------------------------------------------------- 127
Sintaxis------------------------------------------------------------------------------------------------- 127
Pgina 7 de 159

Curso Visual Basic 5.0

Comentarios------------------------------------------------------------------------------------------- 127
17.10-IsNull-------------------------------------------------------------------------------------------- 127
Sintaxis------------------------------------------------------------------------------------------------- 127
Comentarios------------------------------------------------------------------------------------------- 127
17.11-Left---------------------------------------------------------------------------------------------- 128
Ejemplo de la funcin Left------------------------------------------------------------------------- 128
17.12-Len---------------------------------------------------------------------------------------------- 129
Sintaxis------------------------------------------------------------------------------------------------- 129
Comentarios------------------------------------------------------------------------------------------- 129
17.13-LoadPicture------------------------------------------------------------------------------------ 129
17.14-Ltrim, Rtrim y Trim------------------------------------------------------------------------- 130
Sintaxis------------------------------------------------------------------------------------------------- 130
17.15-Mid---------------------------------------------------------------------------------------------- 131
Comentarios------------------------------------------------------------------------------------------- 131
Ejemplo de la funcin Mid------------------------------------------------------------------------- 131
17.16-MsgBox----------------------------------------------------------------------------------------- 131
17.17-Right-------------------------------------------------------------------------------------------- 133
17.18-Str----------------------------------------------------------------------------------------------- 134
Comentarios------------------------------------------------------------------------------------------- 134
17.19-Ucase-------------------------------------------------------------------------------------------- 134
17.20-Val----------------------------------------------------------------------------------------------- 135
Comentarios------------------------------------------------------------------------------------------- 135
Ejemplo de la instruccin MkDir----------------------------------------------------------------- 136
Sintaxis------------------------------------------------------------------------------------------------- 137
Option Explicit------------------------------------------------------------------------------------------------138

Figura: Barras separadoras----------------------------------------------------------------------- 143


Comentarios------------------------------------------------------------------------------------------- 156
Sintaxis------------------------------------------------------------------------------------------------- 156
Importante--------------------------------------------------------------------------------------------- 158
Sintaxis------------------------------------------------------------------------------------------------- 163
Comentarios------------------------------------------------------------------------------------------- 164

Pgina 8 de 159

Curso Visual Basic 5.0

Qu es Visual Basic ?
Qu es Visual Basic? La palabra "Visual" hace referencia al mtodo que se utiliza para crear la interfaz
grfica de usuario (GUI). En lugar de escribir numerosas lneas de cdigo para describir la apariencia y la
ubicacin de los elementos de la interfaz, simplemente puede arrastrar y colocar objetos prefabricados en su
lugar dentro de la pantalla. Si ha utilizado alguna vez un programa de dibujo como Paint, ya tiene la mayor
parte de las habilidades necesarias para crear una interfaz de usuario efectiva.
La palabra "Basic" hace referencia al lenguaje BASIC (Beginners All-Purpose Symbolic Instruction Code), un
lenguaje utilizado por ms programadores que ningn otro lenguaje en la historia de la informtica o
computacin. Visual Basic ha evolucionado a partir del lenguaje BASIC original y ahora contiene centenares
de instrucciones, funciones y palabras clave, muchas de las cuales estn directamente relacionadas con la
interfaz grfica de Windows. Los principiantes pueden crear aplicaciones tiles con slo aprender unas
pocas palabras clave, pero, al mismo tiempo, la eficacia del lenguaje permite a los profesionales acometer
cualquier objetivo que pueda alcanzarse mediante cualquier otro lenguaje de programacin de Windows.
El lenguaje de programacin Visual Basic no es exclusivo de Visual Basic. La Edicin para aplicaciones del
sistema de programacin de Visual Basic, incluida en Microsoft Excel, Microsoft Access y muchas otras
aplicaciones Windows, utilizan el mismo lenguaje. El sistema de programacin de Visual Basic, Scripting
Edition (VBScript) para programar en Internet es un subconjunto del lenguaje Visual Basic. La inversin
realizada en el aprendizaje de Visual Basic le ayudar a abarcar estas otras reas.
Si su objetivo es crear un pequeo programa para su uso personal o para su grupo de trabajo, un sistema
para una empresa o incluso aplicaciones distribuidas de alcance mundial a travs de Internet, Visual Basic
dispone de las herramientas que necesita.
Las caractersticas de acceso a datos le permiten crear bases de datos y aplicaciones cliente para los
formatos de las bases de datos ms conocidas, incluidos Microsoft SQL Server y otras bases de datos
de mbito empresarial.
Las tecnologas ActiveX le permiten utilizar la funcionalidad proporcionada por otras aplicaciones, como
el procesador de textos Microsoft Word, la hoja de clculo Microsoft Excel y otras aplicaciones Windows.
Puede incluso automatizar las aplicaciones y los objetos creados con la Edicin profesional o la Edicin
empresarial de Visual Basic.
Las capacidades de Internet facilitan el acceso a documentos y aplicaciones a travs de Internet desde
su propia aplicacin.
La aplicacin terminada es un autntico archivo .exe que utiliza una biblioteca de vnculos dinmicos
(DLL) de tiempo de ejecucin que puede distribuir con toda libertad.

Ediciones de Visual Basic


Visual Basic se encuentra disponible en tres versiones, cada una de las cuales est orientada a unos
requisitos de programacin especficos.
La Edicin de aprendizaje de Visual Basic permite a los programadores crear robustas aplicaciones para
Microsoft Windows 95 y Windows NT . Incluye todos los controles intrnsecos, adems de los controles
de cuadrcula, de fichas y los controles enlazados a datos. La documentacin que se proporciona con
esta edicin incluye Learn VB Now (un CD-ROM multimedia), un Manual del programador impreso, la
Ayuda en pantalla y los Libros en pantalla de Visual Basic.
La Edicin profesional proporciona a los profesionales un completo conjunto de herramientas para
desarrollar soluciones para terceros. Incluye todas las caractersticas de la Edicin de aprendizaje, as
como controles ActiveX adicionales, incluidos controles para Internet y el Generador de informes de
Crystal Reports. La documentacin que se proporciona con la Edicin profesional incluye el Manual del
programador, la Ayuda en pantalla, la Gua de herramientas componentes y el Manual del usuario de
Crystal Reports para Visual Basic.

Pgina 9 de 159

Curso Visual Basic 5.0

La Edicin empresarial permite a los profesionales crear slidas aplicaciones distribuidas en un


entorno de equipo. Incluye todas las caractersticas de la Edicin profesional, as como el Administrador
de automatizacin, la Galera de objetos, las herramientas de administracin de bases de datos, el
sistema de control de versiones orientado a proyectos Microsoft Visual SourceSafe , etc. La
documentacin impresa que se proporciona con la Edicin empresarial incluye toda la documentacin de
la Edicin profesional, y la Gua para la creacin de aplicaciones cliente-servidor con Visual Basic y el
Manual del usuario de SourceSafe.

1- Introduccin:
1.1- Programacin orientada a objetos.
1.1.1- Objetos.
Un objeto es una entidad que tiene asociado un conjunto de mtodos, eventos y propiedades. Ejemplo : Una caja de texto
(TextBox) en la cual podemos escribir cualquier lnea es un objeto.

1.1.2- Propiedades.
Son las caractersticas que posee un objeto o un formulario (ventana de Windows).
Ejemplo : Color de fondo del formulario, Fuente de texto de un TextBox, .

1.1.3- Mtodos.
Los mtodos son funciones internas de un determinado objeto que permite realizar funciones sobre l o sobre otro objeto.
Ejemplo : Deseamos poner en la ventana Windows de nuestra aplicacin "Hola mundo", por tanto pondremos el mtodo ->
Ventana.Print "Hola mundo"

1.1.4- Eventos.
Los eventos son acciones que se pueden realizar en cualquier control: click, doble click, movimiento del ratn. A estos
eventos se les puede asociar cdigo para que se ejecute al producir el evento.
Un programa Visual Basic es un POE (Programa orientado a eventos).
Todo lo que hacemos en un programa Visual Basic est generado por medio de eventos

1.1.5- Explicacin integrada y ejemplo de Objetos, Propiedades, Mtodos y Eventos.


Los formularios y controles de Visual Basic son objetos que exponen sus propios mtodos, propiedades y eventos. Las
propiedades se pueden considerar como atributos de un objeto, los mtodos como sus acciones y los eventos como sus
respuestas.
Un objeto de uso diario como el globo de un nio tiene tambin propiedades, mtodos y eventos. Entre las propiedades
de un globo se incluyen atributos visibles como el peso, el dimetro y el color. Otras propiedades describen su estado
(inflado o desinflado) o atributos que no son visibles, como su edad. Por definicin, todos los globos tienen estas
propiedades; lo que vara de un globo a otros son los valores de estas propiedades.
Un globo tiene tambin mtodos o acciones inherentes que puede efectuar. Tiene un mtodo inflar (la accin de llenarlo
de helio) o un mtodo desinflar (expeler su contenido) y un mtodo elevarse (si se deja escapar). De nuevo, todos los
globos pueden efectuar estos mtodos.

Pgina 10 de 159

Curso Visual Basic 5.0


Los globos tienen adems respuestas predefinidas a ciertos eventos externos. Por ejemplo, un globo respondera al
evento de pincharlo desinflndose o al evento de soltarlo elevndose en el aire.
Los objetos tienen propiedades, responden a eventos y ejecutan mtodos:

Si se pudiera programar un globo, el cdigo de Visual Basic podra ser como el siguiente. Para establecer las
propiedades del globo:
Globo.Color = Rojo
Globo.Dimetro = 10
Globo.Inflado = True
Observe la sintaxis del cdigo: el objeto (Globo) seguido de la propiedad (Color) seguida de la asignacin del valor
(Rojo). Podra modificar el color del globo desde el cdigo si repitiera esta instruccin y sustituyera el valor por otro
diferente. Las propiedades tambin se pueden establecer en la ventana Propiedades mientras se est diseando la
aplicacin.
Los mtodos de un globo se invocan de esta forma:
Globo.Inflar
Globo.Desinflar
Globo.Elevar 5
La sintaxis es similar a la sintaxis de las propiedades: el objeto (un nombre) seguido de un mtodo (un verbo). En el
tercer ejemplo hay un elemento adicional, llamado argumento, que indica la distancia que se eleva. Algunos mtodos
tendrn uno o ms argumentos para describir ms a fondo la accin que se va a ejecutar.
El globo puede responder a un evento como se muestra a continuacin:
Sub Globo_Pinchazo()
Globo.Desinflar
Globo.HacerRuido "Bang"
Globo.Inflado = False
Globo.Dimetro = 1
End Sub
En este caso, el cdigo describe el comportamiento del globo cuando se produce un evento Pinchazo: invoca el mtodo
Desinflar y luego invoca el mtodo HacerRuido con un argumento Bang (el tipo de ruido que se va a hacer). Como el
globo ya no est inflado, la propiedad Inflado tiene el valor False y la propiedad Dimetro adopta un nuevo valor.
Si bien no puede programar un globo, s puede programar un formulario o un control de Visual Basic. Como programador,
tiene el control: decide qu propiedades se deben modificar, qu mtodos se deben invocar o a qu eventos hay que
responder para conseguir la apariencia y el comportamiento deseados

1.1.6- Diferencias entre la programacin procedural y la programacin bajo Windows.

Pgina 11 de 159

Curso Visual Basic 5.0


Un estudio profundo del funcionamiento interno de Windows necesitara un libro completo. No es necesario tener un
profundo conocimiento de todos los detalles tcnicos. Una versin reducida del funcionamiento de Windows incluye tres
conceptos clave: ventanas, eventos y mensajes.
Una ventana es simplemente una regin rectangular con sus propios lmites. Probablemente ya sabe que hay varios tipos
de ventanas: una ventana Explorador en Windows 95, una ventana de documento dentro de su programa de proceso de
textos o un cuadro de dilogo que emerge para recordarle una cita. Aunque stos son los ejemplos ms comunes,
realmente hay otros muchos tipos de ventanas. Un botn de comando es una ventana. Los iconos, cuadros de texto,
botones de opcin y barras de mens son todos ventanas.
El sistema operativo Microsoft Windows administra todas estas ventanas asignando a cada una un nico nmero
identificador (controlador de ventana o hWnd). El sistema controla continuamente cada una de estas ventanas para ver si
existen signos de actividad o eventos. Los eventos pueden producirse mediante acciones del usuario, como hacer clic
con el mouse (ratn) o presionar una tecla, mediante programacin o incluso como resultado de acciones de otras
ventanas.
Cada vez que se produce un evento se enva un mensaje al sistema operativo. El sistema procesa el mensaje y lo
transmite a las dems ventanas. Entonces, cada ventana puede realizar la accin apropiada, basndose en sus propias
instrucciones para tratar ese mensaje en particular (por ejemplo, volverse a dibujar cuando otra ventana la ha dejado al
descubierto).
Como puede imaginar, tratar todas las combinaciones posibles de ventanas, eventos y mensajes podra ser interminable.
Afortunadamente, Visual Basic le evita tener que tratar con todos los controladores de mensajes de bajo nivel. Muchos
de los mensajes los controla automticamente Visual Basic, mientras que otros se tratan como procedimientos de evento
para su comodidad. Esto le permite crear rpidamente eficaces aplicaciones sin tener que tratar detalles innecesarios.
En las aplicaciones tradicionales o "por procedimientos", la aplicacin es la que controla qu partes de cdigo y en qu
secuencia se ejecutan. La ejecucin comienza con la primera lnea de cdigo y contina con una ruta predefinida a
travs de la aplicacin, llamando a los procedimientos segn se necesiten.
En una aplicacin controlada por eventos, el cdigo no sigue una ruta predeterminada; ejecuta distintas secciones de
cdigo como respuesta a los eventos. Los eventos pueden desencadenarse por acciones del usuario, por mensajes del
sistema o de otras aplicaciones, o incluso por la propia aplicacin. La secuencia de estos eventos determina la secuencia
en la que se ejecuta el cdigo, por lo que la ruta a travs del cdigo de la aplicacin es diferente cada vez que se ejecuta
el programa.
Puesto que no puede predecir la secuencia de los eventos, el cdigo debe establecer ciertos supuestos acerca del "estado
del mundo" cuando se ejecute. Cuando haga suposiciones (por ejemplo, que un campo de entrada debe contener un valor
antes de ejecutar un procedimiento para procesar ese valor), debe estructurar la aplicacin de forma que asegure que esa
suposicin siempre ser vlida (por ejemplo, deshabilitando el botn de comando que inicia el procedimiento hasta que
el campo de entrada contenga un valor).
El cdigo tambin puede desencadenar eventos durante la ejecucin. Por ejemplo, cambiar mediante programacin el
texto de un cuadro de texto hace que se produzca el evento Change del cuadro de texto. Esto causara la ejecucin del
cdigo (si lo hay) contenido en el evento Change. Si supone que este evento slo se desencadenar mediante la
interaccin del usuario, podra ver resultados inesperados. Por esta razn es importante comprender el modelo
controlado por eventos y tenerlo en cuenta cuando disee su aplicacin.

1.3- Proyecto.
1.3.1- Definicin de Proyecto en Visual Basic.
Para crear una aplicacin con Visual Basic se trabaja con proyectos. Un proyecto es una coleccin de archivos que se
usan para generar una aplicacin. Este tema describe cmo generar y administrar proyectos.
Al crear una aplicacin probablemente crear nuevos formularios; tambin puede volver a usar o modificar formularios
creados en proyectos anteriores. Esto tambin se aplica a otros mdulos o archivos que pueda incluir en su proyecto. Los
controles ActiveX y los objetos de otras aplicaciones tambin se pueden compartir entre proyectos.
Despus de ensamblar todos los componentes de un proyecto y escribir el cdigo, puede compilar el proyecto para crear
un archivo ejecutable.

Pgina 12 de 159

Curso Visual Basic 5.0

1.3.2-Componentes de un Proyecto.
Cuando desarrolla un aplicacin, trabaja con un archivo de proyecto para administrar todos los diferentes archivos que
crea. Un proyecto consta de lo siguiente:
Un archivo de proyecto que realiza el seguimiento de todos los componentes (.vbp)

Un archivo para cada formulario (.frm).


Un archivo de datos binario para cada formulario que contenga datos sobre propiedades de controles del formulario
(.frx). Estos archivos no se pueden modificar y los genera automticamente cualquier archivo .frm que tenga
propiedades en formato binario, como Picture o Icon.
Opcionalmente, un archivo para cada mdulo de clase (.cls).
Opcionalmente, un archivo para cada mdulo estndar (.bas).
Opcionalmente, uno o ms archivos con controles ActiveX (.ocx).
Opcionalmente, un nico archivo de recursos (.res).

El archivo de proyecto es simplemente una lista de todos los archivos y objetos asociados con el proyecto, as como
informacin sobre las opciones de entorno establecidas. Esta informacin se actualiza cada vez que guarda el proyecto.
Todos los archivos y objetos tambin se pueden compartir con otros proyectos.
Cuando ha completado todos los archivos del proyecto puede convertir el proyecto en un archivo ejecutable (.exe): en el
men Archivo, elija el comando Generar proyecto.exe.

1.3.2.1-Formularios.
Un formulario es una ventana. La ventana Windows de cualquier aplicacin.
Podemos abrir tantas ventanas como queramos en nuestro proyecto, pero el nombre de las ventanas debe ser distinto. Por
defecto como ya hemos visto, la ventana que se abre en Visual Basic tiene el nombre de Form1. Ya veremos como cambiar
estas "Propiedades" ms adelante.
Los mdulos de formularios (extensin de nombre de archivo .frm) pueden contener descripciones en forma de texto del
formulario y sus controles, incluyendo los valores de sus propiedades. Tambin pueden contener declaraciones a nivel de
formulario de constantes, variables y procedimientos externos, procedimientos de evento y procedimientos generales.

1.3.2.2-Mdulos de clase.
Los mdulos de clase (extensin de nombre de archivo .cls) son similares a los mdulos de formulario, excepto en que
no tiene interfaz de usuario visible. Puede usar mdulos de clase para crear sus propios objetos, incluyendo cdigo para
mtodos y propiedades.

1.3.2.3-Mdulos estndar.
Un mdulo es un archivo Visual Basic donde escribimos parte del cdigo de nuestro programa, y digo parte, porque puede
haber cdigo en el formulario tambin.
Las rutinas incluidas dentro de los mdulos pueden ser ejecutadas desde los formularios de la aplicacin.
Los mdulos estndar (extensin de nombre de archivo .bas) pueden contener declaraciones pblicas o a nivel de
mdulo de tipos, constantes, variables, procedimientos externos y procedimientos pblicos.

1.3.2.4-Archivos de Recursos.
Los archivos de recursos (extensin de nombre de archivo .res) contienen mapas de bits, cadenas de texto y otros datos
que puede modificar sin volver a modificar el cdigo. Por ejemplo, si piensa traducir su aplicacin a un idioma
extranjero, puede guardar todas las cadenas de texto de la interfaz de usuario y los mapas de bits en un archivo de
recursos, y simplemente traducir el archivo de recursos en vez de la aplicacin completa. Un proyecto slo puede
contener un archivo de recursos.

Pgina 13 de 159

Curso Visual Basic 5.0

1.3.2.5-Controles Active X.
Los controles ActiveX (extensin de nombre de archivo .ocx) son controles opcionales que se pueden agregar al cuadro
de herramientas y se pueden usar en formularios. Cuando instala Visual Basic, los archivos que contienen los controles
incluidos en Visual Basic se copian a un directorio comn (el subdirectorio \Windows\System en Windows 95). Existen
controles ActiveX adicionales disponibles en diversas fuentes. Tambin puede crear sus propios controles mediante las
ediciones Profesional y Empresarial de Visual Basic.

1.3.2.6-Controles estndar.
Los controles estndar los proporciona Visual Basic. Los controles estndar, como CommandButton (botn de comando)
o Frame (marco), siempre estn incluidos en el cuadro de herramientas, al contrario de lo que ocurre con los controles
ActiveX y los objetos insertables, que se pueden agregar y quitar del cuadro de herramientas.

1.4-Entorno de Desarrollo.
1.4.1-Barra de men. y 1.4.2-Barra de Herramientas.

En la ventana del programa, podemos hacer todas las funciones normales que nos permite el compilador Visual Basic.

1.4.3-Ventana de Proyecto.

Pulse "Ctrl+R" (Ver -> Proyecto) y se abrir la ventana de proyectos (3).


En esta ventana tenemos todos los ficheros del proyecto Visual Basic en el que vamos a trabajar.

1.4.4- Formulario.

Pgina 14 de 159

Curso Visual Basic 5.0


Al principio y por defecto, el programa abre un formulario con el nombre Form1 que es la ventana Windows de nuestra
aplicacin.

1.4.5- Ventana de Propiedades.

Pulsando la tecla "F4", aparecer la ventana de propiedades . Esta ventana es fundamental, ya que contiene todas las
propiedades de cada objeto que insertaremos en nuestro formulario, as como las propiedades del formulario en s.

1.4.6- Caja de Herramientas.

Pgina 15 de 159

Curso Visual Basic 5.0


La ventana caja de herramientas contiene todos los objetos que podemos incluir en nuestro formulario. Esta ventana se
puede abrir en el men principal (Ver -> Caja de herramientas).

2-Programacin:
2.1- Fundamentos de la Programacin.
Cada mdulo de formulario contiene procedimientos de evento (secciones de cdigo donde se colocan las instrucciones
que se ejecutarn como respuesta a eventos especficos). Los formularios pueden contener controles. Por cada control de
un formulario, existe el correspondiente conjunto de procedimientos de evento en el mdulo de formulario. Adems de
procedimientos de evento, los mdulos de formulario pueden contener procedimientos generales que se ejecutan como
respuesta a una llamada desde cualquier procedimiento de evento.
El cdigo que no est relacionado con un control o un formulario especfico se puede colocar en un tipo diferente de
mdulo, un mdulo estndar (.bas). Se deben colocar en un mdulo estndar los procedimientos que se puedan utilizar
como respuesta a eventos de diversos objetos, en lugar de duplicar el cdigo en los procedimientos de evento de cada
objeto.

2.1.1- Como funciona una aplicacin controlada por eventos.


Un evento es una accin reconocida por un formulario o un control. Las aplicaciones controladas por eventos ejecutan
cdigo Basic como respuesta a un evento. Cada formulario y control de Visual Basic tiene un conjunto de eventos
predefinidos. Si se produce uno de dichos eventos y el procedimiento de evento asociado tiene cdigo, Visual Basic
llama a ese cdigo.
Aunque los objetos de Visual Basic reconocen automticamente un conjunto predefinido de eventos, usted decide
cundo y cmo se responder a un evento determinado. A cada evento le corresponde una seccin de cdigo (un
procedimiento de evento). Cuando desea que un control responda a un evento, escribe cdigo en el procedimiento de ese
evento.
Los tipos de eventos reconocidos por un objeto varan, pero muchos tipos son comunes a la mayora de los controles.
Por ejemplo, la mayora de los objetos reconocen el evento Click: si un usuario hace clic en un formulario, se ejecuta el
cdigo del procedimiento de evento Click del formulario; si un usuario hace clic en un botn de comando, se ejecuta el
cdigo del procedimiento de evento Click del botn. El cdigo en cada caso ser diferente.
He aqu una secuencia tpica de eventos en una aplicacin controlada por eventos:
1. Se inicia la aplicacin y se carga y muestra un formulario.
2. El formulario (o un control del formulario) recibe un evento. El evento puede estar causado por el usuario (por
ejemplo, por la pulsacin de una tecla), por el sistema (por ejemplo, un evento de cronmetro) o, de forma indirecta, por
el cdigo (por ejemplo, un evento Load cuando el cdigo carga un formulario).
3. Si hay cdigo en el procedimiento de evento correspondiente, se ejecuta.
4. La aplicacin espera al evento siguiente.

2.2- Variables.
2.2.1- Alcance de las variables.
El alcance de una variable define qu partes del cdigo son conscientes de su existencia. Cuando declara una variable en
un procedimiento, slo el cdigo de dicho procedimiento puede tener acceso o modificar el valor de la variable; tiene un
alcance que es local al procedimiento. A veces, sin embargo, se necesita utilizar una variable con un alcance ms
general, como aquella cuyo valor est disponible para todos los procedimientos del mismo mdulo o incluso para todos

Pgina 16 de 159

Curso Visual Basic 5.0


los procedimientos de toda la aplicacin. Visual Basic le permite especificar el alcance de una variable cuando la
declara.
Establecimiento del alcance de las variables
Dependiendo de cmo se declara, una variable tiene como alcance un procedimiento (local) o un mdulo.

Alcance

Privado

Pblico

Nivel de procedimiento

Las variables son privadas del


procedimiento en el que
aparecen.
Las variables son privadas del
mdulo en el que aparecen.

No es aplicable. No puede
declarar variables pblicas
dentro de un procedimiento.
Las variables estn disponibles
para todos los mdulos.

Nivel de mdulo

Variables utilizadas en un procedimiento


Las variables a nivel de procedimiento slo se reconocen en el procedimiento en el que se han declarado. Se las conoce
tambin como variables locales. Se declaran mediante las palabras clave Dim o Static. Por ejemplo:
Dim intTemp As Integer

o bien
Static intPermanent As Integer
Los valores de variables locales declaradas con Static existen mientras se ejecuta la aplicacin, mientras que las
variables declaradas con Dim slo existen mientras se ejecuta el procedimiento.
Las variables locales resultan una eleccin apropiada para clculos temporales. Por ejemplo, puede crear una docena de
procedimientos distintos que contengan una variable llamada intTemp. Como cada intTemp se ha declarado como una
variable local, cada procedimiento slo reconoce su propia versin de intTemp. Cualquier procedimiento puede alterar el
valor de su intTemp local sin que ello afecte a las variables intTemp de los dems procedimientos.

Variables utilizadas en un mdulo


De forma predeterminada, una variable a nivel de mdulo est disponible para todos los procedimientos del mdulo,
pero no para el cdigo de otros mdulos. Cree variables a nivel de mdulo declarndolas con la palabra clave Private en
la seccin Declaraciones al principio del mdulo. Por ejemplo:
Private intTemp As Integer
A nivel de mdulo, no hay diferencia entre Private y Dim, pero es preferible Private porque contrasta con Public y
hace que el cdigo sea ms fcil de comprender.

Variables utilizadas por todos los mdulos


Para hacer que una variable a nivel de mdulo est disponible para otros mdulos, utilice la palabra clave Public para
declarar la variable. Los valores de las variables pblicas estn disponibles para todos los procedimientos de la
aplicacin. Al igual que todas las variables a nivel de mdulo, las variables pblicas se declaran en la seccin
Declaraciones al principio del mdulo. Por ejemplo:
Public intTemp As Integer
Nota No puede declarar variables pblicas en un procedimiento, slo en la seccin Declaraciones de un mdulo.

2.2.2- Declaracin
La forma de declarar las variables es la siguiente:
Pgina 17 de 159

Curso Visual Basic 5.0


Dim| Public| Static nombre_variable As tipo
Dim: Al declarar una variable con esta palabra estamos diciendo que la variable sea local al mbito en que se
declara. Puede ser dentro de un procedimiento o dentro de un formulario, de esta forma no sera accesible desde los dems
procedimientos o formularios.
Public: Las variables declaradas sern publicas y podrn estar accesibles desde todos los formularios de la
aplicacin. Para conseguirlo tendremos que declararlas en un mdulo de cdigo, no en la seccin declarations de cualquier
formulario de los que conste la aplicacin. Para crear un mdulo de cdigo en el men principal de Visual Basic marcamos
en PROYECTO/INSETAR MDULO y aparecer junto a los dems formularios de la ventana de proyecto aunque con un
icono distinto indicando que se trata de un mdulo de cdigo.
Static: Con esta forma de declarar variables conseguiremos que las variables locales no se creen y se destruyan al
entrar y salir de los procedimientos donde fueron declaradas sino que se mantenga su valor durante todo el periodo de
ejecucin de la aplicacin. De esta forma a entrar en algn procedimiento las variables recuerdan el valor que tenan
cuando se sali de l.

2.2.3- Tipos de variables


TIPO
BOOLEAN
BYTE
INTEGER
LONG
SINGLE
DOUBLE
CURRENCY
STRING
DATE

COMENTARIO
Slo admite 2 valores TRUE o FALSE
admite valores entre 0 y 255
admite valores entre -32768 y 32767
admite valores entre -2.147.483.648 y
2.147.483.647
admite valores decimales con precisin
simple
admite valores decimales de doble
precisin
vlido para valores de tipo moneda
cadenas de caracteres
fechas, permite operar con ellas

2.2.4- Matrices
Para declarar matrices debemos colocar entre parntesis el nmero de elementos de los que constar a
continuacin del nombre de la variable:
Dim medidas(9) as integer
De esta forma tenemos una matriz de 10 elementos identificados del 0 al 9
Podemos obligar a que el primer elemento de una matriz tenga el ndice con valor 1.
Esto lo haremos colocando la instruccin option base 1 en la seccin declarations de nuestro formulario.
Tambin podemos indicar los lmites inferior y superior de la matriz:
Dim medidas(5 to 14) as integer
es una matriz de 10 elementos cuyos indices van del 5 al 14
Las matrices multidimensionales se declaran de la siguiente forma:
Dim medidas(1 to 10, 1 to 10) as integer

Pgina 18 de 159

Curso Visual Basic 5.0

CONSIDERACIONES
Al trabajar con Visual Basic es preferible que activemos la opcin que nos obligue a declarar todas las variables
que utilicemos, de esta forma nos ahorraremos errores inesperados como el de trabajar con una variable ya utilizada
anteriormente producindose un conflicto dficil de resolver. En cambio si intentamos declarar 2 variables con el mismo
nombre, en el mismo formulario o procedimiento se produce un error en tiempo de edicin avisndonos de la situacin.
Para activar esta opcin debemos ir a la opcin del men Herramientas y Opciones para que aparezca un cuadro
de dialogo como este.

La opcin que nos interesa activar es Requerir declaracin de variables que en este caso ya lo est. De esta forma
en cada seccin declarations de cada formulario aparecer la sentencia option explicit
Otra opcin que es interesante activar, es la de Guardar los cambios en la ficha entorno, la cual te guarda una
copia del cdigo antes de ejecutarlo por si acaso luego no podemos, se bloquea la aplicacin etc... no suele pasar pero
nunca se sabe. De esta forma te aseguras que lo ltimo que hayas ejecutado lo tienes guardado en el disco.
La opcin Comprobacin automtica de sintaxis normalmente viene activada por defecto, no conviene
desactivarla puesto que te avisa de errores de sintaxis conforme vas escribiendo el cdigo: Si te falta el then despus del if,
el do antes del while etc...

2.3- Procedimientos y funciones.


2.3.1-Introduccin a los Procedimientos.
Puede simplificar las tareas de programacin si divide los programas en componentes lgicos ms pequeos. Estos
componentes, llamados procedimientos, pueden convertirse en bloques bsicos que le permiten mejorar y ampliar Visual
Basic.
Pgina 19 de 159

Curso Visual Basic 5.0


Los procedimientos resultan muy tiles para condensar las tareas repetitivas o compartidas, como clculos utilizados
frecuentemente, manipulacin de texto y controles, y operaciones con bases de datos.
Hay dos ventajas principales cuando se programa con procedimientos:
Los procedimientos le permiten dividir los programas en unidades lgicas discretas, cada una de las cuales se puede
depurar ms fcilmente que un programa entero sin procedimientos.
Los procedimientos que se utilizan en un programa pueden actuar como bloques de construccin de otros
programas, normalmente con pocas o ninguna modificacin.
En Visual Basic se utilizan varios tipos de procedimientos:
Procedimientos Sub que no devuelven un valor.

Procedimientos Function que devuelven un valor (normalmente conocidos como funciones).

2.3.2- Procedimientos.
Un procedimiento Sub es un bloque de cdigo que se ejecuta como respuesta a un evento. Al dividir el cdigo de un
mdulo en procedimientos Sub, es ms sencillo encontrar o modificar el cdigo de la aplicacin.
La sintaxis de un procedimiento Sub es la siguiente:
[Private|Public][Static]Sub nombre_procedimiento (argumentos)
instrucciones
End Sub
Cada vez que se llama al procedimiento se ejecutan las instrucciones que hay entre Sub y End Sub. Se pueden colocar
los procedimientos Sub en mdulos estndar, mdulos de clase y mdulos de formulario. De forma predeterminada, los
procedimientos Sub son Public en todos los mdulos, lo que significa que se les puede llamar desde cualquier parte de
la aplicacin.
Los argumentos de un procedimiento son como las declaraciones de variables; se declaran valores que se pasan desde el
procedimiento que hace la llamada.
Resulta muy til en Visual Basic distinguir entre dos tipos de procedimientos Sub, procedimientos generales y
procedimientos de evento.

Procedimientos generales
Un procedimiento general indica a la aplicacin cmo realizar una tarea especfica. Una vez que se define un
procedimiento general, se le debe llamar especficamente desde la aplicacin. Por el contrario, un procedimiento de
evento permanece inactivo hasta que se le llama para responder a eventos provocados por el usuario o desencadenados
por el sistema.
Por qu crear procedimientos generales? Una razn es que muchos procedimientos de evento distintos pueden necesitar
que se lleven a cabo las mismas acciones. Es una buena estrategia de programacin colocar las instrucciones comunes en
un procedimiento distinto (un procedimiento general) y hacer que los procedimientos de evento lo llamen. Esto elimina la
necesidad de duplicar cdigo y tambin hace que la aplicacin sea ms fcil de mantener.

Procedimientos de evento
Cuando un objeto en Visual Basic reconoce que se ha producido un evento, llama automticamente al procedimiento de
evento utilizando el nombre correspondiente al evento. Como el nombre establece una asociacin entre el objeto y el
cdigo, se dice que los procedimientos de evento estn adjuntos a formularios y controles.
Un procedimiento de evento de un control combina el nombre real del control (especificado en la propiedad Name),
un carcter de subrayado (_) y el nombre del evento. Por ejemplo, si desea que un botn de comando llamado
cmdPlay llame a un procedimiento de evento cuando se haga clic en l, utilice el procedimiento cmdPlay_Click.

Pgina 20 de 159

Curso Visual Basic 5.0

Un procedimiento de evento de un formulario combina la palabra "Form", un carcter de subrayado y el nombre del
evento. Si desea que un formulario llame a un procedimiento de evento cuando se hace clic en l, utilice el
procedimiento Form_Click. (Como los controles, los formularios tienen nombres nicos, pero no se utilizan en los
nombres de los procedimientos de evento.)

Todos los procedimientos de evento utilizan la misma sintaxis general.


Sintaxis de un evento de control Sintaxis de un evento de formulario
Private Sub nombrecontrol_nombreevento (argumentos )
instrucciones
End Sub
Private Sub Form_nombreevento (argumentos)
instrucciones
End Sub
Aunque puede escribir procedimientos de evento nuevos, es ms sencillo utilizar los procedimientos de cdigo que
facilita Visual Basic, que incluyen automticamente los nombres correctos de procedimiento. Puede seleccionar una
plantilla en la ventana Editor de cdigo si selecciona un objeto en el cuadro Objeto y selecciona un procedimiento en el
cuadro Procedimiento.
Tambin es conveniente establecer la propiedad Name de los controles antes de empezar a escribir los procedimientos
de evento para los mismos. Si cambia el nombre de un control tras vincularle un procedimiento, deber cambiar tambin
el nombre del procedimiento para que coincida con el nuevo nombre del control. De lo contrario, Visual Basic no ser
capaz de hacer coincidir el control con el procedimiento. Cuando el nombre de un procedimiento no coincide con el
nombre de un control, se convierte en un procedimiento general.

2.3.3- Funciones.
La sintaxis de un procedimiento Function es la siguiente:
[Private|Public][Static]Function nombre_procedimiento (argumentos) [As tipo]
instrucciones
End Function
Al igual que un procedimiento Sub, un procedimiento Function es un procedimiento diferente que puede tomar
argumentos, realizar una serie de instrucciones y cambiar el valor de los argumentos. A diferencia de los procedimientos
Sub, los procedimientos Function pueden devolver un valor al procedimiento que realiza la llamada. Hay tres
diferencias entre los procedimientos Sub y Function:
Generalmente, se llama a una funcin incluyendo el nombre y los argumentos del procedimiento en la parte derecha
de una instruccin o expresin mayor (valor_retorno = funcin()).
Los procedimientos Function tienen tipos de datos, al igual que las variables. Esto determina el tipo del valor de
retorno. (En ausencia de la clusula As, el tipo es el tipo predeterminado Variant.)
Se devuelve un valor asignndole al propio nombre_procedimiento. Cuando el procedimiento Function devuelve un
valor, se puede convertir en parte de una expresin mayor.
Por ejemplo, podra escribir una funcin que calculara el tercer lado, o hipotenusa, de un tringulo rectngulo, dados los
valores de los otros dos lados:
Function Hipotenusa (A As Integer, B As Integer) As String
Hipotenusa = Sqr(A ^ 2 + B ^ 2)
End Function
Se llama a un procedimiento Function de la misma forma que a las funciones incorporadas en Visual Basic:
Pgina 21 de 159

Curso Visual Basic 5.0


Label1.Caption = Hipotenusa(CInt(Text1.Text),CInt(Text2.Text))
strX = Hipotenusa(Width, Height)

2.3.4- Llamadas a Procedimientos.


Un procedimiento Sub difiere de un procedimiento Function en que al procedimiento Sub no se le puede llamar
mediante su nombre en una expresin. La llamada a un procedimiento Sub es una instruccin nica. Adems, un
procedimiento Sub no devuelve un valor en su nombre como hace una funcin. Sin embargo, al igual que Function, un
procedimiento Sub puede modificar los valores de las variables que se le pasan.
Hay dos formas de llamar a un procedimiento Sub:
' Ambas instrucciones llaman a un Sub denominado MiProc.
Call MiProc (PrimerArgumento, SegundoArgumento)
MiProc PrimerArgumento, SegundoArgumento
Observe que cuando utiliza la sintaxis Call, debe poner los argumentos entre parntesis. Si omite la palabra clave Call,
deber tambin omitir los parntesis alrededor de los argumentos.

2.3.5- Llamadas a Funciones.


Normalmente se llama a un procedimiento de funcin que se ha escrito de la misma forma en que se llama a una funcin
intrnseca de Visual Basic como Abs; es decir, utilizando su nombre en una expresin:
' Las instrucciones siguientes llamaran a una funcin _
' llamada ToDec.
Print 10 * Adec
X = Adec
If Adec = 10 Then Debug.Print "Fuera del intervalo"
X = OtraFuncin(10 * Adec)
Tambin es posible llamar a una funcin igual que se llama a un procedimiento Sub. Las instrucciones siguientes llaman
a la misma funcin:
Call Year(Now)
Year Now
Cuando llama a una funcin de esta manera, Visual Basic desecha el valor de retorno.

2.3.6- Pasaje de argumentos a los procedimientos y funciones.


Normalmente el cdigo de un procedimiento necesita cierta informacin sobre el estado del programa para realizar su
trabajo. Esta informacin consiste en variables que se pasan al procedimiento cuando se le llama. Cuando se pasa una
variable a un procedimiento, se llama argumento.

Tipos de datos de los argumentos


Los argumentos de los procedimientos que escriba tienen el tipo de dato Variant de forma predeterminada. Sin
embargo, puede declarar otros tipos de datos para los argumentos. Por ejemplo, la funcin siguiente acepta una cadena y
un entero:
Function QuComer (DaSemana As String, Hora As Integer) As String
' Devuelve el men del almuerzo basndose en el da y la hora.
If DaSemana = "Viernes" then
Pgina 22 de 159

Curso Visual Basic 5.0


QuComer = "Pescado"
Else
QuComer = "Pollo"
End If
If Hora > 4 Then QuComer = "Demasiado tarde"
End Function

Paso de argumentos por valor


Slo se pasa una copia de la variable cuando se pasa un argumento por valor. Si el procedimiento cambia el valor, el
cambio afecta slo a la copia y no a la variable propiamente dicha. Utilice la palabra clave ByVal para indicar un
argumento pasado por valor.
Por ejemplo:
Sub Cuentas (ByVal intNumCuenta as Integer)
.
. ' Ponga aqu sus instrucciones.
.
End Sub

Paso de argumentos por referencia


Pasar argumentos por referencia le da al procedimiento acceso al contenido real de la variable en su ubicacin de
direccin de memoria. Como resultado, el procedimiento al que se ha pasado el valor de la variable se puede modificar
de forma permanente. La forma predeterminada de pasar valores en Visual Basic es por referencia.
Si especifica el tipo de dato de un argumento que se pasa por referencia, debe pasar un valor de ese tipo para el
argumento. Puede eludirlo si pasa una expresin en vez de un tipo de dato como argumento. Visual Basic evala la
expresin y la pasa como el tipo requerido si puede.
La forma ms sencilla de convertir una variable en una expresin es ponerla entre parntesis. Por ejemplo, para pasar
una variable declarada como entero a un procedimiento que espera una cadena como argumento, debera hacer lo
siguiente:
Sub ProcedimientoQueLlama ()
Dim intX As Integer
intX = 12 * 3
Foo(intX)
End Sub
Sub Foo(Bar As String)
MsgBox Bar
End Sub

'El valor de Bar es la cadena "36".

2.4- Estructuras de Control (Repeticin y Decisin).


2.4.1-Do While Loop / Do Loop While.
Utilice el bucle Do para ejecutar un bloque de instrucciones un nmero indefinido de veces. Hay algunas variantes en la
instruccin Do...Loop, pero cada una evala una condicin numrica para determinar si contina la ejecucin. Como
ocurre con If...Then, la condicin debe ser un valor o una expresin que d como resultado False (cero) o True (distinto
de cero).
En el ejemplo de Do...Loop siguiente, las instrucciones se ejecutan siempre y cuando condicin sea True:
Pgina 23 de 159

Curso Visual Basic 5.0

Do While condicin
instrucciones
Loop
Cuando Visual Basic ejecuta este bucle Do, primero evala condicin. Si condicin es False (cero), se salta todas las
instrucciones. Si es True (distinto de cero), Visual Basic ejecuta las instrucciones, vuelve a la instruccin Do While y
prueba la condicin de nuevo.
Por tanto, el bucle se puede ejecutar cualquier nmero de veces, siempre y cuando condicin sea distinta de cero o True.
Nunca se ejecutan las instrucciones si condicin es False inicialmente. Por ejemplo, este procedimiento cuenta las veces
que se repite una cadena de destino dentro de otra cadena repitiendo el bucle tantas veces como se encuentre la cadena
de destino:
Function ContarCadenas (cadenalarga, destino)
Dim posicin, contador
posicin = 1
Do While InStr(posicin, cadenalarga, destino)
posicin = InStr(posicin, cadenalarga, destino) +1
contador = contador + 1
Loop
ContarCadenas = contador
End Function
Si la cadena de destino no est en la otra cadena, InStr devuelve 0 y no se ejecuta el bucle.
Otra variante de la instruccin Do...Loop ejecuta las instrucciones primero y prueba condicin despus de cada
ejecucin. Esta variacin garantiza al menos una ejecucin de instrucciones:
Do
instrucciones
Loop While condicin
Hace el bucle cero o ms veces
Do Until condicin
instrucciones
Loop

Hace el bucle al menos una vez


Do
instrucciones
Loop Until condicin

2.4.2- For Next.


Los bucles Do funcionan bien cuando no se sabe cuntas veces se necesitar ejecutar las instrucciones del bucle. Sin
embargo, cuando se sabe que se van a ejecutar las instrucciones un nmero determinado de veces, es mejor elegir el
bucle ForNext. A diferencia del bucle Do, el bucle For utiliza una variable llamada contador que incrementa o reduce
su valor en cada repeticin del bucle. La sintaxis es la siguiente:
For contador = iniciar To finalizar [Step incremento]
instrucciones
Next [contador]
Los argumentos contador, iniciar, finalizar e incremento son todos numricos.
Nota El argumento incremento puede ser positivo o negativo. Si incremento es positivo, iniciar debe ser menor o igual
que finalizar o no se ejecutarn las instrucciones del bucle. Si incremento es negativo, iniciar debe ser mayor o igual que
finalizar para que se ejecute el cuerpo del bucle. Si no se establece Step, el valor predeterminado de incremento es 1.
Pgina 24 de 159

Curso Visual Basic 5.0

Al ejecutar el bucle For, Visual Basic:


1. Establece contador al mismo valor que iniciar.
2. Comprueba si contador es mayor que finalizar. Si lo es, Visual Basic sale del bucle.
(Si incremento es negativo, Visual Basic comprueba si contador es menor que finalizar.)
3. Ejecuta instrucciones.
4. Incrementa contador en 1 o en instrucciones, si se especific.
5. Repite los pasos 2 a 4.
Este cdigo imprime los nombres de todas las fuentes de pantalla disponibles:
Private Sub Form_Click ()
Dim I As Integer
For i = 0 To Screen.FontCount
Print Screen.Fonts(i)
Next
End Sub
En la aplicacin de ejemplo VCR, el procedimiento HighlightButton utiliza un bucle For...Next para pasar por la
coleccin de controles del formulario VCR y mostrar el control Shape apropiado:
Sub HighlightButton(MyControl As Variant)
Dim i As Integer
For i = 0 To frmVCR.Controls.Count - 1
If TypeOf frmVCR.Controls(i) Is Shape Then
If frmVCR.Controls(i).Name = MyControl Then
frmVCR.Controls(i).Visible = True
Else
frmVCR.Controls(i).Visible = False
End If
End If
Next
End Sub

2.4.3- If Else End If.


Use la estructura If...Then para ejecutar una o ms instrucciones basadas en una condicin. Puede utilizar la sintaxis de
una lnea o un bloque de varias lneas:
If condicin Then instruccin
If condicin Then
instrucciones
End If
Condicin normalmente es una comparacin, pero puede ser cualquier expresin que d como resultado un valor
numrico. Visual Basic interpreta este valor como True o False; un valor numrico cero es False y se considera True
cualquier valor numrico distinto de cero. Si condicin es True, Visual Basic ejecuta todas las instrucciones que siguen
a la palabra clave Then. Puede utilizar la sintaxis de una lnea o de varias lneas para ejecutar una instruccin basada en
una condicin (estos dos ejemplos son equivalentes):
If cualquierFecha < Now Then cualquierFecha = Now
If cualquierFecha < Now Then
cualquierFecha = Now
Pgina 25 de 159

Curso Visual Basic 5.0


End If
Observe que el formato de una nica lnea de If...Then no utiliza la instruccin End If. Si desea ejecutar ms de una
lnea de cdigo cuando condicin sea True, debe utilizar la sintaxis de bloque de varias lneas If...Then...End If.
If cualquierFecha < Now Then
cualquierFecha = Now
Timer1.Enabled = False
End If

' Desactiva el control Timer.

If...Then...Else
Utilice un bloque If...Then...Else para definir varios bloques de instrucciones, uno de los cuales se ejecutar:
If condicin1 Then
[bloque de instrucciones 1]
[Else
[bloque de instrucciones n]]
End If
Visual Basic evala primero condicin1. Si es False, Visual Basic ejecuta el bloque de instrucciones correspondientes a
Else y despus ejecuta el cdigo que sigue a End If.
Por ejemplo, la aplicacin podra realizar distintas acciones dependiendo del control en que se haya hecho clic de una
matriz de controles de men:
Private Sub mnuCut_Click (Index As Integer)
If Index = 0 Then
CopyActiveControl
ClearActiveControl
Else
PasteActiveControl
End If
End Sub

' Comando Cortar.


' Comando Pegar.

2.4.4- Select - Case


Visual Basic proporciona la estructura Select Case como alternativa a If...Then...Else para ejecutar selectivamente un
bloque de instrucciones entre varios bloques de instrucciones. La instruccin Select Case ofrece posibilidades similares
a la instruccin If...Then...Else, pero hace que el cdigo sea ms legible cuando hay varias opciones.
La estructura Select Case funciona con una nica expresin de prueba que se evala una vez solamente, al principio de
la estructura. Visual Basic compara el resultado de esta expresin con los valores de cada Case de la estructura. Si hay
una coincidencia, ejecuta el bloque de instrucciones asociado a ese Case:
Select Case expresin_prueba
[Case lista_expresiones1
[bloque de instrucciones 1]]
[Case lista_expresiones2
[bloque de instrucciones 2]]
.
.
.
[Case Else
[bloque de instrucciones n]]
End Select
Pgina 26 de 159

Curso Visual Basic 5.0

Cada lista_expresiones es una lista de uno o ms valores. Si hay ms de un valor en una lista, se separan los valores con
comas. Cada bloque de instrucciones contiene cero o ms instrucciones. Si ms de un Case coincide con la expresin de
prueba, slo se ejecutar el bloque de instrucciones asociado con la primera coincidencia. Visual Basic ejecuta las
instrucciones de la clusula (opcional) Case Else si ningn valor de la lista de expresiones coincide con la expresin de
prueba.
Por ejemplo, suponga que agrega otro comando al men Edicin en el ejemplo If...Then...Else. Podra agregar otra
clusula ElseIf o podra escribir la funcin con Select Case:
Private Sub mnuCut_Click (Index As Integer)
Select Case Index
Case 0
CopyActiveControl
ClearActiveControl
Case 1
CopyActiveControl
Case 2
ClearActiveControl
Case 3
PasteActiveControl
Case Else
frmFind.Show
End Select
End Sub

' Comando Cortar.


' Llama a procedimientos generales.
' Comando Copiar.
' Comando Borrar.
' Comando Pegar.
' Muestra el cuadro de dilogo Buscar.

Observe que la estructura Select Case evala una expresin cada vez al principio de la estructura.

3- Controles
3.1- Controles bsicos
Vamos a ver los siguientes puntos:

Introduccin al uso de controles

Control TextBox.

Control Label

Control CommandButton

Control OptionButton

Realizacon de una pequea aplicacin de ejemplo

Antes de empezar a conocer los controles bsicos veamos cuales son sus caractersticas generales:

Propiedades:Todos los controles disponen de una serie de propiedades las cuales podemos
cambiar al incluirlos en nuestras aplicaciones. Ejemplos de propiedades son el color, el tipo
de letra, el nombre, el texto, etc...

Metodos: Son procedimientos asociados a los controles, es decir, rutinas ya establecidas


Pgina 27 de 159

Curso Visual Basic 5.0

que podemos invocar desde nuestras aplicaciones para que se realice alguna operacin
sobre el control. Por ejemplo el control ListView ( la lista de archivos que aparece en el
explorador de windows) dispone del mtodo order que te ordena los datos aparecidos en la
lista.

Eventos: Son acciones que pueden ser motivadas por el propio usuario o por mismo
sistema operativo. Ejemplos pueden ser el movimiento del ratn o hacer click sobre su
botn. En Visual Basic digamos que se utiliza la programacin orientada a eventos, lo cual
es una de las diferencias ms importantes respecto a la programacin lineal de MS DOS.
No necesitamos detectar cuando se ha producido un evento determinado, Windows lo
detecta automticamente. Los eventos ya estan definidos, son bastantes y cada control
cuenta con los suyos propios, aunque son muy parecidos. Lo nico que tendremos que
hacer es asociar el cdigo necesario al evento que necesitemos tratar.

TextBox
Mediante este control podremos realizar tanto la entrada como la salida de datos en nuestras aplicaciones.
No hace falta que indiquemos las coordenadas de la situacin del formulario en pantalla, simplemente tendremos que
marcar sobre el control de la caja de herramientas y dibujarlo con el tamao que queramos en nuestro formulario.
PROPIEDADES
Las propiedades de las que dispone el control son las siguientes:(para obtener el cuadro de propiedades, seleccionar el
control y pulsar F4 o pulsar con el boton derecho para obtener el men contextual y marcar Propierties)

Text: Aqu indicamos el texto que aparecer en el control. Podemos asignarle cualquier texto
en tiempo de diseo o ejecucin. Tambin podemos tomar el texto que haya introducido el
usuario para tratarlo durante la ejecucin.
Name: Esta propiedad la tienen todos los controles, el nombre que viene por defecto en este
caso Text1 y es el nombre con el que se conocer el control cuando lo utilicemos en el cdigo.
En un mismo formulario no puede haber 2 controles con el mismo nombre. Conviene poner un
nombre que represente la funcin que tiene el control en la aplicacin para que el cdigo quede
ms claro. Ejemplo, si en el textbox vamos a introducir la direccin de una persona podemos
asignarle a esta propiedad el valor Direccin.
MultiLine: Permite que introduzcamos varias lineas de texto en el control en lugar de slo una.
Alignment: Alineacin que tendr el texto dentro del control: izquierda, centro o derecha. Para
que funcione la propiedad MultiLine debe estar con el valor true.
Locked: Si esta con valor true bloquea el control, es decir, el usuario no puede introducir ni
modificar el texto que contenga. Nos puede servir para utilizar el control como salida de datos
sin que el usuario pueda modificarlos por error.
Otras propiedades que son comunes a la mayoria de los controles:

Backcolor: color de fondo.


Forecolor: color de letra.
Font: tipo y tamao de letra.
Pgina 28 de 159

Curso Visual Basic 5.0


METODOS
Recordemos que por mtodos se entienten los procedimientos o funciones asociados a un control, los cuales nos permiten
realizar ciertas operaciones tiles sobre dicho control: Ej. ordenar sus elementos, buscar un dato, etc..
Pues bien, los controles bsicos que vamos a ver en este captulo nicamente contienen mtodos avanzados que no vamos a
analizar por ahora, ya que son mtodos que no se suelen utilizar. Ms adelante cuando veamos otros tipos de controles
estudiaremos cuales son los mtodos que nos podrn servir. Si alguien est interesado en conocer todas las caractersticas
de los controles puede hacerlo mirando en la ayuda que proporciona VB, haciendo click sobre cualquier control de la caja
de herramientas y pulsando a continuacin F1 obtendr ayuda referente a ese control donde aparecern todas sus
propiedades, metodos y eventos.

EVENTOS
Los eventos son acciones que se pueden realizar en cualquier control: click, doble click, movimiento del ratn. A estos
eventos se les puede asociar cdigo para que se ejecute al producir el evento.

MouseMove: al mover el raton por encima del control.


Mousedown: al pulsar cualquier boton del raton
Change: al cambiar el contenido del control
Click: al hacer click con el botn izquierdo del ratn sobre el control
Doubleclick: al hacer doble click con el con el botn izquierdo del ratn sobre el control
Getfocus: este evento se activa cuando el control recibe el enfoque, es decir, cuando se activa
el control en tiempo de ejecucin para introducir datos en l o realizar alguna operacin.
Lostfocus: Es el contrario del anterior evento, se activa cuando el control pierde el enfoque, es
decir, se pasa a otro control para seguir introduciendo datos.

EJEMPLO
Vamos a probar el uso del control TextBox mediante un pequeo ejemplo en el que teniendo un nico control de este tipo en
un formulario, lo programaremos de forma que al pasar el ratn sobre el control (evento mousemove) aparecer en el
formulario el texto que contenga.

Observamos que al situar el control en el formulario aparece por defecto el texto Text1. Para que no aparezca ese texto al
ejecutar la aplicacin, debemos cambiar la propiedad Text pulsando F4 y colocar el texto que queramos o no colocar nada.
Lo que queremos hacer es que cada vez que movamos el raton por el control aparezca su contenido en el formulario.
Entonces lo que habr que hacer abrir la ventana de cdigo, seleccionando el control y pulsando F7, o con el botn derecho
del ratn y la opcin View code del men contextual. Este proceso nos llevar al cuadro de la imagen siguiente.

Pgina 29 de 159

Curso Visual Basic 5.0

Lo que tendremos que hacer es seleccionar el evento que necesitemos de la seccin Proc, en nuestro caso mousemove y a
continuacin teclear el codigo correspondiente: La instruccin print visualiza un texto en el formulario y si le ponemos
text1.text le decimos que nos muestre la propiedad Text del control Text1 que ese ser el nombre que tendr el control por
defecto si no lo hemos cambiado en la propiedad name.
Al ejecutar esta pequea aplicacin pulsando F5 observaremos como aparece en el formulario lo que hayamos tecleado en
el control cada vez que movemos el raton sobre el Textbox.
Podemos modificar el programa para que responda a cualquier otro evento sin ms que seleccionarlo en la seccin Proc e
introduciendo el codigo que sea necesario.

Label
Este control es tambin uno de los ms utilizados, aunque su utilidad queda restringida a la visualizacin de datos en el
mismo, no permitiendo la introduccin de datos por parte del usuario.
La forma de utilizarlo es similar a la del control anterior, dibujar el control en el formulario con el tamao que queramos y
asignarle un texto en tiempo de diseo o de ejecucin esta vez sin utilizar la propiedad text puesto que no la incorpora, sino
utilizando la propiedad caption.
Este control sirve para mostrar mensajes en nuestro formulario que orienten al usuario sobre la utilidad de los dems
controles que tengamos en la aplicacin o para indicarnos acciones que podemos realizar. En el ejemplo anterior donde
apareca un textbox en el formulario, hubiera quedado mejor con un mensaje aclaratorio contenido en un control label:

PROPIEDADES

Caption: Es el texto que contendr el control.


Alignment: Alineacin del texto contenido en el control, no necesita que est activada ninguna
otra propiedad.
BorderStyle: Si queremos que aparezca un borde alrededor del control activaremos esta
propiedad.
Para este control no se suelen utilizar los eventos ya que su contenido suele cambiar poco a lo largo de la ejecucin de la
aplicacin. De todas formas los eventos son casi los mismos del control textbox excepto que no dispone de los eventos
GetFocus y LostFocus ya que a este control no se le puede dar el enfoque.

Pgina 30 de 159

Curso Visual Basic 5.0


En la parte final de este capitulo veremos un ejemplo donde se muestra el funcionamiento de todos los controles que vamos
a ir viendo.Por ahora a ver si conseguis que ahora el mensaje no aparezca en el formulario sino en un segundo label situado
en el formulario, dejando un control label que muestre el mensaje aclaratorio que hemos visto antes.

CommandButton
Este control es el tpico botn que aparece en todas las aplicaciones y que al hacer click sobre l nos permite realizar alguna
operacin concreta, normalmente Aceptar o Cancelar. Aunque segn el cdigo que le asociemos podremos realizar las
operaciones que queramos.
En el ejemplo anterior podemos aadir un control de este tipo para salir de la aplicacin sin tener pulsar sobre la equis de la
esquina superior derecha.

Pero slo con introducir un control de este tipo con el texto salir que se introduce a traves de la propiedad caption no basta.
Habr que asociarle un cdigo que nos permita salir de la aplicacin en el evento adecuado. Y el evento por excelencia de
este control es click. As pues accederemos al cdigo del control y la sentencia nos permitir salir de la aplicacin es End,
simplemente tecleamos esa palabra en el evento click y comprobar que realmente finalizaremos nuestra aplicacin al pulsar
sobre dicho botn.
PROPIEDADES

Caption: Aqui pondremos el letrero que queremos que apaezca en el botn: aceptar, cancelar,
salir, etc...
Enabled: Esta es una nueva propiedad, cuando su valor es true el botn funciona normalmente,
cuando su valor es false el boton se encuentra desactivado, no responde a los eventos
producidos sobre l y el texto aparece en un gris claro advirtiendonos de su estado. Podemos
utilizar esta propiedad para activar o desactivar un boton dependiendo del estado de otros
controles. Por ejemplo, en un boton Aceptar, no activarlo hasta que se haya introducido una
cantidad en un control textbox, ya que ese botn nos calcular el IVA de la cantidad.
EVENTOS

Click: Es el evento tipico de este control y el que ms se utiliza.


MouseMove: Como sabemos detecta el movimiento del raton sobre el control. Puede servir
para que aparezca un mensaje en un control Label que nos aporte informacin sobre la utilidad
del control ampliando el texto que hayamos colocado como caption del commandbutton.

OptionButton
Este control nos permite elegir una opcin entre varias de las que se nos plantean. Cada opcin ser un control optionbutton
diferente.
Facilita la introduccin de datos por parte del usuario:

Pgina 31 de 159

Curso Visual Basic 5.0

De todas las opciones que se nos ofrece, en este caso los 4 colores, slo podremos activar una. Si activamos cualquier otra
opcin, se desactivar automticamente la ltima que tenamos activada.
El marco que est alrededor de los 4 controles optionbutton se trata del control Frame
, es opcional, aunque es
conviente colocarlo siempre que hagamos uso de las opciones. No slo por motivos de presentacin sino porque de esta
manera podremos establecer grupos de controles optionbutton independientes en los que en cada grupo slo pueda haber
una opcion activada a la vez. Tambin, al mover el marco se movern los controles incluidos en l facilitndonos las
modificaciones.
Para que los controles Optionbutton queden englobados dentro de un control Frame, primero tendremos que colocar el
control Frame en el formulario con el tamao adecuado y despues ir colocando los controles Optionbutton dentro del
Frame.
Del control Frame la nica propiedad que nos interesar es caption, que es el texto que aparecer en el encabezado, en el
ejemplo anterior: colores.
PROPIEDADES DE OPTIONBUTTON

Caption: El texto que aparecer al lado del control: Rojo, verde, etc...
Value: Es el valor que tendr el control: True si se encuentra activado y False si no lo est.
Para comprobar que opcion ha activado el usuario comprobaremos el estado de esta propiedad.
Alignment: Alineacin del texto respecto al control: Left Justify: el control aparece a la
izquierda del texto. Es el ejemplo anterior.Right Justify: el control aparece a la derecha del
texto.
Los eventos del control son los mismos que en anteriores controles, aunque no se suele asociar cdigo a los eventos de este
tipo de controles, sino nicamente conocer el valor que tienen: true o false.

3.1.1- APLICACION DE EJEMPLO


Para practicar con los controles que hemos visto vamos a realizar una pequea aplicacin que consistir en realizar con 2
nmeros que introduzcamos, una operacin que seleccionemos y mostrar el resultado.
El formulario donde estarn todos los controles es el siguiente:

Pgina 32 de 159

Curso Visual Basic 5.0

La propiedad Caption de cada uno de los controles es la que se muestra en el formulario.


He modificado la propiedad Name de cada control para que al utilizarlos desde el codigo sepamos cual es el control con el
que trabajamos:
Los controles TextBox tienen los nombres: Num1, Num2 y Resul.
Los controles Optionbutton tienen cada uno de ellos el mismo nombre que su caption
Los controles CommandButton tienen los nombres: Calcular, Limpiar y Salir.
A los controles Label y al Frame no have falta cambiarles el nombre.
Lo que habr que hacer ahora es asociar codigo a cada uno de los botones que es de donde se van a realizar las operaciones:
Para el botn Calcular que es el que nos mostrar el resultado segn la operacin seleccionada, he utilizado la
instruccin If Then Else que vimos en el captulo anterior:

El botn Limpiar Datos nos va a servir para borrar de una forma rpida los datos introducidos por el usuario y el
resultado preparando los controles para introducir nuevos datos. El cdigo que tendremos que introducir es muy
simple:

Pgina 33 de 159

Curso Visual Basic 5.0

El botn Salir nicamente contendr la sentencia End.

4 -Formularios.
Los formularios tienen sus propios eventos, propiedades y mtodos con los que se puede controlar su apariencia y
comportamiento.
El primer paso para disear un formulario consiste en establecer sus propiedades. Puede establecer las propiedades de un
formulario en tiempo de diseo en la ventana Propiedades o en tiempo de ejecucin, escribiendo cdigo.
Nota En tiempo de diseo, que es cualquier momento mientras est desarrollando una aplicacin en el entorno de
Visual Basic, se trabaja con formularios y controles, se establecen propiedades y se escribe cdigo para los eventos.
Tiempo de ejecucin es cualquier momento mientras se ejecuta realmente la aplicacin y se interacta con ella como lo
hara un usuario.

4.1- Estableciendo las Propiedades ms importantes de los formularios.


Muchas propiedades de un formulario afectan a su apariencia fsica. La propiedad Caption determina el texto que
muestra la barra de ttulo del formulario y la propiedad Icon establece el icono que aparece cuando se minimiza un
formulario. Las propiedades MaxButton y MinButton determinan si el formulario se puede maximizar o minimizar.
Cambiando la propiedad BorderStyle puede controlar el comportamiento de cambio de tamao del formulario.
Las propiedades Height y Width determinan el tamao inicial de un formulario, mientras que las propiedades Left y
Top determinan la ubicacin del formulario en relacin con la esquina superior izquierda de la pantalla. Con la
propiedad WindowState puede establecer si el formulario se inicia en estado maximizado, minimizado o normal.
La propiedad Name establece el nombre con el que har referencia al formulario en el cdigo. De forma
predeterminada, cuando se agrega un formulario por primera vez a un proyecto, su nombre es Form1, Form2, etc. Es
conveniente establecer la propiedad Name a algo ms significativo, como frmEntry para un formulario de entrada de
pedidos.
La mejor manera de familiarizarse con las numerosas propiedades de los formularios es experimentar. Cambie algunas
propiedades de un formulario en la ventana Propiedades y ejecute la aplicacin para ver su efecto. Puede aprender ms
sobre cada propiedad si la selecciona y presiona F1 para ver Ayuda contextual.

4.2- Eventos y Mtodos de los formularios.


Como objetos que son, los formularios pueden ejecutar mtodos y responder a eventos.
El evento Resize de un formulario se desencadena siempre que se cambia el tamao de un formulario, ya sea por una
accin del usuario o a travs del cdigo. Esto permite realizar acciones como mover o cambiar el tamao de los
controles de un formulario cuando han cambiado sus dimensiones.
El evento Activate se produce siempre que un formulario se convierte en el formulario activo; el evento Deactivate se
produce cuando otro formulario u otra aplicacin se convierte en activo. Estos eventos son adecuados para iniciar o
finalizar acciones del formulario. Por ejemplo, en el evento Activate podra escribir cdigo para resaltar el texto de un

Pgina 34 de 159

Curso Visual Basic 5.0


determinado cuadro de texto; con el evento Deactivate podra guardar los cambios efectuados en un archivo o en una
base de datos.
Para hacer visible un formulario se invoca el mtodo Show:
Form2.Show
Para descargar un formulario (cerrarlo), se invoca al mtodo Unload:
Form2.Unload
Unload Me
Me significa el Formulario activo.
Para ocultar un formulario (pero dejarlo activo en memoria) se invoca al mtodo Hide:
Form2.Hide
Invocar el mtodo Show tiene el mismo efecto que establecer a True la propiedad Visible del formulario.
Muchos mtodos de un formulario implican texto o grficos. Los mtodos Print, Line, Circle y Refresh son tiles para
imprimir o dibujar directamente en la superficie de un formulario.

4.3- Establecer el formulario de arranque de la aplicacin.


De forma predeterminada, el primer formulario de la aplicacin es el formulario inicial. Cuando la aplicacin inicia la
ejecucin, se presenta este formulario (el primer cdigo que se ejecuta es el del evento Form_Initialize de dicho
formulario). Si quiere presentar un formulario diferente cuando se inicie la aplicacin, debe cambiar el formulario
inicial.
Para cambiar el formulario inicial
1.
2.
3.
4.

En el men Proyecto, elija Propiedades del proyecto.


Elija la ficha General.
En el cuadro de lista Objeto inicial, seleccione el formulario que desee que sea el nuevo formulario inicial.
Elija Aceptar.

Inicio sin formulario inicial


Algunas veces puede desear que la aplicacin se inicie sin cargar ningn formulario. Por ejemplo, puede que desee
ejecutar cdigo que cargue un archivo de datos y despus presentar uno de entre varios formularios, segn el contenido
de dicho archivo. Puede hacerlo creando un procedimiento Sub llamado Main en un mdulo estndar, como en el
siguiente ejemplo:
Sub Main()
Dim intStatus As Integer
' Llamar a un procedimiento de funcin para comprobar el estado
' del usuario.
intStatus = GetUserStatus
' Mostrar un formulario inicial distinto segn el estado.
If intStatus = 1 Then
frmMain.Show
Else
frmPassword.Show
End If

Pgina 35 de 159

Curso Visual Basic 5.0


Este procedimiento tiene que ser un procedimiento Sub y no puede estar en un mdulo de formulario. Para establecer el
procedimiento Sub Main como objeto inicial, en el men Proyecto elija Propiedades del proyecto, seleccione la ficha
General y seleccione Sub Main en el cuadro Objeto inicial.

5 -Combo Box (lista combo)


Un control ComboBox combina las caractersticas de un control TextBox y un control ListBox; los usuarios pueden
introducir informacin en la parte del cuadro de texto o seleccionar un elemento en la parte de cuadro de lista del
control.
Para agregar o eliminar elementos en un control ComboBox, use el mtodo AddItem o RemoveItem. Establezca las
propiedades List, ListCount y ListIndex para permitir a un usuario tener acceso a los elementos de un control
ComboBox. Como alternativa, puede agregar elementos a la lista mediante la propiedad List en tiempo de diseo.
Nota Un evento Scroll ocurrir en un control ComboBox slo cuando se desplace el contenido de la parte desplegable
del ComboBox, no cada vez que cambie el contenido del ComboBox. Por ejemplo, si la parte desplegable de un
ComboBox contiene cinco elementos y el elemento superior est resaltado, no ocurrir un evento Scroll hasta que
presione seis veces la flecha hacia abajo (o una vez la tecla AV PG). Despus de eso, ocurrir un evento Scroll por cada
pulsacin de la tecla de flecha hacia abajo. Sin embargo, si despus presiona la tecla de flecha hacia arriba, no ocurrir
un evento Scroll hasta que presione seis veces la tecla de flecha hacia arriba (o una vez la tecla RE PG). Despus de eso,
cada vez que presione la tecla de flecha hacia arriba se producir un evento Scroll.
Eventos:
Evento Change
Evento Click
Evento DblClick
Evento DragDrop
Evento DragOver
Evento DropDown
Evento GotFocus
Eventos KeyDown y KeyUp
Evento KeyPress

Evento LostFocus
Evento OLECompleteDrag
Evento OLEDragDrop
Evento OLEDragOver
Evento OLEGiveFeedback
Evento OLESetData
Evento OLEStartDrag
Evento Scroll

Mtodos:
Mtodo AddItem
Mtodo Clear (Clipboard, ComboBox, ListBox)
Mtodo Drag
Mtodo Move
Mtodo OLEDrag

Mtodo Refresh
Mtodo RemoveItem
Mtodo SetFocus
Mtodo ShowWhatsThis
Mtodo ZOrder

Propiedades:
Propiedad Appearance
Propiedad ListIndex
Propiedades BackColor y ForeColor
Propiedad Locked
Propiedad Container
Propiedad MouseIcon
Propiedad DataChanged
Propiedad MousePointer
Propiedad DataField
Propiedad Name
Propiedad DragIcon
Propiedad NewIndex
Propiedad DragMode
Propiedad OLEDragMode
Propiedad Enabled
Propiedad OLEDropMode
Propiedad Font
Propiedad Parent
Propiedades FontBold, FontItalic, FontStrikethru y FontUnderline
Propiedad FontName
Propiedades SelLength, SelStart y SelText (Controles ActiveX)
Propiedad FontSize
Propiedad Sorted
Propiedades Height y Width
Propiedad Style
Propiedad HelpContextID
Propiedad TabIndex
Propiedad hWnd
Propiedad TabStop
Pgina 36 de 159

Curso Visual Basic 5.0


Propiedad Index (Control Array)
Propiedad IntegralHeight
Propiedad ItemData
Propiedades Left y Top
Propiedad List
Propiedad ListCount
Propiedades SelLength, SelStart y SelText

Propiedad Tag
Propiedad Text
Propiedad ToolTipText
Propiedad TopIndex
Propiedad Visible
Propiedad WhatsThisHelpID

6- List Box (lista).


Un control ListBox muestra una lista de elementos entre los cuales el usuario puede seleccionar uno o ms. Si el nmero
de elementos supera el nmero que puede mostrarse, se agregar automticamente una barra de desplazamiento al
control ListBox.
Si no se selecciona ningn elemento, el valor de la propiedad ListIndex ser -1. El primer elemento de la lista es
ListIndex 0 y el valor de la propiedad ListCount siempre es uno ms que el mayor valor de ListIndex.
Para agregar o eliminar elementos de un control ListBox, use el mtodo AddItem o RemoveItem. Establezca las
propiedades List, ListCount y ListIndex para permitir que un usuario tenga acceso a elementos del ListBox. Tambin
puede agregar elementos a la lista mediante la propiedad List en tiempo de diseo.
Eventos
Evento Click
Evento DblClick
Evento DragDrop
Evento DragOver
Evento GotFocus
Evento ItemCheck
Eventos KeyDown y KeyUp
Evento KeyPress
Evento LostFocus

Eventos MouseDown y MouseUp


Evento MouseMove
Evento OLECompleteDrag
Evento OLEDragDrop
Evento OLEDragOver
Evento OLEGiveFeedback
Evento OLESetData
Evento OLEStartDrag
Evento Scroll

Mtodos
Mtodo AddItem
Mtodo Clear (Clipboard, ComboBox, ListBox)
Mtodo Drag
Mtodo Move
Mtodo OLEDrag

Mtodo Refresh
Mtodo RemoveItem
Mtodo SetFocus
Mtodo ShowWhatsThis
Mtodo ZOrder

Propiedades
Propiedad Appearance
Propiedad MousePointer
Propiedades BackColor y ForeColor
Propiedad MultiSelect
Propiedad Columns (ListBox)
Propiedad Name
Propiedad Container
Propiedad NewIndex
Propiedad DataChanged
Propiedad OLEDragMode
Propiedad DataField
Propiedad OLEDropMode
Propiedad DataSource
Propiedad Parent
Propiedad DragIcon
Propiedad SelCount
Propiedad DragMode
Propiedad Selected
Propiedad Enabled
Propiedad Sorted
Propiedad Font
Propiedad Style
Propiedades FontBold, FontItalic, FontStrikethru y FontUnderline
Propiedad FontName
Propiedad TabStop
Propiedad FontSize
Propiedad Tag
Propiedades Height y Width
Propiedad Text
Propiedad HelpContextID
Propiedad ToolTipText
Pgina 37 de 159

Curso Visual Basic 5.0


Propiedad hWnd
Propiedad Index (Control Array)
Propiedad ItemData
Propiedades Left y Top
Propiedad List
Propiedad ListIndex

Propiedad TopIndex
Propiedad Visible
Propiedad WhatsThisHelpID
Propiedad TabIndex
Propiedad ListCount
Propiedad MouseIcon

7- Timer (cronmetro)
Un control Timer puede ejecutar cdigo a intervalos peridicos produciendo un evento Timer.
El control Timer, invisible para el usuario, resulta til para el procesamiento de fondo.
No puede establecer la propiedad Enabled de un Timer para una seleccin mltiple de controles que no sean controles
Timer.
No existe ningn lmite prctico en cuanto al nmero de controles Timer activos que puede tener en Visual Basic 5.0
ejecutndose en Windows 95 o en Windows NT.
Eventos:
Evento Timer

Propiedades:
Propiedad Enabled
Propiedad Index (Control Array)
Propiedad Interval
Propiedades Left y Top

Propiedad Name
Propiedad Parent
Propiedad Tag

8- Shape (figura).
Shape es un control grfico que se muestra como un rectngulo, un cuadrado, una elipse, un crculo, un rectngulo
redondeado o un cuadrado redondeado.
Utilice controles Shape en tiempo de diseo en lugar de o adems de invocar los mtodos Circle y Line en tiempo de
ejecucin. Puede dibujar un control Shape en un contenedor, pero no puede actuar como contenedor. El efecto de
establecer la propiedad BorderStyle depende del valor de la propiedad BorderWidth. Si BorderWidth no es 1 y
BorderStyle no es 0 6, BorderStyle se establece a 1.
Mtodos:
Mtodo Move
Mtodo Refresh

Mtodo ZOrder

Propiedades:
Propiedades BackColor y ForeColor
Propiedad BackStyle
Propiedad BorderColor
Propiedad BorderStyle
Propiedad BorderWidth
Propiedad Container
Propiedad DrawMode
Propiedad FillColor
Propiedad FillStyle

Propiedades Height y Width


Propiedad Index (Control Array)
Propiedades Left y Top
Propiedad Name
Propiedad Parent
Propiedad Shape
Propiedad Tag
Propiedad Visible

9- Line (lnea).
Pgina 38 de 159

Curso Visual Basic 5.0


Line es un control grfico que se muestra como una lnea horizontal, vertical o diagonal.
Puede utilizar un control Line en tiempo de diseo para dibujar lneas en formularios. En tiempo de ejecucin puede
utilizar un control Line en lugar del mtodo Line, o adems de l. Las lneas dibujadas con el control Line permanecen
en el formulario aunque la propiedad AutoRedraw sea False. Los controles Line pueden mostrarse en formularios, en
cuadros de imagen y en marcos. No puede utilizar el mtodo Move para mover un control Line en tiempo de ejecucin,
pero s se puede mover o cambiar de tamao alterando sus propiedades X1, X2, Y1 e Y2. El efecto de establecer la
propiedad BorderStyle depende del valor de la propiedad BorderWidth. Si BorderWidth no es 1 y BorderStyle no es
0 6, BorderStyle se establecer a 1.
Mtodos:

Mtodo Refresh
Mtodo ZOrder
Propiedades:
Propiedad BorderColor
Propiedad BorderStyle
Propiedad BorderWidth
Propiedad Container
Propiedad DrawMode
Propiedad Index (Control Array)

Propiedad Name
Propiedad Parent
Propiedad Tag
Propiedad Visible
Propiedades X1, Y1, X2 y Y2

10- Image (imagen)


Utilice el control Image para mostrar un grfico. Un control Image puede mostrar un grfico desde un mapa de bits, un
icono o un metarchivo, as como un metarchivo mejorado, un archivo JPEG o archivos GIF.
El control Image utiliza menos recursos del sistema y actualiza con ms rapidez que un control PictureBox, pero slo
admite un subconjunto de las propiedades, los eventos y los mtodos de PictureBox. Use la propiedad Stretch para
determinar si el grfico se escala para ajustarse al control o viceversa. Aunque puede colocar un control Image dentro de
un contenedor, un control Image no puede actuar como contenedor.
Eventos:
Evento Click
Evento DblClick
Evento DragDrop
Evento DragOver
Eventos MouseDown y MouseUp
Evento MouseMove
Mtodos:
Mtodo Drag
Mtodo Move
Mtodo OLEDrag

Evento OLECompleteDrag
Evento OLEDragDrop
Evento OLEDragOver
Evento OLEGiveFeedback
Evento OLESetData
Evento OLEStartDrag

Mtodo Refresh
Mtodo ShowWhatsThis
Mtodo ZOrder

Propiedades:
Propiedad Appearance
Propiedad BorderStyle
Propiedad Container
Propiedad DataChanged
Propiedad DataField
Propiedad DataSource
Propiedad DragIcon
Propiedad DragMode
Propiedad Enabled
Propiedades Height y Width

Propiedad MouseIcon
Propiedad MousePointer
Propiedad Name
Propiedad OLEDragMode
Propiedad OLEDropMode
Propiedad Parent
Propiedad Picture
Propiedad Stretch
Propiedad Tag
Propiedad ToolTipText
Pgina 39 de 159

Curso Visual Basic 5.0


Propiedad Index (Control Array)
Propiedades Left y Top

Propiedad Visible
Propiedad WhatsThisHelpID

11- Data (acceso a bases de datos)


Proporciona acceso a datos almacenados en bases de datos mediante uno de los tres tipos de objetos Recordset. El
control Data le permite desplazarse de un registro a otro, as como presentar y manipular datos de los registros en
controles enlazados. Sin un control Data los controles enlazados a datos (vinculados) de un formulario no pueden tener
acceso a los datos automticamente.
Puede realizar la mayora de las operaciones de acceso a datos utilizando el control Data sin escribir cdigo. Los
controles enlazados a datos vinculados a un control Data presentan automticamente los datos de uno o varios campos
del registro actual o, en algunos casos, de un conjunto de registros situado a ambos lados del registro actual. El control
Data realiza todas sus operaciones sobre el registro actual.
Si el control Data recibe instrucciones para desplazarse a un registro diferente, todos los controles enlazados pasan
automticamente los posibles cambios al control Data para que los guarde en la base de datos. Despus, el control Data
se desplaza al registro solicitado y pasa los datos del registro actual a los controles enlazados, en los que se presentan.
El control Data administra automticamente una serie de contingencias entre las que se incluyen los conjuntos de
registros vacos, la insercin de nuevos registros, la modificacin y actualizacin de registros existentes, y la
administracin de ciertos tipos de errores. Sin embargo, en aplicaciones ms sofisticadas es necesario interceptar algunas
condiciones de error que el control Data no puede administrar. Por ejemplo, si el motor de base de datos Microsoft Jet
tiene un problema al tener acceso al archivo de base de datos, no tiene el permiso adecuado o no puede ejecutar la
consulta, se producir un error interceptable. Si el error se produce antes de que se inicien los procedimientos de la
aplicacin o se trata de errores internos, se desencadenar el evento Error.

12- Controles enlazados


Los controles DBList, DBCombo, DBGrid y MSFlexGrid son capaces de administrar conjuntos de registros cuando
estn enlazados a un control Data. Todos estos controles permiten presentar o manipular varios registros a la vez.
Los controles incorporados Picture, Label, TextBox, CheckBox, Image, OLE, ListBox y ComboBox tambin son
controles enlazados a datos y se pueden enlazar a un nico campo de un Recordset administrado por un control Data.
En las ediciones Profesional y Empresarial se encuentran disponibles otros controles enlazados a datos como
MaskedEdit y RichTextBox; otros proveedores tambin ofrecen controles adicionales.

12.1 Funcionamiento
Una vez iniciada la aplicacin, Visual Basic utiliza las propiedades del control Data para abrir la base de datos
seleccionada, crear un objeto Database y crear un objeto Recordset. Las propiedades Database y Recordset del control
Data hacen referencia a los objetos Database y Recordset recin creados, que se pueden manipular de forma
independiente del control Data, con o sin controles enlazados. El control Data se inicializa antes del evento Form_Load
inicial del formulario en el que se encuentra. Si se producen errores durante esta fase de inicializacin, se produce un
error no interceptable.
Cuando Visual Basic utiliza el motor de base de datos Jet para crear un Recordset, no se pueden producir otras
operaciones o eventos de Visual Basic hasta que se termine la operacin. Sin embargo, otras aplicaciones basadas en
Windows pueden seguir en ejecucin mientras se est creando el Recordset. Si el usuario presiona CTRL+INTER mientras
el motor Jet est generando un Recordset, la operacin termina, se produce un error interceptable y la propiedad
Recordset del control Data se establece a Nothing. En tiempo de diseo, la segunda vez que se presiona CTRL+INTER
hace que Visual Basic presente la ventana
Depuracin.
Puede manipular el control Data con el mouse (ratn), desplazndose de un registro a otro, o al principio o al final del
Recordset. Las propiedades EOFAction y BOFAction determinan lo que ocurre cuando el usuario se desplaza al
principio o al final de un Recordset con el mouse. No puede establecer el enfoque en un control Data.
Pgina 40 de 159

Curso Visual Basic 5.0

12.2 Validacin
El evento Validate y la propiedad DataChanged se utilizan para realizar comprobaciones de ltima hora sobre los
registros que se van a escribir en la base de datos.

12.3 Objetos de acceso a datos


En los procedimientos puede utilizar los objetos de acceso a datos Database y Recordset creados por el control Data.
Cada objeto Database y Recordset tiene sus propias propiedades y mtodos, y puede escribir procedimientos que
utilicen dichas propiedades y mtodos para manipular sus datos.
Por ejemplo, el mtodo MoveNext de un objeto Recordset desplaza el registro actual al siguiente registro dentro del
Recordset. Para invocar este mtodo, podra utilizar el cdigo siguiente:
Data1.Recordset.MoveNext
El control Data puede tener acceso a cualquiera de los tres tipos de objetos Recordset del motor Jet versin 3.0. Si no
selecciona el tipo de conjunto de registros, se crea un Recordset de tipo dynaset.
En muchos casos, el tipo predeterminado y la configuracin del objeto Recordset creado son muy ineficientes. Es decir,
puede que no necesite un cursor actualizable totalmente desplazable de conjunto de claves para tener acceso a los datos.
Por ejemplo, un Recordset de tipo snapshot, de slo lectura y unidireccional se creara con ms rapidez que el cursor
predeterminado. Asegrese de elegir el tipo ms eficiente, as como las propiedades Exclusive, Options y ReadOnly
adecuadas a su situacin.
Para seleccionar un tipo de Recordset especfico, establezca la propiedad RecordsetType del control Data a:
RecordsetType
Valor
Constante
Table
0
vbRSTypeTable
Dynaset
1
vbRSTypeDynaset (Predeterminado)
Snapshot
2
vbRSTypeSnapshot

12.4 Ediciones Profesional y Empresarial


En lo que concierne al acceso a datos, la principal diferencia entre las ediciones de Aprendizaje, Profesional y
Empresarial de Visual Basic es la capacidad de crear nuevos objetos de acceso a datos. En la Edicin estndar no puede
declarar (con la palabra clave Dim) variables como objetos de acceso a datos dentro del cdigo. Esto significa que slo
el control Data puede crear objetos Database y Recordset.
En las ediciones Profesional y Empresarial de Visual Basic versin 5.0 puede crear un objeto Recordset y asignarlo a la
propiedad Recordset de un control Data. Cualquier control enlazado que est conectado al control Data permitir
manipular los registros del Recordset que ha creado. Asegrese de que las propiedades DataField de los controles
enlazados estn establecidas a nombres de campo vlidos dentro del nuevo Recordset.

12.5 Consultas almacenadas


Otra opcin importante al utilizar el control Data es la posibilidad de ejecutar consultas almacenadas. Si antes ha creado
un objeto QueryDef, el control Data puede ejecutarlo y crear un Recordset mediante las propiedades SQL, Connect y
otras del objeto QueryDef. Para ejecutar un QueryDef, establezca la propiedad RecordSource del control Data al
nombre del QueryDef y utilice el mtodo Refresh.
Si el QueryDef almacenado contiene parmetros, tiene que crear el Recordset y pasarlo al control Data.

12.6 Tratamiento de BOF/EOF


El control Data tambin puede administrar lo que ocurre cuando se encuentre con un Recordset sin registros.
Modificando la propiedad EOFAction puede programar el control Data para que pase al modo AddNew de forma
automtica.

Pgina 41 de 159

Curso Visual Basic 5.0


Puede programar el control Data para que se ajuste automticamente a la parte superior o inferior del formulario
primario utilizando la propiedad Align. En cualquiera de los casos, el control Data cambia de tamao horizontalmente
para llenar todo el ancho de su formulario primario, siempre que ste cambie de tamao.
Eventos:
Evento DragDrop
Evento DragOver
Evento Error
Eventos MouseDown, MouseUp
Evento MouseMove
Evento OLECompleteDrag
Evento OLEDragDrop
Mtodos
Mtodo Drag
Mtodo Move
Mtodo OLEDrag
Mtodo Refresh

Evento OLEDragOver
Evento OLEGiveFeedback
Evento OLESetData
Evento OLEStartDrag
Evento Reposition
Evento Resize
Evento Validate

Mtodo ShowWhatsThis
Mtodo UpdateControls
Mtodo UpdateRecord
Mtodo ZOrder

Propiedades
Propiedad Align
Propiedad FontSize
Propiedad Appearance
Propiedades Height, Width
Propiedades BackColor, ForeColor
Propiedad Index (Matriz de controles)
Propiedad BOFAction, EOFAction
Propiedades Left, Top
Propiedad Caption
Propiedad MouseIcon
Propiedad Connect
Propiedad MousePointer
Propiedad Database
Propiedad Name
Propiedad DatabaseName
Propiedad OLEDropMode
Propiedad DefaultCursorType
Propiedad Options
Propiedad DefaultType
Propiedad Parent
Propiedad DragIcon
Propiedad ReadOnly (Aceso de datos)
Propiedad DragMode
Propiedad Recordset
Propiedad EditMode
Propiedad RecordsetType
Propiedad Enabled
Propiedad RecordSource
Propiedad Exclusive
Propiedad Tag
Propiedad Font
Propiedad ToolTipText
Propiedades FontBold, FontItalic, FontStrikethru, FontUnderline
Propiedad FontName
Propiedad WhatsThisHelpID
Propiedad Visible

13 -Eventos ms importantes de los controles estndares.


13.1-Change
Aplicable a:
Control ComboBox, Controles HScrollBar y VScrollBar, Control Label, Control PictureBox, Control TextBox
Indica que el contenido de un control ha cambiado. Cmo y cundo ha ocurrido este evento vara segn el control:
ComboBox: cambia el texto de la parte de cuadro de texto del control. Ocurre slo si la propiedad Style est
establecida a 0 (Dropdown Combo) o 1 (Simple Combo) y el usuario cambia el texto o usted cambia la
configuracin de la propiedad Text mediante cdigo.

Pgina 42 de 159

Curso Visual Basic 5.0

DirListBox: cambia el directorio seleccionado. Ocurre cuando el usuario hace doble clic en un nuevo directorio o
cuando usted cambia la configuracin de la propiedad Path mediante cdigo.
DriveListBox: cambia la unidad seleccionada. Ocurre cuando el usuario selecciona una nueva unidad o cuando
usted cambia la configuracin de la propiedad Drive mediante cdigo.
HScrollBar y VScrollBar (barras de desplazamiento horizontal y vertical): mueven la parte de cuadro de
desplazamiento de la barra de desplazamiento. Ocurre cuando el usuario desplaza o cuando usted cambia la
configuracin de la propiedad Value mediante cdigo.
Label: cambia el contenido del control Label. Ocurre cuando un vnculo DDE actualiza los datos o cuando usted
cambia la configuracin de la propiedad Caption mediante cdigo.
PictureBox: cambia el contenido del control PictureBox. Ocurre cuando un vnculo DDE actualiza los datos o
cuando usted cambia la configuracin de la propiedad Picture mediante cdigo.
TextBox: cambia el contenido del cuadro de texto. Ocurre cuando un vnculo DDE actualiza los datos, cuando un
usuario cambia el texto o cuando usted cambia la configuracin de la propiedad Text mediante cdigo.

Sintaxis
Private Sub objeto_Change([ndice As Integer])
La sintaxis del evento Change consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
ndice Un entero que identifica nicamente a un control si est en una matriz de controles.
Comentarios
El procedimiento del evento Change puede sincronizar o coordinar la presentacin de datos entre controles. Por ejemplo,
puede utilizar un procedimiento de evento Change de una barra de desplazamiento para actualizar la configuracin de la
propiedad Value de la barra de desplazamiento de un control TextBox. O bien, puede utilizar un procedimiento de
evento Change para mostrar datos y frmulas en un rea de trabajo y los resultados en otra rea.
Los procedimientos de evento Change son tambin tiles para actualizar propiedades de controles del sistema de
archivos (DirListBox, DriveListBox y FileListBox). Por ejemplo, puede actualizar la configuracin de la propiedad
Path para que un control DirListBox refleje un cambio en la configuracin de la propiedad Drive de un control
DriveListBox.
Nota Un procedimiento de evento Change puede algunas veces causar un evento en cascada. Esto ocurre cuando el
procedimiento de evento Change del control altera el contenido del control, por ejemplo, estableciendo una propiedad en
el cdigo que determina el valor del control, como el valor de la propiedad Text para un control TextBox. Para impedir
un evento en cascada:
Si es posible, evite escribir un procedimiento de evento Change para un control que altere el contenido de ese
control. Si escribe un procedimiento as, asegrese de establecer un indicador que impida cambios posteriores
mientras el cambio actual est en curso.
Evite crear dos o ms controles cuyos procedimientos de evento Change se vean afectados entre s, por ejemplo, dos
controles TextBox que se actualicen entre s durante sus eventos Change.
Evite utilizar una funcin o una instruccin MsgBox en este evento para los controles HScrollBar y VScrollBar.

Ejemplo del evento Change


Este ejemplo muestra la configuracin numrica de la propiedad Value de una barra de desplazamiento horizontal en un
control TextBox. Para probar este ejemplo, cree un formulario con un control TextBox y un control HScrollBar y
despus pegue el cdigo en la seccin Declaraciones de un formulario que contenga una barra de desplazamiento
horizontal (control HScrollBar) y un control TextBox. Presione F5 y haga clic en la barra de desplazamiento horizontal.
Private Sub Form_Load ()
HScroll1.Min = 0
HScroll1.Max = 1000
HScroll1.LargeChange = 100
HScroll1.SmallChange = 1
End Sub

' Establece Min.


' Establece Max.
' Establece LargeChange.
' Establece SmallChange.
Pgina 43 de 159

Curso Visual Basic 5.0


Private Sub HScroll1_Change ()
Text1.Text = HScroll1.Value
End Sub

13.2-Click
Aplicable a:
Control CheckBox, Control ComboBox, Control CommandButton, Objeto Form, Control Frame, Control Image,
Control Label, Control ListBox, Control Menu, Control OptionButton, Control PictureBox, Control TextBox.
Ocurre cuando el usuario presiona y suelta un botn del mouse (ratn) en un objeto. Tambin puede ocurrir cuando se
cambia el valor de un control.
Para un objeto Form, este evento ocurre cuando el usuario hace clic en un rea en blanco o en un control desactivado.
Para un control, este evento ocurre cuando el usuario:
Hace clic en un control con el botn primario o secundario del mouse. Con un control CheckBox,
CommandButton, ListBox o OptionButton, el evento Click slo ocurre cuando el usuario hace clic con el botn
primario del mouse.
Selecciona un elemento de un control ComboBox o ListBox, ya sea presionando las teclas de direccin o haciendo
clic con el botn del mouse.
Presiona la BARRA ESPACIADORA cuando un control CommandButton, OptionButton o CheckBox tiene el
enfoque.
Presiona ENTRAR cuando un formulario tiene un control CommandButton con su propiedad Default establecida
a True.
Presiona ESC cuando un formulario tiene un botn Cancelar, un control CommandButton con su propiedad
Cancel establecida a True.
Presiona una tecla de acceso para un control. Por ejemplo, si el ttulo de un control CommandButton es "&Ir", al
presionar ALT+I se desencadena este evento.
Tambin puede desencadenar el evento Click en el cdigo si:
Establece la propiedad Value de un control CommandButton a True.
Establece la propiedad Value de un control OptionButton a True.
Cambia el valor de la propiedad Value de un control CheckBox.
Sintaxis
Private Sub Form_Click( )
Private Sub objeto_Click([ndice As Integer])
La sintaxis del evento Click consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
ndice Un entero que identifica nicamente a un control si est en una matriz de controles.
Comentarios
Por lo general se adjunta un procedimiento de evento Click a un control CommandButton, un objeto Menu o un
control PictureBox para realizar comandos y acciones similares a comandos. Para los dems controles aplicables, utilice
este evento para desencadenar acciones como respuesta a un cambio en el control.
Puede utilizar la propiedad Value de un control para comprobar el estado del control desde el cdigo. Hacer clic en un
control genera los eventos MouseDown y MouseUp adems del evento Click. El orden en que ocurren estos tres eventos
vara de un control a otro. Por ejemplo, para los controles ListBox y CommandButton, los eventos ocurren en este
orden: MouseDown, Click, MouseUp. Pero para los controles FileListBox, Label o PictureBox, los eventos ocurren en
este otro orden: MouseDown, MouseUp y Click. Cuando est adjuntando procedimientos para estos eventos
relacionados, asegrese de que sus acciones no entran en conflicto. Si el orden de los eventos es importante en la
aplicacin, pruebe el control para determinar el orden de los mismos.
Pgina 44 de 159

Curso Visual Basic 5.0


Nota Para distinguir entre los botones primario, secundario y central del mouse, utilice los eventos MouseDown y
MouseUp.
Si hay cdigo en el evento Click, nunca se activar el evento DlbClick ya que de los dos eventos, Click es el primero
que se activa. Como resultado, el evento Click intercepta el clic del mouse, por lo que DblClick nunca se producir.

Ejemplo del Evento Click


En este ejemplo, cada vez que se hace clic en un control PictureBox se mueve diagonalmente por un formulario. Para
probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un control PictureBox
en la esquina inferior izquierda del mismo, despus presione F5 y haga clic en el control PictureBox.
Private Sub Picture1_Click ()
Picture1.Move Picture1.Left + 750, Picture1.Top - 550
End Sub

13.3- GotFocus
Aplicable a:
Control CheckBox, Control ComboBox, Control CommandButton, , Objeto Form Controles HScrollBar y VScrollBar,
Control ListBox, Control OptionButton, Control PictureBox, Control TextBox.
Ocurre cuando un objeto recibe el enfoque, ya sea mediante una accin del usuario, como tabular o hacer clic en el
objeto, o cambiando el enfoque en el cdigo mediante el mtodo SetFocus. Un formulario recibe el enfoque slo cuando
todos los controles visibles estn desactivados.
Sintaxis
Private Sub Form_GotFocus(
)
Private Sub objeto_GotFocus([ndice As Integer])
La sintaxis del evento GotFocus consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
ndice Un entero que identifica de manera nica a un control si est en una matriz de controles.
Comentarios
Normalmente, el procedimiento de evento GotFocus se utiliza para especificar las acciones que ocurren cuando un
control o un formulario recibe primero el enfoque. Por ejemplo, si adjunta un procedimiento de evento GotFocus a cada
control de un formulario puede guiar al usuario mostrndole instrucciones breves o mensajes en la barra de estado.
Tambin puede proporcionar avisos visuales activando, desactivando o mostrando otros controles que dependan del
control que tiene el enfoque.
Nota Un objeto puede recibir el enfoque slo si sus propiedades Enabled y Visible estn establecidas a True. Para
personalizar el interfaz de teclado en Visual Basic para mover el enfoque, establezca el orden de tabulacin o
especifique teclas de acceso para controles de un formulario.
Ejemplo del evento GotFocus
Este ejemplo muestra un mensaje en la barra de estado cuando un botn de un grupo OptionButton obtiene el enfoque.
Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga dos controles
OptionButton y un control Label. Establezca la propiedad Name de ambos controles OptionButton a OptionGroup y,
despus, presione F5 y haga clic en los controles OptionButton.
Private Sub Form_Load ()
Label1.AutoSize = True
Pgina 45 de 159

Curso Visual Basic 5.0


End Sub
Private Sub OptionGroup_GotFocus (Index As Integer)
Select Case Index
Case 0
Label1.Caption = "La opcin 1 tiene el enfoque."
Case 1
Label1.Caption = "La opcin 2 tiene el enfoque."
End Select
End Sub
Private Sub OptionGroup_LostFocus (Index As Integer)
Label1.Caption = ""
End Sub

13.4- KeyPress
Aplicable a:
Control CheckBox, Control ComboBox, Control CommandButton, Objeto Form Controles HScrollBar y VScrollBar,
Control ListBox, Control OptionButton, Control PictureBox, Control TextBox.
Ocurre cuando el usuario presiona y suelta una tecla.
Sintaxis
Private Sub Form_KeyPress(keyascii As Integer)
Private Sub objeto_KeyPress([ndice As Integer,]keyascii As Integer)
La sintaxis del evento KeyPress consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
ndice Un entero que identifica de manera nica a un control si est en una matriz de controles.
keyascii Un entero que devuelve un cdigo de tecla numrico ANSI estndar. keyascii se pasa por referencia;
al cambiarlo se enva un carcter diferente al objeto. Cambiar keyascii a 0 cancela la pulsacin de
tecla, de forma que el objeto no recibe ningn carcter.
Comentarios
El objeto que tiene el enfoque recibe el evento. Un formulario puede recibir el evento slo si no tiene controles visibles
y activados. Un evento KeyPress puede implicar a cualquier carcter imprimible del teclado, a la tecla CTRL combinada
con un carcter del alfabeto estndar o uno de los caracteres especiales, y la tecla ENTRAR o RETROCESO. Un
procedimiento de evento KeyPress es til para interceptar pulsaciones de teclas realizadas en un control TextBox o
ComboBox. Esto le permite comprobar inmediatamente la validez de las pulsaciones o el formato de los caracteres a
medida que se escriben. Cambiar el valor del argumento keyascii cambia el carcter mostrado.
KeyPress interpreta las maysculas y minsculas de cada carcter como cdigos de tecla distintos y, por tanto, como
caracteres diferentes.
Nota El nmero ANSI para la combinacin de teclado CTRL+@ es 0. Puesto que Visual Basic reconoce un valor
keyascii de 0 como una cadena de longitud cero (""), evite utilizar CTRL+@ en sus aplicaciones.
Ejemplo del evento KeyPress
Este ejemplo convierte a maysculas el texto escrito en un control TextBox. Para probar este ejemplo, pegue el cdigo
en la seccin Declaraciones de un formulario que contenga un control TextBox y, despus, presione F5 y escriba algo en
el control TextBox.

Pgina 46 de 159

Curso Visual Basic 5.0


Private Sub Text1_KeyPress (KeyAscii As Integer)
Char = Chr(KeyAscii)
KeyAscii = Asc(UCase(Char))
End Sub

13.5- Load
Aplicable a:
Objeto Form.
Ocurre cuando se carga un formulario. Para un formulario de inicio, ocurre cuando una aplicacin se inicia como
resultado de una instruccin Load o como resultado de una referencia a una propiedad o control de un formulario
descargado.
Sintaxis
Private Sub Form_Load( )
Private Sub MDIForm_Load( )
Comentarios
Normalmente utiliza un procedimiento de evento Load para incluir cdigo de inicializacin para un formulario; por
ejemplo, cdigo que especifica los valores predeterminados de los controles, indica el contenido que se va a cargar en
controles ComboBox o ListBox e inicializa variables a nivel del formulario.
El evento Load ocurre tras el evento Initialize.
Nota Cuando cree procedimientos para eventos relacionados, como Activate, GotFocus, Paint y Resize, asegrese de
que sus acciones no entran en conflicto y no producen eventos recursivos.
Ejemplo del evento Load
Este ejemplo carga elementos en un control ComboBox cuando se carga un formulario. Para probar este ejemplo, pegue
el cdigo en la seccin Declaraciones de un formulario que contenga un control ComboBox y despus presione F5.
Private Sub Form_Load ()
Combo1.AddItem "Mozart"
Combo1.AddItem "Beethoven"
Combo1.AddItem "Rock 'n Roll"
Combo1.AddItem "Reggae"
Combo1.ListIndex = 2
End Sub

' Agrega elementos a la lista.

' Establece la seleccin predeterminada.

13.6- LostFocus
Aplicable a
Control CheckBox, Control ComboBox, Control CommandButton, Objeto Form Controles HScrollBar y VScrollBar,
Control ListBox, Control OptionButton, Control PictureBox, Control TextBox.
Ocurre cuando un objeto pierde el enfoque, ya sea por una accin del usuario, como tabular o hacer clic en otro objeto, o
bien mediante un cambio del enfoque en el cdigo con el mtodo SetFocus.
Sintaxis
Private Sub Form_LostFocus( )
Private Sub objeto_LostFocus([ndice As Integer])

Pgina 47 de 159

Curso Visual Basic 5.0


La sintaxis del evento LostFocus consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
ndice Un entero que identifica de manera nica a un control si est en una matriz de controles.
Comentarios
Un procedimiento de evento LostFocus resulta especialmente til para comprobar y validar actualizaciones. Utilizar
LostFocus puede hacer que la validacin tenga lugar conforme el usuario mueve el enfoque del control. Otro uso para
este tipo de procedimiento de evento es activar, desactivar, ocultar y mostrar otros objetos, como en un procedimiento de
evento GotFocus. Tambin puede invertir o cambiar condiciones que estableci en el procedimiento de evento GotFocus
del objeto.

Ejemplo del evento LostFocus


Este ejemplo cambia el color de un control TextBox cuando recibe o pierde el enfoque (se selecciona con el mouse o la
tecla TAB) y muestra el texto apropiado en el control Label. Para probar este ejemplo, pegue el cdigo en la seccin
Declaraciones de un formulario que contenga dos controles TextBox y un control Label y, despus, presione F5 y mueva
el enfoque entre Text1 y Text2.
Private Sub Text1_GotFocus ()
' Muestra el enfoque en rojo.
Text1.BackColor = RGB(255, 0, 0)
Label1.Caption = "Text1 tiene el enfoque."
End Sub
Private Sub Text1_LostFocus ()
' Muestra la prdida del enfoque en azul.
Text1.BackColor = RGB(0, 0, 255)
Label1.Caption = "Text1 no tiene el enfoque."
End Sub

13.7- MouseMove
Aplicable a:
Control CheckBox, Control CommandButton, Control Data, Objeto Form, Control Frame, Control Image, Control
Label, Control ListBox, Control OptionButton, Control PictureBox, Control TextBox.
Ocurre cuando el usuario mueve el mouse.
Sintaxis
Private Sub Form_MouseMove(botn As Integer, mays As Integer, x As Single, y As Single)
Private Sub MDIForm_MouseMove(botn As Integer, mays As Integer, x As Single, y As Single)
Private Sub objeto_MouseMove([ndice As Integer,] botn As Integer, mays As Integer, x As Single, y As Single)
La sintaxis del evento MouseMove consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
ndice Un entero que identifica de manera nica a un control si est en una matriz de controles.
botn Un entero que corresponde al estado de los botones del mouse en el cual un bit se establece si el botn est
presionado. El argumento botn es un campo de bit con los bits correspondientes al botn primario (bit 0), al botn
secundario (bit 1) y al botn central (bit 2). Estos bits corresponden a los valores 1, 2 y 4, respectivamente. Indica el estado

Pgina 48 de 159

Curso Visual Basic 5.0


completo de los botones del mouse; alguno, todos o ninguno de estos tres bits puede estar establecido, lo que indica que
algunos, todos o ninguno de los botones est presionado.
mays Un entero que corresponde al estado de las teclas MAYS, CTRL y ALT. Un bit est establecido si la tecla est
presionada. El argumento mays es un campo de bits con los bits menos significativos correspondientes a la tecla MAYS
(bit 0), CTRL (bit 1) y ALT (bit 2 ). Estos bits corresponden a los valores 1, 2 y 4, respectivamente. El argumento mays
indica el estado de estas teclas. Alguno, todos o ninguno de los bits puede estar establecido, lo que indica que alguna, todas
o ninguna de las teclas est presionada. Por ejemplo, si se presionaron las teclas CTRL y ALT, el valor de shift sera 6.
x, y
Un nmero que especifica la ubicacin actual del puntero del mouse. Los valores x e y siempre se expresan en
trminos del sistema de coordenadas establecido por las propiedades ScaleHeight, ScaleWidth, ScaleLeft y ScaleTop del
objeto.
Comentarios
El evento MouseMove se genera continuamente a medida que el puntero del mouse se mueve por los objetos. A menos
que otro objeto haya capturado el mouse, un objeto reconoce un evento MouseMove siempre que la posicin del mouse
est dentro de sus bordes.
Ejemplo del evento MouseMove
Este ejemplo muestra una aplicacin de dibujo simple. El procedimiento de evento MouseDown funciona con un
procedimiento MouseMove relacionado para activar el dibujo cuando est presionado cualquier botn del mouse. El
procedimiento de evento MouseUp desactiva el dibujo. Para probar este ejemplo, pegue el cdigo en la seccin
Declaraciones de un formulario, despus presione F5, haga clic en el formulario y mueva el mouse mientras est
presionado el botn del mismo.
Dim PaintNow As Boolean
' Declara una variable.
Private Sub Form_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single)
PaintNow = True ' Activa el dibujo.
End Sub
Private Sub Form_MouseUp (Button As Integer, X As Single, Y As Single)
PaintNow = False
' Desactiva el dibujo.
End Sub
Private Sub Form_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single)
If PaintNow Then
PSet (X, Y)
' Dibuja un punto.
End If
End Sub
Private Sub Form_Load ()
DrawWidth = 10
' Utiliza un pincel ms ancho.
ForeColor = RGB(0, 0, 255)
' Establece el color de dibujo.
End Sub

13.8- Timer
Aplicable a:
Control Timer
Ocurre cuando ha transcurrido un intervalo preestablecido para un control Timer. La frecuencia del intervalo se
almacena en la propiedad Interval del control, que especifica el tiempo en milisegundos.

Pgina 49 de 159

Curso Visual Basic 5.0


Sintaxis
Private Sub objeto_Timer([ndice As Integer])
La sintaxis del evento Timer consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
ndice Un entero que identifica de manera nica a un control si est en una matriz de controles.
Comentarios
Utilice este procedimiento de evento para indicar a Visual Basic qu hacer cada vez que se agote el intervalo de tiempo
de un control Timer. Cuando est trabajando con el evento Timer:
La propiedad Interval especifica el intervalo entre los eventos Timer, en milisegundos.

Siempre que la propiedad Enabled del control Timer est establecida a True y la propiedad Interval sea mayor
que 0, el evento Timer espera durante el periodo especificado en la propiedad Interval.

Ejemplo del evento Timer


Este ejemplo muestra un reloj digital. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un
formulario que contenga un control Label y un control Timer y, despus, presione F5.
Private Sub Form_Load ()
Timer1.Interval = 1000
End Sub

' Establece el intervalo de Timer.

Private Sub Timer1_Timer ()


Label1.Caption = Time
End Sub

' Actualiza la presentacin de la hora.

Este ejemplo mueve un control PictureBox por un formulario. Para probar este ejemplo, pegue el cdigo en la seccin
Declaraciones de un formulario que contenga un control Timer y un control PictureBox y, despus, presione F5. Si
desea obtener un efecto visual mejor puede asignar un mapa de bits al control PictureBox mediante la propiedad
Picture.
Dim DeltaX, DeltaY As Integer
' Declara variables.
Private Sub Timer1_Timer ()
Picture1.Move Picture1.Left + DeltaX, Picture1.Top + DeltaY
If Picture1.Left < ScaleLeft Then DeltaX = 100
If Picture1.Left + Picture1.Width > ScaleWidth + ScaleLeft Then
DeltaX = -100
End If
If Picture1.Top < ScaleTop Then DeltaY = 100
If Picture1.Top + Picture1.Height > ScaleHeight + ScaleTop Then
DeltaY = -100
End If
End Sub
Private Sub Form_Load ()
Timer1.Interval = 1000 ' Establece el intervalo.
DeltaX = 100
' Inicializa variables.
DeltaY = 100
End Sub

Pgina 50 de 159

Curso Visual Basic 5.0

13.9- Unload
Aplicable a:
Objeto Form.
Ocurre cuando un formulario est a punto de quitarse de la pantalla. Cuando ese formulario se vuelve a cargar, el
contenido de todos sus controles se reinicializa. Este evento se desencadena porque un usuario cierra el formulario
mediante el comando Cerrar del men Control o una instruccin Unload.
Sintaxis
Private Sub objeto_Unload(cancelar As Integer)
La sintaxis del evento Unload consta de las siguientes partes:
Parte Descripcin
objeto
Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
cancelar Un entero que determina si el formulario se quita de la pantalla. Si cancelar es 0, el formulario se quita.
Establecer cancelar a cualquier valor distinto de cero impide que el formulario se quite.
Comentarios
Establecer cancelar a un valor distinto de cero impide que el formulario se quite, pero no detiene los dems eventos,
como la salida del entorno operativo Microsoft Windows. Utilice el evento QueryUnload para detener la salida de
Windows.
Utilice un procedimiento de evento Unload para comprobar si el formulario se debe descargar o para especificar
acciones que desea que tengan lugar cuando se descargue el formulario. Tambin puede incluir cualquier cdigo de
validacin a nivel del formulario que pueda necesitar para cerrar el formulario o guardar los datos en un archivo.
El evento QueryUnload ocurre antes que el evento Unload. El evento Unload ocurre antes que el evento Terminate.
El evento Unload puede estar causado por la utilizacin de la instruccin Unload o porque el usuario elija el comando
Cerrar del men Control del formulario, salga de la aplicacin con el botn Finalizar tarea de la Lista de tareas, o
salga del entorno operativo Microsoft Windows mientras la aplicacin se est ejecutando.
Ejemplo del evento Unload
Este ejemplo muestra un procedimiento simple para cerrar un formulario mientras se avisa al usuario con varios cuadros
de mensajes. En una aplicacin real, puede agregar llamadas a procedimientos Sub de propsito general que emulen el
proceso de los comandos Salir, Guardar y Guardar como del men Archivo de Visual Basic. Para probar este
ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario y, despus, presione F5. Una vez que se muestre
el formulario, presione ALT+F4 para cerrar el formulario.
Private Sub Form_Unload (Cancel As Integer)
Dim Msg, Response
' Declara variables.
Msg = "Desea guardar los datos antes de cerrar?"
Response = MsgBox(Msg, vbQuestion + vbYesNoCancel, "Dilogo Cerrar")
Select Case Response
Case vbCancel ' No se permite cerrar.
Cancel = -1
Msg = "Se ha cancelado el comando."
Case vbYes
' Introduzca cdigo para guardar los datos aqu.
Msg = "Datos guardados."'
Case vbNo
Msg = "Datos no guardados."
End Select
MsgBox Msg, vbOKOnly, "Confirmacin" ' Mostrar mensaje.
End Sub
Pgina 51 de 159

Curso Visual Basic 5.0

13.10- QueryUnload
Aplicable a:
Objeto Form y Coleccin Forms, Objeto MDIForm
Ocurre antes de que se cierre un formulario o una aplicacin.
Sintaxis
Private Sub Form_QueryUnload(cancelar As Integer, modo_descarga As Integer)
Private Sub MDIForm_QueryUnload(cancelar As Integer, modo_descarga As Integer)
La sintaxis del evento QueryUnload consta de las siguientes partes:
Parte Descripcin
cancelar
Un entero. Establecer este argumento a cualquier valor distinto de 0 detiene el evento QueryUnload en
todos los formularios cargados y detiene el cierre del formulario y de la aplicacin.
modo_descarga Un valor o una constante que indica la causa del evento QueryUnload, tal y como se describe en Valores
que se pueden obtener.
Valores que se pueden obtener
El argumento modo_descarga devuelve los siguientes valores:
Constante
Valor
Descripcin
vbFormControlMenu 0
El usuario eligi el comando Cerrar del men Control del formulario.
vbFormCode
1
Se invoc la instruccin Unload desde el cdigo.
VbAppWindows
2
La sesin actual del entorno operativo Microsoft Windows est inalizando.
vbAppTaskManager
3
El Administrador de tareas de Microsoft Windows est cerrando la
aplicacin.
vbFormMDIForm
4
Un formulario MDI secundario se est cerrando porque el formulario MDI
tambin se est cerrando.
Comentarios
Normalmente este evento se utiliza para asegurarse de que no hay tareas sin finalizar en los formularios incluidos en una
aplicacin antes de que esa aplicacin se cierre. Por ejemplo, si un usuario no ha guardado todava algunos datos nuevos
de cualquier formulario, su aplicacin puede pedir al usuario que los guarde.
Cuando una aplicacin se cierra, puede utilizar los procedimientos de evento QueryUnload o Unload para establecer la
propiedad Cancel a True, deteniendo el proceso de cierre. Sin embargo, el evento QueryUnload ocurre en todos los
formularios antes de que se descargue ninguno de ellos y el evento Unload ocurre conforme se descarga cada
formulario.
Ejemplo del evento QueryUnload
En este ejemplo, al cerrar un formulario se consulta al operador si realmente quiere salir o no. Tambin se chequea si
est saliendo del formulario o de toda la aplicacin.
' Pegar en la seccin Declaraciones de Form1.
Private Sub Form_QueryUnload (Cancel As Integer, UnloadMode As Integer)
Dim Msg
' Declara la variable.
If UnloadMode > 0 Then
' Si sale de la aplicacin.
Msg = "Realmente desea salir de la aplicacin?"
Else
Pgina 52 de 159

Curso Visual Basic 5.0


' Si slo se cierra el formulario.
Msg = "Realmente desea cerrar el formulario?"
End If
' Si el usuario hace clic en el botn No, se detiene QueryUnload.
If MsgBox(Msg, vbQuestion + vbYesNo, Me.Caption) = vbNo Then Cancel = True
End Sub

13.11- Validate
Aplicable a:
Control Data
Se produce antes de que otro registro se convierta en el registro actual, antes del mtodo Update (excepto cuando se
guardan los datos con el mtodo UpdateRecord) y antes de una operacin Delete, Unload o Close.
Sintaxis
Private Sub objeto_Validate ([ndice As Integer,] accin As Integer, guardar As Integer)
La sintaxis del evento Validate consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a
ndice Identifica el control si se encuentra en una matriz de controles
accin Un entero que indica la operacin que provoca el evento, como se describe en Valores
guardar Una expresin booleana que especifica si los datos enlazados han cambiado, como se describe en Valores
Valores
Los valores de accin son:
Constante
vbDataActionCancel
vbDataActionMoveFirst
vbDataActionMovePrevious
vbDataActionMoveNext
vbDataActionMoveLast
vbDataActionAddNew
vbDataActionUpdate
vbDataActionDelete
vbDataActionFind
vbDataActionBookmark
vbDataActionClose
vbDataActionUnload

Valor
0
1
2
3
4
5
6
7
8
9
10
11

Descripcin
Cancela la operacin al salir de Sub
Mtodo MoveFirst
Mtodo MovePrevious
Mtodo MoveNext
Mtodo MoveLast
Mtodo AddNew
Operacin Update (no UpdateRecord)
Mtodo Delete
Mtodo Find
Se ha establecido la propiedad Bookmark
El mtodo Close
Se est descargando el formulario

Los valores de guardar son:


Valor Descripcin
True
Los datos enlazados han cambiado
False Los datos enlazados no han cambiado
Comentarios
El argumento guardar indica inicialmente si los datos enlazados han cambiado. Este argumento puede ser False si los
datos del bfer de copia han cambiado. Si guardar es True cuando este evento termina, se invocan los mtodos Edit y
UpdateRecord. El mtodo UpdateRecord slo guarda los datos de controles enlazados o del bfer de copia en los que
la propiedad DataChanged sea True.

Pgina 53 de 159

Curso Visual Basic 5.0


Este evento se produce incluso aunque no se hayan modificado los datos de los controles enlazados y aunque no existan
controles enlazados. Puede utilizar este evento para cambiar valores y actualizar datos. Tambin puede decidir guardar
los datos o detener cualquier accin que est provocando el evento y sustituirla por otra accin diferente.
Puede cambiar el argumento accin para cambiar una accin por otra. Puede cambiar los diversos mtodos Move y el
mtodo AddNew, que se pueden intercambiar libremente (cualquier Move en AddNew, cualquier Move en cualquier
otro Move o AddNew en cualquier Move). Cuando utilice AddNew, puede utilizar MoveNext y despus ejecutar otro
AddNew para examinar la propiedad EditMode y determinar si hay una operacin Edit o AddNew en curso. El intento
de sustituir AddNew o una accin Move en cualquier otra accin se pasa por alto o genera un error interceptable. Si se
establece accin a 0, se puede detener cualquier accin.
Dentro del cdigo de este evento puede comprobar los datos de cada control enlazado en el que DataChanged sea True.
Despus puede establecer DataChanged a False para evitar guardar dichos datos en la base de datos.
Durante este evento no puede utilizar ningn mtodo (como MoveNext) en el objeto Recordset subyacente.

Ejemplo de la propiedad DataChanged y del evento Validate


Este ejemplo ilustra una validacin de datos sencilla. En la tabla Authors de la base de datos Biblio.mdb hay dos
campos: Au_ID y Author. Como el valor de Au_ID se utiliza para identificar de forma nica al autor, este valor no se
debe cambiar. El ejemplo no permite que se modifique el campo Au_ID, que est enlazado a Text1.
Private Sub Data1_Validate (Action As Integer, Save As Integer)
If Text1.DataChanged Then
' Comprueba si los datos han cambiado.
MsgBox "No puede cambiar el nmero de Id."
Text1.DataChanged = False
' No guarda los datos modificados.
End If
...
End Sub

14- Mtodos ms importantes de los controles estndares.


14.1- AddItem
Aplicable a:
ControlComboBox, ControlListBox
Agrega un elemento a un control ListBox o ComboBox.
Sintaxis
objeto.AddItem elemento, ndice
La sintaxis del mtodo AddItem consta de las siguientes partes:
Parte
Descripcin
objeto
Requerido. Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a.
Elemento Requerido. expresin de cadena que especifica el elemento que se va a agregar al objeto.
ndice
Opcional. Entero que especifica la posicin dentro del objeto donde se insertan el elemento o la fila nuevos.
Para el primer elemento de un control ListBox o ComboBox, ndice es 0.
Comentarios
Si se especifica un valor vlido para ndice, elemento se sita en dicha posicin dentro del objeto. Si se omite ndice,
elemento se agrega en la posicin que le corresponda dentro del orden apropiado (si la propiedad Sorted es True) o al
final de la lista (si Sorted es False).
Los controles ListBox o ComboBox que estn enlazados a un control Data no aceptan el mtodo AddItem.
Pgina 54 de 159

Curso Visual Basic 5.0

Ejemplo del mtodo AddItem


Este ejemplo utiliza el mtodo AddItem para agregar 100 elementos a un cuadro de lista. Para probar este ejemplo,
pegue el cdigo en la seccin Declaraciones de un formulario con un control ListBox llamado List1, y despus presione
F5 y haga clic en el formulario.
Private Sub Form_Click ()
Dim Entry, I, Msg
' Declara variables.
Msg = "Haga clic en Aceptar para agregar 100 elementos a su cuadro de lista."
MsgBox Msg
' Muestra el mensaje.
For I = 1 To 100 ' Cuenta de 1 a 100.
Entry = "Entrada " & I
' Crea la entrada.
List1.AddItem Entry
' Agrega la entrada.
Next I
Msg = "Haga clic en Aceptar para quitar una de cada dos entradas."
MsgBox Msg
' Muestra el mensaje.
For I = 1 To 50
' Determina cmo quitar
List1.RemoveItem I
' cada elemento
Next I
Msg = "Haga clic en Aceptar para quitar todos los elementos del cuadro de lista."
MsgBox Msg
' Muestra el mensaje.
List1.Clear
' Limpia el cuadro de lista.
End Sub

14.2- AddNew (Objeto Recordset)


Aplicable a:
Objeto Recordset.
Crea un nuevo registro para un objeto Recordset de tipo Table o Dynaset.
Sintaxis
recordset.AddNew
El marcador de posicin del recordset es una variable de objeto que representa un objeto Recordset que se puede
actualizar al que puede agregar un registro nuevo.
Comentarios
Utilice el mtodo AddNew para crear y agregar un nuevo registro en el objeto Recordset llamado por el recordset. Este
mtodo establece los campos a los valores predeterminados y si no se especifican valores predeterminados, establece los
campos a Null (los valores predeterminados especificados pare el Recordset tipo Table).
Despus de modificar el nuevo registro, utilice el mtodo Update para guardar los cambios y agregar el registro al
Recordset. No se producirn cambios en la base de datos hasta que no se utilice el mtodo Update.
Precaucin Si ejecuta un AddNew y a continuacin realiza una operacin que desplace otro registro sin usar Update,
los cambios se perdern sin previo aviso. Adems, si cierra el Recordset o finaliza el procedimiento que declara el
Recordset o su objeto Database, el nuevo registro y los cambios realizados se descartarn sin previo aviso.
Si no se ha desplazado hasta el ltimo registro de su Recordset, los registros agregados a las tablas subyacentes pueden
incluirse, si se colocan ms all del registro activo. Sin embargo, si agrega un registro a un Recordset, el registro ser
visible en el Recordset y se incluir en la tabla subyacente donde estar visible para todos los nuevos objetos
Recordset.
La posicin del nuevo registro depende del tipo de Recordset:

Pgina 55 de 159

Curso Visual Basic 5.0

En un objeto Recordset tipo Dynaset, los registros se insertan al final del conjunto del Recordset,
independientemente de las reglas de clasificacin u orden que estuvieran en vigor cuando se abri el Recordset.
En un objeto Recordset tipo Table en el que su propiedad Index se haya establecido, los registros se insertan en el
lugar adecuado dentro del orden definido. Si no se ha establecido la propiedad Index, los nuevos registros se
insertarn al final del Recordset.

Ejemplo de mtodo AddNew


En este ejemplo se agrega un regisro nuevo a la tabla Agenda de la base de datos Clientes, tomando los datos desde un
formulario que contiene 3 cajas de texto (txtCodigo, txtNombre y txtDireccion) y un botn para agregar los datos
(cmdAgregar)
Private Sub cmdAgregar_Click ()
Dim wsp as WorkSpace
Dimensiono las variables
Dim Base as Database
Dim Agenda as Recordset
Set wsp = DbEngine.Workspaces(0)
Seteo el espacio de trabajo
Set Base = wsp.OpenDatabase (Clientes.mdb) Abro la base de Datos
Set Agenda = BasedeDatos.OpenRecordset(SELECT * FROM Agenda) Abro el Recordset
Agenda.AddNew
Agenda!Codigo = txtCodigo.Text
Agenda!Direccion = txtDireccion.Text
Agenda.Nombre = txtNombre.Text
Agenda.Update
Agenda.Close
Base.Close
Wsp.Close

Agrego un registro en blanco


Asigno los valores de las cajas de texto a los campos

Cierro el Recordset
Cierro la base de Datos
Cierro el espacio de trabajo

End Sub

14.3- CancelUpdate (Objeto Recordset)


Aplicanble a:
Objeto Recordset.
Cancela todas las actualizaciones pendientes del objeto Recordset.
Sintaxis
recordset.CancelUpdate tipo
La sintaxis del mtodo CancelUpdate consta de las siguientes partes.
Parte Descripcin
recordset
Una variable de objeto que representa el objeto Recordset en el que se cancelan las actualizaciones
pendientes.
Tipo
Opcional. Una constante que indica el tipo de actualizacin, como se especifica en Valores (slo espacios de
trabajo ODBCDirect).

Pgina 56 de 159

Curso Visual Basic 5.0


Comentarios
El mtodo CancelUpdate cancela todas las actualizaciones pendientes a causa de una operacin Edit o AddNew. Por
ejemplo, si un usuario llama al mtodo Edit o AddNew sin haber llamado anteriormente al mtodo Update,
CancelUpdate cancelar todos los cambios efectuados despus de llamar a Edit o AddNew.
Ejemplo del mtodo CancelUpdate
Al mismo ejemplo del Evento AddNew, le agregamos la opcin de confirmar o volver para atrs la actualizacin al
operador, segn la respuesta a una caja de mensajes.
Private Sub cmdAgregar_Click ()
Dim wsp as WorkSpace
Dimensiono las variables
Dim Base as Database
Dim Agenda as Recordset
Set wsp = DbEngine.Workspaces(0)
Seteo el espacio de trabajo
Set Base = wsp.OpenDatabase (Clientes.mdb) Abro la base de Datos
Set Agenda = BasedeDatos.OpenRecordset(SELECT * FROM Agenda) Abro el Recordset
Agenda.AddNew
Agenda!Codigo = txtCodigo.Text
Agenda!Direccion = txtDireccion.Text
Agenda.Nombre = txtNombre.Text

Agrego un registro en blanco


Asigno los valores de las cajas de texto a los campos

If MsgBox ("Agrega el nuevo registro, vbYesNo) = vbYes then


Agenda.Update
Else
Agenda.CancelUpdate
End If
Agenda.Close
Base.Close
Wsp.Close

Cierro el Recordset
Cierro la base de Datos
Cierro el espacio de trabajo

End Sub

14.4- Clear (Clipboard, Combo Box, List Box)


Aplicable a:
Objeto Control ComboBox, Control ListBoxBorra el contenido de los controles ListBox o ComboBox.
Sintaxis
objeto.Clear
El marcador de posicin objeto representa una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a.
Comentarios
Los controles ListBox o ComboBox que estn enlazados a un control Data no aceptan el mtodo Clear.
Ejemplo del mtodo Clear
Pgina 57 de 159

Curso Visual Basic 5.0


Este ejemplo utiliza el mtodo Clear para borrar todos los elementos de un cuadro de lista. Para probar este ejemplo,
pegue el cdigo en la seccin Declaraciones de un formulario con un control ListBox llamado List1, y despus presione
F5 y haga clic en el formulario.
Private Sub Form_Click ()
Dim Entry, I, Msg
' Declara variables.
Msg = "Haga clic en Aceptar para agregar 100 elementos a su cuadro de lista."
MsgBox Msg
' Muestra el mensaje.
For I = 1 To 100
' Cuenta de 1 a 100.
Entry = "Entrada " & I
' Crea la entrada.
List1.AddItem Entry
' Agrega la entrada.
Next I
Msg = "Haga clic en Aceptar para quitar cualquier otra entrada."
MsgBox Msg
' Muestra el mensaje.
For I = 1 To 50
' Determina cmo quitar
List1.RemoveItem I
' uno de cada dos
Next I
' elementos.
Msg = "Haga clic en Aceptar para quitar todos los elementos del cuadro de lista."
MsgBox Msg
' Muestra el mensaje.
List1.Clear
' Limpia el cuadro de lista.
End Sub

14.5- Close (Objetos Database, Recordset o Workspace)


Aplicable a:
Objeto Database, Objeto Recordset, Objeto Workspace.
Cierra un objeto DAO (Data Access Object).
Sintaxis
objeto.Close
El marcador de posicin objeto es una variable de objeto que representa un objeto Database, Recordset o Workspace
abierto.
Comentarios
Si el objeto Database, Recordset o Workspace llamado por objeto est cerrado cuando utiliza Close se produce un
error en tiempo de ejecucin.
Precaucin Si sale de un procedimiento que declara objetos Database o Recordset y la base de datos est cerrada, los
cambios no guardados se perdern, todas las transacciones pendientes se anularn y se anularn todas las modificaciones
pendientes de los datos.
Si intenta cerrar un objeto Connection o Database mientras hay algn objeto Recordset abierto, estos objetos
Recordset se cerrarn y las actualizaciones o modificaciones pendientes quedarn anuladas. Si intenta cerrar un objeto
Workspace mientras hay algn objeto Database abierto, los objetos Database se cerrarn, el cual cerrar sus objetos
Recordset.
La utilizacin del mtodo Close en un objeto Recordset original o duplicado no afecta al otro objeto Recordset.
Una alternativa al mtodo Close es establecer el valor de una variable de objeto a Nothing (Set dbsTemp = Nothing).
Ejemplo de mtodo Close
Son vlidos los ejemplos de los mtodos AddNew y CancelUpdate. (donde se cierran objetos Workspace, Database y
Recordset),
Pgina 58 de 159

Curso Visual Basic 5.0

14.6- Cls
Aplicable a:
Objeto Form, Control PictureBox.
Borra los grficos y el texto generados en tiempo de ejecucin de los controles Form o PictureBox.

Sintaxis
objeto.Cls
El marcador de posicin objeto representa una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a. Si
se omite objeto, se supone que el objeto es el control Form que tenga el enfoque.

Comentarios
Cls borra el texto y los grficos generados en tiempo de ejecucin por instrucciones grficas y de impresin. Los mapas
de bits de fondo definidos mediante la propiedad Picture y los controles colocados en un Form en tiempo de diseo no
se ven afectados por Cls.
Despus de llamar a Cls, las propiedades CurrentX y CurrentY del objeto se restablecen a 0.
Ejemplo del mtodo Cls
Este ejemplo utiliza el mtodo Cls para eliminar la informacin impresa de un formulario. Para probar este ejemplo,
pegue el cdigo en la seccin Declaraciones de un formulario, y despus presione F5 y haga clic en el formulario.
Private Sub Form_Click ()
Dim Msg
' Declara variable.
ForeColor = QBColor(15)
' Establece el color de primer plano a blanco.
BackColor = QBColor(1)
' Establece el color de fondo a azul.
Msg = "Esta informacin se imprime en el fondo del formulario."
Print Msg
' Imprime el mensaje en el formulario.
Msg = "Haga clic en Aceptar para borrar la informacin y el patrn de fondo "
Msg = Msg & "mostrado en el formulario."
MsgBox Msg
' Muestra el mensaje.
Cls
' Borra el fondo del formulario.
End Sub

14.7- CompactDatabase (Objeto DBEngine)


Aplicable a:
Objeto DBEngine
Copia, compacta y ofrece la posibilidad de cambiar la versin, la secuencia de ordenacin y la codificacin. (slo
espacio de trabajo Microsoft Jet).

Sintaxis
DBEngine.CompactDatabase antiguabasededatos, nuevabasededatos, escenario, opciones, contrasea
La sintaxis del mtodo CompactDatabase tiene los siguientes argumentos:

Pgina 59 de 159

Curso Visual Basic 5.0


-Antiguabasededatos: Una String que identifica una base de datos existente y cerrada. Puede ser una ruta completa y un
nombre de archivo, como "C:\db1.mdb". Si el nombre de archivo tiene una extensin, deber especificarla. Si su red lo
admite, tambin puede especificar una ruta de red, como "\\server1\share1\dir1\db1.mdb".
-nuevabasededatos: Un tipo de datos String que es la ruta completa de la base de datos compactada que va a crear.
Tambin puede especificar una ruta de acceso de red al igual que con antiguabasededatos. No puede usar el argumento
nuevabasededatos para especificar el mismo archivo de base de datos que antiguabasededatos.
-Escenario: Opcional. Un tipo de datos Variant que es una expresin de cadena que se utiliza para especificar la secuencia
de ordenacin para crear nuevabasededatos, como se especifica en Opciones. Si omite este argumento, el escenario de la
nuevabasededatos ser el mismo que el de la antiguabasededatos.
Tambin puede crear una contrasea para nuevabasededatos concatenando la cadena de la contrasea (que comienza con
";pwd=") con una constante del argumento escenario, como este:
dbLangSpanish & ";pwd=NuevaContrasea"
Si desea utilizar el mismo escenario como antiguabasededatos (el valor predeterminado), pero especificar una contrasea
nueva, simplemente escriba una contrasea en escenario:
";pwd=NuevaContrasea"
opciones
Opcional. Un valor entero que indica una o ms opciones, segn se especifica en Opciones. Puede
combinar opciones sumando las correspondientes constantes.
-Contrasea:
Opcional. Un tipo de datos Variant que es una expresin de cadena que contiene una contrasea, si la
base de datos est protegida con contrasea. La cadena ";pwd=" debe preceder a la propia contrasea. Si incluye una valor
de contrasea en escenario, este valor se ignora.
Puede utilizar una de las siguientes constantes en el argumento opciones para especificar si desea o no codificar la base
de datos mientras se compacta.
Constante
Descripcin
dbEncrypt
Codifica la base de datos durante la compactacin.
DbDecrypt
Descodifica la base de datos durante la compactacin.
Si omite una constante de codificacin o si incluye a la vez dbDecrypt y dbEncrypt, nuevabasededatos tendr la
misma codificacin que antiguabasededatos.
Puede usar una de las siguientes constantes en el argumento opciones para especificar la versin del formato de los datos
para la base de datos compactada. Esta constante afecta slo a la versin del formato de datos de nuevabasededatos y no
afecta a la versin de ninguno de los objetos definidos por Microsoft Access, como formularios e informes.
Constante
Descripcin
dbVersion10
Crea una base de datos que utiliza el motor de base de datos Microsoft Jet versin 1.0
durante la compactacin.
DbVersion11
Crea una base de datos que utiliza el motor de base de datos Microsoft Jet versin 1.1
durante la compactacin.
DbVersion20
Crea una base de datos que utiliza el motor de base de datos Microsoft Jet versin 2.0
durante la compactacin.
DbVersion30
Crea una base de datos que utiliza el motor de base de datos Microsoft Jet versin 3.0 (compatible con la
versin 3.5) durante la compactacin.
Slo puede especificar una constante de versin. Si omite una constante de versin, nuevabasededatos tendr la misma
versin que antiguabasededatos. Slo puede compactar nuevabasededatos a una versin igual o posterior a la de
antiguabasededatos.
Comentarios
Al cambiar datos de una base de datos, el archivo de base de datos puede fragmentarse y utilizar ms espacio en disco
del necesario. Regularmente, puede usar el mtodo CompactDatabase en la base de datos para desfragmentar el archivo
de base de datos. La base de datos compactada suele ser ms pequea y ejecutarse con ms rapidez. Tambin puede
cambiar la secuencia de ordenacin, la codificacin o la versin del formato de datos, mientras copia y compacta la base
de datos.
Tiene que cerrar antiguabasededatos antes de compactarla. En un entorno multiusuario, los dems usuarios no pueden
tener abierta antiguabasededatos mientras usted la compacta. Si antiguabasededatos no est cerrada o no se encuentra
disponible para su uso exclusivo, se producir un error.
Pgina 60 de 159

Curso Visual Basic 5.0


Puesto que CompactDatabase crea una copia de la base de datos, deber disponer de espacio suficiente en disco para la
base de datos original y la duplicada. La operacin de compactacin fracasar si no hay suficiente espacio disponible en
disco. La base de datos duplicada nuevabasededatos no tiene por qu estar en el mismo disco que antiguabasededatos.
Despus de compactar una base de datos, puede eliminar el archivo antiguabasededatos y cambiar el nombre del
archivo compactado nuevabasededatos por el nombre del archivo original.
El mtodo CompactDatabase copia todos los datos y valores de permisos de seguridad de la base de datos especificada
en antiguabasededatos a la base de datos especificada en nuevabasededatos.
Si utiliza el mtodo CompactDatabase para convertir una base de datos versin 1.x a una versin 2.5 o 3.x, solamente
las aplicaciones que utilizan las versiones de Microsoft Jet 2.5 o 3.x pueden abrir la base de datos convertida.
Precaucin Debido a que el mtodo CompactDatabase no convertir objetos Microsoft Access, no es recomendable
utilizar CompactDatabase para convertir una base de datos que contenga dichos objetos. Para convertir una base de
datos que contenga objetos Microsoft Access, en el men Herramientas, elija Utilidades de la base de datos y despus
haga clic en Convertir base de datos.

Ejemplo de mtodo CompactDatabase


Este ejemplo utiliza el mtodo CompactDatabase compactar la base de Datos Clientes.mdb.
Sub CompactDatabaseX()
DBEngine.CompactDatabase "Clientes.mdb", Compact.mdb"
End Sub

14.8- Delete (Objeto Recordset)


Aplicable a:
Objeto Recordset.

Objetos Recordset: elimina el registro activo de un objeto Recordset de tipo Dynaset o Table. Para espacios de
trabajo ODBCDirect, el tipo de controlador determina si los objetos Recordset se pueden actualizar y, por tanto,
admiten el mtodo Delete.

Sintaxis
recordset.Delete
La sintaxis del mtodo Delete utiliza los siguientes argumentos.
Argumentos
Descripcin
recordset
Una variable de objeto que identifica un objeto Recordset de tipo Dynaset o Table abierto, que contiene
el registro que desea eliminar.

Comentarios
Puede utilizar el mtodo Delete para eliminar un registro activo de un objeto Recordset.
Recordsets
Un objeto Recordset debe contener un registro activo antes de que utilice el mtodo Delete; en caso contrario se
produce un error en tiempo de ejecucin.
En objetos Recordset, Delete elimina el registro activo y lo hace inaccesible. Aunque no pueda modificarlo o utilizarlo,
el registro eliminado permanecer activo. Sin embargo, una vez que se desplace a otro registro no podr volver a
convertir en activo el registro eliminado. Las referencias subsiguientes a un registro eliminado en un Recordset no son
vlidas y producen un error.
Si la tabla base es la tabla principal en una relacin de eliminacin de cascada, al eliminar el registro activo tambin se
eliminarn uno o ms registros de una tabla externa.
Nota Para agregar, modificar o eliminar un registro, debe tener un ndice nico en el registro en el origen de datos de
base. Si no es as, se producir un error "Permiso denegado" en la llamada al mtodo AddNew, Delete o Edit en un
espacio de trabajo Microsoft Jet.

Pgina 61 de 159

Curso Visual Basic 5.0

Ejemplo de mtodo Delete


Se necesitan borrar todos los registros de la tabla Agenda (dentro de la base de datos Clientes) cuyos cdigos de Clientes
sean menores a 10.
Private Sub cmdAgregar_Click ()
Dim wsp as WorkSpace
Dimensiono las variables
Dim Base as Database
Dim Agenda as Recordset
Set wsp = DbEngine.Workspaces(0)
Seteo el espacio de trabajo
Set Base = wsp.OpenDatabase (Clientes.mdb) Abro la base de Datos
Set Agenda = BasedeDatos.OpenRecordset(SELECT * FROM Agenda WHERE Agenda.Codigo < 10)
Recordset
If Not Agenda.EOF
Agenda.MoveFirst
Do While Not Agenda.EOF
Agenda.Delete
Agenda.MoveNext
Loop
End If
Agenda.Close
Base.Close
Wsp.Close

Abro el

si encontr algn registro


me muevo al primer registro
mientras no sea fin de archivo
elimino el registro
me desplazo al siguiente registro

Cierro el Recordset
Cierro la base de Datos
Cierro el espacio de trabajo

End Sub

14.9- Edit (Objeto Recordset)


Aplicable a :
Objeto Recordset.
Copia el registro activo de un objeto Recordset al bfer de copia para su posterior edicin.
Sintaxis
recordset.Edit
El recordset representa el nombre de un objeto Recordset abierto y que se puede actualizar que contiene el registro que
desea modificar.

Comentarios
Una vez que utiliza el mtodo Edit, los cambios realizados en los campos del registro activo son copiados al bfer de
copia. Despus de realizar los cambios deseados en el registro, utilice el mtodo Update para guardar los cambios.
El registro activo permanece activo despus de utilizar el mtodo Edit.
Precaucin Si modifica un registro y a continuacin pasa a otro registro sin utilizar antes Update, los cambios se
perdern sin previo aviso. Adems, si cierra recordset o finaliza el procedimiento que declara el Recordset o el objeto
Database o Connection, el registro modificado se descarta sin previo aviso.
Pgina 62 de 159

Curso Visual Basic 5.0


La utilizacin de Edit produce un error bajo las siguientes condiciones:
No hay ningn registro activo.

El objeto Database o Recordset se abri de slo lectura.


No hay campos que se pueden actualizar en el registro.
El objeto Database o Recordset se abri para uso en modo exclusivo por otro usuario (espacio de trabajo Microsoft
Jet).

Nota Para agregar, modificar o eliminar un registro, debe tener un ndice nico en el registro en el origen de datos de
base. Si no es as, se producir un error "Permiso denegado" en la llamada al mtodo AddNew, Delete o Edit en un
espacio de trabajo Microsoft Jet, o se producir un error "Argumento no vlido" el la llamada al mtodo Update en un
espacio de trabajo ODBCDirect.

Ejemplo de mtodo Edit


Se necesita asignar la zona 1 a todos los registros de la tabla Agenda (dentro de la base de datos Clientes) cuyos cdigos de
Clientes sean menores a 20.
Private Sub cmdAgregar_Click ()
Dim wsp as WorkSpace
Dimensiono las variables
Dim Base as Database
Dim Agenda as Recordset
Set wsp = DbEngine.Workspaces(0)
Seteo el espacio de trabajo
Set Base = wsp.OpenDatabase (Clientes.mdb) Abro la base de Datos
Set Agenda = BasedeDatos.OpenRecordset(SELECT * FROM Agenda WHERE Agenda.Codigo < 20)
Recordset

Abro el

If Not Agenda.EOF
si encontr algn registro
Agenda.MoveFirst
me muevo al primer registro
Do While Not Agenda.EOF
mientras no sea fin de archivo
Agenda.Edit
Edito el registro
Agenda!Zona = 1
Agenda.Update
Agenda.MoveNext
me desplazo al siguiente registro
Loop
End If
Agenda.Close
Cierro el Recordset
Base.Close
Cierro la base de Datos
Wsp.Close
Cierro el espacio de trabajo
End Sub

14.10- Hide
Aplicable a:
Objeto Form.
Oculta un objeto Form pero no lo descarga.
Sintaxis
objeto.Hide

Pgina 63 de 159

Curso Visual Basic 5.0


El marcador de posicin objeto representa una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a. Si
se omite objeto, se supone que objeto es el formulario que tenga el enfoque.

Comentarios
Cuando se oculta un formulario, se quita de la pantalla y su propiedad Visible queda establecida a False. Los controles
de un formulario oculto no son accesibles para el usuario, pero estn disponibles para la aplicacin de Visual Basic en
ejecucin y para otros procesos que se estn comunicando con la aplicacin mediante DDE, as como para los eventos
del control Timer.
Cuando se oculta un formulario, el usuario no puede interactuar con la aplicacin hasta que el cdigo del procedimiento
de evento que ha provocado la ocultacin del formulario haya terminado de ejecutarse.
Si el formulario no est cargado cuando se llama al mtodo Hide, el mtodo Hide carga el formulario pero no lo
presenta.
Ejemplo del mtodo Hide
Este ejemplo utiliza el mtodo Hide para ocultar un formulario. Para probar este ejemplo, pegue el cdigo en la seccin
Declaraciones de un formulario, y despus presione F5 y haga clic en el formulario.
Private Sub Form_Click ()
Dim Msg
' Declara variable.
Hide
' Oculta el formulario.
Msg = "Haga clic en Aceptar para que vuelva a aparecer el formulario."
MsgBox Msg
' Muestra el mensaje.
Show ' Muestra de nuevo el formulario.
End Sub

14.11-MoveFirst - MoveLast - MoveNext MovePrevious (Objeto Recordset)


Aplicable a:
Objeto Recordset.
Mueven al registro primero, ltimo, siguiente o anterior de un objeto Recordset y lo convierten en el registro activo.

Sintaxis
recordset.{MoveFirst | MoveLast [dbRunAsync] | MoveNext | MovePrevious}
El marcador de posicin recordset es una variable de objeto que representa un objeto Recordset abierto.

Comentarios
Precaucin Si modifica el registro activo, utilice el mtodo Update para guardar los cambios antes de ir a otro registro.
Si va a otro registro sin actualizar, los cambios se perdern sin previo aviso.
Al abrir un Recordset, el primer registro est activo y la propiedad BOF es False. Si el Recordset no contiene registros
la propiedad BOF es True y no habr ningn registro activo.
Si el primer o el ltimo registro est activo cuando utiliza MoveFirst o MoveLast, el registro activo no cambia.
Si utiliza MovePrevious cuando el primer registro est activo, la propiedad BOF es True y no habr ningn registro
activo. Si vuelve a utilizar MovePrevious se producir un error y BOF ser True.
Si utiliza MoveNext cuando el ltimo registro est activo, la propiedad EOF es True y no habr ningn registro activo.
Si vuelve a utilizar MoveNext se producir un error y EOF ser True.
Si recordset hace referencia a un objeto Recordset de tipo Table (slo espacios de trabajo Microsoft Jet), el movimiento
seguir el ndice activo. Puede establecer el ndice activo utilizando la propiedad Index. Si no establece el ndice activo,
el orden de los registros devueltos no estar definido.
Pgina 64 de 159

Curso Visual Basic 5.0


Importante Puede utilizar el mtodo MoveLast para llenar completamente un objeto Recordset de tipo Dynaset o
Snapshot para obtener el nmero de registros activos en el Recordset. Sin embargo, si utiliza MoveLast puede hacer
ms lentas sus aplicaciones. Slo debe utilizar MoveLast para obtener un total de registros si es absolutamente
necesario obtener un total exacto en un Recordset abierto recientemente.
No puede utilizar los mtodos MoveFirst, MoveLast y MovePrevious en un Recordset de tipo Forward-only.
Para mover la posicin del registro activo en un objeto Recordset un nmero especfico de registros hacia adelante o
hacia atrs, utilice el mtodo Move.
Ejemplo de mtodos MoveFirst, MoveLast, MoveNext, MovePrevious
Para un ejemplo de uso de los mtodos MoveFirst y MoveNext, mire el ejemplo del mtodo Edit.
Se necesita asignar la zona 1 a todos los registros de la tabla Agenda (dentro de la base de datos Clientes) cuyos cdigos de
Clientes sean menores a 20. Es necesario recorrer la tabla de atrs hacia adelante.
Private Sub cmdAgregar_Click ()
Dim wsp as WorkSpace
Dimensiono las variables
Dim Base as Database
Dim Agenda as Recordset
Set wsp = DbEngine.Workspaces(0)
Seteo el espacio de trabajo
Set Base = wsp.OpenDatabase (Clientes.mdb) Abro la base de Datos
Set Agenda = BasedeDatos.OpenRecordset(SELECT * FROM Agenda WHERE Agenda.Codigo < 20)
Recordset

Abro el

If Not Agenda.EOF
si encontr algn registro
Agenda.MoveLast
me muevo al ltimo registro
Do While Not Agenda.BOF
mientras no sea principio de archivo
Agenda.Edit
Edito el registro
Agenda!Zona = 1
Agenda.Update
Agenda.MovePrevious
me desplazo al registro anterior
Loop
End If
Agenda.Close
Cierro el Recordset
Base.Close
Cierro la base de Datos
Wsp.Close
Cierro el espacio de trabajo
End Sub

14.12- OpenDatabase (Objeto Workspace)


Aplicable a:
Objeto DBEngine, Objeto Workspace.
Abre una base de datos especificada en un objeto Workspace y devuelve una referencia al objeto Database que la
representa.
Sintaxis
Set basededatos = espaciodetrabajo.OpenDatabase (nombrebasededatos, opciones, slolectura, conexin)
La sintaxis del mtodo OpenDatabase consta de las siguientes partes.
Argumento
Descripcin
basededatos
Una variable de objeto que representa el objeto Database que va a abrir.
Pgina 65 de 159

Curso Visual Basic 5.0


espaciodetrabajo
Nombrebasededatos
opciones
slolectura
conexin

Opcional. Una variable de objeto que representa el objeto Workspace existente que
contendr la base de datos. Si no incluye un valor para espaciodetrabajo,
OpenDatabase utiliza el espacio de trabajo predeterminado.
Un tipo de datos String que es el nombre de un archivo de base de datos Microsoft Jet
existente o el nombre del origen de datos (DSN) de un origen de datos ODBC
existente.
Opcional. Un tipo de datos Variant que establece varias opciones para la base de
datos, como se especifica en Valores.
Opcional. Un valor de tipo de datos Variant (subtipo Boolean) que es True si desea
abrir la base de datos con acceso de slo lectura o False (predeterminado) si desea
abrir la base de datos con acceso de lectura/escritura.
Opcional. Un tipo de datos Variant (subtipo String) que especifica informacin
variada sobre la conexin, incluyendo las contraseas.

Valores
Para los espacios de trabajo Microsoft Jet, puede utilizar los siguientes valores para el argumento opciones:
Valor Descripcin
True
Abre la base de datos en modo exclusivo.
False (Predeterminado) Abre la base de datos en modo compartido.
Comentarios
Cuando abre una base de datos, automticamente se agrega a la coleccin Databases.
Estas son algunas consideraciones que debe aplicar cuando utilice nombrebasededatos:
Si hace referencia a una base de datos que ya est abierta para acceso en modo exclusivo por otro usuario, se
produce un error.
Si no hace referencia a una base de datos existente, se produce un error.
El argumento conexin se expresa en dos partes: el tipo de base de datos, seguido por punto y coma (;) y los argumentos
opcionales. Primero debe proporcionar el tipo de base de datos, como "ODBC;" o "FoxPro 2.5;". A continuacin, os
argumentos opcionales sin un orden concreto, separados por punto y coma. Uno de los parmetros puede ser la
contrasea (si hay alguna asignada). Por ejemplo:
"FoxPro 2.5; pwd=micontrasea"
Para cerrar una base de datos y, de este modo, quitar el objeto Database de la coleccin Databases, utilice el mtodo
Close en el objeto .
Ejemplo mtodo OpenDatabase
Es vlido el mismo ejemplo utilizado para los mtodos MoveFirst, MoveLast, MoveNext, MovePrevious.

14.13- OpenRecordset (Objeto Database)


Aplicable a:
Objeto Database.
Crea un nuevo objeto Recordset y lo aade a la coleccin Recordsets.
Sintaxis
Set variable = objeto.OpenRecordset (origen, tipo, opciones, bloquearmodificaciones)
La sintaxis del mtodo OpenRecordset consta de las siguientes partes.
Pgina 66 de 159

Curso Visual Basic 5.0


Argumento
variable
Objeto
Origen
Tipo
Opciones
Bloquearmodificaciones

Descripcin
Una variable de objeto que representa el objeto Recordset que desea abrir.
Una variable de objeto que representa un objeto existente desde el que desea crear
el objeto Recordset nuevo.
Un tipo de datos String que especifica el origen de los registros para el nuevo
Recordset. El origen puede ser un nombre de tabla, un nombre de consulta o una
instruccin SQL que devuelve registros.
Opcional. Una constante que indica el tipo de objeto Recordset a abrir, como se
especifica en Valores.
Opcional. Una combinacin de constantes que especifican las caractersticas del
objeto Recordset nuevo, como se especifica en Valores.
Opcional. Una constante que determina el bloqueo para el objeto Recordset,
como se especifica en Valores.

Valores
Puede utilizar una de las siguientes constantes para el argumento tipo.
Constante
Descripcin
dbOpenTable
Abre un objeto Recordset de tipo Table (slo espacios de trabajo Microsoft Jet).
dbOpenDynaset
Abre un objeto Recordset de tipo Dynaset (actualizable).
DbOpenSnapshot
Abre un objeto Recordset de tipo Snapshot (slo lectura)
DbOpenForwardOnly Abre un objeto Recordset de tipo Forward-only.
Nota Si abre un objeto Recordset en un espacio de trabajo Microsoft Jet y no especifica un tipo, el mtodo
OpenRecordset crea una objeto Recordset de tipo Table, si es posible. Si especifica una tabla vinculada o una consulta,
el mtodo OpenRecordset crea un objeto Recordset.de tipo Dynaset.
Puede utilizar una combinacin de las siguientes constantes para el argumento opciones:
-DbAppendOnly: Permite al usuario anexar registros nuevos al objeto Recordset, pero impide la modificacin o
eliminacin de registros existentes (slo objetos Recordset de tipo Dynaset de Microsoft Jet).
-DbSeeChanges: Genera un error en tiempo de ejecucin si otro usuario est cambiando los datos que usted est
modificando.(Slo en objetos Recordset de tipo Snapshot de Microsoft Jet). Esto es til en aplicaciones donde varios
usuarios tiene acceso de lectura/escritura simultneo a los mismos datos.
-DbDenyWrite: Previene que otros usuarios puedan modificar o agregar registros (slo objetos Recordset de Microsoft
Jet).
-DbDenyRead: Previene que otros usuarios puedan leer datos de una tabla (slo objetos Recordset de tipo Table de
Microsoft Jet).
-DbForwardOnly: Crea un objeto Recordset de tipo Forward-only (slo objetos Recordset de tipo Snapshot de
Microsoft Jet). Se proporciona slo para compatibilidad con versiones anteriores y debe utilizar la constante
dbOpenForwardOnly en el argumento tipo en vez de utilizar esta opcin.
-DbReadOnly : Previene que otros usuarios puedan hacer cambios el objeto Recordset (slo Microsoft Jet). La constante
dbReadOnly en el argumento bloquearmodificaciones reemplaza esta opcin, la cual se proporciona para compatibilidad
con versiones anteriores.
-dbInconsistent : Permite actualizaciones inconsistentes (slo objetos Recordset de tipo Dynaset de Microsoft Jet).
-DbConsistent : Permite slo actualizaciones consistentes (slo objetos Recordset de tipo Dynaset de Microsoft Jet).
Nota Las constantes dbConsistent y dbInconsistent se excluyen mutuamente y el uso de ambos produce un error.
Proporcionar un argumento bloquearmodificaciones cuando el argumento opciones utiliza la constante dbReadOnly
tambin produce un error.
Puede utilizar las siguientes constantes para el argumento bloquearmodificaciones:.
-dbReadOnly: Previene que los usuarios hagan cambios al Recordset. Puede utilizar dbReadOnly en el argumento
opciones o en el argumento bloquearmodificaciones, pero nunca en ambos. Si lo utiliza en ambos argumentos, se produce
un error en tiempo de ejecucin.

Pgina 67 de 159

Curso Visual Basic 5.0


-DbPessimistic: Utiliza el bloqueo pesimista para determinar cmo se pueden hacer cambios al objeto Recordset en un
entorno multiusuario. La pgina que contiene el registro que est modificando est bloqueada mientras utiliza el mtodo
Edit (predeterminado en espacios de trabajo Microsoft Jet).
-DbOptimistic: Utiliza el bloqueo optimista para determinar cmo se pueden hacer cambios al objeto Recordset en un
entorno multiusuario. La pgina que contiene el registro que est modificando est bloqueada mientras se ejecuta el mtodo
Update.
Comentarios
En un espacio de trabajo Microsoft Jet, si objeto hace referencia a un objeto QueryDef o Recordset de tipo Dynaset o
Snapshot o si origen hace referencia a una instruccin SQL o un TableDef que representa una tabla adjunta, no podr
utilizar dbOpenTable para el argumento tipo y si lo hace, se producir un error interceptable.
Si objeto hace referencia a un Recordset de tipo Dynaset o Snapshot, el Recordset nuevo es del mismo tipo objeto. Si
objeto hace referencia a un objeto Recordset de tipo Table, el tipo del objeto nuevo es un objeto Recordset de tipo
Dynaset. No puede abrir objetos Recordset nuevos desde objetos Recordset de tipo Forward-only.
Utilice la constante dbSeeChanges en espacio de trabajo Microsoft Jet si desea captar los cambios realizados mientras
dos o ms usuarios estn modificando o eliminando el mismo registro. Por ejemplo, si dos usuarios empiezan a
modificar el mismo registro, el primer usuario que ejecute el mtodo Update consigue realizar la operacin. Cuando el
segundo usuario ejecute el mtodo Update ocurre un error de tiempo de ejecucin. Del mismo modo, si el segundo
usuario intenta utilizar el mtodo Delete para eliminar un registro y el primer usuario ha cambiado ya el mismo, se
produce un error de tiempo de ejecucin.
En general, si al usuario se le presenta este error mientras est actualizando, su cdigo debe actualizar el contenido de
los campos y leer los valores recientemente modificados. Si se produce el error durante el proceso de eliminacin, el
cdigo puede mostrar al usuario los nuevos datos del registro junto con un mensaje que indica que se han modificado
recientemente los datos. En este momento, el cdigo puede solicitar una confirmacin de que el usuario desea an
eliminar el registro.
Al cerrar un Recordset utilizando el mtodo Close, se eliminar automticamente de la coleccin Recordsets.

Ejemplo del mtodo OpenRecordset


Es vlido el mismo ejemplo utilizado para los mtodos MoveFirst, MoveLast, MoveNext, MovePrevious.

14.14- RemoveItem
Aplicable a:
Control ComboBox, Control ListBox.
Quita un elemento de un control ListBox o ComboBox. No acepta argumentos con nombre.
Sintaxis
objeto.RemoveItem ndice
La sintaxis del mtodo RemoveItem consta de las siguientes partes:
Parte Descripcin
objeto Requerido. Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a.
ndice Requerido. Un entero que especifica la posicin dentro del objeto del elemento o la fila que se va a
quitar. Para los primeros elementos de los controles ListBox o ComboBox, ndice es 0.
Comentarios
Los controles ListBox o ComboBox que estn enlazados a un control Data no aceptan el mtodo RemoveItem.

Pgina 68 de 159

Curso Visual Basic 5.0


Ejemplo del mtodo RemoveItem
Este ejemplo utiliza el mtodo RemoveItem para quitar entradas de un cuadro de lista. Para probar este ejemplo, pegue
el cdigo en la seccin Declaraciones de un formulario que contenga un control ListBox llamado List1, y despus
presione F5 y haga clic en el formulario.
Private Sub Form_Click ()
Dim Entry, I, Msg
' Declara variables.
Msg = "Haga clic en Aceptar para agregar 100 elementos al cuadro de lista."
MsgBox Msg
' Muestra el mensaje.
For I = 1 To 100 ' Cuenta de 1 a 100.
Entry = "Entrada " & I
' Crea la entrada.
List1.AddItem Entry
' Agrega la entrada.
Next I
Msg = "Haga clic en Aceptar para quitar una de cada dos entradas."
MsgBox Msg
' Muestra el mensaje.
For I = 1 To 50 ' Determina cmo quitar
List1.RemoveItem I
' uno de cada dos
Next I ' elementos.
Msg = "Haga clic en Aceptar para quitar todos los elementos del cuadro de lista."
MsgBox Msg
' Muestra el mensaje.
List1.Clear
' Borra el cuadro de lista.
End Sub

14.15- RepairDatabase (Objeto DBEngine)


Aplicable a:
Objeto DBEngine.
Intenta reparar una base de datos daada que accede a base de datos Microsoft Jet.
Sintaxis
DBEngine.RepairDatabase nombrebasededatos
El argumento nombrebasededatos representa un tipo de datos String que es la ruta de acceso y el nombre de un archivo
de base de datos del motor Microsoft Jet existente. Si se omite la ruta, slo se buscar en el directorio activo.
Comentarios
Debe cerrar la base de datos especificada por nombrebasededatos antes de repararla. En un entorno multiusuario, los
dems usuarios no podrn tener abierto nombrebasededatos mientras usted la repara. Si no est cerrado
nombrebasededatos o no est disponible para uso exclusivo, se producir un error.
Este mtodo intenta reparar una base de datos marcada como posiblemente daada por una operacin de escritura
incompleta. Esto puede ocurrir si una aplicacin que utiliza el motor de base de datos Microsoft Jet termina
inesperadamente debido a un corte en el suministro elctrico o un problema de hardware. La base de datos no se marcar
como posiblemente daada si utiliza el mtodo Close o si sale de la aplicacin de una manera normal.
El mtodo RepairDatabase tambin intenta validar todas las tablas del sistema y todos los ndices. Se descartan los
datos que no se puedan reparar. Si no se puede reparar la base de datos, se produce un error interceptable.
Cuando intente abrir o compactar una base de datos daada, normalmente se producir un error interceptable. En
algunas situaciones, sin embargo, puede que no se detecte una base de datos daada y no se produzca ningn error. Es
conveniente ofrecer a los usuarios un mtodo de ejecutar el mtodo RepairDatabase en su aplicacin, si la base de
datos se comporta de manera impredecible.
Pgina 69 de 159

Curso Visual Basic 5.0


Algunos tipos de bases de datos se pueden daar si un usuario termina una aplicacin sin cerrar los objetos Database o
Recordset y el motor de base de datos Microsoft Jet, Microsoft Windows no tienen la oportunidad de vaciar las
memorias de cach de datos. Para evitar que se daen las bases de datos, establezca procedimientos para cerrar las
aplicaciones y apagar los sistemas que aseguren que todas las pginas de la memoria cach estn guardadas en la base de
datos. En algunos casos, puede que sean necesarias fuentes de alimentacin ininterrumpida para evitar prdidas de datos
por las fluctuaciones del suministro elctrico.
Nota Despus de reparar una base de datos, tambin es conveniente compactar la misma utilizando el mtodo
CompactDatabase para defragmentar el archivo y recuperar espacio en disco.

Ejemplo del mtodo RepairDatabase


Este ejemplo intenta reparar la base de datos llamada Neptuno.mdb.
Sub RepairDatabaseX()
Dim errBucle As Error
If MsgBox("Desea reparar la base de datos Neptuno?", vbYesNo) = vbYes Then
DBEngine.RepairDatabase "Neptuno.mdb"
MsgBox "Fin del procedimiento reparar!"
End If
End Sub

14.16- SetFocus
Aplicable a
Control CheckBox, Control ComboBox, Control CommandButton, Objeto Form Controles HScrollBar y VScrollBar,
Control ListBoxControl OptionButton, Control PictureBox, Control TextBox.
Mueve el enfoque al control o formulario especificado.

Sintaxis
objeto.SetFocus
El marcador de posicin objeto representa una expresin de objeto que da como resultado un objeto de la lista
Aplicable a.
Comentarios
El objeto debe ser un objeto Form o un control que pueda recibir el enfoque. Despus de invocar el mtodo SetFocus,
cualquier entrada del usuario se dirige al formulario o al control especificado.
El enfoque slo se puede mover a un formulario o un control visible. Como un formulario y los controles de un
formulario no son visibles hasta que el evento Load del formulario ha terminado, no puede usar en su propio evento
Load el mtodo SetFocus para mover el enfoque al formulario que se est cargando a menos que use primero el mtodo
Show para mostrar el formulario antes de que el procedimiento de evento Form_Load haya terminado.
Tampoco puede mover el enfoque a un formulario o un control si su propiedad Enabled es False. Si la propiedad
Enabled se ha establecido a False en tiempo de diseo, primero debe establecerla a True antes de poder recibir el
enfoque mediante el mtodo SetFocus.

Ejemplo del mtodo SetFocus


Al hacer click en un botn de comando, setea el foco a la caja de texto txtCodigo
Pgina 70 de 159

Curso Visual Basic 5.0


Private Sub cmd1_Click()
TxtCodigo.Setfocus
End Sub

14.17- Show
Aplicable a:
Objeto Form.
Sintaxis
objeto.Show estilo, formulario_propietario
La sintaxis del mtodo Show consta de las siguientes partes:
Parte
Descripcin
objeto
Opcional. Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable
a. Si se omite objeto, se supone que objeto es el formulario asociado con el
mdulo de formulario activo.
estilo
Opcional. Un entero que determina si el formulario es modal o no modal. Si estilo
es 0, el formulario es no modal; si estilo es 1, el formulario es modal.
formulario_propietario
Opcional. Una expresin de cadena que especifica el componente que "posee" el
formulario que se muestra. Para los formularios estndar de Visual Basic, utilice la
palabra clave Me.
Comentarios
Si el formulario especificado no est cargado cuando se invoca el mtodo Show, Visual Basic lo carga automticamente.
Cuando Show presenta un formulario no modal, contina con la ejecucin del cdigo que haya a continuacin. Cuando
Show presenta un formulario modal, el cdigo que hay a continuacin no se ejecuta hasta que el formulario se oculta o
se descarga.
Cuando Show presenta un formulario modal, no hay entradas (de teclado o del mouse) excepto sobre los objetos del
formulario modal. El programa debe ocultar o descargar los formularios modales (normalmente como respuesta a alguna
accin del usuario) antes de que pueda producirse la entrada en otro formulario.
Aunque los dems formularios de la aplicacin estn deshabilitados cuando se presenta un formulario modal, los de las
dems aplicaciones no lo estn.
El formulario inicial de una aplicacin se muestra automticamente despus de invocar su evento Load.
Ejemplo del mtodo Show
Este ejemplo utiliza el mtodo Show para mostrar un formulario oculto. Para probar este ejemplo, pegue el cdigo en la
seccin Declaraciones de un formulario y despus presione F5 y haga clic en el formulario.
Private Sub Form_Click ()
Dim Msg
' Declara variable.
Hide
' Oculta el formulario.
Msg = "Haga clic en Aceptar para que vuelva a aparecer el formulario."
MsgBox Msg
' Muestra el mensaje.
Show ' Muestra de nuevo el formulario.
End Sub

Pgina 71 de 159

Curso Visual Basic 5.0

14.18- Update (Objeto recordset)


Aplicable a
Objeto Recordset.
Guarda el contenido del bfer de copia en un objeto Recordset de tipo Dynaset o Table especificado.

Sintaxis
recordset.Update (tipo, obligar )
La sintaxis del mtodo Update tiene las siguientes partes.
Parte Descripcin
Recordset
Una variable de objeto que representa un objeto Recordset abierto que se puede actualizar.
Tipo
Opcional. Una constante que indica el tipo de actualizacin, como se especifica en Valores
(slo espacios de trabajo ODBCDirect).
Obligar
Opcional. Un valor de tipo Boolean que indica si se pueden o no obligar los cambios en la base
de datos, sin tener en cuenta si los datos base se han cambiado por otro usuario desde la
llamada al mtodo AddNew, Delete o Edit. Si es True, los cambios se fuerzan y los cambios
hechos por otros usuarios se sobrescriben. Si es False (predeterminado), los cambios hechos
por otros usuarios mientras la actualizacin est pendiente provocarn que falle la
actualizacin para aquellos cambios conflictivos.

Comentarios
Utilice Update para guardar el registro activo y los cambios que haya efectuado en l.
Precaucin Los cambios realizados en el registro activo se perdern si:
Utiliza el mtodo Edit o AddNew y a continuacin, pasa a otro registro sin actualizarlo previamente mediante
Update.
Utiliza Edit o AddNew y, a continuacin, vuelve a usar Edit o AddNew sin utilizar previamente Update.

Cierra el conjunto de registros a los que hace referencia recordset sin utilizar primero Update.
Cancela la operacin Edit utilizando el mtodo CancelUpdate.

Para modificar un registro, utilice el mtodo Edit para copiar el contenido del registro activo al bfer de copia. Si no
utiliza Edit en primer lugar, se producir un error cuando utilice Update o intente cambiar el valor de un campo.
En un espacio de trabajo Microsoft Jet, cuando el objeto Recordset de la propiedad LockEdits establecida como True
(bloqueo pesimista) en un entorno multiusuario, el registro permanecer bloqueado desde el momento en que se utiliza
Edit hasta que se ejecuta el mtodo Update o se cancele la edicin. Si la configuracin de la propiedad LockEdits es
False (bloqueo optimista), el registro se bloquea y se compara con el registro previamente modificado justo antes de se
actualizado en la base de datos. Si ha cambiado el registro desde que utiliz el mtodo Edit, la operacin Update falla..
Para que la operacin Update contine con los cambios, utilice de nuevo el mtodo Update. Para volver al registro, tal
como lo cambi el otro usuario, actualice el registro activo usando los mtodos Move 0.
Nota Para agregar, modificar o eliminar un registro, debe haber un ndice nico en el registro del origen de datos base.
Se obtiene no lo hay, se producir un error "Permiso denegado" en la llamada al mtodo AddNew, Delete o Edit en un
espacio de trabajo Microsoft Jet, se producir un error "Argumento no vlido" en la llamada al mtodo Update en un
espacio de trabajo ODBCDirect.
Ejemplo del mtodo Update
Es vlido el ejemplo del mtodo AddNew.
Pgina 72 de 159

Curso Visual Basic 5.0

15- Propiedades ms importantes de los controles estndares.


15.1- ActiveControl
Aplicable a:
Objeto Form.
Devuelve el control que tiene el enfoque. No est disponible en tiempo de diseo y es de slo lectura en tiempo de
ejecucin.
Sintaxis
objeto.ActiveControl
El marcador de posicin objeto representa una expresin de objeto que da como resultado un objeto de la lista Aplicable
a.
Comentarios
Puede utilizar ActiveControl para tener acceso a las propiedades de un control o para invocar sus mtodos. Por ejemplo,
Screen.ActiveControl.Tag = "0". Si todos los controles del formulario son invisibles o estn desactivados, se producir
un error en tiempo de ejecucin.
Cada formulario puede tener un control activo (Form.ActiveControl), independientemente de que el formulario est
activo o no. Puede escribir cdigo que manipule el control activo de cada formulario de la aplicacin, incluso cuando el
formulario no sea el activo.
Ejemplo de la propiedad ActiveControl
En este ejemplo se muestra el texto del control activo. Para probarlo, pegue el cdigo en la seccin Declaraciones de un
formulario que contenga controles TextBox, Label y CommandButton, y luego presione F5 y haga clic en el
formulario.
Private Sub Form_Click ()
If TypeOf Screen.ActiveControl Is TextBox Then
Label1.Caption = Screen.ActiveControl.Text
Else
Label1.Caption = "Botn: " + Screen.ActiveControl.Caption
End If
End Sub

15.2- BackColor, ForeColor


Aplicable a:
Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form, Control Frame,
Control Label, Control ListBox, Control OptionButton, Control PictureBox, Control Shape, Control TextBox.
BackColor: devuelve o establece el color de fondo de un objeto.
ForeColor: devuelve o establece el color de primer plano utilizado para mostrar texto y grficos en un objeto.
Sintaxis
objeto.BackColor [= color]
objeto.ForeColor [= color]
Pgina 73 de 159

Curso Visual Basic 5.0


La sintaxis de las propiedades BackColor y ForeColor consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
color Un valor o una constante que determina el color de fondo o de primer plano del objeto, segn se indica en Valores.
Valores
Visual Basic utiliza el esquema de colores rojo-verde-azul (RGB) del entorno operativo Microsoft Windows. Los valores
admitidos para color son:
Para todos los formularios y controles, los valores predeterminados en tiempo de diseo son:
BackColor: el color predeterminado del sistema especificado por la constante vbWindowBackground.
ForeColor: el color predeterminado del sistema especificado por la constante vbWindowText.
Comentarios
En los controles Label y Shape, la propiedad BackColor se pasa por alto cuando el valor de la propiedad BackStyle es
0 (transparente).
Si establece la propiedad BackColor de un objeto Form o de un control PictureBox, se borra todo el texto y todos los
grficos, incluidos los grficos persistentes. Al establecer la propiedad ForeColor, los grficos o el resultado impreso no
se ven afectados. En el resto de los controles, el color de la pantalla cambia inmediatamente.
El intervalo vlido para un color RGB normal va de 0 a 16.777.215 (&HFFFFFF). El byte ms alto de los nmeros de
este intervalo es 0, y los 3 ms bajos, del menos significativo al ms significativo, determinan la intensidad de rojo,
verde y azul, respectivamente. Cada uno de los componentes rojo, verde y azul se representa con un nmero entre 0 y
255 (&HFF). Si el byte ms alto no es 0, Visual Basic utiliza los colores del sistema, definidos por el usuario en el Panel
de control o por las constantes que se encuentran en la biblioteca de objetos de Visual Basic (VB) en el Examinador de
objetos.
Para mostrar texto en el entorno operativo Windows, tanto el color del texto como el de fondo deben ser slidos. Si no
aparece el color que ha seleccionado para el texto o para el fondo, puede que uno de ellos sea de medios tonos; es decir,
puede que est formado por pxeles de hasta tres colores distintos. Si elige un color de medios tonos para el texto o el
fondo, se utilizar el color slido ms prximo.
Ejemplo de las propiedades BackColor y ForeColor
En este ejemplo se restablecen aleatoriamente los colores de primer plano y de fondo dos veces por segundo en un
formulario y en un control PictureBox. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un
formulario que contenga un control PictureBox y un control Timer control, y luego presione F5.
Private Sub Form_Load ()
Timer1.Interval = 500
End Sub
Private Sub Timer1_Timer ()
BackColor = QBColor(Rnd * 15)
ForeColor = QBColor(Rnd * 10)
Picture1.BackColor = QBColor(Rnd * 15)
Picture1.ForeColor = QBColor(Rnd * 10)
End Sub

15.3- BackStyle
Aplicable a
Control Label, Control Shape.

Pgina 74 de 159

Curso Visual Basic 5.0


Devuelve o establece un valor que indica si un control Label o el fondo de un color Shape es transparente u opaco.
Sintaxis
objeto.BackStyle [= nmero]
La sintaxis de la propiedad BackStyle consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
nmero Una expresin numrica que especifica la transparencia, segn se indica en Valores.
Valores
Los valores admitidos para nmero son:
Valor Descripcin
0
Transparente: el color de fondo y los grficos son visibles a travs del control.
1
(Predeterminado) Opaco: el control se llena con el valor de su propiedad BackColor, ocultando los colores o
grficos que haya tras l.
Comentarios
Puede utilizar la propiedad BackStyle para crear controles transparentes cuando use un color de fondo en un objeto
Form o en un control PictureBox, o cuando desee colocar un control sobre un grfico. Utilice un control opaco cuando
quiera que destaque.
La propiedad BackColor de un control se pasa por alto cuando BackStyle = 0.

15.4-BOF. EOF (Objeto Recordset)


Aplicable a
Objeto Recordset.

BOF: indica si la posicin del registro activo es anterior al primer registro de un objeto Recordset.
EOF: indica si la posicin del registro activo es posterior al ltimo registro de un objeto Recordset.

Valores devueltos
Los valores que se obtienen para las propiedades BOF y EOF son un tipo de datos Boolean.
La propiedad BOF devuelve el valor True, si la posicin del registro activo es anterior al primer registro y False si el
registro activo est en el registro activo o en el posterior.
La propiedad EOF devuelve el valor True, si la posicin del registro activo es posterior al ltimo registro y False si el
registro activo est en el ltimo registro o antes de ste.
Comentarios
Puede utilizar las propiedades BOF y EOF para determinar si un objeto Recordset contiene registros o si se han
sobrepasado los lmites de un objeto Recordset al ir pasando de un registro a otro.
La ubicacin del puntero de l registro activo determina los valores devueltos de BOF y EOF.
Si BOF o EOF tienen el valor True, no existe registro activo.
Si abre un objeto Recordset que no contiene ningn registro, tanto BOF como EOF tendrn el valor True y el valor de
la propiedad RecordCount ser 0. Cuando se abre un objeto Recordset que contiene al menos un registro, el primer
registro pasa a ser el registro activo y tanto BOF como EOF tendrn el valor False; que conservar hasta que se
sobrepase el principio o el final del objeto Recordset, mediante los mtodos MovePrevious o MoveNext
respectivamente. Cuando se sobrepasan el principio o el final del conjunto de registros, no hay registro activo o no
existe ningn registro.
Pgina 75 de 159

Curso Visual Basic 5.0


Si elimina el ltimo registro que queda en el objeto Recordset, tanto BOF como EOF podrn seguir teniendo el valor
False hasta que intente volver a situar el registro activo.
Si utiliza el mtodo MoveLast en un objeto Recordset que contiene registros, el ltimo registro pasar a ser el registro
activo. Si a continuacin utiliza el mtodo MoveNext, el registro activo dejar de ser vlido y EOF pasar a tener el
valor True. Por el contrario, si utiliza el mtodo MoveFirst en un objeto Recordset que contiene registros, el primer
registro pasa a ser el registro activo. Si a continuacin utiliza el mtodo MovePrevious, el registro activo dejar de ser
vlido y BOF asumir el valor True.
Normalmente, al trabajar con todos los registros de un objeto Recordset, el cdigo ir pasando de un registro a otro
mediante MoveNext, hasta que la propiedad EOF presente el valor True.
Si utiliza MoveNext cuando EOF tiene el valor True o MovePrevious cuando BOF tiene el valor True, se producir un
error.
Si se permite usar un mtodo Move, ello no implica necesariamente que el mtodo vaya a situar de forma correcta un
registro. Simplemente indica que se permite intentar utilizar el mtodo de movimiento en cuestin, sin que se produzca
ningn error. El estado de los indicadores de BOF y EOF puede cambiar como resultado de intentar la operacin Move.
El mtodo OpenRecordset invoca internamente MoveFirst. Por tanto, un OpenRecordset en un conjunto de registros
vaco provoca que tanto BOF como EOF tengan el valor True. (Consulte la tabla que sigue para comprobar el
comportamiento de un mtodo MoveFirst que ha fallado).
Todos los mtodos Move que sitan sin problemas un registro borran (con valor False) tanto BOF como EOF.
En un espacio de trabajo Microsoft Jet, si agrega un registro a un objeto Recordset vaco, BOF pasar a False, pero
EOF permanecer en True, que indica que la posicin actual es al final del objeto Recordset.
Ningn mtodo Delete, incluso si se elimina el nico registro que quede en un conjunto de registros, modificar el valor
de BOF ni el de EOF.
Ejemplo de las propiedades BOF y EOF
Como ejemplo de la propiedad EOF sirve el ejemplo de mtodos MoveFirst, MoveLast, MoveNext, MovePrevious.
Como ejemplo de la propiedad BOF sirve el ejemplo del mtodo Edit.

15.5-BOFAction, EOFAction
Aplicable a:
Control Data.
Devuelve o establece un valor que indica qu accin lleva a cabo el control Data cuando las propiedades BOF o EOF
son True.
Sintaxis
objeto.BOFAction [= entero]
objeto.EOFAction [= entero]
La sintaxis de las propiedades BOFAction y EOFAction consta de estas partes:
Parte Descripcin
objeto Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a
entero Un valor de tipo Integer que especifica una accin, como se describe en Valores
Valores
Para la propiedad BOFAction, los valores de entero son los siguientes:
Configuracin
Valor
Descripcin
VbBOFActionMoveFirst
0
MoveFirst (Predeterminado): mantiene el primer registro como
registro actual.
vbBOFActionBOF
1
BOF: al desplazarse ms all del comienzo de un Recordset se
desencadena el evento Validate del control Data del primer
registro. En este punto se desactiva el botn Mover anterior del
control Data.
Pgina 76 de 159

Curso Visual Basic 5.0

Para la propiedad EOFAction, los valores de entero son los siguientes:


Configuracin
Valor
Descripcin
vbEOFActionMoveLast
0
MoveLast (Predeterminado): mantiene el ltimo registro como
registro actual.
vbEOFActionEOF
1
EOF: al desplazarse ms all del final de un Recordset se
desencadena el evento Validation del control Data del ltimo
registro. En este momento se desactiva el botn Mover siguiente
del control Data.
vbEOFActionAddNew
2
AddNew: al desplazarse ms all del ltimo registro se
desencadena el evento Validation del control Data en el registro
actual, seguido de un AddNew automtico.
Comentarios
Estas constantes se enumeran en la biblioteca de objetos de Visual Basic (VB) en el Examinador de objetos.
Si establece la propiedad EOFAction a vbEOFActionAddNew, cuando el usuario mueva el puntero del registro actual
a EOF usando el control Data, el registro actual se situar en un nuevo registro del bfer de copia. En este punto podr
modificar el registro recin agregado. Si realiza cambios en el nuevo registro y el usuario mueve posteriormente el
puntero del registro actual usando el control Data, el registro se aadir automticamente al Recordset. Si no realiza
cambios en este nuevo registro y cambia de posicin el registro actual a otro registro, el nuevo registro se descartar. Si
utiliza el control Data para situar otro registro mientras se encuentra sobre este nuevo registro, se crear otro registro
nuevo.
Cuando utiliza cdigo para manipular objetos Recordset creados con el control Data, la propiedad EOFAction no surte
ningn efecto; slo es efectiva cuando se manipula el control Data con el mouse.
Tipo de datos
Integer

15.6-BorderStyle
Aplicable a:
Objeto Form, Control Frame, Control Image, Control Label, Control Line, Control PictureBox, Control Shape, Control
TextBox.
Devuelve o establece un valor que indica cul es el estilo de los bordes del control. La propiedad BorderStyle es de
lectura y escritura durante el diseo del control y de slo lectura en tiempo de ejecucin.
Sintaxis
objeto.BorderStyle [= enum]
La sintaxis de la propiedad BorderStyle consta de las partes siguientes:
Elemento
Descripcin
objeto Expresin de objeto cuyo resultado es un objeto de la lista Aplicable a.
enum Valor enumerado que determina el estilo de los bordes del control, como se describe en Valores.

Valores
Los valores de enum son:
Valor
Descripcin
0-None
Sin bordes. ste es el valor predeterminado.
1-Fixed Single Se dibuja una nica lnea alrededor del control.

Pgina 77 de 159

Curso Visual Basic 5.0

15.7-Caption
Aplicable a:
Control CheckBox, Control CommandButton, Control Data, Objeto Form, Control Frame, Control Label, Control Menu,
Control OptionButton.

Formulario: determina el texto que se muestra en la barra de ttulo del objeto Form. Cuando el formulario est
minimizado, este texto se muestra debajo del icono del formulario.
Control: determina el texto que se muestra en un control o junto a ste.
Objeto MenuLine: determina el texto que se muestra para un control Menu o un objeto de la coleccin
MenuItems.

Sintaxis
objeto.Caption [= cadena]
La sintaxis de la propiedad Caption consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. Si se omite objeto,
se supondr que el formulario asociado al mdulo de formulario activo es objeto.
cadena Una expresin de cadena que da como resultado el texto que se muestra como ttulo.
Comentarios
Cuando crea un nuevo objeto, su ttulo predeterminado es el valor predeterminado de la propiedad Name. Este ttulo
predeterminado incluye el nombre de objeto y un entero, como Comando1 o Formulario1. Para obtener una etiqueta ms
descriptiva, establezca la propiedad Caption.
Puede utilizar la propiedad Caption para asignar una tecla de acceso a un control. En el ttulo, incluya un signo &
inmediatamente delante del carcter que desea designar como tecla de acceso. El carcter estar subrayado. Presione la
tecla ALT y el carcter subrayado para mover el enfoque a ese control. Si desea incluir un signo & en un ttulo sin crear
una tecla de acceso, incluya dos signos (&&). En el ttulo slo aparecer un smbolo y no habr caracteres subrayados.
Para un control Label, el tamao del ttulo es ilimitado. Para los formularios y todos los dems controles que tienen
ttulos, el lmite es de 255 caracteres.
Para mostrar el ttulo de un formulario, establezca la propiedad BorderStyle a Fixed Single (1 o vbFixedSingle),
Sizable (2 o vbSizable) o Fixed Dialog (3 o vbFixedDialog). Si el ttulo es demasiado largo para la barra de ttulo, se
recortar.
Sugerencia Para una etiqueta, establezca la propiedad AutoSize a True con el fin de ajustar automticamente el
tamao del control de modo que quepa el ttulo.

Ejemplo de la propiedad Caption


Este ejemplo cambia la propiedad Caption de un control CommandButton cada vez que el usuario hace clic en el
botn. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un
CommandButton llamado Command1, y despus presione F5 y haga clic en el botn.
Private Sub Command1_Click ()
' Comprueba el ttulo y lo cambia.
If Command1.Caption = "Ha hecho clic" Then
Command1.Caption = "Aceptar"
Else
Command1.Caption = "Ha hecho clic"
End If
End Sub

Pgina 78 de 159

Curso Visual Basic 5.0

15.8-DatabaseName
Aplicable a
Control Data.
Devuelve o establece el nombre y la ubicacin del origen de datos de un control Data.
Sintaxis
objeto.DatabaseName [ = nombre_ruta ]
La sintaxis de la propiedad DatabaseName consta de estas partes:
Parte
Descripcin
objeto
Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a.
nombre_ruta
Una expresin de cadena que indica la ubicacin de los archivos de base de datos.
Comentarios
Si el sistema de red lo admite, el argumento nombre_ruta puede ser un nombre completo de ruta de acceso de red
como \\Miserv\Micomp\Basedato.mdb.
El tipo de base de datos est indicado por el archivo o el directorio al que seala nombre_ruta, de la siguiente manera:
nombre_ruta
Seala a...
Archivo .mdb
Directorio con archivos .dbf
Directorio con archivos .xls
Directorio con archivos .dbf
Directorio con archivos .wk1, .wk3, .wk4 o .wks
Directorio con archivos .pdx

Tipo de base de datos


Base de datos de Microsoft Access
Base de datos de dBASE
Base de datos de Microsoft Excel
Base de datos de FoxPro
Base de datos de Lotus
Base de datos de Paradox

Si cambia la propiedad DatabaseName despus de abrir el objeto Database del control, deber utilizar el mtodo
Refresh para abrir la nueva base de datos.
Nota Para obtener un mejor rendimiento al tener acceso a bases de datos externas, se recomienda adjuntar tablas de
bases de datos externas a una base de datos del motor Microsoft Jet (.mdb) y utilizar el nombre de esta base de datos en
la propiedad DatabaseName.
Tipo de datos

String
Ejemplo de la propiedad DatabaseName
Este ejemplo examina la propiedad Database de un control Data e imprime el nombre de cada Table en la ventana
Depuracin.
Sub PrintTableNames ()
Dim Td As TableDef
' Define el archivo de la base de datos.
Data1.DatabaseName = "BIBLIO.MDB"
Data1.Refresh
' Abre la base de datos.
' Lee e imprime el nombre de cada tabla de la base de datos.
For Each Td in Data1.Database.TableDefs
Debug.Print Td.Name
Next
End Sub
Pgina 79 de 159

Curso Visual Basic 5.0

15.9-DataChanged
Aplicable a:
Control CheckBox, Control ComboBox, Control Image, Control Label, Control ListBox, Control PictureBox, Control
TextBox.
Devuelve o establece un valor que indica que algn proceso distinto de la recuperacin de datos del registro actual ha
cambiado los datos del control enlazado. No est disponible en tiempo de diseo.

Sintaxis
objeto.DataChanged [= valor]
La sintaxis de la propiedad DataChanged consta de estas partes:
Parte Descripcin
objeto Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a.
valor Una expresin booleana que indica si los datos han cambiado, como se describe en Valores.
Valores
Los valores admitidos para valor son los siguientes:
Valor Descripcin
True
Los datos que hay actualmente en el control no son iguales que los del registro actual.
False (Predeterminado) Los datos que hay actualmente en el control (si los hay) son iguales que los del registro actual.
Comentarios
Cuando un control Data se mueve de un registro a otro, pasa datos desde los campos del registro actual a controles
enlazados al campo especfico o todo el registro. Cuando se muestran datos en los controles enlazados, la propiedad
DataChanged se establece a False. Si el usuario o alguna otra operacin cambia el valor del control enlazado, la
propiedad DataChanged se establece a True. Si pasa a otro registro la propiedad DataChanged no se ve afectada.
Cuando el control Data comienza a pasar a otro registro, se produce el evento Validate. Si DataChanged es True para
algn control enlazado, el control Data invoca automticamente los mtodos Edit y Update para enviar los cambios a la
base de datos.
Si no desea guardar en la base de datos los cambios de un control enlazado, puede establecer la propiedad
DataChanged a False en el evento Validate.
Inspeccione el valor de la propiedad DataChanged en el cdigo para el evento Change de un control con el fin de evitar
eventos en cascada. Esto se aplica a controles enlazados y no enlazados.

Tipo de datos
Integer (Boolean)

15.10-DataField
Aplicable a:
Control CheckBox, Control ComboBox, Control Image, Control Label, Control ListBox, Control PictureBox, Control
TextBox.
Devuelve o establece un valor que enlaza un control a un campo del registro actual.
Sintaxis
Pgina 80 de 159

Curso Visual Basic 5.0


objeto.DataField [= valor]
La sintaxis de la propiedad DataField consta de estas partes:
Parte Descripcin
objeto Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a.
valor Una expresin de cadena que se evala como el nombre de uno de los campos del objeto Recordset especificado
por las propiedades RecordSource y DatabaseName de un control Data.
Comentarios
Los controles enlazados proporcionan acceso a datos especficos de la base de datos. Los controles enlazados que
administran un nico campo suelen mostrar el valor un campo especfico del registro actual. La propiedad DataSource
de un control enlazado especifica un control Data vlido y la propiedad DataField especifica un nombre de campo
vlido en el objeto Recordset creado por el control Data. Juntas, estas propiedades especifican qu datos aparecen en el
control enlazado.
Cuando utiliza un objeto QueryDef o una instruccin SQL que devuelve los resultados de una expresin, el motor de
base de datos Microsoft Jet genera automticamente el nombre de campo . Por ejemplo, cuando codifica una funcin
agregada de SQL o una expresin en su consulta SQL, a menos que asigne un alias a los campos agregados mediante
una clusula AS, los nombres de campo se generarn automticamente. El nombre del campo de expresin suele ser
Expr1 seguido de un nmero de tres dgitos que comienza por 000. La primera expresin devuelta tendra el nombre
Expr1000.
Se recomienda codificar las consultas SQL para asignar alias a columnas de expresin como se muestra a continuacin:
Data1.RecordSource = "Select AVG(Sales) " _
& " AS AverageSales From SalesTable"
Text1.DataField = "AverageSales"
Data1.Refresh
Nota Compruebe que el valor de la propiedad DataField es vlido para cada control enlazado. Si cambia el valor de la
propiedad RecordSource de un control Data y a continuacin utiliza Refresh, el objeto Recordset identificar el nuevo
objeto. Esto puede invalidar los valores de DataField de controles enlazados y generar un error interceptable.
Tipo de datos
String

15.11-DataSource
Aplicable a:
Control CheckBox, Control ComboBox, Control Image, Control Label, Control ListBox, Control PictureBox.
Establece un valor que especifica el control Data a travs del cual el control actual se enlaza a una base de datos. No
est disponible en tiempo de ejecucin.

Comentarios
Para enlazar un control a un campo de una base de datos en tiempo de ejecucin, debe especificar un control Data en la
propiedad DataSource en tiempo de diseo desde la ventana Propiedades.
Para completar la conexin con un campo del objeto Recordset administrado por el control Data, tambin deber
proporcionar el nombre de un objeto Field en la propiedad DataField. A diferencia de la propiedad DataField, el valor
de la propiedad DataSource no est disponible en tiempo de ejecucin.
Tipo de datos
Pgina 81 de 159

Curso Visual Basic 5.0


String

15.12-Enabled
Aplicable a:
Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form, Control Frame,
Controles HScrollBar y VScrollBar, Control Image, Control Label, Control ListBox, Control Menu, Control
OptionButton, Control PictureBox, Control TextBox, Control Timer.
Devuelve o establece un valor que determina si un formulario o un control puede responder a eventos generados por el
usuario.
Sintaxis
objeto.Enabled [= booleano]
La sintaxis de la propiedad Enabled consta de las siguientes partes:
Parte
Descripcin
objeto
Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. Si se omite
objeto, se supondr que el formulario asociado al mdulo del formulario activo es objeto.
Booleano Una expresin de tipo Boolean que especifica si objeto puede responder a eventos generados por
el usuario.
Valores
Los valores admitidos para booleano son:
Valor Descripcin
True
(Predeterminado) Permite que objeto responda a eventos.
False Impide que objeto responda a eventos.
Comentarios
La propiedad Enabled permite activar o desactivar formularios y controles en tiempo de ejecucin. Por ejemplo, puede
desactivar objetos que no se aplican al estado actual de la aplicacin. Tambin puede desactivar un control empleado
fundamentalmente con fines de presentacin, como un cuadro de texto que proporciona informacin de slo lectura.
Si desactiva un control Timer estableciendo Enabled a False cancelar la cuenta atrs establecida por la propiedad
Interval del control.

Ejemplo de la propiedad Enabled


Este ejemplo habilita un control CommandButton siempre que un control TextBox contenga texto. Para probar este
ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario con controles CommandButton y TextBox, y
despus presione F5 y escriba algo en el cuadro de texto.
Private Sub Form_Load ()
Text1.Text = "" ' Borra el cuadro de texto.
Command1.Caption = "Guardar" ' Coloca el ttulo del botn.
End Sub
Private Sub Text1_Change ()
If Text1.Text = "" Then ' Mira si el cuadro de texto est vaco.
Command1.Enabled = False
' Deshabilita el botn.
Else
Command1.Enabled = True
' Habilita el botn.
End If
Pgina 82 de 159

Curso Visual Basic 5.0


End Sub

15.13-FontBold, FontItalic, FontStrikethru, FontUnderline.


Aplicable a:
Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form, Control Frame, Control
Label, Control ListBox, Control OptionButton, Control PictureBox, Control TextBox.
Devuelve o establece los estilos de fuente en los siguientes formatos: Negrita, Cursiva, Tachado y Subrayado.
Sintaxis
objeto.FontBold [= booleano]
objeto.FontItalic [= booleano]
objeto.FontStrikethru [= booleano]
objeto.FontUnderline [=booleano]
La sintaxis de las propiedades FontBold, FontItalic, FontStrikethru y FontUnderline consta de las siguientes partes:
Parte Descripcin
objeto
Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
Booleano Una expresin booleana que especifica el estilo de fuente, segn se indica en Valores.
Valores
Los valores admitidos para booleano son:
Valor Descripcin
True
(Predeterminado para FontBold). Habilita el formato en el estilo correspondiente.
False (Predeterminado para FontItalic, FontStrikethru y FontUnderline) Deshabilita el formato en el estilo
correspondiente.
Comentarios
Utilice estas propiedades de fuente para dar formato al texto, ya sea en tiempo de diseo mediante la ventana
Propiedades o en tiempo de ejecucin a travs de cdigo. En el caso de los controles PictureBox y los objetos Form y
Printer, establecer estas propiedades no afecta a los grficos ni al texto ya dibujados en el control u objeto. Para todos
los dems controles, las modificaciones en la fuente se hacen efectivas en la pantalla inmediatamente.
Nota Las fuentes disponibles en Visual Basic varan dependiendo de la configuracin del sistema y de los dispositivos
de presentacin e impresin. En las propiedades relacionadas con las fuentes slo pueden establecerse valores para los
que existan fuentes en el sistema.
En general, deber modificar la propiedad FontName antes de establecer los atributos de tamao y estilo con las
propiedades FontSize, FontBold, FontItalic, FontStrikethru y FontUnderline. Sin embargo, cuando especifique un
tamao inferior a 8 puntos para una fuente TrueType, debe establecer el tamao en puntos con la propiedad FontSize,
despus especificar la propiedad FontName y despus establecer de nuevo el tamao con FontSize. El entorno
operativo Microsoft Windows utiliza una fuente distinta para las fuentes TrueType con un tamao inferior a 8 puntos.
Ejemplo de las propiedades FontBold, FontItalic, FontStrikethru y FontUnderline
En este ejemplo se escribe texto en un formulario con una de entre dos combinaciones de estilos con cada clic del mouse
(ratn). Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario, presione F5 y haga clic
en el formulario.
Private Sub Form_Click ()
FontStrikethru = Not FontStrikethru
FontItalic = Not FontItalic
Print "Ahora es el momento!"
End Sub

' Alternar el tachado.


' Alternar el estilo de la fuente.
' Imprimir texto.

Pgina 83 de 159

Curso Visual Basic 5.0

15.14-FontName
Aplicable a:
Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form, Control Frame, Control
Label, Control ListBox, Control OptionButton, Control PictureBox, Control TextBox.
Devuelve o establece la fuente utilizada para mostrar texto en un control o en una operacin de dibujo o impresin en
tiempo de ejecucin.
Sintaxis
objeto.FontName [= fuente]
La sintaxis de la propiedad FontName consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
fuente Una expresin de cadena que especifica el nombre de la fuente que se va a utilizar.
Comentarios
El valor predeterminado de esta propiedad lo determina el sistema. Las fuentes disponibles en Visual Basic varan
dependiendo de la configuracin del sistema y de los dispositivos de presentacin e impresin. En las propiedades
relacionadas con fuentes slo pueden establecerse valores para los que exista una fuente.
En general, deber modificar FontName antes de establecer los atributos de tamao y estilo con las propiedades
FontSize, FontBold, FontItalic, FontStrikethru y FontUnderline.
Ejemplo de la propiedad FontName
En este ejemplo se escribe el nombre de cada fuente usando como fuente ella misma. Para probar este ejemplo, pegue el
cdigo en la seccin Declaraciones de un formulario. Presione F5 para ejecutar el programa y luego haga clic en el
formulario. Cada vez que haga clic en el formulario aparecer el nombre de la fuente.
Private Sub Form_Click ()
Static I
' Declarar variables.
Dim OldFont
OldFont = FontName
' Conservar la fuente original.
FontName = Screen.Fonts(I)
' Cambiar a una nueva fuente.
Print Screen.Fonts(I)
' Imprimir el nombre de la fuente.
I = I + 1 ' Incrementar el contador.
If I = FontCount Then I = 0
' Comenzar.
FontName = OldFont
' Restaurar la fuente original.
End Sub

15.15-FontSize
Aplicable a:
Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form, Control Frame, Control
Label, Control ListBox, Control OptionButton, Control PictureBox, Control TextBox.
Devuelve o establece el tamao de la fuente que se va a utilizar para el texto mostrado en un control o en una operacin
de dibujo.
Sintaxis
objeto.FontSize [= puntos]

Pgina 84 de 159

Curso Visual Basic 5.0


La sintaxis de la propiedad FontSize consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
puntos Una expresin numrica que especifica el tamao de fuente que se va a utilizar, en puntos.

Comentarios
Utilice esta propiedad para dar al texto el tamao que desee. El valor predeterminado est determinado por el sistema.
Para cambiar este valor, especifique el nuevo tamao de la fuente en puntos.
El valor mximo de FontSize es 2160 puntos.
Nota Las fuentes disponibles en Visual Basic varan dependiendo de la configuracin del sistema y de los dispositivos
de presentacin e impresin. En las propiedades relacionadas con las fuentes slo pueden establecerse valores para los
que exista una fuente.
En general, deber modificar FontName antes de establecer los atributos de tamao y estilo con las propiedades
FontSize, FontBold, FontItalic, FontStrikethru y FontUnderline. Sin embargo, cuando especifique un tamao
inferior a 8 puntos para una fuente TrueType, primero deber establecer el tamao en puntos con la propiedad FontSize,
despus especificar la propiedad FontName y por ltimo establecer de nuevo el tamao con FontSize. El entorno
operativo Microsoft Windows utiliza una fuente distinta para las fuentes TrueType con un tamao inferior a 8 puntos.
Ejemplo de la propiedad FontSize
En este ejemplo se escribe texto en un formulario con uno de entre dos tamaos en puntos con cada clic del mouse. Para
probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario. Presione F5 para ejecutar el
programa y luego haga clic en el formulario.
Private Sub Form_Click ()
FontSize = 24
' Establecer FontSize.
Print "ste es un tipo de 24 puntos." ' Imprimir con el tipo grande.
FontSize = 8
' Establecer FontSize.
Print "ste es un tipo de 8 puntos."
'Imprimir con el tipo pequeo.
End Sub

15.16-Heigth, Width
Aplicable a:
Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form, Control Frame,
Controles HScrollBar y VScrollBar, Control Image, Control Label, Control ListBox, Control OptionButton, Control
PictureBox, Control Shape, Control TextBox.
Sintaxis
objeto.Height [= nmero]
objeto.Width [= nmero]
La sintaxis de las propiedades Height y Width consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
nmero Una expresin numrica que especifica las dimensiones del objeto, segn se indica en Valores.
Valores
Las medidas se calculan de la siguiente forma:
Form: alto y ancho externos del formulario, incluyendo los bordes y la barra de ttulo.
Control: se mide desde el centro del borde del control, de forma que los controles con anchos de borde distintos se
alineen correctamente. Estas propiedades utilizan las unidades de escala del contenedor de un control.
Comentarios
Pgina 85 de 159

Curso Visual Basic 5.0


Para los objetos Form estas propiedades se miden siempre en twips. Para los formularios y controles, los valores de
estas propiedades cambian cuando el usuario o el cdigo modifican el tamao del objeto. Los lmites mximos de estas
propiedades para todos los objetos dependen del sistema.
Utilice las propiedades Height, Width, Left y Top para realizar operaciones o clculos que impliquen el rea total de un
objeto, como puede ser mover el objeto o cambiar su tamao. Utilice las propiedades ScaleLeft, ScaleTop, ScaleHeight
y ScaleWidth para realizar operaciones o clculos que impliquen solamente el rea interna de un objeto, como dibujar o
mover objetos dentro de otro objeto.
Ejemplo de las propiedades Height y Width
En este ejemplo se establece como tamao de un formulario el 75 por ciento del tamao de la pantalla y se centra el
formulario al cargarlo. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario. Presione
F5 y haga clic en el formulario.
Private Sub Form_Click ()
Width = Screen.Width * .75
Height = Screen.Height * .75
Left = (Screen.Width - Width) / 2
Top = (Screen.Height - Height) / 2
End Sub

' Establecer el ancho del formulario.


' Establecer el alto del formulario.
' Centrar el formulario horizontalmente.
' Centrar el formulario verticalmente.

15.17-Icon
Aplicable a:
Objeto Form.
Devuelve el icono que aparece al minimizar un formulario en tiempo de ejecucin.

Sintaxis
objeto.Icon
El marcador de posicin objeto representa una expresin de objeto que da como resultado un objeto de la lista Aplicable
a.
Comentarios
Utilice esta propiedad para especificar un icono para cualquier formulario que el usuario pueda minimizar en tiempo de
ejecucin.
Por ejemplo, puede asignar a un formulario un icono nico que indique su funcin. Especifique el icono cargndolo
mediante la ventana Propiedades en tiempo de diseo. El archivo que cargue debe tener la extensin .ico y el formato
correspondiente. Si no especifica ningn icono, se utilizar el icono predeterminado para los formularios en Visual
Basic.
Puede utilizar como origen de iconos la biblioteca de iconos de Visual Basic (ubicada en el subdirectorio Icons). Cuando
crea un archivo ejecutable, puede asignar un icono a la aplicacin mediante la propiedad Icon de cualquier formulario
de la misma.
Nota Puede ver un icono de formulario en la esquina superior izquierda del formulario en Windows 95, o cuando se
minimiza el formulario en Windows 95 y en Windows NT. Si el formulario est minimizado, el valor de la propiedad
BorderStyle debe ser 1 (Fixed Single, Simple fijo) o 2 (Sizable, Tamao ajustable), y el de la propiedad MinButton
debe ser True para que el icono sea visible.
En tiempo de ejecucin puede asignar el valor de la propiedad Icon de un objeto a la propiedad DragIcon o Icon de otro
objeto distinto. Tambin puede asignar un icono obtenido con la funcin LoadPicture. Si utiliza la funcin

Pgina 86 de 159

Curso Visual Basic 5.0


LoadPicture sin argumentos, se asigna un icono vaco (nulo) al formulario, lo que permite dibujar sobre el icono en
tiempo de ejecucin.

15.18-Index (Matriz de Controles)


Aplicable a:
Control CheckBox, Control ComboBox, Control CommandButton, Control Data Control Frame, Controles HScrollBar y
VScrollBar, Control Image, Control Label, Control Line, Control ListBox, Control Menu, Control OptionButton,
Control PictureBox, Control Shape, Control TextBox, Control Timer.
Devuelve o establece el nmero que identifica un control de forma exclusiva en una matriz de controles. Slo est
disponible si el control forma parte de una matriz de controles.
Sintaxis
objeto[(nmero)].Index
La sintaxis de la propiedad Index consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
nmero Una expresin numrica que da como resultado un entero que identifica un control individual en una matriz de
controles.
Valores
Los valores admitidos para nmero son:
Valor Descripcin
Ningn valor
(Predeterminado) No forma parte de una matriz de controles.
0 a 32.767
Parte de una matriz. Especifica un entero mayor o igual que 0 que identifica un control en una matriz de
controles. Todos los controles de una matriz de controles tienen la misma propiedad Name. Visual Basic asigna
automticamente el siguiente entero disponible de la matriz de controles.
Comentarios
Puesto que los elementos de matrices de controles comparten el mismo valor de la propiedad Name, deber utilizar la
propiedad Index en cdigo para especificar un determinado control de la matriz. Index debe aparecer como un entero (o
una expresin numrica que da como resultado un entero) entre parntesis al lado del nombre de la matriz de controles;
por ejemplo, MisBotones(3). Tambin puede utilizar el valor de la propiedad Tag para distinguir un control de otro en
una matriz de controles.
Cuando un control de la matriz reconoce que se ha producido un evento, Visual Basic llama al procedimiento de evento
de la matriz de controles y pasa el valor de Index correspondiente como argumento adicional.
Aunque Visual Basic asigna de forma predeterminada el siguiente entero disponible como valor de Index para un nuevo
control de una matriz de controles, puede anular este valor asignado y omitir enteros. Tambin puede establecer Index a
un entero distinto de 0 para el primer control de la matriz. Si hace referencia a un valor Index en el cdigo que no
identifica uno de los controles de una matriz de controles, se producir un error en tiempo de ejecucin de Visual
Basic.
Nota Para quitar un control de una matriz de controles, cambie el valor de la propiedad Name del control y elimine el
valor de su propiedad Index.

Ejemplo de la propiedad Index


Este ejemplo comienza con dos controles OptionButton y agrega un nuevo OptionButton al formulario cada vez que
hace clic en un control CommandButton.

Pgina 87 de 159

Curso Visual Basic 5.0


Private Sub Command1_Click ()
Static MaxIdx ' ndice mayor de la matriz.
If MaxIdx = 0 Then MaxIdx = 1 ' MaxIdx preestablecido.
MaxIdx = MaxIdx + 1
' Incrementa el ndice.
If MaxIdx > 7 Then Exit Sub
' Coloca ocho botones en el formulario.
Load OptButton(MaxIdx)
' Crea nuevos elementos en la matriz.
' Establece la ubicacin del nuevo botn de opciones bajo un botn previo.
OptButton(MaxIdx).Top = OptButton(MaxIdx - 1).Top + 360
OptButton(MaxIdx).Visible = True ' Hace visible el nuevo botn.
End Sub

15.19-ListCount
Aplicable a:
Control ComboBox, Control ListBox
Devuelve el nmero de elementos de la parte de lista de un control.
Sintaxis
objeto.ListCount
El marcador de posicin objeto representa una expresin de objeto que da como resultado un objeto de la lista Aplicable
a.
Comentarios
ListCount proporciona informacin especfica de cada control:
Controles ComboBox y ListBox: el nmero de elementos de la lista.
Si no hay seleccionado ningn elemento, el valor de la propiedad ListIndex es 1. El primer elemento de la lista
corresponde a ListIndex = 0 y ListCount es siempre una unidad mayor que el valor mximo de ListIndex.
Ejemplo de la propiedad ListCount
En este ejemplo se carga la lista de fuentes de impresora en un control ComboBox, se muestra el primer elemento de la
lista y se escribe el nmero total de fuentes. Cada vez que se hace clic en el botn de comando, todos los elementos de la
lista cambian a maysculas o a minsculas. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un
formulario que contenga un control ComboBox (Style = 2) y un control CommandButton, presione F5 y haga clic en
el control CommandButton.
Private Sub Form_Load ()
Dim I
' Declarar la variable.
AutoRedraw = True
' Establecer AutoRedraw.
For I = 0 To Printer.FontCount - 1 ' Poner los nombre de las fuentes en una lista.
Combo1.AddItem Printer.Fonts(I)
Next I
Combo1.ListIndex = 0
' Establecer el texto del primer elemento.
' Imprimir la informacin de ListCount en el formulario.
Print "Nmero de fuentes de impresora: "; Combo1.ListCount
End Sub
Private Sub Command1_Click ()
Static UpperCase
Dim I ' Declarar variable.
For I = 0 To Combo1.ListCount - 1' Bucle por la lista.
If UpperCase Then
Pgina 88 de 159

Curso Visual Basic 5.0


Combo1.List(I) = UCase(Combo1.List(I))
Else
Combo1.List(I) = LCase(Combo1.List(I))
End If
Next I
UpperCase = Not UpperCase

' Cambiar maysculas y minsculas.

End Sub

15.20-ListIndex
Aplicable a:
Control ComboBox, Control ListBox
Devuelve o establece el ndice del elemento seleccionado actualmente en el control. No est disponible en tiempo de
diseo.

Sintaxis
objeto.ListIndex [= ndice]
La sintaxis de la propiedad ListIndex consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
ndice Una expresin numrica que especifica el ndice del elemento actual, segn se indica en Valores.
Valores
Los valores admitidos para ndice son:
Valor Descripcin
1
(Predeterminado para los controles ComboBox) Indica que actualmente no hay ningn elemento
seleccionado. Para un control ComboBox indica que el usuario ha escrito texto nuevo en la parte de
cuadro de texto.
n
(Predeterminado para los controles ListBox) Nmero que indica el ndice del elemento seleccionado
actualmente.

Comentarios
La expresin List(List1.ListIndex) devuelve la cadena correspondiente al elemento seleccionado actualmente.
El primer elemento de la lista corresponde a ListIndex = 0 y ListCount es siembre una unidad mayor que el valor
mximo de ListIndex.
Ejemplo de la propiedad ListIndex
En este ejemplo se muestran los nombres de tres jugadores en un control ListBox y el sueldo del jugador seleccionado
en un control Label. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que
contenga un control ComboBox y un control Label, presione F5 y elija un nombre en el control ComboBox.
Dim Player(0 To 2)
' Dimensionar dos matrices.
Dim Salary(0 To 2)
Private Sub Form_Load ()
Dim I ' Declarar variable.
AutoSize = True
Player(0) = "Daniel Rendich"
' Introducir los datos en las matrices.
Player(1) = "Federico Couto"
Player(2) = "Ernesto Mndez"
Pgina 89 de 159

Curso Visual Basic 5.0


Salary(0) = "234.500$"
Salary(1) = "158.900$"
Salary(2) = "1.030.500$"
For I = 0 To 2
' Agregar los nombres a la lista.
Combo1.AddItem Player(I)
Next I
Combo1.ListIndex = 0
' Mostrar el primer elemento de la lista.
End Sub
Private Sub Combo1_Click ()
' Mostrar el salario correspondiente al nombre.
Label1.Caption = Salary(Combo1.ListIndex)
End Sub

15.21-Locked
Aplicable a:
Control TextBox
Devuelve o establece un valor que indica si un control se puede modificar.
Sintaxis
objeto.Locked [ = booleano]
La sintaxis de la propiedad Locked consta de las siguientes partes:
Parte
Descripcin
objeto
Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
Booleano Una expresin booleana que especifica si el control se puede modificar, como se describe en
Valores.
Valores
Los valores admitidos para booleano son:
Valor Descripcin
True
Control TextBox: el texto del control se puede desplazar y resaltar, pero no se puede modificar. El
programa puede cambiar el texto si cambia la propiedad Text.
False Control TextBox: puede modificar el texto del control.

15.22-MousePointer
Aplicable a:
Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form Control Frame,
Controles HScrollBar y VScrollBar, Control Image, Control Label, Control ListBox, Control OptionButton, Control
PictureBox, Control TextBox.
Devuelve o establece un valor que indica el tipo de puntero de mouse que aparece cuando se sita el mouse sobre un
rea determinada de un objeto en tiempo de ejecucin.

Sintaxis
objeto.MousePointer [= valor]
La sintaxis de la propiedad MousePointer consta de las siguientes partes:
Pgina 90 de 159

Curso Visual Basic 5.0


Parte
objeto
valor

Descripcin
Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
Un nmero entero que especifica el tipo de puntero de mouse que aparece, segn se describe en
Valores.

Valores
Los valores admitidos para valor son:
Constante
Valor
Descripcin
vbDefault
0
(Predeterminado) Forma determinada por el objeto.
VbArrow
1
Flecha.
VbCrosshair
2
Cruz (puntero en forma de cruz).
VbIbeam
3
Forma de I.
VbIconPointer
4
Icono (pequeo cuadrado dentro de otro cuadrado).
VbSizePointer
5
Tamao (flecha de cuatro puntas: norte, sur, este y oeste).
VbSizeNESW
6
Tamao NE SO (flecha doble que apunta al nordeste y al sudoeste).
VbSizeNS
7
Tamao N S (flecha doble que apunta al norte y al sur).
VbSizeNWSE
8
Tamao NO SE (flecha doble que apunta al noroeste y al sudeste).
VbSizeWE
9
Tamao O E (flecha doble que apunta al oeste y al este).
VbUpArrow
10
Flecha hacia arriba.
VbHourglass
11
Reloj de arena (espera).
VbNoDrop
12
No colocar.
VbArrowHourglass
13
Flecha y reloj de arena.
VbArrowQuestion
14
Flecha y signo de interrogacin.
vbSizeAll
15
Ajustar todo.
vbCustom
99
Icono personalizado especificado en la propiedad MouseIcon.

Comentarios
Puede utilizar esta propiedad cuando desee indicar los cambios en la funcionalidad al desplazar el puntero del mouse por
los controles de un formulario o cuadro de dilogo. La opcin de reloj de arena (11) es til para indicar que el usuario
debe esperar a que termine un proceso u operacin.
Ejemplo de la propiedad MousePointer
En este ejemplo se cambia el puntero del mouse por un reloj de arena mientras se dibujan crculos en la pantalla y al
final del procedimiento el puntero adopta la forma que tena originalmente. Para probar este ejemplo, pegue el cdigo en
la seccin Declaraciones de un formulario. Presione F5 para ejecutar el programa y luego haga clic en el formulario.
Private Sub Form_Click ()
Dim I ' Declara una variable.
' Cambia el puntero del mouse por un reloj de arena.
Screen.MousePointer = vbHourglass
' Establece un color aleatorio y dibuja crculos en el formulario.
For I = 0 To ScaleWidth Step 50
ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255)
Circle (I, ScaleHeight * Rnd), 400
Next
' Vuelve al puntero normal.
Screen.MousePointer = vbDefault
End Sub

15.23-Multiline
Aplicable a:
Pgina 91 de 159

Curso Visual Basic 5.0


Control TextBox.
Devuelve o establece un valor que indica si un control TextBox acepta y muestra mltiples lneas de texto. Es de slo
lectura en tiempo de ejecucin.

Sintaxis
objeto.MultiLine
El marcador de posicin objeto representa una expresin de objeto que da como resultado un objeto de la lista
Aplicable a.
Valores
Los valores admitidos para la propiedad MultiLine son:
Valor Descripcin
True
Permite mltiples lneas de texto.
False (Predeterminado) Pasa por alto los retornos de carro y restringe los datos a una nica lnea.

Comentarios
Los controles TextBox de mltiples lneas ajustan el texto a la lnea siguiente cuando el usuario se extiende ms all del
cuadro de texto.
Tambin puede agregar barras de desplazamiento a los controles TextBox ms grandes, utilizando para ello la propiedad
ScrollBars. Si no se especifica un control de barra de desplazamiento horizontal, el texto de los controles TextBox de
mltiples lneas se ajustar automticamente a la lnea siguiente.
Nota En los formularios sin ningn botn predeterminado, al presionar ENTRAR en un control TextBox de mltiples
lneas, el enfoque pasa a la lnea siguiente. Si existe un botn predeterminado, deber presionar CTRL+ENTRAR para
pasar a la lnea siguiente.

15.24-Name
Aplicable a:
Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form, Control Frame,
Controles HScrollBar y VScrollBar, Control Image, Control Label, Control Line, Control Menu, Control OptionButton,
Control PictureBox, Control Shape, Control TextBox, Control Timer.
Devuelve el nombre utilizado en el cdigo para identificar un formulario, un control o un objeto de acceso a datos. Es de
slo lectura en tiempo de ejecucin.

Sintaxis
objeto.Name
El marcador de posicin objeto representa una expresin de objeto que da como resultado un objeto de la lista
Aplicable a. Si se omite objeto, se supondr que el formulario asociado al mdulo del formulario activo es objeto.
Comentarios
El nombre predeterminado para objetos nuevos es el tipo de objeto y un entero nico. Por ejemplo, el primer objeto
Form nuevo ser Form1 y el tercer control TextBox que cree en un formulario ser Text3.
La propiedad Name de un objeto debe comenzar por una letra y puede tener un mximo de 40 caracteres. Puede incluir
nmeros y caracteres de subrayado (_), pero no signos de puntuacin ni espacios en blanco. Aunque el valor de la
propiedad Name puede ser una palabra clave, un nombre de propiedad o el nombre de otro objeto, esto puede crear
conflictos en el cdigo.
Pgina 92 de 159

Curso Visual Basic 5.0


Puede crear un conjunto de controles del mismo tipo si establece la propiedad Name al mismo valor. Por ejemplo,
cuando establece el nombre de todos los botones de opcin en un grupo como MiOpc, Visual Basic asigna valores
nicos a la propiedad Index de cada control con el fin de distinguir unos de otros en la matriz. Dos controles de distinto
tipo no pueden tener el mismo nombre.
Nota Aunque Visual Basic usa a menudo el valor de la propiedad Name como valor predeterminado de las propiedades
Caption y Text, el cambio de una de estas propiedades no afecta a las otras.

15.25-NewIndex
Aplicable a:
Control ComboBox, Control ListBox.
Devuelve el ndice del ltimo elemento agregado a un control ComboBox o ListBox. Es de slo lectura en tiempo de
ejecucin.
Sintaxis
objeto.NewIndex
El marcador de posicin objeto representa una expresin de objeto que da como resultado un objeto de la lista
Aplicable a.

Comentarios
Puede utilizar esta propiedad con listas ordenadas cuando necesite una lista de valores asociados a cada elemento de la
matriz de la propiedad ItemData. Al agregar un elemento a una lista ordenada, Visual Basic lo inserta en orden
alfabtico. Esta propiedad indica la posicin en la que se ha insertado el elemento, de forma que pueda insertar el valor
correspondiente en la propiedad ItemData con el mismo ndice.
La propiedad NewIndex devuelve -1 cuando no hay ningn elemento en la lista o cuando se ha eliminado un elemento
despus de agregar el ltimo elemento.

15.26-ItemData
Aplicable a:
Control ComboBox, Control ListBox.
Devuelve o establece un nmero especfico para cada elemento de un control ComboBox o ListBox.
Sintaxis
objeto.ItemData(ndex) [= nmero]
La sintaxis de la propiedad ItemData consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
ndice El nmero de un elemento concreto del objeto.
nmero El nmero que se asocia con el elemento especificado.
Comentarios
La propiedad ItemData es una matriz de valores enteros largos cuyo nmero de elementos es el valor de la propiedad
List de un control. Puede utilizar los nmeros asociados con cada elemento para identificar los elementos. Por ejemplo,
puede usar un nmero de identificacin de empleado para identificar cada nombre de empleado de un control ListBox.
Pgina 93 de 159

Curso Visual Basic 5.0


Cuando llena el ListBox, tambin se llenan los elementos correspondientes de la matriz ItemData con los nmeros de
empleado.
La propiedad ItemData se usa a menudo como ndice de una matriz de estructuras de datos asociadas con los elementos
de un control ListBox.
Nota Cuando inserta un elemento en una lista con el mtodo AddItem, el elemento tambin se inserta
automticamente en la matriz ItemData. Sin embargo, el valor no se reinicia a cero; conserva el valor que haba en esa
posicin antes agregar el elemento a la lista. Cuando use la propiedad ItemData, asegrese de establecer su valor al
agregar nuevos elementos a la lista.

Ejemplo de la propiedad ItemData


Este ejemplo llena un control ListBox con nombres de empleados y llena la matriz de propiedades ItemData con
nmeros de empleados usando la propiedad NewIndex para mantener los nmeros sincronizados con la lista ordenada.
Un control Label presenta el nombre y el nmero de un elemento cuando el usuario hace una seleccin en la lista. Para
probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un control ListBox y
un control Label. Establezca la propiedad Sorted del ListBox a True, y despus presione F5 y haga clic en el control
ListBox.
Private Sub Form_Load ()
' Llena List1 y la matriz ItemData con los
' elementos correspondientes ordenados.
List1.AddItem "Judy Phelps"
List1.ItemData(List1.NewIndex) = 42310
List1.AddItem "Chien Lieu"
List1.ItemData(List1.NewIndex) = 52855
List1.AddItem "Mauro Sorrento"
List1.ItemData(List1.NewIndex) = 64932
List1.AddItem "Cynthia Bennet"
List1.ItemData(List1.NewIndex) = 39227
End Sub
Private Sub List1_Click ()
' Agrega el nmero y el nombre del empleado.
Msg = List1.ItemData(List1.ListIndex) & " "
Msg = Msg & List1.List(List1.ListIndex)
Label1.Caption = Msg
End Sub

15.27-PassWordChar
Aplicable a:
Control TextBox.
Devuelve o establece un valor que indica si en un control TextBox aparecen los caracteres que escribe el usuario o un
carcter marcador de posicin. Devuelve o establece el carcter utilizado como marcador de posicin.
Sintaxis
objeto.PasswordChar [= valor]
La sintaxis de la propiedad PasswordChar consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
Pgina 94 de 159

Curso Visual Basic 5.0


valor

Una expresin de cadena que especifica el carcter marcador de posicin.

Comentarios
Utilice esta propiedad para crear un campo de contrasea en un cuadro de dilogo. Aunque puede utilizarse cualquier
carcter como marcador de posicin, la mayora de las aplicaciones para Windows usan el asterisco (*) (Chr(42)).
Esta propiedad no afecta a la propiedad Text, que contiene exactamente lo que haya escrito el usuario o lo que se haya
establecido con el cdigo. Para mostrar el texto real, establezca PasswordChar a una cadena de longitud cero (""), que
es la opcin predeterminada.
Puede asignar cualquier cadena a esta propiedad, pero slo ser significativo el primer carcter, pasndose por alto todos
los dems.
Nota Si la propiedad MultiLine est establecida a True, la propiedad PasswordChar no tendr efecto.

Ejemplo de la propiedad PasswordChar


En este ejemplo se ilustra cmo la propiedad PasswordChar afecta a la forma en que un control TextBox muestra el
texto. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un control
TextBox, presione F5 y haga clic en el formulario. Cada vez que haga clic en el formulario, el texto alternar entre el
carcter asterisco (*) de contrasea y texto normal.
Private Sub Form_Click ()
If Text1.PasswordChar = "" Then
Text1.PasswordChar = "*"
Else
Text1.PasswordChar = ""
End If
End Sub

15.28-Picture
Aplicable a:
Control CheckBox, Control CommandButton, Objeto Form, Control Image, Control OptionButton, Control PictureBox.
Devuelve o establece un grfico que se mostrar en un control.
Sintaxis
objeto.Picture [= imagen]
La sintaxis de la propiedad Picture consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
imagen Una expresin de cadena que especifica un archivo que contiene un grfico, segn se indica en Valores.
Valores
Los valores admitidos para imagen son:
Valor
(Ninguno)
(Mapa de bits, icono, metarchivo, GIF, JPEG))

Descripcin
(Predeterminado) Ninguna imagen.
Especifica un grfico que puede cargar mediante la ventana
Propiedades en tiempo de diseo. En tiempo de ejecucin
tambin puede establecer esta propiedad, utilizando la
funcin LoadPicture con un mapa de bits, un icono o un
metarchivo.
Pgina 95 de 159

Curso Visual Basic 5.0

Comentarios
En tiempo de diseo, puede transferir un grfico con el Portapapeles mediante los comandos Copiar, Cortar y Pegar
del men Edicin.
Al establecer la propiedad Picture en tiempo de diseo, el grfico se guarda y se carga con el formulario. Si crea un
archivo ejecutable, la imagen estar contenida en l. Los grficos cargados en tiempo de ejecucin no se guardan con la
aplicacin.
Nota En tiempo de ejecucin puede establecer la propiedad Picture al valor de la propiedad Icon, Image o Picture de
cualquier otro objeto y tambin se le puede asignar un grfico devuelto por la funcin LoadPicture.
Ejemplo de la propiedad Picture
En este ejemplo se cargan iconos de la biblioteca de iconos de Visual Basic en dos controles PictureBox. Al hacer clic
en el formulario, el tercer control PictureBox se utiliza para intercambiar los otros dos. Puede utilizar dos iconos
cualesquiera. Pegue el cdigo en la seccin Declaraciones de un formulario que contenga tres controles PictureBox
(para Picture3, establezca Visible = False). Presione F5 para ejecutar el programa y luego haga clic en el formulario.
Private Sub Form_Load ()
' Cargar los iconos.
Picture1.Picture = LoadPicture("ICONOS\EQUIPO\PAPEL02A.ICO")
Picture2.Picture = LoadPicture("ICONOS\EQUIPO\PAPEL02B.ICO")
End Sub
Private Sub Form_Click ()
' Cambiar los iconos.
Picture3.Picture = Picture1.Picture
Picture1.Picture = Picture2.Picture
Picture2.Picture = Picture3.Picture
' Borrar la tercera imagen (no es necesario si no est visible).
Picture3.Picture = LoadPicture()
End Sub

15.29-Recordset
Aplicable a:
Control Data.
Devuelve o establece un objeto Recordset definido por las propiedades de un control Data o por un objeto Recordset
existente.
Sintaxis
Set objeto.Recordset [= valor ]
La sintaxis de la propiedad Recordset consta de estas partes:
Parte Descripcin
objeto Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a.
valor Una variable de objeto que contiene un objeto Recordset.
Comentarios
El control Data se inicializa automticamente cuando se inicia la aplicacin antes del procedimiento inicial Form_Load.
Si son vlidas las propiedades Connect, DatabaseName, Options, RecordSource, Exclusive, ReadOnly y
Pgina 96 de 159

Curso Visual Basic 5.0


RecordsetType, o si establece estas propiedades del control Data en tiempo de ejecucin y utiliza el mtodo Refresh, el
motor de base de datos Microsoft Jet intentar crear un nuevo objeto Recordset basado en esas propiedades. Es posible
tener acceso a este Recordset a travs de la propiedad Recordset de un control Data. Sin embargo, si una o ms de
estas propiedades se establecen de forma incorrecta en tiempo de diseo, puede ocurrir un error no interceptable cuando
Visual Basic intente usar las propiedades para abrir la base de datos determinada y crear el objeto Recordset.
Tambin puede solicitar el tipo de Recordset que se va a crear si establece la propiedad RecordsetType del control
Data Si no solicita un tipo especfico, se crear un Recordset de tipo dynaset. Si utiliza la propiedad RecordsetType
podr solicitar la creacin de un Recordset de tipo table, snapshot o dynaset. Sin embargo, si el motor Jet no puede
crear el tipo solicitado, se producir un error interceptable.
En la mayora de los casos, el tipo predeterminado y la configuracin del objeto Recordset que se ha creado es poco
eficiente. Es decir, puede que no necesite un cursor actualizable, con desplazamiento completo y basado en claves para
tener acceso a los datos. Por ejemplo, puede ser ms rpido crear un Recordset de tipo snapshot de slo lectura que el
Recordset predeterminado. Asegrese de que elige el tipo ms eficiente estableciendo las propiedades Exclusive,
Options y ReadOnly segn su situacin.
Es posible que no se pueda actualizar un Recordset aunque solicite un Recordset de tipo dynaset o table. Si no se puede
actualizar la base de datos, la tabla o el campo subyacente, es posible que el Recordset completo o partes de l sean de
slo lectura. Examine la propiedad Updatable de los objetos Database y Recordset o la propiedad DataUpdatable del
objeto Field para determinar si el cdigo puede modificar los registros. Incluso si la propiedad DataUpdatable devuelve
True, hay situaciones en las que los campos de datos subyacentes pueden no ser actualizables; por ejemplo, puede que
no tenga permisos suficientes para realizar cambios. Puede haber tambin otros factores que impidan la actualizacin de
campos.
El nmero de registros devueltos por el Recordset puede determinarse desplazndose al ltimo registro del Recordset y
examinando la propiedad RecordCount del objeto Recordset. Antes de desplazarse al ltimo registro, el valor devuelto
por la propiedad RecordCount slo indica el nmero de filas procesadas por el motor Jet. El ejemplo siguiente muestra
cmo combinar la propiedad RecordCount de un Recordset con la propiedad Recordset para mostrar el nmero de
registros del conjunto de registros de un control Data:
Data1.Recordset.MoveLast
MsgBox "Registros: " & Data1.Recordset.RecordCount
Edicin profesional y Edicin empresarial
Si crea un objeto Recordset mediante cdigo u otro control Data, puede establecer la propiedad Recordset del control
Data a este nuevo Recordset. Cualquier Recordset existente en el control Data y el objeto Database asociado con l se
liberarn cuando se asigne un nuevo Recordset a la propiedad Recordset.
Asegrese de que las propiedades DataField de los controles enlazados conectados al control Data se establecen de
forma que coincidan con los nombres de campo del nuevo objeto Recordset.
Por ejemplo, para crear un Recordset en cdigo y pasarlo a un control Data existente:
Dim Db As Database, Rs As Recordset
' Definidas como variables pblicas.
Sub ApplyRecordset()
Set Db = Workspaces(0).OpenDatabase("BIBLIO.MDB")
Set Rs = Db.OpenRecordset("AUTHORS") ' De forma predeterminada el objeto Table.
Set Data1.Recordset = Rs ' Asigna el Recordset.
Data1.Recordset.Index = "PrimaryKey"
Debug.Print Rs.Type
' Muestra el tipo creado.
End Sub
Nota El control Data no es compatible con objetos Recordset de tipo forward-only (desplazamiento slo hacia
adelante). Si intenta asignar al control Data un objeto Recordset de tipo forward-only, ocurre un error interceptable.
Importante Siempre puede hacer referencia a las propiedades del Recordset del control Data mediante la propiedad
Recordset. Si hace referencia directamente al Recordset, podr determinar el Index que va a utilizar con objetos Table,
la coleccin Parameters de un objeto QueryDef o el tipo de Recordset.
Tipo de datos
Recordset

Pgina 97 de 159

Curso Visual Basic 5.0

15.30-RecordsetType
Aplicable a:
Control Data.
Devuelve o establece un valor que indica el tipo de objeto Recordset que desea que cree el control Data.
Sintaxis
objeto.RecordsetType [= valor ]
La sintaxis de la propiedad RecordsetType consta de estas partes:
Parte Descripcin
objeto Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a
valor Una constante o un valor que indica el tipo de Recordset, como se describe en Valores
Valores
Los valores admitidos para valor son los siguientes:
Configuracin
Valor
Descripcin
VbRSTypeTable
0
Un Recordset de tipo table
vbRSTypeDynaset
1
(Predeterminado) Un Recordset de tipo dynaset
vbRSTypeSnapshot
2
Un Recordset de tipo snapshot
Comentarios
Si el motor de base de datos Microsoft Jet no puede crear el tipo de Recordset que ha solicitado, se produce un error
interceptable.
Si no especifica un RecordsetType antes de que el control Data cree el Recordset, se crear si es posible un Recordset
de tipo dynaset.
En la mayora de los casos, el tipo predeterminado y la configuracin del objeto Recordset que se ha creado es poco
eficiente. Es decir, puede que no necesite un cursor actualizable, con desplazamiento completo y basado en claves para
tener acceso a los datos. Por ejemplo, un Recordset de tipo snapshot con desplazamiento slo hacia adelante de slo
lectura puede ser ms rpido de crear que el cursor predeterminado. Asegrese de que elige el tipo ms eficiente
estableciendo las propiedades RecordsetType, Exclusive, Options y ReadOnly segn su situacin.
Tipo de datos
Integer
Ejemplo de la propiedad RecordsetType
Este ejemplo utiliza el control Data para crear un objeto Recordset y examina la propiedad RecordsetType del control
Data para determinar el tipo de conjunto de registros creado.
Sub DisplayRecordsetType()
' Indica el tipo de Recordset deseado.
Data1.RecordsetType = vbRSTypeDynaset
Data1.DatabaseName = "BIBLIO.MDB"
Data1.RecordSource = "Authors"
Data1.Refresh
Select Case Data1.RecordsetType
Case vbRSTypeTable
Debug.print "Creado Recordset de tipo Table."
Case vbRSTypeDynaset
Debug.print "Creado Recordset de tipo Dynaset."
Pgina 98 de 159

Curso Visual Basic 5.0


Case vbRSTypeSnapshot
Debug.print "Creado Recordset de tipo Snapshot."
End Select
End Sub

15.31-RecordSource
Aplicable a:
Control Data.
Devuelve o establece la tabla, la instruccin SQL o el objeto QueryDef subyacente para un control Data.

Sintaxis
Objeto.RecordSource [= valor]
La sintaxis de la propiedad RecordSource consta de estas partes:
Parte Descripcin
objeto Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a.
valor Una expresin de cadena que especifica un nombre, como se describe en Valores.
Valores
Los valores admitidos para valor son los siguientes:
Valor
Descripcin
Un nombre de tabla
El nombre de una de las tablas definidas en la coleccin TableDefs del objeto
Database.
Una consulta SQL
Una cadena SQL vlida que utiliza una sintaxis apropiada para el origen de datos.
Un QueryDef
El nombre de uno de los objetos QueryDef de la coleccin QueryDefs del objeto
Database, al tener acceso a una base de datos de Jet.
Comentarios
La propiedad RecordSource especifica el origen de los registros accesibles a travs de controles enlazados del
formulario.
Si establece la propiedad RecordSource al nombre de una tabla existente en la base de datos, todos los campos de esa
tabla sern visibles en los controles enlazados adjuntos al control Data. Para conjuntos de registros de tipo table
(RecordsetType = vbRSTypeTable), el orden de los registros recuperados lo establece el objeto Index que se
selecciona mediante la propiedad Index del Recordset. Para objetos Recordset de tipo dynaset y snapshot, puede
ordenar los registros usando una instruccin SQL con una clusula Order By en la propiedad RecordSource del control
Data. De lo contrario, los datos se devuelven sin ningn orden en particular.
Si establece la propiedad RecordSource al nombre de un objeto QueryDef existente en la base de datos, todos los
campos devueltos por QueryDef sern visibles para los controles enlazados adjuntos al control Data. El orden de los
registros recuperados lo establece la consulta del objeto QueryDef. Por ejemplo, QueryDef puede incluir una clusula
ORDER BY para cambiar el orden de los registros que devuelve el objeto Recordset creado por el control Data o una
clusula WHERE para filtrar los registros. Si el objeto QueryDef no especifica ningn orden, los datos se devolvern
sin ningn orden concreto.
Nota En tiempo de diseo, los objetos QueryDef mostrados en la ventana Propiedades para la propiedad
RecordSource se filtran para mostrar nicamente los objetos QueryDef que se pueden utilizar con el control Data. No
se muestran los objetos QueryDef que tengan parmetros.
Si establece la propiedad RecordSource a una instruccin SQL que devuelve registros, todos los campos devueltos por
la consulta SQL sern visibles para los controles enlazados adjuntos al control Data. Esta instruccin puede incluir una
clusula ORDER BY para cambiar el orden de los registros devueltos por el objeto Recordset creado por el control
Data o una clusula WHERE para filtrar los registros.

Pgina 99 de 159

Curso Visual Basic 5.0


Nota Cada vez que el objeto QueryDef o la instruccin SQL devuelve un valor de una expresin, el motor de base de
datos Microsoft Jet crea automticamente el nombre de campo de la expresin. El nombre suele ser Expr1 seguido de un
nmero de tres dgitos que comienza por 000. Por ejemplo, la primera expresin se llamara Expr1000.
En la mayora de los casos, es posible que quiera asignar un alias a expresiones de modo que conozca el nombre de la
columna a la que va a enlazar el control enlazado. Para obtener ms informacin al respecto, vea la clusula AS de la
instruccin SQL SELECT.
Despus de cambiar el valor de la propiedad RecordSource en tiempo de ejecucin, deber utilizar el mtodo Refresh
para activar el cambio y volver a generar el Recordset.
En tiempo de ejecucin, si el Recordset especifica un nombre de un tipo Table no vlido, un nombre de QueryDef o
contiene sintaxis de SQL no vlida, se generar un error interceptable. Si el error ocurre durante el procedimiento inicial
Form_Load, el error no ser interceptable.
Nota Asegrese de que cada control enlazado tiene un valor vlido para su propiedad DataField. Si cambia el valor de
la propiedad RecordSource de un control Data y a continuacin utiliza Refresh, el Recordset identificar al nuevo
objeto. Esto puede invalidar los valores de la propiedad DataField de controles enlazados y producir un error
interceptable.
Tipo de datos

String

15.32-Shape
Aplicable a
Control Shape
Devuelve o establece un valor que indica la apariencia de un control Shape.
Sintaxis
objeto.Shape [= valor]
La sintaxis de la propiedad Shape consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
valor Un nmero entero que especifica la apariencia del control, segn se describe en Valores.

Valores
Los valores admitidos para valor son:
Constante
Valor Descripcin
vbShapeRectangle
0 (Predeterminado) Rectngulo
vbShapeSquare
1 Cuadrado
vbShapeOval
2 Elipse
vbShapeCircle
3 Crculo
VbShapeRoundedRectangle 4 Rectngulo redondeado
VbShapeRoundedSquare
5 Cuadrado redondeado
Ejemplo de la propiedad Shape
En este ejemplo se ilustran las seis posibles formas del control Shape. Para probarlo, pegue el cdigo en la seccin
Declaraciones de un formulario que contenga un control OptionButton y un control Shape. En el OptionButton,
establezca a 0 la propiedad Index para crear una matriz de controles de un elemento y presione F5. Haga clic en cada
control OptionButton para ver una forma distinta.
Private Sub Form_Load ()
Pgina 100 de 159

Curso Visual Basic 5.0


Dim I ' Declara una variable.
Option1(0).Caption = "Forma n 0"
For I = 1 To 5
' Crea cinco instancias de Option1.
Load Option1(I)
' Establece la ubicacin del nuevo botn de opcin.
Option1(I).Top = Option1(I - 1).Top + Option1(0).Height + 40
' Establece el ttulo del botn de opcin.
Option1(I).Caption = "Forma n " & I
' Muestra el nuevo botn de opcin.
Option1(I).Visible = True
Next I
End Sub
Private Sub Option1_Click (Index As Integer)
Shape1.Shape = Index
End Sub

15.33-SQL (Objeto QueryDef)


Aplicable a
Objeto QueryDef
Establece o devuelve la instruccin SQL que define la consulta ejecutada por un objeto QueryDef.
Valores devueltos y establecidos
El valor que se puede establecer u obtener es un tipo de datos String que contiene una instruccin SQL.

Comentarios
La propiedad SQL contiene la instruccin SQL que determina cmo se seleccionan, agrupan y ordenan los registros
cuando se ejecuta la consulta. Puede utilizar la consulta para seleccionar registros a incluir en un objeto Recordset de
tipo Dynaset o Snapshot. Tambin puede definir consultas para modificar datos sin devolver registros.
La sintaxis SQL utilizada en una consulta debe ser acorde con el dialecto SQL del motor de consulta, que est
determinado por el tipo de espacio de trabajo. En un espacio de trabajo Microsoft Jet, utilice el lenguaje SQL de
Microsoft Jet.
Ejemplo de la propiedad SQL
Este ejemplo demuestra la propiedad SQL estableciendo y modificando la propiedad SQL de un QueryDef temporal y
comparando los resultados. Se necesita la funcin SalidaSQL para ejecutar este procedimiento.
Sub SQLX()
Dim dbsNeptuno As Database
Dim qdfTemp As QueryDef
Dim rstEmpleados As Recordset
Set dbsNeptuno = OpenDatabase("Neptuno.mdb")
Set qdfTemp = dbsNeptuno.CreateQueryDef("")
' Abre un Recordset utilizando un objeto QueryDef
' temporal e imprime un informe.
SalidaSQL "SELECT * FROM Empleados " & _
"WHERE Pas = 'Espaa' " & _
"ORDER BY Apellidos", qdfTemp
Pgina 101 de 159

Curso Visual Basic 5.0

' Abre un Recordset utilizando un objeto QueryDef


' temporal e imprime un informe.
SalidaSQL "SELECT * FROM Empleados " & _
"WHERE Pas = 'Mxico' " & _
"ORDER BY Apellidos", qdfTemp
dbsNeptuno.Close
End Sub
Function SalidaSQL(strSQL As String, qdfTemp As QueryDef)
Dim rstEmpleados As Recordset
' Establece la propiedad SQL del objeto QueryDef
' temporal y abre un Recordset.
qdfTemp.SQL = strSQL
Set rstEmpleados = qdfTemp.OpenRecordset
' Enumera el Recordset.
Do While Not rstEmpleados.EOF
Debug.Print " " & rstEmpleados!Nombre & " " &rstEmpleados!Apellidos & ", " & !Pas
.MoveNext
Loop
RstEmpleados.Close
End Function

15.34-Stretch
Aplicable a
Control Image
Devuelve o establece un valor que indica si un grfico cambia su tamao para ajustarse al de un control Image.
Sintaxis
objeto.Stretch [= booleano]
La sintaxis de la propiedad Stretch consta de las siguientes partes:
Parte
Descripcin
objeto
Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
Booleano Una expresin de tipo Boolean que especifica si el grfico cambia su tamao, como se describe en Valores.
Valores
Los valores admitidos para booleano son:
Valor Descripcin
True
El grfico cambia de tamao para ajustarse al del control.
False (Predeterminado) El control cambia de tamao para ajustarse al del grfico.

Comentarios
Si Stretch tiene el valor True, al cambiar el tamao del control tambin se cambiar el del grfico que contenga.
Pgina 102 de 159

Curso Visual Basic 5.0


Ejemplo de la propiedad Stretch
En este ejemplo se carga un icono de flecha de un directorio de iconos en un control Image. La flecha se arrastra por el
formulario cuando la propiedad Stretch tiene el valor True y salta por el formulario cuando la propiedad Stretch tiene
el valor False. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un
control Image, un control CheckBox y un control Timer, presione F5 y haga clic en el formulario. Asegrese de
comprobar la ruta de acceso al directorio de iconos y cmbiela si es necesario. Para ver los distintos efectos de la
propiedad Stretch, haga clic en el control CheckBox y luego en el formulario.
Dim ImgW
' Declara una variable.
Private Sub Form_Load ()
' Carga un icono en el control Image.
Image1.Picture = LoadPicture("ICONS\ARROWS\ARW02RT.ICO")
Image1.Left = 0 ' Mueve la imagen al borde izquierdo.
ImgW = Image1.Width ' Guarda el ancho de la imagen.
Timer1.Interval = 300
Timer1.Enabled = False ' Deshabilita el cronmetro.
Check1.Caption = "Propiedad Stretch"
End Sub
Private Sub Form_Click ()
Timer1.Enabled = True
End Sub

' Habilita el cronmetro.

Private Sub Timer1_Timer ()


Static MoveIcon As Integer
' Indicador para desplazar el icono.
If Not MoveIcon Then
Image1.Move Image1.Left + ImgW, Image1.Top, ImgW * 2
Else
' Mueve la imagen y la devuelve a su ancho original.
Image1.Move Image1.Left + ImgW, Image1.Top, ImgW
End If
' Si la imagen est fuera del borde del formulario, empezar otra vez.
If Image1.Left > ScaleWidth Then
Image1.Left = 0
Timer1.Enabled = False
End If
MoveIcon = Not MoveIcon
' Restablece el indicador.
End Sub
Private Sub Check1_Click ()
Image1.Stretch = Check1.Value
End Sub

15.35-Style
Aplicable a
Control CheckBox, Control ComboBox, Control CommandButton, Control ListBox, Control OptionButton
Devuelve o establece un valor que indica el tipo de muestra y el comportamiento del control. Es de slo lectura en
tiempo de ejecucin.
Sintaxis
Pgina 103 de 159

Curso Visual Basic 5.0


objeto.Style
El marcador de posicin objeto representa una expresin de objeto que da como resultado un objeto de la lista
Aplicable a.
Valores
Los valores de la propiedad Style para los controles Checkbox, CommandButton, y OptionButton son:
Constante
Valor
Descripcin
vbButtonStandard
0
(Predeterminado) Estndar. El control aparece como en las versiones
anteriores de Visual Basic. Es decir, un control Checkbox aparece como
una casilla de verificacin con una etiqueta a su lado, un control
OptionButton aparece como un botn de opcin con una etiqueta a su
lado y un CommandButton como un CommandButton estndar sin un
grfico asociado.
vbButtonGraphical
1
Grfico. El control se muestra con un estilo grfico. Es decir, un control
Checkbox se muestra como un botn de tipo CommandButton que se
puede soltar o presionar, un OptionButton aparece como un botn tipo
CommandButton que permanece suelto o presionado hasta que se
seleccione otro OptionButton de su grupo de opciones y un
CommandButton se muestra como un CommandButton estndar que
tambin puede mostrar un grfico asociado.
Los valores de la propiedad Style para el control ComboBox son los siguientes:
Constante
Valor
Descripcin
vbComboDropDown
0
(Predeterminado) Cuadro combinado desplegable. Incluye una
lista desplegable y un cuadro de texto. El usuario puede
seleccionar datos en la lista o escribir en el cuadro de texto.
VbComboSimple
1
Cuadro combinado simple. Incluye un cuadro de texto y una lista,
que no se despliega. El usuario puede seleccionar datos en la lista
o escribir en el cuadro de texto. El tamao de un cuadro
combinado simple incluye las partes de edicin y de lista. De
forma predeterminada, el tamao de un cuadro combinado simple
no muestra ningn elemento de la lista. Incremente la propiedad
Height para mostrar ms elementos de la lista.
vbComboDrop-DownList
2
Lista desplegable. Este estilo slo permite la seleccin desde la
lista desplegable.
Los valores de la propiedad Style para el control ListBox son los siguientes:
Constante
Valor
Descripcin
vbListBoxStandard
0
(Predeterminado) Estndar. El control ListBox se muestra como en las
versiones anteriores de Visual Basic. Es decir, como una lista de
elementos de texto.
vbListBoxCheckbox
1
Casilla de verificacin. El control ListBox se muestra sin una marca de
verificacin junto a cada elemento de texto. Es posible seleccionar
mltiples elementos del ListBox si activa la casilla de verificacin que
hay junto a ellos.
Comentarios
Para decidir el valor que debe elegir para el control ComboBox, siga estas directrices:
Utilice el valor 0 (cuadro combinado desplegable) 1 (cuadro combinado simple) para proporcionar al usuario una
lista de opciones. Los dos tipos permiten al usuario especificar una opcin en el cuadro de texto. El valor 0 ahorra
espacio en el formulario, ya que la parte de lista se cierra cuando el usuario selecciona un elemento.
Utilice el valor 2 (lista desplegable) para mostrar una lista fija de opciones entre las cuales el usuario pueda elegir
una. La parte de lista se cierra cuando el usuario selecciona un elemento.

Pgina 104 de 159

Curso Visual Basic 5.0

15.36-TabIndex
Aplicable a
Control CheckBox, Control ComboBox, Control CommandButton, Control Frame, Controles HScrollBar y VScrollBar,
Control Label, Control ListBox, Control OptionButton, Control PictureBox, Control TextBox.
Devuelve o establece el orden de tabulacin de la mayora de los objetos dentro de su formulario.
Sintaxis
objeto.TabIndex [= ndice]
La sintaxis de la propiedad TabIndex consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
ndice Un nmero entero entre 0 y (n1), donde n es el nmero de controles del formulario que tienen la propiedad
TabIndex. Al asignar a TabIndex un valor inferior a 0 se produce un error.
Comentarios
De forma predeterminada, Visual Basic asigna un orden de tabulacin a los controles cuando se van agregando a un
formulario, con la excepcin de los controles Menu, Timer, Data, Image, Line y Shape, que no se incluyen en el orden
de tabulacin. En tiempo de ejecucin, los controles invisibles o deshabilitados y los controles que no pueden recibir el
enfoque (controles Frame y Label) permanecen en el orden de tabulacin pero se pasan por alto al tabular.
Cada control nuevo se sita el ltimo en el orden de tabulacin. Si modifica el valor de la propiedad TabIndex de un
control para cambiar el orden predeterminado, Visual Basic renumerar automticamente la propiedad TabIndex de los
controles restantes para reflejar las inserciones y eliminaciones. Puede efectuar los cambios en tiempo de diseo
mediante la ventana propiedades o en tiempo de ejecucin a travs de cdigo.
Nota El orden de tabulacin de un control no afecta a su tecla de acceso asociada. Si presiona la tecla de acceso de un
control Frame o Label, el enfoque pasar al siguiente control del orden de tabulacin que pueda recibir el enfoque.

Ejemplo de la propiedad TabIndex


En este ejemplo se invierte el orden de tabulacin de un grupo de botones modificando la propiedad TabIndex de una
matriz de botones de comando. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario
que contenga cuatro controles CommandButton. Establezca CommandX en la propiedad Name de cada botn para
crear la matriz de controles, y luego presione F5 y haga clic en el formulario para invertir su orden de tabulacin.
Private Sub Form_Click ()
Dim I, X
' Declarar variables.
' Invertir el orden de tabulacin estableciendo el valor inicial de X.
If CommandX(0).TabIndex = 0 Then X = 4 Else X = 1
For I = 0 To 3
CommandX(I).Caption = X
' Establecer el ttulo.
CommandX(I).TabIndex = X - 1 ' Establecer el orden de tabulacin.
If CommandX(0).TabIndex = 3 Then
X=X-1
' Disminuir X.
Else
X=X+1
' Incrementar X.
End If
Next I
End Sub

Pgina 105 de 159

Curso Visual Basic 5.0

15.37-TabStop
Aplicable a
Control CheckBox, Control ComboBox, Control CommandButton, Controles HScrollBar y VScrollBar, Control
ListBox, Control OptionButton, Control PictureBox, Control TextBox,
Devuelve o establece un valor que indica si el usuario puede utilizar la tecla TAB para llevar el enfoque a un objeto.
Sintaxis
objeto.TabStop [= booleano]
La sintaxis de la propiedad TabStop consta de las siguientes partes:
Parte
Descripcin
objeto
Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
Booleano Una expresin de tipo Boolean que especifica si el objeto es un tabulador, como se describe en Valores.
Valores
Los valores admitidos para booleano son:
Valor Descripcin
True
(Predeterminado) Designa el objeto como un tabulador.
False Hace que se salte el objeto en la tabulacin, aunque el objeto mantiene su lugar en el orden de tabulacin real,
determinado en la propiedad TabIndex.
Comentarios
Esta propiedad permite agregar o quitar un control del orden de tabulacin de un formulario. Por ejemplo, si utiliza un
control PictureBox para dibujar un grfico, establezca a False su propiedad TabStop para que el usuario no pueda
situarse en el control PictureBox.

15.38-Tag
Aplicable a
Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form Control Frame,
Controles HScrollBar y VScrollBar, Control Image, Control Label, Control Line, Control ListBox, Control Menu,
Control OptionButton, Control PictureBox, Control Shape, Control TextBox, Control Timer.
Devuelve o establece una expresin que almacena cualquier dato adicional que necesite el programa. Al contrario de lo
que sucede con otras propiedades, Visual Basic no utiliza el valor de Tag. Puede utilizar esta propiedad para identificar
objetos.
Sintaxis
objeto.Tag [= expresin]
La sintaxis de la propiedad Tag consta de las siguientes partes:
Parte
Descripcin
objeto
Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
Expresin Una expresin de cadena que identifica el objeto. El valor predeterminado es una cadena de longitud cero ("").
Comentarios
Puede utilizar esta propiedad para asignar una cadena de identificacin a un objeto sin afectar al resto de sus propiedades
ni causar efectos secundarios.

Pgina 106 de 159

Curso Visual Basic 5.0


Ejemplo de la propiedad Tag
En este ejemplo se muestra un icono nico para cada control que se arrastra. Para probar este ejemplo, pegue el cdigo
en la seccin Declaraciones de un formulario que contenga tres controles PictureBox. Establezca a 1 la propiedad
DragMode de Picture1 y Picture2, y luego presione F5. Utilice el mouse para arrastrar Picture1 o Picture2 sobre
Picture3.
Private Sub Form_Load ()
Picture1.Tag = "ICONOS\FLECHAS\PUNTO03.ICO"
Picture2.Tag = "ICONOS\FLECHAS\PUNTO04.ICO"
End Sub
Private Sub Picture3_DragOver (Source As Control, X As Single, Y As Single, State As Integer)
If State = vbEnter Then
' Seleccionar en base a la propiedad Name de cada PictureBox.
Select Case Source.Name
Case "Picture1"
' Cargar el icono para Picture1.
Source.DragIcon = LoadPicture(Picture1.Tag)
Case "Picture2"
' Cargar el icono para Picture2.
Source.DragIcon = LoadPicture(Picture2.Tag)
End Select
ElseIf State = vbLeave Then
' Cuando el origen no est sobre Picture3, descargar el icono.
Source.DragIcon = LoadPicture()
End If
End Sub

15.39-Text
Aplicable a
Control ComboBox, Control ListBox, Control TextBox

Control ComboBox (propiedad Style con el valor 0 [cuadro combinado desplegable] o 1 [cuadro combinado
simple]) y control TextBox: devuelve o establece el texto contenido en el rea de edicin.
Control ComboBox (propiedad Style con el valor 2 [cuadro combinado desplegable]) y control ListBox: devuelve
el elemento seleccionado en el cuadro de lista; el valor de retorno es siempre equivalente al que devuelve la
expresin List(ListIndex). Es de slo lectura en tiempo de diseo y es de slo lectura en tiempo de ejecucin.

Sintaxis
objeto.Text [= cadena]
La sintaxis de la propiedad Text consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
cadena Una expresin de cadena que especifica el texto.

Comentarios
Solamente en tiempo de diseo, los valores predeterminados de la propiedad Text son:
Controles ComboBox y TextBox: la propiedad Name del control.
Control ListBox: una cadena de longitud cero ("").
Pgina 107 de 159

Curso Visual Basic 5.0


En el caso de un control ComboBox con el valor 0 (cuadro combinado desplegable) o 1 (cuadro combinado simple) en
la propiedad Style, o para un control TextBox, esta propiedad es til para leer la cadena real contenida en el rea de
edicin del control. Para un control ComboBox o ListBox con el valor 2 (lista desplegable) en la propiedad Style,
puede utilizar la propiedad Text para determinar el elemento seleccionado actualmente.
El valor de Text para un control TextBox est limitado a 2048 caracteres, a no ser que el valor de la propiedad
MultiLine sea True, en cuyo caso el lmite es aproximadamente 32 KB.
Ejemplo de la Propiedad Texto
En este ejemplo se ilustra el uso de la propiedad Text. Para probar este ejemplo, pegue el cdigo en la seccin
Declaraciones de un formulario que contenga tres controles TextBox y un control CommandButton, presione F5 y
escriba texto en Text1.
Private Sub Text1_Change ()
Text2.Text = LCase(Text1.Text) ' Mostrar texto en minsculas.
Text3.Text = UCase(Text1.Text) ' Mostrar texto en maysculas.
End Sub
Private Sub Command1_Click ()
Text1.Text = ""
End Sub

' Eliminar el texto.

15.40-ToolTipText
Aplicable a
Objeto Button, Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Control Frame,
Control Image, Control Label, Control ListBox, Control OptionButton, Control PictureBox, Control TextBox.
Devuelve o establece Informacin sobre herramientas.
Sintaxis
objeto.ToolTipText [= cadena]
La sintaxis de la propiedad ToolTipText consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
cadena Una cadena asociada con un objeto de la lista Aplicable a que aparece durante un segundo aproximadamente en un
pequeo rectngulo debajo del objeto cuando el cursor del usuario pasa por encima del objeto en tiempo de ejecucin.
Comentarios
Si usa nicamente una imagen para identificar un objeto, puede usar esta propiedad para explicar con pocas palabras
cada uno de esos objetos.
En tiempo de diseo puede establecer la cadena de la propiedad ToolTipText en el cuadro de dilogo de propiedades
del control.

15.41-Value
Aplicable a
Control CheckBox, Control CommandButton, Controles HScrollBar y VScrollBar, Control OptionButton

Controles CheckBox y OptionButton: devuelve o establece el estado del control.

Pgina 108 de 159

Curso Visual Basic 5.0

Control CommandButton: devuelve o establece un valor que indica si se ha elegido el botn. No est disponible en
tiempo de diseo.
Controles HScrollBar y VScrollBar (barras de desplazamiento horizontal y vertical): devuelve o establece la
posicin actual de la barra de desplazamiento, cuyo valor de retorno se encuentra siempre entre los valores de las
propiedades Max y Min, inclusive.

Sintaxis
objeto.Value [= valor]
La sintaxis de la propiedad Value consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
valor Un valor que especifica el estado, contenido o posicin de un control, segn se indica en Valores.
Valores
Los valores admitidos para valor son:
Control CheckBox: 0 es desactivado (predeterminado), 1 es activado y 2 es atenuado.
Control CommandButton: True indica que se ha elegido el botn y False (predeterminado) indica que no se ha
elegido. Al establecer a True la propiedad Value se invoca el evento Click del botn.
Controles HScrollBar y VScrollBar: establece valores entre 32.768 y 32.767 para situar el cuadro de
desplazamiento.
Control OptionButton: True indica que el botn est seleccionado y False (predeterminado) que no lo est.
Ejemplo de la propiedad Value
En este ejemplo se muestra el valor numrico de un control HScrollBar (barra de desplazamiento horizontal) en un
control TextBox. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga
un control TextBox y un control HScrollBar. Presione F5 para ejecutar el programa y haga clic en la barra de
desplazamiento.
Private Sub Form_Load ()
HScroll1.Min = 0
' Inicializar la barra de desplazamiento.
HScroll1.Max = 1000
HScroll1.LargeChange = 100
HScroll1.SmallChange = 1
End Sub
Private Sub HScroll1_Change ()
Text1.Text = Format (HScroll1.Value)
End Sub

15.42-Visible
Aplicable a
Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form Control Frame,
Controles HScrollBar y VScrollBar, Control Image, Control Label, Control Line, Control ListBox, Control
Menu, Control OptionButton, Control PictureBox, Control Shape, Control TextBox
Devuelve o establece un valor que indica si un objeto es visible o est oculto.
Sintaxis
objeto.Visible [= booleano]

Pgina 109 de 159

Curso Visual Basic 5.0


La sintaxis de la propiedad Visible consta de las siguientes partes:
Parte
Descripcin
objeto
Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
Booleano Una expresin booleana que especifica si el objeto es visible o si est oculto.
Valores
Los valores admitidos para booleano son:
Valor Descripcin
True
(Predeterminado) El objeto es visible.
False El objeto est oculto.
Comentarios
Para ocultar un objeto al inicio, establezca la propiedad Visible a False en tiempo de diseo. Si establece esta propiedad
en el cdigo puede ocultar y volver a mostrar posteriormente un control en tiempo de ejecucin como respuesta a un
evento determinado.
Nota El uso del mtodo Show o Hide en un formulario equivale a establecer True o False, respectivamente, en su
propiedad Visible a travs del cdigo.
Ejemplo de la propiedad Visible
En este ejemplo se crea una animacin mediante dos controles PictureBox. Para probar este ejemplo, pegue el cdigo
en la seccin Declaraciones de un formulario que contenga dos controles PictureBox de tamao de icono. Establezca a
FileCab la propiedad Name de los dos controles PictureBox para crear una matriz, presione F5 y haga clic en la imagen
para ver la animacin.
Private Sub Form_Load ()
Dim I ' Declara la variable.
FileCab(0).BorderStyle = 0
' Establecer BorderStyle.
FileCab(1).BorderStyle = 0
' Cargar los iconos en los cuadros de imagen.
FileCab(1).Picture = LoadPicture("ICONOS\OFFICE\ARCH03B.ICO")
FileCab(0).Picture = LoadPicture("ICONOS\OFFICE\ARCH03A.ICO")
For I = 0 To 1
FileCab(I).Move 400, 400 ' Colocar los grficos en el mismo punto.
Next I
FileCab(1).Visible = False' Establecer a invisible.
FileCab(0).Visible = True
' Establecer a visible.
End Sub
Private Sub FileCab_Click (Index As Integer)
Dim I ' Declarar variable.
For I = 0 To 1
' Cambiar la visibilidad para los dos grficos.
FileCab(I).Visible = Not FileCab(I).Visible
Next I
End Sub

15.43-WindowState
Aplicable a
Objeto Form.

Pgina 110 de 159

Curso Visual Basic 5.0


Devuelve o establece un valor que indica el estado visual de una ventana de formulario en tiempo de ejecucin.
Sintaxis
objeto.WindowState [= valor]
La sintaxis de la propiedad WindowState consta de las siguientes partes:
Parte Descripcin
objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a.
valor Un nmero entero que especifica el estado del objeto, como se describe en Valores.
Valores
Los valores admitidos para valor son:
Constante
Valor Descripcin
vbNormal
0
(Predeterminado) Normal
VbMinimized 1
Minimizada (minimizada a un icono)
VbMaximized 2
Maximizada (ampliado al tamao mximo)
Comentarios
Antes de mostrar un formulario, la propiedad WindowState tiene siempre el valor Normal (0), cualquiera que sea su
estado inicial. Esto se refleja en los valores de las propiedades Height, Left, ScaleHeight, ScaleWidth, Top y Width.
Si un formulario se oculta despus de mostrarse, estas propiedades reflejarn el estado anterior hasta que se muestre de
nuevo el formulario, independientemente de los cambios que se hagan mientras tanto en la propiedad WindowState.
Ejemplo de la propiedad WindowState
En este ejemplo se oculta un cuadro de dilogo (Form2) cuando el formulario primario (Form1) se minimiza y se vuelve
a mostrar cuando el formulario primario vuelve al estado original o se maximiza. Para probar este ejemplo, pegue el
cdigo en la seccin Declaraciones de Form1 en una aplicacin que contenga dos formularios. Presione F5 para iniciar
el ejemplo. Desplace Form1 de forma que pueda ver los dos formularios, minimice o maximice el formulario y observe
el comportamiento de Form2.
Private Sub Form_Load ()
Form2.Show
' Muestra Form2.
End Sub
Private Sub Form_Resize ()
' Si el primario est minimizado...
If Form1.WindowState = vbMinimized Then
' ... oculta Form2.
Form2.Visible = False
' Si el primario no est minimizado...
Else
' ... restaura Form2.
Form2.Visible = True
End If
End Sub

16- Operadores.

Pgina 111 de 159

Curso Visual Basic 5.0

16.1-Operadores Aritmticos.
Operadores utilizados para ejecutar clculos matemticos.

Operador ^: Se utiliza para elevar un nmero a la potencia del exponente.


resultado = nmero^exponente
Operador *: Se utiliza para multiplicar dos nmeros.
resultado = nmero1*nmero2
Operador /: Se utiliza para dividir dos nmeros y obtener un resultado de signo flotante.
resultado = nmero1/nmero2
Operador \: Se utiliza para dividir dos nmeros y obtener un resultado entero.
resultado = nmero1\nmero2
Operador Mod: Divide dos nmeros y devuelve slo el resto.
resultado = nmero1 Mod nmero2
Operador +: Se utiliza para sumar dos nmeros.
resultado = expresin1+expresin2
Operador -:Se utiliza para hallar la diferencia entre dos nmeros o para indicar el valor negativo de una expresin
numrica.
resultado = nmero1-nmero2

16.2-Operadores de Comparacin.
Operadores utilizados para efectuar comparaciones.
Se utilizan para comparar expresiones.

Sintaxis
resultado = expresin1 operadorcomparacin expresin2
resultado = cadena Like patrn
Los operadores de comparacin constan de las siguientes partes:
Parte
Descripcin
resultado
Obligatorio; cualquier variable numrica.
expresin
Obligatorio; cualquier expresin.
operadorcomparacin
Obligatorio; cualquier operador de comparacin.
cadena
Obligatorio; cualquier expresin de cadena.
patrn
Obligatorio; cualquier expresin de cadena o intervalo de caracteres.
Operador Like:
Se utiliza para comparar dos cadenas de caracteres.
Sintaxis
resultado = cadena Like patrn
La sintaxis del operador Like consta de las siguientes partes:
Parte
Descripcin
Resultado Obligatorio; cualquier variable numrica.
cadena
Obligatorio; cualquier expresin de cadena.
Pgina 112 de 159

Curso Visual Basic 5.0


patrn
Obligatorio; cualquier expresin de cadena que satisface las convenciones de coincidencia de patrones
descritas en Comentarios.
Comentarios
Si cadena coincide con patrn, el resultado es True; si no coincide, el resultado es False. Si cadena o patrn es Null, el
resultado es tambin Null.
La funcin integrada de bsqueda de coincidencia de patrones ofrece una herramienta verstil para efectuar
comparaciones de cadenas. Las caractersticas de esta funcin permiten el empleo de caracteres comodn, listas de
caracteres o intervalos de caracteres en cualquier combinacin para hallar coincidencias en cadenas. En la siguiente tabla
se indican los caracteres que se pueden poner en patrn y con qu coinciden los mismos:
?
Un carcter cualquiera.
*
Cero o ms caracteres.
#
Un dgito cualquiera (09).

16.3-Operadores de Concatenacin.
Operadores utilizados para combinar cadenas de caracteres.
Operador &: Se utiliza para forzar la concatenacin de las cadenas de dos expresiones.
resultado = expresin1 & expresin2

16.4-Operadores Lgicos.
Operadores usados para realizar operaciones lgicas.
Operador And:
Se utiliza para efectuar una conjuncin lgica de dos expresiones.
resultado = expresin1 And expresin2
La sintaxis del operador And consta de las siguientes partes:
Parte
Descripcin
resultado
Obligatorio; cualquier variable numrica.
expresin1
Obligatorio; cualquier expresin.
expresin2
Obligatorio; cualquier expresin.
Si y slo si ambas expresiones se evalan como True, el resultado es True. Si cualquiera de las expresiones es False, el
resultado es False. La siguiente tabla ilustra cmo se determina el resultado:
Operador Not: Se utiliza para ejecutar una negacin lgica sobre una expresin.
resultado = Not expresin
Operador Or: Se utiliza para ejecutar una disyuncin lgica sobre dos expresiones.
resultado = expresin1 Or expresin2

17- Funciones ms importantes de Visual Basic.


17.1-Asc.
Devuelve un tipo Integer que representa el cdigo de carcter correspondiente a la primera letra de una cadena.
Sintaxis
Pgina 113 de 159

Curso Visual Basic 5.0


Asc(cadena)
El argumento obligatorio cadena es una expresin de cadena vlida. Si cadena no contiene caracteres, se produce un
error en tiempo de ejecucin.
Ejemplo de la funcin Asc
En este ejemplo se utiliza la funcin Asc para devolver el cdigo de carcter correspondiente a la primera letra de una
cadena de caracteres.
Dim MiNmero
MiNmero = Asc("A")
MiNmero = Asc("a")
MiNmero = Asc("Apple")

' Devuelve 65.


' Devuelve 97.
' Devuelve 65.

17.2-Date
Devuelve un tipo Variant (Date) que contiene la fecha actual del sistema.
Sintaxis
Date
Comentarios
Utilice la instruccin Date para establecer la fecha del sistema.

17.3-DateDiff
Devuelve un valor de tipo Variant (Long) que especifica el nmero de intervalos de tiempo entre dos fechas
determinadas.
Sintaxis
DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])
La sintaxis de la funcin DateDiff consta de los siguientes argumentos con nombre:
Parte
Descripcin
interval
Requerido. Expresin de tipo cadena con el intervalo de tiempo utilizado para calcular la
diferencia entre date1 y date2.
date1, date2
Se requiere; Variant (Date). Las dos fechas que se van a utilizar en el clculo.
firstdayofweek Opcional. Constante que especifica el primer da de la semana. Si no se especifica, se asume
que es el domingo.
firstweekofyear Opcional. Constante, que especifica la primera semana del ao. Si no se especifica, se
asume que es aqulla en la que se encuentre el 1 de enero.
Valores
El argumento interval toma los valores siguientes:
Intervalo Descripcin
yyyy
Ao
q
Trimestre
m
Mes
y
Da del ao
d
Da
w
Da de la semana
ww
Semana
h
Hora
n
Minuto
Pgina 114 de 159

Curso Visual Basic 5.0


s

Segundo

El argumento firstdayofweek toma los siguientes valores:


Constante
Valor Descripcin
vbUseSystem
vbSunday
vbMonday
vbTuesday
vbWednesday
vbThursday
vbFriday
vbSaturday

0
1
2
3
4
5
6
7

Utilice la configuracin de la API de NLS.


Domingo (predeterminado)
Lunes
Martes
Mircoles
Jueves
Viernes
Sbado

El argumento firstweekofyear toma los valores siguientes:


Constante
Valor
Descripcin
vbUseSystem
0
Utilice la configuracin de la API de NLS.
VbFirstJan1
1
Empieza con la semana en la que se encuentra el 1 de enero
(predeterminado).
VbFirstFourDays
2
Empieza con la primera semana que tenga al menos cuatro das en el
nuevo ao.
VbFirstFullWeek
3
Empieza con la primera semana que est completamente includa en el
nuevo ao.
Comentarios
Puede utilizar la funcin DateDiff para determinar el nmero de intervalos especificados que existen entre dos fechas.
Por ejemplo, con DateDiff podra calcular el nmero de das entre dos fechas o el nmero de semanas entre hoy y el
final del ao.
Si desea saber el nmero de das entre date1 y date2, puede utilizar Da del ao ("y") o Da ("d"). Cuando interval es
Da de la semana ("w"), DateDiff devuelve el nmero de semanas entre las dos fechas. Si date1 es lunes, DateDiff
contar el nmero de lunes hasta date2. En la cuenta incluir date2, pero no date1. Si interval es Semana ("ww"), la
funcin DateDiff devolver el nmero de semanas entre las dos fechas. En este caso contar el nmero de domingos
entre date1 y date2. DateDiff contar date2 si es domingo, pero no date1, aunque sea domingo.
Si date1 se refiere a un momento posterior en el tiempo a date2, la funcin DateDiff devolver un nmero negativo.
El argumento firstdayofweek afecta a los clculos que utilizan "w" y "ww" como smbolos de intervalo.
Si fecha1 o fecha2 es un literal de fecha, el ao, si se especifica, pasar a ser una parte permanente de la fecha. Sin
embargo, si fecha1 o fecha2 est comprendida entre comillas dobles ("") y se omite el ao, se insertar el ao en curso
en el cdigo cada vez que se evale la expresin fecha1 o fecha2. As es posible escribir cdigo que se pueda usar en
aos distintos.
Cuando compara el 31 de diciembre con el 1 de enero del ao siguiente, DateDiff para un ao ("yyyy") devolver 1
aunque slo haya pasado un da.

17.4-DoEvents
Cede el control de la ejecucin al sistema operativo, para que ste pueda procesar otros eventos.
Sintaxis
DoEvents( )
Comentarios
La funcin DoEvents devuelve un tipo Integer que representa el nmero de formularios abiertos por una versin
independiente de Visual Basic, como la de Visual Basic edicin estndar. DoEvents devuelve 0 en el resto de las
aplicaciones.
La funcin DoEvents pasa el control al sistema operativo. El control no se devuelve hasta que el sistema operativo haya
terminado de procesar los eventos en cola y se hayan enviado todas las teclas de la cola SendKeys.
DoEvents es ms til para tareas sencillas como permitir que un usuario cancele un proceso despus de que ha
comenzado, por ejemplo una bsqueda de un archivo.
Pgina 115 de 159

Curso Visual Basic 5.0


Precaucin Cuando d preferencia al procesador temporalmente dentro de un procedimiento de evento, asegrese de que
el procedimiento no se ejecute de nuevo desde una parte diferente del cdigo antes de que devuelva la primera llamada.
Esto podra causar resultados impredecibles. Adems, no utilice la funcin DoEvents si existe la posibilidad de que otras
aplicaciones interacten con el procedimiento, de manera imprevista, durante el tiempo en que ste ha cedido el control.
Ejemplo de la funcin DoEvents
En este ejemplo se utiliza la instruccin DoEvents para ceder el control de la ejecucin al sistema operativo una vez
cada 1000 iteraciones del bucle. DoEvents devuelve el nmero de formularios de Visual Basic abiertos, slo cuando la
aplicacin principal es Visual Basic.
' Crea una variable para mantener el nmero de
' formularios de Visual Basic cargados y visibles
Dim I, OpenForms
For I = 1 To 150000
' Inicia el bucle.
If I Mod 1000 = 0 Then ' Si el bucle se ejecuta 1000 veces.
OpenForms = DoEvents ' Cede el control al sistema operativo.
End If
Next I
' Incrementa el contador del bucle.

17.5-Format
Devuelve un tipo Variant (String) que contiene una expresin formateada de acuerdo a las instrucciones contenidas en
una expresin de formato.
Sintaxis
Format(expresin[, formato[, primerdadesemana[, primerdadeao]]])
La sintaxis de la funcin Format consta de las siguientes partes:
Parte
Descripcin
expresin
Obligatorio. Cualquier expresin vlida.
formato
Opcional. Una expresin de formato definida por el usuario o con nombre vlida.
primerdadesemana
Opcional. Una constante que especifica el primer da de la semana.
primerdadeao
Opcional. Una constante que especifica la primera semana del ao.
Valores
El argumento primerdadesemana tiene estos valores:
Constante
Valor Descripcin
vbUseSystem 0
Utiliza el valor de API NLS.
VbSunday
1
Domingo (predeterminado)
vbMonday
2
Lunes
vbTuesday
3
Martes
vbWednesday 4
Mircoles
vbThursday
5
Jueves
vbFriday
6
Viernes
vbSaturday
7
Sbado
El argumento primerdadeao tiene estos valores:
Constante
Valor
Descripcin
vbUseSystem
0
Utiliza el valor de API NLS.
vbFirstJan1
1
Comienza con la semana donde est el 1 de enero (predeterminado).
vbFirstFourDays
2
Comienza con la primera semana del ao que tenga cuatro das como
mnimo.
vbFirstFullWeek
3
Comienza con la primera semana completa del ao.
Comentarios
Pgina 116 de 159

Curso Visual Basic 5.0


Para dar formato a:
Nmeros: Utilice formatos numricos con nombre predefinidos o cree formatos numricos definidos por el usuario.
Fechas y horas: Utilice formatos de fecha/hora con nombre predefinidos o cree formatos de fecha/hora definidos por el
usuario.
Nmeros seriales de fecha y hora: Utilice formatos de fecha y hora o formatos numricos.
Cadenas : Cree sus propios formatos de cadena definidos por el usuario.
Ejemplo de la funcin Format
En este ejemplo se muestran varios usos de la funcin Format para dar formato a valores utilizando formatos definidos
por el usuario y formatos con nombre. La verdadera salida formateada presentada por el sistema para el separador de
fecha (/), de hora (:) y el literal AM/ PM depende de las configuraciones en ese momento. Cuando las horas y las fechas
se vuelven a listar en el entorno de desarrollo, se utilizan los formatos abreviados de hora y de fecha de la configuracin
regional del cdigo. Cuando son presentados por el cdigo en ejecucin, se utilizan los formatos abreviados de fecha y
hora de la configuracin regional del sistema, los cuales pueden diferir de la configuracin regional del cdigo. En este
ejemplo se asume que es Ingls/Estados Unidos.
MiHora y MiFecha se presentan en el entorno de desarrollo utilizando configuraciones actuales de fecha corta y hora
corta.
Dim MiHora, MiFecha, MiCadena
MiHora = #17:04:23#
MiFecha = #27 enero 1993#
' Devuelve la hora actual del sistema en el formato largo de hora definido por el sistema.
MiCadena = Format(Time, "Long Time")
' Devuelve la fecha actual del sistema en el formato largo de fecha definido por el sistema.
MiCadena = Format(Date, "Long Date")
MiCadena = Format(MiHora, "h:m:s")
' Devuelve "17:4:23".
MiCadena = Format(MiHora, "hh:mm:ss AMPM") ' Devuelve "05:04:23 PM".
MiCadena = Format(MiFecha, "dddd, d mmm aaaa")' Devuelve "Mircoles,
' 27 de Ene de 1993".
' Si no se suministra el formato, devuelve una cadena.
MiCadena = Format(23)
' Devuelve "23".
' Formatos definidos por el usuario.
MiCadena = Format(5459.4, "##,##0.00") ' Devuelve "5.459,40".
MiCadena = Format(334.9, "###0.00")
' Devuelve "334,90".
MiCadena = Format(5, "0.00%") ' Devuelve "500,00%".
MiCadena = Format("HOLA", "<")
' Devuelve "hola".
MiCadena = Format("Esto es", ">")
' Devuelve "ESTO ES".

17.6-Iif
Devuelve uno de entre dos valores, dependiendo de la evaluacin de una expresin.
Sintaxis
IIf(expr, truepart, falsepart)
La sintaxis de la funcin IIf cuenta con los siguientes argumentos con nombre:
Parte
Descripcin
expr
Requerido. Expresin que se desea evaluar.
Truepart
Requerido. Valor o expresin devuelta si expr es True.
Pgina 117 de 159

Curso Visual Basic 5.0


falsepart

Requerido. Valor o expresin devuelta si expr es False.

Comentarios
IIf siempre evala truepart y falsepart, aunque slo vaya a devolver una de ellas. Por esta razn, deber vigilar que no
se produzcan efectos no deseados. Por ejemplo, si al evaluar falsepart se produce un error de divisin por cero, se
generar un error aunque expr sea True.
Ejemplo de la funcin IIf
Este ejemplo utiliza la funcin IIf para calcular el parmetro Prueba del procedimiento Comprobar y devuelve la palabra
"Grande" si la cantidad es mayor que 1000; de lo contrario, devuelve la palabra "Pequeo".
Function Comprobar (Prueba As Integer)
Comprobar = IIf(Prueba > 1000, "Grande", "Pequeo")
End Function

17.7-InputBox
Muestra un mensaje en un cuadro de dilogo, espera que el usuario escriba un texto o haga clic en un botn y devuelve
un tipo String con el contenido del cuadro de texto.
Sintaxis
InputBox(prompt[, title][, default][, xpos][, ypos][, helpfile, context])
La sintaxis de la funcin InputBox consta de estos argumentos con nombre:
-Prompt: Requerido. Expresin de cadena que se muestra como mensaje en el cuadro de dilogo. La longitud mxima de
prompt es de aproximadamente 1024 caracteres, segn el ancho de los caracteres utilizados. Si prompt consta de ms de
una lnea, puede separarlos utilizando un carcter de retorno de carro (Chr(13)), un carcter de avance de lnea (Chr(10)) o
una combinacin de los caracteres de retorno de carro-avance de lnea (Chr(13) y Chr(10)) entre cada lnea y la siguiente.
-title: Opcional. Expresin de cadena que se muestra en la barra de ttulo del cuadro de dilogo. Si omite title, en la barra de
ttulo se coloca el nombre de la aplicacin.
-default: Opcional. Expresin de cadena que se muestra en el cuadro de texto como respuesta predeterminada cuando no
se suministra una cadena. Si omite default, se muestra el cuadro de texto vaco.
-xpos: Opcional. Expresin numrica que especifica, en twips, la distancia en sentido horizontal entre el borde izquierdo
del cuadro de dilogo y el borde izquierdo de la pantalla. Si se omite xpos, el cuadro de dilogo se centra horizontalmente.
-ypos: Opcional. Expresin numrica que especifica, en twips, la distancia en sentido vertical entre el borde superior del
cuadro de dilogo y el borde superior de la pantalla. Si se omite ypos, el cuadro de dilogo se coloca a aproximadamente un
tercio de la altura de la pantalla, desde el borde superior de la misma.
-helpfile: Opcional. Expresin de cadena que identifica el archivo de Ayuda que se utilizar para proporcionar ayuda
interactiva para el cuadro de dilogo. Si se especifica helpfile, tambin deber especificarse context.
-Context: Opcional. Expresin numrica que es el nmero de contexto de Ayuda asignado por el autor al tema de Ayuda
correspondiente. Si se especifica context, tambin deber especificarse helpfile.
Comentarios
Cuando se especifica tanto helpfile como context, el usuario puede presionar F1 para ver el tema de Ayuda
correspondiente a context. Si el usuario hace clic en Aceptar o presiona ENTRAR, la funcin InputBox devuelve lo que
haya en el cuadro de texto. Si el usuario hace clic en Cancelar, la funcin devuelve una cadena de caracteres de
longitud cero ("").
Nota Si desea especificar ms que el primer argumento con nombre, debe utilizar InputBox en una expresin. Si desea
omitir algunos argumentos de posicin, debe incluir el delimitador de coma correspondiente.
Ejemplo de la funcin InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcin InputBox para indicar al usuario que debe
introducir un valor. Si se omiten las posiciones x e y, el dilogo se centra automticamente segn los ejes respectivos. La
variable MyValue contiene el valor introducido por el usuario, si ste elige Aceptar o presiona ENTRAR. Si el usuario
elige Cancelar, se devuelve una cadena de caracteres de longitud cero.
Pgina 118 de 159

Curso Visual Basic 5.0


Dim Mensaje, Ttulo, ValorPred, MiValor
Mensaje = " Introduzca un nmero del 1 a 3"
' Establece el mensaje.
Ttulo = "Demostracin de InputBox"
' Establece el ttulo.
ValorPred = "1" ' Establece el valor predeterminado.
' Muestra el mensaje, el ttulo, y el valor predeterminado.
MiValor = InputBox(Mensaje, Ttulo, ValorPred)
' Muestra el mensaje, el ttulo y el valor predeterminado.
MiValor = InputBox(Mensaje, Ttulo, , , , "DEMO.HLP", 10)
' Se muestra el dilogo en la posicin 100, 100.
MiValor = InputBox(Mensaje, Ttulo, ValorPred, 100, 100)

17.8-Int, Fix
Devuelve un valor del mismo tipo que el que se pas como parmetro y que contiene la parte entera de un nmero.

Sintaxis
Int(nmero)
Fix(nmero)
El argumento nmero es un tipo Double o cualquier expresin numrica vlida. Si nmero contiene Null, la funcin
devolver Null.

Comentarios
Las funciones Int y Fix eliminan la fraccin de un nmero y devuelven el valor entero resultante.
La diferencia entre Int y Fix es que si el nmero es negativo, Int devuelve el primer entero negativo menor o igual a
nmero, mientras que Fix devuelve el primer entero negativo mayor o igual a nmero. Por ejemplo, Int convierte -8.4 en
-9 y Fix convierte -8.4 a -8.
La funcin Fix(nmero) es equivalente a:
Sgn(nmero) * Int(Abs(nmero))

17.9-IsDate
Devuelve un valor de tipo Boolean que indica si una expresin se puede convertir en una fecha.

Sintaxis
IsDate(expresin)
El argumento expresin requerido, es un tipo de datos Variant que contiene una expresin de fecha o una expresin de
cadena reconocible como una fecha o una hora.

Comentarios
La funcin IsDate devuelve True si la expresin es una fecha o se puede convertir en una fecha vlida; en caso
contrario, devuelve False. En Microsoft Windows, el intervalo de fechas vlidas va desde el 1 de enero de 100 D.C.
hasta el 31 de diciembre de 9999 D.C; los intervalos varan de un sistema operativo a otro.
Ejemplo de la funcin IsDate
En este ejemplo se utiliza la funcin IsDate para determinar si una expresin puede convertirse en fecha.
Dim MiFecha, TuFecha, SinFecha, MiPrueba
MiFecha = "12 febrero 1969": TuFecha = #2/12/69#: SinFecha = "Hola"
Pgina 119 de 159

Curso Visual Basic 5.0


MiPrueba = IsDate(MiFecha)
MiPrueba = IsDate(TuFecha)
MiPrueba = IsDate(SinFecha)

' Devuelve True.


' Devuelve True.
' Devuelve False.

17.10-IsNull
Devuelve un valor de tipo Boolean que indica si una expresin contiene datos no vlidos (Null).

Sintaxis
IsNull(expresin)
El argumento expresin requerido, es un tipo de datos Variant que contiene una expresin numrica o una expresin de
cadena.

Comentarios
La funcin IsNull devuelve True si expresin es Null; en cualquier otro caso, IsNull devuelve False. Si expresin est
formada por ms de una variable, la presencia de Null en cualquier variable hace que se devuelva True para toda la
expresin.
El valor Null indica que Variant contiene datos no vlidos. La funcin Null no es la misma que la funcin Empty, la
cual indica que una variable todava no ha sido inicializada. Tampoco es lo mismo que una cadena de longitud cero (""),
que a veces se suele llamar cadena nula.
Importante Utilice la funcin IsNull para determinar si una expresin contiene un valor Null. Las expresiones que
espera evaluar como True en ciertas circunstancias, tales como If Var = Null AND If Var <> Null, son siempre False.
Esto se debe a que cualquier expresin que contiene un Null es por si misma de valor Null y por consiguiente False.
Ejemplo de la funcin IsNull
En este ejemplo se utiliza la funcin IsNull para determinar si una variable contiene Null.
Dim MiVar, MiPrueba
MiPrueba = IsNull(MiVar)

' Devuelve False.

MiVar = ""
MiPrueba = IsNull(MiVar)

' Devuelve False.

MiVar = Null
MiPrueba = IsNull(MiVar)

' Devuelve True.

17.11-Left
Devuelve un tipo Variant (String) que contiene un nmero especificado de caracteres del lado izquierdo de una cadena.
Sintaxis
Left(string, length)
La sintaxis de la funcin Left tiene estos argumentos con nombre:
Parte Descripcin
string Obligatorio. Expresin de cadena de la cual se devuelven los caracteres que estn ms a la izquierda.
Si string contiene Null, se devuelve Null.
length Se requiere, un tipo Variant (Long). Expresin numrica que indica cuntos caracteres se van a
devolver. Si es 0, devuelve una cadena de longitud cero (""). Si es mayor o igual al nmero de
Pgina 120 de 159

Curso Visual Basic 5.0


caracteres en string, se devuelve la cadena entera.
Comentarios
Para determinar el nmero de caracteres en string, utilice la funcin Len.

Ejemplo de la funcin Left


En este ejemplo se utiliza la funcin Left para devolver un nmero especificado de caracteres del lado izquierdo de una
cadena.
Dim UnaCadena, MiCadena
UnaCadena = "Hola Mundo"
' Define la cadena.
MiCadena = Left(UnaCadena, 1)
' Devuelve "H".
MiCadena = Left(UnaCadena, 6)
' Devuelve "Hola M".
MiCadena = Left(UnaCadena, 10) ' Devuelve "Hola Mundo".

17.12-Len
Devuelve un tipo Long que contiene el nmero de caracteres en una cadena o el nmero de bytes necesarios para
almacenar una variable.

Sintaxis
Len(cadena | nombrevar)
La sintaxis de la funcin Len consta de las siguientes partes:
Parte
Descripcin
cadena
Cualquier expresin de cadena vlida. Si cadena contiene Null, se devuelve Null.
Nombrevar
Cualquier nombre de variable vlido. Si nombrevar contiene Null, se devuelve Null. Si
nombrevar es un tipo Variant, Len acta igual que con un tipo String y siempre devuelve
el nmero de caracteres que contiene.

Comentarios
Se deben especificar uno (y slo uno) de los dos argumentos posibles.
Ejemplo de la funcin Len
En este ejemplo se utiliza la funcin Len para devolver el nmero de caracteres en una cadena o el nmero de bytes
requeridos para almacenar una variable.
Dim MiEntero As Integer, MyCur As Currency
Dim MiCadena, MiLong
MiCadena = "Hola a todos"
MiLong = Len(MiEntero)
MiLong = Len(MiCadena)
MiLong = Len(MyCur)

' Inicializa la cadenas.


' Devuelve 2.
' Devuelve 11.
' Devuelve 8.

17.13-LoadPicture
Carga un grfico en un control PictureBox o un control Image.
Sintaxis
LoadPicture([expresin_cadena])
Pgina 121 de 159

Curso Visual Basic 5.0

El marcador de posicin expresin_cadena es el nombre del archivo grfico que se quiere cargar.
Comentarios
Los formatos grficos reconocidos por Visual Basic incluyen archivos de mapas de bits (.BMP), archivos de iconos
(.ICO), archivos de longitud codificada (.RLE), metarchivos (.WMF), metarchivos mejorados (.EMF), archivos GIF y
archivos JPEG (.JPG).
Es posible limpiar los grficos de formularios, cuadros de imagen y controles de imagen si asigna LoadPicture sin
argumentos.
Para cargar grficos para presentarlos en un control PictureBox, en un control Image o como fondo de un formulario, el
valor devuelto por LoadPicture debe asignarse a la propiedad Picture del objeto en el que se quiere presentar la
imagen. Por ejemplo:
Image1.Picture = LoadPicture("FIESTA.BMP")
Para asignar un icono a un formulario, establezca el valor devuelto por la funcin LoadPicture a la propiedad Icon del
objeto Form:
Set Form1.Icon = LoadPicture("MIICONO.ICO")
Ejemplo de la funcin LoadPicture
Este ejemplo usa la funcin LoadPicture para cargar una imagen en la propiedad Picture de un formulario y para borrar
la imagen del objeto Form. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un objeto Form y
despus ejecute el ejemplo y haga clic en el objeto Form.
Private Sub Form_Click ()
Dim Msg as String
' Declara variables.
On Error Resume Next ' Establece el tratamiento de errores.
Height = 3990
Width = 4890
' Define el alto y el ancho.
Set Picture = LoadPicture("PAPEL.BMP")
' Carga un mapa de bits.
If Err Then
Msg = "Imposible encontrar el archivo .BMP."
MsgBox Msg
' Presenta el mensaje de error.
Exit Sub' Sale si hay error.
End If
Msg = "Elija "Aceptar" para borrar el mapa de bits del formulario."
MsgBox Msg
Set Picture = LoadPicture()
' Limpia el formulario.
End Sub

17.14-Ltrim, Rtrim y Trim


Devuelve un tipo Variant (String) que contiene una copia de una cadena determinada sin espacios a la izquierda
(LTrim), sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim).

Sintaxis
LTrim(cadena)
RTrim(cadena)
Trim(cadena)
El argumento cadena obligatorio es cualquier expresin de cadena vlida. Si cadena contiene Null, se devuelve Null.

Pgina 122 de 159

Curso Visual Basic 5.0


Ejemplo de las funciones LTrim, RTrim y Trim
En este ejemplo se utilizan las funciones LTrim and RTrim para eliminar espacios a la derecha y a la izquierda de una
variable de cadena de caracteres. El uso de la funcin Trim logra el mismo resultado.
Dim MiCadena, CadenaCorte
MiCadena = " <-Cortar-> "
' Inicializa la cadena.
CadenaCorte = LTrim(MiCadena) ' CadenaCorte = "<-Cortar-> ".
CadenaCorte = RTrim(MiCadena) ' CadenaCorte = " <-Cortar->".
CadenaCorte = LTrim(RTrim(MiCadena)) ' CadenaCorte = "<-Cortar->".
' El uso de la funcin Trim por s sola logra el mismo resultado.
CadenaCorte = Trim(MiCadena) ' CadenaCorte = "<-Cortar->".

17.15-Mid
Devuelve un tipo Variant (String) que contiene un nmero especificado de caracteres de una cadena.
Sintaxis
Mid(string, start[, length])
La sintaxis de la funcin Mid tiene estos argumentos con nombre:
Parte Descripcin
string Obligatorio. Expresin de cadena de la cual se devuelven los caracteres. Si string contiene Null, se
devuelve Null.
start
Obligatorio; un tipo Long. Posicin de carcter en string en la cual comienza la parte que se quiere
tomar. Si start es mayor que el nmero de caracteres en la string, Mid devuelve una cadena de
longitud cero ("").
length Opcional, un tipo Variant (Long). Nmero de caracteres que se van a devolver. Si se omite o en el
texto hay menos de length caracteres (incluyendo el carcter de start), se devuelven todos los
caracteres desde la posicin de start hasta el final de la cadena.

Comentarios
Para determinar el nmero de caracteres en string, utilice la funcin Len.

Ejemplo de la funcin Mid


En este ejemplo se utiliza la funcin Mid para devolver un nmero especificado de caracteres de una cadena.
Dim MiCadena, PrimeraPalabra, UltimaPalabra, PalabraMedia
MiCadena = "Demostracin funcin Mid" ' Crea la cadena de texto.
PrimeraPalabra = Mid(MiCadena, 1, 12) ' Devuelve "Demostracin".
UltimaPalabra = Mid(MiCadena, 21, 3)
' Devuelve "Mid".
PalabraMedia = Mid(MiCadena, 14)
' Devuelve "funcin Mid".

17.16-MsgBox
Muestra un mensaje en un cuadro de dilogo, espera a que el usuario haga clic en un botn y devuelve un tipo Integer
correspondiente al botn elegido por el usuario.
Sintaxis
MsgBox(prompt[, buttons][, title][, helpfile, context])

Pgina 123 de 159

Curso Visual Basic 5.0


La sintaxis de la funcin MsgBox consta de estos argumentos con nombre:
Parte
-prompt: Requerido. Expresin de cadena que representa el prompt en el cuadro de dilogo. La longitud mxima de
prompt es de aproximadamente 1024 caracteres, segn el ancho de los caracteres utilizados. Si prompt consta de ms de
una lnea, puede separarlos utilizando un carcter de retorno de carro (Chr(13)) o un carcter de avance de lnea (Chr(10)),
o una combinacin de caracteres de retorno de carro-avance de lnea (Chr(13) y Chr(10)) entre cada lnea y la siguiente.
-buttons: Opcional. Expresin numrica que corresponde a la suma de los valores que especifican el nmero y el tipo de
los botones que se pretenden mostrar, el estilo de icono que se va a utilizar, la identidad del botn predeterminado y la
modalidad del cuadro de mensajes. Si se omite este argumento, el valor predeterminado para buttons es 0.
-title: Opcional. Expresin de cadena que se muestra en la barra de ttulo del cuadro de dilogo. Si se omite title, en la barra
de ttulo se coloca el nombre de la aplicacin.
-helpfile: Opcional. Expresin de cadena que identifica el archivo de Ayuda que se utiliza para proporcionar ayuda
interactiva en el cuadro de dilogo. Si se especifica helpfile, tambin se debe especificar context.
-context: Opcional. Expresin numrica que es igual al nmero de contexto de Ayuda asignado por el autor al tema de
Ayuda correspondiente. Si se especifica context, tambin se debe especificar helpfile.
Valores
El argumento buttons tiene estos valores:
Constante
Valor
Descripcin
vbOKOnly
0
Muestra solamente el botn Aceptar.
VbOKCancel
1
Muestra los botones Aceptar y Cancelar.
VbAbortRetryIgnore
2
Muestra los botones Anular, Reintentar e Ignorar.
VbYesNoCancel
3
Muestra los botones S, No y Cancelar.
VbYesNo
4
Muestra los botones S y No.
VbRetryCancel
5
Muestra los botones Reintentar y Cancelar.
VbCritical
16
Muestra el icono de mensaje crtico.
VbQuestion
32
Muestra el icono de pregunta de advertencia.
VbExclamation
48
Muestra el icono de mensaje de advertencia.
VbInformation
64
Muestra el icono de mensaje de informacin.
VbDefaultButton1
0
El primer botn es el predeterminado.
VbDefaultButton2
256
El segundo botn es el predeterminado.
VbDefaultButton3
512
El tercer botn es el predeterminado.
VbDefaultButton4
768
El cuarto botn es el predeterminado.
VbApplicationModal
0
Aplicacin modal; el usuario debe responder al cuadro de mensajes antes
de poder seguir trabajando en la aplicacin actual.
VbSystemModal
4096
Sistema modal; se suspenden todas las aplicaciones hasta que el usuario
responda al cuadro de mensajes.
El primer grupo de valores (0 a 5) describe el nmero y el tipo de los botones mostrados en el cuadro de dilogo; el
segundo grupo (16, 32, 48, 64) describe el estilo del icono, el tercer grupo (0, 256, 512) determina el botn
predeterminado y el cuarto grupo (0, 4096) determina la modalidad del cuadro de mensajes. Cuando se suman nmeros
para obtener el valor final del argumento buttons, se utiliza solamente un nmero de cada grupo.
Nota Estas constantes las especifica Visual Basic for Applications. Por tanto, el nombre de las mismas puede utilizarse
en cualquier lugar del cdigo en vez de sus valores reales.
Valores devueltos
Constante Valor
vbOK
1
vbCancel
2
vbAbort
3
vbRetry
4
vbIgnore
5
vbYes
6
vbNo
7

Descripcin
Aceptar
Cancelar
Anular
Reintentar
Ignorar
S
No

Comentarios
Pgina 124 de 159

Curso Visual Basic 5.0


Cuando se proporcionan tanto helpfile como context, el usuario puede presionar F1 para ver el tema de Ayuda
correspondiente al context.
Si el cuadro de dilogo cuenta con un botn Cancelar, presionar la tecla ESC tendr el mismo efecto que hacer clic en
este botn. Si el cuadro de dilogo contiene un botn Ayuda, se suministra ayuda interactiva para ese cuadro de dilogo.
Sin embargo, no se devuelve valor alguno hasta que se hace clic en uno de estos botones.
Nota Si desea especificar ms que el primer argumento con nombre, debe utilizar MsgBox en una expresin. Si desea
omitir algn argumento de posicin, debe incluir el delimitador de coma correspondiente.
Ejemplo de la funcin MsgBox
En este ejemplo se utiliza la funcin MsgBox para mostrar un mensaje de error crtico en un cuadro de dilogo con
botones S y No. El botn No se considera la respuesta predeterminada. El valor devuelto por la funcin MsgBox
depende del botn elegido por el usuario. En este ejemplo, se supone que DEMO.HLP es un archivo de Ayuda que
contiene un tema con un nmero de contexto igual a 1000.
Dim Mensaje, Estilo, Ttulo, Ayuda, Ctxt, Respuesta, MiCadena
Mensaje = "Desea continuar?"
' Define el mensaje.
Estilo = vbYesNo + vbCritical + vbDefaultButton2 ' Define los botones.
Ttulo = "Demostracin de MsgBox"
' Define el ttulo.
Ayuda = "DEMO.HLP" ' Define el archivo de ayuda.
Ctxt = 1000
' Define el tema
Respuesta = MsgBox(Mensaje, Estilo, Ttulo, Ayuda, Ctxt)
If Respuesta = vbYes Then
' El usuario eligi el botn S.
MiCadena = "S" ' Ejecuta una accin.
Else
' El usuario eligi el botn No.
MiCadena = "No"
' Ejecuta una accin.
End If

17.17-Right
Devuelve un tipo Variant (String) que contiene un nmero especificado de caracteres del lado derecho de una cadena.
Sintaxis
Right(string, lenght)
La sintaxis de la funcin Right tiene estos argumentos con nombre:
Parte Descripcin
String Obligatorio. Expresin de cadena desde la cual se devuelven los caracteres que estn ms a la
derecha. Si string contiene Null, se devuelve Null.
lenght Se requiere, un tipo Variant (Long). Expresin numrica que indica cuntos caracteres se van a
devolver. Si es 0, se devuelve una cadena de longitud cero (""). Si es mayor o igual al nmero de
caracteres en string, se devuelve la cadena completa.
Comentarios
Para determinar el nmero de caracteres en string, utilice la funcin Len.
Ejemplo de la funcin Right
En este ejemplo se utiliza la funcin Right para devolver un nmero especificado de caracteres de la parte derecha de la
cadena.
Dim UnaCadena, MiCadena
UnaCadena = "Hola Mundo"
' Define una cadena.
MiCadena = Right(UnaCadena, 1) ' Devuelve "o".
MiCadena = Right(UnaCadena, 6) ' Devuelve "Mundo".
MiCadena = Right(UnaCadena, 20)
' ' Devuelve "Hola Mundo".
Pgina 125 de 159

Curso Visual Basic 5.0

17.18-Str
Devuelve en un tipo Variant (String) la representacin de cadena de un nmero.
Sintaxis
Str(nmero)
El argumento nmero necesario es un tipo Long que contiene una expresin numrica vlida.

Comentarios
Cuando los nmeros se convierten a cadenas, siempre se reserva un espacio a la izquierda para el signo del nmero. Si
nmero es positivo, la cadena devuelta contiene un espacio a la izquierda y el signo ms se da por supuesto.
Utilice la funcin Format para convertir valores numricos en valores con formato de fecha, hora, moneda o en otros
formatos definidos por el usuario. A diferencia de Str, la funcin Format no incluye un espacio a la izquierda para el
signo del nmero.
Nota La funcin Str slo reconoce el punto (.) como separador decimal vlido.
Ejemplo de la funcin Str
En este ejemplo se utiliza Str para devolver una representacin de cadena de un nmero. Cuando un nmero se
convierte en una cadena siempre se reserva un espacio a la izquierda para el signo.
Dim MiCadena
MiCadena = Str(459)
' Devuelve " 459".
MiCadena = Str(-459.65) ' Devuelve "-459,65".
MiCadena = Str(459.001) ' Devuelve " 459,001".

17.19-Ucase
Devuelve un tipo Variant (String) que contiene una cadena especificada que se ha convertido a maysculas.
Sintaxis
UCase(cadena)
El argumento cadena necesario es cualquier expresin de cadena vlida. Si string contiene Null, se devuelve Null.
Comentarios
Slo se convierten a maysculas las letras minsculas. Las letras maysculas o los caracteres que no son letras no sufren
cambios.
Ejemplo de la funcin UCase
En este ejemplo se utiliza la funcin UCase para devolver la versin en maysculas de una cadena.
Dim LowerCase, UpperCase
LowerCase = "Hola Mundo 1234" ' Cadena a convertir.
UpperCase = UCase(LowerCase)
' Devuelve "HOLA MUNDO 1234".

17.20-Val
Pgina 126 de 159

Curso Visual Basic 5.0


Devuelve los nmeros contenidos en una cadena como un valor numrico del tipo adecuado.
Sintaxis
Val(cadena)
El argumento obligatorio cadena es cualquier expresin de cadena vlida.

Comentarios
La funcin Val deja de leer la cadena en el primer carcter que no puede reconocer como parte de un nmero. Los
smbolos y caracteres que se consideran a menudo parte de valores numricos, como signos de moneda y comas, no se
reconocen. Sin embargo, la funcin reconoce los prefijos de base &O (para octal) y &H (para hexadecimal). Los
espacios en blanco, los tabuladores y los avances de lnea se eliminan del argumento.
Lo siguiente devuelve el valor 1615198:
Val("

1615 198 Calle N.E.")

En el cdigo que se muestra a continuacin, Val devuelve el valor decimal -1 correspondiente al valor hexadecimal entre
parntesis:
Val("&HFFFF")
Nota La funcin Val slo reconoce el punto (.) como separador decimal vlido.
Ejemplo de la funcin Val
En este ejemplo se utiliza la funcin Val para devolver los nmeros contenidos en una cadena.
Dim MiValor
MiValor = Val("2457")
' Devuelve 2457.
MiValor = Val(" 2 45 7") ' Devuelve 2457.
MiValor = Val("24 y 57") ' Devuelve 24.

18- Instrucciones ms usadas en Visual Basic.


2.10.1-FileCopy.
Copia un archivo.
Sintaxis
FileCopy origen, destino
La sintaxis de la instruccin FileCopy consta de los siguientes argumentos con nombre:
Parte Descripcin
origen Requerido. Expresin de cadena que especifica el nombre de un archivo que se va a copiar. El origen puede incluir
el directorio o carpeta y la unidad de disco.
Destino Requerido. Expresin de cadena que especifica el nombre del archivo de destino. Puede incluir el directorio o
carpeta y la unidad de disco.
Comentarios
Si intenta utilizar la instruccin FileCopy en un archivo abierto actualmente, se producir un error.
Ejemplo de la instruccin FileCopy
En este ejemplo se utiliza la instruccin FileCopy para copiar un archivo en otro. Se supone que ARCHORIG es un
archivo que contiene informacin.
Dim ArchOrigen, ArchDestino
Pgina 127 de 159

Curso Visual Basic 5.0


ArchOrigen = "ARCHORIG"
' Se define el nombre del archivo de origen.
ArchDestino = "ARCHDEST"
' Se define el nombre del archivo de origen.
File Copy ArchOrigen, ArchDestino
' Se copia el archivo de origen en el archivo de destino.

2.10.2-Kill
Elimina archivos del disco.
Sintaxis
Kill nombre_ruta
El argumento requerido nombre_ruta es una expresin de cadena que especifica uno o ms nombres de archivos que se
van a eliminar. Puede incluir el directorio o carpeta y la unidad de disco.
Comentarios
La funcin Kill permite el uso de los caracteres comodn '*' (mltiples caracteres) y '?' (un solo carcter) para especificar
varios archivos.
Se producir un error si intenta usar la instruccin Kill para eliminar un archivo abierto.
Nota Para eliminar directorios, utilice la instruccin RmDir.
Ejemplo de la instruccin Kill
En este ejemplo se utiliza la instruccin Kill para borrar un archivo de un disco.
' Se supone que PRUEBA es un archivo que contiene informacin.
Kill "PRUEBA" ' Se elimina el archivo.
' En Microsoft Windows:
' Se eliminan todos los archivos *.TXT del directorio actual.
Kill "*.TXT"

2.10.3-MkDir
Crea un directorio o carpeta.
Sintaxis
MkDir ruta
El argumento requerido ruta es una expresin de cadena que identifica el directorio o carpeta que se va a crear. Puede
incluir la unidad de disco. Si no se especifica la unidad de disco, la instruccin MkDir crea el directorio o carpeta en la
unidad de disco actual.

Ejemplo de la instruccin MkDir


En este ejemplo se utiliza la instruccin MkDir para crear un directorio o una carpeta. Si no se especifica la unidad de
disco, el directorio o carpeta se crea en la unidad actual.
MkDir "MIDIR" ' Se crea el directorio o la carpeta.

2.10.4-On Error.
Activa una rutina de control de errores y especifica la ubicacin de la misma en un procedimiento; tambin puede
utilizarse para desactivar una rutina de control de errores.

Pgina 128 de 159

Curso Visual Basic 5.0

Sintaxis
On Error GoTo lnea
On Error Resume Next
On Error GoTo 0
La sintaxis de la instruccin On Error puede tener cualquiera de los formatos siguientes:
Instruccin:
-On Error GoTo lnea: Activa la rutina de control de errores que comienza en la lnea especificada en el argumento
necesario lnea. El argumento lnea es cualquier etiqueta de lnea o nmero de lnea. Si se produce un error en tiempo de
ejecucin, el control pasa a lnea, activando el controlador de errores. La lnea especificada en el argumento lnea debe
encontrarse en el mismo procedimiento que la instruccin On Error; o de lo contrario, se producir un error en tiempo de
compilacin.
-On Error Resume Next: Especifica que, en caso de que se produzca un error en tiempo de ejecucin, el control pase a la
instruccin que sigue inmediatamente a aqulla en la que se ha producido el error, donde contina la ejecucin.
-On Error GoTo 0:
Desactiva cualquier controlador de errores del procedimiento actual.
Comentarios
Si no utiliza una instruccin On Error, cualquier error en tiempo de ejecucin que se produzca ser fatal; es decir,
aparecer un mensaje de error y la ejecucin se detendr.
Nota Una rutina de control de errores no es un procedimiento Sub ni Function,. Es una seccin de cdigo marcada con
una etiqueta o un nmero de lnea.
Las rutinas de control de errores se basan en el valor de la propiedad Number del objeto Err para determinar la causa
del error. Una rutina de control de errores debe comprobar y guardar los valores de las propiedades del objeto Err antes
de que pueda producirse otro error o antes de que se llame a un procedimiento que pueda causarlo. Los valores de las
propiedades del objeto Err reflejan solamente el error ms reciente. El mensaje de error asociado a Err.Number se
encuentra en Err.Description.
On Error Resume Next hace que la ejecucin contine en la instruccin que sigue inmediatamente a la que caus el
error en tiempo de ejecucin, o en la que sigue inmediatamente a la ltima llamada desde el procedimiento que contiene
la instruccin On Error Resume Next. Esta instruccin permite continuar la ejecucin a pesar de que se haya producido
un error en tiempo de ejecucin.. Puede colocar la rutina de control de errores donde se producira el error, en vez de
transferir el control a otra posicin dentro del procedimiento. La instruccin On Error Resume Next pasa a estar
inactiva cuando se llama a otro procedimiento, por tanto usted debe ejecutar una instruccin On Error Resume Next en
cada rutina que llamada si desea un control de errores integrado dentro de la propia rutina.
On Error GoTo 0 desactiva el control de errores en el procedimiento actual. No especifica la lnea 0 como el inicio del
cdigo de control de errores, ni siquiera cuando el procedimiento contiene una lnea con el nmero 0. Sin una
instruccin On Error GoTo 0, el control de errores se desactiva automticamente al salir del procedimiento.
Para evitar que el cdigo de control de errores se ejecute cuando no se ha producido ningn error, coloque una
instruccin Exit Sub o Exit Function inmediatamente antes de la rutina de control de errores, como en el ejemplo
siguiente:
Sub InicializarMatriz(Var1, Var2, Var3, Var4)
On Error GoTo ControlErrores
...
Exit Sub
ControlErrores:
...
Resume Next
End Sub
Aqu, el cdigo de control de errores viene a continuacin de la instruccin Exit Sub y precede a End Sub para
separarlo del flujo normal del procedimiento. El cdigo de control de errores puede situarse en cualquier lugar del
procedimiento.
Pgina 129 de 159

Curso Visual Basic 5.0


Ejemplo de la instruccin On Error
Este ejemplo utiliza primero la instruccin On Error GoTo para especificar la ubicacin de una rutina de control de
errores dentro de un procedimiento. En el ejemplo, un intento de eliminar un archivo abierto genera el error nmero 55.
El error se controla en la rutina de manejo de errores y a continuacin se devuelve el control a la instruccin que
provoc el error. La instruccin On Error GoTo 0 desactiva la deteccin de errores. A continuacin se utiliza la
instruccin On Error Resume Next para retardar la deteccin de errores de forma que se pueda conocer con total
seguridad el contexto para el error generado por la instruccin posterior. Observe que Err.Clear se utiliza para borrar las
propiedades del objeto Err despus de tratar el error.
Sub DemoInstrucOnError()
On Error GoTo ControlError
' Activa la rutina de control de errores.
Open "PRUEBA" For Output As #1
' Abre archivo para salida.
Kill "PRUEBA" ' Intenta eliminar el archivo
' abierto.
On Error Goto 0 ' Desactiva la deteccin de errores.
On Error Resume Next ' Retarda deteccin de errores.
RefObjeto = GetObject("MiWord.Basic") ' Intenta
' iniciar un objeto que no existe, despus
' comprueba errores de Automatizacin.
If Err.Number = 440 Or Err.Number = 432 Then
' Indica al usuario lo que ha ocurrido. Luego borra el objeto Err.
Msg = "Se produjo un error al intentar abrir el objeto Automatizacin!"
MsgBox Msg, , "Prueba de error retardada"
Err.Clear
' Borra campos del objeto Err
End If
Exit Sub' Salir para evitar el controlador.
ControlError:
' Rutina de control de errores.
Select Case Err.Number ' Evala el nmero de error.
Case 55 ' Error "Archivo ya est abierto".
Close #1' Cierra el archivo abierto.
Case Else
' Puede incluir aqu otras situaciones...
End Select
Resume ' Continuar ejecucin en la lnea que
' caus el error.
End Sub

2.10.5-Option Explicit
Se usa en el nivel de mdulo para forzar declaraciones explcitas de todas las variables en ese mdulo.
Sintaxis
Option Explicit
Comentarios
Si se usa, la instruccin Option Explicit debe aparecer en un mdulo antes de cualquier procedimiento.
Cuando Option Explicit aparece en un mdulo, debe declarar explcitamente todas las variables mediante las
instrucciones Dim, Private, Public, ReDim o Static. Si intenta usar un nombre de variable no declarado, ocurrir un
error en tiempo de compilacin.
Nota Utilice Option Explicit para evitar escribir incorrectamente el nombre de una variable existente o para evitar
confusiones en el cdigo, donde el alcance de la variable no est claro.
Ejemplo de la instruccin Option Explicit

Pgina 130 de 159

Curso Visual Basic 5.0


En este ejemplo se utiliza la instruccin Option Explicit para forzar la declaracin explcita de todas las variables. Si se
intenta utilizar una variable no declarada se obtiene un error en el tiempo de compilacin. La instruccin Option
Explicit slo se utiliza en el nivel de mdulo.
Option Explicit
Dim MiVar
MiEnt = 10
MiVar = 10

' Fuerza la declaracin explcita de variables.


' Declara la variable.
' La variable no declarada genera un error.
' La variable declarada no generar error.

2.10.6-SendKeys
Enva una o ms pulsaciones de teclas a la ventana activa, como si se hubieran presionado desde el teclado.
Sintaxis
SendKeys string[, wait]
La sintaxis de la instruccin SendKeys consta de estos argumentos con nombre:
Parte Descripcin
string Requerido. Expresin de cadena que especifica las pulsaciones de teclas que se van a enviar.
wait
Opcional. Valor Boolean que indica el modo de espera. Si este valor es False (predeterminado), se devuelve el
control al procedimiento inmediatamente despus de enviar las pulsaciones. Si es True, se procesan las pulsaciones antes
de devolver el control al procedimiento.
Comentarios
Cada tecla est representada por uno o ms caracteres. Para especificar un nico carcter del teclado, se utiliza el
carcter propiamente dicho. Por ejemplo, para representar la letra A, utilice "A" como string. Si se desea representar
ms de un carcter, agregue cada carcter adicional al que lo precede. Para representar las letras A, B y C, utilice "ABC"
para string.
El signo ms (+), el smbolo de intercalacin (^), el smbolo de porcentaje (%), la tilde (~) y los parntesis ( ) tienen
significados especiales para SendKeys. Para especificar uno de estos caracteres, debe incluirlo entre llaves. Por ejemplo,
para especificar el signo ms, utilice {+}.
Para especificar caracteres que no se muestran al presionar una tecla (como por ejemplo ENTRAR o TAB) y teclas que
representan acciones, en lugar de caracteres, se utilizan los siguientes cdigos:
Tecla:
RETROCESO: {BACKSPACE}, {BS}o {BKSP}
INTER: {BREAK}
BLOQ MAYS: {CAPSLOCK}
SUPR: {DELETE} o {DEL}
FLECHA ABAJO: {DOWN}
FIN: {END}
ENTRAR: {ENTER}o ~
ESC: {ESC}
AYUDA: {HELP}
INICIO: {HOME}
INSERT: {INSERT} o {INS}
FLECHA IZQUIERDA: {LEFT}
BLOQ NM: {NUMLOCK}
RE PG: {PGDN}
AV PG: {PGUP}
IMPR PANT: {PRTSC}
FLECHA DERECHA: {RIGHT}
BLOQ DESPL: {SCROLLLOCK}
TAB: {TAB}
FLECHA ARRIBA: {UP}
F1:
{F1}
F2:
{F2}
Pgina 131 de 159

Curso Visual Basic 5.0


F3:
F4:
F5:
F6:
F7:
F8:
F9:
F10:
F11:
F12:
F13:
F14:
F15:
F16:

{F3}
{F4}
{F5}
{F6}
{F7}
{F8}
{F9}
{F10}
{F11}
{F12}
{F13}
{F14}
{F15}
{F16}

Para especificar teclas con cualquier combinacin de las teclas MAYS, CTRL y ALT, introduzca delante del cdigo de
la tecla uno o ms de los siguientes cdigos:
Tecla
MAYS: +
CTRL (CONTROL): ^
ALT: %
Para especificar que se debe mantener presionada una combinacin cualquiera de las teclas MAYS, CTRL y ALT
mientras se presionan otras teclas, ponga entre parntesis el cdigo relativo a esas teclas. Por ejemplo, para especificar
que se debe mantener presionada MAYS mientras se presionan las teclas E y C, utilice "+(EC)". Para especificar que
se debe mantener presionada MAYS mientras se presiona la tecla E y que luego se debe presionar C, sin presionar
MAYS, utilice "+EC".
Para especificar pulsaciones repetidas de teclas, utilice el formato {tecla nmero}. Debe dejar un espacio en blanco entre
tecla y nmero. Por ejemplo, {LEFT 42} significa que se debe presionar la tecla FLECHA IZQUIERDA 42 veces; {h
10} significa que se debe presionar la tecla h 10 veces.
Nota No puede utilizar SendKeys para enviar pulsaciones de teclas a aplicaciones que no estn diseadas para
funcionar con Microsoft Windows. SendKeys puede enviar tambin la pulsacin de la tecla IMPR PANT (PRTSC) a
cualquier aplicacin.
Ejemplo de la instruccin SendKeys
En este ejemplo se utiliza la funcin Shell para ejecutar la aplicacin Calculadora incluida en Microsoft Windows; luego
se utiliza la instruccin SendKeys para enviar pulsaciones de teclas para sumar algunos nmeros y finalmente se
termina la aplicacin Calculadora. La instruccin SendKeys no est disponible en Macintosh. (Para ver el ejemplo,
pguelo en un procedimiento y a continuacin, ejecute el procedimiento. Puesto que AppActivate cambia el enfoque a la
aplicacin Calculadora, no puede avanzar paso a paso por el cdigo).
Dim ReturnValue, I
ReturnValue = Shell("Calc.exe", 1)' Ejecuta la Calculadora.
AppActivate ReturnValue
' Activa la Calculadora.
For I = 1 To 100 ' Establece un bucle contador.
SendKeys I & "{+}", True' Enva pulsaciones a la Calculadora
Next I ' para sumar cada valor de I.
SendKeys "=", True
' Obtiene el total general.
SendKeys "%{F4}", True ' Enva ALT+F4 para cerrar la Calculadora.

2.10.7-Unload
Descarga de memoria un formulario..
Sintaxis
Unload objeto
Pgina 132 de 159

Curso Visual Basic 5.0

El marcador de posicin objeto es el nombre de un objeto Form.


Comentarios
La descarga de un formulario puede ser necesaria o conveniente en aquellos casos en los que la memoria utilizada sea
necesaria para alguna otra tarea o cuando sea necesario restablecer las propiedades a sus valores originales.
Antes de descargar un formulario se produce el evento Query_Unload, seguido del procedimiento de evento
Form_Unload. Si establece el argumento cancelar a True en alguno de estos eventos no se descargar el formulario.
Nota Cuando se descarga un formulario, slo se descarga el componente mostrado. El cdigo asociado al mdulo del
formulario permanece en memoria.
Ejemplo de la instruccin Unload
Este ejemplo usa la instruccin Unload para descargar un objeto Form. Para probar este ejemplo, pegue el cdigo en la
seccin Declaraciones de un objeto Form y despus ejecute el ejemplo y haga clic en el objeto Form.
Private Sub Form_Click ()
Dim Answer, Msg
' Declara la variable.
Unload Form1 ' Descarga el formulario.
Msg = "Form1 se ha descargado. Elija "S" para cargarlo y "
Msg = Msg & "presentarlo. Elija "No" para cargar el "
Msg = Msg & "formulario y dejarlo invisible."
Answer = MsgBox(Msg, vbYesNo)
' Obtiene la respuesta del usuario.
If Answer = vbYes Then ' Evala la respuesta.
Show ' Si es S, muestra el formulario.
Else
Load Form1
' Si es No, slo lo carga.
Msg = "Form1 se ha cargado. Elija "Aceptar" para mostrarlo."
MsgBox Msg
' Presenta el mensaje.
Show ' Muestra el formulario.
End If
End Sub

2.11-Trabajando con menes.


2.11.1-Creacin de menes con el editor de menes.
Puede utilizar el Editor de mens para crear nuevos mens y barras de mens, agregar nuevos comandos a mens
existentes, reemplazar comandos de men existentes por sus propios comandos, y cambiar y eliminar mens y barras de
mens existentes.
Para presentar el Editor de mens
En el men Herramientas, elija Editor de mens.
O bien

Haga clic en el botn Editor de mens de la barra de herramientas.


.

Aparecer el Editor de mens.


Mientras que casi todas las propiedades del control de mens pueden establecerse mediante el Editor de mens, todas las
propiedades de los mens estn disponibles en la ventana Propiedades. Las dos propiedades ms importantes de los
controles de mens son:

Name: es el nombre que se utiliza para hacer referencia al control de mens en el cdigo.
Caption: es el texto que aparece en el control.

Otras propiedades del Editor de mens, como Index, Checked y NegotiatePosition, se describen ms adelante en este
tema.
Pgina 133 de 159

Curso Visual Basic 5.0

2.11.2-Uso del cuadro de lista del editor de menes.


El cuadro de lista del control de mens (la parte inferior del Editor de mens) enumera todos los controles de mens del
formulario actual. Cuando escribe un elemento de men en el cuadro de texto Caption, dicho elemento tambin aparece
en el cuadro de lista del control de mens. Si selecciona un control de mens existente del cuadro de lista, podr
modificar las propiedades de dicho control.
Por ejemplo, la figura del editor de menes muestra los controles de mens del men Archivo de una aplicacin tpica.
La posicin del control de mens en el cuadro de lista del control de mens determina si el control es un ttulo de men,
un elemento de men, un ttulo de submen o un elemento de submen:
Un control de mens que aparezca alineado a la izquierda en el cuadro de lista se presenta en la barra de mens
como un ttulo de men.
Un control de mens que est sangrado una vez en el cuadro de lista se presenta en el men cuando el usuario hace
clic en el ttulo de men precedente.
Un control de mens sangrado seguido de controles de mens con un nivel mayor de sangra se convierte en un
ttulo de submen. Los controles de mens sangrados bajo el ttulo del submen se convierten en elementos del
submen.
Un control de mens con un guin (-) como propiedad Caption aparece como una barra separadora. Una barra
separadora divide los elementos del men en grupos lgicos.
Nota Un control de mens no puede ser una barra separadora si es un ttulo de men, tiene elementos submen, est
activado o desactivado, o tiene una tecla de mtodo abreviado.
Para crear controles de mens en el Editor de mens
1.Seleccione el formulario.
2.En el men Herramientas, elija Editor de mens.

o bien
Haga clic en el botn Editor de mens de la barra de herramientas.
3.En el cuadro de texto Caption, escriba el texto del ttulo del primer men que quiera que aparezca en la barra de
mens. Coloque tambin un signo & delante de la letra que desee que sea la tecla de acceso a dicho elemento de men.
Esta letra aparecer subrayada automticamente en el men.
El texto del ttulo del men se presenta en el cuadro de lista del control de mens.
4.En el cuadro de texto Name, escriba el nombre que desee utilizar para hacer referencia al control de mens desde el
cdigo. Vea "Recomendaciones de ttulos y nombres de mens", ms adelante en este mismo tema.
5.Haga clic en los botones de flecha a la izquierda o a la derecha para modificar el nivel de sangra del control.
6.Establezca otras propiedades del control, si lo desea. Puede hacerlo con el Editor de mens o, posteriormente, en la
ventana Propiedades.
7.Elija Siguiente para crear otro control de mens.

o bien
Haga clic en Insertar para agregar un control de mens entre controles existentes.
Tambin puede hacer clic en los botones de flecha arriba y flecha abajo para mover el control entre los controles de
mens existentes.
8.Elija Aceptar para cerrar el Editor de mens cuando haya creado todos los controles de mens del formulario.
En el formulario se mostrarn los ttulos de los mens creados. En tiempo de diseo, haga clic en el ttulo de un men
para desplegar sus correspondientes elementos de men.

2.11.3-Separacin de elementos de menes.


Una barra separadora se presenta como una lnea horizontal entre los elementos de un men. En un men con muchos
elementos, puede utilizar una barra separadora para dividir los elementos en grupos lgicos. Por ejemplo, el men
Ayuda de Visual Basic usa barras separadoras para dividir sus elementos de men en tres grupos, como se muestra en la
figura.

Pgina 134 de 159

Curso Visual Basic 5.0

Figura: Barras separadoras

Para crear una barra separadora con el Editor de mens


1.Si va a agregar una barra separadora a un men existente, elija Insertar para insertar un control de mens entre los
elementos de men que desee separar.
2.Si es necesario, haga clic en el botn de flecha a la derecha para sangrar el nuevo elemento de men al mismo nivel
que los elementos de men que vaya a separar.
3.Escriba un guin (-) en el cuadro de texto Caption.
4.Establezca la propiedad Name.
5.Elija Aceptar para cerrar el Editor de mens.
Nota Aunque las barras separadoras se crean como controles de mens, no responden al evento Click y los usuarios no
pueden seleccionarlas.

2.11.4-Asignacin de teclas de acceso y de mtodo abreviado.


Puede mejorar el acceso por teclado a los comandos de los mens si define teclas de acceso y de mtodo abreviado.
Teclas de acceso
Las teclas de acceso permiten al usuario abrir un men presionando la tecla ALT y escribiendo una letra designada. Una
vez abierto el men, el usuario puede elegir un control si presiona la letra (tecla de acceso) asignada al mismo. Por
ejemplo, ALT+E podra abrir el men Edicin y P podra seleccionar el elemento de men Pegar. La asignacin de la
tecla de acceso aparece como una letra subrayada en el ttulo del control de mens, como se muestra en la figura.
Figura: Teclas de acceso.

Para asignar una tecla de acceso a un control de mens con el Editor de mens
1.Seleccione el elemento de men al que desee asignar una tecla de acceso.
2.En el cuadro Ttulo, escriba un signo & inmediatamente delante de la letra que elija como tecla de acceso.

Pgina 135 de 159

Curso Visual Basic 5.0


Por ejemplo, si abre el men Edicin mostrado en la figura anterior, los siguientes valores de la propiedad Caption se
corresponden con las siguientes teclas de acceso.

Nota No use teclas de acceso duplicadas en los mens. Si usa la misma tecla de acceso para ms de un elemento del
men, dicha tecla no funcionar. Por ejemplo, si C es la tecla de acceso para Cortar y Copiar, cuando seleccione el
men Edicin y presione C, se seleccionar el comando Copiar, pero la aplicacin no ejecutar el comando hasta que
presione ENTRAR. El comando Cortar no se seleccionar.
Teclas de mtodo abreviado
Las teclas de mtodo abreviado ejecutan un elemento de men inmediatamente cuando se presionan. A los elementos de
men que se utilizan con ms frecuencia se les puede asignar una tecla de mtodo abreviado, que proporciona un
mtodo de acceso por teclado de slo un paso, en lugar del mtodo de tres pasos de presionar ALT, un carcter de acceso
al ttulo del men y despus un carcter de acceso al elemento del men. Las asignaciones de mtodos abreviados
incluyen combinaciones de teclas de funcin y de control, como CTRL+F1 o CTRL+A. Aparecen en el men a la
derecha del elemento de men correspondiente, como se muestra en la figura.
Figura: Teclas de mtodo abreviado

Para asignar una tecla de mtodo abreviado a un elemento de men


1.Abra el Editor de mens.
2.Seleccione el elemento de men.
3.Seleccione una combinacin de teclas de funcin o de otra tecla en el cuadro combinado Shortcut.
Para quitar una asignacin de tecla de mtodo abreviado, elija "(Ninguno)" en la parte superior de la lista.
Nota Las teclas de mtodo abreviado aparecen automticamente en el men; por tanto, no tiene que escribir
CTRL+tecla en el cuadro de texto Caption del Editor de mens.

2.11.5-Creacin de Submenes.
Cada men que cree puede incluir hasta cinco niveles de submens. Un submen sale de otro men para presentar sus
propios elementos de men. Puede utilizar un submen cuando:
La barra de mens est llena.

Un control de mens concreto se utilice con poca frecuencia.


Quiera hacer nfasis en la relacin de un control de mens con otro.
Pgina 136 de 159

Curso Visual Basic 5.0

Sin embargo, si hay sitio en la barra de mens, es mejor crear un ttulo de men adicional en lugar de un submen. De
esta manera, todos los controles son visibles para el usuario cuando el men se despliega. Tambin es una buena prctica
de programacin restringir el uso de los submens de forma que los usuarios no se pierdan intentando explorar la
interfaz de mens de la aplicacin. (La mayora de las aplicaciones utilizan slo un nivel de submens.)
En el Editor de mens, cualquier control de mens sangrado bajo un control de mens que no sea un ttulo de men es
un control de submens. En general, los controles de submens pueden incluir elementos de submen, barras
separadoras y ttulos de submen.
Para crear un submen
1.Cree el elemento de men que vaya a ser el ttulo del submen.
2.Cree los elementos que vayan a aparecer en el nuevo submen y sngrelos haciendo clic en el botn de flecha a la
derecha.
Cada nivel de sangra est precedido por cuatro puntos (.) en el Editor de mens. Para quitar un nivel de sangra, haga
clic en botn de flecha a la izquierda.
Nota Si est pensando en la posibilidad de utilizar ms de un nivel de submens, piense en utilizar un cuadro de
dilogo en su lugar. Los cuadros de dilogo permiten que los usuarios especifiquen varias opciones en un nico lugar.
Para obtener informacin acerca del uso de cuadros de dilogo, vea "Cuadros de dilogo", ms adelante en este mismo
tema.

2.11.6-Escritura de cdigo para controles de menes.


Cuando el usuario elige un control de mens, se produce un evento Click. Es necesario escribir un procedimiento de
evento Click para cada control de mens. Todos los controles de mens, excepto las barras separadoras (y los controles
de mens desactivados o invisibles), reconocen el evento Click.
El cdigo que escribe en un procedimiento de evento de men no es diferente del que escribira en los procedimientos de
evento de cualquier otro control. Por ejemplo, el cdigo de un evento Click para el elemento Cerrar del men Archivo
podra parecerse a lo siguiente:
Sub mnuFileClose_Click ()
Unload Me
End Sub
Visual Basic presenta automticamente un men cuando se elige el ttulo del men; por tanto, no es necesario que
escriba cdigo para el procedimiento de evento Click de un ttulo de men a menos que quiera realizar alguna otra
accin, como desactivar ciertos elementos del men cuando ste sea visible.
Nota En tiempo de diseo, los mens que cree se presentarn en el formulario al cerrar el Editor de mens. Al elegir un
elemento de un men dentro del formulario se presenta el procedimiento de evento Click de dicho control de mens.

2.12-Depuracin y control de errores.


2.12.1-Planteamientos de depuracin.
Las tcnicas de depuracin que se presentan en este tema usan las herramientas de anlisis proporcionadas por Visual
Basic. Visual Basic no puede diagnosticar ni solucionar los errores por usted, pero proporciona las herramientas para
ayudarle a analizar cmo fluye la ejecucin de una parte del procedimiento a otra y cmo cambian los valores de las
propiedades y las variables a medida que se ejecutan las instrucciones. Las herramientas de depuracin le dejan
examinar dentro de la aplicacin para ayudarle a determinar lo que pasa y por qu.
La depuracin en Visual Basic incluye puntos de interrupcin, expresiones de interrupcin, expresiones de inspeccin,
paso a paso a travs de una instruccin o procedimiento cada vez y presentacin de los valores de las variables y las
propiedades. Visual Basic tambin incluye caractersticas especiales de depuracin, como la posibilidad de modificar y
continuar, establecimiento de la prxima instruccin para ejecutar y prueba de procedimientos mientras la aplicacin
est en modo de interrupcin.
Pgina 137 de 159

Curso Visual Basic 5.0

2.12.2- Tipos de errores.


Para entender de qu manera puede ser til la depuracin, considere los tres tipos de errores que se puede encontrar.
Errores de compilacin

Errores en tiempo de ejecucin


Errores lgicos

2.12.3-Errores de Compilacin.
Los errores de compilacin se producen por un cdigo creado incorrectamente. Si escribe incorrectamente una palabra
clave, omite algn signo de puntuacin necesario o usa una instruccin Next sin la instruccin For correspondiente en
tiempo de diseo, Visual Basic detectar estos errores cuando compile la aplicacin.
Los errores de compilacin incluyen errores en la sintaxis. Por ejemplo, podra tener una instruccin como sigue:
Left
Left es una palabra vlida en el lenguaje de Visual Basic, pero sin un objeto, no cumple con los requisitos sintcticos
para esa palabra (objeto.Left). Si ha seleccionado la opcin Comprobacin automtica de sintaxis en la ficha Editor
del cuadro de dialogo Opciones, Visual Basic presentar un mensaje de error tan pronto como introduzca un error
sintctico en la ventana Cdigo.
Para establecer la opcin Comprobacin automtica de sintaxis
1.En el men Herramientas, seleccione Opciones y haga clic en la ficha Editor del cuadro de dilogo Opciones.
2.Seleccione Comprobacin automtica de sintaxis.

2.12.4-Errores en tiempo de ejecucin


Los errores en tiempo de ejecucin se producen mientras la aplicacin est en ejecucin (y Visual Basic los detecta)
cuando una instruccin intenta una operacin que es imposible de realizar. Un ejemplo de esto es una divisin por cero.
Suponga que tiene esta instruccin:
Velocidad = Kilmetros / Horas
Si la variable Horas contiene cero, la divisin no es una operacin vlida, incluso aunque la instruccin sea
sintcticamente correcta. La aplicacin se debe ejecutar antes de que se pueda detectar este error.

2.12.5-Errores lgicos.
Los errores lgicos se producen cuando una aplicacin no acta de la forma que se pretenda. Una aplicacin puede
tener cdigo sintcticamente vlido, ejecutarse sin llevar a cabo ninguna operacin que no sea vlida y, an as, producir
resultados incorrectos. Slo si prueba la aplicacin y analiza los resultados puede comprobar que la aplicacin est
actuando correctamente.

2.12.6-Como ayudan las herramientas de depuracin.


Las herramientas de depuracin estn diseadas para ayudarle con:
Los errores lgicos y los que se producen en tiempo de ejecucin.

La observacin del comportamiento del cdigo que no tiene errores.

Por ejemplo, un resultado incorrecto puede producirse al final de una larga serie de clculos. En la depuracin, la tarea
es determinar dnde ha fallado algo y qu es lo que ha fallado. Quiz se le ha olvidado inicializar una variable, ha
elegido el operador equivocado o ha utilizado una frmula incorrecta.

Pgina 138 de 159

Curso Visual Basic 5.0


No hay trucos mgicos para depurar y no hay una secuencia fija de pasos que funcione todas las veces. Bsicamente, la
depuracin le ayuda a entender qu es lo que est sucediendo mientras se ejecuta su aplicacin. Las herramientas de
depuracin le ofrecen una instantnea del estado actual de su aplicacin, incluyendo lo siguiente:
La apariencia de la interfaz de usuario (UI).

Los valores de las variables, expresiones y propiedades.


Las llamadas a los procedimientos activos.

Cuanto mejor entienda cmo funciona su aplicacin, ms rpido podr encontrar los errores.

2.12.7-La barra de herramientas de depuracin.


Entre sus muchas herramientas de depuracin, Visual Basic proporciona varios botones en la barra de herramientas
opcional Depuracin que son muy tiles. La figura muestra estas herramientas. Para presentar la barra de herramientas
Depuracin, haga clic con el botn secundario del mouse (ratn) en la barra de herramientas de Visual Basic y
seleccione la opcin Depuracin.
Figura: La barra de herramientas Depuracin

La siguiente tabla describe brevemente el objetivo de cada herramienta. Los temas de este tema tratan las situaciones en
las que cada una de estas herramientas le pueden ayudar a depurar o analizar una aplicacin con ms eficacia.
Herramienta de depuracin
Punto de interrupcin
Paso a paso por instrucciones
Paso a paso por procedimientos
Paso a paso para salir
Ventana Locales
Ventana Inmediato
Ventana Inspeccin
Inspeccin rpida
Pila de llamadas

Objetivo
Define una lnea en la ventana Cdigo donde Visual Basic suspende la
ejecucin de una aplicacin.
Ejecuta la siguiente lnea ejecutable de cdigo de la aplicacin y recorre
paso a paso las instrucciones de procedimientos.
Ejecuta la siguiente lnea ejecutable de cdigo de la aplicacin sin recorrer
paso a paso las instrucciones de procedimientos.
Ejecuta el resto del procedimiento actual y se interrumpe en la siguiente
lnea del procedimiento de llamada.
Presenta el valor actual de las variables locales.
Le permite ejecutar cdigo o valores de consulta mientras la aplicacin
est en modo de interrupcin.
Presenta los valores de las expresiones seleccionadas.
Presenta el valor actual de una expresin mientras la aplicacin est en
modo de interrupcin.
Mientras est en modo de interrupcin, presenta un cuadro de dilogo que
muestra todos los procedimientos a los que se ha llamado, pero que
todava no se han ejecutado completamente.
Pgina 139 de 159

Curso Visual Basic 5.0

2.13-Creacin de un programa de instalacin.


2.13.1-Uso del Asistente para instalar de Visual Basic.
El Asistente para instalar de Visual Basic facilita la creacin de un programa de instalacin para una aplicacin. Al igual
que otros asistentes, el Asistente para instalar le pide informacin para poder crear lo que quiera.
En la mayora de los casos, el Asistente para instalar es todo lo que necesitar para crear un programa de instalacin.
Para iniciar el Asistente para instalar
1-Si el proyecto para el que quiere crear un programa de instalacin est abierto, gurdelo y cierre Visual Basic.
2-Seleccione el icono Asistente para instalar del men Inicio de Visual Basic 5.0, en Windows 95 o en Windows NT
4.0, o del Grupo de programas de Visual Basic 5.0, en el Administrador de programas de Windows NT 3.51.
Cada pantalla del Asistente para instalar le pedir informacin acerca del proyecto y le permitir elegir qu opciones
quiere incorporar al programa de instalacin, cmo se va a distribuir, si quiere que el Asistente para instalar compile la
aplicacin, etc.
En cada una de estas pantallas se explica adems su uso, cundo cierta informacin es opcional y qu informacin debe
introducir antes de que el proceso pueda continuar (antes de que pueda pasar a la prxima pantalla). A medida que
avanza en cada pantalla, si necesita ms informacin, presione F1 o haga clic en el botn Ayuda.

2.13.2-Opciones de Distribucin.
Puede distribuir la aplicacin en disquetes, en CD o en una red. Si va a utilizar disquetes, puede elegir el mtodo
Disquete o el mtodo Directorios de discos del Asistente para instalar. Si piensa distribuir la aplicacin en un CD o en
una red, puede elegir el mtodo Directorio nico o el mtodo Directorios de disco.
Figura: Eleccin de las opciones de distribucin con el Asistente para instalar

Si piensa distribuir la aplicacin en disquetes, puede utilizar la opcin Unidad de discos para generar discos flexibles en
el equipo o puede crear imgenes de disquetes para emplearlas con un servicio de duplicado de discos mediante la
opcin Directorios de discos.
Si piensa distribuir la aplicacin en una red o en CD, tambin tiene dos opciones. Puede utilizar la opcin Directorio
nico o la opcin Directorios de discos. Ambos mtodos copian los archivos de instalacin en un directorio temporal
Pgina 140 de 159

Curso Visual Basic 5.0


del equipo o de un servidor de red. A continuacin puede ubicar los archivos de instalacin en el servidor de red
adecuado o transferirlos a un CD.
Unidad de discos
Para crear disquetes para el programa de instalacin de la aplicacin cuando no necesite imgenes de disco, seleccione la
opcin Unidad de discos de la pantalla Mtodo de distribucin del Asistente para instalar. Esta pantalla est disponible
cuando ejecuta el Asistente para instalar y selecciona la opcin
Crear un programa de instalacin.
El Asistente para instalar le preguntar el tipo de disquete (1,44, 1,2, 720 360) y la unidad de disco del equipo. Al igual
que en la mayora de las funciones del Asistente para instalar, se le pedir que confirme los archivos y dependencias del
proyecto. Una vez confirmados, el Asistente para instalar determinar la disposicin de los disquetes, comprimir los
archivos apropiados y los copiar a la unidad de disco, pidindole que inserte y quite disquetes cuando sea necesario.
Tambin puede utilizar la opcin Directorios de discos para crear imgenes de disco del programa de instalacin. El
Asistente para instalar realiza esencialmente las mismas acciones que para la opcin Unidad de discos, excepto que las
imgenes se copian a directorios separados de un directorio temporal del equipo o de un servidor de red en lugar de
copiarse a la unidad de disquetes. A continuacin puede copiarlos manualmente a discos, ubicar los archivos en un
servidor de red y permitir que los usuarios los copien a disquetes (si est trabajando en un entorno de red) o
proporcionales un servicio de duplicado de disquetes.
Directorio nico
Puede crear una instalacin de directorio nico si selecciona la opcin Directorio nico. Debe utilizar esta opcin o la
opcin Directorios de discos cuando desee distribuir la aplicacin en una red o en CD. Esta tcnica simplemente copia
todos los archivos de instalacin a un nico directorio.
Cuando seleccione esta opcin, el Asistente para instalar le pedir que confirme los archivos y dependencias del
proyecto y, a continuacin, comprimir y copiar los archivos apropiados a un directorio temporal del equipo o del
servidor de red. De forma predeterminada, los archivos se copian a C:\Windows\Temp\SwSetup.
Despus, puede copiar los archivos al servidor de red o transferirlos a un CD.
Directorios de discos
La opcin Directorios de discos copia los archivos a una estructura de directorios que se asemeja a los discos de
distribucin: Disk1, Disk2, Disk3, etc.
Al igual que con la opcin Directorio nico, cuando seleccione esta opcin el Asistente para instalar le pedir que
confirme los archivos y las dependencias del proyecto, y despus comprimir y copiar los archivos apropiados a un
directorio temporal del equipo o del servidor de red. De forma predeterminada, los archivos se copian a
C:\Windows\Temp\SwSetup.
Puede copiar estos directorios (Disk1, Disk2, etc.) a un servidor de red o transferirlos a un CD para su distribucin. El
usuario puede instalar la aplicacin simplemente si abre la carpeta Disk1 y hace doble clic en el programa de instalacin.

2.13.3-Instalacin de Componentes de acceso a datos.


Si la aplicacin utiliza Objetos de acceso a datos (DAO), el Asistente para instalar le pedir que elija los componentes
ISAM apropiados y de espacio de trabajo.
Puede elegir uno o ms formatos de base de datos ISAM. Al menos debe seleccionar un espacio de trabajo; el Asistente
para instalar no le permitir desactivar las dos opciones de espacio de trabajo: debe seleccionar una o ambas.
Si la aplicacin requiere controladores ODBC, debe instalarlos por separado. Para obtener ms informacin, consulte
ms adelante.
Figura: Opciones de acceso a datos

Pgina 141 de 159

Curso Visual Basic 5.0

Creacin de un disco de instalacin para aplicaciones ODBC


Para la Edicin profesional y la Edicin empresarial, si crea una aplicacin con ODBC y desea distribuirla, debe crear
un disco de instalacin de ODBC. Antes de instalar la aplicacin de Visual Basic en la mquina del usuario (mediante un
programa de instalacin que haya escrito), debe instalar ODBC.
Nota Si la aplicacin utiliza Objetos de datos remotos (RDO), debe dar instrucciones al usuario para que instale los
controladores ODBC antes de instalar la aplicacin. Si no se instalan primero los controladores ODBC, los componentes
RDO no se registrarn.
Para crear un disco de instalacin de ODBC
1-Copie todos los archivos del subdirectorio \Odbc del directorio principal de Visual Basic a un disco o a un directorio
de red.
2-Antes de instalar la aplicacin en la mquina del usuario, ejecute el programa Setup.exe del disco de instalacin de
ODBC o del directorio de red. Utilice la funcin Shell para ejecutar el archivo Setup.exe de ODBC desde el programa
de instalacin o asigne al disco de instalacin de ODBC un ttulo como "Programa de instalacin de ODBC: ejecute
Setup.exe antes de instalar la aplicacin".
Despus de ubicar los archivos ODBC en un disco, compruebe el disco de instalacin de ODBC en una mquina que no
tenga archivos ODBC.
Nota Para instalar ODBC en la mquina de un usuario, debe utilizar el programa de instalacin proporcionado en el
subdirectorio \Odbc del directorio principal de Visual Basic. Algunos de los archivos ODBC estn comprimidos y el
programa de instalacin debe descomprimirlos para instalarlos correctamente.

3) Acceso a Bases de Datos con Visual Basic y Lenguage SQL.


3.1-Fundamentos del lenguage SQL.
3.1.1- Qu es SQL?
SQL es un lenguaje de programacin de bases de datos cuyos orgenes estn estrechamente relacionados con la
invencin de las bases de datos relacionales por E. F. Codd a principios de los 70. Un antecedente del actual SQL fue el
lenguaje Sequel, razn por la cual SQL todava se pronuncia en ingls como sequel en vez de letra a letra, aunque
las dos pronunciaciones son aceptables.
Pgina 142 de 159

Curso Visual Basic 5.0


El SQL moderno ha evolucionado hasta ser un estndar utilizado ampliamente en bases de datos relacionales y se define
por la norma ANSI. La mayora de las implementaciones de SQL tienen pocas variaciones respecto al estndar,
incluyendo la versin admitida por el motor de base de datos Jet. Estas diferencias se contemplan ms adelante en este
tema, pero la estructura y el funcionamiento generales del lenguaje son muy coherentes entre los distintos fabricantes. Si
ha utilizado alguna implementacin de SQL, no tendr dificultad en realizar la transicin a la versin de Microsoft Jet.
SQL frente a desplazamiento
Como se describi antes en este manual, el motor de base de datos Microsoft Jet proporciona dos mtodos para la
mayora de las tareas con bases de datos:
Un modelo de desplazamiento basado en el movimiento por los registros de las bases de datos.
Un modelo relacional basado en el lenguaje de consulta estructurado (SQL).
Los programadores que estn familiarizados con sistemas de bases de datos orientados a archivos, como dBASE,
FoxPro y Paradox, se sentirn ms cmodos con los modelos de desplazamiento. No obstante, en la mayora de los
casos, el mtodo equivalente de SQL es ms eficiente y debe usarse cuando sea importante el rendimiento. Adems,
SQL tiene la ventaja de ser una interfaz de bases de datos estndar, por lo que conocer los comandos de SQL permite
tener acceso y manipular una gran variedad de productos de bases de datos procedentes de distintos fabricantes.
En la prctica, a menudo se encontrar utilizando los dos modelos simultneamente. Por ejemplo, podra utilizar la
instruccin SQL SELECT para crear un pequeo Recordset de elementos seleccionados de una tabla grande y a
continuacin emplear los mtodos de desplazamiento Move para avanzar por el Recordset y examinar determinados
registros de uno en uno.
Nota Los trminos relacionales fila y columna equivalen a los conocidos trminos de bases de datos registro y campo.
Puesto que SQL es un lenguaje de base de datos relacional puro, los trminos fila y columna se utilizan con ms
frecuencia para describir el funcionamiento de los comandos SQL. Para evitar confusiones, ambos conjuntos de
trminos se usan indistintamente en este tema. Recuerde simplemente que una fila es un registro y una columna un
campo.

3.1.2-Componentes de SQL.
El lenguaje SQL est compuesto por comandos, clusulas, operadores y funciones agregadas. Estos elementos se
combinan en las instrucciones empleadas para crear, actualizar y manipular bases de datos.

3.1.2.1-Comandos de SQL
Comando
SELECT
INSERT
UPDATE
DELETE

Descripcin
Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado.
Utilizado para cargar lotes de datos en la base de datos en una nica operacin.
Utilizado para modificar los valores de determinados campos y registros.
Utilizado para quitar registros de una tabla de base de datos.

3.1.2.2-Clusulas de SQL
Las clusulas son condiciones de modificacin utilizadas para definir los datos que desea seleccionar o manipular. La
siguiente tabla muestra las clusulas que puede utilizar.
Clusula
Descripcin
FROM
Utilizada para especificar la tabla de la cual se van a seleccionar los registros.
WHERE
Utilizada para especificar las condiciones que deben cumplir los registros que se van a
seleccionar.
GROUP BY
Utilizada para separar los registros seleccionados en grupos especficos.
HAVING
Utilizada para expresar la condicin que debe satisfacer cada grupo.
ORDER BY
Utilizada para ordenar los registros seleccionados de acuerdo con un orden especificado.

3.1.2.3-Operadores de SQL
Existen dos tipos de operadores en SQL: operadores lgicos y operadores de comparacin.
Pgina 143 de 159

Curso Visual Basic 5.0


Operadores lgicos
Los operadores lgicos se usan para conectar expresiones, normalmente dentro de una clusula WHERE. Por ejemplo:
SELECT * from Mitabla WHERE condicin1 AND condicin2
Aqu el operador AND conecta las expresiones condicin1 y condicin2 para especificar que se deben cumplir las dos
condiciones para satisfacer el criterio de seleccin. Los operadores lgicos son:
AND
OR
NOT
Operadores de comparacin
Los operadores de comparacin se usan para comparar valores relativos de dos expresiones con el fin de determinar la
accin que debe ejecutarse. Por ejemplo:
SELECT * from Editores WHERE Id_de_editor = 5
Aqu el operador = especifica que slo se seleccionarn los registros que tengan un campo Id_de_editor con un valor
de 5.
Los operadores de comparacin se enumeran en la siguiente tabla.
Operador
Significado/Uso
<
Menor que
<=
Menor o igual que
>
Mayor que
>=
Mayor o igual que
=
Igual que
<>
Distinto de
BETWEEN
Utilizado para especificar un intervalo de valores
LIKE
Utilizado en la comparacin de modelos
IN
Utilizado para especificar registros de una base de datos

3.1.2.4-Funciones agregadas de SQL.


Las funciones agregadas se usan dentro de una clusula SELECT en grupos de registros para devolver un nico valor
que se aplica a un grupo de registros. Por ejemplo, la funcin agregada AVG devuelve el promedio de todos los valores
de un determinado campo de un objeto Recordset. La siguiente tabla enumera las funciones agregadas.
Funcin agregada
Descripcin
AVG
Utilizada para calcular el promedio de los valores de un determinado campo.
COUNT
Utilizada para devolver el nmero de registros de la seleccin.
SUM
Utilizada para devolver la suma de todos los valores de un determinado campo.
MAX
Utilizada para devolver el valor ms alto de un campo especificado.
MIN
Utilizada para devolver el valor ms bajo de un campo especificado.

3.1.3-Comandos ms importantes de SQL


3.1.3.1-Select
Pide al motor de base de datos Microsoft Jet que devuelva informacin de la base de datos como un conjunto de
registros.
Sintaxis
SELECT [predicado] { * | tabla.* | [tabla.]campo1 [AS alias1] [, [tabla.]campo2 [AS alias2] [, ...]]}
FROM expresintabla [, ...] [IN basededatosexterna]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]

Pgina 144 de 159

Curso Visual Basic 5.0


[ORDER BY... ]
La sintaxis de la instruccin SELECT consta de las siguientes partes:
Parte
Descripcin
predicado
Uno de los siguientes predicados: ALL, DISTINCT, DISTINCTROW o TOP. Puede
utilizar el predicado para limitar el nmero de registros devueltos. Si no especifica
ninguno, el valor predeterminado es ALL.
*
Especifica que se seleccionan todos los campos de la tabla o tablas especificadas.
tabla
El nombre de la tabla que contiene los campos de la que se van a seleccionar los
registros.
campo1, campo2
Los nombres de los campos que contienen los datos que desea recuperar. Si incluye
ms de un campo, stos se recuperan en el orden enumerado.
alias1, alias2
Los nombres que se van a utilizar como encabezados de columnas en vez de los
nombres de columnas originales en tabla.
expresintabla
El nombre de la tabla o las tablas que contienen los datos que desea recuperar.
Basededatosexterna El nombre de la base de datos que contiene las tablas en expresintabla si no estn en la
base de datos activa.
Comentarios
Para realizar esta operacin, el motor de base de datos Microsoft Jet busca la tabla o las tablas especificadas, extrae las
columnas elegidas, selecciona las filas que cumplen los criterios y ordena o agrupa las filas resultantes en el orden
especificado.
Las instrucciones SELECT no modifican los datos de la base de datos.
La instruccin SELECT suele ser la primera palabra en una instruccin SQL.
La sintaxis mnima para una instruccin SELECT es:
SELECT campos FROM tabla
Puede utilizar un asterisco (*) para seleccionar todos los campos de una tabla. El ejemplo siguiente selecciona todos los
campos de la tabla Empleados:
SELECT * FROM Empleados;
Si se incluye un nombre de campo en ms de una tabla en la instruccin FROM, escriba delante el nombre de la tabla y
el operador . (punto). En el siguiente ejemplo, el campo Departamento est en la tabla Empleados y en la tabla
Supervisores. La instruccin SQL selecciona los departamentos de la tabla Empleados y los nombres de supervisores de
la tabla Supervisores:
SELECT Empleados.Departamento, Supervisores.NombreSupervisor
FROM Empleados INNER JOIN Supervisores
WHERE Empleados.Departamento = Supervisores.Departamento;
Cuando se crea un objeto Recordset, el motor de base de datos Microsoft Jet utiliza el nombre de campo de la tabla
como el nombre de objeto Field en el objeto Recordset. Si desea un nombre de campo diferente o un nombre que no
participe en la expresin utilizada para generar el campo, utilice la palabra reservada AS. El siguiente ejemplo utiliza
el ttulo Nacimiento para dar nombre al objeto Field devuelto en el objeto Recordset resultante:
SELECT FechaNacimiento
AS Nacimiento FROM Empleados;
Siempre que utilice funciones de dominio agregado o consultas que devuelvan nombres de objetos Field ambiguos o
duplicados, debe utilizar la clusula AS para proporcionar un nombre alternativo para el objeto Field. El siguiente
ejemplo utiliza el ttulo CuentaEncabezado para dar nombre al objeto Field devuelto del objeto Recordset resultante:
SELECT COUNT(IdEmpleado)
AS CuentaEncabezado FROM Empleados;
Puede utilizar otras clusulas en una instruccin SELECT para limitar y organizar an ms los datos devueltos. Para
obtener ms informacin al respecto, vea el tema de Ayuda relativo a las clusulas que est utilizando.

3.1.3.2-Delete
Pgina 145 de 159

Curso Visual Basic 5.0


Crea una consulta de eliminacin que elimina registros de una o ms tablas enumeradas en la clusula FROM y que
cumplen la clusula WHERE.
Sintaxis
DELETE [tabla.*]
FROM tabla
WHERE criterio
La instruccin DELETE consta de las siguientes partes:
Parte Descripcin
tabla El nombre opcional de la tabla cuyos registros se van a eliminar.
tabla El nombre de la tabla cuyos registros se van a eliminar.
criterio Una expresin que determina qu registros se van a eliminar.

Comentarios
La instruccin DELETE es especialmente til cuando desea eliminar muchos registros.
Cuando utiliza DELETE slo se elimina el dato; la estructura de la tabla y todas sus propiedades, como los atributos y
los ndices de los campos, permanecen intactos.
Puede utilizar DELETE para quitar registros de las tablas que estn en una relacin uno a varios con otras tablas. Las
operaciones de eliminacin en cascada hacen que los registros de las tablas que estn en el lado varios de la relacin se
eliminen cuando el registro correspondiente del lado uno de la relacin se elimina en la consulta. Por ejemplo, en la
relacin entre las tablas Clientes y Pedidos, la tabla Clientes est en el lado uno y la tabla Pedidos est en el lado varios
de la relacin. La eliminacin de un registro de la tabla Clientes provoca que los registros correspondientes de la tabla
Pedidos se eliminen si se especifica la opcin de eliminacin en cascada.
Una consulta de eliminacin suprime registros completos, y no slo los datos de los campos especficos. Si desea
eliminar valores de un campo especfico, cree una consulta de actualizacin que cambie los valores a Null.
Importante
Despus de quitar registros utilizando una consulta de eliminacin, no puede deshacer la operacin. Si desea saber
qu registros se eliminaron, primero examine el resultado con una consulta de seleccin que utilice el mismo
criterio y despus ejecute la consulta de eliminacin.
Mantenga siempre copias de seguridad de sus datos. Si elimina los registros por equivocacin, podr recuperarlos
de sus copias de seguridad.

3.1.3.3-Insert
Agrega uno o varios registros a una tabla. Esto se conoce como una consulta de datos aadidos.

Sintaxis
Consulta de datos aadidos para mltiples registros:
INSERT INTO destino [IN basededatosexterna] [(campo1[, campo2[, ...]])]
SELECT [origen.]campo1[, campo2[, ...]
FROM expresintabla
Consulta de datos aadidos para un registro:
INSERT INTO destino [(campo1[, campo2[, ...]])]
VALUES (valor1[, valor2[, ...])
La instruccin INSERT INTO consta de las siguientes partes:
-destino: El nombre de la tabla o consulta donde se van a aadir registros.
-Basededatosexterna: La ruta de una base de datos externa. Si desea una descripcin de la ruta de acceso, vea la clusula
IN.
-origen: El nombre de la tabla o consulta de donde se van a copiar registros.
-Campo1, campo2: Los nombres de los campos donde se van a aadir los datos, si est a continuacin del argumento
destino, o los nombres de los campos de donde se obtienen los datos, si est a continuacin de un argumento origen.

Pgina 146 de 159

Curso Visual Basic 5.0


-Expresintabla: El nombre de la tabla o las tablas de donde se van a insertar los registros. Este argumento puede ser un
nombre de tabla sencillo o uno compuesto resultante de una operacin INNER JOIN, LEFT JOIN o RIGHT JOIN, o una
consulta guardada.
-Valor1, valor2: Los valores que se van a insertar en los campos especficos del nuevo registro. Cada valor se inserta en el
campo que corresponde a la posicin del valor en la lista: valor1 se inserta en campo1 del nuevo registro, valor2 dentro de
campo2, y as sucesivamente. Debe separar los valores con una coma y escribir los campos de texto entre comillas ('
').
Comentarios
Puede utilizar la instruccin INSERT INTO para agregar un nico registro a una tabla utilizando la sintaxis de consulta
de datos aadidos para un nico registro como se muestra anteriormente. En este caso, su cdigo especifica el nombre y
valor de cada campo del registro. Debe especificar cada uno de los campos del registro a los que se va a asignar un valor
y dicho valor para ese campo. Cuando no especifique cada campo, se inserta el valor predeterminado o Null en las
columnas no especificadas. Los registros se agregan al final de la tabla.
Tambin puede utilizar la instruccin INSERT INTO para aadir un conjunto de registros de otra tabla o consulta
utilizando la clusula SELECT ... FROM tal y como se muestra anteriormente en la sintaxis de consulta de datos
aadidos para mltiples registros. En este caso, la clusula SELECT especifica los campos a aadir a la tabla destino
especificada.
La tabla origen o destino puede especificar una tabla o una consulta. Si especifica una consulta, el motor de base de
datos Microsoft Jet aade registros a cualquiera y a todas las tablas especificadas en la consulta.
La instruccin INSERT INTO es opcional pero cuando se incluye, debe preceder a la instruccin SELECT.
Si su tabla de destino contiene una clave principal, asegrese de que aade un valor nico y distinto de Null al campo
o campos de la clave principal; si no, el motor de base de datos Microsoft Jet no aadir los registros.
Si aade registros a una tabla con un campo de tipo AutoNumber y desea volver a numerar los registros aadidos, no
incluya el campo AutoNumrico en su consulta. Incluya el campo Autonumrico en la consulta si desea conservar los
valores originales del campo.
Utilice la clusula IN para aadir registros a una tabla de otra base de datos.
Para ver qu registros se van a aadir antes de ejecutar la consulta de datos aadidos, ejecute primero una consulta de
seleccin que utilice el mismo criterio de seleccin para ver los resultados.
Una consulta de datos aadidos copia los registros de una o ms tablas a otra. Las tablas que contienen los registros que
aade no se ven afectadas por la consulta de datos aadidos.
En lugar de aadir registros existentes de otra tabla, puede especificar el valor de cada campo en un registro nuevo
utilizando la clusula VALUES. Si omite la lista de campos, la clusula VALUES debe incluir un valor para cada campo
de la tabla o; de lo contrario; la instruccin INSERT fallar. Utilice una instruccin INSERT INTO adicional con una
clusula VALUES para cada registro adicional que desee crear.

3.1.3.4-Update
Crea una consulta de actualizacin que cambia los valores de los campos en una tabla especfica segn un criterio
especfico.
Sintaxis
UPDATE tabla
SET nuevovalor
WHERE criterio;
La instruccin UPDATE consta de las siguientes partes:
Parte
Descripcin
tabla
El nombre de la tabla cuyos datos desea modificar.
Nuevovalor Una expresin que determina el valor que se va insertar en un campo concreto de los registros
actualizados.
Criterio
Una expresin que determina qu registros se actualizarn. Slo se actualizan los registros que
satisfacen la expresin.
Comentarios
La instruccin UPDATE es especialmente til desea cambiar muchos registros o cuando los registros que desea cambiar
estn en mltiples tablas.
Pgina 147 de 159

Curso Visual Basic 5.0


Puede cambiar varios campos al mismo tiempo. El ejemplo siguiente aumenta los valores de Importe Pedido en un 10
por ciento y los valores de Cargo en un 3 por ciento para las compaas de envo de Mxico:
UPDATE Pedidos
SET ImportePedido = ImportePedido * 1.1,
Cargo = Cargo * 1.03
WHERE PasDestinatario = 'Mxico';

Importante

La instruccin UPDATE no genera un conjunto de resultado. Adems, despus de actualizar registros utilizando una
consulta de actualizacin, no puede deshacer la operacin. Si desea saber qu registros se actualizaron, examine
primero el resultado de una consulta de seleccin que utilice el mismo criterio y despus ejecute la consulta de
actualizacin.
Mantenga siempre copias de seguridad de sus datos. Si actualiza registros equivocados, puede recuperarlos desde
sus copias de seguridad.

3.1.4-Clusulas ms importantes de SQL


3.1.4.1-From
Especifica las tablas o consultas que contienen la lista de campos enumerados en la instruccin SELECT.
Sintaxis
SELECT listacampos
FROM expresintabla [IN basededatosexterna]
Una instruccin SELECT que contiene una clusula FROM consta de las siguientes partes:
Parte
Descripcin
listacampos
El nombre del campo o de los campos que se van a recuperar junto con cualquier alias
de nombre de campo, funciones de dominio agregado de SQL, predicados de
seleccin (ALL, DISTINCT, DISTINCTROW o TOP) u otras opciones de la
instruccin SELECT.
Expresintabla
Una expresin que identifica a una o ms tablas de las que se van a recuperar datos. La
expresin puede ser un nombre de tabla nico, un nombre de consulta guardada o una
composicin resultante de una clusula INNER JOIN, LEFT JOIN o RIGHT JOIN.
Basededatosexterna La ruta completa de una base de datos externa que contiene todas las tablas en
expresintabla.
Comentarios
La clusula FROM es obligatoria y sigue a cualquier instruccin SELECT.
El orden de los nombres de las tablas en expresintabla no es importante.
Para mejorar el rendimiento y facilitar el uso, se recomienda que utilice una tabla vinculada en lugar de una clusula IN
para recuperar datos de una base de datos externa.
El siguiente ejemplo muestra cmo puede recuperar datos de la tabla Empleados:
SELECT Apellidos, Nombre
FROM Empleados;

3.1.4.2-Where
Especifica qu registros de las tablas enumeradas en la clusula FROM se ven afectados por la instruccin SELECT,
UPDATE o DELETE.
Sintaxis
SELECT listacampos
FROM expresintabla
WHERE criterio
Un instruccin SELECT que contiene una clusula WHERE consta de las siguientes partes:
Pgina 148 de 159

Curso Visual Basic 5.0


Parte
listacampos

Descripcin
El nombre del campo o de los campos que se van a recuperar con cualquier alias de nombre
de campo, predicado de seleccin (ALL, DISTINCT, DISTINCTROW o TOP) u otras
opciones de la instruccin SELECT.
Expresintabla El nombre de la tabla o de las tablas de las que se van a recuperar los datos.
Criterio
Una expresin que deben cumplir los registros para que se incluyan en el resultado de la
consulta.
Comentarios
El motor de base de datos Microsoft Jet selecciona los registros que cumplen las condiciones enumeradas en la
clusula WHERE. Si no especifica una clusula WHERE, la consulta devuelve todas las filas de la tabla.
La clusula WHERE es opcional, pero cuando se incluye, sigue a la clusula FROM. Por ejemplo, puede seleccionar
todos los empleados del departamento de ventas (WHERE Dept = 'Ventas') o todos los clientes que tengan entre 18 y 30
aos (WHERE Edad Between 18 And 30).
Si no utiliza una clusula JOIN para realizar operaciones de combinacin SQL en mltiples tablas, el objeto Recordset
resultante no podr actualizar.
La clusula WHERE es similar a la clusula HAVING. La clusula WHERE determina qu registros se seleccionan. De
forma parecida, una vez que los registros se agrupan con la clusula GROUP BY, la clusula HAVING determina qu
registros se van a mostrar.
Utilice la clusula WHERE para eliminar registros que no desea que se agrupen mediante una clusula GROUP BY.
Utilice varias expresiones para determinar qu registros devuelve la instruccin SQL. Por ejemplo, la siguiente
instruccin SQL selecciona todos los empleados cuyos salarios son superiores a $21,000:
SELECT Apellidos, Salario
FROM Empleados
WHERE Salario > 21000;
Una clusula WHERE puede contener hasta 40 expresiones vinculadas por operadores lgicos, como And y Or.
Cuando introduce un nombre de campo que contiene un espacio en blanco o un signo de puntuacin, escriba el nombre
entre corchetes ([ ]). Por ejemplo, una tabla de informacin de clientes podra incluir informacin acerca de unos clientes
concretos:
SELECT [Restaurante favorito del cliente]
Cuando especifica el argumento criterio, los literales de fecha deben estar en el formato de EE.UU., incluso si no est
utilizando la versin norteamericana del motor de base de datos Microsoft Jet. Por ejemplo, el 10 de mayo de 1996, se
escribe 10/5/96 en Espaa y Latinoamrica, y 5/10/96 en Estados Unidos de Amrica. Asegrese de escribir los literales
de fecha entre signos # como se muestra en los siguientes ejemplos.
Para encontrar registros con fecha 10 de mayo de 1996 en una base de datos espaola o latinoamericana, debe utilizar la
siguiente instruccin SQL:
SELECT *
FROM Pedido
WHERE Fecha de envo = #5/10/96#;
Tambin puede utilizar la funcin DateValue, que reconoce las configuraciones internacionales establecidas por
Microsoft Windows. Por ejemplo, utilice este cdigo para Estados Unidos de Amrica:
SELECT *
FROM Pedidos
WHERE Fecha de envo = DateValue('5/10/96');
Y utilice este cdigo para Espaa y Latinoamrica:
SELECT *
FROM Pedidos
WHERE Fecha de envo = DateValue('10/5/96');

3.1.4.3-Order By

Pgina 149 de 159

Curso Visual Basic 5.0


Ordena los registros resultantes de una consulta por un campo o unos campos especificados en sentido ascendente o
descendente.
Sintaxis
SELECT listacampos
FROM tabla
WHERE criterioseleccin
[ORDER BY campo1 [ASC | DESC ][, campo2 [ASC | DESC ]][, ...]]]
Una instruccin SELECT que contenga una clusula ORDER BY consta de las siguientes partes:
Apartado
Descripcin
listacampos
El nombre del campo o de los campos que se van a recuperar junto con cualquier alias de
nombre de campo, funciones de dominio agregado de SQL , predicado de seleccin
(ALL, DISTINCT, DISTINCTROW o TOP) u otras opciones de la instruccin
SELECT.
tabla
El nombre de la tabla o tablas de las que se van a recuperar los datos. Para obtener ms
informacin al respecto, vea la clusula FROM.
criterioseleccin Criterio de seleccin. Si la instruccin incluye una clusula WHERE, el motor de base de
datos Microsoft Jet ordena los valores despus de aplicar las condiciones de la clusula
WHERE a los registros.
Campo1, campo2 Los nombres de los campos por los que se va a ordenar.
Comentarios
La clusula ORDER BY es opcional. Sin embargo, si desea que su datos se muestren ordenados, debe utilizar la clusula
ORDER BY.
El orden predeterminado es ascendente (A a Z, 0 a 9). Los dos ejemplos siguientes ordenan los nombres de los
empleados por su apellido:
SELECT Apellidos, Nombre
FROM Empleados
ORDER BY Apellidos;
SELECT Apellidos, Nombre
FROM Empleados
ORDER BY Apellidos ASC;
Para ordenar en sentido descendente (de Z a A,y de 9 a 0), agregue la palabra reservada DESC al final de cada campo
por el que desee ordenar en sentido descendente. El siguiente ejemplo selecciona los sueldos y los ordena en sentido
descendente:
SELECT Apellidos, Salario
FROM Empleados
ORDER BY Salario DESC, Apellidos;
Si especifica un campo que contiene datos de tipo Memo u Objeto OLE en la clusula ORDER BY, se produce un
error. El motor de base de datos Microsoft Jet no ordena campos de estos tipos.
La clusula ORDER BY suele ser el ltimo elemento de una instruccin SQL.
Puede incluir campos adicionales en la clusula ORDER BY. Los registros se ordenan primero por el primer campo
enumerado despus de la clusula ORDER BY. Los registros que tengan valores iguales en ese campo se ordenan
entonces por el valor del segundo campo, y as sucesivamente.

3.1.5-Operaciones ms importantes de SQL


3.1.5.1-Inner Join
Combina registros de dos tablas siempre que existan valores coincidentes en un campo comn.
Sintaxis
FROM tabla1 INNER JOIN tabla2 ON tabla1.campo1 operadorcomp tabla2.campo2

Pgina 150 de 159

Curso Visual Basic 5.0


La operacin INNER JOIN consta de las siguientes partes:
Parte
Descripcin
tabla1, tabla2
Los nombres de las tablas cuyos registros se van a combinar.
Campo1, campo2 Los nombres de los campos que se van a combinar. Si no son numricos, los campos
deben ser del mismo tipo de datos y contener la misma clase de datos, pero no tienen
porqu tener el mismo nombre.
Operadorcomp Cualquier operador de comparacin relacional: "=," "<," ">," "<=," ">=," o "<>."
Comentarios
Puede utilizar una operacin INNER JOIN en cualquier clusula FROM. Esta es el tipo de combinacin ms comn.
Las combinaciones internas combinan los registros de dos tablas siempre que tengan valores coincidentes en un campo
comn a ambas tablas.
Puede utilizar INNER JOIN con las tablas Departamentos y Empleados para seleccionar todos los empleados de cada
departamento. En cambio, para seleccionar todos los departamentos (aunque alguno no tenga empleados asignados) o
todos los empleados (aunque alguno no est asignado a ningn departamento), puede utilizar una operacin LEFT
JOIN o RIGHT JOIN para crear una combinacin externa.
Si intenta combinar campos que contienen datos de tipo Memo se produce un error.
Puede combinar dos campos numricos cualesquiera de tipos similares. Por ejemplo, puede combinar campos
AutoNumber y Long puesto que son tipos similares. Sin embargo, no puede combinar campos de tipo Single y Double.
El siguiente ejemplo muestra cmo podra combinar las tablas Categoras y Productos por el campo IdCategora:
SELECT NombreCategora, NombreProducto
FROM Categoras INNER JOIN Productos
ON Categoras.IdCategora = Productos.IdCategora;
En el ejemplo anterior, IdCategora es el campo combinado, pero no se incluye en la salida de la consulta porque no est
incluido en la instruccin SELECT. Para incluir el campo combinado, incluya el nombre de campo en la instruccin
SELECT; en este caso, Categoras. IdCategora.
Tambin puede vincular varias clusulas ON en una instruccin JOIN, utilizando la sintaxis siguiente:
SELECT campos
FROM tabla1 INNER JOIN tabla2
ON tabla1.campo1 operadorcomp tabla2.campo1 AND
ON tabla1.campo2 operadorcomp tabla2.campo2) OR
ON tabla1.campo3 operadorcomp tabla2.campo3)];
Tambin puede anidar instrucciones JOIN utilizando la sintaxis siguiente:
SELECT campos
FROM tabla1 INNER JOIN
(tabla2 INNER JOIN [( ]tabla3
[INNER JOIN [( ]tablax [INNER JOIN ...)]
ON tabla3.campo3 operadorcomp tablax.campox)]
ON tabla2.campo2 operadorcomp tabla3.campo3)
ON tabla1.campo1 operadorcomp tabla2.campo2;
Una operacin LEFT JOIN o RIGHT JOIN se puede anidar dentro de una operacin INNER JOIN, pero una operacin
INNER JOIN no se puede anidar dentro de LEFT JOIN o RIGHT JOIN.

3.1.5.2-Left Join, Right Join


Combinan registros de la tabla de origen cuando se utiliza en cualquier clusula FROM.
Sintaxis
FROM tabla1 [ LEFT | RIGHT ] JOIN tabla2
ON tabla1.campo1 operadorcomp tabla2.campo2
Las operaciones LEFT JOIN y RIGHT JOIN consta de las siguientes partes:
Parte
Descripcin
tabla1, tabla2
El nombre de las tablas cuyos registros se van a combinar.
Pgina 151 de 159

Curso Visual Basic 5.0


Campo1, campo2 Nombres de los campos que se combinan. Los campos deben ser del mismo tipo de datos
y contener la misma clase de dato, pero no necesitan tener el mismo nombre.
operadorcomp Cualquier operador de comparacin relacional: "=," "<," ">," "<=," ">=," or "<>."
Comentarios
Utilice una operacin LEFT JOIN para crear una combinacin externa por la izquierda. Las combinaciones externas
por la izquierda pueden incluir todos los registros de la primera (parte izquierda) de dos tablas, aunque no haya valores
coincidentes para los registros de la segunda tabla (parte derecha).
Utilice una operacin RIGHT JOIN para crear una combinacin externa por la derecha. Las combinaciones externas
por la izquierda pueden incluir todos los registros de la segunda (parte derecha) de dos tablas, aunque no haya valores
coincidentes para los registros de la primera tabla (parte izquierda).
Por ejemplo, podra utilizar LEFT JOIN con las tablas Departamentos (parte izquierda) y Empleados (parte derecha)
para seleccionar todos los departamentos, incluyendo aquellos que no tengan empleados asignados a ellos. Para
seleccionar todos los empleados, incluyendo aquellos que no estn asignados a ningn departamento, podra utilizar
RIGHT JOIN.
El siguiente ejemplo muestra cmo podra combinar las tablas Categoras y Productos mediante el campo IdCategora.
La consulta produce una lista de todas las categoras, incluyendo aquellas que no contienen productos:
SELECT NombreCategora,
NombreProducto
FROM Categoras LEFT JOIN Productos
ON Categoras.IdCategora = Productos.IdCategora;
En este ejemplo, el campo combinado es IdCategora pero no se incluye en el resultado de la consulta porque no est
incluido en la instruccin SELECT. Para incluir el campo combinado, introduzca el nombre del campo en la instruccin
SELECT; en este caso, Categoras.IdCategora.
Notas
Para crear una consulta que incluya slo los registros en los cuales los datos de los campos combinados son los
mismos, utilice una operacin INNER JOIN.
Una operacin LEFT JOIN o RIGHT JOIN se puede anidar en una INNER JOIN, pero una INNER JOIN no se
puede anidar en una LEFT JOIN o RIGHT JOIN. Vea la explicacin del anidamiento en el tema dedicado a INNER
JOIN para ver cmo se anidan combinaciones dentro de otras combinaciones.
Puede vincular mltiples clusulas ON. Vea la explicacin de la vinculacin de clusulas en el tema dedicado a
INNER JOIN para ver cmo se hace.
Si intenta combinar campos que contienen datos tipo Memo, se produce un error.

3.1.6-Operadores ms importantes en SQL


3.1.6.1-Like
Compara una expresin de cadena con un modelo en una expresin SQL.

Sintaxis
expresin Like "modelo"
La sintaxis del operador Like consta de las siguientes partes:
Parte
Descripcin
Expresin Expresin SQL utilizada en una clusula WHERE.
modelo
Cadena o literal de cadena de caracteres con la que se compara expresin.
Comentarios
Puede utilizar el operador Like para encontrar valores en un campo que coincidan con el modelo que se especific. Para
modelo, puede especificar el valor completo (por ejemplo , Like "Garca") o puede utilizar caracteres comodn para
encontrar un intervalo de valores (por ejemplo, Like "Ga*").

Pgina 152 de 159

Curso Visual Basic 5.0


En una expresin, puede utilizar el operador Like para comparar un valor de campo con una expresin de cadena. Por
ejemplo, si introduce Like "C*" en una consulta SQL, la consulta devuelve todos los valores de campo que empiecen
con la letra C.
El siguiente ejemplo devuelve los datos que empiezan con la letra P seguida de cualquier letra entre A y F, y tres
nmeros:
Like "P[A-F]###"
La tabla siguiente muestra cmo puede utilizar el operador Like para probar expresiones de diferentes mtodo modelos.

3.2-Objetos de Acceso a Bases de Datos.


3.2.1-DBEngine.
El objeto DBEngine es el objeto de nivel ms alto en el modelo de objeto DAO.

Comentarios
El objeto DBEngine contiene y controla todos los otros objetos en la jerarqua de los objetos del DAO. No puede crear
objetos DBEngine adicionales y el objeto DBEngine no es un elemento de ninguna coleccin.
Con cualquier tipo de base de datos o conexin, puede:
Utilizar la propiedad Version para obtener el nmero de versin del DAO.

Utilizar la propiedad DefaultType para establecer el tipo predeterminado de conexin de base de datos que
utilizarn a continuacin los objetos Workspace creados.
Utilizar las propiedades DefaultPassword y DefaultUser para establecer la identificacin de usuario y contrasea
para el objeto Workspace predeterminado.
Utilizar el mtodo CreateWorkspace para crear un objeto Workspace nuevo. Puede utilizar argumentos opcionales
para sobrescribir los valores de las propiedades DefaultType, DefaultPassword y DefaultUser.
Utilizar el mtodo OpenDatabase para abrir una base de datos en el Workspace predeterminado y utilizar los
mtodos BeginTrans, Commit y Rollback para controlar transacciones en el Workspace predeterminado.
Utilizar la coleccin Workspaces para hacer referencia a objetos Workspace especficos.
Utilizar la coleccin Errors para examinar detalles sobre los errores de acceso a datos.

Pgina 153 de 159

Curso Visual Basic 5.0


Otras propiedades y mtodos slo estn disponibles cuando utiliza DAO con el motor de base de datos Microsoft Jet.
Puede utilizarlos para controlar el motor de base de datos Microsoft Jet, manipular sus propiedades y ejecutar tareas en
objetos temporales que no son elementos de colecciones. Por ejemplo, puede:
Utilizar el mtodo CreateDatabase para crear un nuevo objeto Microsoft Jet Database.

Utilizar el mtodo Idle para activar el motor de base de datos Microsoft Jet y completar las tareas pendientes.
Utilice los mtodos CompactDatabase y RepairDatabase para mantener los archivos de base de datos.
Utilizar las propiedades IniPath y SystemDB para especificar la ubicacin de la informacin de Registro de
Windows de Microsoft Jet y el archivo de informacin de grupo de trabajo Microsoft Jet, respectivamente. El
mtodo SetOption le permite sobrescribir los valores del Registro de Windows para el motor de base de datos
Microsoft Jet.

Despus de cambiar los valores de la propiedad DefaultType y IniPath, slo los objetos Workspace subsiguientes
reflejarn estos cambios.
Para hacer referencia a una coleccin que pertenezca al objeto DBEngine, a un mtodo o a una propiedad que se aplique
a este objeto, utilice la siguiente sintaxis:
[DBEngine.][coleccin | mtodo | propiedad]
Mtodos
Mtodos BeginTrans, CommitTrans, Rollback
Mtodo OpenConnection
Mtodo CompactDatabase
Mtodo OpenDatabase
Mtodo CreateDatabase
Mtodo RegisterDatabase
Mtodo CreateWorkspace
Mtodo RepairDatabase
Mtodo Idle
Mtodo SetOption
Propiedades
Propiedad DefaultType
Propiedad DefaultUser, DefaultPassword
Propiedad IniPath

Propiedad LoginTimeout
Propiedad SystemDB
Propiedad Version

3.2.2-Workspace
Un objeto Workspace define una sesin para un usuario. Contiene las bases de datos abiertas y proporciona
mecanismos para realizar transacciones y, en espacios de trabajo Microsoft Jet admite asegurar grupos de trabajo.
Tambin controles si utiliza el motor de base de datos Microsoft Jet o ODBCDirect para tener acceso a datos externos.

Comentarios
Utilice el objeto Workspace para administrar la sesin actual o para iniciar una sesin adicional. En una sesin, puede
abrir mltiples bases de datos o conexiones y administrar transacciones. Por ejemplo, puede:
Utilizar las propiedades Name, UserName y Type para establecer una sesin con nombre. La sesin crea un
alcance en el que puede abrir mltiples bases de datos y dirigir una instancia de transacciones anidadas.

Pgina 154 de 159

Curso Visual Basic 5.0

Utilice el mtodo Close para terminar una sesin.


Utilizar el mtodo OpenDatabase para abrir una o ms bases de datos existentes en ese Workspace.
Utilizar los mtodos BeginTrans, CommitTrans y Rollback para administrar el proceso de transacciones anidadas
en un Workspace y utilizar varios objetos Workspace para realizar varias transacciones simultneas y
superpuestas.

Adems, utilizar una base de datos Microsoft Jet, puede establecer seguridad basada en nombres de usuario y
contraseas:
Utilice las colecciones Groups y Users para establecer permisos de acceso a nivel de grupo y usuario a objetos en
el objeto Workspace.
Utilice la propiedad IsolateODBCTrans para aislar mltiples transacciones que involucren a la misma base de
datos ODBC conectada a Microsoft Jet.
Cuando hace la primera referencia o utiliza un objeto Workspace, automticamente crea el espacio de trabajo
predeterminado, DBEngine.Workspaces(0). Los valores de las propiedades Name y UserName del espacio de trabajo
predeterminado son "#Default Workspace#" y "Admin," respectivamente. Si est establecida la seguridad, el valor de la
propiedad UserName es el nombre del usuario que inici la sesin.
Cuando utilice transacciones, afecta a todas las bases de datos del objeto Workspace especificado - incluso si estn
abiertos mltiples objetos Database en el objeto Workspace. Por ejemplo, utilice un mtodo BeginTrans, actualice
varios registros en una base de datos y despus elimine registros en otra base de datos. Si despus utiliza el mtodo
Rollback, las operaciones de actualizacin y eliminacin se cancelan y se deshacen los cambios. Puede crear objetos
Workspace adicionales para administrar transacciones independientemente a travs de los objetos Database.
Puede crear objetos Workspace con el mtodo CreateWorkspace. Despus de crear un nuevo objeto Workspace, debe
agregarlo a la coleccin Workspaces si necesita hacer referencia a l desde la coleccin Workspaces.
Puede utilizar un objeto Workspace creado nuevamente sin agregarlo a la coleccin Workspaces. Sin embargo, debe
hacer referencia a l mediante la variable de objeto que tiene asignada.
Para hacer referencia a un objeto Workspace en una coleccin por su nmero de orden o por el valor de la propiedad
Name, utilice cualquiera de los formatos de sintaxis siguientes:
DBEngine.Workspaces(0)
DBEngine.Workspaces("nombre")
DBEngine.Workspaces![nombre]
Mtodos
Mtodos BeginTrans, CommitTrans, Rollback
Mtodo Close
Mtodo CreateDatabase
Mtodo CreateGroup

Mtodo CreateUser
Mtodo OpenConnection
Mtodo OpenDatabase

Propiedades
Propiedad DefaultCursorDriver
Propiedad Name
Propiedad IsolateODBCTrans
Propiedad Type
Propiedad LoginTimeout
Propiedad UserName

3.2.3-Database.
Un objeto Database representa una base de datos abierta.

Pgina 155 de 159

Curso Visual Basic 5.0

Comentarios
Para manipular una base de datos abierta se utiliza un objeto Database y sus mtodos y propiedades. En cualquier tipo
de bases de datos, puede:
Utilizar el mtodo Execute para ejecutar una consulta de accin.
Utilizar la propiedad RecordsAffected para determinar cuntos registros se cambiaron en una consulta de accin.
Utilizar el mtodo OpenRecordset para ejecutar una consulta de seleccin y crear un objeto Recordset.
Utilizar la propiedad Version para determinar qu versin de un motor de base de datos cre la base de datos.
Con una base de datos Microsoft Jet (archivo .mdb), tambin puede utilizar otros mtodos, propiedades y colecciones
para manipular un objeto Database, y para crear, modificar u obtener informacin acerca de sus tablas, consultas y
relaciones. Por ejemplo, puede:
Utilizar los mtodos CreateTableDef y CreateRelation para crear respectivamente tablas y relaciones.
Utilizar el mtodo CreateProperty para definir nuevas propiedades Database.
Utilizar el mtodo CreateQueryDef para crear una definicin de consulta permanente o temporal.
Utilizar los mtodos MakeReplica, Synchronize y PopulatePartial para crear y sincronizar rplicas parciales o
completas de la base de datos.
Establecer la propiedad CollatingOrder para establecer el orden alfabtico para campos de tipo carcter en
diferentes idiomas.
Utilice el mtodo CreateDatabase para crear un objeto Database permanente que se anexa automticamente a la
coleccin Databases y de ese modo guardarlo en disco.
No necesita especificar el objeto DBEngine cuando utiliza el mtodo OpenDatabase.
Abrir una base de datos con tablas vinculadas no establece automticamente vnculos a los archivos externos
especificados o a los origen de datos ODBC conectados a Microsoft Jet. Debe hacer referencia a los objetos TableDef
o Field de la tabla o abrir un objeto Recordset. Si no puede establecer vnculos a estas tablas, se produce un error
interceptable. Tambin puede necesitar permiso para tener acceso a la base de datos u otro usuario podra tener abierta la
base de datos de modo exclusivo. En estos casos se producen errores interceptable.
Tambin puede utilizar el mtodo OpenDatabase para abrir una base de datos externa (como FoxPro, dBASE y
Paradox) directamente en vez de abrir una base de datos Microsoft Jet que tiene vnculos con las tablas.
Nota No se recomienda abrir un objeto Database directamente en un origen de datos ODBC conectado a Microsoft
Jet, como Microsoft SQL Server, porque el rendimiento de la consulta es mucho ms lento que cuando se utilizan tablas
vinculadas. Sin embargo, el rendimiento no es un problema al abrir un objeto Database directamente en un archivo de
base de datos ISAM externo, como FoxPro o Paradox.
Cuando un procedimiento que declara un objeto Database termina su ejecucin, estos objetos Database locales se
cierran junto con cualquier objeto Recordset abierto. Todas las actualizaciones pendientes se pierden y las transacciones
pendientes se reanudan, pero no se produce ningn error. Se pueden terminar explcitamente las transacciones
pendientes o editar y cerrar objetos Recordset y Database, antes de abandonar los procedimientos que declaran
localmente esas variables del objeto.
Cuando utiliza uno de los mtodos de transaccin (BeginTrans, CommitTrans o Rollback) en el objeto Workspace,
estas transacciones se aplican a todas las bases de datos abiertas en el Workspace desde el que se abri el objeto
Pgina 156 de 159

Curso Visual Basic 5.0


Database. Si desea utilizar transacciones independientes, primero debe abrir un objeto Workspace adicional y despus
abrir otro objeto Database en ese objeto Workspace.
Nota Puede abrir el mismo origen de datos o base de datos ms de una vez, creando nombres duplicados en la
coleccin Databases. Debe asignar objetos Database a variables de objeto y hacer referencia a ellas con un nombre de
variable.
Mtodos
Mtodo Close
Mtodo MakeReplica
Mtodo CreateProperty
Mtodo NewPassword
Mtodo CreateQueryDef Mtodo OpenRecordset
Mtodo CreateRelation
Mtodo PopulatePartial
Mtodo CreateTableDef
Mtodo Synchronize
Mtodo Execute
Propiedades
Propiedad CollatingOrder Propiedad ReplicaID
Propiedad Connect
Propiedad Transactions
Propiedad Connection
Propiedad Updatable
Propiedad Name
Propiedad V1xNullBehavior
Propiedad QueryTimeout Propiedad Version
Propiedad RecordsAffected
Propiedad Replicable

3.2.4-Recordset.
Un objeto Recordset representa los registros de una tabla base o los registros que se generan al ejecutar una consulta.

Comentarios
Utilice los objetos Recordset para manipular datos en una base de datos a nivel de registro. Cuando utiliza objetos de
acceso de datos, interacta con los datos prcticamente utilizando objetos Recordset. Todos los objetos Recordset se
construyen utilizando registros (filas) y campos (columnas). Existen tres tipos de objetos Recordset:
Recordset de tipo Table - una representacin en cdigo de una tabla base que puede utilizarse para aadir, cambiar
o eliminar registros desde una nica tabla de base de datos (slo espacios de trabajo Microsoft Jet).
Recordset de tipo Dynaset - el resultado de una consulta cuyos registros pueden actualizarse. Un objeto Recordset
de tipo Dynaset es un conjunto dinmico de registros que puede utilizarse para aadir, cambiar o eliminar registros
desde una tabla o tablas subyacentes de una base de datos. Un objeto Recordset de tipo Dynaset puede contener
campos de una o ms tablas de una base de datos.
Recordset de tipo Snapshot - una copia esttica de un conjunto de registros que puede utilizar para encontrar datos
o generar informes. Un objeto Recordset de tipo Snapshot puede contener campos de una o ms tablas de una base
de datos pero no se puede actualizar.
Recordset de tipo Forward-only - idntico a un tipo Snapshot excepto que no se proporciona ningn cursor. Slo
puede avanzar en los registros. Esto mejora el rendimiento en situaciones donde slo necesita hacer una pasada
sencilla en el conjunto de resultado.
Recordset de tipo Dynamic - un conjunto de resultado de una consulta de una o ms tablas base en las que puede
agregar, cambiar o eliminar registros de una consulta que devuelve filas. Adems, tambin aparecen en el objeto
Recordset los registros que agregan, eliminan o modifican otros usuarios en la tablas base.
Pgina 157 de 159

Curso Visual Basic 5.0


Puede elegir el tipo de objeto Recordset que quiere crear usando el argumento tipo del mtodo OpenRecordset.
En un espacio de trabajo Microsoft Jet, si no especifica un tipo, DAO intenta crear el tipo de objeto Recordset con la
mayor funcionalidad disponible, comenzando con tabla. Si no est disponible este tipo, DAO intenta un Dynaset,
despus un Snapshot y por ltimo un objeto Recordset de tipo Forward-only.
Cuando se crea un objeto Recordset utilizando un objeto TableDef no adjunto, se crean objetos Recordset de tipo
Table. Slo pueden crearse Recordset de tipo Dynaset o Snapshot con tablas adjuntas o tablas de bases de datos
externas ODBC.
Cuando abre el objeto se agrega automticamente un nuevo objeto Recordset a la coleccin Recordsets y se elimina
automticamente cuando lo cierra.
Nota Si utiliza variables para representar un objeto Recordset y el objeto Database que contiene el conjunto de
registros, compruebe que las variables tengan el mismo alcance o duracin. Por ejemplo, si establece una variable global
que representa un objeto Recordset, debe asegurarse de que la variable que represente la base de datos que contiene el
conjunto de registros tambin sea global o se encuentra en un procedimiento Sub o Function con la palabra clave
Static.
Su aplicacin puede crear tantas variables objeto Recordset como se necesiten. Un objeto Recordset puede hacer
referencia a una o ms tablas o consultas y los campos sin conflictos.
Los Recordset de tipo Dynaset y Snapshot se almacenan en la memoria local. Si no hay suficiente espacio en la
memoria local para almacenar los datos, el motor de base de datos Microsoft Jet guarda los datos adicionales en el disco
TEMP. Si este espacio est agotado, se producir un error.
La coleccin predeterminada de un objeto Recordset es la coleccin Fields y la propiedad predeterminada de un objeto
Field es la propiedad Value. El cdigo puede simplificarse utilizando estos valores predeterminados.
Cuando se crea un objeto Recordset, el registro activo se coloca como primer registro si existen varios registros. Si no
hay registros, el valor de la propiedad RecordCount ser 0 y los valores de la propiedad BOF y EOF sern True.
Puede utilizar los mtodos MoveNext, MovePrevious, MoveFirst y MoveLast para volver a establecer el registro
activo. Los objetos Recordset de tipo Forward-only slo admiten el mtodo MoveNext. Cuando se utilizan los mtodos
Move para moverse entre los registros (o "andar" a travs del objeto Recordset), puede utilizar las propiedades BOF y
EOF para comprobar el inicio o el fin del objeto Recordset.
Con los objetos Recordset de tipo Dynaset y Snapshot en un espacio de trabajo Microsoft Jet, tambin puede utilizar los
mtodos Find, como FindFirst, para localizar un registro especfico basado en un criterio. Si no se encuentra el registro,
la propiedad NoMatch se establece a True. Para objetos Recordset de tipo Table, puede buscar registros utilizando el
mtodo Seek.
La propiedad Type indica el tipo de objeto Recordset creado y la propiedad Updatable indica si puede cambiar los
registros del objeto.
La informacin acerca de la estructura de la tabla base, como los nombres y los tipos de datos de cada objeto Field y
cualquier objeto Index, se almacena en un objeto TableDef.
Para hacer referencia a un objeto Recordset en una coleccin por su nmero de orden o por el valor de la propiedad
Name, utilice cualquiera de los formatos de sintaxis siguientes:
Recordsets(0)
Recordsets("nombre")
Recordsets![nombre]
Mtodos
Mtodo AddNew Mtodos FindFirst, FindLast, FindNext, FindPrevious
Mtodo Cancel
Mtodo GetRows
Mtodo CancelUpdate
Mtodo Move
Mtodo Clone
Mtodos MoveFirst, MoveLast, MoveNext, MovePrevious
Mtodo Close
Mtodo NextRecordset
Mtodo CopyQueryDef Mtodo OpenRecordset
Mtodo Delete
Mtodo Requery
Mtodo Edit
Mtodo Seek
Mtodo FillCache
Mtodo Update
Propiedades
Propiedad AbsolutePosition

Propiedad LockEdits
Pgina 158 de 159

Curso Visual Basic 5.0


Propiedad BatchCollisionCount
Propiedad Name
Propiedad BatchCollisions
Propiedad NoMatch
Propiedad BatchSize
Propiedad PercentPosition
Propiedades BOF, EOF
Propiedad RecordCount
Propiedad Bookmark
Propiedad RecordStatus
Propiedad Bookmarkable
Propiedad Restartable
Propiedad CacheSize
Propiedad Sort
Propiedad CacheStart
Propiedad StillExecuting
Propiedad Connection
Propiedad Transactions
Propiedades DateCreated, LastUpdated
Propiedad Type
Propiedad EditMode
Propiedad Updatable
Propiedad Filter
Propiedad UpdateOptions
Propiedad Index
Propiedad ValidationRule
Propiedad LastModified
Propiedad ValidationText

Pgina 159 de 159