Está en la página 1de 164

Contenido

Unidad 1 ............................................................................................................ 12
Introduccin a Visual Basic ............................................................................... 12
1.1. Nociones bsicas .................................................................................... 12
1.1.1. Historia ....................................................................................................... 12
1.1.2. Concepto .................................................................................................... 14
1.1.3. Ventajas ..................................................................................................... 14
1.1.4. Requerimientos ........................................................................................... 15
1.1.5. Compilacin ................................................................................................ 15
1.1.6. Modos de operacin .................................................................................... 16
1.1.7. Reglas de Visual Basic ................................................................................. 16
1.2. Teora de Objetos ................................................................................... 18
1.2.1. Clase .......................................................................................................... 18
1.2.2. Objeto ........................................................................................................ 18
1.2.3. Propiedades ................................................................................................ 19
1.2.4. Mtodos...................................................................................................... 20
1.2.5. Evento ........................................................................................................ 20
1.2.6. Procedimientos de evento ............................................................................ 21
1.2.7. Encapsulacin ............................................................................................. 22
1.2.8. Polimorfismo ............................................................................................... 22

Unidad 2 ............................................................................................................ 23
Trabajar con Visual Basic .................................................................................. 23
2.1. Estructura de proyecto ........................................................................... 23
2.1.1. Proyecto ..................................................................................................... 23
2.1.2. Mdulos ...................................................................................................... 23
2.1.3. Procedimientos ............................................................................................ 24
2.1.4. Declaraciones .............................................................................................. 24
2.2. IDE de Visual Basic................................................................................. 25
2.2.1. Entorno de Desarrollo Integrado (IDE).......................................................... 25
2.2.2. Ventana Explorador de Proyecto ................................................................... 25
2.2.3. Ventana Diseador de Formularios ............................................................... 26
2.2.4. Ventana de cdigo....................................................................................... 26
2.2.5. Caja de herramientas................................................................................... 27
2.2.6. Ventana de propiedades .............................................................................. 27
2.2.7. Funciones bsicas del IDE ............................................................................ 28
2.3. Crear una aplicacin............................................................................... 32
2.3.1. Pasos bsicos .............................................................................................. 32
2.3.2. Colocar los objetos ...................................................................................... 32
2.3.3. Establecer las propiedades ........................................................................... 33
2.3.4. Escribir el cdigo ......................................................................................... 34

Unidad 3 ............................................................................................................ 36
Objetos de Visual Basic ..................................................................................... 36
3.1. El formulario .......................................................................................... 36
3.1.1. Formulario (Clase: Form) ............................................................................. 36
3.1.2. Propiedades de formularios .......................................................................... 37
3.1.3. Mtodos de formularios ............................................................................... 38
3.1.4. Eventos de formularios ................................................................................ 38

3.2. Los controles .......................................................................................... 39


3.2.1. Etiqueta (Clase: Label) ................................................................................ 39
3.2.2. Botn de comando (Clase: CommandButton) ................................................ 40
3.2.3. Caja de texto (Clase: TextBox) ..................................................................... 41
3.2.4. Marco (Clase: Frame) .................................................................................. 43
3.2.5. Caja de imagen (Clase: PictureBox) .............................................................. 43
3.2.6. Botn de opcin (Clase: OptionButton) ......................................................... 44
3.2.7. Caja de verificacin (Clase: CheckBox) ......................................................... 44
3.2.8. Caja de lista (Clase: ListBox) ........................................................................ 44
3.2.9. Caja combinada (Clase: ComboBox) ............................................................. 45
3.2.10. Barra de desplazamiento (Clase: HScrollBar, VScrollBar) ................................ 46
3.2.11. Temporizador (Clase: Timer)........................................................................ 46
3.2.12. Imagen (Clase: Image) ................................................................................ 46
3.2.13. Figura (Clase: Shape) .................................................................................. 47
3.2.14. Lnea (Clase: Line) ...................................................................................... 47
3.2.15. Ubicacin de los controles bsicos ................................................................ 47
3.2.16. Ejemplo de los controles bsicos .................................................................. 48

Unidad 4 ............................................................................................................ 50
Cdigo en Visual Basic ....................................................................................... 50
4.1. Espacios de memoria .............................................................................. 50
4.1.1. Identificadores ............................................................................................ 50
4.1.2. Tipos de datos ............................................................................................ 50
4.1.3. Declaracin de espacios de memoria ............................................................ 52
4.1.4. Alcance de variables y constantes................................................................. 53
4.1.5. Declaracin de variables .............................................................................. 53
4.1.6. Declaracin de constantes (simblicas) ......................................................... 54
4.1.7. Constantes intrnsecas ................................................................................. 54
4.1.8. Arreglos ...................................................................................................... 55
4.1.9. Objetos y espacios de memoria .................................................................... 56
4.2. Operadores ............................................................................................. 57
4.2.1. Aritmticos.................................................................................................. 57
4.2.2. Lgicos ....................................................................................................... 58
4.2.3. Relacionales ................................................................................................ 58
4.2.4. Operadores especiales ................................................................................. 59
4.2.5. Precedencia de los operadores ..................................................................... 59
4.3. Estructuras de control ............................................................................ 60
4.3.1. Programacin estructurada .......................................................................... 60
4.3.2. Tipos de estructuras .................................................................................... 60
4.3.3. Estructura bifurcativa If-Then-ElseIf-Else ...................................................... 60
4.3.4. Estructura bifurcativa Select-Case................................................................. 61
4.3.5. Estructura repetitiva For-Next ...................................................................... 62
4.3.6. Estructura repetitiva Do-Loop ....................................................................... 63
4.4. Procedimientos....................................................................................... 64
4.4.1. Procedimientos y subrutinas ......................................................................... 64
4.4.2. Ventajas de los procedimientos .................................................................... 65
4.4.3. Clasificacin de procedimientos .................................................................... 66
4.4.4. Alcance de procedimientos ........................................................................... 67
4.4.5. Trabajar con procedimientos ........................................................................ 67
4.4.6. Transferencia de parmetros........................................................................ 69
4.4.7. Ejemplo completo de la unidad .................................................................... 70

Unidad 5 ............................................................................................................ 71
Funciones intrnsecas ........................................................................................ 71
5.1. Funciones en general ............................................................................. 71
5.1.1. Expresiones ................................................................................................ 71
5.1.2. Funciones ................................................................................................... 71
5.1.3. Instrucciones .............................................................................................. 72
5.2. Funciones de cadena .............................................................................. 72
5.2.1. Tratamiento de cadenas .............................................................................. 72
5.2.2. Cambiar a maysculas y minsculas ............................................................. 73
5.2.3. Determinar la longitud de una cadena .......................................................... 73
5.2.4. Buscar caracteres dentro de una cadena ....................................................... 73
5.2.5. Extraer e insertar caracteres a una cadena ................................................... 74
5.2.6. Tratamiento de espacios en blanco ............................................................... 74
5.2.7. Convertir a nmero y a cadena .................................................................... 75
5.2.8. Obtener cadenas de caracteres con formato ................................................. 75
5.2.9. Mapa de caracteres ..................................................................................... 77
5.3. Funciones numricas.............................................................................. 78
5.3.1. Funciones matemticas ................................................................................ 78
5.3.2. Funciones de ajuste decimal ........................................................................ 78
5.3.3. Funcin de nmero aleatorio ........................................................................ 79
5.4. Funciones de fecha y hora...................................................................... 79
5.4.1. Obtener la fecha y hora del sistema.............................................................. 79
5.4.2. Establecer la fecha y hora del sistema .......................................................... 79
5.4.3. Realizar clculos con fechas y horas ............................................................. 79
5.4.4. Devolver fechas y horas ............................................................................... 82
5.4.5. Cronometrar procesos ................................................................................. 82
5.5. Funciones de Objetos ............................................................................. 82
5.5.1. Cuadro de dilogo de entrada InputBox ........................................................ 82
5.5.2. Cuadro de dilogo de mensajes MsgBox ....................................................... 83

Unidad 6 ............................................................................................................ 87
Archivos............................................................................................................. 87
6.1. Nociones bsicas .................................................................................... 87
6.1.1. Unidades .................................................................................................... 87
6.1.2. Archivos ...................................................................................................... 88
6.1.3. Directorios .................................................................................................. 88
6.2. Instrucciones de archivos ...................................................................... 89
6.2.1. Instrucciones para manipular directorios ....................................................... 89
6.2.2. Instrucciones para manipular archivos .......................................................... 89
6.3. Funciones de archivos ............................................................................ 91
6.3.1. Funciones para manipular directorios ............................................................ 91
6.3.2. Funciones de archivos cerrados .................................................................... 92
6.3.3. Funciones de archivos abiertos ..................................................................... 92
6.4. Objetos de archivos................................................................................ 93
6.4.1. Caja de lista de archivos (Clase: FileListBox) ................................................. 93
6.4.2. Caja de lista de directorio (Clase: DirListBox) ................................................ 93
6.4.3. Caja de lista de unidades (Clase: DriveListBox) ............................................. 93
6.4.4. Cuadro de dilogo comn (Clase: CommonDialog) ........................................ 94

6.5. Archivos secuenciales............................................................................. 97


6.5.1. Abrir archivos secuenciales .......................................................................... 97
6.5.2. Leer archivos secuenciales ........................................................................... 97
6.5.3. Escribir en archivos secuenciales .................................................................. 97
6.6. Archivos aleatorios ................................................................................. 98
6.6.1. Abrir archivos aleatorios............................................................................... 98
6.6.2. Leer registros de archivos aleatorios ............................................................. 99
6.6.3. Escribir registros en archivos directos ..........................................................100
6.6.4. Localizar una posicin de registro ................................................................100
6.6.5. Tareas comunes de archivos aleatorios ........................................................100

Unidad 7 .......................................................................................................... 103


Bases de Datos ................................................................................................ 103
7.1. Introduccin a Bases de Datos ............................................................. 103
7.1.1. Nociones bsicas ........................................................................................103
7.1.2. Arquitectura de bases de datos ...................................................................104
7.1.3. Tecnologas de bases de datos ....................................................................104
7.1.4. Proveedores OLE DB...................................................................................105
7.1.5. Lenguajes de bases de datos ......................................................................106
7.1.6. Modos de manipulacin de registros ............................................................107
7.2. Objetos de acceso a datos ADO ............................................................ 107
7.2.1. Modelo de objetos de ADO..........................................................................107
7.2.2. El objeto Connection...................................................................................108
7.2.3. El objeto Recordset ....................................................................................110
7.2.4. Procedimiento para utilizar el modelo ADO ...................................................112
7.3. Acceso a datos mediante Visual Basic y ADO ....................................... 113
7.3.1. Mtodos para utilizar ADO...........................................................................113
7.3.2. Controles enlazados a datos ........................................................................114
7.3.3. El control de datos ADO ..............................................................................114
7.3.4. Creacin de objetos ADO en cdigo .............................................................118
7.3.5. El diseador de entorno de datos ................................................................120
7.4. Lenguaje de consulta estructurado SQL ............................................... 122
7.4.1. Introduccin a SQL .....................................................................................122
7.4.2. Elementos del lenguaje SQL ........................................................................123
7.4.3. Consultas de seleccin (SELECT) .................................................................124
7.4.4. Consultas de accin (DELETE, INSERT, UPDATE) .........................................125
7.5. Reportes de bases de datos.................................................................. 126
7.5.1. Introduccin a reportes ..............................................................................126
7.5.2. Pasos para crear un reporte ........................................................................127
7.5.3. Partes del generador de reportes ................................................................131
7.5.4. Campos de un reporte ................................................................................132

Unidad 8 .......................................................................................................... 134


Tecnologa OLE ................................................................................................ 134
8.1. Teora de OLE ....................................................................................... 134
8.1.1. Estndar COM ............................................................................................134
8.1.2. Automatizacin ..........................................................................................134
8.1.3. Tecnologa OLE y ActiveX ............................................................................135
8.1.4. Componentes ActiveX .................................................................................135
8.1.5. Componentes en proceso y fuera de proceso ...............................................136

8.2. Aplicaciones habilitadas para ActiveX .................................................. 137


8.2.1. Objetos insertables .....................................................................................137
8.2.2. Control contenedor OLE ..............................................................................137
8.2.3. Control de aplicacin ActiveX.......................................................................140
8.3. Componentes de cdigo ....................................................................... 141
8.3.1. Referencias a un objeto ..............................................................................141
8.3.2. Crear referencias a objetos .........................................................................142
8.3.3. Utilizar las propiedades y mtodos de un objeto ...........................................142
8.3.4. Responder a los eventos de un objeto .........................................................143
8.3.5. Ejemplo completo usando componente de cdigo .........................................144
8.4. Controles ActiveX ................................................................................. 145
8.4.1. Cargar controles ActiveX .............................................................................145
8.4.2. Archivos de controles ActiveX ......................................................................145
8.4.3. Control ActiveX Animation ...........................................................................146
8.4.4. Control ActiveX CoolBar ..............................................................................147
8.4.5. Control ActiveX DTPicker .............................................................................148
8.4.6. Control ActiveX ImageList ...........................................................................148
8.4.7. Control ActiveX TreeView ............................................................................149
8.4.8. Control ActiveX ListView..............................................................................151
8.4.9. Control ActiveX ToolBar ..............................................................................154
8.4.10. Control ActiveX TabStrip .............................................................................155
8.4.11. Conclusiones sobre ActiveX .........................................................................156

Unidad 9 .......................................................................................................... 157


Funciones API.................................................................................................. 157
9.1. Teora de funciones API ....................................................................... 157
9.1.1. Funciones API ............................................................................................157
9.1.2. Las API de Windows ...................................................................................157
9.1.3. Declarar funciones API ................................................................................157
9.1.4. Utilizar funciones API ..................................................................................158
9.1.5. Visor de texto API ......................................................................................159
9.2. Tcnicas para usar funciones API ........................................................ 160
9.2.1. Resolver conflictos de nombre de API ..........................................................160
9.2.2. Enviar cadenas a funciones API ...................................................................160
9.2.3. Recibir cadenas de funciones API ................................................................160
9.2.4. Utilizar procedimientos generales auxiliares ..................................................161
9.2.5. Utilizar funciones API sin parmetros ...........................................................162

Consideracin final .......................................................................................... 163

ndice de figuras
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura

1.1.2.1.2.2.2.3.2.4.2.5.2.6.2.7.2.8.2.9.2.10.2.11.2.12.2.13.2.14.2.15.2.16.2.17.2.18.3.1.3.2.3.3.3.4.4.1.4.2.4.3.4.4.4.5.4.6.5.1.5.2.5.3.5.4.5.5.5.6.5.7.5.8.5.9.5.10.5.11.5.12.5.13.6.1.6.2.6.3.6.4.6.5.7.1.7.2.7.3.7.4.-

Evolucin del Basic. ............................................................................... 13


Estructura de un proyecto ...................................................................... 24
Ventana Proyecto .................................................................................. 25
Ventana Diseador de formulario ........................................................... 26
Ventana de cdigo ................................................................................. 26
Cuadro de herramientas ......................................................................... 27
Ventana de propiedades. ....................................................................... 27
Dilogo Nuevo proyecto al iniciar Visual Basic ......................................... 28
Dilogo Nuevo proyecto estndar ........................................................... 28
Dilogo Agregar formulario .................................................................... 29
Men emergente del explorador de proyecto ........................................... 29
Dilogo Agregar mdulo ........................................................................ 30
Dilogo Propiedades del proyecto ........................................................... 31
Dilogo Opciones de editor .................................................................... 31
Agregar objetos a un formulario ............................................................. 33
Modificar las propiedades de objetos ...................................................... 33
Seleccionar objeto para procedimiento de evento .................................... 34
Seleccionar evento para procedimiento de evento ................................... 35
Escribir cdigo en un procedimiento de evento ........................................ 35
Despliegue del operador punto. .............................................................. 37
Elementos bsicos de una ventana. ........................................................ 38
Caja de herramientas (Clases). ............................................................... 47
Ejemplo de los controles bsicos. ........................................................... 48
Dilogo Examinador de objetos. ............................................................. 55
Estructura If-Then-Else simple................................................................ 61
Estructura If-Then-Else completa............................................................ 61
Estructura Select Case ........................................................................... 62
Estructura For-Next. .............................................................................. 63
Estructuras Do-Loop. ............................................................................. 64
Funcin supuesta Licuar......................................................................... 71
Funcin en general ................................................................................ 72
Funcin Seno. ....................................................................................... 72
Posiciones de una cadena de caracteres ................................................. 73
Cuadro de dilogo InputBox ................................................................... 83
Cuadro de dilogo MsgBox ..................................................................... 83
Cuadro de mensaje de Informacin ........................................................ 84
Cuadro de mensaje de Crtico ................................................................. 84
Cuadro de mensaje de Exclamacin ........................................................ 84
Cuadro de mensaje de Pregunta ............................................................. 85
Cuadro de mensaje Si y No .................................................................... 85
Cuadro de mensaje Aceptar y Cancelar ................................................... 85
Cuadro de mensaje Crtico Aceptar y Cancelar ......................................... 85
Memorias de un sistema de cmputo ...................................................... 88
Archivo de documento de Word .............................................................. 88
Estructura de directorios y archivos ........................................................ 89
Objetos de archivos. .............................................................................. 94
Dilogo Componentes (Control Dilogo Comn) ...................................... 95
Tabla Productos de una base de datos. ...............................................104
Arquitectura de Bases de Datos .............................................................104
Acceso de Visual Basic a Bases de Datos ................................................105
Modelo de objetos ADO. .......................................................................107

Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura

7.5.7.6.7.7.7.8.7.9.7.10.7.11.7.12.7.13.7.14.7.15.7.16.7.17.7.18.7.19.7.20.7.21.7.22.7.23.8.1.8.2.8.3.8.4.8.5.8.6.8.7.8.8.8.9.8.10.8.11.8.12.8.13.8.14.8.15.8.16.9.1.-

Dilogo de componentes (Control de datos ADO) ...................................115


Ventana de la propiedad ConnectionString .............................................115
Asistente para crear una conexin a un origen de datos ADO ..................116
Dilogo de propiedades para establecer el origen de registros .................116
Ventana de referencias a libreras de objetos .........................................118
Dilogo Componentes (Diseadores) .....................................................120
Diseador del objeto Entorno de datos ..................................................121
Dilogo Crystal Report Gallery ...............................................................127
Dilogo de seleccin de Tablas para reportes .........................................128
Dilogo de seleccin de Campos para reportes .......................................128
Dilogo para agrupar los registros de un reporte ....................................129
Dilogo para filtrar los registros de un reporte........................................129
Dilogo para seleccionar la plantilla de diseo de un reporte ...................130
Dilogo de confirmacin para crear un reporte .......................................130
Vista de diseo de un reporte de Crystal Report .....................................131
Vista preliminar de un reporte de Crystal Report ....................................131
Tipos de campos de Crystal Report ........................................................132
Editor de ecuaciones de Crystal Report ..................................................133
Campos especiales de Crystal Report .....................................................133
Dilogo Insertar objeto .........................................................................138
Dilogo Pegado especial .......................................................................138
Dilogo Componentes (Objetos insertables) ...........................................141
Cuadro de herramientas (Objetos insertables) ........................................141
Ventana de cdigo con eventos de un objeto componente ......................143
Ejemplo del control ActiveX Animation ...................................................146
Ejemplo de control ActiveX CoolBar .......................................................147
Ejemplo del control ActiveX DTPicker .....................................................148
Propiedades del control ActiveX ImageList .............................................149
Ejemplo del control ActiveX TreeView ....................................................150
Ejemplo del control ActiveX ListView Vista Iconos grandes ......................152
Ejemplo del control ActiveX ListView Vista Iconos pequeos....................152
Ejemplo del control ActiveX ListView Vista Lista ......................................152
Ejemplo del control ActiveX ListView Vista Reporte .................................153
Ejemplo del control ActiveX ToolBar.......................................................154
Ejemplo del control ActiveX TabStrip .....................................................155
Visor de texto API ................................................................................159

ndice de tablas
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla
Tabla

1.1.3.1.3.2.3.3.3.4.3.5.3.6.3.7.3.8.3.9.4.1.4.2.4.3.4.4.4.5.5.1.5.2.5.3.5.4.5.5.5.6.5.7.5.8.5.9.5.10.5.11.6.1.6.2.6.3.6.4.7.1.7.2.7.3.7.4.7.5.7.6.7.7.7.8.7.9.7.10.7.11.7.12.7.13.8.1.8.2.8.3.8.4.8.5.9.1.-

Lista de prefijos de objetos de Visual Basic. ............................................ 17


Propiedades ms importantes del formulario. .......................................... 38
Mtodos ms importantes del formulario ................................................. 38
Eventos ms importantes del formulario. ................................................ 39
Algunas propiedades de la etiqueta. ....................................................... 39
Algunas propiedades del botn de comando............................................ 40
Algunas propiedades de la caja de texto. ................................................ 41
Propiedades ms importantes de listas. .................................................. 45
Mtodos ms importantes de las cajas de lista ........................................ 45
Propiedades ms importantes de la barra de desplazamiento. .................. 46
Tipos de datos provistos por Visual Basic. ............................................... 51
Operadores aritmticos de Visual Basic ................................................... 57
Resultados de operaciones lgicas. ......................................................... 58
Operadores relacionales de Visual Basic. ................................................. 58
Precedencia de operadores .................................................................... 59
Constantes de formato para nmeros ..................................................... 76
Smbolos especiales de formato para nmeros ........................................ 76
Constantes de formato para fechas y horas ............................................. 76
Smbolos para crear formatos de fecha y hora ......................................... 77
Juego de caracteres ASCII de 0 a 127 .................................................... 78
Funciones matemticas .......................................................................... 78
Funciones de ajuste numrico ................................................................ 78
Valores del parmetro Intervalo de funciones de fecha y hora .................. 80
Funciones que devuelven parte de una fecha .......................................... 81
Estilos de cajas de mensajes MsgBox ...................................................... 84
Valores devueltos por MsgBox ................................................................ 86
Especificaciones del parmetro Tipo de la instruccin Open ................... 90
Propiedades del objeto Dilogo Comn ................................................... 95
Valores de la propiedad Flags. ................................................................ 96
Mtodos del objeto Dilogo Comn......................................................... 96
Propiedades del objeto Connection de ADO ............................................109
Opciones de la propiedad CursorLocation. ..............................................109
Mtodos del objeto Connection de ADO .................................................109
Propiedades del objeto Recordset de ADO..............................................110
Opciones de la propiedad CursorType ....................................................110
Opciones de la propiedad LockType .......................................................111
Valores que devuelve la propiedad EditMode ..........................................111
Mtodos del objeto Recordset de ADO ...................................................112
Eventos del objeto Recordset de ADO ....................................................112
Algunos comandos de SQL ....................................................................123
Algunas clusulas de SQL......................................................................124
Operadores de comparacin SQL ...........................................................124
Funciones de agregado SQL ..................................................................124
Propiedades del control contenedor OLE ................................................139
Mtodos del control contenedor OLE ......................................................139
Archivos de controles ActiveX ................................................................146
Constantes del argumento relationship ..................................................151
Estilos del objeto Button de ToolBar ......................................................155
Archivos contenedores de funciones API ................................................157

Visual Basic 6.0

Unidad 1.- Introduccin a Visual Basic

Unidad 1
Introduccin a Visual Basic
La manera de lograr las cosas es empezndolas
. Horace Greeley

1.1. Nociones bsicas


1.1.1. Historia
Los lenguajes de programacin han surgido como consecuencia de la necesidad de
hacer que los sistemas de clculo y almacenamiento electrnicos sean tiles al
hombre. De esta manera han marchado Hardware y Software, hardware
requiriendo software y software requiriendo hardware.
El primer sistema electrnico de clculo data de 1946 y se llamaba ENIAC, un
sistema que efectuaba ciertas operaciones, ocupaba el tamao de una habitacin y
utilizaba 18.000 vlvulas de vaco. Al ao siguiente, 1947, Laboratorios Bell crea el
transistor, tres capas de silicio polarizadas; y luego Texas Instrument en 1959
logra aumentar el nivel de densidad de capas para obtener el primer circuito
integrado de seis transistores. El circuito integrado es el corazn de los sistemas
de clculo moderno y los ms recientes albergan a casi 1,5 millones de
transistores.
Los primeros lenguajes de programacin, como el lenguaje mquina y
ensamblador, requeran que el programador fuera experto y conociera fielmente el
hardware. Es as como comienzan a aparecer los lenguajes de programacin de
alto nivel, tales como COBOL, ADA, FORTRAN y BASIC. La versin original del
lenguaje Basic fue creada en 1964 por John G. Kemeny (Budapest, 1926 USA
1992) y Thomas E. Kurtz (Illinois 1928), y estaba dirigido fundamentalmente a
principiantes, es decir, para todo aquel que se iniciara como programador; de ah
su nombre BASIC o Cdigo de Instruccin Simblico para todo Propsito de
principiantes (Beginners All purpose Symbolic Instruction Code), aunque su
nombre original fue True BASIC.
Para 1978, cuando los microprocesadores comienzan a hacerse populares y surgen
los primeros PC (computadores personales), el lenguaje Basic se establece como
un estndar y se crea la normativa BASIC STANDAR. La tecnologa continu su
avance, y con ella los requerimientos de software ms veloces y eficientes. En el
ao de 1983 aparece el procesador 80286 y los conceptos de programacin
estructurada y compilacin del cdigo fuente; y Basic comienza a ser despreciado,
pues era visto para novatos, su caracterstica de lenguaje secuencial era
ineficiente, careca de herramientas de compilacin confiables, no dispona de
libreras y era imposible intercambiar informacin y acceder al interior de las
mquinas con l; mientras tanto se hacan muy populares los lenguajes C y
12

Visual Basic 6.0

Unidad 1.- Introduccin a Visual Basic

PASCAL. Basic deba evolucionar y la IBM crea una versin modificada de Basic
llamaba BASICA, la cual fracas. Paralelamente, la empresa Microsoft saca al
mercado la versin estructurada de Basic denominada GWBASIC para DOS.
Posteriormente otra empresa, Borland, crea su propia versin de Basic
estructurado, pero agrega mejoras de velocidad optimizando la compilacin en su
producto TURBO BASIC. Microsoft compite con Borland optimizando tambin la
compilacin y corrigiendo casi todos los defectos de las versiones anteriores, para
finalmente obtener Quick-BASIC. Las ltimas versiones del sistema operativo MSDOS incluan una versin algo recortada de Quick-BASIC llamada QBASIC.
En 1985 aparece Windows, la Interfaz de Usuario Grfica (GUI) de Microsoft para
su sistema operativo MS-DOS; y comienzan a aparecer conceptos tales como
multitarea, multiprocesamiento y objetos de programacin. El programa Windows
permita administrar casi la totalidad de servicios de usuario del sistema con
procesadores de texto, hojas de clculo, programas de dibujo y diseo, antivirus y
hasta una calculadora. Era necesario crear aplicaciones que se ejecutaran
utilizando esta GUI. Es as como los diseadores de Microsoft combinan,
convenientemente, la interfaz grfica con su lenguaje de programacin por
excelencia, QBASIC; obtenindose una de las primeras versiones visuales de
lenguajes de programacin, la cual recibi el nombre Visual Basic.
Desde que apareci Visual Basic, ya Basic no es slo para novatos, sino que
representa una alternativa para programadores de todos los niveles, quienes
estimulados por su gran versatilidad y potencia, comienzan a utilizarlo. Para los
aos de 1993 y 1994, Visual Basic comienza a hacerse muy popular con su versin
3.0 de 16 bits. La versin 4.0 estuvo lista para 1995, casi paralelo con la aparicin
del primer sistema operativo de Microsoft con ambiente grfico: Windows 95. Este
era el momento de transicin de los buses de datos de los microprocesadores de
16 a 32 bits; hecho determinante para que Visual Basic 4.0 estuviera disponible
para ambos buses de datos, por lo que la instalacin era opcional para 16 32
bits. No tard mucho en evolucionar un poco ms con su versin 5.0
exclusivamente para 32 bits. A mediados de 1998, Visual Basic adopta su versin
6.0, la cual viene como parte de un paquete de lenguajes de programacin visual
para desarrollar aplicaciones Windows llamado Visual Studio 6.0, el cual incluye:
Visual C++ 6.0, Visual FoxPro 6.0, Visual J++ 6.0, Visual InterDev 6.0 y Visual
Basic 6.0. A partir del ao 2000 surge la plataforma de Microsoft para servicios
Web (o cualquier servicio basado en red) conocida como framework.NET, la cual
incluye las herramientas para el desarrollo de aplicaciones Visual Studio .NET,
entre ellas se encuentra Visual Basic .NET.
True BASIC

Visual Basic .NET

BASIC STANDAR

Visual Basic 6.0

GWBASIC

Visual Basic 5.0

Quick BASIC

Visual Basic 4.0

QBasic

Visual Basic 3.0


Figura 1.1.- Evolucin del Basic.

13

Visual Basic 6.0

Unidad 1.- Introduccin a Visual Basic

1.1.2. Concepto de Visual Basic


Visual Basic es un sistema de desarrollo o lenguaje de programacin visual
destinado a crear aplicaciones para el entorno Windows de una manera rpida y
sencilla combinando herramientas de diseo grfico y un lenguaje de
programacin de alto nivel. El trmino Visual involucra las herramientas grficas
(GUI) y Basic es el lenguaje de programacin, lo que le confiere a Visual Basic la
caracterstica de potencia grfica y sencillez. El cdigo intrnseco de los objetos
bsicos (ventanas y controles) est prediseado, por lo que no se considera a
Visual Basic como un lenguaje de Programacin Orientado a Objeto (OOP), ya que
carece de los mecanismos de herencia y polimorfismo; ms bien se considera
basado en objetos, aunque en cierta forma, de las caractersticas de la OOP, Visual
Basic conserva algo de Polimorfismo y Encapsulacin que veremos mas adelante
en el captulo Teora de Objetos.
1.1.3. Ventajas
a) Objetos prediseados
Visual Basic permite utilizar objetos planos y 3D (ventanas, botones, cajas de
texto, etc.) sin necesidad de crearlos, ya que provee una interfaz grfica muy
completa y amigable.
b) MDI (Multiple Document Interface)
Esta opcin, en contraste con SDI (Single Document Interface), permite crear
una ventana con mltiples ventanas hijas o documentos dependientes. Aplica
tanto para el entorno de desarrollo como para las aplicaciones. Para el entorno
de desarrollo se habilita o deshabilita en el men Herramientas | Opciones,
pestaa Avanzado.
c) DDE (Dynamic Data Exchange)
Es un protocolo establecido para intercambiar datos a travs de vnculos
activos entre aplicaciones que se ejecutan bajo Microsoft Windows. Por
ejemplo, es posible, desde Visual Basic, leer las celdas de una hoja de calculo
de Excel.
d) DLL (Dynamic Link Libraries)
Las bibliotecas de vnculos dinmicos son archivos con extensin DLL que
contienen rutinas desarrolladas en otros lenguajes como C y FORTRAN, y que
pueden ser accedidas o llamadas desde Visual Basic. El entorno Windows
utiliza estas rutinas para mostrar ventanas y grficos, administrar la memoria,
controlar puertos, etc. Mltiples aplicaciones pueden acceder a una misma DLL
simultneamente. La ventaja radica en que se pueden usar las funciones
predefinidas de Windows en tiempo de ejecucin de la aplicacin, en lugar de
vincular estticamente en tiempo de diseo o de compilacin.
e) OLE (Object Linking Embedding)
Se define como una tecnologa que permite a las aplicaciones compartir
objetos de una forma coherente con otras aplicaciones, herramientas de
programacin y lenguajes de macros. OLE forma parte de toda una filosofa de
interoperabilidad entre objetos conocida como ActiveX. Resulta ventajoso usar
una aplicacin tratada como objeto de la aplicacin desarrollada en Visual
Basic, ya que la aplicacin objeto conserva sus propiedades y mtodos, y no
es necesario escribir cdigo adicional. Por ejemplo, se puede agregar un
14

Visual Basic 6.0

Unidad 1.- Introduccin a Visual Basic

documento de Excel, como objeto, a una aplicacin Visual Basic, para efectuar
las operaciones normales de una hoja de clculo, pudiendo modificar datos de
las celdas del documento original si est vinculado, o slo visualizar y
manipular celdas si est incrustado.
f)

ADO (ActiveX Data Object)


Visual Basic provee tres modelos de objetos para acceso a datos: Objetos de
Datos ActiveX (ADO), Objetos de Datos Remotos (RDO) y Objetos de Acceso a
Datos (DAO). La tecnologa ms reciente es ADO, con un modelo de objetos
ms sencillo (y an ms flexible) que RDO o DAO. Un modelo de objetos de
acceso a datos es una coleccin de objetos que permite la manipulacin y
definicin de bases de datos diversas sin tener que conocer las directivas
intrnsecas de cada base de datos. Con esta ventaja se puede controlar en
forma grfica o codificada la conexin, los generadores de instrucciones y los
datos devueltos de bases de datos, que se usarn en cualquier aplicacin de
Visual Basic.

g) Otras ventajas
Compilador de archivos de ayuda para aadir ayuda personalizada a las
aplicaciones, biblioteca de iconos e imgenes, asistente de empaquetado y
distribucin para crear los discos de la aplicacin terminada, ayuda completa
en lnea, y un editor de cdigo con mens emergentes e interpretador del
cdigo.
1.1.4. Requerimientos
Los requerimientos de instalacin que aqu se tratan se refieren a la versin de
Visual Basic 6.0. Para versiones anteriores refirase a los manuales
correspondientes.
a) Requerimientos de software:
Sistema operativo de red: Microsoft Windows NT 3.51 o posterior.
Sistema operativo cliente: Microsoft Windows 95 o posterior.
b) Requerimientos de hardware:
Microprocesador: Pentium 90MHz o superior.
Vdeo: Pantalla VGA de 640x480 o de resolucin superior.
Memoria RAM: 24 MB para Windows 95, 32 MB para Windows NT.
Espacio en disco duro Edicin Estndar: de 48MB a 80 MB.
Espacio en disco duro Edicin Empresarial: de 128MB a 147 MB.
Espacio en disco duro para MSDN (Documentacin multimedia): 67MB.
CD-ROM (no se supone soporte para MS-DOS).
1.1.5. Compilacin
La compilacin es el proceso mediante el cual cualquier lenguaje de programacin
convierte su seudo lenguaje al cdigo mquina o cdigo binario para su
procesamiento y ejecucin segn el sistema operativo instalado. Se dice que el
cdigo mquina (unos y ceros) es el lenguaje de mas bajo nivel, ya que posee las
directivas que interactan directamente e internamente con el microprocesador.

15

Visual Basic 6.0

Unidad 1.- Introduccin a Visual Basic

1.1.6. Modos de operacin


La aplicacin Visual Basic puede trabajar en dos modos distintos: Modo de Diseo
y Modo de Ejecucin. A menudo se dice que cuando se trabaja en modo de diseo
o ejecucin se esta en Tiempo de Diseo o en Tiempo de Ejecucin. En modo de
diseo el usuario construye interactivamente la aplicacin colocando controles en
el formulario, definiendo sus propiedades, y desarrollando funciones para
gestionar los eventos. En modo de ejecucin el programador prueba la aplicacin.
En este caso la aplicacin se compila, se carga en memoria RAM para producir las
directivas necesarias al microprocesador, as el usuario acta sobre el programa y
prueba como responde este.
1.1.7. Reglas de Visual Basic
Las reglas o convenciones de Visual Basic para codificacin y configuracin son
pautas que no estn enfocadas a la lgica del programa, sino a su estructura y
apariencia fsica. Por qu existen las convenciones de codificacin? La razn
principal de usar un conjunto coherente de convenciones de codificacin es
estandarizar la estructura y el estilo de codificacin de una aplicacin de forma
que el autor y otras personas puedan leer y entender el cdigo fcilmente. Las
convenciones de codificacin correctas dan como resultado un cdigo fuente
preciso, legible y sin ambigedad, que es coherente con otras convenciones del
lenguaje y lo ms intuitivo posible.
Un conjunto de convenciones de codificacin de propsito general debe definir los
requisitos mnimos necesarios para conseguir los objetivos explicados
anteriormente, dejando libertad al programador para crear la lgica y el flujo
funcional del programa. El objetivo es hacer que el programa sea fcil de leer y de
entender sin obstruir la creatividad natural del programador con imposiciones
excesivas y restricciones arbitrarias. Por tanto, las convenciones sugeridas sern
breves y sugerentes; no muestran todos los objetos y controles posibles, ni
especifican todos los tipos de comentarios informativos que podran ser tiles. Las
convenciones de codificacin pueden incluir los siguientes puntos.
a) Convenciones de nombres para objetos, variables y procedimientos
El cuerpo de un nombre de variable, constante, procedimiento, funcin u
objeto se debe escribir en maysculas y/o minsculas segn el caso, y debe
tener la longitud necesaria para describir su funcionalidad. Hay que utilizar
nombres mnemnicos; es decir, el nombre debe reflejar correctamente la
funcin del elemento que identifica. Adems, los nombres de funciones deben
empezar con un verbo, como IniciarNombreMatriz o CerrarDilogo. Para
nombres que se usen con frecuencia o para trminos largos, se recomienda
usar abreviaturas estndar para que los nombres tengan una longitud
razonable. Cuando se usen abreviaturas, hay que asegurarse de que sean
coherentes en toda la aplicacin.
Por otra parte, debe cuidar que todas las variables sean declaradas
explcitamente. Mediante la instruccin Option Explicit detectar las variables
no declaradas durante la compilacin. Los archivos generados por Visual Basic
se deben guardar con el mismo nombre usado para identificarlo a nivel de
objeto. Esta prctica resulta muy til a la hora de transportar el cdigo fuente
de una mquina a otra, pues el programador conoce exactamente los archivos
a copiar.
16

Visual Basic 6.0

Unidad 1.- Introduccin a Visual Basic

b) Comentarios para documentar el cdigo


Todos los procedimientos, funciones y variables deben poseer un comentario
breve que describa las caractersticas funcionales de los mismos (qu hace).
Esta descripcin no debe describir los detalles de implementacin (cmo lo
hace), porque cambian con el tiempo y pueden resultar en comentarios
errneos. Los argumentos que se pasan a un procedimiento se deben describir
cuando sus funciones no sean obvias o cuando se espera que los argumentos
estn en un intervalo especfico. Tambin hay que describir, al principio de
cada procedimiento, los valores devueltos de funciones y las variables globales
que se modifican en el procedimiento. No debe exagerar en los comentarios.
Los comentarios de lneas se inician con el smbolo apstrofe (). El texto que
coloque a la derecha de apstrofe no ser considerado por Visual Basic al
momento de la compilacin.
c) Formatos estandarizados para etiquetar
Los nombres de los objetos deben llevar un prefijo de tres letras en
minsculas coherente que facilite la identificacin del tipo de objeto
rpidamente (ver Tabla 1.1).
Tipo de control
Barra de desplazamiento horizontal
Barra de desplazamiento vertical
Barra de estado
Barra de herramientas
Barra de progreso
Botn animado
Botn de opcin
Botones de comando
Casilla de verificacin
Comunicaciones
Contenedor OLE
Cronmetro o temporizador
Cuadrcula o grid
Cuadrcula de datos
Cuadro combinado de datos
Cuadro combinado
Cuadro de imagen
Cuadro de lista
Cuadro de lista de archivos
Cuadro de lista de directorios
Cuadro de lista de unidades
Cuadro de texto
Datos
Control de Datos ADO
Dilogo comn
Etiqueta
Fichas
Forma o figura
Formulario
Imagen
Informacin del sistema
Lnea
Marco
Men

Prefijo
hsb
vsb
sta
tlb
prg
ani
opt
cmd
chk
com
ole
tmr
grd
dgd
dbc
cbo
pic
lst
fil
dir
drv
txt
dat
ado
dlg
lbl
tab
shp
frm
img
sys
lin
fra
mnu

Ejemplo
hsbVolumen
vsbIndice
staFechaHora
tlbAcciones
prgCargarArchivo
aniBuzon
optGenero
cmdSalir
chkSoloLectura
comFax
oleHojaCalculo
tmrAlarma
grdPrecios
dgdTitulos
dbcAutor
cboIngles
picVGA
lstCodigos
filOrigen
dirSource
drvDestino
txtApellido
datBiblio
adoBiblio
dlgAbrirArchivo
lblMensajeAyuda
tabOpciones
shpCirculo
frmEntrada
imgIcono
sysMonitor
linVertical
fraIdioma
mnuAbrirArchivo

Tabla 1.1.- Lista de prefijos de objetos de Visual Basic.

17

Visual Basic 6.0

Unidad 1.- Introduccin a Visual Basic

d) Instrucciones de espaciado, formato y sangra.


Normalmente hay una instruccin por lnea; sin embargo, se pueden colocar
dos o ms instrucciones en una misma lnea utilizando dos puntos (:) para
separarlas. Para hacer el cdigo ms legible, es mejor colocar cada instruccin
en una lnea. Por otra parte se puede dividir una instruccin larga en varias
lneas de cdigo utilizando un espacio en blanco seguido de un guin bajo _.
Esta tcnica puede hacer que sea ms fcil leer el cdigo, tanto en la pantalla
como impreso en papel. No se puede poner un comentario despus de partir
una instruccin.
La mayora de los nmeros utilizados son decimales (base 10). En ocasiones
es conveniente o necesario usar nmeros hexadecimales (base 16) u octales
(base 8). Con el prefijo &H delante de un nmero se especifica que el nmero
es hexadecimal. Para especificar que un nmero es octal, este se debe
preceder con &O. Por ejemplo: &H10 y &O20 equivalen a 16 en decimal.
Los bloques anidados, deben llevar una sangra de cuatro espacios o un
espacio de tabulador cada vez que se efecte anidamiento. El comentario del
esquema funcional de un procedimiento debe llevar una sangra de un
espacio.
1.2. Teora de Objetos
1.2.1. Clase
La Clase es un patrn (horma, molde, plantilla) que define las caractersticas de un
objeto y describe qu apariencia y comportamiento debe tener el objeto. La clase
define las propiedades del objeto y los mtodos utilizados para controlar el
comportamiento del objeto. Podramos decir que existe la clase mamferos, la clase
estudiantes o la clase profesor. Como ejemplos de Visual Basic se tiene la clase
Form, la clase CommandButton, la clase PictureBox o la clase TextBox.
1.2.2. Objeto
Cuando crea una aplicacin en Visual Basic trabaja con objetos. Puede usar los
objetos que proporciona Visual Basic como controles, formularios y objetos de
acceso a datos. Tambin puede controlar objetos de otras aplicaciones desde su
aplicacin de Visual Basic. Puede incluso crear sus propios objetos y definir
propiedades y mtodos adicionales para ellos.
El objeto se define como la instancia de una clase que combina datos
(propiedades) y procedimientos (mtodos) que pueden ser tratados como una
unidad, por ejemplo un control, formulario, o aplicacin. Cada objeto est definido
por una clase. Para comprender la relacin entre un objeto y su clase, piense en el
molde de las galletas y las galletas. El molde es la clase que define las
caractersticas de cada galleta, como por ejemplo el tamao y la forma. Se utiliza
la clase para crear objetos. Los objetos son las galletas. En el caso de Visual Basic
los controles del cuadro de herramientas representan clases. El objeto conocido
como control no existe hasta que se coloca en un formulario. Cuando crea un
control, est creando una copia o instancia de la clase del control. Se crean todos
los objetos como copias idnticas de sus clases. Una vez que existen como objetos
individuales, es posible modificar sus propiedades. Por ejemplo, si coloca dos
botones de comando en un formulario, cada objeto botn de comando es una
instancia de la clase CommandButton. Cada objeto comparte un conjunto de
18

Visual Basic 6.0

Unidad 1.- Introduccin a Visual Basic

caractersticas y capacidades comunes (propiedades, mtodos y eventos),


definidos por su clase. Sin embargo, cada uno tiene su propio nombre, se puede
activar y desactivar por separado, se puede colocar en una ubicacin distinta del
formulario, etc. Son objetos distintos con distinto valor para la propiedad Name.
Por ejemplo los botones de comando Command1, Command2, Command3 y
Command4 comparten (provienen de) la misma clase, CommandButton.
1.2.3.

Propiedades

En Visual Basic, los datos de un objeto (caractersticas, datos o atributos) se


llaman propiedades. Puede cambiar las caractersticas de un objeto si modifica sus
propiedades. Piense en la clase Automvil, y en el objeto MiCarro como
instancia de la clase Automvil. Una propiedad de MiCarro es su Velocidad. En
Visual Basic, se dira que MiCarro tiene la propiedad Velocidad, la cual se puede
graduar modificando su valor. Suponga que el rango de velocidad de MiCarro es
de 0 a 140 Km/h, y desea establecerlo a 20. En Visual Basic se escribira mediante
la siguiente sintaxis:
MiCarro.Velocidad = 20
En el ejemplo anterior se estableci el valor de una propiedad. Las propiedades
tambin pueden devolver sus valores de la siguiente manera:
Tacmetro = MiCarro.Velocidad
En los ejemplos anteriores y en adelante el signo igual = se lee como se le
asigna. Este signo se usa en BASIC para asignar el valor de la parte izquierda a la
parte derecha del signo. De esta manera, el primer ejemplo se lee Propiedad
Velocidad de MiCarro se le asigna 20.
Se pueden establecer casi todas las propiedades en tiempo de diseo usando una
ventana del IDE de Visual Basic conocida como Propiedades sin tener que escribir
cdigo alguno. Otras propiedades no estn disponibles en tiempo de diseo, ya
que no aparecen en la ventana de propiedades, por lo que se necesitar escribir
cdigo para establecer u obtener esas propiedades en tiempo de ejecucin.
Por otra parte, es posible que durante la ejecucin del programa ciertas
propiedades no puedan ser modificadas, mientras que otras s. En este sentido se
tienen los siguientes tipos de propiedades:
a) Propiedades de lectura y escritura
Las propiedades cuyo valor se puede establecer y obtener en tiempo de
ejecucin se llaman propiedades de lectura y escritura.
b) Propiedades de slo lectura
Las propiedades que slo se pueden leer (obtener su valor), pero que no se
pueden cambiar (establecer) en tiempo de ejecucin se conocen como
propiedades de slo lectura. Estas propiedades slo se pueden cambiar en
tiempo de diseo.
Por ejemplo, la propiedad Velocidad de MiCarro es de lectura y escritura, ya que
puede ser leda y establecida en tiempo de ejecucin (auto andando); pero la
propiedad NivelDeGasolina de MiCarro es de slo lectura, ya que no se puede
cambiar en tiempo de ejecucin (auto andando), y se debe detener la aplicacin
19

Visual Basic 6.0

Unidad 1.- Introduccin a Visual Basic

para que en tiempo de diseo (auto detenido) se reabastezca el nivel de


combustible.
En general, para cambiar (establecer) el valor de la propiedad de un objeto en
tiempo de ejecucin, se utiliza la sintaxis siguiente:
NombreDeObjeto.Propiedad = Valor
Tambin para leer (obtener) el valor de la propiedad de un objeto en tiempo de
ejecucin se utiliza la sintaxis siguiente:
Variable = NombreDeObjeto.Propiedad
Sugerencia: Si va a usar el valor de una propiedad ms de una vez, el cdigo se ejecutar
ms rpidamente si almacena el valor en una variable.

1.2.4.

Mtodos

Corresponden a los diversos procedimientos que pueden operar sobre el objeto.


Los mtodos son parte de los objetos del mismo modo que las propiedades.
Generalmente, los mtodos son acciones que desea o est posibilitado a realizar el
objeto, mientras que las propiedades son los atributos que puede establecer o
recuperar. Se podra decir que MiCarro tiene un mtodo "Acelerar" y podra usar la
siguiente sintaxis para cambiar la velocidad:
MiCarro.Acelerar 20
Los mtodos pueden afectar a los valores de las propiedades e inclusive activar
procedimientos de evento que veremos mas adelante. En el ejemplo de MiCarro, el
mtodo Acelerar cambia la propiedad Velocidad. Cuando utiliza un mtodo en el
cdigo, la sintaxis depende de los argumentos que necesite el mtodo y de si el
mtodo devuelve o no un valor. En general se utiliza la sintaxis siguiente:
NombreDeObjeto.Mtodo [Arg1, Arg2,...]
De ahora en adelante, en las sintaxis generales, los elementos que aparezcan
entre corchetes [ ] son opcionales de la sintaxis. En este caso Arg1, Arg2, son
opcionales, de tal manera que si el mtodo no requiere argumentos, la sintaxis
sera:
NombreDeObjeto.Mtodo
Si el mtodo devuelve un valor til, debe asignar el valor a una variable y utilizar
parntesis con o sin argumentos como se muestra a continuacin:
Variable = NombreDeObjeto.Mtodo([Arg1, Arg2,...])
1.2.5.

Evento

Un evento es una accin reconocida por un objeto, como cuando el usuario hace
clic con el Mouse o presiona una tecla. Los eventos no slo son producidos por el
usuario, tambin pueden ser ocasionados por el sistema, por aplicaciones
externas, e inclusive por la misma aplicacin. Por ejemplo, MiCarro podra tener los
eventos "CambioDeVelocidad, Estacionarse, Encendido, GiroIzquierdo, etc. La
sintaxis para alguno de estos eventos de MiCarro sera:
MiCarro_CambioDeVelocidad
20

Visual Basic 6.0

Unidad 1.- Introduccin a Visual Basic

MiCarro_Encendido
MiCarro_Estacionarse
En Visual Basic la sintaxis general para el evento de un objeto es:
NombreDeObjeto_NombreDeEvento
1.2.6.

Procedimientos de evento

Un procedimiento de evento es una seccin de cdigo que se ejecuta cuando se


produce el evento sobre un objeto determinado. Las aplicaciones controladas por
eventos ejecutan cdigo Basic como respuesta a un evento. Cada objeto de Visual
Basic tiene un conjunto de eventos predefinidos. Si se produce uno de esos
eventos, y su procedimiento de evento tiene cdigo asociado, Visual Basic ejecuta
ese cdigo. A cada evento le corresponde una seccin de cdigo que es lo que se
conoce como un procedimiento de evento. Cuando se desea que un control
responda a un evento, se escribe cdigo en el procedimiento de ese evento. El
objeto MiCarro tiene un cdigo en el procedimiento de evento CambioDeVelocidad,
el cual define los pasos para mostrar la velocidad actual en el tacmetro, por
ejemplo; y su estructura sera:
Private Sub MiCarro_CambioDeVelocidad()
{rea de cdigo para mostrar velocidad}
End Sub
De modo que un procedimiento de evento en Visual Basic, es de la forma:
Private Sub NombreDeObjeto_NombreDeEvento()
{rea de cdigo}
End Sub
Distintos tipos de eventos pueden ser reconocidos por un mismo objeto; por
ejemplo, el objeto Form es susceptible al evento Click, y tambin al evento
DblClick. El cdigo de respuesta a los eventos, en cada caso, ser como sigue:
Private Sub Form_Click()
{rea de cdigo para un clic sobre el Form}
End Sub
Private Sub Form_DblClick()
{rea de cdigo para un doble clic sobre el Form}
End Sub
Por otra parte, distintos tipos de objetos pueden ser susceptibles a un mismo
evento. Por ejemplo, la mayora de los objetos reconocen el evento Click. Si el
usuario hace clic sobre el cuerpo del formulario, o sobre el rea de un botn de
comando, se ejecutan cdigos diferentes:
Private Sub Form_Click()
{rea de cdigo para un clic sobre el formulario}
End Sub
Private Sub cmdBotn_Click()
{rea de cdigo para un clic sobre el botn}
End Sub
21

Visual Basic 6.0

Unidad 1.- Introduccin a Visual Basic

1.2.7. Encapsulacin
Esta caracterstica de la OOP es la facultad de unificar el cdigo y los datos que la
clase u objeto contiene, as como ocultar el cdigo que maneja dicha informacin.
La encapsulacin nos ayuda a olvidarnos de cual es la implementacin realizada en
los procedimientos y datos (mtodos y propiedades) de una clase, para que slo
nos preocupemos de cmo usarlos. La encapsulacin es la caracterstica que
permite ocultar cmo estn codificados los mtodos y propiedades de las clases. El
mero hecho de crear un mtodo o una propiedad en una clase ya implica que
estamos usando la caracterstica de la encapsulacin en Visual Basic.
1.2.8. Polimorfismo
Muchas clases pueden proporcionar la misma propiedad o el mismo mtodo y el
que llama no tiene por qu saber la clase a la que pertenece el objeto antes de
llamar a la propiedad o al mtodo. Por ejemplo, una clase Automvil y una clase
Avin podran tener la misma propiedad Velocidad o el mismo mtodo Acelerar. El
polimorfismo significa que puede establecer la Velocidad o invocar Acelerar sin
saber si el objeto es MiCarro o MiAvin. Todos los mtodos implementados en las
clases deben tener una forma nica de comportarse, y las propiedades de las
clases deben ser consistentes con la informacin que corresponde tratar. El
polimorfismo sera el contrato firmado para que esos procedimientos y datos se
utilicen de forma adecuada. Se dice que una clase es polimrfica cuando podemos
usar sus mtodos y propiedades sin importarnos qu objeto los implementa. El
Polimorfismo en Visual Basic se puede usar de dos formas diferentes, segn se
compruebe si el miembro de una clase (propiedad o mtodo) pertenece al objeto
que lo utiliza, en tiempo de diseo o en tiempo de ejecucin.

22

Visual Basic 6.0

Unidad 2.- Trabajar con Visual Basic

Unidad 2
Trabajar con Visual Basic
Cualquier obra grande al principio es imposible
. - Carlyle

2.1. Estructura de proyecto


2.1.1. Proyecto
El proyecto se define como el grupo archivos asociados necesarios para desarrollar
una aplicacin o componente software. En el caso de Visual Basic, el proyecto es
un archivo de texto con extensin .vbp (Visual Basic Project) que contiene
informacin sobre los archivos que componen la aplicacin. Especficamente,
podramos decir que el proyecto es la aplicacin en s, pero en tiempo de diseo
en el argot de Visual Basic. Los proyectos estn conformados por Mdulos, dentro
de cada uno de los cuales se encuentran Declaraciones y Procedimientos.
2.1.2. Mdulos
El cdigo en Visual Basic se almacena en mdulos. Hay tres tipos de mdulos: de
formulario, estndar y de clase. Los mdulos estndar y de clase carecen de
representacin grfica, mientras que los mdulos de formulario poseen la
representacin grfica correspondiente a la interfaz de usuario. Un proyecto puede
contener varios mdulos de distintos tipos y cada uno se guarda en archivos por
separado; lo que permite crear cdigo reutilizable por otros proyectos. Cada
mdulo estndar, de clase y de formulario posee una seccin de Declaraciones y
un conjunto de Procedimientos que veremos ms adelante.
a) Mdulos de formulario
Los formularios son las ventanas mediante las cuales los usuarios interactan
con la aplicacin. Cada formulario del proyecto tiene asociado un archivo con
extensin .frm, el cual contiene las definiciones de objeto y su cdigo.
b) Mdulos estndar
Los mdulos estndar son archivos de texto que almacenan cdigo fuente
dividido en procedimientos, a los que pueden tener acceso otros mdulos de la
aplicacin. Su implementacin es obligatoria en el caso de incluir variables
globales al proyecto. La extensin de estos archivos es .bas.
c) Mdulos de clase
Los mdulos de clase (archivo de extensin .cls) son la base para la creacin
de objetos en Visual Basic. Puede escribir cdigo en mdulos de clase para
ensamblar nuevos objetos. Estos objetos nuevos pueden incluir propiedades y
mtodos personalizados.
23

Visual Basic 6.0

Unidad 2.- Trabajar con Visual Basic

2.1.3. Procedimientos
Cada mdulo se divide en procedimientos. Los procedimientos son estructuras que
delimitan un conjunto de instrucciones. Los procedimientos pueden tener alcance
pblico o privado. Los procedimientos privados slo se pueden acceder desde el
mdulo en el cual estn creados, mientras que los procedimientos pblicos se
pueden acceder desde cualquier mdulo del proyecto. Tambin los procedimientos
existen en tres tipos: Sub, Function, y Property que se estudiarn en detalle en la
unidad 4; por lo pronto slo es necesario conocer su estructura, la cual segn el
alcance y el tipo se pueden ver de la siguiente manera:
Private Sub NombreDeProcedimientoSub()
{Cdigo de instrucciones}
End Sub
Private Function NombreDeProcedimientoFunction()
{Cdigo de instrucciones}
End Function
Los procedimientos se inician con la sentencia Sub y termina con End Sub. De esta
misma manera las funciones comienzan con la sentencia Function y terminan con
End Function. En general, todas las estructuras de Visual Basic se inician con
NombreDeEstructuta y terminan con End NombreDeEstructura. No est permitido
escribir cdigo que no sea dentro de la estructura de procedimientos.
2.1.4. Declaraciones
Independientemente del tipo de mdulo, todos poseen un rea especial fuera de
la estructura de los procedimientos al inicio del mdulo conocida como Seccin de
Declaraciones. En esta seccin del mdulo no se pueden escribir instrucciones,
slo declaraciones. Las declaraciones consisten en especificar localidades de
memoria o funciones externas (API) mediante un nombre o identificador. En la
figura 2.1 se puede apreciar una aproximacin grfica de la estructura completa
de un proyecto, con dos mdulos de formulario, un formulario estndar y la
estructura interna de cada mdulo en declaraciones y procedimientos.
Proyecto.vbp
Formulario1.frm

Formulario2.frm

Mdulo.bas

Declaraciones

Declaraciones

Declaraciones

Private Sub

Public Sub

Private Sub

End Sub
Private Function

End Sub
Private Sub

End Sub
Public Function

End Function
Private Sub

End Sub
Private Sub

End Function
Public Sub

End Sub

End Sub

End Sub

Figura 2.1.- Estructura de un proyecto

24

Visual Basic 6.0

Unidad 2.- Trabajar con Visual Basic

2.2. IDE de Visual Basic


2.2.1. Entorno de Desarrollo Integrado (IDE)
El rea de trabajo que interacta con el usuario en cualquier programa se conoce
como Entorno de Desarrollo Integrado o IDE (Integrated Development
Environment). El entorno de trabajo de Visual Basic integra funciones de diseo,
edicin, compilacin y depuracin de proyectos mediante el uso de una interfaz
grfica compuesta por ventanas, cuadros de dilogo y herramientas. Todas las
ventanas de Visual Basic se pueden acceder desde el men Ver. Muchas de las
ventanas del IDE se pueden acoplar o conectar a otra o al borde de la pantalla,
esto con el objeto de organizar el entorno y mejorar la visualizacin de las
herramientas. Para activar o desactivar el acople de una ventana se debe mostrar
el men emergente de la ventana (clic derecho sobre la ventana). El entorno
permite MDI (Interfaz de Mltiples Documentos) para manipular varios proyectos
al mismo tiempo. Las funciones integradas son:
a) DISEO
b) EDICIN
c) COMPILACIN
d) DEPURACIN
2.2.2. Ventana Explorador de Proyecto
La ventana explorador de proyecto muestra todos los mdulos que conforman al
proyecto permitiendo al programador navegar entre los distintos mdulos. En la
figura 2.2 se muestran los rasgos ms significativos de esta ventana.
a) Botn Ver cdigo: muestra la ventana de cdigo del mdulo seleccionado.
b) Botn Ver objeto: muestra el diseador de formulario del formulario
seleccionado.
c) Botn Alternar carpetas: cambia la vista de rbol, agrupando por tipo de
mdulo.
d) Nombre del proyecto y del archivo de proyecto (.vbp) entre parntesis.
e) Nombre de un mdulo de formulario y su archivo asociado (.frm) entre
parntesis.
f)

Nombre de un mdulo estndar y su archivo asociado (.bas) entre parntesis.


a

d
e

Figura 2.2.- Ventana Proyecto

25

Visual Basic 6.0

Unidad 2.- Trabajar con Visual Basic

Para gestionar cada mdulo o proyecto individualmente (agregar, quitar, guardar),


se hace clic derecho sobre el mdulo deseado para desplegar su men emergente.
Este men emergente tambin permite elegir el objeto inicial cuando se manipulan
varios proyectos en una misma sesin.
2.2.3. Ventana Diseador de Formularios
Esta ventana permite construir la aplicacin en forma grfica mediante el
formulario y el dibujo de los objetos dentro del formulario. Los objetos se pueden
inmovilizar mediante la opcin Bloquear controles del men Formato. El grid o
rejilla se puede ocultar y volver a mostrar en el men Herramientas | Opciones,
pestaa General. A continuacin, la figura 2.3 es un ejemplo del Diseador de
Formularios

Figura 2.3.- Ventana Diseador de formulario

2.2.4. Ventana de cdigo


La ventana de cdigo es un editor de texto que permite crear, visualizar y
modificar todo el cdigo de Visual Basic. Existe una ventana de cdigo por cada
mdulo, ya sea de formulario, estndar o de clase. Vea en la figura 2.4 las partes
de la ventana editora de cdigo para un mdulo de formulario llamado frmForm1.
a) Lista de Objetos del formulario frmForm1, incluyendo al mismo formulario.
b) Lista de eventos provistos por el objeto seleccionado en la Lista de Objetos.
c) Seccin de declaraciones
d) rea de procedimientos

a
c

Figura 2.4.- Ventana de cdigo

26

Visual Basic 6.0

Unidad 2.- Trabajar con Visual Basic

2.2.5. Caja de herramientas


Esta ventana contiene las clases de los objetos o controles. Con doble clic se
selecciona y se inserta un control en el Centro del formulario activo o con un clic
se selecciona el objeto y luego se puede dibujar en el formulario (ver Figura 2.5).

Puntero

Pictute

Label

TextBox

Frame

CommandButton

CheckBox

OptionButton

ComboBox

ListBox

HScrollBar

VScrollBar

Timer

DriveListBox

DirListBox

FileListBox

Shape

Line

Image

Data

OLE

Figura 2.5.- Cuadro de herramientas

2.2.6. Ventana de propiedades


Mediante esta ventana es posible ver o establecer las propiedades de los objetos.
Cada vez que selecciona un objeto, la ventana de propiedades se actualiza para
ese objeto. Las partes de la ventana de propiedades (ver Figura 2.6) son:
a) Lista de todos los Objetos.
b) Descripcin de la propiedad.
c) Valor de la propiedad.
d) Descripcin rpida de la propiedad seleccionada.

Figura 2.6.- Ventana de propiedades.

27

Visual Basic 6.0

Unidad 2.- Trabajar con Visual Basic

2.2.7. Funciones bsicas del IDE


a) Crear un nuevo proyecto:
Segn su configuracin, al iniciar Visual Basic aparece automticamente el
cuadro de dilogo Nuevo proyecto (ver Figura 2.7), el cual presenta tres
pestaas: Nuevo, Existente y Recientes. La pestaa Nuevo permite
crear un nuevo proyecto. La pestaa Existente es para cargar un
proyecto guardado. Y la pestaa Recientes carga los ltimos proyectos
abiertos previamente con Visual Basic.

Figura 2.7.- Dilogo Nuevo proyecto al iniciar Visual Basic

El men Archivo | Nuevo proyecto accede al dilogo de la figura 2.8.

Figura 2.8.- Dilogo Nuevo proyecto estndar

Sugerencia: Seleccione EXE estndar en cualquiera de los casos para aplicaciones sencillas.
Mediante el teclado: CTRL+N tiene el mismo efecto.
28

Visual Basic 6.0

Unidad 2.- Trabajar con Visual Basic

b) Agregar o quitar mdulos de formulario del proyecto:


En el men Proyecto | Agregar formulario aparece el dilogo de la figura
2.9, el cual presenta dos pestaas Nuevo y Existente. Mediante la
pestaa Existente, en el proyecto actual se pueden utilizar o importar
formularios creados previamente en otros proyectos.

Figura 2.9.- Dilogo Agregar formulario

Otra forma de acceder al dilogo de la figura 2.9 es mediante el men


emergente de la ventana Explorador de proyectos (ver Figura 2.10). Este
men permite agregar, guardar o remover formularios y mdulos.

Figura 2.10.-Men emergente del explorador de proyecto

Recuerde:

Los mens emergentes de un objeto o ventana se activan haciendo un clic


derecho sobre el objeto o ventana.
29

Visual Basic 6.0

Unidad 2.- Trabajar con Visual Basic

c) Agregar o quitar mdulos estndar del proyecto:


Haciendo clic en el men Proyecto | Agregar mdulo se accede al cuadro
de dialogo que se muestra en la figura 2.11 en la que se puede observar,
al igual que para agregar formulario, las pestaas Nuevo y Existente.

Figura 2.11.-Dilogo Agregar mdulo

Tambin puede activar el men emergente de la ventana Explorador de


proyecto, con el fin de agregar mdulos estndar.
d) Cambiar los modos de operacin del proyecto (tiempo de diseo y ejecucin):
Utilizando el men Ejecutar | Iniciar o Ejecutar | Terminar se puede
pasar a tiempo de ejecucin o a tiempo de diseo respectivamente.
Mediante la barra de herramientas, haciendo clic en el botn Iniciar
o en el botn Terminar
tiempo de diseo.
Facilidad:

se puede pasar a tiempo de ejecucin o a

Presionar la tecla F5 del teclado es equivalente a Iniciar.

e) Guardar los archivos del proyecto:


Men Archivo | Guardar proyecto o Archivo | Guardar proyecto como
Mediante la barra de herramientas, haciendo clic en el botn Guardar
Se pueden guardar individualmente cada uno de los mdulos mediante el
men Archivo o desplegando el men emergente de la ventana
explorador de proyecto (ver Figura 2.10).
f)

Configurar el proyecto:
Para acceder a las Propiedades del proyecto (ver Figura 2.12) se usa el
men Proyecto | Propiedades de NombreProyecto. La seccin Objeto
30

Visual Basic 6.0

Unidad 2.- Trabajar con Visual Basic

inicial permite al programador elegir al formulario que se cargar en


forma predeterminada al iniciarse la aplicacin.

Figura 2.12.-Dilogo Propiedades del proyecto

g) Configurar el entorno:
Para configurar el IDE se hace clic en el men Herramientas | Opciones y
aparece el dilogo que se muestra en la figura 2.13, en la se pueden apreciar
las pestaas Editor, Formato del editor, General, Acople, Entorno y Avanzado.

Figura 2.13.-Dilogo Opciones de editor

Editor: permite configurar a la ventana de cdigo.


Formato del editor: define el tipo, tamao y color como se mostrarn las
fuentes tipogrficas segn su uso dentro del cdigo. Esta caracterstica es
para facilitar la visualizacin del cdigo de parte del usuario.
31

Visual Basic 6.0

Unidad 2.- Trabajar con Visual Basic

General: escoge si mostrar o no la cuadricula, y si forzar o no la posicin


de los controles a la cuadrcula.
Acople: permite elegir las ventanas del IDE que se podrn acoplar o no.
Entorno: escoge la forma de guardar los cambios, Automtica sin
preguntar, Preguntar antes de guardar o Guardado manual
Avanzado: establece si el entorno soporta o no MDI.
2.3. Crear una aplicacin
2.3.1. Pasos bsicos
Para crear una aplicacin (programa) en Visual Basic o cualquier otro lenguaje de
programacin visual, existen unos pasos bien definidos, aunque no estrictos, que
ayudan o facilitan el proceso de diseo. Se recomienda inicialmente hacer un
dibujo de la apariencia que tendr la interfaz de usuario (el formulario), esto con
el fin de ilustrar la ubicacin relativa de los objetos que contendr el formulario.
Los pasos bsicos son:
a) Colocar los objetos
b) Establecer las propiedades
c) Escribir el cdigo
2.3.2. Colocar los objetos
El primer paso consiste en la creacin de los objetos estableciendo su ubicacin, y
tamao inicial en forma grfica dentro de un formulario. Cuando se crea un nuevo
proyecto, segn el punto 2.2.7(a), automticamente se crea el primer objeto de la
aplicacin, y este es el formulario, incluyendo su mdulo de cdigo. En esta
primera parte, el programador debe seleccionar la clase (modelo de objeto) en el
cuadro de herramientas y luego dibujar el objeto en su contenedor respectivo. Los
contenedores son objetos que agrupan a otros objetos, y el nico visto hasta el
momento es el formulario.

32

Visual Basic 6.0

Unidad 2.- Trabajar con Visual Basic

Figura 2.14.-Agregar objetos a un formulario

2.3.3. Establecer las propiedades


Una vez que se han colocado los objetos, se procede a establecer o modificar las
propiedades de los mismos, tales como: color de fondo (BackColor), valor inicial
(Text), rtulo o ttulo (Caption) y la propiedad que nunca se debe dejar de
establecer en esta parte, la propiedad Nombre (Name). Las propiedades se
cambian en la Ventana de propiedades. No debe escribir cdigo sin establecer la
propiedad Nombre previamente, ya que en el paso siguiente de construccin del
cdigo, los procedimientos de evento se crean automticamente y estos incluyen
el nombre del objeto seleccionado. Si el programador cambia el nombre del
objeto, despus de haber escrito el cdigo del mismo, entonces deber corregir los
nombres de todos los procedimientos de evento del objeto.

Figura 2.15.-Modificar las propiedades de objetos

33

Visual Basic 6.0

Unidad 2.- Trabajar con Visual Basic

2.3.4. Escribir el cdigo


Finalmente se procede a escribir el cdigo en la Ventana de cdigo. Tal como
vimos en el punto 2.1.3, el cdigo se escribe dentro de un procedimiento; es decir,
entre las sentencias Private Sub y End Sub. Ahora la pregunta es En qu
procedimiento de evento se debe escribir el cdigo? En los lenguajes de
programacin visual, a la hora de escribir el cdigo, se deben tener en cuenta dos
elementos: el objeto y el evento. Es relevante entender que un objeto puede
responder a mltiples eventos, y que un mismo tipo de evento puede afectar a
mltiples objetos. As, el cdigo se divide en procedimientos y cada procedimiento
se corresponde con un objeto especfico y a un evento especfico de este objeto.
En este sentido, dividimos este paso en tres tareas bsicas.
a) Seleccionar el objeto: Se debe analizar cuales de los objetos se han dispuesto
para recibir las acciones del usuario, del sistema, o de una aplicacin externa.
Las aplicaciones orientadas a eventos, cuando se ejecutan, slo muestran la
interfaz y se quedan a la espera de la intervencin del usuario (teclado, ratn),
del sistema (reloj del PC), o de una aplicacin externa (peticiones); es decir, la
aplicacin espera a que ocurra algo, espera los Eventos; y estos tienen lugar
sobre un objeto. En esta primera tarea, el programador debe determinar
cuales de sus objetos recibir esas acciones. En nuestro ejemplo, tenemos tres
objetos: el formulario, la caja de texto y el botn de comando. El botn de
comando ser el que recibir el evento.

Seleccionar el objeto Command1


Figura 2.16.-Seleccionar objeto para procedimiento de evento

b) Seleccionar el evento: Especificar, para el objeto seleccionado, el evento


mediante el cual la aplicacin efectuar algn proceso. El editor crea
automticamente el procedimiento de evento. Para nuestro ejemplo
escogeremos el evento Click.

34

Visual Basic 6.0

Unidad 2.- Trabajar con Visual Basic

Seleccionar el evento Click


Figura 2.17.-Seleccionar evento para procedimiento de evento

c) Escribir el cdigo: Rellenar el procedimiento de evento creado previamente.


Se escriben las instrucciones necesarias para que, cuando se produzca el
evento sobre el objeto seleccionado, se ejecute el proceso deseado.
Objeto seleccionado

Evento seleccionado

Procedimiento de evento

Cdigo Basic

Figura 2.18.-Escribir cdigo en un procedimiento de evento

35

Visual Basic 6.0

Unidad 3.- Objetos de Visual Basic

Unidad 3
Objetos de Visual Basic
La manera ms segura de no fracasar es decidirse a tener xito
.- Sheridan.

3.1. El formulario
3.1.1. Formulario (Clase: Form)
Un objeto formulario es una ventana o un cuadro de dilogo que forma parte de la
interfaz de usuario de una aplicacin cuando esta se ejecuta. Los formularios
pertenecen a la clase Form, a la vez que Form tambin es un objeto. Los
formularios son objetos contenedores. Los contenedores son objetos diseados
para albergar o agrupar a otros objetos, de tal manera que si se mueve o se
elimina al contenedor, tambin se mueven o eliminan a los objetos contenidos en
l. Para hacer referencia a un objeto contenido dentro de un formulario, se debe
especificar el nombre del formulario seguido de un punto y luego el nombre del
objeto.
NombreForm.NombreObjeto.Propiedad = Valor
NombreForm.NombreObjeto.Mtodo [Parmetro1, Parmetro2,]
En el caso que el objeto este contenido en el mismo formulario desde el que se
hace referencia, se sustituye el nombre del formulario por la palabra reservada
Me. La palabra Me es equivalente al nombre del formulario en cuyo mdulo se
escribe el cdigo. En otras palabras, para el ejemplo Me reemplaza a
NombreForm, siempre que la ventana de cdigo pertenezca al formulario
llamado NombreForm.
Me.NombreObjeto.Propiedad = Valor
Me.NombreObjeto.Mtodo [Parmetro1, Parmetro2,]
De esta misma manera, para acceder a propiedades y mtodos del formulario
actual, no es necesario escribir su nombre completo como se muestra a
continuacin.
NombreForm.Propiedad = Valor
NombreForm.Mtodo [Parmetro1, Parmetro2,]
En su lugar, se hace referencia al formulario actual la palabra reservada Me.
Me.Propiedad = Valor
Me.Mtodo [Parmetro1, Parmetro2,]

36

Visual Basic 6.0

Unidad 3.- Objetos de Visual Basic

La palabra Me, ms que sintaxis, es una gran ayuda a la hora de escribir cdigo,
ya que al colocar el punto justo despus de Me se despliegan, no slo las
propiedades y mtodos del formulario, sino tambin los objetos que este contiene
(ver Figura 3.1), facilitndose la escritura y verificndose si existe o no el objeto.

Propiedad
Mtodo
Objeto

Figura 3.1.- Despliegue del operador punto.

Esta funcionalidad es gracias al operador punto del editor de cdigo, y aplica para
todos los objetos del sistema, instancias de objetos y estructuras. Observe que se
presentan iconos diferentes para distinguir entre propiedades, mtodos y objetos.
Regla de Visual Basic de prefijo para nombre de objeto Formulario: frm.

3.1.2. Propiedades de formularios


A continuacin se muestra una tabla con la mayora de las propiedades de los
formularios con su descripcin (ver Tabla 3.1), la cual se ha redactado en forma
general ya que existen propiedades que pueden aplicar para otros objetos.
Propiedad
Appearence
AutoRedraw
BackColor
BorderStyle
Caption
ControlBox
DrawStyle
DrawWidth
Enabled
FillColor
FillStyle
Font
ForeColor
Height
Icon
Left
MaxButton
MinButton
MouseIcon
MousePointer
Moveable
Name
Picture
ScaleHeight
ScaleLeft
ScaleMode
ScaleTop

Descripcin
Si el objeto es 3D o plano.
Si re-dibuja o no los resultados de mtodos grficos.
Color de fondo del objeto.
Estilo del borde del formulario. Puede ser sin borde, borde fijo, borde ajustable, etc.
Ttulo o rtulo del objeto. Para formularios, aparece en la barra de ttulo.
Si muestra o no el cuadro de control del formulario.
Estilo de lnea de los resultados de mtodos grficos.
Grueso de lnea de los resultados de mtodos grficos.
Si permite o no los eventos del ratn.
Color de relleno de formas, crculos y cuadros.
Estilo de relleno de formas, crculos y cuadros.
Nombre y estilo de la fuente tipogrfica para el objeto.
Color de la fuente tipogrfica.
Altura del objeto. Segn ScaleMode.
Imagen del cuadro de control del formulario.
Distancia del lado izquierdo del objeto al borde de su contenedor. Segn ScaleMode.
Si muestra o no el botn maximizar del formulario.
Si muestra o no el botn minimizar del formulario.
Imagen personal del apuntador de ratn. MousePointer debe establecerse en 99-Custom.
Tipo de imagen del apuntado de ratn sobre el objeto.
Si se puede mover o no el formulario en tiempo de ejecucin.
Identificador o nombre del objeto. No acepta espacios ni caracteres especiales.
Imagen de fondo. Cualquier archivo grfico del entorno de Windows.
Altura interior del objeto. Segn ScaleMode.
Coordenada del lado izquierdo interno del objeto. Segn ScaleMode.
Unidad de medida de las coordenadas. Puede ser Twip, Centmetro, Pulgada, etc.
Coordenada del lado superior interno del objeto. Segn ScaleMode.
37

Visual Basic 6.0

Propiedad
ScaleWidth
ShowInTaskBar
StarUpPosition
Tag
Top
Visible
Width
WindowState

Unidad 3.- Objetos de Visual Basic

Descripcin
Ancho interior del objeto. Segn ScaleMode.
Si muestra o no la aplicacin en la barra de tareas de Windows.
Posicin inicial del formulario cuando se carga o se ejecuta la aplicacin.
Informacin adicional del objeto.
Distancia del lado superior del objeto al borde de su contenedor. Segn ScaleMode.
Si se muestra o no en la pantalla.
Ancho del objeto. Segn ScaleMode.
Modo del formulario Normal, Maximizado o Minimizado
Tabla 3.1.- Propiedades ms importantes del formulario.

En la figura siguiente se muestra un formulario (ventana) donde se indican sus


elementos bsicos.
Barra de ttulo

Botn minimizar

Botn maximizar

Botn cerrar

Caja de control
Barra de men

Height

Borde

Fondo

Width
Figura 3.2.- Elementos bsicos de una ventana.

3.1.3. Mtodos de formularios


Mtodo

Sintaxis

Show

Objeto.Show [Estilo]

Hide

Objeto.Hide

Circle

Objeto.Circle (x , y), r [, Color]

Line

Objeto.Line (x1, y1) - (x2, y2)

Cls

Objeto.Cls

Move

Objeto.Move x, y, Ancho, Alto

PSet

Objeto.Pset (x, y) [,Color]

SetFocus

Objeto.SetFocus

Accin
Mostrar un formulario en forma modal si Estilo = 1. De
lo contrario es no modal.
Ocultar un formulario. El formulario no se descarga de
la memoria.
Dibujar un crculo sobre el objeto. El centro est en x,
y. El radio es r.
Dibujar una lnea sobre el objeto. La lnea va desde
x1, y1, hasta x2, y2.
Borrar los resultados de mtodos grficos. Mtodos
como Line y Circle son mtodos grficos.
Mover y cambiar tamao del objeto. Alternativamente
dispone las propiedades Top, Left, Height y Width
Dibujar un punto sobre el objeto. El tamao del punto
depende del valor de la propiedad DrawWidth.
Enfocar al objeto. Los objetos deshabilitados o no
visibles, no pueden ser enfocados.
Tabla 3.2.- Mtodos ms importantes del formulario

3.1.4. Eventos de formularios


Evento
Click
DblClick
MouseDown
MouseUp
MouseMove

Ocurre cuando
El usuario presiona y suelta un botn del Mouse (ratn) en un objeto.
El usuario presiona y suelta un botn del Mouse (ratn) en un objeto dos veces.
El usuario presiona un botn del Mouse (ratn) en un objeto.
El usuario suelta un botn del Mouse (ratn) en un objeto.
El usuario mueve el puntero del Mouse (ratn) en un objeto.
38

Visual Basic 6.0

Evento
KeyDown
KeyUp
KeyPress
DragDrop
DragOver
Activate
Deactivate
GotFocus
LostFocus
Load
Unload
QueryUnload
Paint
Resize

Unidad 3.- Objetos de Visual Basic

Ocurre cuando
El usuario presiona una tecla en un objeto que tiene el enfoque.
El usuario suelta una tecla en un objeto que tiene el enfoque.
El usuario presiona y suelta una tecla en un objeto que tiene el enfoque.
El usuario termina una operacin de arrastrar y colocar sobre un objeto.
El usuario ejecuta una operacin de arrastrar y colocar sobre un objeto.
Un formulario se convierte en la ventana activa.
Un formulario deja de ser la ventana activa.
Un objeto recibe el enfoque.
Un objeto pierde el enfoque.
Un formulario se abre o se carga.
Un formulario se cierra o descarga.
Un formulario se intenta cerrar o descargar.
Un objeto o parte de l se expone si estaba cubierto por otro.
Un formulario cambia de tamao.
Tabla 3.3.- Eventos ms importantes del formulario.

3.2. Los controles


3.2.1. Etiqueta (Clase: Label)
Un control etiqueta es un control grfico de la clase Label que se puede usar
para mostrar algn texto o mensaje que el usuario no podr cambiar
directamente. Se puede escribir cdigo para cambiar el texto mostrado por un
control Label como respuesta a eventos en tiempo de ejecucin, manipulando la
propiedad Caption. Por lo general las etiquetas se usan para rotular otros
controles.
Regla de Visual Basic de prefijo para nombre del objeto Etiqueta: lbl.

Veremos slo las propiedades, mtodos y eventos especficos que no hayan sido
tratados anteriormente para cada objeto.
a) Propiedades de etiquetas
Propiedad
Alignment
AutoSize
BackColor
BackStyle
BorderStyle
Caption
DragIcon
DragMode
ToolTipText
WordWrap

Descripcin
Justificacin de texto centrada, derecha o izquierda.
Si ajusta o no su tamao al contenido.
Color de fondo. No tiene efecto si la propiedad BackStyle = 0-Transparent
Estilo de fondo de etiquetas (Label) y figuras (Shape).
Estilo del borde del objeto. Puede ser con o sin borde.
Ttulo o rtulo del objeto.
Icono que se muestra durante la operacin arrastrar y colocar del objeto.
Modo de la operacin arrastrar y colocar del objeto.
Mensaje de la etiqueta de ratn cuando se sealiza al objeto.
Si ajusta o no su tamao en altura al contenido (Caption).
Tabla 3.4.- Algunas propiedades de la etiqueta.

Se pueden establecer las propiedades AutoSize y WordWrap en forma


combinada si desea que el Label muestre lneas de longitud variable o
nmeros variables de lneas. Las etiquetas pueden contener mltiples lneas,
para lo cual se debe insertar en la cadena los caracteres de retorno de carro y
lnea nueva (ASCII 13 y 10), que se pueden implementar mediante la
constante vbCrLf.
lblLabel.Caption= Line1 & vbCrLf & Line2
39

Visual Basic 6.0

Unidad 3.- Objetos de Visual Basic

La operacin de arrastrar y colocar est disponible para la mayora de los


objetos, siempre y cuando la propiedad DragMode se establezca a 0-Manual.
Una vez iniciada una operacin de este tipo, la imagen del icono del puntero
de Mouse (ratn) cambia segn la imagen establecida mediante la propiedad
DragIcon. La operacin de arrastrar y colocar se inicia mediante el mtodo
Drag del objeto en su evento MouseDown.
b) Mtodos de etiquetas
Uno de los mtodos ms importantes es Drag o arrastrar y colocar, como se le
conoce. Se utilizan los siguientes argumentos: 0-Cancelar, 1-Iniciar, y 2Terminar. Tambin es interesante el mtodo Refresh, el cual fuerza al sistema
para volver a dibujar un formulario o un control completo.
c) Eventos de etiquetas
Los eventos ms importantes que afectan a una etiqueta son Change,
KeyDown y KeyUp. El evento Change ocurre cuando el valor de la propiedad
Caption se modifica. Como se explic anteriormente, los eventos KeyDown y
KeyUp son tiles para detectar el inicio y fin de una operacin de arrastrar y
colocar.
3.2.2. Botn de comando (Clase: CommandButton)
Se utiliza un control de la clase CommandButton para comenzar, interrumpir o
terminar un proceso, por lo general mediante su evento Click.
Regla de Visual Basic de prefijo para nombre del objeto Botn de comando: cmd.

a) Propiedades de botones de comando


Propiedad
BackColor
Cancel
Default
DisabledPicture
DownPicture
Picture
Style
TabIndex
TabStop

Descripcin
Color de fondo. No tiene efecto si la propiedad Style = 0-Estndar.
Si ejecuta o no el clic de un Botn presionando ESC.
Si ejecuta o no el clic de un Botn presionando ENTER.
Imagen cuando se deshabilita el objeto. No tiene efecto si la propiedad Style = 0-Estndar.
Imagen cuando se hace clic en el objeto. No tiene efecto si la propiedad Style = 0-Estndar.
Imagen de fondo. No tiene efecto si la propiedad Style = 0-Estndar.
Estilo grfico de objetos.
Orden para el enfoque mediante la tecla TAB.
Si se enfoca o no mediante la tecla TAB.
Tabla 3.5.- Algunas propiedades del botn de comando

Los botones de comando pueden contener una imagen mediante la propiedad


Picture, siempre que la propiedad Style se establezca a 1-Graphical. Se puede
definir el grfico que muestra el botn en estado deshabilitado, segn la
propiedad DisabledPicture.
Tambin se puede mostrar una imagen determinada por la propiedad
DownPicture en el botn de comando cuando se mantiene presionado el botn
derecho del Mouse (ratn).
TabIndex define el orden de seleccin de enfoque de los objetos en la medida
que se presiona la tecla TAB, y no aplica en el caso de los objetos cuya la
propiedad TabStop o Enabled se ha establecido a False (False es equivalente a
cero)
40

Visual Basic 6.0

Unidad 3.- Objetos de Visual Basic

b) Mtodos de botones de comando


El mtodo ms importante es SetFocus. De esta manera se puede enfocar
cualquier objeto mediante cdigo, siempre que el objeto incluya este mtodo y
est habilitado. El siguiente ejemplo enfoca al botn de comando
cmdMiBotn.
cmdMiBotn.SetFocus
c) Eventos de botones de comando
Los eventos ms importantes son Click y MouseMove. Se puede ejecutar el
evento clic de un botn de comando de mltiples maneras adems de
simplemente haciendo clic en l. El evento clic se puede activar presionando la
tecla ENTRAR siempre que el botn tenga el enfoque o la propiedad Default
est establecida a True (True es equivalente a cualquier valor distinto de
cero). Tambin presionando la tecla ESC, y habiendo establecido la propiedad
Cancel True. De todos los botones de comando de un formulario, slo uno
tiene establecido a True la propiedad Default o Cancel.
3.2.3. Caja de texto (Clase: TextBox)
El control de la clase TextBox, tambin denominado control de campo de edicin o
control de edicin, permite mostrar, editar e introducir informacin en tiempo de
ejecucin. La clase TextBox esta provista de la propiedad Text, la cual se modifica
por teclado y est disponible por cdigo tanto para lectura como para escritura.
Regla de Visual Basic de prefijo para nombre del objeto Caja de texto: txt.

a) Propiedades de cajas de texto


Propiedad
CausesValidation
Enabled
HideSelection
Locked
MaxLength
MultiLine
PasswordChar
ScrollBars
SelLength
SelStart
SelText
Text

Descripcin
Si ejecuta o no el evento Validate del objeto si pierde el enfoque.
Si permite o no los eventos del ratn.
Si oculta o no la seleccin del objeto cuando pierde el enfoque.
Si bloquea o no la escritura en cajas de texto.
Cantidad de caracteres admisibles en una caja de texto.
Si permite o no varias lneas de escritura en una caja de texto.
Carcter para enmascarar la escritura en cajas de texto.
Tipo de barra de desplazamiento para cajas de texto.
Cantidad de caracteres seleccionados en una caja de texto.
Posicin del cursor dentro de una caja de texto.
Posicin del cursor dentro de una caja de texto.
Contenido alfanumrico de una caja de texto o combinada.
Tabla 3.6.- Algunas propiedades de la caja de texto.

Para escribir en varias lneas de texto en un control de la clase TextBox,


establezca la propiedad MultiLine a True. Para personalizar la combinacin de
barra de desplazamiento en un TextBox, establezca la propiedad ScrollBars.
Las barras de desplazamiento siempre aparecern en el TextBox cuando su
propiedad MultiLine se haya establecido a True y su propiedad ScrollBars a
cualquier valor excepto a 0-None. Si una caja de texto de mltiples lneas tiene
una barra de desplazamiento horizontal, el texto se no ajustar
automticamente a la siguiente lnea cuando la cantidad de caracteres
abarque el tamao de la caja de texto.
41

Visual Basic 6.0

Unidad 3.- Objetos de Visual Basic

Se puede bloquear contra escritura un control TextBox para evitar que el


usuario cambie su informacin con la propiedad Locked a True. Y si desea
evitar que el usuario seleccione o enfoque a la caja de texto, coloque a False
la propiedad Enabled. El nmero de caracteres, que el usuario puede
introducir, tambin se puede limitar mediante la propiedad MaxLength. Otra
restriccin til para las cajas de texto consiste en enmascarar los caracteres
introducidos para evitar su visualizacin (contraseas), as en la propiedad
PasswordChar se define el carcter de mscara.
Con las propiedades SelStart, SelLength y SelText se puede seleccionar parte
del texto de una caja de texto. SelStart define la posicin inicial, SelLength la
longitud de la seleccin en cantidad de caracteres, y SelText devuelve la
cadena seleccionada. Por ejemplo, suponga una caja de texto txtMiCaja
contiene el texto Todos los perros van al cielo. Al ejecutar esta seccin de
cdigo (Click en el botn de comando cmdSeleccionar), en la caja de texto
txtSeleccin aparece la siguiente cadena de caracteres: los perros.
Private Sub cmdSeleccionar_Click()
txtMiCaja.SelStart = 7
txtMiCaja.SelLength = 10
txtSeleccin = txtMiCaja.SelText
End Sub
b) Mtodos de cajas de texto
Se puede controlar el enfoque de una caja de texto mediante el mtodo
SetFocus. Recuerde que no se pueden enfocar objetos deshabilitados (Enabled
en False).
txtMiCaja.SetFocus
c) Eventos de cajas de texto
Las cajas de texto responden a los siguientes eventos principalmente: Change,
KeyDown, KeyPress, KeyUp, GotFocus, LostFocus y Validate. Se puede
aprovechar el evento Change para deshabilitar un botn de comando si el
contenido de una caja de texto (propiedad Text) es vaco. De esta manera se
inhabilita un proceso hasta que el usuario introduzca datos al programa.
Private Sub txtMiCaja_Change()
Me.cmdBotn.Enabled = Len(Me.txtMiCaja.Text)
End Sub
Len: Es una funcin que devuelve el nmero de caracteres de una cadena de texto

Resulta conveniente que al enfocar una caja de texto, el contenido de esta se


seleccione para su fcil modificacin.
Private Sub txtMiCaja_GotFocus()
Me.txtMiCaja.SelStart = 0
Me.txtMiCaja.SelLength = Len(Me.txtMiCaja.Text)
End Sub
El evento KeyPress incluye el argumento KeyAscii As Integer que representa
el cdigo ASCII de la tecla que el usuario presiona dentro de la caja de texto.
42

Visual Basic 6.0

Unidad 3.- Objetos de Visual Basic

As podr validar cada carcter introducido. En el ejemplo siguiente, se limita


al usuario a escribir slo caracteres numricos.
Private Sub txtMiCaja_KeyPress(KeyAscii As Integer)
If (KeyAscii > 47) And (KeyAscii < 58) Then Exit Sub
KeyAscii = 0
End Sub
El cdigo ASCII del caracter 0 es 48 y el del 9 es 57.

La primera instruccin indica que si el caracter est entre 0 y 9, debe salir


del procedimiento (Exit Sub), de lo contrario contina con la siguiente
instruccin, la cual convierte en caracter nulo a la tecla presionada, lo que es
equivalente a bloquear el teclado para ese caracter. Tambin, conociendo que
el cdigo ASCII de la tecla ENTER es 13, se puede seleccionar la siguiente caja
de texto utilizando el mtodo SetFocus.
Private Sub txtMiCaja_KeyPress(KeyAscii As Integer)
If (KeyAscii = 13) Then txtSeleccin.SetFocus
End Sub
Finalmente, la propiedad CauseValidation del objeto caja de texto activa o
desactiva la sensibilidad del objeto ante el evento Validation. El evento
Validation se ejecuta justo antes de desenfocar al objeto, lo que permite
validar el contenido de la caja de texto y evitar su desenfoque si el valor no es
vlido, asignndole al parmetro Cancel True. Suponga que el valor a
introducir debe ser menor o igual que 20; as que se cancelar el desenfoque
para valores mayores a 20
Private Sub txtMiCaja_Validate(Cancel As Boolean)
Cancel = (Me.txtMiCaja.Text > 20)
End Sub
3.2.4. Marco (Clase: Frame)
El objeto de la clase Frame es un contenedor. Este control proporciona un
agrupamiento identificable para controles. Tambin se puede usar un control
Frame para subdividir un formulario funcionalmente. Para agrupar controles,
dibuje primero el control Frame y, a continuacin, dibuje los controles dentro de
Frame. De este modo podr mover (propiedades Top y Left), ocultar (propiedad
Visible) o desactivar (propiedad Enabled) al mismo tiempo tanto al marco como a
los controles contenidos en l. La propiedad BorderStyle establecida a 0-None
oculta la etiqueta del marco. La propiedad TabStop no puede ser negada, ya que
est establecida a True por defecto.
Regla de Visual Basic de prefijo para nombre del objeto Marco: fra.

3.2.5. Caja de imagen (Clase: PictureBox)


La caja de imagen, tambin como los marcos, acta como contenedor. Puede
emplear el control caja de imagen para agrupar controles en la parte superior o
inferior del rea interna del formulario o para crear una barra de herramientas o
de estado. El tipo de alineacin en el interior del formulario se establece mediante
la propiedad Align. Al igual que con el marco, para agrupar objetos se debe dibujar
primero la caja de imagen y luego los objetos dentro del contenedor. Este tipo de
43

Visual Basic 6.0

Unidad 3.- Objetos de Visual Basic

control permite mostrar imgenes o grficos de mapa de bits, iconos o meta


archivos, as como tambin, archivos mejorados JPEG y GIF, mediante la
propiedad Picture. Para hacer que un control PictureBox ajuste su tamao
automticamente para mostrar un grfico completo, establezca su propiedad
AutoSize a True. Por otra parte, Visual Basic provee una funcin para cargar una
imagen en tiempo de ejecucin desde una unidad de disco, denominada
LoadPicture.
picMiDib.Picture = LoadPicture(A:\Nubes.bmp)
Regla de Visual Basic de prefijo para nombre del objeto Caja de imagen: pic.

3.2.6. Botn de opcin (Clase: OptionButton)


Generalmente, los controles de la clase OptionButton se utilizan en un grupo de
opciones para mostrar opciones entre las cuales el usuario slo puede seleccionar
una. Los controles OptionButton se agrupan si los dibuja dentro de un contenedor
como un control Frame, un control PictureBox o un formulario. Todos los botones
de opcin que estn dentro del mismo contenedor actan como un nico grupo.
La propiedad ms importante es la propiedad Value la cual puede ser True o False.
El evento clic se ejecuta automticamente con el enfoque del objeto.
Regla de Visual Basic de prefijo para nombre del objeto Botn de opcin: opt.

3.2.7. Caja de verificacin (Clase: CheckBox)


Se utiliza este control para ofrecer al usuario una opcin de tipo Verdadero o
Falso, o S o No; o para ofrecer mltiples opciones entre las cuales el usuario
puede seleccionar una o ms. La propiedad Value determina el estado del control:
0-Desactivado, 1-Activado, o 2-No disponible.
Aunque puede parecer que los controles Botn de Opcin y Caja de Verificacin
funcionan de forma similar, hay una diferencia importante: cuando un usuario
selecciona un OptionButton, los otros controles OptionButton del mismo grupo
dejan de estar disponibles automticamente. Por el contrario, es posible
seleccionar cualquier nmero de controles de la clase CheckBox.
Regla de Visual Basic de prefijo para nombre del objeto Caja de verificacin: chk.

3.2.8. Caja de lista (Clase: ListBox)


La caja de lista muestra un conjunto de elementos entre los cuales el usuario
puede seleccionar uno o ms. Si el nmero de elementos supera al nmero de filas
que pueden mostrarse, el control agregar automticamente una barra de
desplazamiento.
Regla de Visual Basic de prefijo para nombre del objeto Caja de lista: lst.

a) Propiedades de cajas de lista


Propiedad
Columns
ItemData
List
ListCount
ListIndex
MultiSelect

Descripcin
Nmero de columnas de una lista.
Nmero especfico para cada elemento de una lista.
Elemento especfico de una lista.
Cantidad de elementos dentro de una lista.
Nmero del elemento seleccionado de una lista.
Modalidad de seleccin de una lista.
44

Visual Basic 6.0

Propiedad
NewListIndex
Selected
Sorted
Style

Unidad 3.- Objetos de Visual Basic

Descripcin
Nmero del elemento agregado nuevo a una caja de lista.
Si est o no seleccionado un elemento de una lista.
Si ordena o no los elementos de una lista.
Estilo grfico de objetos.
Tabla 3.7.- Propiedades ms importantes de listas.

ItemData es un vector que permite almacenar un nmero entero por cada


elemento de la lista. Se utiliza como campo de informacin adicional para
referencia o valor del un elemento de la lista.
La propiedad ListIndex devuelve la posicin del elemento seleccionado dentro
de una caja de lista, y tiene valores desde -1 hasta ListCount-1. Si no se
encuentra seleccionado ningn elemento de la lista, el valor de la propiedad
ListIndex ser automticamente -1. Si el usuario selecciona el primer elemento
de la lista, ListIndex tiene valor 0, y para el ltimo elemento ListIndex es igual
a ListCount-1. La propiedad List devuelve o establece los elementos contenidos
en la caja de lista en una posicin especfica. Por ejemplo, considere la caja de
lista lstMiLista, en la que se quiere escribir su primer y segundo elemento:
lstMiLista.List(0) = Primer elemento de lista
lstMiLista.List(1) = Segundo elemento de lista
Se pueden definir dos estilos de cajas de lista mediante la propiedad Style: 0Normal o 1-Verificacin. La propiedad MultiSelect acepta tres valores: 0-None
(no permite seleccin mltiple), 1-Single y 2-Extended.
La propiedad Selected devuelve o establece el estado de seleccin de un
elemento de la lista. Por ejemplo, para seleccionar el primer elemento de
lstMiLista en tiempo de ejecucin:
lstMiLista.Selected(0) = True
b) Mtodos de cajas de lista
Mtodo

Sintaxis

AddItem

Objeto.AddItem Elemento

RemoveItem

Objeto.RemoveItem Posicin

Clear

Objeto.Clear

Accin
Agregar el Elemento a un control caja de lista o caja
combinada. NewListIndex tiene la posicin.
Eliminar el elemento que se encuentra en la Posicin de
una caja de lista o caja combinada
Eliminar todos los elementos de una caja de lista o caja
combinada.
Tabla 3.8.- Mtodos ms importantes de las cajas de lista

3.2.9. Caja combinada (Clase: ComboBox)


El objeto de la clase ComboBox se conoce como caja combinada porque est
constituido por los objetos caja de texto y caja de lista; por lo tanto, incluye las
propiedades, mtodos y eventos de ambos. La diferencia del ComboBox respecto
al ListBox es que las cajas combinadas no permiten seleccin mltiple, y obligan al
usuario a que escoja uno de los elementos de la lista. Una vez seleccionado el
tem, se puede usar la propiedad Text y SelText para devolver el valor contenido
en el control. Para las cajas combinadas aplican los mtodos AddItem,
RemoveItem y Clear de las cajas de lista. Es conveniente utilizar cajas combinadas
en lugar de cajas de lista cuando sea requerido ahorrar rea del formulario.
Regla de Visual Basic de prefijo para nombre del objeto Caja combinada: cbo.
45

Visual Basic 6.0

Unidad 3.- Objetos de Visual Basic

3.2.10. Barra de desplazamiento (Clase: HScrollBar, VScrollBar)


Visual Basic provee tanto la barra de desplazamiento horizontal (HScrollBar) como
vertical (VScrollBar), con el objeto de generar un valor entero limitado entre un
mnimo y un mximo.
Regla de Visual Basic de prefijo para nombre del objeto Barra de desplazamiento: hsb, vsb.

a) Propiedades de barras de desplazamiento


Propiedad
LargeChange
Max
Min
SmallChange
Value

Descripcin
Variacin del valor de una barra de desplazamiento largo.
Valor mximo de una barra de desplazamiento.
Valor mnimo de una barra de desplazamiento.
Variacin del valor de una barra de desplazamiento en corto.
Valor del objeto.
Tabla 3.9.- Propiedades ms importantes de la barra de desplazamiento.

El valor numrico de la barra se puede leer o establecer mediante su


propiedad Value, la cual vara desde el valor de la propiedad Min hasta el valor
de la propiedad Max. La propiedad Value cambia automticamente cuando el
usuario manipula la barra de desplazamiento en ejecucin. Cuando el usuario
usa las flechas, la variacin de la propiedad Value depende de la propiedad
SmallChange; y cuando hace clic en la barra, la variacin depende de la
propiedad LargeChange. Las propiedades Min, Max y Value aceptan valores
enteros desde 32768 hasta 32767. Otra forma de modificar el valor de la
barra de desplazamiento es moviendo directamente el bloque de
desplazamiento, lo que produce el evento Scroll. Tanto el evento Scroll como
el evento Change se pueden usar para actualizar los controles que utilizan el
valor de la barra de desplazamiento.
3.2.11. Temporizador (Clase: Timer)
No todos los eventos son producidos externamente por el usuario. El control
temporizador posee slo un evento, el evento Timer, el cual se activa
automticamente a intervalos peridicos. El control Timer es invisible para el
usuario en tiempo de ejecucin ya que no tiene representacin grfica. Este objeto
resulta til para el procesamiento de fondo, especialmente para las animaciones y
monitoreo automtico de procesos. La propiedad Interval devuelve o establece el
tiempo en milisegundos en que se produce el evento Timer. La propiedad Enabled
activa (True) o detiene (False) el reloj del control. No existe ningn lmite prctico
en cuanto al nmero de controles Timer activos (Enabled = True) ejecutndose
simultneamente.
Regla de Visual Basic de prefijo para nombre del objeto Temporizador: tmr.

3.2.12. Imagen (Clase: Image)


Utilice el control Image para mostrar un grfico o imagen. 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. La gran diferencia con el
control caja de imagen es que el control imagen no es un contenedor, adems
posee la propiedad Stretch, la cual permite ajustar la imagen al tamao del
control, y no es el control el que se ajusta al tamao de la imagen como ocurre en
el PictureBox. Por otra parte, el control de la clase Image utiliza menos recursos
del sistema y se actualiza con ms rapidez, por lo que se recomienda para
animaciones o funciones decorativas.
46

Visual Basic 6.0

Unidad 3.- Objetos de Visual Basic

Para crear una animacin o simulacin, puede manipular las propiedades y


mtodos grficos en el cdigo de un control Temporizador. Puede rellenar un
control imagen (propiedad Picture) con distintas imgenes donde cada una
muestre un estado consecutivo.
Private Sub tmrMiTimer_Timer()
If imgImagen.Picture = imgImagen2.Picture Then
imgImagen.Picture = imgImagen1.Picture
Else
imgImagen.Picture = imgImagen2.Picture
End If
End Sub
La imagen imgImagen cambiar su grfico de fondo (propiedad Picture) cada
cierto tiempo, segn el valor establecido en la propiedad Interval del objeto Timer.
La velocidad de cambio se establece mediante la propiedad Interval del Timer.
Regla de Visual Basic de prefijo para nombre del objeto Imagen: img

3.2.13. Figura (Clase: Shape)


El objeto Shape es un control grfico que se muestra como un rectngulo, un
cuadrado, una elipse, un crculo, un rectngulo redondeado o un cuadrado
redondeado. Su funcin es decorativa es decorativa, para enmarcar otros objetos
o para dividir el formulario en varios sectores. Este tipo de objeto carece de
eventos. Se usa el control de la clase Shape en lugar de usar los mtodos grficos
Line o Circle para dibujar formas bsicas sobre un formulario.
Regla de Visual Basic de prefijo para nombre del objeto Figura: shp.

3.2.14. Lnea (Clase: Line)


Line es un control grfico que se muestra como una lnea horizontal, vertical o
diagonal, segn sus propiedades X1, Y1, X2 y Y2. Permite reemplazar el uso del
mtodo Line de los formularios y las cajas de imagen.
Regla de Visual Basic de prefijo para nombre del objeto Lnea: lin.

3.2.15. Ubicacin de los controles bsicos


PictureBox

Label

TextBox

Frame

CommandButton

CheckBox

OptionButton

ComboBox

ListBox

HScrollBar

VScrollBar

Timer

DriveListBox

DirListBox

FileListBox

Shape

Line

Image

Data

OLE

Figura 3.3.- Caja de herramientas (Clases).

47

Visual Basic 6.0

Unidad 3.- Objetos de Visual Basic

3.2.16. Ejemplo de los controles bsicos

Figura 3.4.- Ejemplo de los controles bsicos.

48

Visual Basic 6.0

Unidad 3.- Objetos de Visual Basic

49

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

Unidad 4
Cdigo en Visual Basic
La confusin es parte del proceso de aprendizaje
.- Dr. Lair Ribeiro

4.1. Espacios de memoria


4.1.1. Identificadores
A menudo necesitar almacenar valores temporalmente en memoria cuando est
realizando clculos con Visual Basic. Por ejemplo, puede que desee calcular
diversos valores, compararlos y realizar distintas operaciones con ellos,
dependiendo de los resultados de la comparacin. La manera de referir a esos
espacios de memoria donde se encuentran los valores es mediante identificadores.
Los identificadores son los nombres que se utilizan para referir en el programa a
espacios de memoria (variables, constantes, procedimientos y objetos). Estos
permiten identificar unvocamente cualquier elemento del programa. En Visual
Basic tienen las siguientes caractersticas:
a) Deben comenzar con caracter alfabtico (una letra)
b) No deben contener caracteres especiales (guiones, espacios, puntos, etc.)
c) No pueden ser palabras reservadas (Private, End, Click, Sub, etc.)
d) Debera ser lo ms mnemotcnicos posible, y no ms de 25 caracteres.
4.1.2. Tipos de datos
Los tipos de datos especifican las caractersticas de la informacin que se
almacenar en memoria. De esta manera, cada tipo de datos requiere un espacio
de memoria determinado y una forma de manipulacin especfica. Una suma de
nmeros es distinta a una suma de caracteres o de fechas. Tambin, requerira
menos espacio de memoria la edad de una persona que las distancias
interestelares. Por esta razn, es imprescindible que el programador conozca los
tipos de datos disponibles en Visual Basic, para que utilice el que menos
requerimientos de memoria posea, y el ms apropiado para que cumpla su
cometido. Aunque el lenguaje provee muchos tipos de datos, estos tambin
pueden ser definidos por el usuario. Tambin existen otros tipos de datos provistos
por objetos especficos. En esta parte trataremos los tipos de datos predefinidos
en Visual Basic (ver Tabla 4.1) agrupados como sigue:
a) Tipos de datos numricos (Byte, Integer, Long, Single, Double y Currency):
Permiten efectuar operaciones aritmticas como suma, resta, multiplicacin,
etc. Los tipos de datos numricos pueden ser enteros o fraccionarios. Si se
asigna a un tipo de dato entero nmeros con decimales, este se redondea al
50

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

entero inmediato superior. Se producir un error de desbordamiento al


intentar cargar un tipo de dato numrico con valores superiores a su espacio
disponible (ver la columna Intervalo en la Tabla 4.1). Por ejemplo, el tipo de
datos Byte permite valores hasta 255. Si intentara asignar valores superiores a
255 para un dato tipo Byte, se producir un error. Por otra parte, si la
intencin del espacio de memoria es almacenar nmeros con decimales, es
conveniente especificar los tipos de datos Single, Double o Currency. Se
recomienda utilizar el tipo de dato Currency para manipular cantidades
monetarias o cualesquiera otras que requieran cierto grado de precisin.
b) Tipo de dato lgico (Boolean): Este tipo de dato se establece a True (True
equivale a -1) cuando se le asigna cantidades distintas de cero; y, se establece
a False (False equivale a 0) cuando se le asigna cero.
c) Tipo de dato de cadenas de caracteres (String): Los espacios reservados para
cadenas de caracteres pueden ser de longitud fija o variable. Se escoge el tipo
de dato de cadena fija, slo cuando se conoce con antelacin y seguridad la
cantidad de caracteres que desea guardar. Si se asigna una cadena con ms
caracteres que los admitidos por el tipo de dato de longitud fija, los caracteres
a la derecha de la cadena son truncados. La cantidad de caracteres para
cadenas fijas se especifica mediante el valor de L (ver Tabla 4.1). Las cadenas
se delimitan mediante comillas dobles, al principio y al final de la cadena.
Tipo
Byte
(entero positivo)
Integer
(entero corto)
Long
(entero largo)
Single
(coma flotante)
Double
(coma flotante)
Currency
(coma fija)

Para

Bytes
1

Nmeros enteros

2
4
4

Nmeros con
decimales

8
8

Boolean

Valores lgicos

Date

Fechas y horas

Object

Instancias de objetos

String
(longitud variable)
String * L
(longitud fija)
Variant
(con nmeros)
Variant
(con caracteres)

Cadenas de caracteres
de longitud variable
Cadenas de caracteres
de longitud fija

10 + L
L
16

Datos variables
22 + L

Intervalo
Desde 0
Hasta 255
-32.768 hasta
+32.767
-2.147.483.648 a
+2.147.483.647
-3,4028E38 a 1,4013E-45 (negativos)
+1,4013E-45 a +3,4028E38 (positivos))
-1,7977E308 a -4,9407E-324 (negativos)
+4,9407E-324 a +1,7977E308 (positivos)
-922.337.203.685.477,5808 a
+922.337.203.685.477,5807
True
False
1 de enero de 100 a
31 de diciembre de 9999
Cualquier referencia a tipo Object
No importa la clase del objeto.
Desde 0 hasta 2.000 millones de caracteres
(L: Cantidad de caracteres)
Desde 1 a 65.400 caracteres aprox.
(L: Cantidad de caracteres)
Cualquier valor numrico hasta
el intervalo de un tipo Double
Desde 0 hasta 2.000 millones
(L: Cantidad de caracteres)
Tabla 4.1.- Tipos de datos provistos por Visual Basic.

d) Tipo de datos para fecha y hora (Date): Permite efectuar clculos de fecha y
hora. El valor de una fecha u hora se delimita mediante los caracteres
numerales (#), y se utilizan los caracteres barra (/) o guin (-) para separar
da, mes y ao, y el caracter dos puntos (:) para separar hora, minuto y
segundo.
51

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

e) Tipo de dato para instancias de objetos (Object): Es posible crear un


identificador distinto al nombre de un objeto, pero que hace referencia a ese
objeto. Este un buen ejemplo de polimorfismo en Visual Basic.
f)

Tipo de dato variable (Variant): Es el tipo de dato que ms consume recursos


de memoria, ya que tiene la posibilidad de adaptarse o convertirse
automticamente en cualquiera de los otros tipos de dato.

4.1.3. Declaracin de espacios de memoria


Los espacios de memoria pueden estar sujetos a cambio, o estar protegidos para
que no puedan ser modificados. En cualquiera de los casos se debe crear un
apuntador (identificador) y especificar las caractersticas (tipo de dato) del espacio
de memoria. Los espacios de memoria temporales, con nombre y tipo de dato, se
conocen como Variables. Por otra parte, los espacios protegidos de memoria,
identificados y configurados a un tipo de dato, reciben el nombre de Constantes.
En la mayora de los lenguajes de programacin, el uso de un espacio de memoria
debe ser informado al sistema operativo de la computadora; es decir, debe ser
declarado. La declaracin consiste en indicar el tipo de proteccin (variable o
constante), el identificador, y el tipo de dato de un espacio de memoria, teniendo
as declaracin de variables y declaracin de constantes.
a) Variables
Puede considerar una variable como un marcador de posicin en memoria de
un valor desconocido. Por ejemplo, suponga que est creando un programa de
ventas. Aunque conociera el producto y el precio, no sabe la cantidad que se
ha vendido hasta que no se produce realmente la venta. En este caso debe
usar variables para almacenar los valores desconocidos: cantidad de producto
y precio total. Visual Basic permite utilizar las variables sin ser previamente
declaradas, lo que se conoce como declaracin implcita, y es una prctica
indebida. Siempre se deben declarar las variables mediante instrucciones
adecuadas de manera explcita. Se recomienda utilizar la sentencia siguiente
en la seccin declaraciones de cada mdulo para detectar, durante la
compilacin, aquellas variables que no hayan sido declaradas explcitamente.
Option Explicit
b) Constantes
Las constante generalmente se utilizan para presentar valores que aparecen
en muchas partes del cdigo o para presentar valores numricos difciles de
recordar; de tal manera, que una modificacin de la cadena o del nmero se
pueda efectuar en una sola parte del cdigo del programa, y no sea necesario
navegar toda la aplicacin efectuando la misma modificacin. Por ejemplo, el
mensaje de error: Ha ocurrido un error irrecuperable, debe abortar la
operacin, es una gran cantidad de caracteres que resultara tedioso escribir
cada vez que se requiera para mostrar al usuario que ha ocurrido un error; y
tambin si el programador decide escribir este texto en varias zonas del
programa y desea cambiar el mensaje de error, tendr que efectuar el cambio
en todas las secciones del cdigo donde se encuentre el texto. Visual Basic
provee un conjunto de constantes denominadas constantes intrnsecas. Las
constantes creadas por el usuario se conocen como constantes simblicas.

52

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

4.1.4. Alcance de variables y constantes


En esta parte conoceremos donde se deben efectuar las declaraciones. Las
declaraciones de variables y constantes pueden efectuarse en cualquier mdulo y
en cualquier parte del mdulo. La escogencia est sujeta al rea del cdigo, en el
cual, el analista desea que la variable o constante tenga vigencia; es decir, exista.
Una variable o constante comienza a existir en el momento de su declaracin, y
estar disponible, existir y conservar su valor slo en las reas del cdigo que
abarque el sitio de su declaracin. Por eso es importante conocer en que parte del
cdigo declarar. De esta manera, se tienen tres tipos de variables y constantes,
segn su alcance o vigencia.
a) Vigencia Local: La variable o constante que se declara dentro de un
procedimiento, existe slo dentro de ese procedimiento. Cuando el
procedimiento termina, la variable o constante deja de existir, y no puede
utilizarse nuevamente en otros procedimientos. La vigencia de variables
locales puede ser voltil o esttica, segn la variable pierda o conserve su
valor al terminar el procedimiento. Aunque la variable esttica conserva su
valor al terminar el procedimiento, esta no puede utilizarse en otros
procedimientos.
b) Vigencia Limitada: La variable o constante se declara en la seccin
declaraciones de cualquier mdulo y se puede utilizar en cualquiera de los
procedimientos que se encuentran dentro del mdulo donde se cre el espacio
de memoria. Una variable o constante de alcance limitado creada en el mdulo
1, no se puede usar en el mdulo2; pero si en cualquier procedimiento del
mdulo 1.
c) Vigencia Pblica (Global): Este tipo de variable o constante se puede acceder
desde cualquier mdulo en cualquiera de sus procedimientos. Se dice que es
una variable o constante del proyecto en general, disponible para todos los
mdulos. En este caso, la declaracin se debe efectuar en la seccin
declaraciones de un mdulo estndar y con una sintaxis particular que
veremos mas adelante.
4.1.5. Declaracin de variables
Ahora veremos la sintaxis y las sentencias establecidas para efectuar los distintos
tipos de declaraciones de variables.
a) Variable local voltil: Se utiliza la sentencia Dim dentro de un procedimiento.
Private Sub Procedimiento()
Dim Edad As Byte
{Instrucciones}
End Sub
b) Variable local esttica: Se utiliza la sentencia Static dentro de un
procedimiento.
Private Sub Procedimiento()
Static Edad As Byte
{Instrucciones}
End Sub

53

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

c) Variable limitada: Se utiliza la sentencia Private en la seccin declaraciones de


cualquier mdulo.
Private Edad As Byte
Private Sub Procedimiento()
Dim VariableLocal As Tipo
{Instrucciones}
End Sub
d) Variable pblica: Se utiliza la sentencia Public en la seccin declaraciones, pero
de un mdulo estndar.
Public Edad As Byte
Private Sub Procedimiento()
Dim VariableLocal As Tipo
{Instrucciones}
End Sub
4.1.6. Declaracin de constantes (simblicas)
Para la declaracin de constantes simblicas (de usuario) se utiliza la sentencia
Const en todos los casos precedida del tipo de alcance si es limitada o pblica.
a) Constante local: (dentro de un procedimiento)
Const PI As Currency = 3.1416
b) Constante limitada: (en la seccin declaraciones de cualquier mdulo)
Private Const PI As Currency = 3.1416
c) Constante pblica: (en la seccin declaraciones de un mdulo estndar)
Public Const PI As Currency = 3.1416
4.1.7. Constantes intrnsecas
Las constantes intrnsecas se conocen tambin como constantes definidas por el
sistema y son proporcionadas por aplicaciones y controles de Visual Basic. Ejemplo
de estas constantes son las de color: vbBlack, vbBlue, vbCyan, vbGreen,
vbMagenta, vbRed, vbWhite y vbYellow. Las constantes intrnsecas no requieren
ningn tipo de declaracin. Para localizar, visualizar o copiar las constantes
incorporadas en Visual Basic, se puede acceder a la ventana Examinador de
objetos presionando F2 o mediante el men Ver | Examinador de objetos. Otras
aplicaciones que proporcionan bibliotecas de objetos, como Microsoft Excel y
Microsoft Project, tambin proporcionan una lista de constantes que se puede usar
con sus objetos, mtodos y propiedades. Tambin se definen constantes en la
biblioteca de objetos de cada control ActiveX.
ActiveX:

Es un conjunto de tecnologas que habilitan componentes de software para


interactuar en un ambiente de red, sin tener en cuenta el lenguaje en que
fueron creados. En el captulo 8, se ver con ms detalle.

54

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

Figura 4.1.- Dilogo Examinador de objetos.

4.1.8. Arreglos
Los arreglos permiten definir varios espacios de memoria del mismo tipo con un
solo identificador, pudiendo diferenciar cada espacio de memoria mediante
apuntadores o marcadores que se conocen como ndices. Los arreglos pueden ser
de una dimensin (vectores), cuando utilizan un solo ndice; o de varias
dimensiones (matrices), cuando utilizan varios ndices. Mediante los ndices se
puede acceder directamente a cada uno de los elementos de un arreglo. Para
declarar arreglos de una dimensin se usa:
Dim MiVector(Mximo) As tipo
Mximo es un valor que determina el mximo ndice del vector, y tomando en
cuenta que el ndice mnimo es cero, el nmero de elementos del vector ser igual
a Mximo + 1. Por ejemplo, suponga la siguiente declaracin:
Dim MiVector(4) As Long
De esta manera se han creado 5 espacios de memoria tipo Long identificados por:
Mivector (0), Mivector (1), Mivector (2), Mivector (3) y Mivector (4).
Tambin se puede especificar un rango de ndices que inicie distinto de cero:
Dim MiArreglo (Mnimo To Mximo) As tipo
Mnimo determina en ndice inferior e inicio del rango. Por ejemplo:
Dim Estudiantes (1 To 7) As String
Para declarar matrices, los rangos de cada dimensin se separan mediante comas:
Dim Nota (1 To 7, 1 To 5) As Single
Finalmente, para usar la variable de un arreglo, se debe especificar el ndice
correspondiente, tal como se muestra a continuacin, donde se asigna la nota de
la tercera evaluacin al quinto alumno:
55

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

Alumno = 5
Evaluacin = 3
Nota(Alumno, Evaluacin) = 20.5
4.1.9. Objetos y espacios de memoria
Cada uno de los objetos requiere espacios de memoria para variables y
constantes. Estos espacios de memoria no requieren declaracin, ya que los
mismos se crean automticamente con la creacin del objeto. Se puede decir que
estos espacios de memoria son de alcance pblico, ya que estn disponibles en
toda la aplicacin.
a) Identificadores:
Los espacios de memoria requeridos por un objeto se identifican mediante el
nombre del contenedor, el nombre del objeto y el nombre de la propiedad
separados por el operador punto.
b) Variables:
Cada propiedad del tipo lectura-escritura de un objeto se almacena en un
espacio de memoria variable. Por ejemplo la propiedad Enabled se almacena
en un espacio de memoria que se puede cambiar durante la ejecucin y su
tipo de dato Boolean.
c) Constantes:
Las propiedades de solo lectura son constantes, como la propiedad Moveable
que se puede leer pero no cambiar durante la ejecucin. Tambin, los valores
de ciertas propiedades son constantes del objeto. Por ejemplo, los valores de
la propiedad BorderStyle de un formulario pueden ser 0-None, 1-FixedSingle,
2-Sizable, etc.
d) Arreglos:
Distintos espacios de memoria, pero bajo un mismo nombre de objeto, es
posible mediante los arreglos de objetos. Las colecciones son parecidas a los
arreglos de objetos, las cuales se basan en crear varios objetos con el mismo
identificador. La manera de diferenciar un objeto de otro es mediante su
propiedad Index, ya que cada objeto dentro del arreglo posee propiedades
individuales. Los arreglos de objetos son unidimensionales y muchas veces se
tratan como vectores de objetos. Para referirse a la propiedad de un objeto
especfico, se hace referencia tanto al nombre del objeto como a su ndice. En
un arreglo de 3 botones de comando se desea deshabilitar slo al segundo
botn, y habilitar los otros dos botones:
Me.cmdBotn(0).Enabled = True
Me.cmdBotn(1).Enabled = False
Me.cmdBotn(2).Enabled = True
Utilizando colecciones o arreglos se optimiza el uso del sistema, ya que
consumen menos recursos que los controles creados independientemente. Los
objetos de un arreglo comparten el mismo procedimiento de evento, por lo
tanto no es necesario escribir cdigo separado por cada objeto del vector. Los
procedimientos de evento de un objeto en un arreglo, incluyen el argumento
Index, el cual permite identificar o diferenciar al objeto causante del evento.
56

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

Private Sub cmdBotn_Click(Index As Integer)


{Instrucciones}
End Sub
Como se puede observar, el evento clic incluye la variable Index. Si el usuario
hace clic en el primer, segundo o tercer botn, se ejecuta siempre este mismo
procedimiento de evento, pero la variable Index se carga con el valor de la
propiedad Index del objeto que desat el evento. Por ejemplo, si el usuario
hizo clic el cmdBotn (1), la variable Index se carga con el valor 1.
Puede crear un arreglo de controles estableciendo la propiedad Index del
objeto. Alternativamente, en forma grfica, puede seleccionar, copiar y pegar
el objeto, y el sistema solicitar si desea crear un arreglo de controles.
Seleccionando S, el control original adopta ndice 0, y el control copia se
crea con las mismas propiedades del control original y adopta ndice 1. En
adelante se pueden seguir copiando otros controles sin que el sistema solicite
confirmacin, y se incrementar automticamente el valor de la propiedad
Index. El nmero de elementos de una coleccin o arreglo, se invoca mediante
su propiedad Count. Por ejemplo, a continuacin se escribe en una caja de
lista el rtulo de todos los botones de comando de la coleccin cmdBotn.
Dim i As Integer
For i = 0 To Me.cmdBotn.Count - 1
Me.lstObjetos.AddItem Me.cmdBotn(i).Caption
Next i
En el ejemplo siguiente, se utilizan 15 botones de opcin para establecer el
color de fondo del formulario mediante la funcin de color QBColor.
Private Sub optColor_Click(Index As Integer)
Me.BackColor = QBColor(Index)
End Sub
4.2. Operadores
4.2.1. Aritmticos
Los operadores aritmticos permiten efectuar los clculos matemticos mostrados
a continuacin (ver Tabla 4.2).
Operacin
Suma o adicin
Resta o sustraccin, e Inversin de signo
Multiplicacin o producto
Divisin o fraccionamiento
Divisin entera
Mdulo o resto
Elevacin a potencia

Operador
+
*
/
\
Mod
^
Tabla 4.2.- Operadores aritmticos de Visual Basic

La divisin entera (\) devuelve el valor de la parte entera del resultado de una
divisin. Por ejemplo, 5\2 es igual a 2, ya que 5/2 es igual a 2,5. Por otra parte, el
operador Mod permite obtener el resto o residuo de una divisin. Para el caso 5
Mod 2, el resultado es igual a 1, ya que 2x2 es igual a 4 y falta 1 para 5.
57

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

4.2.2. Lgicos
Los operadores lgicos permiten obtener resultados lgicos (True o False)
mediante una comparacin bit a bit de dos expresiones. En Visual Basic, False
representa al nmero 0, y True a cualquier otro valor distinto de 0 (cero). La tabla
4.3 muestra los operadores lgicos de Visual Basic y sus resultados segn las
expresiones A y B.
A

True
False
True
False

True
True
False
False

A And
B
True
False
False
False

A Or B

Not(A)

Not(B)

True
True
True
False

False
True
False
True

False
False
True
True

A Xor
B
False
True
True
False

A Eqv
B
True
False
False
True

A Imp
B
True
True
False
True

Tabla 4.3.- Resultados de operaciones lgicas.

4.2.3. Relacionales
Los operadores relacionales se utilizan para comparar dos condiciones lgicas de
una expresin. Por lo general se utilizan en las estructuras de control que veremos
ms adelante. A continuacin (ver Tabla 4.4) se muestra los operadores
relacionales.
Operacin
Es igual a
Es distinto de
Es menor que
Es mayor que
Es menor o igual que
Es mayor o igual que
Es como (el patrn de cadena)

Operador
=
<>
<
>
<=
>=
Like
Tabla 4.4.- Operadores relacionales de Visual Basic.

El operador relacional igual a utiliza el mismo signo que el operador de


asignacin (=), y no se deben confundir. Considere el siguiente ejemplo, donde se
declara la variable Booleana EsDivisorCero, y se colocan las cajas de texto txtDiv,
txtDivisor y txtCoc, para el dividendo, divisor y cociente respectivamente de una
divisin en un formulario. Al hacer clic en el botn de comando cmdDividir, se
efecta el clculo. Despus de declarar la variable se asigna a la variable
EsDivisorCero el resultado de comparar el contenido de la caja de texto del divisor
con cero. Si se cumple que el divisor es igual a cero; a la variable se le asigna
True, de lo contrario se le asigna False. Luego en la estructura If, se evala el
valor de la variable EsDivisorCero, la cual, si es verdadera se ejecuta la sentencia
Exit Sub y termina el procedimiento. En este mismo punto, si la variable
EsDivisorCero es falso, se contina con la siguiente lnea que finalmente calcula la
divisin y se la asigna a la caja de texto cociente.
Private Sub cmdDividir_Click()
Dim EsDivisorCero As Boolean
EsDivisorCero = Me.txtDivisor.Text = 0
If EsDivisorCero Then Exit Sub
Me.txtCoc.Text = Me.txtDiv.Text / Me.txtDivisor.Text
End Sub
El operador Like compara una cadena de caracteres con un patrn, el cual incluye
los siguientes caracteres comodines:
58

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

a) : para representar un nico caracter alfanumrico,


b) *: para representar un conjunto de caracteres alfanumricos,
c) #: para representar un caracter numrico o dgito,
d) [A-Z]: para representar un rango de caracteres coincidentes
e) [A-Z]. para representar un rango de caracteres no coincidentes
Por ejemplo la variable P (de parecido) es tipo Boolean:
'Las siguentes P son True:
P = aAGVFa Like a*a
P = F Like [B-N]
P = F Like [A-D]
P = "BAT123" Like "B?T123"
'Las siguientes P son False:
P = aAAjFas Like *a
P = BT123 Like B?T123

'Comienza y termina con a


'La F est entre B y N
'La F no est entre A y D
'Entre B y T hay un caracter
'No termina con a sino con s
'No hay caracter entre B y T

4.2.4. Operadores especiales


a) Operador de asignacin (=): Se utiliza el signo igual a (=) para transferir un
Valor desde el lado derecho del signo, hasta el Identificador del lado izquierdo.
Identificador = Valor
Nota: No confundir la asignacin con la comparacin

b) Operador de concatenacin (&): Para unir dos cadena de texto en una sola, se
acostumbra a utilizar el operador &, aunque tambin se puede usar el operador
+. En el ejemplo siguiente, el ttulo de un formulario es el resultado de una
concatenacin. Si en la caja de texto se escribe el caracter 5, el ttulo del
formulario ser Ventana 5. Observe que si no se dejara el espacio antes de
la comilla de cierre, el ttulo resultante sera: Ventana5
Me.Caption = Ventana & Me.txtNumero.Text
c) Operador punto (.): Este operador se usa para relacionar un objeto con su
propiedad, mtodo u objeto dependiente. Tambin aplica para hacer
referencia a variables de tipo de datos definidos por el usuario. Cada vez que
se escribe un punto despus de la variable de objeto, se despliegan todos sus
miembros, permitiendo al usuario buscar y seleccionar el miembro requerido.
4.2.5. Precedencia de los operadores
La precedencia de los operadores se refiere al orden en que las operaciones
matemticas se efectan. En la tabla siguiente (ver Tabla 4.5) se muestra el orden
de precedencia de los operadores aritmticos, lgicos y relacionales.
Orden
1
2
3
4
5
6

Aritmticos
Potencia (^)
Inversin de signo (-)
Multiplicacin (*) y divisin (/)
Divisin entera (\)
Mdulo (Mod)
Suma (+) y Resta()

Lgicos
Igual a (=)
Distinto de (<>)
Menor que (<)
Mayor que (>)
Menor o igual a (<=)
Mayor o igual a (=>)

Relacionales
Negacin (Not)
Conjuncin (And)
Disyuncin (Or)
Exclusin (Xor)
Equivalencia (Eqv)
Implicacin (Imp)
Tabla 4.5.- Precedencia de operadores

59

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

Los operadores que se encuentran en la misma lnea, como suma y resta, y


multiplicacin y divisin, se ejecutan de izquierda a derecha. Para controlar la
precedencia de manera adecuada se usan parntesis. Por ejemplo:
Num
Num
Num
Num
Num
Num

=
=
=
=
=
=

4 + 3 * 2 ^
4 + 3 * 2 ^
(4 + 3) * 2
4 + (3 * 2)
(4 + 3 * 2)
(4 + 3 * 2)

2 - 1
(2 - 1)
^ 2 - 1
^ 2 - 1
^ 2 - 1
^ (2 1)

'A
'A
'A
'A
'A
'A

Num
Num
Num
Num
Num
Num

se
se
se
se
se
se

le
le
le
le
le
le

asigna
asigna
asigna
asigna
asigna
asigna

15
10
27
39
99
100

4.3. Estructuras de control


4.3.1. Programacin estructurada
Los lenguajes de programacin secuencial incluan un apuntador por cada lnea de
cdigo, de tal manera que era posible saltar un conjunto de lneas hacia delante o
hacia atrs indicndole al programa el nmero de lnea de salto explcitamente.
Los saltos de lnea hacia delante evitaban que se ejecutaran las lneas intermedias
(bifurcacin). Y los saltos hacia atrs permitan que las lneas intermedias se
ejecutaran varias veces (repeticin). Con la aparicin de los lenguajes
estructurados, se evita en lo posible hacer referencia explcita a las lneas de
cdigo, y en su lugar existen sintaxis con inicio y fin de estructuras. Las
estructuras de control proporcionan al programa la posibilidad de que sus lneas de
instruccin no se ejecuten en forma secuencial. Para esto, las estructuras de
control evalan resultados lgicos y toman decisiones para la ejecucin, o no
ejecucin, de las instrucciones controladas. Las estructuras de control permiten
controlar el flujo de ejecucin del programa. Si no se controla el flujo, las lneas de
instruccin se leern de arriba hacia abajo, y cada instruccin de izquierda a
derecha. La mayor parte del poder y utilidad de un lenguaje deriva de su
capacidad de cambiar el orden de las instrucciones mediante saltos y bucles.
4.3.2. Tipos de estructuras
Segn el tipo de salto de instrucciones, hacia delante o hacia atrs, se tienen
estructuras bifurcativas o repetitivas respectivamente.
a) Las estructuras bifurcativas: permiten agrupar conjuntos de instrucciones para
activar selectivamente su ejecucin. La seleccin de un conjunto de
instrucciones depende del resultado verdadero (True) de una expresin lgica
o relacional.
b) Las estructuras repetitivas: por su parte agrupan slo a un conjunto de
instrucciones que se pueden ejecutar varias veces. La ejecucin del conjunto
de instrucciones tambin es controlada por expresiones lgicas o condiciones.
4.3.3. Estructura bifurcativa If-Then-ElseIf-Else
La sentencia If permite crear una estructura de decisin que se cierra mediante
la sentencia End If; sin embargo, cuando se trata de slo una instruccin a
ejecutar, se puede obviar la sentencia de cierre End If y se escribe en una sola
lnea. Se pueden tomar decisiones mltiples mediante ElseIf que evala una
expresin por cada instruccin o conjunto de instrucciones que se desea ejecutar.
A continuacin se muestran algunos casos y sus diagramas de flujo.
60

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

a) Una sola lnea de instruccin por una expresin:


If expresin Then UnaInstruccin1 Else UnaInstruccin2
If
False

Expresin

Else

True
Then

End If
Figura 4.2.- Estructura If-Then-Else simple.

b) Varias lneas de instruccin para varias expresiones lgicas:


If expresin1 Then
Instrucciones si expresin1 es True
ElseIf expresin2 Then
Instrucciones si expresin2 es True
Else
Instrucciones si expresin1 y expresin2 son False
End If
If
False

Expresin 1

ElseIf

True
Then

False

Expresin 2

True
Then

ElseIf
False

Expresin N

Else

True
Then

End If
Figura 4.3.- Estructura If-Then-Else completa.

Observacin: En cada bloque de instrucciones tipo Then o Else se pueden anidar estructuras If
Then Else.

4.3.4. Estructura bifurcativa Select-Case


Para la bifurcacin con Select Case, la variable se evala de distintas maneras en
cada bloque Case, como se muestra en la figura 4.4. La expresin lgica (variables
y operadores relacionales) se construye internamente a diferencia de la estructura
If. Select Case se utiliza cuando la variable a evaluar es la misma en todos los
puntos de bifurcacin. La sintaxis es la siguiente, donde se evala a la variable A:
Select Case A
61

Visual Basic 6.0

Case 0
'Instrucciones
Case 3
'Instrucciones
Case 4, 7
'Instrucciones
Case 8 To 10
'Instrucciones
Case Is > 10
'Instrucciones
Case Else
'Instrucciones
End Select

Unidad 4.- Cdigo de Visual Basic

si A es 0
si A es 3
si A es 4 7
si A es 8, 9 10
si A es mayor a 10
para los otros casos

Select Case A
A=v1 A=v2
False
A >=v3 y A<=v4
False

False

A >vN

Case Else

True
Case v1, v2
True
Case v3 To v4

True
Case Is > vN

End Select
Figura 4.4.- Estructura Select Case

4.3.5. Estructura repetitiva For-Next


Se utiliza para repetir un conjunto de instrucciones un nmero determinado de
veces; es decir, cuando el usuario conoce exactamente cuantas veces repetir el
conjunto de instrucciones. Para esto, la estructura requiere una variable de Control
tipo entera que cambiar desde un valor de Inicio hasta un valor de Fin. La
variacin o Paso de un valor a otro se puede establecer como un nmero positivo
o negativo, de tal manera que la variable cambie en forma ascendente o
descendente con incrementos uniformes. La sintaxis para el bucle For-Next es la
siguiente:
For Control = Inicio To Fin Step Paso
'Instrucciones [Exit For]
Next Control
Cada vez que se ejecuta el ciclo For-Next, el sistema evala la relacin entre el
valor de la variable Control y Fin. Para valores positivos de Paso se tiene variacin
ascendente de Control, y siempre que Control sea menor o igual que Fin, el bucle
se repite, de lo contrario termina. Para valores negativos de Paso, la variacin es
descendente y el bucle se mantiene mientras Control sea mayor que Fin. Para
interrumpir un ciclo For-Next, independientemente del valor de Control, se puede
usar la palabra Exit For. Los ciclos For-Next anidados estn permitidos.
62

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

For Control
Control = Inicio

False

Control < Fin*Paso


True
Instrucciones del
Bucle

Next

Next Control

Control = Control + Paso


Figura 4.5.- Estructura For-Next.

4.3.6. Estructura repetitiva Do-Loop


Esta estructura repetitiva ejecuta un conjunto de instrucciones mientras evala
una condicin como verdadera o falsa. La evaluacin de la condicin se puede
efectuar al principio o al final de la estructura. Si la evaluacin es al principio de la
estructura, y no se cumple la condicin predeterminada, el bloque de instrucciones
no se ejecuta. Por otra parte, si la condicin se evala al final de la estructura, el
conjunto de instrucciones se ejecuta por lo menos una vez, aunque no se cumpla
la condicin. Existen dos tipos de sentencia Do-Loop, la sentencia While que
mantiene el ciclo mientras una condicin sea verdadera (True), y la sentencia Until
que mantiene el ciclo mientras la condicin es falsa (False). La sintaxis para cada
uno de los casos se muestra a continuacin:
a) Do While-Loop: Se evala al principio con While
Condicin=True
Do While Condicin
{Instrucciones} [Exit Do]
Loop
b) Do-Loop While: Se evala al final con While
Condicin=True
Do
{Instrucciones} [Exit Do]
Loop While Condicin
c) Do Until-Loop: Se evala al principio con Until
Condicin=Flase
Do Until Condicin
{Instrucciones} [Exit Do]
Loop
d) Do-Loop Until: Se evala al final con Until
Condicin=Flase
Do
{Instrucciones} [Exit Do]
Loop Until Condicin
63

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

Do While
False

Condicin?

Do

Do Until
True

Instrucciones

True
Instrucciones
Loop
Loop

Condicin?

Do

Instrucciones

False
Loop While

Condicin?

Instrucciones
True
Loop

False
Loop

Loop

Loop Until

Condicin?

False

True
Loop
Figura 4.6.- Estructuras Do-Loop.

Salir del Do: Se puede terminar el bucle Do-Loop mediante la sentencia Exit Do.

4.4. Procedimientos
4.4.1. Procedimientos y subrutinas
Una de las caractersticas que definen a un lenguaje de programacin estructurado
es que el cdigo se encuentra agrupado en bloques de instrucciones con
sentencias de inicio y final del bloque. Estos bloques de instrucciones reciben el
nombre de procedimientos. Podramos definir un procedimiento como una
secuencia de instrucciones para efectuar tareas especficas que se ejecutan como
una unidad que tiene nombre o identificador. La estructura bsica del cdigo de
Visual Basic es el procedimiento, de hecho todo el cdigo ejecutable esta
contenido en procedimientos.
A diferencia de las estructuras de control, los procedimientos no se pueden anidar
dentro de otros procedimientos. Sin embargo, se pueden crear pequeas
secciones de cdigo enmarcados dentro de un procedimiento. Estos pequeos
bloques se conocen como Subrutinas, las cuales carecen de nombre o
identificador, y en su lugar, se accede a ellos mediante etiquetas de cdigo. Las
etiquetas son marcadores de posicin y estn constituidas por un nombre seguido
de dos puntos en una lnea de cdigo libre dentro de un procedimiento. Las
subrutinas, en trminos de lenguajes de programacin en general, son porciones
lgicas de cdigo que se encargan de resolver un problema especfico. La
subrutina en trminos de Visual Basic se aplica a la porcin de cdigo que se
ejecuta dentro de un procedimiento mediante las sentencias GoTo, GoSub y
Return. Por esta razn, no se deben confundir los procedimientos con las
subrutinas en Visual Basic. Aunque las subrutinas estn disponibles, el analista
debe evitar al mximo su uso, ya que estas rompen con la definicin de Lenguaje
Estructurado. En su lugar, se debe procurar la creacin de procedimientos para
esas secciones de cdigo necesarias por otros procedimientos.
La sentencia GoTo produce un salto incondicional a una etiqueta de lnea, a partir
de la cual contina el control del programa. Por su parte, la sentencia GoSub
tambin lleva el control del programa a una etiqueta de lnea, pero mediante la
sentencia Return, el control del programa puede regresar a la lnea siguiente
desde la cual se efectu el llamado de la subrutina. A continuacin se muestra un
ejemplo del uso de subrutinas. En el ejemplo la instruccin GoTo Terminar es
imprescindible, ya que las etiquetas de lnea slo son marcadores de posicin y no
64

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

ejercen ningn control de programa, es decir, de ninguna manera especifican el fin


del procedimiento. Ms adelante veremos que la etiqueta Terminar y la
instruccin GoTo Terminar se pueden reemplazar por la sentencia Exit Sub ( Exit
Function), para salir del procedimiento.
Private Sub cmdBotn_Click()
'Instrucciones
GoSub SubRutina1
'Aqu retorna el control del programa
'Instrucciones
GoSub SubRutina2
'Aqu retorna de nuevo el control del programa
'Instrucciones
GoTo Terminar
'El control de programa nunca pasa por aqu
SubRutina1:
'Instrucciones de SubRutina1
Return
SubRutina2:
'Instrucciones de SubRutina2
Return
Terminar:
End Sub
4.4.2. Ventajas de los procedimientos
El desarrollo de una aplicacin implica el diseo y la estructuracin de las tareas
que debe efectuar la aplicacin. Los procedimientos constituyen una herramienta
que facilita este proceso, ya que 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. Bsicamente, los
procedimientos ofrecen cinco ventajas al programador, las cuales se exponen a
continuacin.
a) Organizacin del cdigo: al dividir el programa en pequeos mdulos, una sola
lnea de cdigo del procedimiento principal le permite al programador ejecutar
un conjunto de lneas de cdigo del procedimiento al que llama, sin necesidad
de llenar el procedimiento principal de lneas de cdigo difciles de interpretar
y manipular.
b) Simplifica problemas: un problema grande difcil de resolver se convierte en
varios problemas pequeos, pero fciles de resolver.
c) Deteccin de fallas: 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. Para efectos de
pruebas, cada procedimiento se puede ejecutar por separado.
d) Cdigo unitario: para las tareas que son comunes en varias secciones del
programa no es necesario repetir el cdigo, pues basta con crear un
procedimiento general para esas tareas y llamar al procedimiento desde las
distintas secciones del programa cada vez que sea requerido.
e) Reutilizacin del cdigo: Los procedimientos que se utilizan en un programa
pueden actuar como bloques de construccin de otros programas,
normalmente con pocas o ninguna modificacin.
65

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

4.4.3. Clasificacin de procedimientos


Visual Basic tiene tres tipos de procedimientos:
a) Procedimientos Sub:
Se caracterizan porque no devuelven un valor, y se conocen simplemente
como procedimientos. Existen dos tipos de procedimientos Sub.
Los procedimientos de evento, que se ejecutan como respuesta a un
evento y estn asociados a un objeto.
Los procedimientos generales, que son creados por el usuario y se les
debe llamar especficamente desde un procedimiento de evento para su
ejecucin. Los procedimientos generales se crean para proveer algn
servicio comn a otros procedimientos. 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.
b) Procedimientos Function:
A diferencia de los procedimientos Sub, los procedimientos Function devuelven
un valor y se les conoce como funciones. Las funciones pueden ser de dos
tipos:
Las funciones intrnsecas, que estn prediseadas o provistas por el
lenguaje como Sqr(), Cos(), Asc(), etc., las cuales devuelven el valor de
raz cuadrada, coseno, cdigo ASCII, etc., respectivamente.
Las funciones simblicas, creadas por el usuario cuando el lenguaje no
provea una funcin especfica o especial. Por ejemplo, se puede crear una
funcin que calcule la longitud del cateto opuesto, o hipotenusa, de un
tringulo rectngulo, dado el cateto adyacente y el ngulo.
c) Procedimientos Property:
Son procedimientos que pueden devolver y asignar valores, as como
establecer referencias a objetos. Se conocen como procedimientos de
propiedad y permiten ejecutar cdigo cuando se establece o se obtiene el
valor de una propiedad. Los procedimientos de propiedad permiten que un
objeto proteja y valide sus propios datos (propiedades), y se usan
mayormente a nivel de mdulos de clase. Visual Basic proporciona tres tipos
de procedimientos de propiedad:
Property Get, que devuelve el valor de una propiedad.
Property Let, que establece el valor de una propiedad.
Property Set, que establece el valor de una propiedad de objeto, es decir,
una propiedad que contiene una referencia a un objeto.
Cada uno de estos procedimientos de propiedad desempea un papel concreto
en la definicin de una propiedad. La propiedad tpica estar compuesta por
una pareja de procedimientos de propiedad: Property Get para obtener el
valor de la propiedad, y Property Let o Property Set para asignar un nuevo
valor. La razn por la que hay dos formas de procedimientos de propiedad (Let
y Set) para asignar un valor, es que Visual Basic permite la asignacin de
66

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

referencias de objeto a variables de objeto previamente declaradas con una


sintaxis especial:
Dim cmd As Object
Set cmd = New CommandButton
4.4.4. Alcance de procedimientos
El alcance se refiere al mbito donde el procedimiento est disponible. En cuanto a
su alcance, hay dos tipos de procedimientos
a) Procedimientos pblicos
b) Procedimientos privados
Los procedimientos pblicos estn disponibles desde cualquier parte del cdigo del
programa; es decir, se pueden llamar desde cualquier mdulo del programa.,
aunque el consumo de recursos es mayor.
En cambio, los procedimientos privados slo se pueden acceder desde el mdulo
donde fueron creados. Para definir un procedimiento pblico se utiliza la palabra
reservada Public y para definir un procedimiento privado se utiliza la palabra
reservada Private.
Observacin: Si no se especifica la palabra reservada (Public o Private), los procedimientos son
pblicos de forma predeterminada, lo que significa que se les puede llamar
desde cualquier parte de la aplicacin.

4.4.5. Trabajar con procedimientos


En esta parte trataremos la sintaxis requerida para manipular procedimientos Sub
y Function, ya sean pblicos o privados. Veremos slo los procedimientos
generales y las funciones simblicas, ya que los procedimientos de evento fueron
tratados en la unidad 2 y las funciones intrnsecas no requieren de creacin, ya
que estn provistas por el sistema. En la unidad 5 veremos con detalle algunas de
las funciones del sistema. Los procedimientos de propiedad no se tratarn en esta
gua de estudio.
a) Sintaxis para la creacin de procedimientos
Procedimiento tipo Sub privado (Procedimiento general privado)
Private Sub NombreProcedimiento([parmetros])
'{Instrucciones}
End Sub
Procedimiento tipo Sub pblico (Procedimiento general pblico)
Public Sub NombreProcedimiento([parmetros])
'{Instrucciones}
End Sub
Procedimiento tipo Function privado (Funcin simblica privada)
Private Function NombreFuncin([parmetros]) As TipoDeDato
'{Instrucciones}
NombreFuncin = ValorDevuelto
End Sub

67

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

Procedimiento tipo Function pblico (Funcin simblica pblica)


Public Function NombreFuncin([parmetros]) As TipoDeDato
'{Instrucciones}
NombreFuncin = ValorDevuelto
End Sub
Como se explic anteriormente, los procedimientos tipo Function, a diferencia
de los procedimientos tipo Sub, devuelven un valor. Observe que, justo antes
de terminar los procedimientos Function, se le asigna al nombre de la funcin
el valor que esta devuelve.
b) Llamar a procedimientos
Una vez que se han creado los procedimientos, estos se pueden invocar,
ejecutar efectuando un llamado al procedimiento por su nombre.
Los procedimientos Function se utilizan como se utilizara cualquier funcin del
sistema, por ejemplo la funcin QBColor, que es del sistema, se invoca de la
siguiente manera:
Me.BackColor = QBColor(7)
En forma general, las funciones simblicas se invocan como sigue:
Variable = NombreFuncin([Parmetros])
Respecto a los procedimientos tipo Sub, existen dos maneras de llamarlos.
Una forma es mediante la instruccin Call y el nombre del procedimiento.
Call NombreProcedimiento([Parmetros])
Y otra forma es directamente escribiendo el nombre del procedimiento.
NombreProcedimiento [Parmetros]
Observacin: De la forma directa, los parmetros no se colocan entre parntesis.
Recuerde:

Una vez que termina el procedimiento, el control del programa contina en la


lnea de cdigo siguiente a la que llam al procedimiento.

c) Salir de procedimientos
Hemos visto en las estructuras de control repetitivas, que no es necesario
esperar a que termine el ciclo para salir de la estructura, ya que esta puede
ser interrumpida mediante la sentencia Exit seguida del nombre de la
estructura. Para salir de un ciclo For se utiliza Exit For, por ejemplo.
Los procedimientos, como estructuras, tambin permiten su terminacin sin
necesidad de esperar alcanzar la lnea de cdigo donde se encuentra la
sentencia End Sub o End Function. Esto se logra mediante las sentencias Exit
Sub o Exit Function, segn sea el caso.
Private Sub NombreProcedimiento([Parmetros])
'{Instrucciones que se ejecutan}
Exit Sub
'Termina el procedimiento
'{Instrucciones que no se ejecutarn}
End Sub
68

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

d) Conservar el valor de las variables


Ya se ha dicho que las variables locales son las que se declaran dentro de un
procedimiento y que estas pueden ser individualmente voltiles o estticas. Se
puede hacer que todas las variables, declaradas dentro de un procedimiento,
sean estticas, simplemente anteponiendo a la declaracin del procedimiento
la palabra reservada Static como se muestra a continuacin para un
procedimiento tipo Sub.
Static Private Sub NombreProcedimiento([Parmetros])
'Declaracin de variables voltiles
'{Instrucciones}
End Sub
Aunque la declaracin de las variables sea voltil, estas se convierten en
estticas para el procedimiento de ejemplo anterior.
4.4.6. Transferencia de parmetros
En los ejemplos de sintaxis anteriores, hemos visto que se incluyen parntesis ()
en la declaracin de los procedimientos. Opcionalmente dentro de estos parntesis
se pueden colocar parmetros. Los parmetros o argumentos son variables,
separadas por coma, que se utilizan para pasar o transferir valores tiles a los
procedimientos cuando estos son llamados. Los valores de estas variables se
pueden pasar por valor o por referencia.
a) Transferencia por valor
Cuando la variable se pasa por valor, se enva al procedimiento una copia de la
variable y el procedimiento reserva un espacio de memoria nuevo, de tal
manera que los cambios en el valor de la variable nueva no afectan el valor de
la variable original de la lnea de cdigo donde se efectu la llamada. Para
pasar variables por valor se utiliza la palabra reservada ByVal en la declaracin
de parmetros.
Sub NombreProcedimiento (ByVal dato1 As tipo)
'{Instrucciones}
End Sub
b) Transferencia por referencia
Al pasar un argumento por referencia, tanto la variable del procedimiento,
como la variable original, comparten el mismo espacio de memoria; por esta
razn, al cambiar el valor de la variable dentro del procedimiento, la variable
original de la lnea de cdigo desde donde se hizo el llamado, adopta el nuevo
valor. Para pasar variables por valor se utiliza la palabra reservada ByRef.
Sub NombreProcedimiento (ByRef dato2 As tipo)
'{Instrucciones}
End Sub
En el ejemplo de sintaxis, dato1 es el nombre de una variable nueva, y
dato2 es la misma variable de la instruccin llamadora, slo que con otro
nombre. Por defecto, si no se usa la palabra reservada (ByVal o ByRef), todos
los datos se envan por referencia. En el siguiente ejemplo, dato2 se
transfiere por referencia.
69

Visual Basic 6.0

Unidad 4.- Cdigo de Visual Basic

Sub NombreProcedimiento (dato2 As tipo)


'{Instrucciones}
End Sub
El siguiente ejemplo muestra como funciona la transferencia de parmetros:
Private Sub
Dim X As
X=5: Y=7
Duplicar
'X sigue
End Sub

Botn_Click()
Integer, Dim Y As Integer
X, Y 'Llama al procedimiento con 5 y 7
siendo igual a 5, pero Y cambia a 14

Sub Duplicar(ByVal D1 As Integer, ByRef D2 As Integer)


'D1 se carga con 5 y D2 con 7
D1 = D1 * 2 'D1 cambia a 10 de 5*2=10
D2 = D2 * 2 'D2 cambia a 14 de 7*2=14
End Sub
'Retorna a Botn_Click
4.4.7. Ejemplo completo de la unidad

70

Visual Basic 6.0

Unidad 5.- Funciones del intrnseca

Unidad 5
Funciones intrnsecas
El entusiasmo es la madre del esfuerzo, y sin este nunca se logr nada importante
.- Emerson

5.1. Funciones en general


5.1.1. Expresiones
La expresin se define como cualquier combinacin de variables, constantes,
operadores, funciones y nombres de campos, controles y propiedades que se
evala como un nico valor. La evaluacin consiste en la asignacin de un valor a
un espacio de memoria, es decir a una variable. As, una instruccin de asignacin
es una expresin.
Me.txtPeso.Text = Me.txtMasa.Text * 10
5.1.2. Funciones
Una funcin es un clculo preprogramado que se puede realizar bajo peticin
desde cualquier lugar de un programa. Puesto que una funcin adopta uno o ms
argumentos y devuelve un nico valor, esta se puede incluir en una expresin. Por
ejemplo, se puede definir la funcin Licuar que permite el uso de una licuadora
para mltiples aplicaciones. Para preparar una Merengada fra, se debe escribir la
siguiente expresin:
Merengada = Hielo + Licuar(Leche, Fruta, Azcar, Vainilla)
Leche
Fruta
Azcar
Vainilla

Licuar

Merengada caliente

Figura 5.1.- Funcin supuesta Licuar

Observe que la funcin Licuar no devuelve Merengada fra y se debe agregar Hielo
en una expresin completa. La merengada obtenida depender del tipo e fruta, y
cantidades de leche, azcar y vainilla. Se dice que estos ltimos son las variables
independientes de la funcin, mientras que la merengada es la variable
dependiente. En general todas las funciones se caracterizan por una serie de
valores de entrada conocidos como argumentos o variables independientes, y slo
un valor de salida conocido como resultado o variable dependiente.

71

Visual Basic 6.0

Unidad 5.- Funciones del intrnseca

A
B

Funcin

Y=Funcin(A, B, , C)

C
Figura 5.2.- Funcin en general

Por ejemplo, y = Sin(x) es una expresin formada por la funcin Sin, un


argumento x como valor de un ngulo, y el resultado (clculo del seno de x) es
asignado a y.
x

Sin

y
Figura 5.3.- Funcin Seno.

Para facilitar el estudio de las funciones, ests se han clasificado segn su relacin
con cadenas, nmeros, fechas, objetos o archivos.
5.1.3. Instrucciones
Mientras que las funciones son operaciones sobre ciertos argumentos para obtener
o devolver un valor, las instrucciones consisten en rdenes para el sistema, y no
devuelven valor alguno. Las instrucciones prescinden del par de parntesis que
caracterizan a todas las funciones. Podramos comparar a las instrucciones con
procedimientos Sub intrnsecos del sistema. Segn el ejemplo, la funcin Licuar
tambin podra utilizarse como una instruccin, en lugar que como una funcin, y
en este caso no existe devolucin de un valor, sino que se ejecuta una orden y se
prescinde del par de parntesis como se muestra a continuacin:
Reunir ingredientes
Licuar Leche, Fruta, Azcar, Vainilla
Agregar Hielo
En Visual Basic existen muchas funciones que se pueden utilizar como
instrucciones. El trmino instrucciones ha sido utilizado en captulos anteriores
para hacer referencia a lneas de cdigo, y en su lugar se ha utilizado el trmino
sentencias. Las instrucciones tambin se conocen como sentencias o comandos.
5.2. Funciones de cadena
5.2.1. Tratamiento de cadenas
Para el estudio de las funciones que admiten como argumento, o devuelven como
valor, cadenas de caracteres, es necesario conocer lo siguiente:
a) Las cadenas de caracteres se declaran tipo String. Por ejemplo, declaremos la
variable Cadena como una cadena de longitud variable.
Dim Cadena As String
b) Los valores de cadenas de caracteres se delimitan mediante comillas dobles.
Por ejemplo, asignemos a la variable Cadena el valor Visual Basic.
Cadena = Visual Basic

72

Visual Basic 6.0

Unidad 5.- Funciones del intrnseca

c) Cada caracter ocupa una posicin comenzando desde la izquierda de la


cadena. Por ejemplo, en la posicin 8 de la variable Cadena se encuentra el
caracter B.
V

9 10 11 12

Figura 5.4.- Posiciones de una cadena de caracteres

d) La longitud de una cadena es la cantidad de caracteres de la cadena. Por


ejemplo, la variable Cadena tiene una longitud de 12 caracteres. Observe que
el espacio entre las palabras, se cuenta como un caracter que ocupa la
posicin 7.
e) Las variables declaradas como cadenas de longitud fija truncan los caracteres
sobrantes a la derecha, o rellenan con espacios en blanco, para completar la
cantidad de caracteres especificados.
Dim K As String * 5
K = Visual Basic
K = Pan

'K se carga con Visua (5 caract.)


'K rellena con 2 espacios Pan

5.2.2. Cambiar a maysculas y minsculas


Para convertir todos los caracteres de una cadena a maysculas o minsculas se
usa UCase o LCase respectivamente. Por ejemplo, la siguiente instruccin presenta
en la caja de texto txtCadena la palabra VISUAL BASIC
Me.txtCadena.Text = UCase(Cadena)
Mientras que la siguiente instruccin presenta la palabra visual basic
Me.txtCadena.Text = LCase(Cadena)
5.2.3. Determinar la longitud de una cadena
Se puede determinar la cantidad de caracteres contenidos en una cadena,
incluyendo los espacios, mediante la funcin Len. La siguiente instruccin presenta
en la caja de texto txtCadena el valor 8.
Me.txtNmero.Text = Len(Cadena)
5.2.4. Buscar caracteres dentro de una cadena
Para determinar la posicin de caracteres dentro de una cadena se usa InStr. La
sintaxis general se muestra a continuacin.
InStr([Inicio, ]Cadena, Buscado)
Inicio es un entero opcional que representa la posicin inicial de bsqueda, y si
se obvia la bsqueda comienza desde la posicin 1. Cadena es la cadena
examinada, y Buscado son los caracteres buscados. Si los caracteres buscados
no se encuentran en la cadena, InStr devuelve el valor 0. Vea los ejemplos
siguientes:
Buscar la posicin de Ba en la variable Cadena. Recuerde que Cadena = Visual
Basic. Se presenta el valor 8 en la caja de texto.
73

Visual Basic 6.0

Unidad 5.- Funciones del intrnseca

Me.txtNmero.Text = InStr(Cadena, Ba)


Buscar la posicin de es en Cadena. Se presenta el valor 0 en la caja de texto,
indicando que no encontr la secuencia es.
Me.txtNmero.Text = InStr(Cadena, es)
Buscar la posicin de a en Cadena. Devuelve el valor 5 en la caja de texto.
Me.txtNmero.Text = InStr(Cadena, a)
Buscar la posicin de a en Cadena, pero desde la posicin 6. En este caso,
devuelve el valor 9 en la caja de texto.
Me.txtNmero.Text = InStr(6, Cadena, a)
5.2.5. Extraer e insertar caracteres a una cadena
Se pueden extraer tantos caracteres como desee del principio de la cadena, del
final de la cadena o de cualquier parte de la cadena, utilizando respectivamente
las funciones: Left, Right y Mid. La sintaxis general se muestra a continuacin.
Left(Cadena, Longitud)
Right(Cadena, Longitud)
Mid(Cadena, Inicio, Longitud)
Longitud es un entero que define el nmero de caracteres que se extraern, e
Inicio es la posicin inicial de extraccin dentro de la cadena. Veamos los
siguientes ejemplos:
Extraer los primeros seis caracteres a la izquierda de Cadena.
Me.txtCadena.Text = Left(Cadena, 6)

'Devuelve Visual

Extraer los ltimos cinco caracteres a la derecha de Cadena.


Me.txtCadena.Text = Right(Cadena, 5) 'Devuelve Basic
Extraer los siete caracteres centrales de Cadena desde la posicin 3.
Me.txtCadena.Text = Mid(Cadena, 3, 7)'Devuelve sual Ba
Para insertar caracteres en una cadena se usa la funcin Mid de la siguiente
manera:
Mid(Cadena, 8, 6) = Studio
Me.txtCadena.Text = Cadena
'Devuelve Visual Studio
Se lee como asignar a la variable Cadena los 6 caracteres de Studio desde la
posicin 8. As, la variable Cadena que contena el valor Visual Basic, adopta
como nuevo valor Visual Studio, debido a la insercin, desde la posicin ocho, de
los seis caracteres Studio.
5.2.6. Tratamiento de espacios en blanco
En algunos casos, nos podemos encontrar con cadenas que contienen espacios en
blanco innecesarios. Para eliminar los espacios al principio de la una cadena, se
74

Visual Basic 6.0

Unidad 5.- Funciones del intrnseca

usa Ltrim, para eliminar al final de la cadena se usa Rtrim, y para eliminar
cualquier espacio al principio y al final de la cadena, se usa simplemente Trim.
En el siguiente ejemplo se muestran estos tres casos:
Cadena = Visual Basic
txtCadena.Text = Ltrim(Cadena) 'Devuelve Visual Basic
txtCadena.Text = Rtrim(Cadena) 'Devuelve Visual Basic
txtCadena.Text = Trim(Cadena) 'Devuelve Visual Basic
Observe:

No se eliminan los espacios intermedios; es decir, la separacin entre palabras


de una frase.

Respecto a espacios en blanco, tambin existe la funcin Space, la cual permite


crear cadenas de caracteres con slo espacios en blanco. En el siguiente ejemplo
se crea una cadena de 7 espacios en blanco:
txtCadena.Text = Space(7)
5.2.7. Convertir a nmero y a cadena
Una cadena se puede convertir a nmero usando Val, y un nmero se puede
convertir a cadena de caracteres usando Str. La funcin Str agrega un espacio en
blanco al principio de la cadena. La funcin Val devuelve cero si su argumento es
no numrico.
Dim Nmero As Single
Dim Cadena As String
Nmero = 10.24
Cadena = Str(Nmero)
Nmero = Val(Cadena)
Cadena = A
Nmero = Val(Cadena)

'Devuelve la cadena 10.24


'Devuelve el nmero 10,24
'Devuelve el nmero 0

5.2.8. Obtener cadenas de caracteres con formato


La funcin Format permite controlar la forma en que aparecern los resultados
numricos, de fecha o de carcter. La sintaxis general es la siguiente:
Format(Nmero|Fecha|Cadena, Formato)
Esta funcin acepta nmeros, fechas o cadenas de caracteres. El parmetro
Formato permite definir la forma en que se devuelve el resultado de texto, y
puede ser una constante de Visual Basic o un conjunto de caracteres especiales.
a) Formatos numricos: para la presentacin de valores numricos se pueden
utilizar constantes intrnsecas (ver Tabla 5.1) o smbolos especiales (ver Tabla
5.2) para definir el formato.
Constante
General
Number
Currency
Fixed
Standard
Percent

Descripcin del formato


El nmero tal y como es, sin separadores de millar.
Separador de millar; muestra dos dgitos a la derecha del separador decimal.
Al menos un dgito a la izquierda y dos dgitos a la derecha del separador decimal.
Separador de millar, al menos un dgito a la izquierda y dos a la derecha del separador
decimal.
El nmero multiplicado por 100 con un signo de porcentaje (%) a la derecha.
75

Visual Basic 6.0

Unidad 5.- Funciones del intrnseca

Constante
Scientific
Yes/No
True/False
On/Off

Descripcin del formato


Utiliza la notacin cientfica estndar.
Muestra No si el nmero es 0; de lo contrario, muestra Yes.
Muestra False si el nmero es 0; de lo contrario, muestra True.
Muestra Off si el nmero es 0; de lo contrario, muestra On.

Smbolo

Descripcin del formato


Muestra 0 as no exista dgito en esa posicin
Muestra el dgito slo si existe en una posicin
Lugar donde aparecer coma decimal.
Lugar donde aparecer separado de miles.
Multiplica por 100 el nmero y muestra el smbolo %.
Muestra el nmero en notacin cientfica.

Tabla 5.1.- Constantes de formato para nmeros

0
#
,
.
%
E-,E+

Tabla 5.2.- Smbolos especiales de formato para nmeros

Veamos los siguientes ejemplos:


Cadena
Cadena
Cadena
Cadena
Cadena
Cadena
Cadena
Cadena

=
=
=
=
=
=
=
=

Format(1980.326,
Format(1980.326,
Format(1980.326,
Format(1980.326,
Format(1980.326,
Format(1980.326,
Format(1980.326,
Format(1980.326,

Fixed)
Standar)
Percent)
Yes/No)
00000)
#.000.#)
#.0)
#%)

'Devuelve
'Devuelve
'Devuelve
'Devuelve
'Devuelve
'Devuelve
'Devuelve
'Devuelve

1980,33
1.980,33
198032,6%
S
01980
1.980,3
980,3
198033%

b) Formatos de fecha: al igual que para valores numricos, Visual Basic provee
constantes intrnsecas (ver Tabla 5.3) y smbolos especiales (ver Tabla 5.4)
para la presentacin de valores de fecha y hora.
Constante
General Date
Long Date
Mdium Date
Short Date
Long Time
Mdium Time
Short Time

Descripcin
Muestra la fecha y hora si estn disponibles en la expresin.
Muestra da de la semana, da del mes, el mes y el ao.
Muestra da del mes, el mes en tres letras y el ao.
Muestra da del mes, el mes y el ao
Muestra la hora, minutos y segundos con indicacin AM/PM
Muestra la hora y minutos con indicacin AM/PM
Slo muestra hora y minutos
Tabla 5.3.- Constantes de formato para fechas y horas

Smbolo
:
/
d
dd
ddd
dddd
w
ww
m
mm
mmm
mmmm
q
y
yy
yyyy

Descripcin
Separador de hora, minutos y segundos
Separador de da, mes y ao.
Da del mes 1-31
Da del mes 01-31
Da de la semana Dom-Sb
Da de la semana Domingo-Sbado
Da de la semana 1-7 (Dom = 1)
Semana del ao 1-54
Mes del ao 1-12
Mes del ao 01-12
Mes del ao Ene-Dic
Mes del ao Enero-Diciembre
Cuatrimestre del ao 1-4
Da del ao 1-366
Ao en dos dgitos 00-99
Ao en cuatro dgitos 0100-9999
76

Visual Basic 6.0

Unidad 5.- Funciones del intrnseca

Smbolo
h
hh
n
nn
s
ss
AM/PM
am/pm

Descripcin
Hora del da 0-23
Hora del da 00-23
Minuto de la hora 0-59
Minuto de la hora 00-59
Segundo transcurrido 0-59
Segundo transcurrido 00-59
Muestra AM o PM segn corresponda
Muestra am o pm segn corresponda
Tabla 5.4.- Smbolos para crear formatos de fecha y hora

Veamos los ejemplos siguientes:


Cadena
Cadena
Cadena
Cadena
Cadena
Cadena
Cadena
Cadena

=
=
=
=
=
=
=
=

Format(#7/5/00#, Mdium Date)


Format(#7/5/00#, Short Date)
Format(#7/5/72#, ddd/mm/yyyy)
Format(#20:05:12#, Mdium Time)
Format(#20:05:12#, Long Time)
Format(#20:05:12#, HH:nn)
Format(#20:05:12#, HH:n)
Format(#20:05:12#, HH:n:s)

'07/May/2003
'07/05/03
'Dom/05/1972
'08:05 PM
'08:05:54 PM
'20:05
'20:5
'20:5:12

c) Formatos de cadena: mediante los cuales la funcin Format se puede usar


para la presentacin de maysculas y minsculas segn los caracteres
especiales > y < sin necesidad de cambiar el valor de la cadena de
caracteres mediante las funciones UCase y LCase. Format no tiene funciones
de conversin, es slo para presentacin.
Cadena = Format(Simn Bolvar, >)
Cadena = Format(Simn Bolvar, <)

'SIMN BOLVAR
'simn bolvar

5.2.9. Mapa de caracteres


Para obtener el cdigo ASCII de un carcter, se usa la funcin Asc. Para obtener el
carcter dado un cdigo ASCII se usa la funcin Chr. En el cdigo ASCII (ver Tabla
5.5) a cada valor numrico le corresponde un caracter. El smbolo indica que
Windows no lo admite para la mayora de las fuentes predefinidas. La funcin Chr
de cdigos ASCII 8, 9, 10 y 13 no devuelve caracter, sino que se traducen en
borrado hacia atrs, tabulacin, avance de lnea y retorno de carro,
respectivamente.
Asc
0
1
2
3
4
5
6
7
8
9
10
11
12

Chr
Nulo

[BACKSPAC
E]
[TAB]
[AV. LINE]

Asc
32
33
34
35
36
37
38
39

Chr
[SPACE]
!
"
#
$
%
&
'

Asc
64
65
66
67
68
69
70
71

Chr
@
A
B
C
D
E
F
G

Asc
96
97
98
99
100
101
102
103

Chr
`
a
b
c
d
e
f
g

40

72

104

41
42
43
44

)
*
+
,

73
74
75
76

I
J
K
L

105
106
107
108

i
j
k
l

77

Visual Basic 6.0

Asc
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

Unidad 5.- Funciones del intrnseca

Chr
[ENTER]

Asc
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

Chr
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?

Asc
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

Chr
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_

Asc
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127

Chr
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~

Tabla 5.5.- Juego de caracteres ASCII de 0 a 127

5.3. Funciones numricas


5.3.1. Funciones matemticas
Visual Basic provee todas las funciones necesarias para clculos directos o para la
construccin de otras funciones matemticas (ver Tabla 5.6).
Funcin
Sgn(nmero)
Log(nmero)
Exp(nmero)
Sqr(nmero)
Atn(nmero)
Cos(ngulo)
Sin(ngulo)
Tan(ngulo)
Abs(nmero)

Descripcin
Signo de un nmero
Logaritmo natural de un nmero
Potencia neperiana e
Raz cuadrada de un nmero
Trigonometra Arco tangente de un tringulo
Trigonometra Coseno del un ngulo en radianes
Trigonometra Seno de un ngulo en radianes
Trigonometra Tangente de un ngulo en radianes
Valor absoluto de un nmero
Tabla 5.6.- Funciones matemticas

5.3.2. Funciones de ajuste decimal


Mientras que las funciones Fix e Int devuelven la parte entera de un nmero, la
funcin Round redondea a una cantidad de decimales. La funcin Fix trunca la
parte decimal de un nmero de manera indistinta. Para valores negativos la
funcin Int ajusta al valor entero inmediato superior. Para valores positivos Fix e
Int operan de la misma manera.
Funcin
Fix(nmero)
Int(nmero)
Round(nmero,
n)

Devuelve
Parte entera superior negativa de un nmero
Parte entera inferior negativa de un nmero
Nmero redondeado de un nmero con n decimales
Tabla 5.7.- Funciones de ajuste numrico

Veamos los siguientes ejemplos:


78

Visual Basic 6.0

Unidad 5.- Funciones del intrnseca

Nmero
Nmero
Nmero
Nmero
Nmero
Nmero
Nmero
Nmero
Nmero
Nmero
Nmero
Nmero
Nmero

=
=
=
=
=
=
=
=
=
=
=
=
=

Fix(99,8)
Fix(-99,8)
Fix(-99,2)
Int(99,8)
Int(-99,8)
Int(-99,2)
Round(99.8,0)
Round(-99.8,0)
Round(-99.2,0)
Round(99.56,0)
Round(99.56,1)
Round(99.56,2)
Round(99.56,3)

'Devuelve
99
'Devuelve -99
'Devuelve -99
'Devuelve
99
'Devuelve -100
'Devuelve -100
'Devuelve 100
'Devuelve -100
'Devuelve -99
'Devuelve 100
'Devuelve
99.6
'Devuelve
99.56
'Devuelve
99.560

5.3.3. Funcin de nmero aleatorio


La funcin Rnd devuelve un nmero aleatorio menor que 1, pero mayor o igual a
cero. Rnd se usa en conjuncin con la instruccin Randomize, la cual inicializa el
generador de nmeros aleatorios para devolver valores entre 0 y 1. Para obtener
un rango de nmeros aleatorios enteros entre un lmite Inferior y Superior se
puede aplicar la siguiente frmula o procedimiento:
Randomize
'Instruccin que inicializa Rnd
Aleatorio = Int((Superior-Inferior + 1)*Rnd + Inferior)
5.4. Funciones de fecha y hora
5.4.1. Obtener la fecha y hora del sistema
La funcin Date devuelve la fecha del sistema, Time devuelve la hora y Now
devuelve tanto la fecha como la hora del sistema. A menudo se utiliza el evento
del control Timer para mostrar fechas y horas.
En el ejemplo siguiente suponga que la fecha del sistema es 12 de octubre del ao
2000 y son las 6:45 pm.
Private Sub Timer1_Timer()
lblFecha.Caption = Date 'Devuelve #12/10/2000#
lblHora.Caption = Time 'Devuelve #18:45:00#
lblHoy.Caption = Now
'Devuelve #12/10/2000 18:45:00#
End Sub
En combinacin con la funcin Format se pueden establecer los campos de fecha y
hora que se desean visualizar.
5.4.2. Establecer la fecha y hora del sistema
Para establecer la fecha y hora del sistema se utilizan Date y Time como
instrucciones.
Date = #12/10/2003#
Time = #18:10:00#
5.4.3. Realizar clculos con fechas y horas
a) Calcular una fecha dado un intervalo de tiempo
79

Visual Basic 6.0

Unidad 5.- Funciones del intrnseca

Se pueden calcular fechas futuras o pasadas a una fecha de referencia,


agregando o sustrayendo intervalos de tiempo en das, meses, aos, horas,
segundos, etc., a la fecha de referencia. Cuando utilizamos el trmino
fechas, nos referimos a instantes de tiempo; o sea, pueden ser desde
segundos hasta aos. Para obtener una fecha dado un intervalo de tiempo, se
usa la funcin DateAdd:
FechaFutura = DateAdd(Intervalo, Nmero, FechaRef)
FechaPasada = DateAdd(Intervalo,-Nmero, FechaRef)
El argumento Intervalo es una cadena de caracteres que indica el tipo de
intervalo de tiempo para el clculo (ver Tabla 5.8); es decir, si el clculo se
efecta en das, meses, horas, etc.
Intervalo
Yyyy
Q
M
Y
D
W
Ww
H
N
S

Descripcin
Clculo en Aos
Clculo en Trimestres
Clculo en Meses
Clculo en Das
Clculo en Das
Clculo de Das de la semana
Clculo en Semanas
Clculo en Horas
Clculo en Minutos
Clculo en Segundos
Tabla 5.8.- Valores del parmetro Intervalo de funciones de fecha y hora

El argumento Nmero es un nmero entero que representa el nmero de


intervalos de tiempo seleccionado con Intervalo. Por ejemplo, para calcular
la fecha de vencimiento de facturas a treinta das, se puede escribir el cdigo:
Dim Fecha As Date
Fecha = FechaDeFactura
FechaVencimineto = DateAdd(d, 30, Fecha)
Para conocer fechas pasadas, suponga que desea conocer la fecha de una
mercanca la cual tiene 10 meses en almacn:
FechaArribo = DateAdd(m, -10, Date)
Observe que se recurre a la funcin Date para obtener la fecha actual del
sistema, y as utilizarla como argumento.
b) Calcular el intervalo de tiempo entre dos fechas
Este tipo de clculo es muy til para determinar la duracin, el retardo o la
cantidad de tiempo transcurrido entre dos fechas u horas. Para este efecto se
usa la funcin DateDiff:
Duracin = DateDiff(Intervalo, Anterior, Posterior)
El parmetro Intervalo se regir por la tabla 5.8 ya que tambin es una
cadena de caracteres que indica el tipo de intervalo de tiempo. El argumento
Anterior es un literal de fecha correspondiente a un momento anterior al
valor de fecha del argumento Posterior. Si el argumento Anterior
corresponde a un momento posterior, la funcin DateDiff devuelve un nmero
80

Visual Basic 6.0

Unidad 5.- Funciones del intrnseca

negativo y no se produce error. Por ejemplo, para calcular la cantidad de das


de vida, se puede usar la siguiente lnea de cdigo:
Das = DateDiff(d, FechaNacimiento, Date)
La variable FechaNacimiento contiene la fecha de nacimiento, y Date es la
funcin vista anteriormente que devuelve la fecha actual del sistema. Veamos
otros ejemplos, donde se define la variable D como entero y se aplica la
funcin DateDiff a fechas establecidas:
Dim
D =
D =
D =
D =
D =

D As Integer
DateDiff(yyyy, #31/12/1999#, #31/12/2000#)
DateDiff(m, #31/12/1999#, #31/12/2000#)
DateDiff(w, #31/12/1999#, #31/12/2000#)
DateDiff(ww, #31/12/1999#, #31/12/2000#)
DateDiff(d, #31/12/1999#, #31/12/2000#)

'1 ao
'12 meses
'52 das
'53 sem.
'366 das

Observacin: A diferencia de la funcin DateAdd, que devuelve una fecha, DateDiff devuelve
un nmero entero.

c) Calcular parte de una fecha


En algunos casos es necesario conocer el valor numrico de slo parte de una
fecha. Utilizando la funcin DatePart se puede calcular el nmero del da, mes,
ao, trimestre o semana de una fecha, segn el valor del argumento
Intervalo:
ParteDeFecha = DatePart(Intervalo, Fecha)
Veamos los siguientes ejemplos, donde una vez ms se ha definido la variable
D como entero para albergar el resultado de DatePart:
Dim
D =
D =
D =
D =
D =

D As Integer
DatePart(yyyy, #31/12/1999#)
DatePart(m, #31/12/1999#)
DatePart(w, #31/12/1999#)
DatePart(ww, #31/12/1999#)
DatePart(d, #31/12/1999#)

'Devuelve
'Devuelve
'Devuelve
'Devuelve
'Devuelve

1999
12
6 (viernes)
53
31

Adems de DatePart, Visual Basic dispone de un conjunto de funciones


destinadas a obtener parte de una fecha u hora, sin necesidad del parmetro
Intervalo. Estas funciones se detallan en la tabla siguiente:
Funcin
Year(fecha)
Month(fecha)
Day(fecha)
WeekDay(fecha)
Hour(hora)
Minute(hora)
Second(hora)
WeekDayName(fecha)

Devuelve la parte de fecha


Ao de 100 a 9999
Mes de 1 a 12
Da de 1 a 31
Da de 1 a 7
Hora de 0 a 23
Minuto de 0 a 59
Segundo de 0 a 59
Da de Lunes a Domingo
Tabla 5.9.- Funciones que devuelven parte de una fecha

81

Visual Basic 6.0

5.4.4.

Unidad 5.- Funciones del intrnseca

Devolver fechas y horas

Existen funciones para convertir nmeros o cadenas en fechas. Las funciones


DateSerial y TimeSerial conforman una fecha a partir de valores numricos enteros
correspondientes a da, mes, ao, hora, minuto y segundo.
Fecha = DateSerial(Da, Mes, Ao)
Hora = TimeSerial(Hora, Min, Seg)
Por su parte, las funciones DateValue y TimeValue convierten una cadena con
formato de fecha y hora a un tipo de dato Date.
Fecha = DateValue(Cadena)
Hora = TimeValue(Cadena)
Veamos los ejemplos:
Dim Fecha As Date, Hora As Date
Fecha = DateSerial(12, 10, 3)
Fecha = DateValue(12/10/2003)
Hora = TimeSerial(12, 10, 3)
Hora = TimeValue(12:10:3)

'Devuelve
'Devuelve
'Devuelve
'Devuelve

#12/10/2003#
#12/10/2003#
#12:10:03#
#12:10:03#

5.4.5. Cronometrar procesos


Los procesos en Visual Basic se pueden cronometrar utilizando una funcin que
devuelve el nmero de segundos del sistema transcurridos desde la medianoche.
Esta funcin se llama Timer y se utiliza segn la siguiente estructura:
Dim Inicio, Fin As Long
Dim DuracinDelProceso As Integer
Inicio = Timer
{Proceso}
Fin = Timer
DuracinDelProceso = Fin Inicio
La funcin Timer tambin suele usarse para hacer una pausa temporal en la
secuencia del programa. Para este caso es imperante utilizar la instruccin
DoEvents, mediante la cual, durante la pausa causada en un ciclo, el programa no
acapara los recursos del sistema. Veamos esto con un ejemplo donde se crea un
retardo de 20 segundos.
Dim Inicio As Long
Inicio = Timer
Do While Timer < (Inicio + 20)
DoEvents
Loop
5.5. Funciones de Objetos
5.5.1. Cuadro de dilogo de entrada InputBox
La funcin InputBox presenta un cuadro de dilogo (ver Figura 5.5) con una
leyenda, dos botones de comando (Aceptar, Cancelar) y una Caja de texto. Si el
usuario hace clic en el botn Aceptar, la funcin devuelve el contenido de la Caja
de Texto como un valor tipo cadena, y si el usuario hace clic sobre el botn
82

Visual Basic 6.0

Unidad 5.- Funciones del intrnseca

Cancelar, la funcin devuelve una cadena vaca (). La sintaxis general es la


siguiente:
InputBox(Leyenda, Ttulo, Texto, X, Y)

Figura 5.5.- Cuadro de dilogo InputBox

Los argumentos X y Y especifican la posicin en la que aparecer el cuadro de


dilogo. X y Y son opcionales, y si no se especifican, el cuadro de dilogo
aparece en el centro de la pantalla. El parmetro Texto tambin es opcional y
por lo general no se coloca, ya que se supone que la caja de texto es para que el
usuario escriba los datos a procesar por la aplicacin.
5.5.2. Cuadro de dilogo de mensajes MsgBox
La funcin MsgBox permite mostrar un cuadro de dilogo con un mensaje
especfico y puede devolver valores tipo Integer de acuerdo a su configuracin y al
botn que reciba el clic del usuario. La sintaxis general es la siguiente:
MsgBox(Mensaje, Botones, Ttulo)
Se puede utilizar MsgBox como instruccin cuando no se espera valor de retorno:
MsgBox Mensaje, Botones, Ttulo

Figura 5.6.- Cuadro de dilogo MsgBox

El argumento Botones es el resultado de una suma binaria de enteros que


definen la cantidad y tipo de botones del cuadro de dilogo, as como tambin el
icono a mostrar. Los posibles valores que se pueden asignar al parmetro
Botones, estn disponibles en forma de constantes intrnsecas (ver Tabla 5.10).
Constante
VbOKOnly
VbOKCancel
VbAbortRetryIgnore
VbYesNoCancel
VbYesNo
VbRetryCancel
VbCritical

Valor
0
1
2
3
4
5
16

Descripcin
Muestra solamente el botn Aceptar.
Muestra los botones Aceptar y Cancelar.
Botones Anular, Reintentar e Ignorar.
Muestra a los botones S, No y Cancelar.
Muestra a los botones S y No.
Muestra a los botones Reintentar y Cancelar.
Muestra el icono de mensaje crtico.
83

Visual Basic 6.0

Constante
VbQuestion
VbExclamation
VbInformation

Unidad 5.- Funciones del intrnseca

Valor
32
48
64

Descripcin
Muestra el icono de pregunta de advertencia.
Muestra el icono de mensaje de advertencia.
Muestra el icono de mensaje de informacin.
Tabla 5.10.- Estilos de cajas de mensajes MsgBox

A continuacin veremos algunos ejemplos de cuadros de mensajes con diferentes


estilos, como resultado de su respectiva lnea de cdigo.
a) Mensaje de informacin para slo aceptar
MsgBox "Ejemplo 1", vbInformation, "Informacin..."

Figura 5.7.- Cuadro de mensaje de Informacin

b) Mensaje crtico para slo aceptar


MsgBox "Ejemplo 2", vbCritical, "Crtico..."

Figura 5.8.- Cuadro de mensaje de Crtico

c) Mensaje de exclamacin para slo aceptar


MsgBox "Ejemplo 3", vbExclamation, "Exclamacin..."

Figura 5.9.- Cuadro de mensaje de Exclamacin

d) Mensaje de pregunta para slo aceptar


MsgBox "Ejemplo 4", vbQuestion, "Pregunta..."

84

Visual Basic 6.0

Unidad 5.- Funciones del intrnseca

Figura 5.10.-Cuadro de mensaje de Pregunta

e) Mensaje sin icono para Si o No


MsgBox "Ejemplo 5", vbYesNo, "Si y No..."

Figura 5.11.-Cuadro de mensaje Si y No

f)

Mensaje sin icono para Aceptar o Cancelar


MsgBox "Ejemplo 6", vbOkCancel, "Aceptar y Cancelar..."

Figura 5.12.-Cuadro de mensaje Aceptar y Cancelar

g) Mensaje con icono para Aceptar o Cancelar


MsgBox "Ejemplo 7", vbOkCancel + vbCritical, "Aceptar y_
Cancelar, Crtico..."

Figura 5.13.-Cuadro de mensaje Crtico Aceptar y Cancelar

Por otra parte, el cuadro de mensaje como toda funcin devuelve valores. Los
valores devueltos por un cuadro de mensaje se detallan en la Tabla 5.11.
Constante
vbOK
vbCancel
vbAbort
vbRetry

Valor
1
2
3
4

Si se hace clic en el botn


Aceptar
Cancelar
Anular
Reintentar
85

Visual Basic 6.0

Constante
vbIgnore
vbYes
vbNo

Unidad 5.- Funciones del intrnseca

Valor
5
6
7

Si se hace clic en el botn


Ignorar
S
No
Tabla 5.11.- Valores devueltos por MsgBox

Por ejemplo, se puede preguntar al usuario, antes de cerrar una ventana, si


realmente desea cerrar la ventana:
Private Sub Form_QueryUnload(Cancel As Integer, UnloadM)
If MsgBox("Cerrar...?", vbYesNo)=vbNo Then Cancel=1
End Sub

86

Visual Basic 6.0

Unidad 6.- Archivos

Unidad 6
Archivos
El secreto del xito es la constancia en el propsito
.- Disraeli

6.1. Nociones bsicas


6.1.1. Unidades
Como es de nuestro conocimiento, los sistemas de cmputo incluyen en su
arquitectura unidades de almacenamiento o memorias donde se albergan los unos
y ceros que representan instrucciones o datos para el microprocesador. Las
memorias se clasifican en memorias primarias y memorias secundarias, de
acuerdo a la forma de conexin con la unidad central de procesamiento (CPU) o
microprocesador. Las memorias primarias corresponden a los circuitos integrados
ROM y RAM en sus diferentes versiones que se conectan al CPU a travs de los
buses internos impresos en la placa o tarjeta madre. Las memorias ROM contienen
programas y tablas de datos esenciales para la operacin general del sistema, y no
es posible escribir en ellas. A diferencia de las ROM, las memorias RAM permiten
ser escritas de parte del usuario con la informacin que actualmente desea
procese la CPU, pero con la gran desventaja que el almacenamiento es voltil; es
decir, la informacin se pierde sino se mantiene energizado al equipo. De esta
manera surgen las unidades de almacenamiento secundario, las cuales se
encuentra fuera de la placa base, se pueden escribir de parte del usuario, y no
requieren de energa para mantener la informacin. Dentro de esta categora se
encuentran la unidades de disco magnticas, ya sean flexibles (por lo general las
unidades A y B de 3 pulgadas) o rgidas (por lo general el disco duro C).
Tambin se incluyen las unidades de disco lgicas o de red (H, J, K,), las
unidades de disco ptico (D, E) y las unidades de chip de memoria porttil. En la
Unidad 4, objetivo 4.1 tratamos el tema de administracin de la memoria primaria
RAM; y a continuacin conoceremos sobre la administracin de la memoria
secundaria para el almacenamiento de informacin permanente o no voltil; de all
su importancia.

87

Visual Basic 6.0

Unidad 6.- Archivos

Figura 6.1.- Memorias de un sistema de cmputo

6.1.2. Archivos
Los archivos se pueden definir como un conjunto de bytes relacionados mediante
un identificador y almacenados en una unidad de disco. El sistema operativo
define la estructura mediante la cual los archivos son etiquetados, almacenados y
organizados en el disco, para lo cual crea y mantiene en cada unidad de disco a su
disposicin, una tabla de asignacin de archivos conocida como FAT (File
Allocation Table), que acta como un ndice si la unidad fuera un libro. La FAT es
una tabla que contiene el estatus de varios segmentos, de espacio de disco,
usados para el almacenamiento de archivos. Cada vez que se copian, borran o
modifican archivos, la FAT es actualizada automticamente por el sistema
operativo. En las nuevas versiones de Windows la FAT se ha reemplazado por
estructuras ms eficientes como FAT32 y NTSF.
Los archivos son decodificados o interpretados por otros archivos con instrucciones
llamados programas, para lo cual se requiere transferir o copiar la informacin del
archivo desde la memoria secundaria hasta la memoria primaria RAM. La accin de
abrir un archivo consiste en crear una copia del archivo en memoria RAM para su
manipulacin directa de parte del microprocesador. Al cerrar un archivo se libera
toda traza del mismo de la memoria RAM, pero la memoria secundaria permanece
intacta si no se guardan los cambios. Si se toma la previsin de guardar los
cambios, los cuales se efectan en memoria RAM, la informacin es actualizada,
transferida o copiada a la unidad de disco correspondiente.

101111010
101111010
101000011
100110111
101111111
100111010
010011111

Visual Basic permite manipular tres tipos de archivos segn el modo de acceso:
secuencial, aleatorio y binario. Los archivos secuenciales, carecen de estructura y
deben ser recorridos en su totalidad para acceder a un dato intermedio. Los
archivos aleatorios se organizan en registros de longitud fija, por lo que se puede
acceder directamente a cualquier dato intermedio. Los archivos binarios tambin
permiten acceso directo, pero los registros son de longitud variable. En esta
unidad slo trataremos a los archivos de acceso secuencial y aleatorio.

Microsoft
Word

La Corua, 2003
Seores
CompuSoft, S.A.
Ciudad.Estimados seores
Figura 6.2.- Archivo de documento de Word

6.1.3. Directorios
Los directorios, o carpetas como tambin se les conocen, representan una
estructura organizativa soportada por la mayora de los sistemas operativos que
88

Visual Basic 6.0

Unidad 6.- Archivos

permite agrupar archivos en una unidad de disco. Windows, como sistema


operativo, soporta esta facilidad. En lugar de almacenar todos los archivos en la
raz de la unidad, el usuario puede crear mltiples directorios para contener grupos
de archivos, y en cada directorio puede crear otros subdirectorios para un
agrupamiento interno, y as sucesivamente.
Archivos
Archivos

Archivos

Subdirectorio 1

Directorio 1

Archivos
Subdirectorio 2
Archivos

Directorio 2
Unidad de disco

Raz
Figura 6.3.- Estructura de directorios y archivos

6.2. Instrucciones de archivos


6.2.1. Instrucciones para manipular directorios
a) Establecer la unidad activa
Cuando una computadora se enciende, esta ejecuta un programa primario
almacenado en ROM o BIOS, el cual contiene las directivas bsicas de
inicializacin. El proceso de inicializacin incluye la bsqueda del programa del
Sistema Operativo en una unidad de memoria secundaria, es decir, en un
disco local o de red. Una vez detectado el sistema operativo, se procede a la
carga o ejecucin del mismo; y se establece inicialmente como unidad de disco
activa, aquella donde se encuentra el sistema operativo. La unidad activa es
donde se crean, borran, listan o modifican archivos y directorios. Para cambiar
la unidad activa, Visual Basic cuenta con la instruccin ChDrive. Por ejemplo,
suponga que desea cambiar a la unidad de disco A:
ChDrive A:\
b) Establecer el directorio activo
Tambin se puede establecer el directorio activo, con la instruccin ChDir:
ChDir directorio

'cambia directorio

Por ejemplo, si desea establecer Mis documentos como directorio activo:


ChDir C:\Mis documentos
c) Crear y eliminar directorios
Los directorios o carpetas pueden ser creados y borrados mediante las
siguientes instrucciones. Para borrar un directorio, este debe ser previamente
vaciado.
MkDir directorio
RmDir directorio

'crea directorio
'borra directorio

6.2.2. Instrucciones para manipular archivos


a) Abrir o crear archivos

89

Visual Basic 6.0

Unidad 6.- Archivos

Para abrir o crear un archivo se utiliza la funcin Open con la sintaxis


siguiente:
Open archivo For tipo Access acceso As #NmeroDeArchivo
El parmetro archivo es una cadena que representa la ruta y el nombre de
un archivo. tipo es una palabra reservada que indica el tipo de archivo a
abrir o crear, y el modo de apertura, segn la tabla siguiente. El acceso se
refiere al tipo de acceso; es decir, el tipo de operaciones que se puede
efectuar sobre el archivo: lectura (Read), escritura (Write), y lectura-escritura
(ReadWrite). Cuando se abre o crea un archivo, este se identifica en el sistema
mediante un nmero entero, este nmero es el parmetro NmeroDeArchivo
precedido por el signo #.
Tipo
Append
Input
Output
Random
Binary

Descripcin
Abre o crea un archivo de texto para agregarle informacin.
Abre un archivo de texto para lectura. Si el archivo no existe, se produce un error.
Crea un archivo de texto. Si el archivo existe, este se borra para dar lugar al nuevo.
Abre o crea un archivo de acceso aleatorio. Archivo directo a registros de longitud fija.
Abre o crea un archivo binario. Archivo de longitud variable por registro.
Tabla 6.1.- Especificaciones del parmetro Tipo de la instruccin Open

b) Cerrar archivos abiertos


Una vez que se han abierto archivos con la funcin Open, estos se pueden
cerrar mediante la instruccin Close.
Close #5
Close
abiertos

'Cierra el archivo abierto nmero 5


'Cierra todos los archivos

c) Copiar archivos
Para copiar un archivo, este debe estar cerrado. La instruccin es FileCopy:
FileCopy archivo_origen, archivo_destino
Para copiar el archivo Carta.doc desde la unidad A:\ hasta Mis
documentos en la unidad C:\ con el nombre de Pedido.doc, se utilizara el
siguiente cdigo:
FileCopy A:\Carta.doc, C:\Mis documentos\Pedido.doc
Los comodines dispuestos inicialmente por el sistema operativo MSDOS, como
el asterisco y el signo de interrogacin, mantienen vigencia en Microsoft
Windows, y se pueden utilizar desde Visual Basic. Estos comodines definen un
patrn de bsqueda que facilita la operacin por lotes sobre un conjunto de
archivos. El asterisco indica la presencia o no de cualquier cantidad de
caracteres en el nombre de los archivos; y el signo de interrogacin indica la
presencia de un caracter cualquiera obligatorio en una posicin especfica en el
nombre del archivo. Por ejemplo, suponga que desea copiar todos los archivos
.doc que comiencen con las letras Car desde la unidad A:\ hasta la carpeta
C:\Mis documentos:
FileCopy A:\Car*.doc, C:\Mis documentos\
90

Visual Basic 6.0

Unidad 6.- Archivos

De esta manera se copiarn los archivos Carta.doc, Carros.doc,


Cario.doc,
FileCopy A:\C?????.*, C:\Mis documentos\
As slo se copiaran los archivos Carros.doc y Cario.doc. Adems podran
copiarse Cremas.xls o Comida.ppt, ya que la extensin es un asterisco.
d) Renombrar archivos
Tambin es posible cambiar el nombre de un archivo utilizando el siguiente
cdigo:
Name nombre_viejo As nombre_nuevo
Por ejemplo, para cambiar el nombre de Carta.doc en la unidad A:\ por
Pedido.doc, la instruccin se utilizara de la siguiente manera:
Name A:\Carta.doc As A:\Pedido.doc
e) Borrar archivos
Finalmente, para eliminar o borrar un archivo existente del disco se utiliza Kill:
Kill nombre_archivo
Observacin: Las instrucciones para copiar, renombrar y eliminar archivos, se deben aplicar
solamente a archivos cerrados; de lo contrario, se produce un error.

6.3. Funciones de archivos


6.3.1. Funciones para manipular directorios
a) Contenido de un directorio
Para ver el primer archivo contenido en un directorio se puede usar la funcin
Dir:
Archivo = Dir(ruta)
El parmetro ruta es una cadena que especifica la unidad y el directorio cuyo
contenido desea listar o examinar. La funcin Dir devuelve una cadena con el
nombre del archivo encontrado segn la ruta especificada. Si en la ruta
especificada no se encuentran archivos, la funcin Dir devuelve una cadena
vaca. Para listar todo el contenido de un directorio, se utiliza la funcin Dir,
pero sin el parmetro de ruta. Por ejemplo, si se desea listar los archivos con
extensin .txt que se encuentran en el directorio C:\Mis documentos en una
caja de lista lstArchivo, se pueden usar las siguientes lneas de cdigo en
algn procedimiento:
Dim Archivo As String
Archivo = Dir(C:\Mis documentos\*.txt)
Do While Archivo <>
Me.lstArchivo.AddItem Archivo
Archivo = Dir
Loop
91

Visual Basic 6.0

Unidad 6.- Archivos

Observacin: La funcin Dir se usa sin argumentos para repetirse con la ltima ruta
especificada.

b) Directorio activo
Como vimos anteriormente, la unidad y el directorio activo se establecen
mediante las instrucciones ChDrive y ChDir. Es posible visualizar el directorio
activo de una unidad con la funcin CurDir segn la siguiente sintaxis:
Dim Directorio As String
Directorio = CurDir(D:\)
6.3.2. Funciones de archivos cerrados
a) Tamao de un archivo cerrado
La funcin FileLen devuelve el tamao en bytes de un archivo. El valor
devuelto es tipo Long. El nombre del archivo es un parmetro tipo cadena de
caracteres que podra incluir la ruta del archivo. Por ejemplo se puede conocer
el tamao del archivo Win.ini mediante la siguiente instruccin:
Tamao = FileLen(archivo)
Dim Tamao As Long
Tamao = FileLen(C:\Windows\Win.ini)
b) Nmero disponible de archivo
Si se intenta abrir un archivo especificando un nmero ya utilizado por otro
archivo abierto, se producir un error. La funcin FreeFile permite obtener el
prximo nmero de archivo disponible, y as se evita el error en tiempo de
ejecucin.
Dim NmeroDeArchivo As Integer
NmeroDeArchivo = FreeFile
6.3.3. Funciones de archivos abiertos
a) Tamao de un archivo abierto
Una vez que se ha abierto un archivo, no es posible utilizar FileLen para
determinar el tamao del archivo, ya que slo se puede hacer referencia a
este mediante un nmero de archivo. Visual Basic proporciona la funcin LOF
para determinar el tamao de un archivo abierto y se usa de la siguiente
manera:
Dim Tamao As Long
Tamao = LOF(NmeroDeArchivo)
En archivos de acceso aleatorio, donde la longitud de los registros es fija, la
funcin LOF permite recalcular la cantidad de registros dentro del archivo cada
vez que se agregan o eliminan registros.
CantidadDeReg = LOF(NmeroDeArchivo) / LongitudDeUnReg
b) Indicador de final de archivo
La funcin EOF devuelve un valor lgico True si el puntero se encuentra al
final del archivo. El puntero es la posicin de lectura o escritura dentro del
archivo. Al abrir un archivo, el puntero se ubica al principio del archivo; luego,
92

Visual Basic 6.0

Unidad 6.- Archivos

debido a instrucciones de lectura o escritura, se desplaza a lo largo del mismo,


y la funcin (EOF) nos indica si se ha alcanzado la posicin del registro final.
Esta funcin es muy til para efectuar la lectura completa de un archivo, ya
que es la condicin que se evala para detener el ciclo de instrucciones de
lectura.
Dim FinDeArchivo As Boolean
FinDeArchivo = EOF(NmeroDeArchivo)
6.4. Objetos de archivos
6.4.1. Caja de lista de archivos (Clase: FileListBox)
El control FileListBox encuentra y muestra los archivos contenidos en un directorio
determinado en tiempo de ejecucin, mediante una lista de los archivos
seleccionados por atributo o patrn. Mencionaremos algunas de las propiedades y
eventos ms importantes de este objeto.
La propiedad FileName devuelve el nombre del archivo seleccionado de la caja de
lista de archivos. La propiedad Path determina la ruta (unidad y directorio) de los
archivos que se muestran. Se dispone de las propiedades List, ListIndex,
ListCount, etc., de las cajas de lista estudiadas anteriormente. Adems se cuenta
con propiedades Booleanas que funcionan como un filtro, y determinan si se
muestran o no los archivos segn su atributo, como son: Archive (Modificado),
Hidden (Oculto), Normal (Normal), ReadOnly (Slo Lectura), y System (del
Sistema). Otra de las propiedades de las cajas de lista de archivos, es la propiedad
Pattern, que define el patrn de bsqueda. Si la propiedad Pattern se establece,
por ejemplo a *.doc o *.txt, en la caja de lista slo se mostrarn los archivos
de documento o los archivos de texto. Inicialmente Pattern es igual a *.*,
permitiendo que se muestren todos los archivos. Al producir un Click en la lista, se
selecciona uno de sus elementos de la lista, el cual se corresponde con un archivo.
El nombre del archivo seleccionado se puede capturar mediante la propiedad
FileName. Tambin son importantes los eventos PathChanged y PatternChanged.
Estos dos ltimos se ejecutan al cambiar respectivamente la ruta y el patrn de
bsqueda.
6.4.2. Caja de lista de directorio (Clase: DirListBox)
La caja de lista de directorio muestra los directorios y subdirectorios de una unidad
determinada en forma de rbol de jerarqua. La propiedad Path se refiere al
nombre del directorio seleccionado en la caja de lista. Estn disponibles las
propiedades de cajas de lista convencionales List, ListIndex, ListCount, etc. El
evento Change es utilizado para actualizar el contenido de la caja de lista de
archivos mediante su propiedad Path.
Private Sub DirListBox1_Change()
Me.FileListBox1.Path = Me.DirListBox1.Path
End Sub
6.4.3. Caja de lista de unidades (Clase: DriveListBox)
El control grfico muestra y permite seleccionar la unidad de disco activa. La
propiedad Drive de este control determina la unidad de disco. Se pueden
manipular las propiedades de cajas de lista List, ListIndex, ListCount, etc. El
93

Visual Basic 6.0

Unidad 6.- Archivos

evento Change es utilizado para actualizar el contenido de las cajas de lista de


directorio al establecer su propiedad Path.
Private Sub DriveListBox1_Change()
Me.DirListBox1.Path = Me.DriveListBox1.Drive
End Sub
En la figura siguiente se muestran los tres controles de archivo para acceder a las
unidades de almacenamiento secundario.
DriveListBox

FileListBox

DirListBox
Figura 6.4.- Objetos de archivos.

6.4.4. Cuadro de dilogo comn (Clase: CommonDialog)


El control ActiveX de la clase CommonDialog proporciona un conjunto de cuadros
de dilogo estndar para realizar operaciones como abrir y guardar archivos,
establecer las opciones de impresin y seleccionar colores y fuentes. Este dilogo
comn proporciona una interfaz entre Visual Basic y las funciones de la biblioteca
de vnculos dinmicos Commdlg.dll de Microsoft Windows. Para crear un cuadro de
dilogo utilizando este control, el archivo commdlg.dll debe encontrarse en el
directorio SYSTEM de Microsoft Windows.
a) Insertar el objeto CommonDialog
Para usar el control CommonDialog en una aplicacin, previamente se debe
agregar a la caja de herramientas. Esto se puede hacer seleccionando el men
Proyecto | Componentes o presionando Ctrl+T. De esta manera aparece el
cuadro de dilogo Componentes, donde se debe activar la casilla
correspondiente a Microsoft Common Dialog Control 6.0 (ver Figura 6.5).
El Common Dialog no tiene representacin grfica en tiempo de diseo, ya
que slo aparece en tiempo de ejecucin mediante mtodos que veremos mas
adelante.

94

Visual Basic 6.0

Unidad 6.- Archivos

Figura 6.5.- Dilogo Componentes (Control Dilogo Comn)

b) Propiedades del dilogo comn


Propiedad
CancelError
DefaultExt
DialogTitle
FileName
FileTitle
Filter
Flags
InitDir
MaxFileSize

Descripcin
Si genera o no un error al usuario presionar el botn Cancelar.
Extensin predeterminada de nombre de archivo.
Ttulo del cuadro de dilogo.
Nombre y ruta del archivo seleccionado que se va a abrir o guardar.
Nombre (sin la ruta) del archivo seleccionado que se va a abrir o guardar.
Filtros presentados en el cuadro de lista Tipo de un cuadro de dilogo.
Opciones para mostrar u ocultar elementos del cuadro de dilogo.
Ruta inicial de ubicacin de los archivos.
Tamao mximo del nombre de archivo abierto mediante el control.
Tabla 6.2.- Propiedades del objeto Dilogo Comn

En tiempo de ejecucin, cuando el usuario elige un archivo, la propiedad


FileName se utiliza para obtener el nombre de archivo seleccionado. Se puede
establecer la propiedad Filter de forma que el cuadro de dilogo presente slo
ciertos tipos de archivos. Filter es una cadena de caracteres con la sintaxis
siguiente:
"descripcin1 |filtro1 |descripcin2 |filtro2..."
Por ejemplo, para mostrar slo archivos de texto .txt, y de imgenes .bmp e
.ico:
"Archivos de texto |*.txt |Imgenes e iconos |*.bmp;*.ico"
La propiedad Flags se puede usar para cambiar varios elementos del cuadro
de dilogo, as como para avisar al usuario cuando pueden producirse ciertas
situaciones, tal como la escritura en un archivo existente, o la apertura de uno
95

Visual Basic 6.0

Unidad 6.- Archivos

inexistente. A continuacin se muestran algunos de los valores que puede


adoptar la propiedad Flags (ver Tabla 6.3).
Constante
cdlOFNReadOnly
cdlOFNOverwritePrompt
cdlOFNHideReadOnly
cdlOFNNoChangeDir
cdlOFNHelpButton
cdlOFNAllowMultiselect
cdlOFNPathMustExist
cdlOFNFileMustExist
cdlOFNCreatePrompt
cdlOFNNoReadOnlyReturn
cdlOFNExplorer

Descripcin
Hace que la casilla de verificacin Slo lectura est activada
inicialmente.
El dilogo Guardar como, genera un mensajes si el archivo ya existe.
Oculta la casilla de verificacin Slo lectura.
Restablece como directorio al que lo era en el momento de abrirse el
dilogo.
Hace que el cuadro de dilogo presente el botn Ayuda.
El cuadro de lista Nombre de archivo permite varias selecciones.
Slo se pueden escribir rutas de acceso vlidas o existentes.
Slo puede introducir nombres de archivos existentes.
El cuadro de dilogo requiere la creacin de un archivo que no exista.
El archivo devuelto no tendr establecido el atributo de Slo lectura.
Usa la plantilla del cuadro de dilogo Abrir archivo de tipo Explorador.
Tabla 6.3.- Valores de la propiedad Flags.

c) Mtodos de dilogos comn


El tipo de cuadro de dilogo presentado est determinado por el tipo de
mtodo del objeto. En tiempo de ejecucin se presenta un cuadro de dilogo,
cuando se invoca el mtodo apropiado; en tiempo de diseo, el control
CommonDialog se presenta como un icono dentro del formulario. El
CommonDialog puede presentar distintos cuadros de dilogo utilizando los
siguientes mtodos.
Mtodo
ShowOpen
ShowSave
ShowColor
ShowFont
ShowPrinter
ShowHelp

Cuadro de dilogo presentado


Abrir
Guardar como
Color
Fuente
Imprimir u Opciones de impresin
Invoca el motor de Ayuda de Windows
Tabla 6.4.- Mtodos del objeto Dilogo Comn.

En el siguiente ejemplo, se muestra como se invoca el cuadro de dilogo Abrir.


Private Sub cmdBotn_Click()
Dim Archivo As String, Dim NmeroDeArchivo As Integer
Me.Dilogo.CancelError = False
Me.Dilogo.Filter = "Office|*.doc;*.xls;*.ppt"
Me.Dilogo.Flags = cdlOFNHideReadOnly
Me.Dilogo.ShowOpen
Archivo = Me.Dilogo.FileName
If Archivo <> Then
NmeroDeArchivo = FreeFile
Open Archivo For Output As #NmeroDeArchivo
End If
End Sub

96

Visual Basic 6.0

Unidad 6.- Archivos

6.5. Archivos secuenciales


6.5.1. Abrir archivos secuenciales
Los archivos secuenciales se pueden abrir de tres maneras, segn el parmetro
tipo de Open, y para archivos secuenciales puede ser Input, Output o Append.
(1) Input se usa para abrir archivos existentes, a ser ledos, en el sistema. Si el
archivo que intenta abrir no existe, se produce un error en tiempo de ejecucin.
(2) Output es para crear archivos nuevos en el sistema a ser escritos. Es exclusivo
para crear e ingresar datos a archivos nuevos. Si el archivo existe, este se
sobrescribe. (3) Append se usa para abrir archivos existentes o no en el sistema
con el objeto de agregarle informacin sin sobrescribirlos. Si el archivo a abrir no
existe, se crea como archivo nuevo; pero si existe, slo se abre y se dispone para
aadirle ms datos de los que posee.
6.5.2. Leer archivos secuenciales
Para leer archivos secuenciales, estos se deben abrir utilizando el parmetro Input
de la instruccin Open. La informacin de los archivos secuenciales se puede leer
por lnea o por campos separados por coma. Para leer una lnea completa se usa
la instruccin Line Input, y para leer campos separados por coma se usa la
instruccin Input.
Private Sub cmdBotn_Click()
Dim Lnea As String
Open "A:\Estados.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, Lnea
txtMiCaja.Text = txtMiCaja.Text & chr(13) & Lnea
Loop
Close #1
End Sub
Ahora suponga que el archivo de texto Estados.txt contiene los estados de
Venezuela y sus cdigos de rea separados por coma: Caracas, 0212, Valencia,
0241, Lara, 0251, etc. A continuacin, se abre el archivo y se muestran los estados
de Venezuela y sus cdigos de rea en las cajas de lista lstEstado y lstCdigo.
Private Sub cmdBotn_Click()
Dim ElEstado, ElCdigo As String
Open "A:\Estados.txt" For Input As #2
Do While Not EOF(2)
Input #2, ElEstado, ElCdigo
lstEstado.AddItem ElEstado
lstCdigo.AddItem ElCdigo
Loop
Close #2
End Sub
6.5.3. Escribir en archivos secuenciales
Para escribir en archivos secuenciales se utilizan como parmetros de tipo de la
instruccin Open los valores Output o Append. Existen dos mtodos para ingresar
informacin en archivos secuenciales. Se pueden ingresar cadenas por lnea del
archivo con la funcin Print; o por campos separados por coma mediante la
97

Visual Basic 6.0

Unidad 6.- Archivos

funcin Write. El ejemplo a continuacin muestra el uso de la funcin Print


para agregar el contenido de tres cajas de texto del arreglo txtMiCaja al archivo de
texto Estados.txt.
Private Sub cmdBoton_Click()
Open "A:\Estados.txt" For Append As #2
Print #2, txtMiCaja(0).Text
Print #2, txtMiCaja(1).Text; txt.MiCaja(2).Text
Close #2
End Sub
Suponiendo que txtMiCaja (0) contiene Carabobo, txtMiCaja (1) contiene 0241
y txtMiCaja (2) contiene Valencia; la forma como se almacenan es:
Carabobo
0241
Valencia
Como se observa, Print dispone de una lnea completa por cada campo. Si usamos
la Instruccin Write, tanto la sintaxis como el resultado son diferentes. Los
campos se separan con comas, y no se usa punto y coma, como en el caso de
Print.
Private Sub cmdBotn_Click()
Open "A:\Estados.txt" For Append As #3
Write #3, txtDato(0).Text
Write #3, txtDato(1).Text, txtDato(2).Text
Close #3
End Sub
A continuacin observe que cada campo se enmarca entre comillas
automticamente. Adems cada instruccin Write produce un salto de lnea en el
archivo, a menos que los campos se separen con coma.
Carabobo
0241, Valencia
Para que todos los campos queden en una sola lnea se debe escribir la
instruccin:
Write #3, txtDato(0).Text, txtDato(1).Text, txtDato(2).Text
Observacin: La instruccin Line Input se utiliza para leer un archivo que se ha escrito con la
instruccin Print. Por otra parte, la instruccin Input se utiliza para leer un
archivo que se ha escrito con la instruccin Write.

6.6. Archivos aleatorios


6.6.1. Abrir archivos aleatorios
Para abrir archivos de acceso aleatorio el parmetro tipo de la instruccin Open
debe establecerse a Random, aunque previamente se deben tener en cuenta
ciertas consideraciones. Cada registro posee una estructura que se le confiere
mediante un tipo de dato definido por el usuario. En la unidad 4 se estudiaron los
tipos de datos provistos por el sistema. Resulta obligatoria para archivos directos
98

Visual Basic 6.0

Unidad 6.- Archivos

la definicin de tipos de datos que le confieran una estructura. De esta manera se


establece una serie de pasos para crear o abrir archivos aleatorios. Se desarrollar,
como ejemplo, un archivo para almacenar los estados, cdigo de rea telefnicos y
las capitales de un pas.
a) Crear la estructura del registro
El cdigo para crear tipos de datos personalizados, por lo general, se escribe
en la seccin declaraciones de cualquier mdulo, segn el alcance que desee
el analista. La palabra reservada para definir tipos de datos es Type, la cual
puede ser pblica o privada. Para los archivos directos es fundamental definir
un tamao especfico para los registros el cual debe ser menor a 32767. Por lo
tanto, en la definicin de tipo de dato, las cadenas de caracteres deben ser de
longitud fija.
Private Type T_Estado
Nombre As String * 15
CdigoDeArea As String * 4
Capital As String * 20
End Type
Observacin: Por simple regla de Visual Basic, se acostumbra a comenzar el nombre del tipo
de datos con la letra T mayscula

b) Declarar las variables de registro


La variable de registro representa una coleccin de cada uno de los campos
que conforman al registro. Esta se declara de la misma manera como se
estudi en la unidad 4, y se recomienda escoger la seccin declaraciones,
siempre posterior a la declaracin Type. Para tener control del archivo, es
necesario declarar otras variables para conocer la longitud de cada registro y
la cantidad de registros almacenados en el archivo.
Dim Estado As T_Estado
Dim Longitud As Integer
Dim Registros As Long

'Variable de registro
'Longitud de un registro
'Cantidad de registros

c) Determinar la longitud de cada registro y abrir el archivo


Se recomienda utilizar el evento Load del objeto Form para efectuar es paso, y
de esta manera el archivo se abre desde el principio de la aplicacin; aunque
se puede escoger cualquier otro evento y objeto del proyecto. Para calcular la
longitud del registro se utiliza la funcin Len, y para el tamao del archivo se
utiliza LOF.
Private Sub Form_Load()
Longitud = Len(Estado)
Open A:\Estados.dat For Random As #1 Len = Longitud
Registros = LOF(1) / Longitud
End Sub
6.6.2. Leer registros de archivos aleatorios
La operacin de lectura requiere que se especifique la posicin de lectura dentro
del archivo, para lo cual se utiliza una variable para la posicin en la instruccin
Get: La operacin de lectura consiste en: (1) Leer una posicin especfica para la
99

Visual Basic 6.0

Unidad 6.- Archivos

variable de registro, y (2) Operar cada uno de los campos de la variable de


registro. El siguiente procedimiento general, donde la variable Posicin ha sido
declarada previamente, Lee un registro y lo muestra en cajas de texto.
Public Sub Leer()
Get #1, Posicin,
txtMicaja(0).Text
txtMicaja(1).Text
txtMicaja(2).Text
End Sub

Estado
= Estado.Nombre
= Estado.CdigoDeArea
= Estado.Capital

6.6.3. Escribir registros en archivos directos


Para colocar informacin en el archivo directo se usa la instruccin Put. As como
para la operacin de lectura, la escritura tambin requiere la especificacin de la
posicin. La operacin de escritura consiste en: (1) Cargar cada uno de los campos
de la variable de registro, y (2) Escribir la variable de registro en una posicin
especfica. El siguiente procedimiento permite almacenar el contenido de las cajas
de texto txtMiCaja.
Public Sub Escribir()
Estado.Nombre = txtMicaja(0).Text
Estado.CdigoDeArea = txtMicaja(1).Text
Estado.Capital = txtMicaja(2).Text
Put #1, Posicin, Estado
End Sub
6.6.4. Localizar una posicin de registro
Si no se especifica la posicin en la instruccin Get; el sistema lee el registro
activo. Al abrir un archivo, la posicin inicial es 1 (principio del archivo), y esta se
va incrementando automticamente cada vez que se efecta una lectura.
Get #1, , Estado
Put #1, , Estado

'Lee el registro activo


'Escribe al final del archivo

El apuntador se puede llevar a una posicin especfica dentro del archivo de


acceso aleatorio mediante la instruccin Seek. Para ubicar el cuarto registro,
escribimos:
Seek #1, 4
Observacin: Si no se especifica una posicin en la instruccin de escritura Put, el registro
siempre se escribe al final del archivo, a pesar de efectuar previamente un Seek.

6.6.5. Tareas comunes de archivos aleatorios


a) Avanzar registros
Private Sub cmdAvanzar()
If Posicin < Registros Then I = 1 Else I = 0
Posicin = Posicin + I
If Posicin = Registros Then cmdAvanzar.Enabled = False
If Registros > 1 Then cmdRetroceder.Enabled = True
Leer
End Sub
100

Visual Basic 6.0

Unidad 6.- Archivos

b) Retroceder registros
Private Sub cmdRetroceder()
If Posicin > 1 Then I = 1 Else I = 0
Posicin = Posicin I
If Posicin = 1 Then cmdRetroceder.Enabled = False
If Registros > 1 Then cmdAvanzar.Enabled = True
Leer
End Sub
c) Buscar un registro
Private Sub Buscar(ByVal Buscado As String)
Dim I As Long
For I = 1 To Registros + 1
Get #1, I, Estado
If Trim(Estado.Nombre) Like Buscado + * Then Exit For
Next I
If I > Registros Then
'No se encontr
txtMicaja(0).Text =
txtMicaja(1).Text =
txtMicaja(2).Text =
Else
'Si se encontr
txtMicaja(0).Text = Estado.Nombre
txtMicaja(1).Text = Estado.CdigoDeArea
txtMicaja(2).Text = Estado.Capital
End If
End Sub
d) Eliminar un registro
Private Sub Buscar(ByVal Buscado As String)
Dim I As Long
Estado.Nombre =
Put #1, Posicin, Estado
Open Temporal.tmp For Random As #2 Len = Len(Estado)
For I = 1 To Registros
Get #1, I, Estado
If Trim(Estado.Nombre) <> Then Put #2, , Estado
Next I
Close #1, #2
Kill A:\Estados.dat
Name A:\Temporal.tmp As A:\Estados.dat
Open A:\Estados.dat For Random As #1 Len = Len(Estado)
Posicin = Posicin 1
cmdAvanzar
End Sub
En resumen, el cdigo anterior para eliminar un registro de un archivo, sigue
el siguiente procedimiento:
Hacer blanco uno de los campos del registro a eliminar.
Crear un archivo temporal
Agregar todos los registros, excepto los blancos, al archivo temporal.
101

Visual Basic 6.0

Unidad 6.- Archivos

Cerrar los dos archivos.


Eliminar el archivo original
Renombrar el archivo temporal para que se convierta en el original.
Volver a abrir el archivo original.
Retomar la posicin del registro anterior al eliminado.
Ejecutar un avance para mostrar el registro siguiente al eliminado.

102

Visual Basic 6.0

Unidad 7.- Bases de datos

Unidad 7
Bases de Datos
Es prudente tener presente que ni el xito ni el fracaso son definitivos
.- Roger Babson

7.1. Introduccin a Bases de Datos


7.1.1. Nociones bsicas
Las bases de datos permiten almacenar y mantener una gran cantidad de
informacin de una manera bien organizada, de forma que sea posible devolver
dicha informacin rpidamente. La estructura que trataremos es la de bases de
datos relacionales, en la que se concibe una base de datos como un espacio de
trabajo (WorkSpace) donde coexisten y se relacionan varios conjuntos de datos
llamadas tablas, las cuales contienen filas, columnas e ndices.
a) Las Tablas son conjuntos de datos del mismo tema. Por ejemplo, Clientes,
Proveedores, Ventas, Compras y Productos, son temas que se agrupan en
tablas de una base de datos administrativa.
b) Las Columnas son los Campos que representan caractersticas del tema de una
tabla. Por ejemplo, de la tabla Productos se tienen los campos o caractersticas
siguientes: Cdigo, Descripcin, Serial, Precio, Existencia, etc.
c) Las Filas representan el registro en s; es decir, un elemento de la tabla con
todas sus caractersticas. Por ejemplo, un elemento de la tabla Productos
sera: Monitor Compaq, serial 1102212221987, precio 215.000 Bs. y existencia
14.
d) Finalmente, los ndices son nmeros enteros en un campo especial autonumrico de la tabla y se utilizan para acceder rpidamente a un registro en
una base de datos relacional, ordenar los registros y permitir las relaciones
entre varias tablas. El campo de una tabla A puede requerir los datos de otra
tabla B, y segn el concepto de bases de datos relacional, el ndice funciona
como un apuntador o valor en la tabla A que hace referencia a un registro
(fila) de la tabla B.

103

Visual Basic 6.0

Unidad 7.- Bases de datos

Figura 7.1.- Tabla Productos de una base de datos.

7.1.2. Arquitectura de bases de datos


Bsicamente los datos de una base de datos se almacenan en un archivo de disco
local o remoto, y se conoce como la fuente u origen de datos (DataSource). Como
se observa en la figura siguiente, las peticiones de servicios, de parte del usuario o
una aplicacin externa, no se realizan directamente sobre el origen de datos, sino
que existe un motor de administracin de la base de datos.
Interfaz
de
Usuario
Motor de
Base de
Datos
Origen de
Datos

Figura 7.2.- Arquitectura de Bases de Datos

En la figura anterior se pueden apreciar las peticiones mediante las flechas


gruesas en el sentido hacia el origen de datos. Este motor de base de datos es
una librera de funciones, las cuales ejecutan las operaciones necesarias sobre el
origen de datos para responder a las solicitudes de servicio. Las libreras de
funciones son archivos con extensin DLL o EXE, y no existen exclusivamente para
el manejo de bases de datos; por el contrario, el sistema Windows se basa
justamente en libreras de funciones, o DLL (Dynamic Link Library) como
comnmente se les nombra. La interfaz de usuario se define como la aplicacin
para presentar y actualizar los registros de una base de datos, para lo cual debe
interactuar con el motor de base de datos. Los programas que integran a estos
tres elementos fundamentales se conocen como Sistemas de Administracin de
Bases de Datos (DBSM), como lo son Microsoft Access, SQL Server, Oracle, Fox
Pro, Clipper, Dbase, Paradox, etc.
7.1.3. Tecnologas de bases de datos
Cada tipo de base de datos posee un motor diferente; es decir, un conjunto
diferente de funciones, slo compatibles con un origen de datos en particular. Los
motores de bases de datos constan de (1) Proveedores de datos, que contienen y
exponen los datos; (2) Clientes de datos, que utilizan los datos; y (3)
Componentes de servicio, que procesan y transportan datos. Visual Basic, como
lenguaje de programacin, permite crear las aplicaciones de usuario; pero carece
104

Visual Basic 6.0

Unidad 7.- Bases de datos

de un motor de base de datos intrnseco, por lo que no se considera un manejador


de bases de datos (DBSM). De esta manera, se han diseado tecnologas de
acceso a datos para la administracin de bases de datos desde aplicaciones de
Visual Basic. Estas tecnologas incluyen:
a) Interfaces para orgenes de datos
Visual Basic debe acceder a los motores de bases de datos apropiados segn
los orgenes de datos que el usuario desee manipular; es as como dispone de
diversos proveedores de datos basados en una tecnologa llamada OLE DB
(OLE Data Base). OLE DB define una coleccin de interfaces que encapsulan
varios servicios de los sistemas de administracin de bases de datos (DBMS).
Estas interfaces permiten crear componentes de software que implementen
dichos servicios. Los clientes obtienen acceso a un objeto a travs de
interfaces implementadas en el objeto. Existe un servidor OLE DB por cada
tipo de origen de datos.
b) Modelos de objetos de bases a datos
La variedad y complejidad de las interfaces OLE DB no permite el acceso
directo desde Visual Basic. En vez de esto, existen tecnologas intermedias,
entre OLE DB y Visual Basic, destinadas a ofrecer modelos de objetos de
acceso a datos que encapsulan y exponen prcticamente toda la funcionalidad
de OLE DB a las aplicaciones; de esta manera, se logra uniformidad en las
tareas de programacin sin importar el tipo de servidor o proveedor OLE DB.
En Visual Basic existen tres modelos de objetos, los cuales proveen un
conjunto de objetos y mecanismos necesarios en la conexin con la base de
datos a travs de OLE DB. El primer modelo de objetos fue implementado en
la versin 3 de Visual Basic y se conoce como DAO (Data Access Objects), el
cual posee la gran desventaja de no permitir el acceso a datos ubicados en
servidores remotos, y adems est dedicado al motor Microsoft Jet que utiliza
Access. Para responder a estas limitaciones, en la versin siguiente de Visual
Basic, se incluy el modelo RDO (Remote Data Objects) como una interfaz
exclusiva para el acceso a datos remotos. A partir de la versin 6, se comienza
a utilizar el modelo ADO (ActiveX Data Objects), el cual encapsula la
funcionalidad de las tecnologas DAO y RDO, reduciendo la cantidad de
objetos, propiedades, mtodos y eventos.
Origen de Datos 1

Proveedor 1
OLE DB

Origen de Datos 2

Proveedor 2
OLE DB

Origen de Datos 3

Proveedor 3
OLE DB

Visual Basic

Modelo
de
Objetos

Interfaz
de
Usuario

Figura 7.3.- Acceso de Visual Basic a Bases de Datos

7.1.4. Proveedores OLE DB


Para Visual Basic estn disponibles los proveedores de Microsoft OLE DB para los
siguientes tipos de bases de datos:
a) Microsoft Index Server
b) Microsoft Active Directory Service Interfaces (ADSI)
105

Visual Basic 6.0

Unidad 7.- Bases de datos

c) Microsoft SQL Server


d) Microsoft Jet (Microsoft Access)
e) Bases de datos de Oracle
f)

Orgenes de datos ODBC (Open DataBase Connectivity)

Los orgenes de datos ODBC corresponden a bases de datos compatibles con la


tecnologa ODBC. Esta tecnologa permite el acceso a distintos tipos de bases de
datos adicionales a los que proporciona OLE DB. De esta manera se incrementa el
espectro de orgenes de datos que se pueden acceder desde Visual Basic.
Utilizando Microsoft OLE DB para ODBC es posible manipular datos provenientes
de: Dbase (*.dbf), Excel (*.xls), FoxPro (*.dbf), Visual Foxpro (*.dbf), Paradox
(*.db) y Archivos de texto separados por coma (*.csv). Aunque tambin es posible
acceder a datos de Microsoft Access, Microsoft SQL Server y Oracle mediante OLE
DB para ODBC, se recomienda utilizar el controlador correspondiente OLE DB Jet,
SQL y Oracle.
Convencin: En adelante, para los ejemplos presentados en esta gua se ha escogido el
proveedor OLE DB para Microsoft Jet para manejar bases de datos de Microsoft
Access, y se utilizar ADO como modelo de objetos de acceso a datos.

7.1.5. Lenguajes de bases de datos


El motor de base de datos ejecuta un conjunto de tareas sobre el origen de datos
mediante las funciones almacenadas en archivos DLL, las cuales son activadas
desde la interfaz de usuario. De esta manera, la interfaz de usuario debe proveer
los mecanismos necesarios para la configuracin y puesta en marcha de la base de
datos. Los mecanismos antes mencionados, se agrupan o se clasifican en dos tipos
de lenguaje, segn la respuesta del motor de base de datos al servicio solicitado.
a) Lenguaje de definicin de datos (DDL):
El DDL consta de las propiedades y mtodos utilizados para definir y crear la
propia base de datos, incluyendo sus tablas, campos, ndices, relaciones, etc.
Este lenguaje agrupa a todas las instrucciones relacionadas al diseo de la
base de datos. DML incluye facilidades para consultar, actualizar, agregar y
eliminar tablas, campos, ndices y relaciones.
b) Lenguaje de manipulacin de datos (DML):
El DML consta de las propiedades y los mtodos utilizados para escribir la
seccin de las aplicaciones que tienen acceso a los registros de bases de datos
existentes. DML incluye facilidades para consultar, desplazar, actualizar,
ordenar, agregar y eliminar registros.
Atencin:

Esta clasificacin no significa que existan dos lenguajes separados; es


simplemente una forma de agrupar los elementos del lenguaje segn su
funcionalidad.

Las tareas de definicin y configuracin de las bases de datos, por lo general, se


realizan utilizando los respectivos DBMS; es decir, no se crean aplicaciones
destinadas a DDL aunque los lenguajes de programacin, como Visual Basic,
incluyan esta facilidad. La razn de esta prctica radica en el hecho que los DBMS
poseen las herramientas ms adecuada para el diseo de las bases de datos. Por
otra parte, en la mayora de los casos el sistema de base de datos ya se encuentra
instalado, y lo que se requiere es la interfaz de usuario para acceder a los datos.
106

Visual Basic 6.0

Unidad 7.- Bases de datos

Observacin: En esta gua de estudio no se consideran los mtodos y propiedades para el


diseo de bases de datos DDL, salvo algunos comandos SQL para el manejo de
tablas.

7.1.6. Modos de manipulacin de registros


El lenguaje de manipulacin de datos (DML) est relacionado con las operaciones
(modificar, agregar, guardar, eliminar, ordenar) sobre los registros de una base de
datos, y se puede aplicar de dos maneras segn los siguientes modos.
a) Modo de desplazamiento
Basado en el movimiento a travs de los registros de una tabla de la base de
datos; y donde las operaciones se efectan sobre un solo registro, que se
corresponde al registro activo o seleccionado de la base de datos. Por
ejemplo; la operacin eliminar, slo eliminar al registro activo.
b) Modo relacional
Basado en el Lenguaje de Consulta Estructurado (SQL), donde las operaciones
pueden afectar a uno, varios o a todos los registros de una tabla de base de
datos, segn una definicin de parmetros de seleccin. Por ejemplo; se
pueden eliminar todos los registros de la tabla Productos cuyo campo
Existencia sea nulo, y esto sin necesidad de hacer activos todos los registros a
eliminar.
7.2. Objetos de acceso a datos ADO
7.2.1. Modelo de objetos de ADO
El modelo de objetos de ADO define una coleccin de objetos programables para
aprovechar la eficaz tecnologa denominada OLE DB. Uno de los puntos fuertes de
ADO es que puede exponer y utilizar las propiedades nicas de cada proveedor de
datos. Independientemente del origen de datos utilizado, ADO es totalmente
flexible y adaptable a los requisitos de acceso a datos de su aplicacin. El modelo
de objetos ADO, en su versin 2.0, consta de siete objetos y cuatro colecciones:
Connection
Objeto

Command
Properties

Property

Parameters

Parameter

Properties

Property

Fields

Field

Coleccin

Rercorset

Properties
Properties

Property

Errors

Error

Property

Figura 7.4.- Modelo de objetos ADO.

a) Objeto Connection: Contiene informacin acerca de un proveedor de datos y la


su conexin, como el tipo de cursor, la cadena de conexin, el tiempo de
107

Visual Basic 6.0

Unidad 7.- Bases de datos

espera de la consulta, el tiempo de espera de la conexin y la base de datos


predeterminada.
b) Objeto Command: Contiene informacin acerca de un comando, como una
cadena de consulta, nombre de una tabla, una definicin de parmetro y
otros. Puede ejecutar una cadena de comando en un objeto Connection de
una cadena de consulta como parte de la apertura de un objeto Recordset, sin
definir un objeto Command. El objeto Command es til cuando desee definir
parmetros de consultas o ejecutar procedimientos almacenados que devuelva
parmetros de resultados. Los objetos Command admiten varias propiedades
para describir el tipo y el propsito de la consulta y para ayudar a ADO a
optimizar la operacin.
c) Objeto Recordset: Contiene los registros devueltos por una tabla o consulta,
as como un cursor para dichos registros. Puede abrir un objeto Recordset (por
ejemplo, al realizar una consulta) sin abrir explcitamente un objeto
Connection. No obstante, si opta por crear un objeto Connection, puede abrir
mltiples objetos Recordset con la misma conexin.
d) Objeto Property: Contiene las caractersticas definidas por el proveedor de un
objeto ADO. Los objetos ADO tienen dos tipos de caractersticas: Integradas y
Dinmicas. Las propiedades integradas son las que estn implementadas en
ADO y se encuentran disponibles para cualquier objeto nuevo de ADO. Las
propiedades dinmicas estn definidas por el proveedor de datos subyacente y
aparecen en la coleccin Properties para el objeto de ADO apropiado. Por
ejemplo, una propiedad puede indicar si un objeto Recordset admite
transacciones o actualizaciones. sta es una de las principales caractersticas
de ADO, que permite al proveedor de servicios de ADO presentar interfaces
especiales. Cada uno de los objetos Connection, Command, Recordset y Field
tiene una coleccin Properties.
e) Objeto Error: Contiene informacin ampliada acerca de condiciones de error
producida por el proveedor de datos. Como una nica instruccin puede
generar dos o ms errores, la coleccin Errors puede contener ms de un
objeto Error al mismo tiempo. La coleccin Errors est en el objeto
Connection.
f)

Objeto Parameter: Es un parmetro individual asociado a un objeto Command.


El objeto Command utiliza la coleccin Parameters para que contenga a todos
sus objetos Parameter. Los objetos Parameter de ADO se pueden generar
automticamente enviando consultas a la base de datos. Sin embargo,
tambin puede generar esta coleccin mediante programacin para mejorar el
rendimiento en tiempo de ejecucin.

g) Objeto Field: Contiene informacin acerca de una nica columna de datos en


el conjunto de registros (Recordset). El objeto Recordset utiliza la coleccin
Fields para que contenga a todos sus objetos Field. Esta informacin de Field
incluye el tipo de datos, la precisin y la escala numrica.
7.2.2. El objeto Connection
Regla de Visual Basic de prefijo para nombre del objeto Connection: cnn.

a) Propiedades
Propiedad
ConnectionString

Descripcin
Cadena que contiene la informacin que se utiliza para establecer una conexin a un
108

Visual Basic 6.0

Propiedad
Provider
DefaultDatabase
ConnectionTimeout
CursorLocation
Mode
State

Unidad 7.- Bases de datos

Descripcin
origen de datos.
Indica el nombre del proveedor de la base de datos en una conexin.
Indica el nombre de la base de datos predeterminada en una conexin.
Indica el intervalo de espera mientras se establece una conexin antes de que se genere
un error.
Establece o devuelve la posicin de un motor de cursores. (AdUseNone, adUseClient,
adUseServer).
Indica los permisos disponibles para modificar datos en un objeto Connection. (Lectura,
escritura...).
Indica el estado de la conexin: abierta, cerrada.
Tabla 7.1.- Propiedades del objeto Connection de ADO

La propiedad ConnectionString permite especificar un origen de datos


mediante una cadena de conexin detallada que contiene una serie de
expresiones (argumento = valor) separadas con punto y coma.
Dim C As Cadena
C=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\bd.mdb
El argumento Provider especifica el nombre del proveedor que se usa en la
conexin, es decir, el motor de la base de datos y su versin. El argumento
DataSource se refiere a la ruta y nombre de la base de datos que se desea
acceder.
Tambin se puede especificar slo al proveedor mediante la propiedad
Provider; o slo el nombre de la base de datos mediante la propiedad
DefaultDatabase.
Las opciones de la propiedad CursorLocation se describen en la tabla
siguiente:
Opcin
adUseNone
adUseClient
adUseServer

Descripcin
No se usan servicios de cursor.
Usa cursores del lado del cliente suministrados por una biblioteca de cursores locales.
Predeterminado. Usa cursores suministrados por el controlador o por el proveedor de
datos.
Tabla 7.2.- Opciones de la propiedad CursorLocation.

El valor de la propiedad CursorLocation afecta solamente a las conexiones


establecidas despus de que se haya establecido la propiedad. Los cambios en
la propiedad CursorLocation no afectan a las conexiones existentes. Se
recomienda utilizar la opcin adUseClient si se esta trabajando con una base
de datos local.
b) Mtodos
Propiedad
Open
Execute
Close
Cancel

Descripcin
Abre una conexin a un origen de datos.
Ejecuta una consulta, instruccin SQL, procedimiento almacenado o texto especfico del
proveedor.
Cierra un objeto de conexin a un origen de datos y los objetos dependientes.
Cancela la ejecucin de una llamada asncrona pendiente a un mtodo Execute u Open.
Tabla 7.3.- Mtodos del objeto Connection de ADO

El mtodo Open slo establece una conexin fsica con la base de datos, para
lo cual requiere el establecimiento de las propiedades ConnectionString,
ConnectionTimeout y CursorLocation. La propiedad ConnectionTimeout esta
109

Visual Basic 6.0

Unidad 7.- Bases de datos

predefinida en 15 segundos, por lo tanto, algunas veces no es necesario


establecer. El mtodo Execute puede o no devolver filas. En el caso que
devuelva filas (registros), el valor devuelto es una referencia a un objeto
Recordset.
7.2.3. El objeto Recordset
Regla de Visual Basic de prefijo para nombre del objeto Recordset: rst.

a) Propiedades
Propiedad
AbsolutePosition
ActiveConnection
BOF
EOF
CursorLocation
CursorType
EditMode
Filter
LockType
RecordCount
Source
State
Status

Descripcin
Especifica la posicin ordinal del registro actual.
Indica a qu objeto Connection pertenece actualmente el objeto.
Indica que la posicin del registro actual est antes del primer registro.
Indica que la posicin del registro actual est despus del ltimo registro.
Establece o devuelve la posicin de un motor de cursores.
Indica el tipo de cursor que se usa en el objeto.
Indica el estado de modificacin del registro actual.
Indica un filtro para los datos del conjunto de registros.
Indica el tipo de bloqueo que se pone en los registros durante el proceso de edicin.
Indica el nmero actual de registros del objeto.
Indica el origen de los datos (una instruccin SQL, un nombre de tabla o un
procedimiento almacenado).
Describe el estado del objeto: abierto o cerrado.
Indica el estado del registro actual referente a las actualizaciones por lotes u otras
operaciones masivas.
Tabla 7.4.- Propiedades del objeto Recordset de ADO

La propiedad CursorLocation del Recordset es heredada del objeto Connection,


aunque se puede cambiar en el objeto Recordset. Use la propiedad
CursorType para especificar el tipo de cursor que se debe utilizar al abrir el
objeto Recordset. La propiedad CursorType es de lectura/escritura cuando el
Recordset est cerrado y de slo lectura cuando est abierto. CursorType
especifica los desplazamientos permitidos a travs del conjunto de registros
(ver Tabla 7.5)
Opcin
adOpenForwardOnly
adOpenKeyset
adOpenDynamic
adOpenStatic

Descripcin
Predeterminado. Slo permite desplazarse hacia delante en los registros. Esto mejora el
rendimiento en situaciones en las que slo se quiere pasar una vez por cada registro.
Son inaccesibles los registros que agregan o eliminan otros usuarios. Los cambios que
otros usuarios hacen en los datos permanecen visibles. Se admiten todo tipo de
movimientos entre registros.
Las incorporaciones, cambios y eliminaciones que hacen otros usuarios permanecen
visibles, y se admiten todo tipo de movimientos entre registros.
Una copia esttica de un conjunto de registros que se puede usar para buscar datos o
generar informes. Las incorporaciones, cambios o eliminaciones que hacen otros
usuarios no son visibles.
Tabla 7.5.- Opciones de la propiedad CursorType

La propiedad LockType se establece antes de abrir un Recordset para


especificar qu tipo de bloqueo debe usar el proveedor al abrirlo. LockType es
de lectura/escritura cuando el Recordset est cerrado y de slo lectura cuando
est abierto. Los tipos de bloqueo se especifican en la tabla siguiente.
Valor de LockType
adLockReadOnly

Descripcin
Predeterminado. Slo lecturano puede modificar los datos.
110

Visual Basic 6.0

Unidad 7.- Bases de datos

Valor de LockType
adLockPessimistic
adLockOptimistic
adLockBatchOptimistic

Descripcin
Bloqueo pesimista, registro a registro: el proveedor hace lo necesario para asegurar
la modificacin correcta de los registros, generalmente bloqueando registros en el
origen de datos.
Bloqueo optimista, registro a registro: el proveedor usa bloqueo optimista,
bloqueando registros slo cuando llama al mtodo Update.
Actualizaciones optimistas por lotes: requerido para el modo de actualizacin por
lotes como contraposicin al modo de actualizacin inmediata.
Tabla 7.6.- Opciones de la propiedad LockType

La propiedad EditMode se puede usar evaluar el estado de edicin de un


registro, y as determinar la ejecucin o no de acciones de guardado de
registros. EditMode puede tener uno de los siguientes valores:
Devuelve
adEditNone
adEditInProgress
adEditAdd
adEditDelete

Descripcin
Indica que no hay ninguna operacin de modificacin en ejecucin sobre el registro
actual.
Indica que los datos del registro actual se han modificado pero que no se han guardado
an.
Indica que se ha invocado el mtodo AddNew y que no se ha guardado an el registro
actual nuevo.
Indica que el registro actual se ha eliminado.
Tabla 7.7.- Valores que devuelve la propiedad EditMode

La propiedad Filter se utiliza para descartar de manera selectiva registros de


un objeto Recordset. El Recordset filtrado se convierte en el cursor actual. Esto
afecta a otras propiedades, como AbsolutePosition y RecordCount, que
devuelven valores basados en el cursor actual. Filter se basa en una cadena de
criterio que se compone de clusulas con el formato [Nombre campo] Operador Valor; por ejemplo, la siguiente instruccin devuelve slo
registros cuyo apellido sea Smith:
MiRecordset.Filter = "LastName = 'Smith'"
Se pueden crear clusulas compuestas mediante la concatenacin de clusulas
individuales con operadores lgicos (por ejemplo, "LastName = 'Smith' AND
FirstName = 'John'"). Si el nombre de campo contiene espacios, deber
encerrar el nombre entre corchetes (por ejemplo, [Last Name] = Smith). Se
utilizan comillas simples para las cadenas y el smbolo de numeral (#) para las
fechas. Si el operador es LIKE, se podrn utilizar comodines para el valor de
comparacin. Los nicos comodines que se admiten son el asterisco (*) y el
signo de porcentaje (%) y deben ser el ltimo carcter de la cadena.
b) Mtodos
Mtodo
AddNew
UpdateBatch
CancelBatch
Update
CancelUpdate
Open
Cancel
Close

Descripcin
Crea un nuevo registro
Escribe en disco todas las actualizaciones pendientes de proceso por lotes.
Cancela una actualizacin por lotes pendiente.
Guarda los cambios realizados en el registro actual de un objeto Recordset.
Cancela las modificaciones al registro actual o a un registro nuevo antes de invocar a
Update.
Abre un cursor que representa los registros de una base de datos o los resultados de una
consulta.
Cancela la ejecucin de una llamada asncrona pendiente a un mtodo Open.
Cierra un objeto Recordset, libera los datos asociados y los accesos exclusivos que
pudiera tener.
111

Visual Basic 6.0

Mtodo
MoveFirst
MoveNext
MovePrevious
MoveLast
Requery
Delete

Unidad 7.- Bases de datos

Descripcin
Pasa al primer registro y lo convierte en el registro actual.
Pasa al siguiente registro y lo convierte en el registro actual.
Pasa al anterior registro y lo convierte en el registro actual.
Pasa al ltimo registro y lo convierte en el registro actual.
Actualiza los datos de un objeto Recordset volviendo a ejecutar la consulta en que se
basa el objeto.
Elimina el registro actual o al grupo de registros especificados mediante la propiedad
Filter.
Tabla 7.8.- Mtodos del objeto Recordset de ADO

c) Eventos
Eventos
FetchProgress,
FetchComplete
WillChangeField,
FieldChangeComplete
WillMove, MoveComplete,
EndOfRecordset
WillChangeRecord,
RecordChangeComplete
WillChangeRecordset,
RecordsetChangeComplete

Descripcin
Estado de recuperacin: notificacin del progreso de una operacin de
recuperacin de datos, o de que la operacin de recuperacin ha concluido.
Administracin de cambio de campo: Notificacin de que el valor del campo
actual cambiar o ha cambiado.
Administracin de exploracin: Notificacin de que la posicin de fila (registro)
actual en un Recordset cambiar, ha cambiado o ha llegado al final del
Recordset.
Administracin de cambios en la fila: Notificacin de que algo en la fila
(registro) actual del Recordset cambiar o ha cambiado.
Administracin de cambios en el Recordset: Notificacin de que algo en el
Recordset actual cambiar o ha cambiado.
Tabla 7.9.- Eventos del objeto Recordset de ADO

7.2.4. Procedimiento para utilizar el modelo ADO


Una aplicacin tpica basada en ADO utiliza un conjunto de procedimientos u
operaciones establecidas para tener acceso a un origen de datos. El modelo de
datos ADO requiere obligatoriamente el establecimiento de una conexin antes de
cualquier operacin sobre la base de datos. El procedimiento se detalla en los
siguientes pasos:
a) Crear y abrir la conexin (objeto Connection)
Se especifica la cadena de conexin con informacin como el nombre del
origen de datos, la identificacin del usuario, la contrasea, el tiempo de
espera de la conexin, la base de datos predeterminada y la ubicacin del
cursor. Establecidos estos parmetros se procede a abrir la conexin mediante
el mtodo Open del objeto Connection.
b) Ejecutar el comando (objeto Command y Recordset)
Se especifica el tipo de comando (tabla, consulta o procedimiento almacenado)
y los registros afectados del origen de datos. El tipo de comando determina
bsicamente el tipo de origen de datos. El comando puede ser de seleccin de
registros o de accin sobre los registros. Cuando el comando es de seleccin
de registros, es necesario establecer el objeto Recordset que contendra al
conjunto de registros. A continuacin, segn sea el comando de seleccin o de
accin, se sigue uno de los siguientes procedimientos:
Ejecutando un comando de seleccin: Se crea y se abre el objeto
Recordset para obtener el conjunto de registros provenientes de una tabla,
del resultado de una consulta SQL o procedimiento almacenado. Para este
paso, primeramente se definen las caractersticas del cursor, el nombre de
la tabla, la instruccin de seleccin SQL, o nombre del procedimiento
112

Visual Basic 6.0

Unidad 7.- Bases de datos

almacenado; para posteriormente invocar el mtodo Open del objeto


Recordset.
Ejecutando un comando de accin: Consiste en ejecutar el mtodo
Execute del objeto Connection sin devolucin de filas. Este mtodo acta
sobre un conjunto de registros del origen de datos mediante instrucciones
de accin SQL, pero no devuelve registros.
c) Utilizar el conjunto de resultados (objeto Recordset)
Aplica si el comando es de seleccin. En funcin del tipo de cursor
(CursorType), se pueden examinar y modificar los datos de las filas en el
servidor o en el cliente, mediante mtodos y propiedades del objeto
Recordset.
d) Finalizar la conexin (objeto Connection)
Cancela la conexin con el origen de datos. Se utiliza el mtodo Close del
objeto Connection.
7.3. Acceso a datos mediante Visual Basic y ADO
7.3.1. Mtodos para utilizar ADO
El modelo ADO se puede implementar de varias maneras desde Visual Basic,
usando (a) El control de datos ADO, (b) ADO mediante cdigo, o (c) El entorno de
datos.
a) El control de datos ADO
Este control de datos permite efectuar una conexin con la base de datos y
define un conjunto de filas (Recordset) provenientes de una tabla, del
resultado de una consulta o de un procedimiento almacenado. Tiene la ventaja
que es fcil y rpidamente configurable, provee los botones para desplazarse a
travs de los registros y se puede reconfigurar durante la ejecucin. Pero por
otra parte, no se tiene suficiente control sobre la conexin, de tal manera que
se pueden producir errores durante la carga, si la base de datos es movida de
su ubicacin original.
b) ADO mediante cdigo
Creando los objetos ADO mediante cdigo, el control de la conexin y del
origen de datos es total; pero se deben crear por cdigo todos los
procedimientos, lo que puede resultar un poco tedioso para el programador.
Una vez que se han creado los objetos Recordset, se acostumbra a asignar
estas referencias de objeto al control de datos ADO, con el fin de aprovechar
su funcionalidad.
c) El entorno de datos
El entorno de datos es un objeto de la clase DataEnvironment que contiene las
conexiones (DEConnection), comandos (DECommand) y campos de una o
varias bases de datos. El diseador de entorno de datos permite definir uno o
varios objetos conexin (DEConnection); y de cada conexin, el objeto
Recordset se define mediante objetos comando (DECommand). Si bien
presenta la ventaja de crear los controles enlazados de manera sencilla

113

Visual Basic 6.0

Unidad 7.- Bases de datos

(arrastrar desde el diseador y colocar en el formulario), el acceso a los datos


se debe codificar haciendo referencia al nombre del objeto DataEnvironment.
Estos procedimientos, aunque se estudian de manera separada, se pueden
combinar o complementar entre s para obtener una mxima eficiencia de la
interfaz de base de datos y su configuracin. Por otra parte, la visualizacin de los
datos de un Recordset se realiza enlazando estos a objetos receptores de datos
que se conocen como Controles Enlazados a un campo o al Recordset completo.
7.3.2. Controles enlazados a datos
Los objetos receptores de datos son controles que pueden ser enlazados con
orgenes de datos. Estos son de la clase TextBox, ListBox, ComboBox, CheckBox,
PictureBox, Image y Label; y adems controles no estndar como el DataGrid,
DataCombo y DataList. Segn los mtodos para utilizar ADO (7.3.1), los controles
se pueden enlazar de las siguientes maneras:
a) Control de datos ADO: En tiempo de diseo, en la propiedad DataSource del
objeto se indica el nombre del control de datos ADO, y en la propiedad
DataField del objeto se escoge el nombre de uno de los campos del Recordset.
b) ADO mediante cdigo: Se enlaza en tiempo de ejecucin mediante una
referencia del objeto Recordset a la propiedad DataSource del objeto receptor
utilizando la sentencia SET. Tambin se debe establecer la propiedad DataField
con una instruccin de asignacin del nombre del campo como cadena en
forma explcita.
c) Entorno de datos: En tiempo de diseo, en la propiedad DataSource del objeto
se indica el nombre del entorno de datos, en la propiedad DataMember se
coloca el nombre del comando (DECommand), y luego se especifica el nombre
del campo en la propiedad DataField. Para este caso, tambin es posible
arrastrar y colocar.
7.3.3. El control de datos ADO
a) Agregar el control de datos en la caja de herramientas: Este se debe agregar
mediante el cuadro de dilogo Componentes (Ctrl+T), seleccionando el objeto
Microsoft ADO Data Control 6.0 (OLEDB), como se muestra en la figura 7.5.

114

Visual Basic 6.0

Unidad 7.- Bases de datos

Figura 7.5.- Dilogo de componentes (Control de datos ADO)

b) Crear la conexin con la base de datos: Una vez dibujado el control de datos
ADO, se utiliza su propiedad ConnectionString para crear la cadena de
conexin, la cual despliega un dilogo que facilita este procedimiento (ver
Figura 7.6).

Figura 7.6.- Ventana de la propiedad ConnectionString

Seleccionado la opcin Usar cadena de conexin, y el botn Generar,


aparece el asistente que se muestra en la figura 7.7, el cual permite
seleccionar, tanto el motor (Proveedor), como el nombre de la base de datos
(Conexin).

115

Visual Basic 6.0

Unidad 7.- Bases de datos

Figura 7.7.- Asistente para crear una conexin a un origen de datos ADO

c) Establecer el conjunto de registros: La propiedad CommandType define el tipo


de origen de datos. La propiedad RecordSource, abre el dilogo que se
muestra a continuacin para seleccionar una tabla o escribir un texto SQL.

Figura 7.8.- Dilogo de propiedades para establecer el origen de registros

d) Enlazar controles a los datos del Recordset: Los controles enlazados se crean
estableciendo las propiedades DataSource y DataField en tiempo de diseo;
pero tambin se pueden establecer en tiempo de ejecucin de la siguiente
116

Visual Basic 6.0

Unidad 7.- Bases de datos

manera. Suponga que el control de datos ADO tiene como nombre MiAdoDC, y
que se desea enlazar una caja de texto MiCaja al campo Apellido de una tabla
de datos (Recordset con CommandType = adCmdTable):
Set Me.MiCaja.DataSource = Me.MiAdoDC.Recordset
Me.MiCaja.DataField = "Apellido"
Tambin es posible mostrar todos los campos y registros utilizando el objeto
DataGrid. Para lo cual, primero debe agregarse a la caja de herramientas
mediante el dilogo de Componentes (Ctrl+T) seleccionado la opcin Microsoft
DataGrid Control 6.0 (OLEDB). En este caso slo se especifica la propiedad
DataSource, ya que no es necesario especificar un campo en particular.
Suponga que el objeto DataGrid tiene el nombre MiDataGrid:
Set Me.MiDataGrid.DataSource = Me.MiAdoDC.Recordset
e) Utilizar el conjunto de registros: La propiedad Recordset del control de datos
ADO hace referencia al conjunto de registros especificados mediante las
propiedades CommandType y RecordSource. Suponga que el control de datos
ADO tiene como nombre MiAdoDC:
Agregar un registro nuevo
MiAdoDC.Recordset.AddNew
Guardar modificaciones del registro activo o del registro nuevo
MiAdoDC.Recordset.Update
Cancelar una modificacin o agregado de registro
MiAdoDC.Recordset.CancelUpdate
Buscar un registro cuyo Apellido comience con el contenido de una caja de
texto
Dim Buscar As String
Me.MiAdoDC.Recordset.MoveFirst
Buscar = "Apellido Like '" & Me.Text4.Text & "*'"
Me.MiAdoDC.Recordset.Find Buscar
If Me.MiAdoDC.Recordset.EOF Then
Me.Label1.Caption = "No se encontr"
Me.MiAdoDC.Recordset.MoveFirst
End If
Borrar el registro activo
MiAdoDC.Recordset.Delete
Desplazarse al ltimo registro
MiAdoDC.Recordset.MoveLast
Mostrar la cantidad de registros del Recordset en un objeto etiqueta
Me.label1.Caption = MiAdoDC.Recordset.RecordCount

117

Visual Basic 6.0

Unidad 7.- Bases de datos

7.3.4. Creacin de objetos ADO en cdigo


a) Crear la referencia a la biblioteca de tipos ADO: Las referencias se establecen
a travs del men Proyecto | Referencias, el cual despliega el dilogo que se
muestra a continuacin. Debe seleccionar Microsoft ActiveX Data Object 2.X
Library.

Figura 7.9.- Ventana de referencias a libreras de objetos

b) Crear las variables de objeto: Para crear eventos en una variable tipo objeto se
utiliza la sentencia WithEvents despus de Dim, Public o Static.
Dim WithEvents Cnn As ADODB.Connection
Dim WithEvents Rst As ADODB.Recordset
c) Crear los objetos Connection y Recordset: Se recomienda utilizar el evento
Form_Load para este fin. Se utiliza la sentencia Set para la referencia a objeto.
Set Cnn = New ADODB.Connection
Set Rst = New ADODB.Recordset
d) Abrir el objeto Connection: Es conveniente chequear previamente el estado de
la conexin, ya que si esta se encuentra abierta, y se intenta abrir
nuevamente, se producir un error. Antes de abrir la conexin, se debe
establecer la cadena de conexin mediante la asignacin de la propiedad
ConnectionString.
If Cnn.State Then Cnn.Close
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;_
Data Source=C:\Notas.mdb"
Cnn.Open
e) Abrir el objeto Recordset: Al igual que el objeto Connection, es conveniente
verificar previamente el estado del Recordset, ya se produce un error al
intentar abrir un Recordset que ya est abierto. Para abrir el conjunto de
registros (Recordset) se debe especificar la localizacin del cursor
118

Visual Basic 6.0

Unidad 7.- Bases de datos

(CursorLocation), el tipo de cursor (CursorType), el tipo de bloqueo de


registros (LockType), la conexin activa, y el origen de registros. En el ejemplo
siguiente, las propiedades CursorLocation y LockType se establecen de manera
explcita, y el resto de las propiedades van implcitas en la misma lnea de
ejecucin del mtodo Open.
If Rst.State Then Rst.Close
Rst.CursorLocation = adUseClient
Rst.LockType = adLockOptimistic
Rst.Open "Alumnos", Cnn, adOpenDynamic
f)

Enlazar los datos del Recordset a un control: Una vez mas, basta con
establecer las propiedades DataSource y DataField del objeto que se desea
enlazar, en este caso una caja de texto llamada MiCaja en la que se quieren
mostrar los valores del campo Apellido:
Set Me.MiCaja.DataSource = Rst
Me.MiCaja.DataField = "Apellido"
Si se desea mostrar todos los campos y registros utilizando el objeto DataGrid
se debe especificar slo la propiedad DataSource:
Set Me.MiDataGrid.DataSource = Rst

g) Utilizar el conjunto de registros: El objeto Rst (Recordset) hace referencia al


conjunto de registros especificados en la ejecucin del mtodo Open.
Agregar un registro nuevo
Rst.AddNew
Guardar modificaciones del registro activo o del registro nuevo
Rst.Update
Cancelar una modificacin o agregado de registro
Rst.CancelUpdate
Buscar un registro cuyo Apellido comience con lo que est en una caja de
texto
Dim Buscar As String
Rst.MoveFirst
Buscar = "Apellido Like '" & Me.Text4.Text & "*'"
Rst.Find Buscar
If Rst.EOF Then
Me.Label1.Caption = "No se encontr"
Rst.MoveFirst
End If
Borrar el registro activo
Rst.Delete
Desplazarse al ltimo registro
Rst.MoveLast
119

Visual Basic 6.0

Unidad 7.- Bases de datos

Mostrar la cantidad de registros del Recordset en un objeto etiqueta


Me.label1.Caption = Rst.RecordCount
7.3.5. El diseador de entorno de datos
a) Agregar el diseador de entorno de datos: Se debe visualiza el dilogo
componentes (Ctrl+T) y seleccionar Data Environment de la pestaa
Diseadores:

Figura 7.10.-Dilogo Componentes (Diseadores)

b) Agregar un entorno de datos: Al hacer clic en el men Proyecto | Agregar Data


Environment, se despliega el diseador del entorno de datos como se muestra
en la figura 7.11. Este diseador permite configurar el objeto Entorno de datos
con mltiples conexiones (Control, Escuelas) u objetos DEConnection, y para
cada conexin se pueden especificar conjuntos de registros (Alumnos,
Exmenes, Asistencia, Materias, etc.) u objetos DECommand.

120

Visual Basic 6.0

Unidad 7.- Bases de datos

Figura 7.11.-Diseador del objeto Entorno de datos

c) Crear los objetos DEConnection y DECommand: Estos objetos se crean


haciendo clic derecho sobre el objeto correspondiente. Por ejemplo para crear
conexiones se hace clic derecho sobre el objeto de entorno de datos
MiEntornoDeDatos.
d) Crear los controles enlazados: Esta es una de las grandes ventajas de usar el
diseador del entorno de datos. Con la operacin de arrastrar y colocar, los
objetos enlazados se crean automticamente sobre el formulario. Si no se
desea utilizar esta facilidad, o si desea reconfigurar los controles enlazados en
tiempo de diseo, se deben establecer las propiedades DataSource (Nombre
del objeto entorno de datos: MiEntornoDeDatos), DataMember (Nombre de un
objeto DECommand: Alumnos), y DataField (Nombre de uno de los campos de
dataMember). Ahora en tiempo de ejecucin, slo se hace referencia al objeto
Recordset correspondiente a un comando. Por ejemplo, el comando Alumnos
crea automticamente el objeto rsAlumnos de la clase Recordset.
Set Me.MiCaja.DataSource = MiEntornoDeDatos.rsAlumnos
Me.MiCaja.DataField = "Apellido"
Igualmente para el control DataGrid, en tiempo de diseo habra que
especificar las propiedades Datasource y DataMember; pero en tiempo de
ejecucin basta con hacer referencia al objeto Recordset relacionado al
comando:
Set Me.MiDataGrid.DataSource = MiEntornoDeDatos.rsAlumnos
e) Utilizar el conjunto de registros: Los objetos rsAlumnos, rsExamenes,
rsMaterias, etc., son de la clase Recordset, por lo tanto permiten manipular el
conjunto de registros.
Agregar un registro nuevo
MiEntornoDeDatos.rsAlumnos.AddNew
Guardar modificaciones del registro activo o del registro nuevo
MiEntornoDeDatos.rsAlumnos.Update
Cancelar una modificacin o agregado de registro
MiEntornoDeDatos.rsAlumnos.CancelUpdate
121

Visual Basic 6.0

Unidad 7.- Bases de datos

Buscar un registro cuyo Apellido comience con lo que est en una caja de
texto
Dim Buscar As String
MiEntornoDeDatos.rsAlumnos.MoveFirst
Buscar = "Apellido Like '" & Me.Text4.Text & "*'"
MiEntornoDeDatos.rsAlumnos.Find Buscar
If MiEntornoDeDatos.rsAlumnos.EOF Then
Me.Label1.Caption = "No se encontr"
MiEntornoDeDatos.rsAlumnos.MoveFirst
End If
Borrar el registro activo
MiEntornoDeDatos.rsAlumnos.Delete
Desplazarse al ltimo registro
MiEntornoDeDatos.rsAlumnos.MoveLast
Mostrar la cantidad de registros del Recordset en un objeto etiqueta
Me.label1.Caption = MiEntornoDeDatos.rsAlumnos.RecordCount
7.4. Lenguaje de consulta estructurado SQL
7.4.1. Introduccin a SQL
Como hemos visto, el modelo relacional se basa en el Lenguaje de Consulta
Estructurado, mejor conocido como SQL. El lenguaje de consulta estructurado
(SQL) es un lenguaje de base de datos normalizado, utilizado o incluido en el
motor de base de datos para crear objetos RecordSet. Tambin se puede utilizar
con el mtodo Execute del objeto Connection de ADO para manipular directamente
lotes de registros de las bases de datos. Es posible crear consultas SQL de paso a
travs para manipular bases de datos remotas cliente-servidor. SQL es un
lenguaje de programacin, cuyos orgenes estn estrechamente relacionados con
la invencin de las bases de datos relacionales por E. F. Codd a principios de los
aos 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. El SQL moderno ha evolucionado
hasta ser un estndar utilizado ampliamente en casi todas las bases de datos
relacionales y se encuentra definido en 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 Microsoft Jet. SQL
tiene la ventaja de ser una interfaz de bases de datos normalizada, por lo que
conocer los comandos SQL permite acceder y manipular una gran variedad de
productos de bases de datos procedentes de distintos fabricantes.
Para utilizar SQL desde Visual Basic, se debe construir la instruccin SQL en una
variable tipo cadena de caracteres, la cual sirve de argumento para objetos de
ADO. El lenguaje permite efectuar dos tipos de consultas:
a) Consultas de seleccin: devuelven un conjunto de registros que se pueden
manipular mediante el objeto RecordSet de ADO. Por ejemplo, habiendo
122

Visual Basic 6.0

Unidad 7.- Bases de datos

creado los objetos Cnn (Connection) y Rst (Recordset), se utiliza el mtodo


Open del objeto Recordset para obtener registros de la tabla Alumnos:
Dim CadSQL As String
CadSQL = SELECT [Apellido], [Nombre] FROM Alumnos;
If Rst.State Then Rst.Close
Rst.CursorLocation = adUseClient
Rst.LockType = adLockOptimistic
Rst.Open CadSQL, Cnn, adOpenDynamic
b) Consultas de accin: realizan una operacin sobre la base de datos o sobre
uno o ms registros de una tabla. Para este caso no es necesario crear el
objeto Recordset, ya que las consultas de accin no devuelven registros. En su
lugar se utiliza el mtodo Execute del objeto Connection. El siguiente ejemplo
elimina los registros de la tabla Alumnos con ms de 25 inasistencias:
Dim CadSQL As String
CadSQL = DELETE * FROM Alumnos WHERE [Inasistencia] > 25
If Cnn.State Then Cnn.Close
Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;_
Data Source=C:\Notas.mdb"
Cnn.Execute CadSQL
Como se observa en los ejemplos anteriores, lo nico nuevo es la construccin de
la instruccin SQL, ya que los objetos ADO se siguen utilizando de la misma
manera. A continuacin veremos los elementos y sintaxis del lenguaje de consulta
estructurado SQL.
7.4.2. Elementos del lenguaje SQL
El lenguaje SQL est compuesto por (a) Comandos, (b) Clusulas, (c) Operadores
y (d) Funciones de agregado. Estos componentes, se combinan en instrucciones
completas para seleccionar, actualizar, agregar o borrar registros de bases de
datos.
a) Comandos SQL
Los comandos corresponden a las rdenes que se especifican mediante SQL, y
en la sintaxis constituyen el inicio de cada instruccin.
Comando
SELECT
UPDATE
INSERT
DELETE

Utilizado para
Seleccionar un conjunto de registros de la base de datos y crear un Recordset.
Modificar los valores de los campos de uno o ms registros.
Agregar uno o ms registros a una tabla de base de datos.
Eliminar uno o ms registros de una tabla de base de datos.
Tabla 7.10.- Algunos comandos de SQL

b) Clusulas SQL
Las clusulas son condiciones de modificacin utilizadas para definir los datos
que desean seleccionar o manipular, y la forma como estos se presentan.
Clusula
FROM
WHERE
GROUP BY
HAVING
ORDER BY

Descripcin
Especifica las tablas de las cuales se van a seleccionar los registros.
Especifica las condiciones de los registros que se van a seleccionar.
Separa los registros seleccionados en grupos especficos.
Especifica las condiciones que deben satisfacer cada grupo generado por GROUP BY.
Indica los campos para el ordenamiento de los registros.
123

Visual Basic 6.0

Unidad 7.- Bases de datos


Tabla 7.11.- Algunas clusulas de SQL

c) Operadores SQL
Existen dos tipos de operadores en el lenguaje SQL, operadores lgicos y
operadores relacionales. Los operadores lgicos se usan para conectar
expresiones lgicas, normalmente dentro de una clusula WHERE o HAVING.
Para SQL los operadores lgicos son: AND, OR y NOT. Por otra parte, los
operadores relacionales (ver Tabla 7.12) se usan para comparar valores
relativos de dos expresiones.
Operador
<
>
=
BETWEEN
IN
<=
>=
<>
LIKE

Significado/Uso
Menor que
Mayor que
Igual que
Especifica un intervalo de valores
Especifica registros de una base de datos
Menor o igual que
Mayor o igual que
Distinto de
Utilizado en la comparacin de un modelo
Tabla 7.12.- Operadores de comparacin SQL

d) Funciones de agregado SQL


Las funciones de agregado (ver Tabla 7.13) se usan dentro de una clusula
SELECT para devolver un nico valor que se aplica a un conjunto de registros
agrupados segn cierto criterio.
Funcin
COUNT
MAX
AVG
SUM
MIN

Descripcin
Calcula el nmero de veces que aparece un valor en un campo especificado.
Devuelve los registros con el valor ms alto de un campo especificado.
Calcula el promedio de todos los valores de un campo especificado.
Calcula la suma de todos los valores de un campo especificado.
Devuelve los registros con el valor ms bajo de un campo especificado.
Tabla 7.13.- Funciones de agregado SQL

7.4.3.

Consultas de seleccin (SELECT)

La instruccin SELECT se utiliza para recuperar registros de una base de datos en


forma de un conjunto de registros, almacenndolos en un nuevo objeto Recordset.
Las instrucciones SELECT no modifican los datos de la base de datos; slo los
recuperan. La sintaxis general de la consulta SELECT es la siguiente:
SELECT listaCampos
FROM nombresTablas IN nombreBaseDatos
WHERE criteriosDeSeleccin
GROUP BY listaCampos
HAVING criteriosDeGrupo
ORDER BY listaCampos [ASC|DESC]
La consulta SELECT ms simple, seleccionando slo los campos Nombre y Apellido
es:
SELECT [Nombre], [Apellido]
FROM Empleados;
Sintaxis SQL: Los nombres de campos se colocan entre corchetes y se separan con comas. Las
instrucciones SQL terminan con punto y coma.
124

Visual Basic 6.0

Unidad 7.- Bases de datos

Para seleccionar todos los campos de la tabla Empleados:


SELECT *
FROM Empleados;
Sintaxis SQL: El asterisco en SQL indica todos los campos. Para el operador LIKE el comodn
asterisco se sustituye por el caracter porcentaje %.

La clusula WHERE especifica una condicin para el filtrado de los registros. La


clusula GROUP BY permite agrupar el conjunto de registros, y HAVING determina
los registros a filtrar una vez efectuado el agrupamiento. Mientras GROUP BY
ordena los registros por el campo especificado, ORDER BY permite seleccionar otro
campo de ordenamiento. Por ejemplo se pueden obtener todos los empleados
contratados despus del ao 2000, cuyo apellido comienza con las letras Ro
(Rodriguez, Romn, Rosales,), agrupados por el departamento al que
pertenecen, y con sueldo inferior o igual a 500 mil Bolvares, adems ordenado por
apellido:
SELECT [Nombre], [Apellido], [Departamento]
FROM Empleados
WHERE [Ingreso] > #31/12/2000# AND [Apellido] LIKE 'R%'
GROUP BY [Departamento]
HAVING [Sueldo] <= 500000
ORDER BY [Apellido] ASC;
Sintaxis SQL: Las cadenas de caracteres se especifican entre apstrofes. Las fechas se
delimitan con el signo numeral. Los valores numricos no utilizan delimitadores.

Las funciones de agregado se utilizan en la definicin de campos de la consulta


SELECT. El resultado de las funciones de agregado se adjudica a un alias mediante
la palabra reservada AS. Por ejemplo, se puede calcular la suma de los sueldos de
todos los empleados por departamento:
SELECT [Departamento], SUM([Sueldo]) AS CostoDepartamento
FROM Empleados;
7.4.4. Consultas de accin (DELETE, INSERT, UPDATE)
a) Consulta de eliminacin (DELETE)
DELETE [tabla.*]
FROM expresinTabla
WHERE criterios
En el siguiente ejemplo se eliminan los registros de la tabla Empleados cuyo
campo Estatus es igual Despedido.
DELETE *
FROM Empleados
WHERE [Estatus] = 'Despedido';
b) Consulta de datos aadidos (INSERT)
Se puede ejecutar una consulta de datos aadidos con registros mltiples:
INSERT INTO destino [IN baseDatosExterna]
SELECT [origen.]campo1[, campo2[, ...]
125

Visual Basic 6.0

Unidad 7.- Bases de datos

FROM expresinTabla
Sera conveniente almacenar los registros de empleados despedidos en una
tabla antes de ejecutar la consulta de eliminacin en la tabla de empleados:
INSERT INTO Despedidos
SELECT *
FROM Empleados
WHERE [Estatus] = 'Despedido';
Se puede ejecutar una consulta de datos aadidos sobre un nico registro:
INSERT INTO destino [(campo1[, campo2[, ...]])]
VALUES (valor1[, valor2[, ...])
Por ejemplo, para agregar un nuevo empleado a la tabla empleados:
INSERT INTO Empleados ([Nombre], [Apellido], [Sueldo])
VALUES ('Pedro', 'Prez', 500000)
c) Consulta de actualizacin (UPDATE)
UPDATE tabla
SET Campo1 = nuevoValor1, Campo2 = nuevoValor2
WHERE criterios;
UPDATE es especialmente til cuando desea cambiar numerosos registros o
cuando los registros que quiere cambiar estn en mltiples tablas. Puede
cambiar varios campos simultneamente. El siguiente ejemplo incrementa el
sueldo de todos empleados con 5 o ms de 5 aos de antigedad en un 10
por ciento. Simultneamente, se actualiza la edad del empleado.
UPDATE Empleados
SET [Sueldo] = [Sueldo]*1.1,
[Edad] = DateDiff('yyyy', [Nacimiento], Date()),
WHERE [Antiguedad] >= 5;
7.5. Reportes de bases de datos
7.5.1. Introduccin a reportes
Como instrumento de administracin, el reporte o informe es usado para
proporcionar a la gerencia los elementos necesarios para controlar una
organizacin de forma efectiva. Los informes presentan los datos de una base de
datos de una manera organizada, comprensiva y atractiva al usuario. Es posible
generar pedidos, facturas, cartas, etiquetas de correos y otros de salida de datos.
Los generadores de informe son programas especializados que cuentan con,
adems de motores de bases de datos, motores de impresin que se encargan de
controlar todo lo relacionado al formato de las hojas de reporte. Visual Basic en su
versin 6.0 incluye un generador de informes integrado como objeto de la clase
DataReport. En versiones anteriores, y en la nueva versin .NET, se incluye un
programa generador de informes conocido como Crystal Report. Dada la eficiencia
de Crystal Report y su vigencia en nuevas versiones de Visual Basic, en esta gua
se tratar este generador de informes.
126

Visual Basic 6.0

Unidad 7.- Bases de datos

7.5.2. Pasos para crear un reporte


Para crear un informe con Crystal Report, previamente debe asegurarse que est
incluido en la lista de Diseadores en la ventana de Componentes (Ctrl+T). De
esta manera aparece como una de las opciones dentro del men Proyecto del IDE
de Visual Basic. Aunque es posible crear el reporte utilizando por separado el
programa Crystal Report, y luego anexarlo al proyecto; los pasos que veremos a
continuacin se refieren al uso del generador de informes en forma integrada.
a) Seleccione el men Proyecto | Agregar Crystal Report 9. Aparece el cuadro de
dilogo Crystal Report Gallery.

Figura 7.12.-Dilogo Crystal Report Gallery

b) Seleccione la opcin correspondiente al tipo de creacin de reporte, es decir;


Using the Report Expert, As a Blank Report o From an Existing Report. En
nuestro caso utilizaremos la primera opcin, para la cual se habilita la lista de
asistentes segn el tipo de reporte, de la cual escogeremos Standard; y al
presionar el botn OK se abre el asistente que se muestra en la figura 7.13.

127

Visual Basic 6.0

Unidad 7.- Bases de datos

Figura 7.13.-Dilogo de seleccin de Tablas para reportes

c) La opcin Create New Connection incluye OLEDB (ADO), el cual despliega un


sencillo asistente, parecido al del control de datos ADO, para seleccionar el
motor y el archivo de base de datos. Al presionar el botn siguiente se abre el
dilogo de seleccin de campos.

Figura 7.14.-Dilogo de seleccin de Campos para reportes

d) El siguiente cuadro de dilogo permite elegir uno o varios campos mediante


los cuales se agrupan los datos en la presentacin del reporte. Para nuestro
ejemplo, los productos podran agruparse por el campo fabricante.

128

Visual Basic 6.0

Unidad 7.- Bases de datos

Figura 7.15.-Dilogo para agrupar los registros de un reporte

e) El siguiente cuadro de dilogo permite elegir uno o varios campos mediante


los cuales se filtran los datos con el objeto de mostrar slo ciertos registros.
Por ejemplo, se podran mostrar slo los productos cuyo campo Existencia
tenga el valor de cero con el objeto de generar un listado de fallas o faltantes.
Es importante hacer notar que al seleccionar un campo determinado, aparecen
el en cuadro de dilogo dos cajas combinadas, una para seleccionar el
operador relacional, y otra para seleccionar el valor de comparacin.

Figura 7.16.-Dilogo para filtrar los registros de un reporte

f)

A continuacin se presenta un cuadro de dilogo con los estilos o plantillas de


reporte disponibles, lo que facilita en gran medida la tarea de diseo.
129

Visual Basic 6.0

Unidad 7.- Bases de datos

Figura 7.17.-Dilogo para seleccionar la plantilla de diseo de un reporte

g) Finalmente el asistente consulta al usuario sobre dos aspectos. El primero


solicita confirmacin para crear automticamente el formulario donde se
presentar el reporte, y se recomienda tildar este aspecto positivamente. La
segunda consulta es sobre la modificacin automtica de las propiedades del
proyecto, la cual debe indicarse en NO para evitar que Crystal Report cambie
el objeto inicial que se carga al ejecutarse la aplicacin.

Figura 7.18.-Dilogo de confirmacin para crear un reporte

h) A continuacin, en el proyecto se crea un formulario nuevo y un objeto Crystal


Report. Tambin se puede observar el reporte en vista de diseo. Lo que
queda es escribir el cdigo necesario para mostrar el nuevo formulario
(mtodo Show).

130

Visual Basic 6.0

Unidad 7.- Bases de datos

7.5.3. Partes del generador de reportes


En la vista de diseo, el generador de reportes presenta tres secciones bsicas:
Encabezado de pgina, Detalle y Pie de pgina. Tanto el encabezado como el pie
de pgina albergan etiquetas, membretes, ttulos de las columnas y cualquier otra
informacin propia del informe. La seccin que contiene los datos es la de detalle.
En esta seccin se colocan los campos de la base de datos.

Figura 7.19.-Vista de diseo de un reporte de Crystal Report

Cuando el informe se muestra en vista preliminar, el cuerpo de la pgina muestra


los datos almacenados en la base de datos; y los campos especiales, como la
fecha, se actualizan a la fecha del computador.

Figura 7.20.-Vista preliminar de un reporte de Crystal Report

131

Visual Basic 6.0

Unidad 7.- Bases de datos

7.5.4. Campos de un reporte


Toda la informacin que aparece en un reporte est contenida en objetos grficos
denominados campos. Adems de estos campos, la herramienta de diseo ofrece
dos objetos grficos para la creacin de lneas y cuadros. A continuacin veremos
los tipos de campos ms importantes que se pueden colocar en un reporte de
Crystal Report.

Figura 7.21.-Tipos de campos de Crystal Report

a) Campos de base de datos:


Son los campos que contienen informacin de las columnas de una tabla o
Recordset de la base de datos activa. Se caracterizan porque se colocan en la
seccin Detalle del generador de informe y se corresponden con cada uno de
los registros de la base de datos.
Observacin: Slo deben arrastrase los campos seleccionados hasta la seccin correspondiente
del generador de informe.

b) Campos de texto:
Estos campos se corresponden al objeto etiqueta conocido de Visual Basic. Un
campo de texto es simplemente un campo que contiene texto independiente.
Puede contener un nico carcter, una palabra, frases completas o prrafos.
Este es un comando usado para agregar etiquetas, ttulos, notas al pie,
disculpas, explicaciones, comentarios o cualquier otra clase de texto que fuera
necesario. Para agregar un campo de texto, este se debe escoger de la clase
TextObject en la caja de herramientas, para dibujarlo luego en la seccin
correspondiente.
Observacin:

Como el tamao mximo de un campo de texto es 32K (incluyendo


los caracteres retorno de carro y salto de lnea), se recomienda que los campos
de texto se usen slo con bloques de texto de tamao ms manejable.

c) Campos de frmula:
Los campos de frmula permiten crear un objeto de datos calculados. Una
frmula es una instruccin que establece ciertas acciones sobre determinados
datos antes de imprimirlos en el informe. Crystal Report ofrece un editor de
ecuaciones, el cual se activa automticamente con el botn derecho del ratn
y seleccionar New. El editor de ecuaciones contiene un conjunto de funciones
132

Visual Basic 6.0

Unidad 7.- Bases de datos

matemticas, de cadena y otras, operadores de varios tipos y los campos de la


base de datos activa para construir expresiones de clculo.

Figura 7.22.-Editor de ecuaciones de Crystal Report

d) Campos especiales:
La informacin adicional de un informe referida a fecha, nmero de pgina,
nmero de registros, etc., se puede insertar utilizando los campos especiales.
Los campos especiales son como los campos de frmula, pero estn
predefinidos en el sistema.

Figura 7.23.-Campos especiales de Crystal Report

133

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

Unidad 8
Tecnologa OLE
A pocos hombres les falta capacidad; si fracasan es porque les falta dedicacin
.- Calvin Coolidge

8.1. Teora de OLE


8.1.1. Estndar COM
Visual Basic proporciona las herramientas que le permiten combinar objetos de
distintos orgenes mediante la visin evolucionada de componentes de software,
que se basa un estndar abierto y extensible conocido como el Modelo de Objetos
Componentes (COM, Component Object Model). COM es una arquitectura o
modelo de programacin de plataforma independiente, distribuida y orientada a
objeto para la creacin de componentes de software (objetos) que puedan
interactuar. Gracias a este estndar binario se pueden disear aplicaciones a partir
de componentes que se comunican entre s, que interactan unos con otros, a
travs de un conjunto comn de interfaces, con la velocidad y la sencillez de uso
que caracteriza a Visual Basic. El Modelo de Objetos Componentes (COM), incluye
la Automatizacin como el estndar de interoperabilidad, y ha permitido el
desarrollo de las tecnologas que habilitan la interoperabilidad, conocidas como
ActiveX. La Automatizacin es una caracterstica del Modelo de Objetos
Componentes (COM), y este a su vez forma la infraestructura de la especificacin
ActiveX.
8.1.2. Automatizacin
La Automatizacin, antes denominada Automatizacin OLE, es un estndar usado
por las aplicaciones para proveer objetos de una forma consistente a otras
aplicaciones; en otras palabras, la norma que permite la comunicacin entre
objetos de las aplicaciones se conoce como Automatizacin. Se puede decir que la
automatizacin es la parte de OLE que define, no slo cmo se comparte el cdigo
entre las aplicaciones, sino tambin cmo se pueden compartir servicios pblicos
entre las mismas. La Automatizacin se usa tpicamente para crear aplicaciones
que ofrecen objetos a herramientas de programacin y lenguajes de macros, para
crear y manipular los objetos de una aplicacin desde otra aplicacin, o para crear
herramientas para tener acceso a objetos y manipularlos. El uso de la
Automatizacin en Visual Basic permite "tomar prestada" la funcionalidad de otras
aplicaciones, al controlar sus objetos desde el interior de la aplicacin de Visual
Basic. Si se trata de un objeto de Automatizacin, se pueden emplear sus
propiedades y mtodos en el cdigo. Cada objeto de Automatizacin es un bloque
que puede utilizarse en cdigo para recopilar y exponer informacin y funciones de
otras aplicaciones, de forma que tengan sentido en la aplicacin actual. Por
ejemplo, se puede generar una aplicacin que utilice Excel de Microsoft como
134

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

motor de clculo, y cuyos informes se generen como documentos de Microsoft


Word. Muchas de las aplicaciones actuales han aprovechado la Automatizacin
para usar el cdigo de otras aplicaciones.
8.1.3. Tecnologa OLE y ActiveX
Una aplicacin completa se puede ofrecer como componente (objeto) a otra
aplicacin mediante una parte de ActiveX conocida como OLE. Se dice que la
tecnologa ActiveX incluye a la tecnologa OLE, pero que no est limitada a ella.
Mientras ActiveX se utiliza en forma general, OLE se enmarca en la creacin y
manipulacin de documentos compuestos; es decir, documentos con distintos
formatos. A pesar de esta diferenciacin muchos autores coinciden en que OLE era
la forma tradicional de referirse a lo que ahora se conoce como ActiveX. La palabra
ActiveX es el nombre de marca de Microsoft para agrupar a las tecnologas que
habilitan la interoperabilidad usando el Modelo de Objetos Componentes (COM).
La interoperabilidad permite a componentes de software interactuar unos con
otros sin tener en cuenta el lenguaje en que fueron escritos. As, ActiveX
(anteriormente OLE) facilita la integracin de aplicaciones permitiendo que los
programadores definan juegos de interfaces, grupos de mtodos y propiedades a
travs de los cuales una aplicacin accede a los servicios de objetos de otra
aplicacin. El concepto de ofrecer funcionalidad mediante interfaces estndar hace
de ActiveX una tecnologa abierta y extensible, ya que todas las aplicaciones
basadas en ActiveX pueden definir y usar estas interfaces. La tecnologa ActiveX
permite ensamblar componentes software reutilizables en aplicaciones y servicios,
conocidos como Componentes ActiveX.
8.1.4. Componentes ActiveX
Un componente ActiveX es un fragmento reutilizable de cdigo de programacin y
datos compuesto por uno o ms objetos creados mediante la tecnologa ActiveX.
Un componente ActiveX es una unidad de cdigo ejecutable, como un archivo
.exe, .dll u .ocx, que sigue la especificacin ActiveX para proporcionar objetos. Los
componentes ActiveX le ofrecen al programador la capacidad de ensamblar
aplicaciones sofisticadas a partir de piezas que ya existen, dentro de las cuales se
encuentran:
a) Componentes incluidos en las aplicaciones habilitadas para ActiveX
Las aplicaciones compatibles con la tecnologa ActiveX, como Microsoft Excel,
Microsoft Word y Microsoft Access, proporcionan objetos que se puede
manipular mediante programacin desde la aplicacin de Visual Basic. Por
ejemplo, puede usar en su aplicacin propiedades, mtodos y eventos de una
hoja de clculo de Microsoft Excel o de un documento de Microsoft Word.
b) Componentes de cdigo ActiveX
Los componentes de cdigo (antes Servidores OLE) son bibliotecas de objetos
programables que proporcionan una forma fcil de empaquetar el cdigo para
su reutilizacin. A diferencia de un objeto contenido en una aplicacin
habilitada para ActiveX, un objeto contenido en el componente de cdigo se
puede ejecutar en el mismo proceso que la aplicacin, lo que permite un
acceso ms rpido al objeto.
c) Controles ActiveX
135

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

Puede agregar caractersticas sin necesidad de crearlas, utilizando controles


ActiveX como componentes. Un control ActiveX es una extensin del cuadro de
herramientas de Visual Basic. Los controles ActiveX se usan como cualquiera
de los controles estndar incorporados, como el control CheckBox.
Cuando se agrega un control ActiveX, este pasa a formar parte del entorno de
desarrollo y del tiempo de ejecucin, y proporciona nueva funcionalidad a la
aplicacin. Los controles ActiveX incrementan la capacidad del programador
conservando algunos mtodos, propiedades y eventos ya familiares, como la
propiedad Name, que se comportan como cabra esperar. Pero adems, los
controles ActiveX incorporan mtodos y propiedades adicionales que aumentan
enormemente la flexibilidad y capacidad del programador en Visual Basic.
Existen controles ActiveX de diversos proveedores que ofrecen muchas
caractersticas especializadas, como mostrar un calendario en un formulario o
leer datos con un determinado formato. Por ejemplo, las ediciones Profesional
y Empresarial de Visual Basic incluyen los controles Windows Common, que
permiten crear aplicaciones totalmente compatibles con las barras de
herramientas, barras de estado y modos de ver de las estructuras de
directorios de Windows en sus diferentes versiones.
d) Documentos ActiveX
Los documentos ActiveX le permiten crear aplicaciones interactivas para
Internet. Se pueden definir formularios que pueden aparecer en ventanas de
los exploradores de Internet. Los documentos ActiveX pueden mostrar cuadros
de mensajes y formularios secundarios, y pueden contener controles ActiveX.
Los documentos ActiveX tambin pueden funcionar como componentes de
cdigo.
Adems de los tipos de componentes ActiveX existentes antes expuestos, Visual
Basic tambin permite al programador crear sus propios componentes. El
desarrollo de componentes software mediante la tecnologa ActiveX no se debe
confundir con la programacin orientada a objetos (OOP); ya que esta se ocupa de
crear objetos, mientras que ActiveX se ocupa de que los objetos funcionen juntos.
8.1.5. Componentes en proceso y fuera de proceso
Los componentes ActiveX interactan con la aplicacin y entre s mediante una
relacin cliente-servidor. El cliente es el cdigo de aplicacin que utiliza las
caractersticas de un componente. El servidor es el componente y sus objetos
asociados. Dependiendo de la forma en que est implementado, un componente
ActiveX se puede ejecutar en el mismo proceso que las aplicaciones cliente o en
un proceso diferente. En general, si un componente ActiveX se ha implementado
como parte de un archivo ejecutable (.exe), se trata de un servidor fuera de
proceso y se ejecuta en su propio proceso. Si se ha implementado como una
biblioteca de vnculos dinmicos (.dll u .ocx), se trata de un servidor en proceso y
se ejecuta en el mismo proceso que la aplicacin cliente.

136

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

8.2. Aplicaciones habilitadas para ActiveX


8.2.1. Objetos insertables
Hay tres categoras generales de controles en Visual Basic: los controles
intrnsecos, los controles ActiveX, y los objetos insertables. Estos ltimos son el
caso de los componentes compatibles con la vinculacin e incrustacin de objetos
admitido tradicionalmente por OLE. Se pueden insertar objetos componentes
(como documentos de Word, u Hojas de clculo de Excel) en una aplicacin sin
necesidad de escribir cdigo, utilizando la interfaz visual del componente. Hay dos
maneras de usar la interfaz visual de un componente:
a) Agregando un control contenedor OLE a la aplicacin, e insertando despus un
objeto en el control contenedor OLE.
b) Agregando la clase del objeto al cuadro de herramientas, y despus,
agregando un objeto de esa clase a la aplicacin, como lo hara con un control
TextBox sobre el formulario. La clase es de un control de aplicacin habilitada
para ActiveX.
8.2.2. Control contenedor OLE
El control contenedor OLE proporciona la mxima flexibilidad para usar la interfaz
visual de un objeto. Un control contenedor OLE slo puede contener un objeto
cada vez. Hay varias formas de crear un objeto vinculado o incrustado en el
control contenedor OLE una vez que se ha dibujado sobre el formulario. El mtodo
elegido depender de si va a crear el objeto vinculado o incrustado en tiempo de
diseo o en tiempo de ejecucin. A continuacin veremos detalles de inters
relacionados al control contenedor OLE, como incrustacin y vinculacin, formas
de insertar objetos, las propiedades y mtodos mas resaltantes del control, y
algunas utilidades bsicas.
a) Incrustacin y vinculacin
Si un objeto esta vinculado, se crea una referencia o apuntador al documento
fuente, de tal manera que las modificaciones de los datos durante la ejecucin
se efectan en el documento original. Si el objeto esta incrustado, se crea una
copia del documento original en la aplicacin, las modificaciones se efectan
slo en y durante la aplicacin de Visual Basic, y en consecuencia los cambios
no son persistentes, ya que se pierden al terminar o detener la ejecucin. El
control contenedor OLE dispone de mtodos para guardar los cambios de los
datos de objetos incrustados mediante archivos binarios.
b) Insertar objetos en tiempo de diseo
Para insertar objetos en tiempo de diseo se utiliza el cuadro de dilogo
Insertar objeto, o el cuadro de dilogo Pegado especial.
El cuadro de dilogo Insertar objeto (ver Figura 8.1) aparece automtica e
inmediatamente despus de dibujar el control contenedor OLE sobre el
formulario. Este permite escoger entre crear un nuevo objeto, o utilizar un
documento ya existente. Si se activa la casilla Vincular, el objeto que se crea
es vinculado. Tambin es posible escoger si se muestra el contenido del
documento o el icono de la interfaz del documento. Si se cancela el cuadro de
dilogo, el control OLE quedar vaco. En este caso las propiedades SourceDoc
137

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

y SourceItem en la ventana de propiedades permiten activar una vez ms el


cuadro de dilogo.

Figura 8.1.- Dilogo Insertar objeto

Por su parte, el cuadro de dilogo Pegado especial est disponible si se ha


copiado algo en el portapapeles, y se puede activar haciendo clic derecho
sobre el control contenedor OLE. La apariencia de este dilogo se muestra a
continuacin.

Figura 8.2.- Dilogo Pegado especial

c) Insertar objetos en tiempo de ejecucin


Se puede crear un objeto vinculado o incrustado desde un archivo, en tiempo
de ejecucin, con los mtodos CreateLink o CreateEmbed del objeto
contenedor OLE. Estos mtodos requieren el argumento documento fuente,
que es la ruta de acceso y el nombre del archivo desde el cual se crea el
objeto. Opcionalmente, para objetos vinculados, se puede indicar el
argumento elemento fuente, que especifica los datos que se desean vincular
o incrustar del documento fuente. Tambin, para objetos incrustados, es
opcional indicar el argumento clase, para especificar el nombre de la interfaz
que provee el objeto. El siguiente fragmento de cdigo crea un objeto
vinculado proveniente de la hoja de clculo activa del archivo prueba1.xls, y
consiste de las primeras 15 filas y 8 columnas:
138

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

OLE1.CreateLink "C:\EXCEL\PRUEBA1.XLS", "L1C1:L15C8"


Para el caso de incrustacin se especifica la clase, como se muestra:
OLE1.CreateEmbed " C:\EXCEL\PRUEBA2.XLS", "Excel.Sheet"
d) Propiedades del control contenedor OLE
La siguiente tabla enumera las propiedades del control OLE.
Propiedad
Class
DisplayType
Object
OLEType
OLETypeAllowed
SizeMode
SourceDoc
SourceItem

Descripcin
Identifica el objeto contenido en el control contenedor OLE.
Presentacin con su contenido o como un icono.
Propiedad de slo lectura, en ejecucin, que indica la clase activa.
Determina si un objeto se puede vincular o incrustar en el control OLE.
Determina el tipo de objeto que puede crear (vinculado, incrustado).
Determina el tipo de ajuste de tamao de la imagen de los datos.
Esta propiedad determina el archivo de origen del vnculo o la plantilla.
Especifica los datos que se van a vincular dentro de un archivo.
Tabla 8.1.- Propiedades del control contenedor OLE

La propiedad Class determina el tipo de objeto que contiene el control OLE.


Por ejemplo, si contiene datos de una hoja de clculo de Microsoft Excel
versin 5.0, la propiedad Class es Excel.Sheet.5. Object es la propiedad que
representa al objeto contenido en el control OLE, y se utiliza para realizar
tareas de Automatizacin, que incluyen la manipulacin por programa de las
propiedades y mtodos que el objeto admite. Mediante la propiedad
SourceDoc se especifica la ubicacin y el nombre del archivo de documento
ActiveX.
e) Mtodos del control contenedor OLE
La siguiente tabla muestra los mtodos ms importantes que dispone el
control contenedor OLE.
Mtodo
CreateEmbed
CreateLink
DoVerb
InsertObjDlg
PasteSpecialDlg
SaveToFile
ReadFromFile

Descripcin
Crea un objeto incrustado.
Crea un objeto vinculado.
Ejecuta el verbo especificado (o predeterminado) sobre el objeto; es decir: Abrir, Editar,
Imprimir, etc.
Muestra el cuadro de dilogo Insertar objeto, para escoger el objeto que contendr el control
OLE.
Muestra el cuadro de dilogo Pegado especial, para pegar el contenido del Portapapeles en
el control OLE.
Guarda los datos de objetos incrustados en archivos binarios.
Recupera los datos guardados en archivos binarios de objetos incrustados.
Tabla 8.2.- Mtodos del control contenedor OLE

f)

Guardar y recuperar datos de objetos incrustados


Los datos asociados con un objeto incrustado no son persistentes; es decir,
cuando se cierra un formulario que contiene un control contenedor OLE, los
cambios efectuados sobre los datos asociados al control se pierden si no se
guardan previamente. Una vez que los datos se han guardado en un archivo,
posteriormente puede abrir el archivo y restaurar los datos del objeto. Para
esto slo se pueden utilizar archivos binarios abiertos, y los mtodos
SaveToFile o ReadFromFile segn corresponda. El procedimiento de guardado
se ilustra a continuacin:
139

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

Private Sub cmdGuardarOLE_Click()


Open "PRUEBA.BIN" For Binary As #1
OLE1.SaveToFile 1
Close #1
End Sub

'Abrir archivo
'Guardar arch.
'Cerrar arch.

Y el procedimiento de evento siguiente permite la recuperacin de los datos:


Private Sub cmdRecuperarOLE_Click()
Open "PRUEBA.BIN" For Binary As #1
OLE1.ReadFromFile 1
Close #1
End Sub

'Abrir archivo
'Leer archivo
'Cerrar arch.

Cada vez que se modifica el contenido de un objeto se llama al evento


Updated. Este evento es til para determinar si los datos de un objeto se han
modificado antes de guardarlos. Para ello, establezca en el evento Updated
una variable global que indique si es necesario guardar el objeto.
g) Ejecutar el verbo predeterminado de un objeto
Una vez que se ha cargado un objeto en el contenedor OLE, se puede ejecutar
la accin o verbo predeterminado del objeto mediante el mtodo DoVerb con
argumento 0. La accin o verbo predeterminado es la operacin que se lleva a
cabo cuando se efecta un doble clic sobre el documento fuente en una
ventana o Explorador de Windows. En la mayora de los casos, el verbo
predeterminado es Editar. Otros verbos comunes son Abrir, Mostrar, Imprimir,
etc. Por ejemplo, el siguiente fragmento de cdigo activa la accin
predeterminada del objeto contenido en OLE1:
OLE1.DoVerb 0 'Cero para verbo predeterminado
8.2.3. Control de aplicacin ActiveX
De la misma forma que se utiliza el cuadro de herramientas para agregar a un
formulario uno de los controles incorporados de Visual Basic, tambin puede
usarse para agregar un objeto de aplicacin habilitada para ActiveX. En primer
lugar, se agrega la clase del objeto al cuadro de herramientas y, despus, se
agrega el objeto a un formulario. Para agregar la clase de un objeto al cuadro de
herramientas se debe:
a) Elegir Componentes en el men Proyecto, o presionar Ctrl+T.
b) Del dilogo Componentes, seleccionar la ficha Objetos insertables (ver Figura
8.3).

140

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

Figura 8.3.- Dilogo Componentes (Objetos insertables)

c) Seleccionar la clase que se desea agregar al cuadro de herramientas. Visual


Basic agregar un botn de esa clase al cuadro de herramientas (ver Figura
8.4).

Excel

Word

WordPad

Paint

Graph

Figura 8.4.- Cuadro de herramientas (Objetos insertables)

Por ejemplo, para agregar al cuadro de herramientas un botn Hoja de clculo


de Excel, seleccione Hoja de clculo de Microsoft Excel en la ficha Objetos
insertables del cuadro de dilogo Componentes. Una vez agregada la clase del
objeto al cuadro de herramientas, puede dibujarla en un formulario para crear
un objeto de esa clase, es decir una hoja de clculo de Excel sobre el
formulario.
8.3. Componentes de cdigo
8.3.1. Referencias a un objeto
Si un componente ActiveX proporciona una biblioteca de tipos, es necesario
agregar una referencia a la biblioteca de tipos en el proyecto de Visual Basic antes
de poder usar los objetos de la biblioteca. Una biblioteca de tipos de un
componente Active X contiene definiciones de todos los objetos que proporciona el
141

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

componente, incluidas definiciones para todos los mtodos, propiedades y eventos


disponibles.
8.3.2. Crear referencias a objetos
Para crear una referencia a un objeto definido en una biblioteca de tipos es
necesario:
a) Elegir Referencias, en el men Proyecto. En el cuadro de dilogo Referencias
(ver Figura 7.9), seleccionar el nombre del componente ActiveX que contiene
los objetos que desea usar en la aplicacin. Se puede usar el botn Examinar
para buscar el archivo de biblioteca de tipos que contiene el objeto que se
necesita. Las bibliotecas pueden tener una extensin de archivo .olb (librera
de objetos) o .tlb (librera de tipos). Los archivos ejecutables (.exe) y de
biblioteca de vnculos dinmicos (.dll) tambin pueden proporcionar bibliotecas
de tipos, por lo que tambin se pueden buscar archivos que tengan estas
extensiones de archivo.
b) Elegir Examinador de objetos, en el men Ver, para ver la biblioteca de tipos a
la que se ha hecho referencia, seleccionando la biblioteca de tipos apropiada
en la lista Proyecto/Biblioteca del cuadro de dilogo Examinador de objetos
(ver Figura 4.1). Se pueden usar todos los objetos, mtodos y propiedades
que se enumeran en el Examinador de objetos de la aplicacin.
c) Declarar una variable de objeto de la clase del objeto. Por ejemplo, se podra
declarar una variable de la clase Excel.Chart para hacer referencia a un objeto
Chart de Microsoft Excel.
Dim xlChart As Excel.Chart
d) Asignar una referencia de objeto a la variable utilizando la palabra clave New,
CreateObject o GetObject en una instruccin Set. Si el objeto es dependiente
(una hoja es dependiente de un libro en Excel), se debe asignar una referencia
de objeto utilizando un mtodo de un objeto de nivel superior en una
instruccin Set. La asignacin de referencia de objeto crea propiamente al
objeto. En el ejemplo siguiente se abre el archivo Ingresos.xls como un libro
de Microsoft Excel:
Dim Libro As Excel.Workbook
Set Libro = GetObject("C:\Cuentas\Ingresos.xls")
Observe que antes de usar la instruccin Set, se aplica el punto (c) de
declaracin de la variable de objeto; en este caso se declara Libro como libro
de Excel.
8.3.3. Utilizar las propiedades y mtodos de un objeto
Despus de asignar una referencia de objeto a una variable de objeto (despus de
crear el objeto), puede usar la variable para manipular las propiedades y los
mtodos del objeto. Se mantiene la sintaxis objeto.propiedad para establecer y
devolver los valores de la propiedad de un objeto o la sintaxis objeto.mtodo para
usar los mtodos del objeto. Por ejemplo, para cerrar el objeto Libro, mediante su
mtodo Close.
Libro.Close
142

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

8.3.4. Responder a los eventos de un objeto


Para hacer que una aplicacin responda a los eventos de un objeto proporcionado
por componentes ActiveX, primero se debe declarar la variable de objeto mediante
la palabra clave WithEvents, ya que los procedimientos de evento para los objetos
proporcionados por componentes no estn disponibles automticamente. Despus
de declarar una variable de objeto mediante WithEvents, en la ventana de cdigo
la variable se utiliza para presentar procedimientos de evento para el objeto.
Entonces se puede agregar cdigo a estos procedimientos para responder a los
eventos del objeto.
En forma detallada, para crear un procedimiento de evento para un objeto
proporcionado por un componente, se siguen los pasos a continuacin:
a) La declaracin descrita en el punto (c) de 8.3.2, debe hacerse en la seccin de
declaraciones de un formulario o mdulo de clase, utilizando la palabra
reservada WithEvents de la siguiente manera:
Dim WithEvents Libro As Excel.Workbook
b) Al efectuar la declaracin anterior, Visual Basic agrega y muestra el nombre de
la variable de objeto al cuadro de lista Objeto de la ventana de cdigo. Cuando
selecciona la variable de objeto, Visual Basic muestra los procedimientos de
evento del objeto en el cuadro de lista Eventos de la ventana de cdigo (ver
Figura 8.5).

Figura 8.5.- Ventana de cdigo con eventos de un objeto componente

c) Finalmente, slo resta seleccionar un procedimiento de evento y agregarle el


cdigo que se desea ejecutar cuando se produzca el evento.
Por ejemplo, suponga que una aplicacin de Visual Basic se basa en los datos
presentados en un libro de trabajo de Microsoft Excel y que ya ha declarado una
variable de objeto Libro con WithEvents para el libro de trabajo. Es necesario que
cuando un usuario intente cerrar el libro de trabajo, la aplicacin muestre un
mensaje explicativo, y evite que se cierre el libro de trabajo, tomando en cuenta
que los datos del libro son vitales en el normal funcionamiento de la aplicacin. En
143

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

este sentido, el procedimiento de evento idneo del objeto componente es


Libro_BeforeClose. El fragmento de cdigo siguiente muestra este procedimiento
de evento y las lneas de instruccin que se ejecutarn al intentar cerrar el libro de
trabajo.
Private Sub Libro_BeforeClose(Cancel As Boolean)
Libro.Application.Visible = False
' Oculta la ventana de Microsoft Excel.
MsgBox "Este libro de trabajo debe seguir abierto..."
' Muestra el mensaje explicativo.
Libro.Application.Visible=True
' Muestra nuevamente la ventana de Microsoft Excel.
Cancel = True
' El argumento Cancel a True cancela el cierre.
End Sub
8.3.5. Ejemplo completo usando componente de cdigo
Suponga que ha creado un formulario con tres cuadros de texto (Text1, Text2 y
Text3) y un botn de comando (Command1), y ha agregado al proyecto una
referencia a la biblioteca de objetos de Microsoft Excel (Microsoft Excel 11.0 Object
Library). Se agregar cdigo al procedimiento de evento Command1_Click del
botn de comando que utilice el mtodo Formula de Microsoft Excel para sumar
dos nmeros introducidos en Text1 y Text2, y que muestre el resultado en Text3,
tal como se muestra:
Private Sub Command1_Click()
' Declarar variables de objeto para Microsoft Excel.
Dim Aplicacin As Excel.Application
Dim Libro As Excel.Workbook
Dim Hoja As Excel.Worksheet
' Asignar referencias de objeto a las variables.
Set Aplicacin = New Excel.Application
Set Libro = xlApp.Workbooks.Add
Set Hoja = xlBook.Worksheets.Add
' Asignar los valores de las cajas de texto a celdas.
Hoja.Cells(1, 1).Value = Text1.Text
Hoja.Cells(2, 1).Value = Text2.Text
' Usar el mtodo Formula para sumar los valores
Hoja.Cells(3, 1).Formula = "=L1C1 + L2C1"
Text3.Text = Hoja.Cells(3, 1)
' Guardar la hoja de clculo (si lo desea).
Hoja.SaveAs "C:\Temp.xls"
' Cerrar el libro de trabajo con el mtodo Close.
Libro.Close
' Cerrar Microsoft Excel con el mtodo Quit.
Aplicacin.Quit
144

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

' Liberar los objetos.


Set Aplicacin = Nothing
Set Libro = Nothing
Set Hoja = Nothing
End Sub
8.4. Controles ActiveX
8.4.1. Cargar controles ActiveX
Los controles ActiveX tienen la extensin de archivo .ocx. Se pueden usar los
controles ActiveX suministrados con Visual Basic o bien puede conseguir controles
adicionales desarrollados por otros programadores en la Web o por otros medios.
Los controles ActiveX de Visual Basic son controles de 32 bits. Algunos
programadores ofrecen controles ActiveX de 16 bits, que no son compatibles para
Visual Basic 6.0. Al igual que los objetos insertables, para usar controles ActiveX es
necesario cargarlos previamente al cuadro de herramientas. Para agregar un
control al cuadro de herramientas de un proyecto se siguen los siguientes pasos:
a) En el men Proyecto, haga clic en Componentes para mostrar el cuadro de
dilogo Componentes, como se ve en las figuras 6.5 y 7.5. Tambin se puede
ver el cuadro de dilogo Componentes si hace clic con el botn secundario del
Mouse (ratn) en el cuadro de herramientas, o presionando Ctrl+T.
b) Los elementos que se muestran en este cuadro de dilogo incluyen todos los
controles ActiveX registrados. Marque la casilla de verificacin que hay a la
izquierda del nombre del control.
c) Haga clic en Aceptar para que todos los controles ActiveX que haya
seleccionado aparezcan ahora en el cuadro de herramientas.
Para agregar controles ActiveX al cuadro de dilogo Componentes, haga clic en el
botn Examinar y busque los archivos que tengan la extensin .ocx. Estos archivos
suelen estar instalados en el directorio \Windows\System o System32.
8.4.2. Archivos de controles ActiveX
En la tabla siguiente se muestran los nombres de los componentes ms comunes
que del cuadro dilogo Componentes, sus archivos y los controles ActiveX que
contienen.
Nombre del componente
Microsoft ADO Data Control 6.0
Microsoft Chart Control 5.5
Microsoft Comm Control 6.0
Microsoft Common Dialog Control 6.0
Microsoft Data Bound Grid Control 5.0
Microsoft Data Bound List Controls 6.0
Microsoft Data Grid Control 6.0
Microsoft Data List Controls 6.0
Microsoft FlexGrid Control 6.0
Microsoft Grid Control
Microsoft Hierarchical Flex Grid
Control 6.0
Microsoft MaskedEdit Control 6.0
Microsoft Multimedia Control 6.0

Nombre del
archivo
MSADODC.OCX
MSCHART.OCX
MSCOMM32.OCX
COMDLG32. OCX
DBGRID32.OCX
DBLIST32.OCX
MSDATGRD.OCX
MSDATLST.OCX
MSFLXGRD.OCX
GRID32.OCX

ADO Data Control


Microsoft Chart
MSComm
CommonDialog
DBGrid
DBList, DBCombo
DataGrid
DataList, DataCombo
MSFlexGrid
Grid

MSHFLXGD.OCX

MSHFlexGrid

MSMASK32.OCX
MCI32.OCX

MaskedEdit
Multimedia MCI

145

Controles ActiveX

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

Nombre del componente


Microsoft PictureClip Control 6.0
Microsoft RichTextBox Control 6.0
Microsoft SysInfo Control 6.0
Microsoft TabbedDialog Control 6.0
Microsoft Windows Common Controls2 6.0
Microsoft Windows Common Controls3 6.0
Microsoft Winsock Control 6.0
Microsoft Windows Common Controls
6.0

Nombre del
archivo
PICCLP32.OCX
RICHTX32.OCX
SYSINFO.OCX
TABCTL32.OCX
MSCOMCT2.OCX

Controles ActiveX
PictureClip
RichTextBox
SysInfo
Microsoft Tab Control
Animation, UpDown, MonthView, DTPicker,
FlatScrollbar

COMCT332.OCX

CoolBar

MSWINSCK.OCX

WinSock
TabStrip, Toolbar, StatusBar, ProgressBar,
TreeView, ListView, ImageList, Slider,
ImageCombo

MSCOMCTL.OCX

Tabla 8.3.- Archivos de controles ActiveX

En adelante se ver una introduccin de algunos de los controles ActiveX de la


tabla anterior, refirindose a los mismos por su nombre de clase.
8.4.3. Control ActiveX Animation
El control Animation reproduce secuencias de vdeo AVI sin sonido. Una secuencia
AVI est formada por una serie de marcos de mapas de bits, como una pelcula.
Un ejemplo es la hoja de papel que "vuela" de una carpeta a otra al copiar
archivos en el sistema Windows.

Figura 8.6.- Ejemplo del control ActiveX Animation

Aunque las secuencias AVI pueden tener sonido, cuando lo tienen no pueden
usarse con el control Animation y se producir un error si intenta cargar un archivo
de ese tipo. Slo puede usar secuencias AVI sin sonido. Para reproducir archivos
.avi con sonido, utilice el control Multimedia (MCI).
Nota:

Encontrar diversos archivos .avi sin sonido en el directorio \Graphics\ AVI del
CD-ROM de Visual Basic.

En tiempo de ejecucin, el control Animation no tiene un marco visible. El control


Animation mantiene un subproceso de ejecucin independiente mientras se
reproduce la secuencia. Por tanto, la aplicacin no se bloquea y puede continuar la
ejecucin dentro de su proceso.
Al usar el control, el archivo .avi se abre con el mtodo Open, se reproduce con el
mtodo Play y se detiene con el mtodo Stop. Una vez terminada la reproduccin
de un vdeo, puede usar el mtodo Close para cerrar el archivo. No es necesario
cerrar un archivo para poder abrir otro. En el cdigo siguiente se utilizan dos
controles CommandButton, cmdPlay y cmdStop. Como ttulo de cmdPlay,
146

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

establezca "Abrir y reproducir". El ttulo del control CommandButton cmdStop es


"Detener".
Private Sub cmdPlay_Click()
anmAvi.Open "C:\Videos\FILECOPY.AVI"
anmAVI.Play
End Sub
Este cdigo detiene la reproduccin del vdeo:
Private Sub cmdStop_Click()
anmAVI.Stop
End Sub
8.4.4. Control ActiveX CoolBar
El control CoolBar (Comctl332.ocx) permite crear barras de herramientas
configurables por el usuario similares a las de Microsoft Internet Explorer. El
control CoolBar es un control contenedor, capaz de contener otros controles
secundarios. Consta de una o ms zonas dimensionables conocidas como bandas.
Cada banda puede albergar un nico control secundario, como se muestra en la
Figura 8.7.

Figura 8.7.- Ejemplo de control ActiveX CoolBar

El mtodo para agregar controles secundarios a un control CoolBar vara


ligeramente del mtodo para agregar controles a otros contenedores. El control se
debe asociar primero con un objeto Band; el lmite de controles secundarios por
banda es de uno, de tal manera que el control CoolBar contendr tantos objetos
como bandas. Para agregar un objeto a un CoolBar:
a) Con el control CoolBar seleccionado, seleccione un control del Cuadro de
herramientas y dibjelo sobre el control CoolBar.
b) Abra la Pgina de propiedades de CoolBar y seleccione la ficha Bandas.
c) Use los botones Index para seleccionar el ndice del objeto Band en el que
desea que aparezca el control.
d) Seleccione el control de la lista Secundario.
El control secundario se desplazar y se dimensionar con el objeto Band en
tiempo de ejecucin.
Nota:

Si agrega simplemente un control sin asociarlo a una banda, aparecer como un


control flotante sobre el control CoolBar en tiempo de ejecucin. Para evitarlo,
establezca la propiedad Visible del control a False.

147

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

Puede modificar los controles contenidos en un CoolBar en tiempo de ejecucin


con la propiedad Child del objeto Band.
8.4.5. Control ActiveX DTPicker
El control DateTimePicker muestra informacin de fecha, de hora o ambas a la vez
y acta como una interfaz en la que los usuarios pueden modificar la informacin
de fecha y de hora. Cuando el control DateTimePicker est desplegado, aparece
un calendario.

Figura 8.8.- Ejemplo del control ActiveX DTPicker

El control tiene dos modos de funcionamiento diferentes:


a) En el modo Calendario desplegable (predeterminado, ver Figura 8.8) se
muestra al usuario un calendario en el que puede selecciona una fecha.
b) En el modo Formato de hora, el usuario selecciona un campo en la fecha u
hora mostrada (por ejemplo el mes, el da, el ao, hora, minuto, etc.) y
establece su valor con la flecha hacia arriba o hacia abajo situada a la derecha
del control.
Puede usar el control para mostrar la fecha en los varios formatos preestablecidos,
entre los cuales estn: fecha corta (14/11/97), fecha larga (Viernes, 14 de
noviembre de 1997) y hora (7:00:00 PM). Tambin es posible especificar formatos
personalizados mediante el uso de cadenas de formato.
8.4.6. Control ActiveX ImageList
Un control ImageList contiene una coleccin de imgenes que pueden usar otros
controles comunes de Windows, especficamente los controles ListView, TreeView,
TabStrip y ToolBar. El uso del control ImageList como almacn nico de imgenes
le ahorrar tiempo de desarrollo, pues le permite escribir cdigo que se refiera a
un catlogo de imgenes nico y coherente. En lugar de escribir cdigo que
cargue mapas de bits o iconos (con la funcin LoadPicture), puede llenar el control
ImageList una nica vez, asignar valores a la propiedad Key si lo desea y escribir
cdigo que utilice las propiedades Key o Index para hacer referencia a cada una
de las imgenes. El objeto ListImage pertenece a la coleccin ListImages, y tiene
las propiedades estndar de las colecciones: Key, Index y Count. Tambin dispone
de mtodos estndar, como Add, Remove y Clear. Por ltimo, el control presenta
los mtodos Overlay, Draw y ExtractIcon, que permiten crear imgenes
compuestas, dibujar imgenes en los objetos que tengan la propiedad hDC y crear
148

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

un icono a partir de un mapa de bits almacenado en el control. Para agregar una


imagen (objetos ListImage) en tiempo de diseo, utilice el cuadro de dilogo
Pginas de propiedades del control ImageList:
a) Haga clic con el botn secundario del Mouse (ratn) en el control ImageList y
seleccione Propiedades.
b) Haga clic en la ficha Imgenes para mostrar las pginas de propiedades del
control ImageList, como se ilustra en la figura siguiente.

Figura 8.9.- Propiedades del control ActiveX ImageList

c) Haga clic en el botn Insertar imagen para mostrar el cuadro de dilogo


Seleccionar imagen.
d) Utilice el cuadro de dilogo para buscar los archivos de mapa de bits o de
icono, y despus haga clic en Abrir.
e) Asigne un valor nico a la propiedad Key. Para esto, haga clic en el cuadro Key
y escriba una cadena.
f)

Repita los pasos 3 a 6 hasta que haya llenado el control con las imgenes
deseadas.

8.4.7. Control ActiveX TreeView


El control TreeView est diseado para mostrar datos de naturaleza jerrquica,
como rboles organizativos, las entradas de un ndice, o los archivos y directorios
de un disco. Como veremos en forma detallada, un TreeView est formado por
nodos u objetos Node (ver Figura 8.10).

149

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

Figura 8.10.-Ejemplo del control ActiveX TreeView

a) Establecer las propiedades del objeto Node


Un "rbol" se compone de ramas sucesivas de "nodos" y cada nodo consta
normalmente de una imagen (establecida con la propiedad Image) y una
etiqueta (establecida con la propiedad Text). Un control ImageList asociado al
control TreeView proporciona las imgenes para los nodos. Un nodo puede
expandirse o contraerse dependiendo de si tiene o no nodos secundarios
(nodos hijos que parten de l). En el nivel superior estn los nodos "raz"
(padre), y cada nodo raz puede tener cualquier nmero de nodos
secundarios. El nmero total de nodos no est limitado (salvo por las
restricciones del sistema).
Cada nodo de un rbol es en realidad un objeto Node programable que
pertenece a la coleccin Nodes. Como en otras colecciones, cada miembro de
la coleccin tiene un valor nico en las propiedades Index y Key, lo que
permite el acceso a las propiedades del nodo. Por ejemplo, el cdigo siguiente
utiliza el ndice de un nodo determinado ("7") para establecer sus propiedades
Image y Text:
tvwMirbol.Nodes(7).Image = "cerrado"
tvwMirbol.Nodes(7).Text = "IEEE"
Sin embargo, si se ha asignado al nodo una clave nica (propiedad Key), por
ejemplo "7 ID", el mismo cdigo se podra escribir de esta forma:
tvwMirbol.Nodes("7 ID").Image = "cerrado"
tvwMirbol.Nodes("7 ID").Text = "IEEE"
b) Relaciones entre nodos y referencias a nodos relativos
Cada nodo puede ser secundario (hijo) o primario (padre), segn su relacin
con otros nodos. El objeto Node cuenta con varias propiedades que devuelven
distintos datos sobre los nodos secundarios o primarios. Por ejemplo, el cdigo
siguiente utiliza la propiedad Children para devolver el nmero de nodos
secundarios (hijos) que tiene un nodo (el nodo 10):
MsgBox tvwMirbol.Nodes(10).Children
Algunas de las propiedades no devuelven informacin numrica o de dato
como lo hace Children, sino que devuelven una referencia a otro objeto Node.
Por ejemplo, la propiedad Parent devuelve una referencia al nodo primario
150

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

(padre) de un nodo especfico (hijo). Con esta referencia se puede manipular


el nodo primario, como se muestra en el cdigo siguiente para Text e Index
del nodo primario de nodo 10:
MsgBox tvwMirbol.Nodes(10).Parent.Text
MsgBox tvwMirbol.Nodes(10).Parent.Index
Puede usar la instruccin Set con una variable de objeto de tipo Node para
manipular referencias a otros objetos Node. Por ejemplo, el cdigo siguiente
establece una variable de objeto Node con la referencia que devuelve la
propiedad Parent. Despus se utiliza la variable de objeto en lugar del objeto:
Dim tempNode As Node ' Declara una variable de objeto.
Set tempNode = tvwMirbol.Nodes(10).Parent
MsgBox tempNode.Text ' Devuelve la propiedad Text.
MsgBox tempNode.Index ' Devuelve la propiedad Index.
c) Agregar objetos Node a la coleccin Nodes
Para agregar un objeto Node al rbol, utilice el mtodo Add (coleccin Nodes).
Este mtodo tiene dos argumentos, relative y relationship, que determinan
dnde se agregar el nodo. El primer argumento, relative, indica el nombre de
un nodo, mientras que el segundo, relationship, especifica la relacin entre el
nuevo nodo y el indicado en relative. Por ejemplo, el cdigo siguiente agrega
un nodo denominado "nodo 11" como un nodo secundario de otro llamado
"nodo 7". La constante intrnseca tvwChild especifica que el nuevo nodo es un
nodo secundario (hijo) del indicado en el primer argumento. El tercer
argumento asigna la propiedad Key al nuevo nodo.
tvwMirbol.Nodes.Add "nodo 7", tvwChild, "nodo 11"
Otras relaciones posibles, adems de tvwChild son las siguientes:
Constante

Valor

tvwLast

tvwNext
tvwPrevious
tvwChild

2
3
4

Relacin
El nodo se coloca despus de todos los nodos que estn al mismo nivel que el
indicado en relative.
El nodo se coloca despus del indicado en relative.
El nodo se coloca delante del indicado en relative.
El nodo pasa a ser un nodo secundario del indicado en relative.
Tabla 8.4.- Constantes del argumento relationship

Por ejemplo, suponga que hay tres nodos y que desea colocar un cuarto nodo
entre el segundo y el tercero. El cdigo sera el siguiente:
tvwMirbol.Nodes.Add "nodo 2", tvwNext
Otros argumentos del mtodo Add son key, text e image. Con estos
argumentos puede asignar las propiedades Key, Text e Image al crear el
nuevo objeto Node.
8.4.8. Control ActiveX ListView
El control ListView muestra datos en forma de objetos ListItem. Cada objeto
ListItem puede tener un icono opcional asociado con la etiqueta del objeto. Este
control es idneo para representar subconjuntos de datos (como los miembros de
una base de datos) u objetos discretos (como plantillas de documentos). Puede
151

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

funcionar junto con un control TreeView, para dar al usuario una visin ampliada
de un nodo del control TreeView.
El control ListView puede mostrar los datos en cuatro vistas diferentes:
a) Iconos: permite arrastrar y colocar cada objeto y reorganizar los objetos.

Figura 8.11.-Ejemplo del control ActiveX ListView Vista Iconos grandes

b) Iconos pequeos: igual que iconos, pero permite que se vean ms objetos
ListItem.

Figura 8.12.-Ejemplo del control ActiveX ListView Vista Iconos pequeos

c) Lista: muestra una vista ordenada del objeto ListItems.

Figura 8.13.-Ejemplo del control ActiveX ListView Vista Lista

d) Informe: muestra una vista ordenada, donde los elementos secundarios


permiten que aparezca informacin adicional.

152

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

Figura 8.14.-Ejemplo del control ActiveX ListView Vista Reporte

Para cambiar la vista, puede usar la propiedad View. Con la propiedad View puede
permitir al usuario cambiar dinmicamente la vista. En el cdigo siguiente se
establece la propiedad View a vista de Informe (3), mediante la constante
intrnseca lvwReport:
ListView1.View = lvwReport
Un objeto ListItem consta de una etiqueta (la propiedad Text) y una imagen
opcional suministrada por un control ImageList. Sin embargo, el control ListView, a
diferencia de otros controles, puede usar dos controles ImageList, que se
establecen a travs de las propiedades Icons y SmallIcons. En las vistas de: Lista,
Iconos pequeos e Informe, puede usar iconos pequeos suministrados por un
control ImageList, para representar cada objeto ListItem. Por el contrario, cuando
est en vista de Iconos, el control utiliza un conjunto de imgenes distinto,
suministrado por un segundo control ImageList. Para establecer las propiedades
Icons y SmallIcons en tiempo de diseo, utilice el cuadro de dilogo Pginas de
propiedades.
Nota:

El control ImageList determina el tamao de los iconos empleados. Los tamaos


disponibles son 16 x 16, 32 x 32, 48 x 48 y Personalizado.

En el cdigo siguiente se declara primero una variable de objeto de tipo ListItem y


despus se establece esa variable a un nico objeto ListItem agregado a la
coleccin con el mtodo Add. A continuacin se establecen las propiedades
SmallIcon e Icon con la referencia de la variable de objeto:
Dim itmX as ListItem
Set itmX = ListView1.ListItems.Add()
itmX.SmallIcon = "LibroPequeo"
itmX.Icon = "LibroGrande"
Una vez establecida las imgenes de un ListItem con las propiedades SmallIcon e
Icon, estas aparecern automticamente al cambiar de vista con la propiedad
View. En la vista Reporte, existen los objetos ColumnHeader y ListSubItem. Tanto
la presencia como el nmero de objetos ListSubItem dependen de la presencia y el
nmero de objetos ColumnHeader. Es decir, no puede crear ningn objeto
ListSubItem si no hay presentes objetos ColumnHeader. Adems, el nmero de
objetos ColumnHeader determina el nmero de objetos ListSubItem que puede
establecer para el objeto ListItem, que sern siempre uno menos que el nmero
153

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

de objetos ColumnHeader. Esto se debe a que el primer objeto ColumnHeader


siempre est asociado a la propiedad Text del objeto ListItem.
8.4.9. Control ActiveX ToolBar
Un control Toolbar contiene una coleccin de objetos Button con los que se crea
una barra de herramientas que puede asociar a una aplicacin. Normalmente, una
barra de herramientas contiene botones que corresponden a elementos de algn
men de la aplicacin, lo que proporciona una interfaz grfica para que el usuario
tenga un acceso rpido a las funciones y comandos utilizados con ms frecuencia
(ver Figura 8.15).

Figura 8.15.-Ejemplo del control ActiveX ToolBar

Para crear una barra de herramientas, debe agregar objetos Button a una
coleccin Buttons. Cada objeto Button puede tener un texto y una imagen
opcionales, indicados por un control ImageList asociado. El texto se establece con
la propiedad Caption y la imagen con la propiedad Image de cada objeto Button.
En tiempo de diseo, puede agregar objetos Button al control en el cuadro de
dilogo Pgina de propiedades de Toolbar. Al hacer doble clic en una barra de
herramientas en tiempo de ejecucin se invoca el cuadro de dilogo Personalizar
barra de herramientas, que permite al usuario ocultar, mostrar o reorganizar los
botones de la barra de herramientas. Tambin puede abrir el cuadro de dilogo
Personalizar barra de herramientas si invoca el mtodo Customize. Esto es posible
siempre que se establezca la propiedad AllowCustomize en True. Si desea guardar
y restaurar el estado de una barra de herramientas o permitir que el usuario final
lo haga, utilice los mtodos SaveToolbar y RestoreToolbar.
La propiedad Style del objeto Button determina su comportamiento. A
continuacin se indican los cinco estilos de botones, con sus usos posibles:
Constante

Valor

tbrDefault

TbrCheck

tbrButtonGroup

tbrSeparator

Uso posible
Predeterminado. Puede usar el estilo Default cuando la funcin que representa el
botn no depende de otras funciones. Adems, al hacer clic en el botn, vuelve a
su posicin normal cuando la funcin ha terminado.
Verificacin. Debe usar el estilo Check cuando el botn representa una alternancia
de algn tipo. De esta forma, cuando el botn est presionado, continuar as hasta
que se presione de nuevo y queda liberado.
Grupo de botones. Puede usar este estilo ButtonGroup cuando un grupo de
funciones se excluyan mutuamente. Es decir, en un momento dado slo una de las
funciones que representa el grupo de botones puede estar activada.
Separador. Este estilo Separator no tiene otra funcin que crear un botn de ocho
pxeles de ancho. Puede usarlo para separar otros dos botones o para agrupar
varios botones que tengan el estilo ButtonGroup.
154

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

Constante

Valor

tbrPlaceholder

Uso posible
Marcador de posicin. Este estilo Placeholder funciona como un botn "ficticio".
Puede usarlo para crear un espacio en el control Toolbar donde desee que
aparezca otro control (por ejemplo, un control ComboBox o ListBox).
Tabla 8.5.- Estilos del objeto Button de ToolBar

El evento ButtonClick ocurre siempre que se hace clic en un botn (excepto en


aqullos con el estilo marcador de posicin o separador). Puede identificar el botn
en el que se ha hecho clic por sus propiedades Index o Key. Con cualquiera de
estas dos propiedades, puede usar la instruccin Select Case para programar la
funcin del botn, como ilustra el cdigo del ejemplo siguiente:
Private Sub tlbRTF_Click(ByVal Button As Button)
Select Case Button.Key
Case "AbrirArchivo"
OpenFile
Case "Guardar"
SaveFile
Case Else
' Otros casos.
End Select
End Sub
8.4.10. Control ActiveX TabStrip
Un control TabStrip acta como los separadores de un cuaderno o las etiquetas de
un grupo de carpetas de archivador. Con el control TabStrip puede definir
mltiples pginas en la misma rea de una ventana o un cuadro de dilogo de una
aplicacin. El control consta de uno o ms objetos Tab de una coleccin Tabs. En
tiempo de diseo y en tiempo de ejecucin puede modificar la apariencia de los
objetos Tab si establece sus propiedades y adems, en tiempo de ejecucin, si
invoca mtodos para agregar y quitar objetos Tab o Ficha como se muestra en la
Figura 8.16.

Figura 8.16.-Ejemplo del control ActiveX TabStrip

Para identificar la funcin de una ficha, puede asignar una imagen del control
ImageList al objeto Tab. Para ello, primero debe asociar un control ImageList al
control TabStrip, lo que puede hacer en tiempo de diseo o en tiempo de
ejecucin. Para crear objetos Tab en tiempo de diseo haga clic con el botn
secundario del Mouse en el control TabStrip y, despus, haga clic en Propiedades
para abrir el cuadro de dilogo Pginas de propiedades.

155

Visual Basic 6.0

Unidad 8.- Tecnologa OLE

8.4.11. Conclusiones sobre ActiveX


Gracias a la tecnologa ActiveX se ha logrado desarrollar componentes software,
cuya caracterstica principal es la interoperabilidad para su reutilizacin, lo que ha
facilitado enormemente las tareas de programacin de alto nivel. Estos fragmentos
de cdigo se han establecidos el nombre de Componentes ActiveX, dentro de los
cuales se encuentran las aplicaciones habilitadas para ActiveX, los componentes de
cdigo, los controles ActiveX y los documentos ActiveX. Este ltimo tipo de
componente no se trata en esta gua, ya que involucra la creacin de aplicaciones
para Internet, lo que requiere a su vez la creacin de componentes ActiveX, y esto
corresponde a un curso de programacin avanzada de objetos con Visual Basic. En
todo caso, para usar los objetos de documentos ActiveX ya creados, se sigue el
procedimiento descrito en el punto 8.4.1, como si fueran controles ActiveX.

156

Visual Basic 6.0

Unidad 9.- Funciones API

Unidad 9
Funciones API
Tu destino no es slo saber, sino obrar de acuerdo a tus conocimientos
.- Fichte

9.1. Teora de funciones API


9.1.1. Funciones API
Las API son funciones externas a Visual Basic que se encuentran almacenadas y
compiladas en archivos de extensin DLL y EXE. Las siglas API corresponden a
Application Programming Interface o en espaol, Interfaz para la Programacin de
Aplicaciones. Estas funciones API estn disponibles en diversos archivos,
incluyendo los archivos DLL o EXE creados por el usuario con lenguajes de nivel
intermedio como C++. Aunque existen incontables funciones API de distintos
proveedores, en esta gua, nos dedicaremos al estudio de algunas de las funciones
del sistema operativo Windows exclusivamente.
9.1.2. Las API de Windows
Como se explic anteriormente, las funciones API del sistema operativo Windows
estn disponibles para efectuar tareas que Visual Basic no contempla dentro de
sus funciones predefinidas o intrnsecas. Estas funciones del sistema operativo se
encuentran almacenadas en archivos indispensables para Windows, conocidos
como bibliotecas o libreras de vnculos dinmicos. Algunas de estas bibliotecas se
muestran en la tabla siguiente.
Biblioteca de vnculo
dinmico
Advapi32.dll
Comdlg32.dll
Gdi32.dll
Kernel32.dll
Lz32.dll
Mpr.dll
Netapi32.dll
Shell32.dll
User32.dll
Winmm.dll
Winspool.drv

Descripcin
Servicios, incluidas llamadas de seguridad y del Registro.
Biblioteca de la API de dilogos comunes.
Biblioteca de la API para dispositivos grficos.
Soporte comn de la API base de 32 bits de Windows.
Rutinas de compresin de 32 bits.
Enrutadores de mltiples proveedores.
Biblioteca de la API para redes de 32 bits.
Biblioteca de la API para Shell de 32 bits.
Rutinas para interfaces de usuario.
Multimedia de Windows.
Contiene las llamadas de la API a la cola de impresin.
Tabla 9.1.- Archivos contenedores de funciones API

9.1.3. Declarar funciones API


Para usar una funcin API en Visual Basic tal como se usa normalmente una
funcin del sistema Basic, se deben efectuar tres pasos previos:
157

Visual Basic 6.0

Unidad 9.- Funciones API

a) Declarar la funcin mediante la sentencia Declare en un mdulo estndar


previamente creado.
Declare Function NOM Lib LIB (Par1, Par2) As Tipo
b) Declarar las constantes pblicas en el mdulo estndar. Este paso es opcional
y depende si la funcin utiliza alguna constante.
Public Const Constante1 = Valor1
Public Const Constante2 = Valor2
c) Declarar las estructuras en forma pblica en el mdulo estndar. Este paso es
opcional y depende si la funcin requiere de alguna estructura.
Public Type ESTRUCTURA
Campo1 As Tipo
Campo2 As Tipo
...
End Type
La razn de utilizar un mdulo estndar para efectuar las declaraciones, es que de
esta manera la funcin API implementada quedara disponible en forma pblica
para todos los mdulos del proyecto.
9.1.4. Utilizar funciones API
Una vez efectuadas las declaraciones correspondientes para hacer accesible una
funcin API, esta podr usarse como cualquier otra funcin a lo largo de su
programa.
En el ejemplo siguiente, se ha creado un mdulo estndar en el cual se escribe el
cdigo necesario para declarar la funcin API de Windows ExitWindowsEx. Esta
funcin permite apagar, reiniciar y cerrar la sesin del sistema Windows.
ExitWindowsEx reside en el archivo USER32 que se mostr en la tabla 9.1, carece
de estructuras y posee cuatro constantes, las cuales determinan el procedimiento
a ejecutar por la funcin. Como se observa en el fragmento de cdigo, la funcin
ExitWindowsEx posee dos parmetros, uFlags que indica en tipo de procedimiento,
y dwReserved que se coloca a cero por tratarse de un parmetro reservado.
Public
Public
Public
Public
Public

Const EWX_FORCE = 4
Const EWX_LOGOFF = 0
Const EWX_REBOOT = 2
Const EWX_SHUTDOWN = 1
Declare Function ExitWindowsEx Lib "USER32" (ByVal_
uFlags As Long, ByVal dwReserved As Long) As Long

Luego, en cualquier parte del cdigo del programa, se puede llamar a la funcin.
En este caso, para el ejemplo, se utiliza el procedimiento de evento Click de un
botn de comando para reiniciar el equipo (se usa la constante EWX_REBOOT):
Private Sub cmdBotn_Click()
Dim Ret As Long
Ret = ExitWindowsEx (EWX_REBOOT, 0)
End Sub

158

Visual Basic 6.0

Unidad 9.- Funciones API

Tambin se puede apagar por completo el equipo, pero esta vez se deber usar la
constante EWX_SHUTDOWN:
Private Sub cmdBotn_Click()
Dim Ret As Long
Ret = ExitWindowsEx (EWX_SHUTDOWN, 0)
End Sub
9.1.5. Visor de texto API
En el paquete de Visual Basic est incluida una utilidad para escribir rpidamente,
de una manera sencilla y evitando errores humanos, las declaraciones, constantes
y estructuras de las funciones API de Windows. Esta utilidad se conoce como el
visor de texto API y su interfaz se muestra en la figura siguiente.

Figura 9.1.- Visor de texto API

La utilidad principal del visor de texto API consiste en que le evita al programador
la tediosa tarea de tener que escribir las declaraciones necesarias para hacer
accesible una funcin API. El programador selecciona la funcin, las constantes y
estructuras, las copia y luego las pega en mdulos del proyecto.
Los elementos de la interfaz del visor de texto API se describen a continuacin:
a) En Tipo de API se selecciona el tipo de elemento que se buscar en el Cuadro
de bsqueda, slo escribiendo las primeras letras del nombre de la funcin, es
decir, puede ser la declaracin, las constantes o las estructuras.
b) En elementos disponibles aparecern las declaraciones, constantes o
estructuras disponibles segn se halla escogido en Tipo de API.

159

Visual Basic 6.0

Unidad 9.- Funciones API

c) En la seccin Elementos seleccionados, aparecern las declaraciones de la


funcin, constantes o estructuras agregadas con el botn Agregar. Los
elementos se pueden agregar pblicos o privados.
d) Mientras que el botn Quitar permite eliminar un elemento de la seccin
Elementos seleccionados, el botn Borrar elimina todos los elementos.
e) Finalmente, se debe presionar el botn Copiar para colocar el contenido de la
seccin Elementos seleccionados en el portapapeles del sistema, esto con el
objeto de pegar las declaraciones en el mdulo estndar creado para tal fin.
9.2. Tcnicas para usar funciones API
9.2.1. Resolver conflictos de nombre de API
Ocasionalmente, los procedimientos de DLL tienen un nombre que no es un
identificador vlido, ya sea por un carcter invlido (por ejemplo, un guin) o
porque coincida con una palabra clave de Visual Basic (por ejemplo, GetObject).
En este caso, se utiliza la palabra clave Alias para especificar el nombre del
procedimiento no vlido.
9.2.2. Enviar cadenas a funciones API
Visual Basic emplea un tipo de datos String conocido como BSTR, que es un tipo
de datos definido por Automatizacin, y est formado por un encabezado, que
contiene informacin acerca de la longitud de la cadena. Este tipo de datos se
pasa como un puntero, por lo que el procedimiento de DLL es capaz de modificar
la cadena. (Un puntero es una variable que contiene la ubicacin en memoria de
otra variable, en lugar de los datos reales.) Los datos BSTR son Unicode, lo que
significa que cada carcter ocupa dos bytes. Por otra parte, los procedimientos de
la mayora de los archivos DLL reconocen los tipos LPSTR, que son punteros de
cadenas de C terminadas con un carcter nulo. Los tipos LPSTR no tienen
encabezado. Si un procedimiento de DLL espera un LPSTR (un puntero a una
cadena terminada con un carcter nulo) como argumento, se pasa el tipo de datos
de Visual Basic BSTR por valor. Puesto que los punteros del tipo BSTR son
punteros al primer byte de datos de la cadena terminada con un carcter nulo,
parecer un tipo LPSTR para el procedimiento de DLL. Por ejemplo, la funcin
sndPlaySound acepta una cadena que asigna nombre a un archivo de sonido
digitalizado (.wav) y reproduce ese archivo.
Private Declare Function sndPlaySound Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _
ByVal uFlags As Long) As Long
Puesto que el argumento de cadena para este procedimiento se declara mediante
ByVal, Visual Basic pasa un tipo BSTR que apunta al primer byte de datos:
Dim SoundFile As String, ReturnLength As Long
SoundFile = Dir("c:\Windows\System\" & "*.wav")
Result = sndPlaySound(SoundFile, 1)
9.2.3. Recibir cadenas de funciones API
La funcin GetWindowsDirectory verifica la instalacin del sistema operativo y
devuelve en una cadena la ruta completa del directorio donde se almacena
Windows. No requiere de constantes ni de estructuras; sin embargo, el hecho de
160

Visual Basic 6.0

Unidad 9.- Funciones API

devolver una cadena, implica un tratamiento especial a la misma, y la necesidad


de implementar una funcin auxiliar, tal como se estudi en el objetivo 4.4. Este
trato especial se debe a que las funciones API estn desarrolladas en lenguaje C,
donde las cadenas poseen un carcter Nulo que indica fin de cadena; y en Visual
Basic este carcter no existe. Por lo tanto, el caracter nulo de la cadena devuelta
debe ser truncado o eliminado.
El proceso se inicia declarando variables tipo cadena con longitud fija, y rellenando
cada posicin con espacios vacos, para luego utilizar la funcin API. A la cadena
devuelta se le extirpa el carcter nulo y los subsiguientes espacios vacos
sobrantes. A continuacin tenemos la declaracin de la funcin API
GetWindowsDirectory:
Public Declare Function GetWindowsDirectory Lib "kernel32"
Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String,
ByVal nSize As Long) As Long
Ahora una funcin personalizada se encarga de ejecutar todo el proceso,
incluyendo la llamada de la funcin API:
Public Function DirWindows() As String
Dim ret As Long
Dim Cadena As String * 200
Cadena = Space(200)
ret = GetWindowsDirectory(Cadena, 200)
If ret <> 0 Then
Cadena = Left(Cadena, InStr(Cadena, vbNullChar) - 1)
DirWindows = Trim(Cadena)
Else
DirWindows = "No existe directorio Windows"
End If
End Function
En adelante, para obtener el directorio de Windows, bastar con utilizar la funcin
DirWindows de la siguiente manera:
Text1.Text = DirWindows()
9.2.4. Utilizar procedimientos generales auxiliares
Para determinar el estado de ocupacin y espacio libre de un disco, se puede
utilizar la funcin API GetDiskFreeSpaceEx, la cual se declara a continuacin:
Public Declare Function GetDiskFreeSpace Lib "kernel32"
Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String,
lpSectorsPerCluster As Long, lpBytesPerSector As Long,
lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters As
Long) As Long
Como se observa, el nombre de la funcin resulta bastante extenso, adems de la
cantidad de parmetros. En esta circunstancia es oportuno utilizar un
procedimiento general que facilite el uso de esta funcin cada vez que se requiera.
El procedimiento general Espacio cumple con esta funcin:
161

Visual Basic 6.0

Unidad 9.- Funciones API

Sub Espacio(Ruta As String, Cap As String, Libre As String)


Dim ret As Long
Dim P1 As Currency 'Bytes libres
Dim P2 As Currency 'Capacidad del disco
Dim P3 As Currency 'Espacio libre total
ret = GetDiskFreeSpaceEx(Ruta, P1, P2, P3)
Libre = Format(P1 * 1000)
Cap = Format(P2 * 1000)
End Sub
La prxima vez que se deseen determinar las condiciones de capacidad del disco,
basta con utilizar el procedimiento general Espacio:
Dim Tamao As String
Dim Libre As String
Espacio "C:\", Tamao, Libre
lblCapacidadDeDisco.Caption = Tamao
lblEspacioLibreDeDisco.Caption = Libre
9.2.5. Utilizar funciones API sin parmetros
Existe una funcin API que devuelve el tiempo en milisegundos desde que se
encendi el PC, denominada GetTickCount. Esta funcin no posee parmetros, ni
constantes, ni estructuras, y es muy til para generar retardos de tiempo para
programas de juegos u otras aplicaciones. La declaracin es la siguiente:
Public Declare Function GetTickCount Lib "kernel32" Alias
"GetTickCount" () As Long
A diferencia del punto anterior (9.2.4), en estos casos se debe evitar el uso de
funciones o procedimientos auxiliares como este:
Function Tiempo()
Tiempo = GetTickCount()
End Sub
Lo anterior no ofrece alguna ventaja significativa, y lo que realmente si ocasiona
es ms tiempo de procesamiento. Se puede pensar en un procedimiento que
encapsule un conjunto de pasos para logra un objetivo en particular donde la
funcin API intervenga. Tal es el caso del procedimiento siguiente para generar un
retardo de tiempo:
Sub Retardo(Tiempo As Long)
Dim Inicio As Long
Inicio = GetTickCount()
Do While Not(GetTickCount >= Inicio + Tiempo)
DoEvents
Loop
End Sub
Luego, cuando sea necesario detener la ejecucin de un programa (por alguna
razn operativa) durante 10 segundos por ejemplo, bastar incluir la siguiente
lnea de cdigo en la parte del programa donde se desea el retardo:
Retardo (10000)
162

Visual Basic 6.0

Unidad 9.- Funciones API

Consideracin final
En esta gua slo se han mostrado algunos ejemplos de utilidades de las funciones
API. En realidad existe una enorme cantidad de funciones API y controles ActiveX,
tanto en el sistema operativo Windows, como en otros; siendo Internet la principal
fuente de ellos. Este es el inicio para el desarrollo de aplicaciones ms robustas y
profesionales.
El programador mas destacado es aquel que aprovecha, no slo las herramientas
intrnsecas de Visual Basic, sino las provistas a travs de la API y los componentes
ActiveX. Esta es la lnea divisoria que separa a los novatos, de los programadores
avanzados. An queda algo de camino que recorrer: crear nuestros propios
objetos, disear aplicaciones para redes incluyendo Internet con DHTML, agregar
ayuda a las aplicaciones, controlar puertos u otro hardware del PC para desarrollos
SCADA o similares, etc.; pero estamos armados con los fundamentos necesarios
para alcanzar, muy pronto, el nivel de expertos.
Suerte programadores!

163

También podría gustarte