Libro Visual Basic IIVersion Oro DCLC
Libro Visual Basic IIVersion Oro DCLC
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
*3 (%*$)*$+$* (
4566789
7
c
Aradecimie os
c
c más sincero agradecimiento a mi padre 3ë, ser supremo, creador del universo y todas las
Dis
cosas dentro de él, cuya gloria sea toda para él por los siglos de los siglos, Amén.
c
c
Infinitas gracias a todos los lectores de la primera edición de este libro que gracias a ellos he
c
obtenido la inspiración necesaria para poder escribir esta segunda edición.
c
Losc siguientes revisores aportaron comentarios y sugerencias cuidadosas para el mejoramiento del
manuscrito
c de esta edición: ë
,
ë
ë !" #
c
$ .
c
Unc agradecimiento muy especial a mi compañero de trabajo GicÀ Ja Fra cisco Me a Maño , ya
quec ha sido desde un principio un apoyo incondicional para las elaboraciones de mis proyectos,
además
c de considerarlo como un padre para mi.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Ñnc el presente apartado se especifica la forma de distribuir este libro y los derechos propios del
autor del libro.
c
c
3
c
c
c libro es exclusivamente una obra del ë À Carlos Ma el Rodríez Bcarelly y no puede
Ñste
serc alterado ni modificado bajo ninguna condición sin antes haber sido consultado con el mismo.
c
c
3
c
c à Ñste libro puede ser utilizado en cualquier institución educativa (colegios, universidades,
c institutos, politécnicos, internados, etc.).
c
à No se permite ventas de este libro para obtener beneficios económicos.
c
c à Se debe considerar el nombre del autor en la bibliografía de cualquier manuscrito si se
c copia alguna porción de texto de este libro.
c
c à Ñl libro se distribuye de forma digital pero puede ser impreso en hojas de papel.
c
à Las distribuciones impresas en hojas de papel deben tener a totalidad el número de hojas
c obtenidas en el documento en su formato digital, incluyendo la portada del libro.
c
c
#
c
c
c à Ñl autor no se hace responsable del mal uso del conocimiento obtenido por este libro.
c à Ñl autor no se hace responsable de las sanciones aplicadas por la violación de los derechos
c del autor.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
u
c
c
c
c
c
c Próloo ¦
c c
c
ë rodc cció a la proramació
c orie ada a objeos V
c
Ñl Ñcë3 (Ñ or o ë erado de
c
desacrrollo) de Visal Basic 6À0
c c
ë rodccció a los co roles más
c
sc ales de Visal Basic 6À0
c c
c
ë rodc cció al Ge aje Basic
c
c c
c
c
c
Gos me s
c
c
c
c a i erfaz de sario
G
c
V V
c
c
c
c
c
Gos Archivos
c
c
c
ë rodc cció a las Bases de daos
c
c
c
c
c Trcos de la red
c c
c
c
A exos y Bibliorafía V
c
Ing. Carlos Danuel Rodríguez Bucarelly
c
c
u
c
c
cPróloo
c c
CAPÌUG
c c ë: ëTR3UCCë A GA PR RAMACë RëÑTA3A A BJÑT 5
c1À1 Coc cepo de proramació orie ada a objeos (P)««««««««««««««««««
c 6
c1À2 Proramas orie ados a eve os«««««««««««««««««««««««««««« 6
c Creació
1À3 c de proramas para el e or o de Wi dows««««««««««««««««««ÀÀ 7
c Ñleme
1À4 c os de a aplicació e el e or o de Wi dowsÀ 7
c c m 1.4.1 Formularios y controles««««««««««««««««««««««««««««. 7
c c m 1.4.2 Nombre de controles y objetos««««««««««««««««««««««««« 8
c m 1.4.3 Propiedades, clase y estado de objetos««««««««««««««««««««« 8
c m 1.4.4 Dodo de diseño y Dodo de ejecución««««««««««««««««««««««
c c m 1.4.5 Procedimientos«««««««««««««««««««««««««««««««.. 9
c 10
c m 1.4.6 Ñventos««««««««««««««««««««««««««««««««««« 11
c
c c m 1.4.7 Détodos««««««««««««««««««««««««««««««««««... 12
c c m 1.4.8 Dódulos««««««««««««««««««««««««««««««««««... 13
m 1.4.9 Ñncapsulación, herencia, polimorfismo y mensajes en objetos«««««««««««. 14
c Pre
1À5 c as y ejercicios propesos«««««««««««««««««««««««««««À 15
c c
CAPÌTUG
c c ëë: ÑG Ñë3 (ÑTR ëTÑ RA3 3Ñ 3ÑARRGG) 3Ñ VëUAG BAëC 6À0 18
c2À1 ¿Q
c es Visal Basic?ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ
19
c2À2 Hisoria
c y versio es de Visal Basic««««««««««««««««««««««««««À 19
c2À3 Ñl cÑë3 (Ñ or o ë erado de 3esarrollo) de Visal Basic 6À0««««««««««««««« 20
c c m 2.3.1 La barra de menús««««««««««««««««««««««««««««««. 21
c m 2.3.2 La barra de herramientas estándar«««««««««««««««««««««««.
c m 2.3.3 La caja de herramientas (Toolbox)«««««««««««««««««««««««. 22
c 22
c m 2.3.4 Los formularios (Forms)««««««««««««««««««««««««««««
c 23
c c m 2.3.5 Ñl explorador de proyectos (Project Ñxplorer)««««««««««««««««««.. 23
c c m 2.3.6 La ventana de propiedades (Properties Windows)««««««««««««««««.. 24
c c m 2.3.7 La ventana de esquema de formularios (Form Layout Window)««««««««««... 24
m 2.3.8 La ventana explorador de formulario (Form Ñxplorer Window)«««««««««««. 25
c2À4 Gacayda de M3 Gibrary«««««««««««««««««««««««««««««««
25
c c m 2.4.1 Instalación de DSDN Library«««««««««««««««««««««««««...
26
c c m 2.4.2 Comprender el visor de DSDN Library«««««««««««««««««««««.. 26
c c m 2.4.3 Seleccionar la documentación adecuada««««««««««««««««««««. 27
c c m 2.4.4 Buscar información en el visor de DSDN Library««.««««««««««««««« 27
c m 2.4.4.1 Ñxplorar mediante la Tabla de contenido««««««««««««««««. 28
c m 2.4.4.2 Ñncontrar información con el índice««««««««««««««««««..
c c 28
c m 2.4.4.3 Ñncontrar información con la búsqueda de texto completo««««««««.. 29
c m 2.4.4.4 Crear una lista de temas favoritos«««««««««««««««««««. 30
c
2À5 Ñl cÑdior de Códio (Code Ñdior)«««««««««««««««««««««««««««ÀÀ 31
c
c c m 2.5.1 Características del Ñditor de Código (Code Ñditor)««««««««««««««««. 31
m 2.5.2 Personalizar el Ñditor de Código (Code Ñditor)«««««««««««««««««« 32
2À6c Ñl c3eprador (3eber)«««««««««««««««««««««««««««««««ÀÀ
33
c c m 2.6.1 Depurar utilizando puntos de parada (Breakpoints)««««««««««««««««.
34
c c m 2.6.2 Depurar paso a paso por instrucciones (Step Into)««««««««««««««««.. 34
c c m 2.6.3 Depurar paso a paso por procedimientos (Step Over)««««««««««««««« 34
c c m 2.6.4 Depurar paso a paso para salir (Step Out)«««««««««««««««««««« 34
c m 2.6.5 Ventana de Locales (Locals Window)«««««««««««««««««««««« 35
c m 2.6.6 Ventana Inmediato (Immediate Window)««««««««««««««««««««...
c c m 2.6.7 Ventana Inspección (Watch Window)««««««««««««««««««««««. 36
c 36
c m 2.6.8 Inspección rápida (Quick Watch)«««««««««««««««««««««««« 36
c
c m 2.6.9 Pila de llamadas (Call Stack)«««««««««««««««««««««««««... 37
c Pre as para co esar«««««««««««««««««««««««««««««««ÀÀ
2À7 37
c
c
c
c
c u
c
c
CAPÌTUG
c ëëë: ëTR3UCCë A G CTRGÑ MÁ UUAGÑ 3Ñ VëUAG BAëC 6À0 38
c
c3À1 Gos co roles más sales e Visal Basic 6À0«««««««««««««««««««««ÀÀ
c 40
c
c c m 3.1.1 Los botones de comando (CommandButton)««««««««««««««««««« 40
c m 3.1.1.1 Propiedades de los botones de comando«««««««««««««««« 40
c
m 3.1.1.2 Uso de las propiedades en el Ñditor de Código«««««««««««««.. 49
c c m 3.1.1.3 Ñventos sobre los botones de comando««««««««««««««««.. 50
c c m 3.1.1.4 Détodos de los botones de comando««««««««««««««««.«.. 80
c c m 3.1.1.5 Ñjercicios prácticos«««««««««««««««««««««««««.. 84
c c m 3.2.1 Las etiquetas (Labels)««««««««««««««««««««««««««««... 94
c c m 3.2.1.1 Propiedades de las etiquetas«««««««««««««««««««««. 94
c c
m 3.2.1.2 Ñventos sobre las etiquetas«««««««««««««««««««««« 104
c m 3.2.1.3 Ñjercicios propuestos««««««««««««««««««««««««.. 129
c m 3.3.1 Las cajas de texto (TextBox)«««««««««««««««««««««««««« 130
c
c c m 3.3.1.1 Propiedades de las cajas de texto«««««««««««««««««««. 130
c c m 3.3.1.2 Ñventos sobre las cajas de texto«««««««««««««««««««... 134
c m 3.3.1.3 Détodos de las cajas de texto««««««««««««««««««««« 161
c m 3.3.1.4 Ñjercicios prácticos«««««««««««««««««««««««««.. 161
c c m 3.4.1 Los botones de opción (OptionButton)«««««««««««««««««««««... 166
c c m 3.4.1.1 Propiedades de las botones de opción«««««««««««««««««. 166
c c m 3.4.1.2 Ñventos sobre los botones de opción«««««««««««««««««... 166
c c m 3.4.1.3 Détodos de los botones de opción««««««««««««««««««« 166
c c m 3.4.1.4 Ñjercicios prácticos«««««««««««««««««««««««««.. 166
c m 3.5.1 La cajas de verificación (CheckBox)««««««««««««««««««««««.. 173
c m 3.5.1.1 Propiedades de las cajas de verificación««««««««««««««««. 173
c c
c m 3.5.1.2 Ñventos sobre las cajas de verificación««««««««««««««««« 173
c m 3.5.1.3 Détodos de las cajas de verificación«««««««««««««««««« 173
c
c c m 3.5.1.4 Ñjercicios prácticos«««««««««««««««««««««««««.. 173
c c m 3.6.1 La barras de desplazamiento (ScrollBars)««««««««««««««««««««. 176
m 3.6.1.1 Propiedades de las barras de desplazamiento«««««««««««««... 176
c c m 3.6.1.2 Ñventos sobre las barras de desplazamiento««««««««««««««.. 177
c c m 3.6.1.3 Ñjercicios prácticos«««««««««««««««««««««««««.. 177
c c m 3.7.1 Las cajas de lista (ListBox)««««««««««««««««««««««««««.. 182
c c m 3.7.1.1 Propiedades de las cajas de lista«««««««««««««««««««. 182
c c m 3.7.1.2 Ñventos sobre las cajas de lista«««««««««««««««««««« 184
c m 3.7.1.3 Détodos de las cajas de lista«««««««««««««««««««««. 184
c m 3.7.1.4 Ñjercicios prácticos«««««««««««««««««««««««««.. 188
c c m 3.7.1.5 Ñjercicios propuestos««««««««««««««««««««««««.. 191
c c m 3.8.1 Las cajas combinadas (ComboBox)««««««««««««««««««««««... 192
c
c m 3.8.1.1 Ñjercicios prácticos«««««««««««««««««««««««««.. 192
c m 3.9.1 Ñl control tiempo (Timer)«««««««««««««««««««««««««««.. 193
c c
m 3.9.1.1 Propiedades del control tiempo««««««««««««««««««««. 193
c c m 3.9.1.2 Ñjercicios prácticos«««««««««««««««««««««««««.. 194
c c m 3.10.1 Controles relacionados con ficheros (FileList, DirList y DriveList)«««««««««.. 196
c c m 3.10.1.1 Conectar los controles de ficheros««««««««««««««««««. 196
c c m 3.10.1.2 Ñjercicios prácticos««««««««««««««««««««««««« 197
c3À2 Ñl cco rol de cadros de diáloo (Commo d3ialo)««««««««««««««««««« 200
c c m 3.2.1 Los cuadros de dialogo Abrir y Guardar (Open/Save)«««««««««««««««. 203
c c m 3.2.1.1 Ñjercicios prácticos«««««««««««««««««««««««««.. 206
c c m 3.2.2 Ñl cuadro de diálogo Imprimir (Print)««««««««««««««««««««««.. 207
c c m 3.2.2.1 Ñjercicios prácticos«««««««««««««««««««««««««.. 209
c m 3.2.3 Ñl cuadro de diálogo Fuente (Font)««««««««««««««««««««««« 211
c m 3.2.3.1 Ñjercicios prácticos«««««««««««««««««««««««««.. 212
c m 3.2.4 Ñl cuadro de diálogo Color««««««««««««««««««««««««««..c 214
c
c
c
c u
c
c
c m 3.2.4.1 Ñjercicios prácticos«««««««««««««««««««««««««.. 214
c3À3 c
Arrelo e los co roles«««««««««««««««««««««««««««««««« 216
c3À4 c
Fira co los co roles más sales de Visal Basic 6À0««««««««««««««««À 218
c
cCAPÌTUG ëV: ëTR3UCCë AG GÑ UAJÑ BAëCc
c 219
c
4À1 Ñl Ge aje Basic««««««««««««««««««««««««««««««««««« 221
c c m 4.1.1 Antecedentes««««««««««««««««««««««««««««««««.. 221
c c m 4.1.2 Nacimiento y primeros años««««««««««««««««««««««««««. 221
c c m 4.1.3 Crecimiento Ñxplosivo««««««««««««««««««««««««««««.. 222
c c m 4.1.4 Perfeccionamiento««««««««««««««««««««««««««««««. 222
c4À2 Coc cepos básicos««««««««««««««««««««««««««««««««««À 223
c c mm 4.2.1 Identificadores«««««««««««««««««««««««««««««««« 223
c 4.2.2 Palabras reservadas«««««««««««««««««««««««««««««. 224
c m 4.2.3 Tipos de datos«««««««««««««««««««««««««««««««« 225
c
c c m 4.2.3.1 Clasificación de los tipos de datos««««««««««««««««««« 225
c c m 4.2.3.1.1 Tipos enteros (Byte, Integer, Long)««««««««««««««. 226
c m 4.2.3.1.2 Tipos reales (Single, Double, Currency)««««««««««««. 226
c m 4.2.3.1.3 Tipos cadena (String)««««««««««««««««««««. 226
c c m 4.2.3.1.4 Tipos lógicos (Boolean)«««««««««««««««««««. 227
c c m 4.2.3.1.5 Tipos variados (Variant)«««««««««««««««««««. 227
c c m 4.2.4 Constantes«««««««««««««««««««««««««««««««««.. 227
c c m 4.2.4.1 Declaración de constantes««««««««««««««««««««««. 277
c c m 4.2.4.2 Declaración de constantes públicas««««««««««««««««««. 228
c m 4.2.4.3 Declaración de constantes privadas««««««««««««««««««. 231
c m 4.2.4.4 Declaración de constantes locales««««««««««««««««««« 231
c c m 4.2.5 Variables««««««««««««««««««««««««««««««««««.
c 232
c m 4.2.5.1 Declaración de una variable«««««««««««««««««««««... 232
c
c c m 4.2.5.1.1 Declaración de una variable pública«««««««««««««« 233
c m 4.2.5.1.2 Declaración de una variable privada«««««««««««««« 233
c m 4.2.5.1.3 Declaración de una variable local««««««««««««««« 233
c c m 4.2.5.2 Nombre descriptivos de las variables«««««««««««««««««... 234
c c m 4.2.5.3 Almacenar y recuperar datos en variables«««««««««««««««.. 234
c c m 4.2.5.4 Operaciones aritméticas con variables«««««««««««««««««. 234
c c m 4.2.5.5 Ñjercicios propuestos««««««««««««««««««««««««.. 237
c c m 4.2.6 Operaciones de entrada y salida««««««««««««««««««««««««. 237
c m 4.2.6.1 Función InputBox««««««««««««««««««««««««««. 237
c m 4.2.6.2 Función DsgBox««««««««««««««««««««««««««.. 239
c c
4À3 Ñsrcras de co rol selecivas«««««««««««««««««««««««««««ÀÀÀ 244
c c m 4.3.1 Ñxpresiones lógicas«««««««««««««««««««««««««««««.. 244
c
c m 4.3.1.1 Operadores aritméticos«««««««««««««««««««««««.. 245
c m 4.3.1.2 Operadores de relación«««««««««««««««««««««««.. 245
c c
m 4.3.1.3 Operadores lógicos«««««««««««««««««««««««««. 245
c c m 4.3.1.3.1 Operador lógico AND««««««««««««««««««««. 246
c c m 4.3.1.3.2 Operador lógico OR««««««««««««««««««««« 246
c c m 4.3.1.3.3 Operador lógico NOT««««««««««««««««««««. 246
c c m 4.3.2 La sentencia If«««««««««««««««««««««««««««««««« 246
c c m 4.3.3 La sentencia Case««««««««««««««««««««««««««««««. 250
4À4
c Ñsrcras de co rol repeiivas«««««««««««««««««««««««««««ÀÀ 251
c m 4.4.1 Ñl Bucle For«Next«««««««««««««««««««««««««««««.. 251
c c m 4.4.2 Ñl Bucle Do...Loop«««««««««««««««««««««««««««««« 255
c c m 4.4.3 Ñl Bucle While«Wend««««««««««««««««««««««««««««. 256
c c m 4.4.4 Ñl Bucle For Ñach«Next«««««««««««««««««««««««««««. 257
c m 4.4.5 Ñjercicios propuestos««««««««««««««««««««««««««««« 259
cc
c
cc
c
c
c u
c
4À5
c
c Gas f cio es e el le aje Basic««««««««««««««««««««««««««« 259
c c m 4.5.1 Funciones predefinidas««««««««««««««««««««««««««««. 260
c c m 4.5.1.1 Funciones aritméticas««««««««««««««««««««««««.. 260
c c m 4.5.1.2 Funciones trigonométricas««««««««««««««««««««««.. 263
c m 4.5.1.3 Funciones matemáticas derivadas««««««««««««««««««« 264
c
m 4.5.1.4 Funciones de conversión de tipo de datos«««««««««««««««.. 265
c Funciones de manipulación de cadenas de caracteres«««««««««««««««««.
cm 4.5.1.5 266
c c m 4.5.1.5.1 Concatenación de cadenas«««««««««««««««««... 266
c c m 4.5.1.5.2 Obtener subcadenas««««««««««««««««««««.. 267
c c m 4.5.1.5.3 Funciones especiales««««««««««««««««««««. 269
c c m 4.5.1.5.4 Longitud de una cadena««««««««««««««««««« 272
c m 4.5.1.6 Ñjercicios prácticos«««««««««««««««««««««««««..
c m 4.5.2 Funciones definidas por el usuario«««««««««««««««««««««««. 273
c 281
4À6 c
c ë rodcció a las esrcras de daos««««««««««««««««««««««««« 282
c c m 4.6.1 Los Arrays«««««««««««««««««««««««««««««««««... 282
c c m 4.6.1.1 Arrays unidimensionales: vectores««««««««««««««««««« 283
c m 4.6.1.1.1 Declaración de un Array unidimensional«««««««««««« 284
c m 4.6.1.1.2 Almacenar y leer datos en un Array unidimensional««««««« 284
c c m 4.6.1.1.3 Operaciones con los elementos de un Array unidimensional«««. 286
c c m 4.6.1.1.4 Ñjercicios prácticos«««««««««««««««««««««. 287
c c m 4.6.1.2 Arrays multidimensionales: tablas y matrices««««««««««««««.. 288
c c m 4.6.1.2.1 Recorrido por las filas y columnas de un Array multidimensional«.. 288
c c m 4.6.1.2.2 Declaración de un Array multidimensional«««««««««««. 289
c m 4.6.1.2.3 Almacenando y leer datos en un Array multidimensional««««« 290
c m 4.6.1.2.4 Ñjercicios propuestos««««««««««««««««««««. 293
c c
4À7
c Pre as para co esar«««««««««««««««««««««««««««««««ÀÀ 293
c
c
CAPÌTUG c V: G MÑc
c
5À1
c ¿Q
c so los me s?ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ 294
5À2
c c
Ñleme os de los me sÀ «««««««««««««««««««««««««««««««À 295
5À3
c Ñl cÑdior de Me (Me Ñdior)««««««««««««««««««««««««««««À 296
c 5.3.1 Descripción de los elementos del Ñditor de Denús««««««««««««««««« 296
c
5.3.2 Creación de menús en Visual Basic 6.0«««««««««««««««««««««.. 297
c c 5.3.3 Creación de submenús««««««««««««««««««««««««««««... 203
c5À4 Ñve c os sobre los me s«««««««««««««««««««««««««««««««ÀÀ 304
c5À5 Ñjercicios
c propesos««««««««««««««««««««««««««««««««« 304
c c
c c
CAPÌTUG Vë: GA ëTÑRFAZ 3ÑG UUARëc 305
c
c
c6À1 Gos formlarios«««««««««««««««««««««««««««««««««««« 306
c c m 6.1.1 Concepto de formulario««««««««««««««««««««««««««««. 306
c c m 6.1.2 Propiedades de los formularios. ««««««««««««««««««««««««. 306
c c m 6.1.3 Ñventos de los formularios. ««««««««««««««««««««««««««. 311
c c m 6.1.4 Trabajando con múltiples formularios. «««««««««««««««««««««.. 315
m 6.1.4.1 Descargar un formulario. ««««««««««««««««««««««« 317
c c m 6.1.4.2 Cargar un formulario. ««««««««««««««««««««««««. 317
c c m 6.1.4.3 Interactuar con controles de distintos formularios. «««««««««««« 318
c Coc roles com es de ve a as««««««««««««««««««««««««««««À
6À2 320
c c m 6.2.1 Ñl control ImageList (Lista de Imágenes). «««««««««««««««««««« 321
c c m 6.2.1.1 Configurando el control ImageList. ««««««««««««««««««. 322
c m 6.2.1.2 Ñxtraer las imágenes de un ImageList. ««««««««««««««««.. 324
c m 6.2.1.3 Ñjercicio práctico. «««««««««««««««««««««««««« 324
c
c
c
c
c
c
c u
c
c
mc 6.2.2 Control TreeView. «««««««««««««««««««««««««««««««««... 328
c c m 6.2.2.1 Configurar el control TreeView en tiempo de diseño. ««««««««««... 328
c c m 6.2.2.2 Propiedades más importantes del control TreeView«««««««««««.. 330
c c m 6.2.2.3 Cómo añadir objetos Node (Nodos). «««««««««««««««««« 330
c m 6.2.2.4 Cómo leer el texto del Nodo seleccionado. ««««««««««««««« 333
c
m 6.2.2.5 Ñliminar uno o todos los elementos del control TreeView. ««««««««.. 334
c c m 6.2.2.6 Ñjercicios práctico. «««««««««««««««««««««««««. 334
c c m 6.2.3 Control ListView. ««««««««««««««««««««««««««««««.. 338
c c m 6.2.3.1 Configurar el control ListView en tiempo de diseño. «««««««««««. 338
c c m 6.2.3.2 Cómo añadir encabezados en modo de diseño. ««««««««««««« 340
c c m 6.2.3.3 Cómo añadir encabezados en modo de ejecución. «««««««««««.. 341
c c
m 6.2.3.4 Cómo añadir objetos ListItem (Filas). «««««««««««««««««.. 341
c m 6.2.3.5 Leer los datos de una o varias columnas. «««««««««««««««.. 344
c m 6.2.3.6 Ordenar el contenido de las columnas. ««««««««««««««««... 345
c
c c m 6.2.3.7 Búsqueda de elementos. ««««««««««««««««««««««... 345
c c m 6.2.3.8 Ñjercicios práctico. «««««««««««««««««««««««««.. 345
c c m 6.2.4 Control ToolBar. ««««««««««««««««««««««««««««««« 348
m 6.2.4.1 Configurar el control ToolBar en tiempo de diseño. «««««««««««.. 348
c c m 6.2.4.2 Cómo reaccionar ante las acciones del usuario. ««««««««««««... 351
c c m 6.2.4.3 Crear menús dentro de los botones (ButtonDenu). «««««««««««.. 352
c c m 6.2.5 Control TabStrip. ««««««««««««««««««««««««««««««... 353
c c m 6.2.5.1 Configurando el control TabStrip en tiempo de diseño. «««««««««« 353
c c m 6.2.5.2 Agregar objetos Tab. ««««««««««««««««««««««««.. 354
c m 6.2.5.3 Cómo determinar la ficha pulsada por el usuario. ««««««««««««. 355
c m 6.2.5.4 Preparación de los contenedores. ««««««««««««««««««« 356
c c m 6.2.6 Ñjercicios propuestos. ««««««««««««««««««««««««««««..
c 358
c
c
c
CAPÌTUG Vëë: G ARCHëVc 360
c
c Coc cepo de Archivo«««««««««««««««««««««««««««««««««ÀÀ
7À1 361
c
c7À2 Caracerísica de los Archivos«««««««««««««««««««««««««««««À 361
7À3
c Creació
c de archivo aleaorio (si formao) desde Visal Basic 6À0««««««««««ÀÀ 362
7À4 Almace amie o de i formació archivo de exo««««««««««««««««««ÀÀ 363
c c
7À5 Gecra de archivo aleaorio (si formao)««««««««««««««««««««««À 367
c c m 7.5.1 Lectura de un archivo utilizando un bucle. «««««««««««««««««««... 369
c c m 7.5.2 Creación de un editor sencillo. ««««««««««««««««««««««««... 371
c Archivos
7À7 c co esrcra de base de daos«««««««««««««««««««««««ÀÀ 376
c Crear
7À8 c archivo co esrcra de base de daos e Visal Basic 6À0««««««««««ÀÀÀ 377
c Ñjercicios
7À9 c propesos««««««««««««««««««««««««««««««««« 401
c
c
cCAPÌTUG Vëëë: ëTR3UCCë A GA BAÑ 3Ñ 3ATc 402
c c
8À1 c
c ë rodcció a los co cepos de base de daos«««««««««««««««««««««À 403
c m 8.1.1 Concepto de base de datos. «««««««««««««««««««««««««... 403
c
c c m 8.1.2 Ñlementos de una base de datos. «««««««««««««««««««««««. 403
m 8.1.3 Ñstructura de una base de datos. «««««««««««««««««««««««.. 404
c c m 8.1.4 Sistema de Gestión de Base de datos (SGBD). «««««««««««««««««.. 404
c c m 8.1.5 Administrador de base de datos (ABD). ««««««««««««««««««««« 404
c c m 8.1.6 Diseñador de base de datos (DBD). ««««««««««««««««««««««.. 405
c Creació
8À2 c de a base de daos««««««««««««««««««««««««««««ÀÀÀ 405
8À3
c Coc ecar a base de daos co Visal Basic 6À0««««««««««««««««««««À 406
c m 8.3.1 Ñl Dodelo de datos ODBC (Open Database Connectivity). ««««««««««««.. 406
c m 8.3.2 Ñl modelo de objetos DAO (Data Access Object). ««««««««««««««««.. 406
c
c m 8.3.3 Ñl modelo de objetos RDO (Remote Data Object). ««««««««««««««««. 407
m 8.3.4 Ñl modelo de objetos ODBCDirect. «««««««««««««««««««««««c 407
c
c
c
c
c u
c
c
mc 8.3.5 Ñl modelo de objetos OLÑ DB. ««««««««««««««««««««««««««««. 407
c c m 8.3.6 Ñl modelo de objetos ADO (ActiveX Data Object). ««««««««««««««««. 407
8À4
c c
Prepara do la co exió a la base de daos«««««««««««««««««««««««À 408
c c m 8.4.1 Objeto Recordset. ««««««««««««««««««««««««««««««. 409
c m 8.4.1.1 Propiedades del objeto Recordset. ««««««««««««««««««.. 409
c
m 8.4.1.2 Danejo de cursores. ««««««««««««««««««««««««... 411
c c m 8.4.1.3 Control de concurrencia. ««««««««««««««««««««««« 413
c c m 8.4.1.4 Lectura de los campos de un Recordset. «««««««««««««««« 413
c c m 8.4.1.5 Doverse por los registros de un Recordset. ««««««««««««««... 419
c c m 8.4.1.6 Dodificación de registros en un Recordset. ««««««««««««««« 422
c c m 8.4.1.7 Ñliminar el registro activo del Recordset. «««««««««««««««« 423
c c m 8.4.1.8 Inserción de registros en el Recordset. ««««««««««««««««... 423
c m 8.4.1.8 Ñstablecer y leer la posición de un registro en el Recordset. «««««««.. 424
c m 8.4.1.9 Ordenación de los registros de un Recordset. «««««««««««««... 425
c
c c m 8.4.1.10 Búsqueda de registros. ««««««««««««««««««««««« 425
c c m 8.4.1.11 Verificar el estado del Recordset. ««««««««««««««««««.. 429
c c m 8.4.2 Ñventos del objeto Recordset«««««..«««««««««««««««««««« 430
m 8.4.2.1 Sucesos de recuperación de datos. ««««««««««««««««««. 430
c c m 8.4.2.2 Sucesos de navegación«««««««««««««««««««««««.. 431
c c m 8.4.2.3 Sucesos de modificación de datos. ««««««««««««««««««.. 432
c c m 8.4.3 Generación de reportes. «««««««««««««««««««««««««««.. 433
c8À5 Ñjercicios
c propesos««««««««««««««««««««««««««««««««« 436
cTRUC c 3Ñ GA RÑ3c 437
c c la ventana de quitar o agregar programas de Windows. ««««««««««««««««..
9.1
c Abrir 438
9.2 c
c Obtener el directorio desde donde estemos ejecutando nuestro programa. ««««««««««.. 438
c
9.3 Verificar si un archivo existe o no. ««««««««««««««««««««««««««««. 438
c
c
9.4 Capturar la pantalla entera o la ventana activa. ««««««««««««««««««««««..
c9.5 Desplegar la lista de un ComboBox automáticamente. «««««««««««««««««««.
438
c 439
c9.6 Cambiar el fondo de Windows. «««««««««««««««««««««««««««««.. 439
c
c9.7 Comprobar si el sistema posee una tarjeta de sonido. «««««««««««««««««««.. 439
c
c9.8 Apagar el equipo, reiniciar Windows y reiniciar el sistema. «««««««««««««««««... 440
9.9 c un ScrollBar horizontal en una ListBox. «««««««««««««««««««««««.
c Situar 440
c
9.10 c
Centrar una ventana. «««««««««««««««««««««««««««««««««. 441
9.11
c Obtener
c el directorio de Windows y el directorio de Sistema. ««««««««««««««««. 441
9.12
c Crear un efecto Shade al estilo de los sistemas de instalación. «««««««««««««««. 441
9.13
c
Hacer sonar un fichero WAV o una secuencia DIDI. «««««««««««««««««««... 442
c c
9.14 Ocultar y mostrar el cursor. ««««««««««««««««««««««««««««««.. 442
c c
AÑ
c «««««««««««««««««««««««««««««««««««««««««c 443
c
cBëBGë RAFëA««««««««««««««««««««««««««««««««««««««c 445
c c
cc c
cc
c
c c
cc c
cc c
c c
cc
c
cc c
c c
cc
cc c
c
cc
c
c
Próloo
c
Lac mayoría de los usuarios de computadoras que se interesan por el área de la programación, en
su inicialización han querido obtener una documentación capaz de introducirlos de forma adecuada
c
en el manejo de la programación computarizada. Ñste libro garantiza la preparación del interesado
c
mediante ejercicios, cuestionarios, análisis, notas y métodos bien definidos.
c
c edición se ha elaborado específicamente para el manejo de c c debido al papel
Ñsta
tanc importante que juegan las c c en una aplicación. La mayoría de las aplicaciones
incluidas en este libro manejan cc y están dirigidas específicamente al área comercial,
c
por ejemplo: facturación, punto de venta (ptv), almacenes, mantenimiento, consultas, reportes, etc.
c
Sec ha seleccionado como en la primera edición el lenguaje de programación Visal Basic 6À0, que
escun lenguaje de programación orientado a objetos de fácil uso y uno de los más preferidos por los
programadores
c de aplicaciones. Ñxisten otros lenguajes de programación orientado a objetos, tales
como: DÑLPHI, Visual FoxPro, Visual C++, entre otros, que también son muy potentes y muy
c
utilizados por los programadores de aplicaciones.
c
Porc su parte, los programas orientados a objetos (eventos) son los programas típicos de Î ,
c como Î,
,
, etc. Cuando uno de estos programas ha arrancado, lo único
tales
quec hace es quedarse a la espera de alguna del usuario, que en este caso a dicha acción en
la programación orientada a objetos se le llama . Un es una acción que realiza el
c
usuario hacia un objeto, por ejemplo, cuando el usuario hace clic en un botón de comando, esa
c
acción de hacer clic en el botón se le llama Click. También cabe mencionar el evento
c
MoseMove (P P c c ) que ocurre cuando el usuario mueve el puntero del P
c por cualquier objeto sobre una ventana.
c
Si usted ha programado con otros métodos de lenguajes de programación, ya sea de
c
cc P , encontrará en la P c c c el método más fácil
c
y eficaz para la creación de sus aplicaciones.
c
A cmedida que avance cada capítulo de este libro, notará que ha adquirido los conocimientos
necesarios
c para crear cualquier tipo de aplicación compatible con Î , así como, la base
necesaria para programar en otros lenguajes de programación orientada a objetos.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Losc elementos principales de una aplicación de Windows son: P c c
c
P c P c c c . Cada uno de estos elementos juega un papel muy
c
importante en una aplicación de Windows.
c
c Formlarios o ve a as
- 1À4À1
c
Ñnc c , un P es considerado como una ventana típica de Windows Ñn este se
colocan todos los de los que dispone Visual Basic para crear una aplicación. Cada uno de
c
los elementos gráficos que forman parte de una aplicación de Windows es un c :
c
botones, cajas de texto, cajas de diálogo, barras de desplazamiento, menús, gráficos, cajas de
c
verificación, y muchos otros elementos son para Visual Basic.
c
Un P también se puede considerar como una especie de contenedor para los cde
una aplicación. Una aplicación puede tener uno o varios P pero un únicocP
Lac abla 1À1 muestra las abreviaturas de los controles más usuales, junto con la nomenclatura
c
inglesa de la que se derivan.
c
c u u
c c c c c
c
c
c c c c c
c c c c c
c c c c c
c c c c c
c c c c c
c c c c c
c
c
c
c c
c
c
c c c
c c c c c
c c Tabla 1.1. Abreviaturas para los controles más usuales.
c
- 1À4À3 Propiedades, clase y esado de objeosc
c
Sec ha dicho que los que colocamos en un formulario de Visual Basic, también son llamados
,
c cada uno de los cuales posee cP cc. Las son las
características
c propias de un cpor ejemplo, imagínese c cccc c !c "#c
c P c c c c c c P .c Ñl carro descrito posee características que definen o
c
proporcionan la apariencia o el estado físico del . A estas se le denominan
cy a los valores que poseen dichas cse lescdenominan cc. c
Lac aplicación se prueba en Pc c . Ñn este caso, el programador actúa sobre la
c
aplicación produciendo losc codificados y obteniendo los valores proporcionados por dichos
c
. Hay algunas c de los c que solo pueden establecerse en Pc c
!,
c pero muchas otras pueden cambiarse en Pcc . Para que una aplicación pase
delc Pcc ! al Pcc simplemente hay que pulsar la tecla ÈF5], o bien, hacer
clicc en el botón ë iciar (ar) , de la c c P c . Otra forma no muy
utilizada, es haciendo clic en la opción ë iciar (ar) del menú R (Ñjecar)À
Dásc adelante, veremos cmo utilizar cada uno de estos y cómo se comportan ante algunas
c
situaciones.
c
- 1À4À7
c M
odos
c
Los P son funciones que también son llamadas desde el programa, pero a diferencia de los
c
P c no son codificados por el programador. Los P son llamados desde código
enc Visual Basic de la misma manera como se hace referencia a una propiedad del Cada
c de o cposeen sus propios P , aunque algunosc tienen P c
tipo
c
comunes.
c
Los P cen Visual Basiccposeen un P cllamado Hide, que permite ocultar el P cy
c
otro P cllamado how, que permite mostrar el P cdespués de haber sido ocultado. Un
c
ejemplo de cómo hacer referencia a uno de estos P sería el siguiente:
c
m Para ocultar el formulario: Form1ÀHide
c
Para volver a ema favorio:
c
c à Resalte el tema y, después, haga clic en 3isplay (Mosrar), o bien, haga doble clic en el
c nombre del tema.
c
c qiar ema favorio:
Para
c
à Seleccione el tema y, después, haga clic en Remove (Qiar).
c c
Ñsta barra posee 12 botones cada uno de los cuales tiene una función en específico en el proceso
de depuración. Los primeros tres botones que aparecen marcados en rojo, se utilizan para ejecutar,
detener y finalizar una aplicación. Ñl botón ar (Ñjecar) , se utiliza poner en ejecución una
ë À Carlos Ma el Rodríez Bcarelly
Ñjecuta las demás líneas de una función en la que reside el punto de ejecución actual. La siguiente
ë À Carlos Ma el Rodríez Bcarelly
Ü Busque la propiedad (ame) ( c P c c c c c c ). Cambie el
Pcc Comma d1 y escriba cmdalir y, a continuación, presione la tecla ÈÑTÑR].
Ñste será ahora el nuevo nombre del ccP .
ë À Carlos Ma el Rodríez Bcarelly
c
TA 2: Algunos formatos de imágenes no son soportados por esta propiedad. Los formatos de imágenes que pueden
ser asignados son los de tipo BDP, GIF, JPÑG, ICO y metaarchivos (.WDF, .ÑDF).
c
c TA: Después de escribir el ombre del objeo y luego digitar el p o, automáticamente aparece una ventana
emergente que te permite explorar todas las propiedades de dicho objeto. Si esta ventana no aparece cuando usted
c digita el p o, entonces, el nombre del objeto no esta bien escrito en la ventana del c c ( o
c simplemente, no existe en el formulario.
c
CMÑTARë: Utilice siempre el evento Goad de los formularios siempre y cuando quiera realizar alguna operación
antes de iniciar la aplicación. Dás adelante estudiaremos más acerca de los eventos de los formularios.
c
c
ó Guarde la aplicación con los nombres FormÑjercicio4-3 para el P cy, Ñjercicio4-3 para el
c
proyecto.
c
c
3ra3rop Ocurre cuando finaliza una operación de arrastrar y soltar un sobre otro
c . Ñn los c c P este posee tres P que son:
c orce, coorde adas , Y del puntero del mouse. Para que un c se pueda
arrastra debe tener establecido el valor 1 ± Aomaic en la propiedad 3raMode,
c
en caso contrario la operación de arrastrar y soltar nunca iniciará.
c
c Ñl P 3ra3rop viene representado de la siguiente manera:
c
c Private Sub Objeto DragDrop(Source As Control, X As Single, Y As Single)
c
c Ñnd Sub
c
c
c
c Donde:
c
orce: Representa el control que se esta arrastrando. Ñsta variable que al
c castellano significa origen, hace referencia al como si se tratase del
c mismo, es decir, se puede hacer referencia a cualquierc propiedad del
c especificando la variable orce, seguido del nombre de la . Por ejemplo,
c orceÀVisible = False, oculta el objeto que identifica el argumento orce.
c : Ñs un número que representa la coordenada horizontal actual del puntero del
c mouse dentro del P o cc .
c
c Y: Ñs un número que representa la coordenada vertical actual del puntero del
c mouse dentro del P o cc .
c
CMÑTARë: Utilice un procedimiento de evento 3ra3rop para controlar qué ocurre tras
c completarse una operación de arrastrar. Por ejemplo, puede mover el control de origen a una nueva
c ubicación o copiar un archivo de una ubicación a otra.
c
primero el enfoque. c Por ejemplo, si adjunta un procedimiento de evento oFocs a cada control de un formulario
c
puede guiar al usuario mostrándole instrucciones breves o mensajes en la barra de estado. También puede
c
proporcionar avisos visuales activando, desactivando o mostrando otros controles que dependan del control que tiene el
c
enfoque.
c
c
GosFocs Ñl evento GosFocs es el opuesto del evento oFocs. Ñste evento ocurre
c cuando un objeto pierde el enfoque o focus.
c Ñl termino GosFocs significa ³perdida del enfoque´, ocurre exactamente
c cuando el usuario realiza una acción o evento sobre otro objeto, causado de
c esta manera que el objeto anterior pierda el enfoque. Ñste evento es muy
c utilizado por los programadores, para verificar si un usuario realizo o no alguna
c operación requerida por el programa, por ejemplo, un programa que requiere
que se introduzca el nombre y el apellido de una persona para registrarlo. Ñs
c obvio que para esto se necesitan dos cc
y, por ende, no
c pueden dejarse vacías porque son datos importantes. Puede verificar con este
c evento si el usuario dejo o no las cajas vacías.
c
c Al igual que el oFocs, este es muy poco utilizado en los
c c P . Puede utilizar el ejercicio anterior para practicar este
c . Codifique el GosFocs en vez del P oFocs y,
c cambie los mensajes ³Ñl primer botón ha recibido el enfoque´, ³Ñl segundo
c botón ha recibido el enfoque´, por: ³Ñl primer botón ha perdido el enfoque´, ³Ñl
c segundo botón ha perdido el enfoque´.
c CMÑTARë: Un procedimiento de evento GosFocs resulta especialmente útil para
c comprobar y validar actualizaciones. Usar GosFocs puede hacer que la validación tenga lugar
c conforme el usuario mueve el enfoque del control. Otro uso para este tipo de procedimiento de
c evento es activar, desactivar, ocultar y mostrar otros objetos, como en un procedimiento de
c evento oFocs. También puede invertir o cambiar condiciones que estableció en el
c procedimiento de evento oFocs del objeto.
c
c
Key3ow , Ocurre cuando el usuario presiona (Key3ow ) y suelta (KeyUp) una tecla
c mientras un tiene el . Aunque son dos que suelen usarse
KeyUp
c combinados, son eventos distintos y, por consiguiente, serán definidos de
c manera independiente.
c CMÑTARë: Utilice los eventos Key3ow y KeyUp siempre y cuando quiera realizar una
c operación distinta para cuando el usuario presiona una tecla y otra operación para cuando la
suelta. También utilice estos eventos cuando quiera leer teclas especiales como las teclas de
c función, el teclado numérico, etc. Ñn caso contrario utilice el evento KeyPress.
Bo : Ñste argumento almacena o devuelve un valor que representa el botón del
ë À Carlos Ma el Rodríez Bcarelly
Y: c Ñs un número que representa la coordenada vertical actual del puntero del mouse dentro del
c
P o .
c
CMÑTARë: Utilice un procedimiento de evento Mose3ow o MoseUp para especificar acciones que ocurrirán
c
cuando se presione o se suelte un determinado botón del mouse. A diferencia de los eventos Click y 3blClick, los
c
eventos Mose3ow y MoseUp le permiten distinguir entre los botones primario, secundario y central. También
puede escribir código para combinaciones de teclado y mouse que utilicen los modificadores de teclado DAYÚS, CTRL
cy ALT.
c
c
TA 1: No utilice los eventos Mose3ow y MoseUp para dar efectos de pulsación a ccP . Utilice
c
controles de imágenes para realizar dichos efectos. Puede utilizar un control ëmae o PicreBox que responden de la
misma manera que los ccP .
c
c
c
TA 2: No utilice los eventos Mose3ow para realizar las operaciones que se deben realizar con el evento Click de
c determinado tipo de objeto. Si utiliza el evento Mose3ow y el evento Click en un mismo objeto, entonces, no
un
puede utilizar el evento Mose3ow para mostrar mensajes en otras ventanas o mostrar algún formulario, debido a
c el código que esta dentro del evento Click no se ejecutará. Ñsto es porque el evento Mose3ow intercepta el
que
c
evento Click, y como resultado el código de este último evento no se producirá.
c
c Ñjercicio:
c
Para este ejemplo utilizaremos un tipo de control que aun no hemos definido ni utilizado en las
c
aplicaciones anteriores realizadas en este libro. Ñste es el control ëmae que permite
c
seleccionar una imagen del disco duro y establecerla en el formulario como un objeto que responde
c mismos eventos de un ccP .
a los
c
Lac ventaja de utilizar un control ëmae es que podemos utilizar nuestros propios c c
P que hayamos creado en cualquier editor grafico, ya sea PhotoShop, Paint, FreeHand, etc.
Porc ejemplo, podemos dibujar dos imágenes que representen un c c P , uno para su
c
estado inicial y otro para cuando se pulse, y luego cambiar estas imágenes con los eventos
c
Mose3ow y MoseUp.
c
c
Ñl siguiente ejemplo muestra una aplicación con cinco imágenes que representan los botones de
c
comando de la aplicación, Ñstas imágenes serán establecidas con cinco controles ëmae.
c
c
ó Abra un nuevo proyecto.
c
ó Dibuje
c en el formulario cinco controles ëmae del mismo tamaño (si hacer Copy ± Pase), tal y
como se muestra en la siguiente página:
c Ñjercicio:
c
Ñl csiguiente ejercicio muestra una aplicación con cinco ccP , donde uno de ellos
ubicará
c los otros cuatro en cada esquina de la ventana.
c
ó Abra un nuevo proyecto e inserte cinco c c P , tal y como se ve en la siguiente
c
figura:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Haga doble clic sobre el tercer ccP .
c
ó Dentro del procedimiento Click del tercer c c P , escriba el siguiente bloque de
c
código:
c
Command1.Dove
c 1, 1, 1000 ' Posiciona el primer botón en la esquina superior izquierda
Command2.Dove
c 4600, 1, 1000 ' Posiciona el segundo botón en la esquina superior derecha
Command4.Dove 1, 4100, 1000 ' Posiciona el cuarto botón en la esquina inferior izquierda
Command5.Dove 4600, 4100, 1000 ' Posiciona el quinto botón en la esquina inferior derecha
c c
c Las propiedades más utilizadas del objeto Font son: Bold (Negrita), Italic (Cursiva),
c Name (Nombre del tipo de letra), Size (Tamaño), StrikeThrough (Tachado) y
c Underline (Subrayado).
c CMÑTARë 2: Utilice la propiedad Fo en c c ! cuando quiera darle formato al texto
contenido en los objetos de la aplicación y no espera cambiarlo muy a menudo. Por otro lado, cuando
c utilice el objeto Fo desde el cc hágalo cuando desee cambiar el formato del texto con
c mucha frecuencia o cuando el formato del texto tenga que cambiar por algún evento realizado por el
usuario. Por ejemplo, cambiar el color de una opción de un menú cuando el usuario coloca el puntero
c del Douse sobre dicha opción.
c c
c Ñjercicio:
c
c
A continuación, se muestra una aplicación compuesta por ocho ccP . Cada c
cP
c modificará una de las propiedades del objeto Fo de una Ñtiqueta (Label) que estará
colocada
c en la parte más arriba de los ccP .
c
c un nuevo proyecto.
ó Abra
c
ó Inserte una Ñtiqueta en la parte más arriba del formulario y en el centro.
c
c la propiedad Capio escriba TÑXTO DÑ DUÑSTRA. Ñn la propiedad Aoize establezca el
ó Ñn
valor Tre.
c
ó Inserte ocho ccP del mismo tamaño uno al lado del otro y debajo de la Ñtiqueta,
tal y como se ve en la siguiente figura:
ë À Carlos Ma el Rodríez Bcarelly
c
c
3aaField, Ñstas propiedades están relacionadas a la manipulación de bases de datos
3aaForma,
c y se tratan en el Capilo 5 de este libro.
3aaMember y
c
3aaorce
c
c
Gocked Devuelve o establece un valor que indica si la caja de texto se puede
c modificar. Puede tomar los valores Tre o False. Si es Tre el usuario no
c podrá escribir en la caja de texto y si es False (valor por defecto) el usuario
podrá escribir en la caja de texto.
c
c CMÑTARë: Utilice el valor Tre en la propiedad Gocked si desea mostrar datos que el
c usuario no podrá modificar en la caja de texto. Por ejemplo, puede utilizar una Caja de texto
para mostrar la hora o la fecha del sistema y establecer el valor Tre en la propiedad
c Gocked de la Caja de texto para que el usuario no la pueda modificar. Otro caso podría ser,
c que al leer los datos de una base de datos usted solamente desee mostrarlo al usuario y no
permitirle modificarlos.
c
c
Tex Sin dunda alguna esta es la propiedad más importante de las cajas de texto,
c debido a que es la encargada de manipular el texto que se escribe en la
c caja de texto. Todo lo que sea escrito en la caja de texto se almacena en la
c propiedad Tex en tiempo de ejecución. También puede escribir en la caja
de texto mediante el editor de código como se muestra en el siguiente
c ejercicio para mostrar la fecha del sistema.
c Ñjercicio:
c
ó Abra un nuevo proyecto.
c
ó Inserte una caja de texto.
c
ó Seleccione la propiedad Gocked de la caja de texto y establezca el valor Tre.
c
ó Haga doble clic en cualquier parte del formulario y en el evento Goad escriba la siguiente línea de
c
código:
c
Text1.Text = Date ' Duestra la fecha del sistema.
c
c
ó Corra la aplicación.
c
Se mostrará la fecha del sistema en la caja de texto. Intente modificarla. Podrá observar que la caja
c
de texto no le permite modificar su contenido debido a que la hemos bloqueado (Gocked).
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio24-3 para el P c
y Ñjercicio24-3 para el proyecto.
ë À Carlos Ma el Rodríez Bcarelly
Ñnd If
c If dd = True Then
c Ñlse
Ñxit For
c dd = False
c Ñnd If
Control.SelStart = Control.SelStart + 1
c Control.SelLength = 1
c
Ñnd If
Next
c = 8 Then
If Tecla
c If Control.SelStart > 0 Then
Control.SelStart = Control.SelStart m 1
c Ñnd If
Ñnd c If
For = 1 To 100
c If Control.SelStart + 1 = Posiciones(I) Then
c If Tecla = 8 Then
Control.SelLength = 1
c Ñlse
c Ñnd If
KeyAscii = Tecla
c Ñnd If
c
Nextc
Ñxit Function
ControlNoÑncontrado:
Ñnd Function
c
c
CMÑTARë: Ñn muchas ocasiones el programador coloca un texto descriptivo, un símbolo o una pequeña imagen en
los campos que son requeridos en un formulario. Ñsto notifica al usuario los campos que tiene que completar
c
obligatoriamente.
c
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio31-3 para el P c
y Ñjercicio31-3
c para el proyecto.
c
- 3À3À1À3 M
odos de las cajas de exo
c
c
Incluye los métodos más usuales de los controles (3ra, Refresh, eFocs). También posee
c métodos que no son usados con tanta frecuencia en una aplicación de Visual Basic.
otros
c
c
- 3À3À1À4 Ñjercicios prácicos
c
Ü Ñlc siguiente ejercicio muestra como realizar operaciones matemáticas utilizando cajas de texto. Ñl
c
ejercicio esta compuesto por tres cajas de texto y cuatro botones de comando que permitirán
c
realizar las operaciones básicas de matemática.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Cambie los nombres por defecto de las cajas de texto: txtPrimerValor para la primera caja,
txtSegundoValor para la segunda caja y txtResultado para la tercera caja.
ë À Carlos Ma el Rodríez Bcarelly
Ñndc If
c
c
ó Haga
c doble clic sobre el botón Dividir y dentro del evento Click escriba:
c
µValidación
c de las cajas de texto verificando que no estén vacías.
µVerificamos la primera caja.
c
If Len(Trim(txtPrimerValor.Text)) = 0 Then
c DsgBox ("Debe introducir un valor en la primera caja.")
c txtPrimerValor.SetFocus ' Hace que la caja reciba el enfoque.
c µVerificamos la segunda caja.
c ÑlseIf Len(Trim(txtSegundoValor.Text)) = 0 Then
DsgBox ("Debe introducir un valor en la segunda caja.")
c
txtSegundoValor.SetFocus ' Hace que la caja reciba el enfoque.
c
c
Ñlse
c µDivide el valor de las dos cajas de texto y lo muestra en la caja resultado.
c µUtilizamos la sentencia Val para indicar que es con números que estamos trabajando.
txtResultado.Text = Val(txtPrimerValor.Text) / Val(txtSegundoValor.Text)
c
Ñndc If
c
c
ó Corra la aplicación.
c
ó Agrega
c algún valor numérico en la primera y en la segunda caja de texto. Haga clic sobre los
botones de comando para efectuar una operación matemática y ver los resultados.
c
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio32-3 para el P c
c
y Ñjercicio32-3 para el proyecto.
c
c
c siguiente ejercicio muestra como cambiar el tipo de fuente de una caja de texto mediante
Ü Ñl
c
botones de comando. Ñl ejercicio consiste en un pequeño editor compuesto por una caja de texto
conc barras de desplazamiento y ocho botones de comando, que permitirán realizar las siguientes
operaciones: asignar y quitar negrita, asignar y quitar subrayado, asignar y quitar cursiva, asignar y
c
quitar tachado y alinear el texto.
c
c
ó Diseñe la pantalla que se muestra en la siguiente página:
Losc botones de opción también se complementan con los métodos estándar ya estudiados
c
anteriormente (3ra, Refresh, eFocs, Move, Zorder). Los métodos son muy poco usados en
losc controles que usamos frecuentemente, por tal razón, nos limitaremos en hacer énfasis en cada
unoc de ellos.
c
c
- 3À4À1À4 Ñjercicios prácicos
c
c siguiente aplicación posee un conjunto de botones de opción dentro de varios contenedores
Ü La
quec indicarán los colores que se le va aplicar al fondo y a la letra de una caja de texto. Cada
conjunto
c de colores estará por separado en controles Frame. Ñstos tendrán por encabezado la
función
c que realizará ese conjunto de botones dentro del control Frame.
c
ó Abra un nuevo proyecto.
c
ó Ñn la propiedad Capio del formulario escriba Botones de opción. Ñn la propiedad Heih
c
escriba el valor 5685 y en la propiedad Widh escriba 9060 para fijar el tamaño adecuado al
c
formulario.
c c
ó Inserte dos Frame en el formulario y dentro de cada Frame cinco botones de opción, tal y
como se ve en la imagen de la página siguiente:
ó Haga doble Clic sobre el botón Aplicar y dentro del evento Click escriba:
ë À Carlos Ma el Rodríez Bcarelly
Dim c respuesta
c
respuesta = DsgBox("¿Desea guardar los cambios en el documento?", vbYesNoCancel +
c
vbÑxclamation + vbDefaultButton1, "Ñditor")
c
µSelecciona
c la respuesta del usuario.
c
If respuesta = vbYes Then
c
DsgBox ("Usted selecciono la respuesta Sí.")
Ñnd c If
c
If respuesta
c = vbNo Then
DsgBox ("Usted selecciono la respuesta No.")
Ñnd c If
c
c
If respuesta = vbCancel Then
c
DsgBox ("Usted selecciono la respuesta Cancelar.")
Ñnd c If
c
c
c
ó Dentro evento Click del tercer botón de comando:
c
'Duestra
c un mensaje en un cuadro de diálogo personalizado con los botones, Abortar, Reintentar e
µIgnorar. Ñn el cuadro se muestra el icono de mensaje de crítico.
c
Dim c respuesta
c
respuesta = DsgBox("No se puede copiar el archivo.", vbAbortRetryIgnore + vbCritical, "Copiando
archivo")
c
c
µSelecciona la respuesta del usuario.
c
c
If respuesta = vbAbort Then
c
DsgBox ("Usted selecciono la respuesta Abortar.")
Ñnd c If
c
If respuesta = vbRetry Then
c
DsgBox ("Usted selecciono la respuesta Reintentar.")
Ñnd c If
c
If respuesta
c = vbIgnore Then
DsgBox
c ("Usted selecciono la respuesta Ignorar.")
Ñnd If
c
c
c
ó Dentro del evento Click del cuarto botón de comando:
c
c
'Duestra un mensaje en un cuadro de diálogo personalizado el botón Aceptar y Cancelar.
'Ñnc el cuadro se muestra el icono de información.
c
DsgBox ("Los datos se almacenaron satisfactoriamente."), vbOKOnly, "Guardar"
c
Losc cc son utilizados para expresar condiciones y describir una relación entre
dosc valores. Los operadores de relación se muestran en la siguiente tabla:
c
c £# ) " !
c 9 Dayor que >
: Denor que ®
c / Igual a =
c 9/ Dayor o igual que
c :/ Denor o igual que
c :9 Distinto a
c
Ñjemplos
c de algunas relaciones:
c
c 1. 5 > 3 Devuelve verdadero (true)
c
2. 3 = 2 +1 Devuelve verdadero (true)
c
c 3. 2 ®> 1+1 Devuelve falso (false)
c 4. 8 ® 5 Devuelve falso (false)
c 5. µA¶ ® µB¶ Devuelve verdadero (true)
c
6. µZ¶ ® µH¶ Devuelve falso (false)
c
c
- 4À3À1À3 peradores lóicos
c
Sec utilizan para combinar las expresiones lógicas, es decir, que nos permiten evaluar más de una
c
expresión lógica a la vez. Los operadores A3, R y T trabajan con operandos que son
c
expresiones lógicos.
c
Su formato es:
c
c
ÈOperando 1ß operador lógico ÈOperando 2ß «operador lógico ÈOperando Nß
c
c
Donde:
c
), "cc × pueden ser cualquier expresión lógica.
c
8.mc Utilizando un bucle While«We d calcular e imprimir en un cuadro de mensaje el total de letras
³a´c contenidas en una caja de texto.
c
9.mc Utilizando un bucle While«We d convertir las letras contenidas en una caja de texto a
mayúscula y minúsculas respectivamente. Ñjemplo: La CaSa De PeDrO.
c
c Crear un objeto llamado Carros. Agregar cinco marcas de carros y utilizando un bucle For
10.m
c
Ñach«ex leer y mostrar en un cuadro de mensaje todos los elementos del objeto.
c
c
4À5c GA FUCëÑ Ñ ÑG GÑ UAJÑ BAëC
c c
Unac función es un subprograma que recibe como argumentos o parámetros datos de tipo numérico
(ë ceer, Go , 3oble), o no numérico (ri , Boolea , Varia ), y devuelve un resultado.
c
Ñl formato de una función es el siguiente:
c
c
ombre_de_la_f ció ( Pc), Pc",«)
c
c
.Pc)c.P": Son datos de tipo /c,c0c' c c.
c
Ñl Pcse conoce en términos de lenguajes de programación con el nombre de P.
c
Para poder calcular el valor o resultado de la función, todo lo que se debe conocer es el valor o los
c
valores e los argumentos.
c
c
Ñjemplos:
cccccc
c cAbs(m5) = 5 La función Abs calcula el valor absoluto de un argumento. Ñn este caso el
ccc1.
c argumento es m5 y el resultado de la función es 5.
c
c Cos(6) = 0.994521895368273
2.
La función Cos calcula el coseno de un argumento. Ñn este caso el argumento
es 6 y el resultado de la función es 0.994521895368273.
c c ccccccccccccccccccccccccccccc
ë À Carlos Ma el Rodríez Bcarelly
Ñxp(P)
ë À Carlos Ma el Rodríez Bcarelly
c
por el logaritmo natural de de la siguiente manera:
c
c
Log
= Go(
) / Go()
c
Ñl csiguiente ejemplo muestra como calcular el logaritmo en base 10:
c
c Dim DiLogaritmo
DiLogaritmo = Go(3) / Go(10)µDevuelve 0.477121254719662.
c DiLogaritmo = Go(4) / Go(10)µDevuelve 0.602059991327962.
c DiLogaritmo = Go(5) / Go(10)µDevuelve 0.698970004336019.
c
- F
c ció qr:
c
Devuelve la raíz cuadrada de un número.
c
c
Formao:
c
c qr(P)
c
Ñl argumento Pces un tipo 3oble o cualquier expresión numérica válida mayor o igual que
c
cero.
c
c
Ñjemplos:
c
c Dim Raiz
Raiz = qr(25) µDevuelve 5.
c Raiz = qr(4) µDevuelve 2.
Gos me s
c
Capílo 5
c
CTÑë3
c
c c
5À4 ¿Q
so los me s?
5À5c Ñleme os de los me sÀ
5À6c Ñl Ñdior de Me (Me Ñdior)À
c 5.3.1 Descripción de los elementos del Ñditor de Denús.
c 5.3.2 Creación de menús en Visual Basic 6.0.
5.3.3 Creación de submenús.
c
5À4 Ñve os sobre los me sÀ
5À5c Ñjercicios propesosÀ
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Gos me sc
Capílo 5
c c
5À1c ¿QUÉ G MÑÚ?
c c
c Al conjunto de opciones presentadas al usuario para su
c selección en una zona determinada de la pantalla se les
c llaman me s. La gran mayoría de las aplicaciones de
c Windows poseen menús que contienen todas las
c herramientas necesarias que hacen posible la utilidad de la
aplicación.
c
c Los programas tales como Word, Ñxcel, WordPad, incluyen
c Barras de Me s y dentro de estas se encuentran los
c menús y dentro de los menús las opcionescpara cada menú.
c c
Porc ejemplo, el menú Archivo (File) de Dicrosoft Word incluye opciones o comandos tales como:
c
Nuevo, Abrir, Cerrar, Guardar, Guardar como, Imprimir, etc.
c
Los menús presentan sobre los demás c la ventaja de que ocupan menos espacio en
c
pantalla, pero tienen la limitante de que las opciones o comandos de los menús no están visibles
c que se despliega totalmente el menú.
hasta
c
c
5À2c ÑGÑMÑT 3Ñ G MÑÚ
c c
c los elementos principales de los menús tenemos los c , c c c
Ñntre
c c c («), el c c P (Ź), las c y c P. Todos
c elementos permiten una mejor legibilidad al trabajar con los menús.
estos
c
Ɣ ,c c a son aquellos que mediante combinaciones de teclas nos permiten acceder
c menú o a una opción de un menú. Por ejemplo, para desplegar el menú Archivo (File) de
a un
c
Dicrosoft Word basta con pulsar las combinaciones de teclas Al + A (en español) ó Al + F (en
c
inglés), o para activar la cc cAbrir se pulsan las teclas Crl + A (en español) ó Crl +
c(en inglés).
c
Ɣ ,c c c c c c :: Ñstos están representados por c c
c
(«) que indican que al seleccionar esta opción se mostrará una ventana de dialogo
c se requerirá de algún proporcionado por el usuario.
dónde
c
Ɣ c
c c c Pc <a Ñl indicador de submenú esta representado por una c c c
c , que indica que el elemento de ese menú posee otras opciones de menú llamado
submenú.
c
Ɣ ,c c c ac Así como su nombre lo indica, son c que dividen entre un
c
conjunto de opciones y otro conjunto de opciones dentro de un mismo menú. Las líneas divisoras
noc tienen ninguna función especial dentro de un menú, solo indican la división entre un conjunto de
opciones
c dentro de un mismo menú.
Ɣ cLas imágenes: Las P en los menús juegan un papel muy importante, ya que ilustran
c
gráficamente la función de un elemento dentro de ese menú. Por ejemplo, la opción ëmprimir del
c
menú Archivo de Dicrosoft Word posee la imagen de una impresora , que indica que es la
c
opción de imprimir.
c
Gos me sc
Capílo 5
c c
5À3c ÑG Ñ3ëTR 3Ñ MÑÚ (MÑU Ñ3ëTR)
c c
c Basic posee una potente herramienta para la creación de menús y todos los elementos que
Visual
c los componen. Ñl Ñdior de Me (Me Ñdior) es la herramienta que permite la creación
estos
de estos. Para activar o mostrar la ventan del Me Ñdior, haga clic en la opcion Me Ñdior del
c
c Tools ( P ) o bien, haga clic en el botón
menú correspondiente al Me Ñdior de la
cc P c . Al seleccionar esta opción se mostrará la siguiente ventana:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c Figura 5.1. Denú Ñditor de Visual Basic 6.0
c
c 3escripció de los eleme os del Ñdior de Me s
- 5À3À1
c
Ñnc la fira 5À1 se muestra la ventana del c c c que posee todas las herramientas
necesarias
c para la creación de estos. A continuación se describen cada uno de los elementos del
ccc
c c
Ɣ( c ca Ñn esta cc
se escribe el nombre del menú o elemento de un menú o
c
submenú. Ñn esta c c
el carácter (&) ampersa d tiene un significado especial, ya que
indica
c que el carácter o la letra a la derecha de él será el acceso directo a ese menú o elemento de
unc menú o submenú. Por ejemplo, si un menú denominado Archivo tiene el carácter (&)
ampersa d posicionado a la izquierda, es decir, delante de la letra A significa que sólo basta con
c las combinaciones de las teclas Al + A para tener acceso a ese menú, elemento de un
pulsar
c o submenú.
menú
c
Ɣ× c Pc×Pa Ñn esta cc
cse especifica el nombre del menú, elemento de un menú o
submenú,
c que se utiliza para referenciar a ese menú en el cc .
c
Ɣ /
c= a La cc
Í dice hace referencia a la posibilidad de crear de menús.
c
c
Ɣ '(c.c a Permite asignar acceso directo a los elementos de cada menú. Ñn esta
lista
c se muestran una serie de combinaciones, el cual el usuario puede seleccionar la más
adecuada para ese elemento de menú.
Gos me sc
Capílo 5
c c
Ɣ (*c
c a Permite agregar un cotejo de verificación (¿) a un elemento de un menú.
c
¨c c $ a Indica si el menú o elemento del menú responderá a los eventos del
c
usuario.
c
Ɣ c c a Indica si el menú o elemento del menú estará visible o no.
c
Las demás opciones $(
/0, ×
y Î , son pocas usadas, por tal
c
razón sean limitado su descripción. Para más información acerca de estás opciones, consulte la
c (help) de Visual Basic.
ayuda
c
c
A continuación, describiremos cada uno de los botones del menú editor:
c
cccccccccc
c
cccccccccÑl botón c se utiliza para eliminar cuatro puntos suspensivos a la izquierda, que
c
indican si ese elemento es un comando de un menú o submenú.
c
c Ñl botón c agrega cuatro puntos suspensivos («À) a la izquierda de un elemento
dec un menú o submenú. Si este botón se pulsa dos veces se agregan ocho puntos suspensivos
(««ÀÀ)
c a la izquierda de un elemento, indicando que es un elemento de un submenú. Puede pulsar
este botón las veces que se necesario siempre y cuando sepa establecer el orden jerárquico entre
c
los elementos del menú.
c
c
c Los botones c c c c se utilizan para desplazarse entre los menús,
elementos
c de menú o submenú.
c
c Ñl botón ×
c se utiliza para agregar un menú, un elemento de menú o
c
submenú. Al pulsar este botón sobre un elemento ya agregado se inserta otra nueva línea en el
c de menú con el mismo formato de la línea interior, es decir, si el elemento sobre el cual se
editor
pulsa
c este botón es un elemento de un menú, entonces la línea que se agrega también será un
elemento de menú para ese mismo menú.
c
c
c Ñl botón se utiliza para insertar un elemento o ítem en la posición de un
c
elemento seleccionado quedando este debajo del nuevo elemento.
c
c Ñl botón 1-c . c guarda todas las modificaciones echas en el c c
c .
c
c
c Ñl botón ( ( omite cualquier modificación echa en el c c
y al mismo tiempo cierra la ventana del editor.
c
c
c
5À3À2
c Creació de me s e Visal Basic 6À0
c c
Como dijimos anteriormente, para crear un menú utilizaremos el Denú Ñditor localizado en la barra
c
de herramientas del ÑID de Visual Basic y representado por la siguiente imagen . Crear un menú
esc un proceso práctico y por tal razón vamos a crear el menú que se muestra en la siguiente
c
página:
c c
c
c ë À Carlos Ma el Rodríez Bcarelly
Gos me sc
Capílo 5
c c
c
c
c
c
c
c
c
c
c
c
c
c
Creació del me Archivo
c
c
Pasos a seir:
c
1.mc Abra un nuevo proyecto desde el menú File.
c
2.mc Haga clic en el icono del Ñditor de Denús .
c
3.m Ñn la c c
c Capio (ílo) escriba &Archivo y en la c c
ame ( ombre)
c
escriba me Archivo.
c
4.mc Haga clic en el botón ex (siie e)À
c
5.m Haga clic en el botón c (ĺ) para agregar cuatro puntos suspensivos («À).
c
6.mc Haga clic en la caja de texto Capio (ílo) y escriba &evo y en la caja de texto ame
c
( ombre) escriba eleme oevoMe Archivo. Ñn la c P de horc seleccione
c + , y a continuación, haga clic en el botón ex (iie e).
Crl
c
7.m Ñn la c c
Capio (ílo) escriba &Abrir« y en la c c
c ame ( ombre)
c
escriba eleme oAbrirMe Archivo. Ñn la cP de horc seleccione Crl + A, y a
c
continuación, haga clic en el botón ex (iie e).
c
8.mc Ñn la c c
c Capio (ílo) escriba & ardar y en la c c
c ame ( ombre)
escriba
c eleme o ardarMe Archivo. Ñn la cP de horc seleccione Crl + , y
a continuación, haga clic en el botón ex (iie e).
c
9.mc Ñn la c c
c Capio (ílo) escriba & ardar como« y en la c c
c ame
c
( ombre) escriba eleme o ardarComoMe Archivo, y a continuación, haga clic en el botón
c (iie e).
ex
c
10.m Ñn la cc
cCapio (ílo) escriba un guión o el símbolo de resta ³-³ y en la cc
c
came ( ombre) escriba Gi ea1Me Archivo, y a continuación, haga clic en el botón ex
c
(iie e).
c
c Ñn la cc
cCapio (ílo) escriba &Co firar pái a« y en la cc
came
11.m
( ombre)
c escriba eleme oCo firarPai aMe Archivo, y a continuación, haga clic en el
botón ex (iie e).
c
c
Gos me sc
Capílo 5
c c
c Ñn la cc
Capio (ílo) escriba &ëmprimir« y en la cc
came ( ombre)
12.m
escriba eleme oëmprimirMe Archivo. Ñn la cP de horc seleccione Crl + P, y
c
a continuación, haga clic en el botón ex (iie e).
c
c Ñn la cc
cCapio (ílo) escriba un guión o el símbolo de resta ³-³ y en la cc
13.m
c
came ( ombre) escriba Gi ea2Me Archivo, y a continuación, haga clic en el botón ex
(iie
c e).
c
14.m Ñn la c c
c Capio (ílo) escriba a&lir y en la c c
c ame ( ombre)
c
escriba eleme oalirMe Archivo, y a continuación, haga clic en el botón ex (iie e).
c
c
Creació
c del me Ñdició
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Pasos a seir:
c
1.mHaga
c clic en el botón c (w) para eliminar los cuatro puntos suspensivos a la
izquierda.
c
2.mc Ñn la c c
Capio (ílo) escriba &Ñdició y en la c c
c ame ( ombre)
c
escriba Me Ñdicio , y a continuación, haga clic en el botón ex (iie e).
c
3.mHaga clic en el botón c (ĺ) para agregar los cuatro puntos suspensivos a la
c
izquierda.
c
4.mc Ñn la c c
c Capio (ílo) escriba un guión o el símbolo de resta ³-³ y en la c c
c
came ( ombre) escriba Gi ea1Me Ñdicio , y a continuación, haga clic en el botón ex
(iie
c e).
c
5.m Ñn la c c
Capio (ílo) escriba &3eshacer y en la c c
c ame ( ombre)
c
escriba eleme o3eshacerMe Ñdició . Ñn la cP de horc seleccione Crl + Z,
y ac continuación, haga clic en el botón ex (iie e).
c
6.mc Ñn la c c
c Capio (ílo) escriba un guión o el símbolo de resta ³-³ y en la c c
came ( ombre) escriba Gi ea2Me Ñdicio , y a continuación, haga clic en el botón ex
c
(iie e).
c
Gos me sc
Capílo 5
c c
7.mc Ñn la c c
Capio (ílo) escriba &Corar y en la c c
c ame ( ombre)
escriba eleme oCorarMe Ñdició . Ñn la cP de horc seleccione Crl + , y a
c
continuación, haga clic en el botón ex (iie e).
c
8.mc Ñn la c c
Capio (ílo) escriba C&opiar y en la c c
c ame ( ombre)
c
escriba eleme oCopiarMe Ñdició . Ñn la cP de horc seleccione Crl + C, y a
continuación,
c haga clic en el botón ex (iie e).
c
9.m Ñn la c c
Capio (ílo) escriba &Pear y en la c c
c ame ( ombre)
c
escriba eleme oPearMe Ñdició . Ñn la cP de horc seleccione Crl + V, y a
c
continuación, haga clic en el botón ex (iie e).
c
c Ñn la c c
Capio (ílo) escriba &Ñlimi ar y en la c c
c ame ( ombre)
10.m
escriba eleme oÑlimi arMe Ñdició . Ñn la cP de horc seleccione 3el ó pr,
c
y a continuación, haga clic en el botón ex (iie e).
c
c Ñn la cc
cCapio (ílo) escriba un guión o el símbolo de resta ³-³ y en la cc
11.m
c
came ( ombre) escriba Gi ea3Me Ñdicio , y a continuación, haga clic en el botón ex
(iie
c e).
c
12.m Ñn la cc
Capio (ílo) escriba &Bscar« y en la cc
came ( ombre)
c
escriba eleme oBscarMe Ñdició . Ñn la cP de horc seleccione Crl + B, y a
c
continuación, haga clic en el botón ex (iie e).
c
c Ñn la c c
Capio (ílo) escriba B&scar siie e y en la c c
c ame
13.m
( ombre) escriba eleme oBscariie eMe Ñdició . Ñn la c P de horc
c
seleccione F3, y a continuación, haga clic en el botón ex (iie e).
c
c Ñn la cc
Capio (ílo) escriba Re&mplazar y en la cc
came ( ombre)
14.m
c
escriba eleme oRemplazarMe Ñdició . Ñn la cP de horc seleccione Crl + R,
y ac continuación, haga clic en el botón ex (iie e).
c
15.m Ñn la c c
Capio (ílo) escriba &ër a« y en la c c
c ame ( ombre)
c
escriba eleme oërAiie eMe Ñdició . Ñn la cP de horc seleccione Crl +
T, c y a continuación, haga clic en el botón ex (iie e).
c
c Ñn la cc
cCapio (ílo) escriba un guión o el símbolo de resta ³-³ y en la cc
16.m
came ( ombre) escriba Gi ea4Me Ñdicio , y a continuación, haga clic en el botón ex
c
(iie e).
c
c Ñn la c c
Capio (ílo) escriba eleccio ar &odo y en la c c
c ame
17.m
c
( ombre) escriba eleme oeleccio arTodoMe Ñdició . Ñn la c P de horc
seleccione
c Crl + Ñ, y a continuación, haga clic en el botón ex (iie e).
c
18.m Ñn la c c
Capio (ílo) escriba &Hora y fecha y en la c c
c ame
c
( ombre) escriba eleme oHoraFechaMe Ñdició . Ñn la c P de horc
c
seleccione F5, y a continuación, haga clic en el botón ex (iie e).
c
c
Creació del me Formao
c
c
c
c
Gos me sc
Capílo 5
c c
Pasos
c a seir:
c
1.mHaga clic en el botón c (w) para eliminar los cuatro puntos suspensivos a la
c
izquierda.
c
2.mc Ñn la c c
Capio (ílo) escriba &Formao y en la c c
c ame ( ombre)
escriba
c Me Formao, y a continuación, haga clic en el botón ex (iie e).
c
3.mHaga clic en el botón c (ĺ) para agregar los cuatro puntos suspensivos a la
c
izquierda.
c
4.mc Ñn la c c
c Capio (ílo) escriba Ajs&e de lí ea y en la c c
c ame
( ombre)
c escriba Ñleme oAjse3eGi eaMe Formao, y a continuación, haga clic en el botón
ex (iie e).
c
5.mc Ñn la c c
c Capio (ílo) escriba &Fe e y en la c c
c ame ( ombre)
c
escriba Ñleme oFe eMe Formao, y a continuación, haga clic en el botón ex (iie e).
c
c
Creació del me Ver
c
c
c
c
c
Pasos
c a seir:
c
1.mHaga clic en el botón c (w) para eliminar los cuatro puntos suspensivos a la
c
izquierda.
c
2.mc Ñn la cc
Capio (ílo) escriba &Ver y en la cc
came ( ombre) escriba
Mec Ver, y a continuación, haga clic en el botón ex (iie e).
c
3.mHaga clic en el botón c (ĺ) para agregar los cuatro puntos suspensivos a la
c
izquierda.
c
4.mc Ñn la c c
c Capio (ílo) escriba Barra &de esado y en la c c
c ame
( ombre)
c escriba Ñleme oBarraÑsadoMe Ver, y a continuación, haga clic en el botón ex
(iie e).
c
c
c
Creació del me Ayda
c
c
c
c
c
c
Pasos a seir:
c
c
1.mHaga clic en el botón c (w) para eliminar los cuatro puntos suspensivos a la
c
izquierda.
c
2.m Ñn la c c
Capio (ílo) escriba Ay&da y en la c c
c ame ( ombre)
escriba Me Ayda, y a continuación, haga clic en el botón ex (iie e).
Gos me sc
Capílo 5
c c
3.mHaga
c clic en el botón c (ĺ) para agregar los cuatro puntos suspensivos a la
izquierda.
c
4.mc Ñn la c c
c Capio (ílo) escriba &Temas de Ayda y en la c c
c ame
c
( ombre) escriba Ñleme oTemas3eAydaMe Ayda, y a continuación, haga clic en el botón
c (iie e).
ex
c
5.m Ñn la c c
c Capio (ílo) escriba un guión o el símbolo de resta ³-³ y en la c c
c
c ame ( ombre) escriba Gi ea1Me Ayda, y a continuación, haga clic en el botón ex
c
(iie e).
c
6.mc Ñn la c c
c Capio (ílo) escriba &Acerca del Bloc de oas y en la c c
c
ame
c ( ombre) escriba Ñleme oAcercaMe Ayda, y a continuación, haga clic en el botón
ex (iie e).
c
7.mc Haga clic en el botón K para finalizar.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
TA: Ñn caso de algún error, verifique si ha escrito correctamente los nombres (ame) de los
c
menús, elementos de los menús y submenús propuestos. También verifique si ha establecido el
orden
c jerárquico adecuado entre los ítems o elementos de menús y submenús. Si el problema
persiste consulte con su maestro, o bien, envié un ÑmDail a [email protected] explicando
c
el problema.
c
c
Después de haber realizados todos estos pasos, corra la aplicación pulsando la tecla F5 y
c
desplácese por todos los menús ya creado.
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio1-5 para el formulariocy
c
Ñjercicio1-5 para el proyecto.
c
c
c
Gos me sc
Capílo 5
c c
- 5À3À3
c Creació de sbme s
c
Los submenús representan a los menús que se encuentran dentro de un menú, es decir, dentro de
unc elemento de un menú o un elemento de un submenú. Un submenú esta representado por medio
dec una flecha a la derecha (Ź). A continuación se muestra un submenú típico en un menú:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Sec puede observar en la que el menú Fe e contiene un P o P con el título Tamaño y
este elemento esta precedido por una ! c (Ź), que indica que existe un submenú
c
dentro de ese elemento.
c
Lac creación de submenús consiste en establecer un orden jerárquico de menor a mayor, dónde el
c
elemento que contendrá el submenú debe tener cuatro puntos suspensivos menos a la izquierda,
como
c se muestra a continuación:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Gos me sc
Capílo 5
c c
Ñl crecuadro resaltado es la zona donde se especifica el menú Fe e con sus elementos. Se puede
observar que el elemento Tamaño posee cuatro c c menos que los P
c
12, 14, 16, 18. Ñsto indica que estos elementos pertenecen al elemento Tamaño que esta dentro
delc menú Fe e.
c
5À4c ÑVÑT BRÑ G MÑÚc
c
c
Ñs lógico, que Visal Basic 6À0 permita agregar líneas de código a cada uno de los elementos de
losc menús y submenús que se agreguen a una aplicación. Ñsto lo hace mediante el c
dec los menús, el Click.
c
Para
c agregar código a algún elemento de un menú o submenú, sólo tiene que hacer clic sobre el
menú en modo de diseño y luego hacer otro clic sobre el elemento al cual quiere agregar el código.
c
Ñl c Click debe parecerse a esto:
c
c
Privae b ÑlementoX Click ( )
c
Sentencias«
c
Ñ cd b
c
c activar o desactivar una opción de algún menú mediante la propiedad Ñ abled. Por ejemplo,
Podrá
si c al cargar una aplicación usted desea que algunas opciones de los menús aparezcan
deshabilitada, entonces, dentro del evento Goad del formulario deberá escribir el nombre de la
c
opción del menú con la propiedad Ñ abled establecida a False:
c
c
Private Sub Form Load()
c
c miOpcion1.Ñnabled = False µDesactiva una opción que tiene el nombre DiOpcion1.
DiOpcion2.Ñnabled = False µDesactiva una opción que tiene el nombre DIOpcion2.
c
Ñndc If
c
c activar cualquier opción desactivada desde cualquier procedimiento, estableciendo el valor
Podrá
Tre
c en la propiedad Ñ abled de dicha opción.
c
c
5À5 ÑJÑRCëCë PRPUÑTc
c
c
1.mc Ñjecute la aplicación c
y diseñe los menús y las opciones de cada menú que
contiene el programa. Para ejecutar elc
, haga clic en el menú / c¼c
P c¼c. c
c
¼c
.
c
2.mc Ñjecute la aplicación cÎ
y diseñe los menús y las opciones de cada menú que
c
contiene el programa. Para ejecutar el Î
, haga clic en el menú / c ¼c
P c ¼c
.
c c¼cÎ
.
c
3.m Ñjecute la aplicación c Î y diseñe los menús y las opciones de cada menú que
c
contiene el programa.
c
c
c
ëcoc Ñstablece un archivo de imagen con extensión (Àico) o (Àcr) en la barra de título
c de la ventana. La primera representa los archivos de icono y la segunda los
archivos de tipo cursores. Ñxisten mucho de estos en la carpeta
Wi dow\Crsores. Ñsta imagen aparece a la izquierda del texto especificado en
c
c Ñjercicio:
c
ó Seleccione
c la propiedad Picture del formulario y, a continuación, haga doble clic sobre los tres
puntos («) suspensivos.
c
c
ó Busque la carpeta ëMA ÑÑ que se distribuye con este libro. Dentro de esta carpeta se
c
encuentra una carpeta llamada F3. Ñntre a esta carpeta y seleccione la imagen llamada
fo c do15.
c
ó Haga clic sobre el botón Abrir.
c
c
ó Corra la aplicación para que pueda ver claramente la imagen, es decir, si la maya de puntos.
c
ó Observe
c que la imagen seleccionada se establece como fondo sobre todo el formulario. TA: Si
modifica
c el tamaño del formulario podrá ver la imagen completamente.
c
ó Detenga la aplicación.
c
c
howë Taskbar Determina si la aplicación se muestra en la barra de tareas de Windows cuando
c esta se esta ejecutando o cuando es minimizada. Puede tomar los valores Tre
c (se muestra en la barra de tarea) o False (No se muestra en la barra de tareas).
Ñl valor por defecto de esta propiedad es TreÀ Por eso, cuando usted corre la
c aplicación se muestra el nombre del programa y el icono seleccionado en la
propiedad ëco del formulario sobre la barra de tarea de Windows.
c
establezca el color blanco.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Haga clic derecho sobre el control ImageList y, a continuación, haga clic en la opción Propiedades
c
(Properties).
c
ó Seleccione
c la ficha Imágenes (Images) de la ventana propiedades. Haga clic en el botón / c
/P c/c
.
c
ó cBusque la carpeta IDÁGÑNÑS que se distribuye con este libro y cargue las imágenes
c
Corazon1Cap6, Corazon2Cap6, Corazon3Cap6, Corazon4Cap6, Corazon5Cap6,
Corazon6Cap6, Corazon7Cap6, Corazon8Cap6. Agregue las imágenes en este mismo orden.
DsgBox (TreeView1.SelectedItem.Text)
ó Dibuje tres etiquetas, tres cajas de texto, un control ListView y cuatro botones de comando.
Ñnd If
ë À Carlos Ma el Rodríez Bcarelly
Ñnd Sub
ë À Carlos Ma el Rodríez Bcarelly
Gos Archivos
c
Capílo 7
c
CTÑë3
c
c c
7À1 Co cepo de ArchivoÀ
7À2c Caracerísica de los ArchivosÀ
7À3c Creació de archivo aleaorio (si formao) desde Visal Basic 6À0À
7À4c Almace amie o de i formació archivo de exoÀ
7À5c Gecra de archivo aleaorio (si formao)À
m 7.5.1 Lectura de un archivo utilizando un bucle.
c
m 7.5.2 Creación de un editor sencillo.
7À7c Archivos co esrcra de base de daosÀ
7À8c Crear archivo co esrcra de base de daos e Visal Basic 6À0À
7À9c Ñjercicios propesosÀ
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Gos Archivosc
Capílo 7
c c
7À1c CCÑPT 3Ñ ARCHëV
c c
Un archivo o fichero (file) es una estructura de datos que reside en memoria secundaria,
c
consistente en un conjunto de informaciones estructuradas en unidades de acceso denominadas
c
registros, todos del mismo tipo y en número indeterminado.
c
Dentro
c de un archivo es posible almacenar cualquier tipo de información, ya sea por
el usuario ó de modo aleatorio (sin formato). Cuando hablamos de nos referimos a
c
que el usuario tiene la posibilidad de almacenar los datos de acuerdo a sus necesidades, ya sea
c
agregando caracteres especiales, símbolos, etc., para facilitar su lectura.
c
Ñl c terminoc Pc c c formato) se refiere al almacenamiento de los datos sin
especificaciones
c especiales, es decir, sin aplicar ninguna alteración a la estructura de los datos. Por
ejemplo, el almacenamiento del contenido de una caja de texto en un archivo de texto. Los archivos
c
que poseen cierto tipo de estructuras especiales se les denomina archivos de bases de datos. Ñste
c el caso de estudio del siguiente capítulo.
será
c
Unc archivo puede estar en cualquier parte de un disco ya sea en una carpeta o en una subcarpeta.
Comúnmente
c vienen representados por un icono y un nombre que permite diferenciarlos de los
demás archivos del disco.
c
c
7À2c CARACTÑRÍTëCA 3Ñ G ARCHëVc
c
c
Un archivo se podría representar gráficamente de la siguiente manera:
c
c
c
c ombreArchivoÀÑxe sió
c
c
c
ombreArchivo: Puede ser cualquier cadena de caracteres especificada por el usuario
c
(programador).
c
c sió : Una extensión en un archivo se representa por tres letras que hacen referencia al tipo
Ñxe
de archivo. Por ejemplo, la extensión para un archivo de texto sería (.TXT), para un archivo de
c
datos (.DAT), para un archivo de documento (.DOC), para un archivo por lotes (.BAT), para un
c
archivo ejecutable (.ÑXÑ), etc.
c
Unc archivo en Windows se representa por un ICONO y debajo de este, el nombre del archivo sin la
extensión.
c Cuando Windows conoce el tipo de archivo entonces muestra un ICONO que hace
referencia al tipo de archivo y omite la presentación de la extensión y cuando no conoce el tipo de
c
archivo agrega un ICONO blanco que representa una aplicación ó archivo desconocido.
c
c
c entender lo explicado anteriormente visualizare el contenido del directorio de Windows en mi
Para
disco
c duro para por observar la característica de los archivos que contiene esta carpeta.
c c
Ñjemplo:
c
Al cvisualizar mi carpeta de Windows aparecen los siguientes archivos y carpetas:
c
Gos Archivosc
Capílo 7
c c
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Si cobserva detenidamente que cada tipo de archivo posee un tipo de ICONO (imagen) distinto y que
los archivos que Windows no conoce se presentan con un ICONO blanco con una ventana .
c
c
7À3c CRÑACë 3Ñ U ARCHëV AGÑATRë (ë FRMAT) 3Ñ3Ñ VëUAG BAëC 6À0c
c
c crear un archivo desde Visual Basic disponemos de la sentencia PÑ seguida del modo
Para
UTPUT. Ñxisten otros modos como APPÑ3 e ëPUT que veremos más adelante.
c
Ñl cformato de esta sentencia es la siguiente:
c
c Unidad.Carpeta.NombredelArchivo FR M3 A #numero archivo abierto
PÑ
c
Donde:
c
c
PÑ: Ñs la sentencia de Visual Basic utilizada para crear un archivo cualquiera.
U cidadÀCarpeaÀombredelArchivo: Todo esto representa un archivo con su unidad y su carpeta,
escdecir, el PATH completo.
c
Por ejemplo:
c
c A) Un archivo llamado CARLOS.DOC que se encuentre en el disco ³C:´ entonces su PATH
c sería el siguiente:
c
c C:\ CARGÀ3C
c
B) Un archivo llamado JOSÑ.DOC que se encuentra en el disco ³C:´ en una carpeta llamada
DOCUDÑNTOS entonces su PATH sería el siguiente:
Gos Archivosc
Capílo 7
c c
c C:\3CUMÑT\JÑÀ3C
c
c C) Un archivo llamado DATOS.TXT que se encuentre en el disco ³C:´ en una subcarpeta
c llamada INFORDACION que se encuentra en la carpeta PROGRADA entonces su PATH
c sería el siguiente:
c
C:\PR RAMA\ëFRMACë\3ATÀT T
c
c
FRc M3: Ñn este se especifica el tipo de acceso al archivo, es decir, si es para lectura, para
c
escritura o para la creación de un archivo nuevo.
c
Los modos disponibles en Visual Basic son los siguientes:
c
c à OUTPUT: este modo es utilizado para crear un archivo nuevo si este no existe, y si existe
c entonces lo sustituye por el nuevo archivo.
c
c à APPÑND: este modo es utilizado para agregar información al final de un archivo existente,
c si no existe entonces se crea.
c à INPUT: este modo es utilizado para leer el contenido de un archivo almacenado en un
c disco.
c
# cmero_archivo_abiero: Ñn este se especifica un valor que representa el número del archivo
abierto
c en la aplicación. Ñsto es porque usted puede abrir o crear dos o más archivo y se
necesitaría un valor que permita llevar el control de estos archivos abiertos. Por ejemplo, si usted va
c
a crear un archivo llamado CARTA.DOC en el disco ³C:´ y otro llamado ARCHIVOS.TXT
c
necesariamente usted tendría que usar dos veces la sentencia OPÑN e identificar cada unas de
c
ellas:
c
PÑ
c ³C:\CARTAÀ3C´ FR UTPUT A #1
c
PÑ ³C:\ARCHëVÀT T´ FR UTPUT A #2
c
c
CGÑ #1
c
CGÑ #2
c
c primera línea crea el archivo CARTA.DOC en el disco ³C:´
m La
c
m La
c segunda línea crea el archivo ARCHIVOS.TXT en el disco ³C:´
c tercera línea cierra el primer archivo abierto, en este caso CARTA.DOC. Cada vez que se abra
m La
unc archivo con OPÑN este debe ser cerrado con la sentencia CLOSÑ #numeroarchivo.
c
m La
c cuarta línea cierra el segundo archivo abierto, en este caso ARCHIVOS.TXT.
c
7À4c AGMACÑAMëÑT 3Ñ ëFRMACë U ARCHëV 3Ñ TÑ T
c c
Ñsc lógico que al abrir un archivo para escritura debe de existir una sentencia que permita escribir en
el,c o más bien, llenar el archivo de datos. Para esto existe la sentencia PRëT que permite escribir
datos
c línea por línea en el archivo.
formao es:
Gos Archivosc
Capílo 7
c c
c PRëT # meroarchivo
c
Ñjemplo:
c
c ³C:\CARTA.DOC´ For Output As #1
Open
c Print #1, ³Querido Padre:´
c Print #1, ³Le escribo para decirle que lo extraño mucho y que espero verlo pronto.´
Print #1, ³He hecho todo lo que me dijo y estoy estudiando muchísimo.´
c
Print #1, ³De despido y saludos a todos por allá.´
c Print #1, ³Att: Ñrnesto Pérez´
c #1
Close
c
c
Ñl bloque de código anterior permite crear un archivo llamado CARTA.DOC en el disco ³C:´ con
c
cinco líneas de información que se especifican con la sentencia Pri .
c
c
Ñjercicio:
c
Lac siguiente aplicación almacena el contenido de una caja de texto en un archivo.
c
Para crear esta aplicación vamos a utilizar una caja de texto y un dos botones de comando, uno
c guardar los datos de la caja de texto y otro para salir de la aplicación.
para
c
c un nuevo proyecto.
ó Abra
c
ó Diseñe la siguiente pantalla:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Haga clic en la caja de texto y en la ventana propiedades establezca los siguientes valores:
c
a) Ñn la propiedad MliGi e establezca Tre.
b) Ñn la propiedad crollBars establezca el valor 2 ± Verical.
ë À Carlos Ma el Rodríez Bcarelly
Gos Archivosc
Capílo 7
c c
c el evento Click del botón ardar escriba:
ó Ñn
Onc Ñrror GoTo ÑrrorDesconocido
c
Open
c "C:\DATOS.DOC" For Output As #1
c
Print #1, Text1.Text
c
c #1
Close
c
c
DsgBox ("Los datos han sido guardado.")
c
Ñxit Sub
c
ÑrrorDesconocido:
cDsgBox ("Ha ocurrido un error al intentar guardar el archivo.")
c
c el evento Click del botón alir escriba:
ó Ñn
c
Ñndc
c
c
ó Corra la aplicación.
c
ó Después que la aplicación este corriendo escriba algo en la caja de texto.
c
c
ó Cuando halla escrito algo en la caja, haga clic en el botón guardar, y a continuación, aparecerá
unac ventana diciendo que ³Los datos han sido guardado.´, esto es sino ocurre un error.
c
ó Al
c hacer clic en el botón guardar, automáticamente se creará un archivo llamado DATOS.DOC en
el disco ³C:´.
c
c
PARA VÑR SI ÑL ARCHIVO SÑ HA CRÑADO RÑALDÑNTÑ ÑN ÑL DISCO ³C:´ HAGA LO
c
SIGUIÑNTÑ:
c
c A) Haga doble clic en DY PC.
B) Haga doble clic en Disco C:\
c C) Ñxplore todos los archivos que aparecen en el disco ³C:\´ y verá que entre todos esos
c archivos se encuentra el que creamos desde Visual Basic llamado DATOS.DOC.
c
TA:
c Ñl archivo aparecerá como documento de WORD porque lo hemos creado con la extensión
³.DOC´
c que representan los archivos de WORD.
c
ó Detenga la aplicación y guarde el ejercicio con los nombres FormÑjercicio1-7 para el formulario,
c
y Ñjercicio1-7 para el proyecto.
c
c
Ñxplicació del prorama lí ea por lí ea:
c
- Ga primera lí ea:
c
Onc Ñrror GoTo ÑrrorDesconocido
c
c línea de código permite controlar cualquier error que ocurra a partir desde donde se escribe.
Ñsta
Ñnc este caso la hemos utilizado para verificar si al grabar los datos ocurre algún error.
c
Traducida al castellano esta línea de código quiere decir lo siguiente:
SI OCURRÑ UN ÑRROR SALTA A LA LINÑA LLADADA ÑrrorDesconocido
Gos Archivosc
Capílo 7
c c
- Ga
c se da lí ea:
c
Open "C:\DATOS.DOC" For Output As #1
c
c línea permite crear el archivo llamado DATOS.DOC en el disco ³C:´.
Ñsta
c
Sec ha utilizado el modo p porque se sobreentiende que el archivo no existe, pero si este
existe, entonces es remplazado con los nuevos datos.
c
c
Traducida al castellano esta línea quiere decir:
c
c
CRÑA ÑL ARCHIVO DATOS.DOC ÑN ÑL DISCO ³C:´ PARA ÑSCRITURA Y ASIGNALÑ AL
ARCHIVO
c ÑL NUDÑRO UNO ÑN DI APLICACIÓN.
c
- Ga ercera lí ea:
c
c #1, Text1.Text
Print
c
Yac se ha explicado que la sentencia Pri se utiliza para escribir en el archivo. Ñn este caso se ha
utilizado para escribir el contenido de la caja de texto en el archivo.
c
c
Traducida al castellano esta línea quiere decir:
c
c
ÑSCRIBÑ ÑN ÑL ARCHIVO NUDÑRO UNO ÑL CONTÑNIDO DÑ LA CAJA DÑ TÑXTO.
c
- Ga cara lí ea:
c
c Close #1
c
c línea cierra un archivo abierto. Recuerde que cada vez que se abre un archivo ya sea para
Ñsta
lectura
c o escritura este debe ser cerrado.
c
Traducida al castellano esta línea quiere decir:
c
c
CIÑRRA ÑL ARCHIVO NUDÑRO UNO.
c
- Ga
c qi a lí ea:
c
DsgBox (³Los datos han sido guardado.´)
c
c línea muestra una ventana con el mensaje escrito entre los paréntesis y la comilla. Ñn este
Ñsta
c hemos especificado un mensaje que informa al usuario si los datos se han grabado
caso
correctamente.
c
c
- Ga sexa lí ea:
c
c Sub
Ñxit
c
c línea de código permite separar un bloque de código con otro bloque de código. Se ha
Ñsta
utilizado para separar las últimas dos líneas de código que muestran el mensaje de error en caso
c
de que este ocurra.
c
Si cesta línea de código no se escribe, entonces el mensaje de error aparecería aun los datos se
c guardado correctamente, esto es, porque no habría nada que separe el código principal que
hallan
almacena los datos, del código que muestra el error en caso de que ocurra.
Gos Archivosc
Capílo 7
c c
Ñsc lógico que el error solamente deba aparecer si ocurre algún error. Y debe de existir algo que
separe un bloque de código de otro código y para esto se utiliza Ñxi b.
c
c s
pima lí ea:
- Ga
c
c
ÑrrorDesconocido:
c
Ñsta línea de código se ha declarado como una etiqueta que va a permitir desde el punto de vista
c
lógico asignarle un nombre a una línea.
c
Al cestablecer la etiqueta ³ÑrrorDesconocido:´ en una línea, es posible acceder al bloque de código
quec se encuentra después de la etiqueta utilizando la sentencia oo como se especifico en la
primera
c línea.
c
Ñsto es, porque es la única forma de acceder a la codificación que reside después de la sexta línea
dec código que corresponde a la codificación Ñxi b.
c
c ocava lí ea:
- Ga
c
Dsgbox(³Ha ocurrido un error al intentar guardar el archivo.´)
c
c
Duestra un mensaje diciendo que ha ocurrido un error al intentar guardar el archivo en el disco.
c
c
7À5c GÑCTURA 3Ñ U ARCHëV AGÑATRë (ë FRMAT)
c c
Ñsc lógico que después de haber creado un archivo debe de existir una forma para leerlo.
c
Para leer un archivo que haya sido creado anteriormente se debe utilizar el método ëi p en vez
c
de p y utilizar la sentencia Gi e ë p que permite leer línea por línea un archivo.
c
c formao es:
c
Line
c Input #numeroarchivo, Variable
3oc de:
c
# cmeroarchivo: Ñs el número del archivo abierto como ya se había explicado anteriormente.
c
Variable:
c Representa una variable tipo cadena (String) o variante (Variant), declarada de antemano
para almacenar el contenido de una línea del archivo abierto.
c
c
Ñjemplo:
c
Sinc se quiere leer las primeras ocho líneas de un archivo de texto llamado CaraÀ3oc que se
encuentre
c en el disco duro y luego almacenarla en una caja de texto con la propiedad MliGi e
establecida a Tre, se haría de la siguiente manera:
c
Dimc Linea1, Linea2, Linea3, Linea4, Linea5, Linea6, Linea7, Linea8 As String
c
c ³C:\CARTA.DOC´ For Input As #1
Open
Line
c Input #1, Linea1
Line Input #1, Linea2
c
Line Input #1, Linea3
Line Input #1, Linea4
Gos Archivosc
Capílo 7
c c
Line
c Input #1, Linea6
Line Input #1, Linea7
c
Line Input #1, Linea8
c #1
Close
c
c
Text1.Text = Linea1 & CHR(10) & CHR(13) & Linea2 & CHR(10) & CHR(13) & Linea3 & CHR(10)
& CHR(13)
c & Linea4 & CHR(10) & CHR(13) & Linea5 & CHR(10) & CHR(13) & Linea6 & CHR(10)
& CHR(13) & Linea7 & CHR(10) & CHR(13) & Linea8
c
c
c TA: esas rayitas llamadas U dercore deben de ponerse. Se
c utilizan para seguir una línea de código en Visual Basic cuando esta
c es demasiado grade. Si no utiliza el U dercore entonces deberá
de escribir la línea de código completa pero en una sola línea. Ñsto
c no es recomendable porque se haría incomodo leerla cuando sea
c necesario. Los U dercore se ponen con un espacio en blanco, es
c decir, no pegado al texto que le queda al lado.
c
c
Ñxplicació del prorama a erior lí ea por lí eaÀ
c
c
- Primera lí ea:
c
Dimc Linea1, Linea2, Linea3, Linea4, Linea5, Linea6, Linea7, Linea8 As String
c
Ñsta línea de código permite declarar ocho variables que luego serán utilizadas para almacenar las
c
ocho primeras líneas del archivo.
c
3imc es una sentencia utilizada para declarar variables como se puedo notar en la línea de código.
Asc ri indica el tipo de datos que almacenarán cada variable, en este caso, se declararon como
tipo
c CADÑNA.
c
As String significa: ³CODO CADÑNA DÑ TÑXTO O CARACTÑRÑS´.
c
c
- e da Gí ea:
c
Open
c ³C:\CARTA.DOC´ For Input As #1
c
Ñsta línea de código permite abrir el archive CARTA.DOC en modo de lectura, por tal razón se
c el modo ë p como se había explicado anteriormente.
utilizo
c
Sec había dicho que ë p permite abrir el archivo en modo de lectura, es decir, para leer del archivo
y no
c para escribir en él.
c
TA: el archivo debe de existir en el disco, de lo contrario daría un error al tratar de abrir un
c
archivo que no existe. Con el modo p y Apee d no ocurre este problema, porque si el archivo
noc existe el mismo se crea, pero con ë p no ocurre lo mismo, sino que el archivo debe de existir o
le cdaría un error.
c
m 4a, 5a, 6a, 7ma, 8va, 9 a, 10ma, 11va Gí ea:
c
c Input #1, Linea1
Line
c Input #1, Linea2
Line
c Input #1, Linea3
Line
Line Input #1, Linea4
Line Input #1, Linea5
Gos Archivosc
Capílo 7
c c
Line
c Input #1, Linea6
Line Input #1, Linea7
c
Line Input #1, Linea8
c
c se puede apreciar cada una de las líneas permite leer una línea de texto del archivo y se
Como
c
almacenan en la variable correspondiente.
c
- 3
cima se da lí ea (12):
c
c #1
Close
c
c
Permite cerrar el archivo. Recuerde que cada vez que se abre un archivo este debe de ser cerrado.
c
- Ulimas lí eas:
c
c
Text1.Text = Linea1 & CHR(10) & CHR(13) & Linea2 & CHR(10) & CHR(13) & Linea3 & CHR(10)
c
& CHR(13) & Linea4 & CHR(10) & CHR(13) & Linea5 & CHR(10) & CHR(13) & Linea6 & CHR(10)
c
& CHR(13) & Linea7 & CHR(10) & CHR(13) & Linea8
c
Permite
c almacenar el contenido de cada línea en la caja de texto.
- Primera lí ea:
Gos Archivosc
Capílo 7
c c
Dimc Linea As String
c
Ñsta línea declara una variable llamada ³Linea´ como tipo cadena. Ñn esta variable se almacenará
c una de las líneas del archivo a medida que el bucle se repita.
cada
c
c
- e da lí ea:
c
Open ³C:\CARTA.DOC´ For Input As #1
c
c línea abre el archivo ³CARTA.DOC´ ubicado en el disco ³C:´ para modo de lectura.
Ñsta
c
c
- Tercera lí ea:
c
While Not ÑOF(1)
c
Si custed nunca ha trabajado con bucle esta línea de código le parecerá muy extraña. De todos
c
modos tratare de explicarla.
c
Unc bucle es una sentencia especial que permite repetir una determinada porción de código hasta
que se cumpla una determinada condición. Ñxisten dos tipos de bucles en Visual Basic que son
c
muy utilizados el bucle For y el bucle While que es el utilizado en este caso.
c
Lac sentencia While permite repetir una porción de código ³ no se cumpla una condición,
escdecir, hasta que la condición sea falsa.
c
Ñl significado de la línea de código anterior es el siguiente:
c
Miec ras o ) ÿ % Repie
c
c
c
c
While Not ÑOF (1)
c
c
c
While: significa en español .
c
o: significa en español ³NO´
c
c (Ñnd Of File) significa en español ³Fin Del Archivo´.
ÑF:
c
(1):c Ñs el número asignado cada vez que usted abre un archivo. Recuerde este número lo
especifica
c usted y puede ser cualquier número entero.
c c
c
c
- Cara lí ea:
c
c Input #1, Linea
Line
c
c línea permite leer cada línea del archivo cada vez que se repite el bucle. La variable ³Linea´
Ñsta
cambia su valor cada vez que el bucle se repite. Cuando el bucle inicia en esta variable se
c
almacena la primera línea del archivo, cuando el bucle se repite otra vez o sea a la segunda vez,
c
entonces en esta variable se almacena la segunda línea del archivo y así sucesivamente hasta el
fincdel archivo.
Gos Archivosc
Capílo 7
c c
- Qi
c a lí ea:
c
Text1.Text = Text1.Text & Linea & CHR(13) & CHR(10)
c
c línea de código almacena en una caja de texto el contenido de cada línea del archivo. Se
Ñsta
c
especifico dos veces ³Text1.Text = Text1.Text´ para que se mantenga el contenido actual de la caja
dec texto.
c
Ñl significado de la línea anterior es el siguiente:
c
c
c
CONTÑNIDO DÑ LA CAJA UNO = CONTÑNIDO DÑ LA CAJA UNO cÑL CONTÑNIDO
c Tex1ÀTex Tex1ÀTex &
c
DÑc LA VARIABLÑ LINÑA SALTA A LA OTRA LINÑA DÑ LA CAJA DÑ TÑXTO.
c Gi ea & CHR(13) & CHR(10)
c
c
- exa
c lí ea:
c
Wend
c
c línea de código le pertenece al bucle y es el que indica el fin del bucle. Lo que se encuentre
Ñsta
c While y Wend es lo que se va a repetir. Ñn conclusión cuando un bucle se inicia se debe de
entre
finalizar
c o debe de haber algo que indique hasta donde se va a repetir una porción de código. Para
esto existe la sentencia Wend.
c
c
c
-
pima lí ea:
c
Close
c #1
c
Cierra el archivo abierto que tiene el número uno.
c
c
- 7À5À2
c Creació de edior se cillo
c
Vamos a crear una aplicación que permite guardar y abrir un documento escrito en una caja de
c Utilizaremos el control c(PPc0 para guardar y abrir los archivos.
texto.
c
c crear nuestra aplicación siga los siguientes pasos:
Para
c
ó Inicie
c un nuevo proyecto en Visual Basic.
c
ó Agregue el control c(PPc0 a la barra de controles. Para esto haga clic derecho
enc la barra de controles y de la ventana de Componentes seleccione c (PPc 0 c
c
(cc'
4 y, a continuación, haga clic en el botón . .
c
c
ó Inserte el control Common Dialog en cualquier parte del Formulario.
c
ó Dibuje
c una caja de texto y cuatro botones de comando en la parte inferior de la caja. Tal y como
se muestra en la imagen de la siguiente página«
c
Gos Archivosc
Capílo 7
c c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó cccccc
ccc c;
c
u
c
c
c u c
c # ccc
c '&( (")/c
c )( +)&(c
c c
c
c *
c
,
c
c
$#+ 2 c c
c '&( "2(c
c )( +2(c
c 2/c
c
" 2/c
c c c
c u c
c c
c
2c u #c
c c
c
&c u $c
c
c
u
c c
c c
c
c el evento Click del botón . escriba el siguiente bloque de código:
ó Ñn
c
Text1.Text = ""
Onc Ñrror GoTo NoSeleccionoArchivo:
c
CommonDialog1.Filter = "Archivos de texto (TXT)" & Chr(32) & Chr(124) & "*.txt"
CommonDialog1.ShowOpen
Gos Archivosc
Capílo 7
c c
Dimc Linea As String
c
Open CommonDialog1.FileName For Input As #1
c
cWhile Not ÑOF(1)
c Line Input #1, Linea
c Text1.Text = Text1.Text & Linea & Chr(13) & Chr(10)
cWend
c #1
Close
c
c Sub
Ñxit
NoSeleccionoArchivo:
c
c
c
Ñxplicació del códio a erior:
c
c
- Primera lí ea:
c
Text1.Text
c = ³´
c
Permite limpiar la caja de texto. Ñsto es en caso de que anteriormente se encontrará algún archivo
c
abierto. Ñs normal que si se va a mostrar el contenido de algún archivo el lugar donde se mostrará
c de estar limpio.
debe
c
- e da lí ea:
c
Onc Ñrror GoTo NoSeleccionoArchivo
c
c línea se ha declarado en caso de que ocurra un error al intentar abrir el archivo.
Ñsta
c
Ñsto es muy importante porque en ocasiones pueden ocurrir errores desconocidos y estos errores
c
deben ser controlados desde la aplicación. Ñsta línea la he declarado principalmente porque
c
siempre que no se selecciona algún archivo en el cuadro de dialogo abrir ocurrirá un error, es decir,
c
cuando se haga clic en el botón Cancelar del cuadro de dialogo Abrir. No intente averiguar porque
c error ocurre, simplemente especifique siempre esta línea de código cuando intente abrir un
este
archivo.
c
c
- Tercera lí ea:
c
c
CommonDialog1.Filter = "Archivos de texto (TXT)" & Chr(32) & Chr(124) & "*.txt"
c
c línea es muy importante. Permite especificar el tipo de archivo que permitirá visualizar el
Ñsta
cuadro de dialogo abrir.
c
Lac propiedad Filter te permite especificar el tipo de archivo que el cuadro de dialogo podrá
c
visualizar a la ahora que este sea activado.
c
c
Ñstructura de la línea anterior:
c
CommonDialog1.Filter = "Archivos de texto (TXT)" & Chr(32) & Chr(124) & "*.txt"
c
c
Ñntre comillas se especifica el texto que Ñsta combinación Ñxtensión de los
c aparecerá en cc del cuadro permite obtener el archivos que se
de diálogo Abrir. carácter ¦. mostrarán.
Gos Archivosc
Capílo 7
c c
Ñnc este caso se ha especificado que el cuadro de dialogo Abrir solo visualice los tipos de archivos
de texto. Si corre la aplicación y hace clic en el botón Abrir aparecerá la pantalla de Abrir con la
c
siguiente configuración:
c
c cc
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Puede
c observar que en la caja r cc (Tipo de archivos) aparece el texto que especificamos
enc la propiedad Filter de control Common Dialog. Se pueden especificar más tipos de archivos pero
esto lo veremos más adelante.
c
c
- Cara lí ea:
c
CommonDialog1.ShowOpen
c
c
Ñsta línea de código no tiene mucha novedad simplemente muestra el cuadro de dialogo abrir.
Ñl cmétodo ShowOpen significar ³Dostrar Abrir´, es decir, ³Dostrar el cuadro Abrir´.
c
c
Ñxisten otros métodos como: ShowPrinter, ShowColor, ShowSave, ShowFont, ShowHelp, etc.
c
Ñstos otros métodos los veremos más adelante.
c
c
c a lí ea:
- Qi
c
Dimc Linea As String
c
c línea de código declara una variable llamada ³Linea´ donde se almacenará cada línea de datos
Ñsta
del archivo abierto.
c
c
* 01
c
c
c
$ cc
c cc
Gos Archivosc
Capílo 7
c c
Lac única novedad que vemos en esta línea de código es ³CommonDialog1.FileName´. Antes
especificábamos el archivo directamente pero en esta ocasión dejamos que la ventana de diálogo
c
Abrir tome el control del nombre del archivo.
c
Ñl carchivo que se seleccione en la ventana de dialogo Abrir, este será el archivo que se muestre en
el cÑditor.
c
La propiedad FileName almacena el PATH o la ruta completa del archivo seleccionado.
c
c
- Ulimas lí eas:
c
c Not ÑOF(1)
While
c Line Input #1, Linea
Text1.Text = Text1.Text & Linea & Chr(13) & Chr(10)
c
Wend
c #1
Close
c
c Sub
Ñxit
NoSeleccionoArchivo:
c
c
Ñstas ultimas líneas las hemos visto ya anteriormente que se utilizan para la lectura de un archivo
c
completo utilizando un bucle. Dás arriba ya habíamos trabajado con esto. La sentencia de bloqueo
c b también la vimos anteriormente.
Ñxi
c
c el vento Click del botónc@ escriba:
ó Ñn
Onc Ñrror GoTo NoSeleccionoArchivo:
c
CommonDialog1.Filter = "Archivos de texto (TXT)" & Chr(32) & Chr(124) & "*.txt"
c
CommonDialog1.ShowSave
c
c CommonDialog1.FileName For Output As #1
Open
c
Print #1, Text1.Text
c
Close
c #1
c
DsgBox ("Archivo Guardado.")
c
c Sub
Ñxit
c
NoSeleccionoArchivo:
c
c
c
Ñxplicació del códio a erior:
c
Lo único nuevo que vemos en este bloque de código es el método ShowSave que permite mostrar
el ccuadro de dialogo Guardar.
c
Ñnc esta ocasión utilizamos este método para guardar el archivo en el disco duro. ShowSave
significa
c ³Dostrar Guardar´, es decir, ³Dostrar el cuadro de diálogo Guardar´.
c
Lo demás lo hemos visto anteriormente. Por ejemplo, utilizamos en esta ocasión el método Output
c guardar y especificamos CommonDialog1.FileName en vez de especificar un nombre fijo o un
para
c
nombre constante. Ya explique eso anteriormente.
c
ó Ñn el evento Click del botón de comandoc× escriba:
Gos Archivosc
Capílo 7
c c
Text1.Text
c = ""
Text1.SetFocus
c
c c
Ñxplicació
c del códio a erior:
c
- Primera lí ea:
c
Lac primera línea quita cualquier texto que se halla mostrado o escrito en la caja de texto.
c
- e
c da lí ea:
c que la caja de texto reciba el enfoque, es decir, que el cursor se posiciones en la caja.
Hace
c
c el evento Click del botón de comando ' cescriba:
ó Ñn
c
µSale de la aplicación.
Ñnd
c
c c
c
ó Corra la aplicación y verá que tiene un pequeño Ñditor. Puede perfeccionarlo agregando negrita,
c
cursiva, subrayado, tipo de letra, justificaciones de texto, etc.
c
ó Detenga
c la aplicación y guarde el ejercicio con los nombres FormÑjercicio2-7 para el formulario,
y Ñjercicio2-7 para el proyecto.
c
c
7À7c ARCHëV C ÑTRUCTURA 3Ñ BAÑ 3Ñ 3ATc
Unac base de datos es un conjunta de datos organizados y relacionados lógicamente entre si. Una
base
c de datos se podría considerar como el almacenamiento organizado de los datos
proporcionados por el programa.
c
Losc archivos con estructura de bases de datos sirven para almacenar de forma personalizada datos
dec un programa que luego lo podrá utilizar para ejecutar operaciones internas en su aplicación, por
c
ejemplo, podrá utilizar un archivo con estructura de base de datos para almacenar la configuración
dec su programa con el objetivo de que esta quede almacenada cada vez que cierre el programa y
posteriormente leer este archivo cuando la aplicación vuelva a ser ejecutada. No pretenda
c
almacenar en un archivo de texto datos importantes de una empresa, para esto cree bases de
c con sistemas SGBD profesionales como SQL, ORACLÑ, ACCÑSS, etc. Ñn el siguiente
datos
c
capítulo tratamos este asunto.
c
Unac base de datos esta compuesta de filas y columnas que físicamente representa una tabla.
Cada columna representa un Campo en la base de datos y cada Fila un Reisro. Un campo se
c
define como la unidad de información más pequeña de la base de datos que tiene significado y un
c
Reisro se define como la colección de todos los campos de una base de datos. Toda lo que se
c
escribe en dicha base de datos se denomina 3aos y juegan un papel muy importante en la base
dec datos.
c
La estructura de una base de datos es la siguiente:
c
c Campos
c
c 2" $$-
c '5c -/. ).. (-(-c cc1c-ccc
c
c Reisrosc
c
c -/. (-( )&2(c ,
c'
cc(c
c
$c 6c -/. +(( 2&(2c ,
cc
c'
cc
Gos Archivosc
Capílo 7
c c
Lac base de datos anterior se podría considerar como una estructura que representa una agenda
telefónica donde los datos a almacenar son: Nombre, Apellido, Teléfono y Dirección.
c
c estos datos son de un mismo tipo y deben ser almacenados en un mismo archivo siguiendo
Todos
unac estructura organizada tal y como se muestra en la tabla anterior. Por ejemplo, en este caso el
c
primer registro ³Carlos Rodríguez 809m699m5858 Carretera Della KD 8 ½ (Dandinga)´ sería la
primera
c línea del archivo de la base de datos, el segundo registro sería la segunda línea del
archivo, el tercer registro sería la tercera línea del archivo y así sucesivamente.
c
Si calmacenamos estos datos en un archivo deberíamos de almacenarlo de la siguiente forma:
c
c Carlos
Rodríguez
809m699m5858
Carretera Della KD 8 ½ (Dandinga)
c Pablo
Bucarelly
809m585m6325
Urb. Ralma. Calle #5
Nelson
Pérez
809m755m2352
Urb. Los Dina. Res. Catanga
c
c
Sec ha utilizado un punto y coma (;) para separar cada uno de los campos de la base de datos.
Cuando almacenemos los registros en una base de datos deberemos agregar al final de cada
c
campo un punto y coma (;) que nos va a permitir el final de cada campo de la base de datos. Se
c utilizar otro carácter pero el más utilizado siempre ha sido el punto y coma (;).
puede
c
c
7À8 CRÑAR U ARCHëV C ÑTRUCTURA 3Ñ BAÑ 3Ñ 3AT Ñ VëUAG BAëC 6À0c
c
c una base de datos en Visual Basic no implica utilizar sentencias especiales para el
Crear
c
almacenamiento de los datos, sino, que implica utilizar otros métodos y algoritmos para almacenar
c los datos.
y leer
c
Vamos
c a utilizar las mismas sentencias Open, Line Input, Print, Output, Input y Append ya vistas
anteriormente. Ahora crearemos una pequeña agenda telefónica que le permitirá aprender a crear
c
archivos con estructura de base de datos.
c
c
ó Cree una carpeta llamada Ae da en el disco duro para almacenar nuestro proyecto y nuestra
c
base de datos.
c
ó Abra un nuevo proyecto y dibuje el siguiente entorno:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Gos Archivosc
Capílo 7
c c
c à Ñl primer botón servirá para agregar un nuevo contacto o una nueva persona.
c à Ñl segundo botón permitirá buscar algún contacto, ya sea por nombre o por el número de
teléfono.
c
à Ñl tercer botón será utilizado para eliminar un contacto de la base de datos.
c à Ñl cuarto botón se utilizará para obtener una lista de todos los contactos que han sido
c agregado a la base de datos.
c à Ñl quinto botón será utilizado para salir de la aplicación.
c
ó Ñstablezca
c los siguientes valores a los controles del formulario anterior para que quede como se
muestra en la imagen anterior:
c
c rol
Co Propiedad Valor
c
Form1 Capio Agenda
c Borderyle 1m Fixed Single
c Heih 4545
c Widh 5430
arUpPosiio 1 ± CenterOwner
c
BackColor
c
Label1
c Capio DÑNU PRINCIPAL
Aoize True
c Gef 1635
c Top 240
c Fo Tamaño 10 y Negrita.
c BackColor
Command1
c Capio &Agregar un nuevo contacto
Heih 375
c Widh 3015
c Gef 1080
c Top 720
c yle 1m Graphical
c BackColor
c
Command2 Capio &Buscar contacto
c Heih 375
Widh 3015
c
Gef 1080
c Top 1320
c yle 1m Graphical
c BackColor
c
Command3 Capio &Ñliminar contacto
c Heih 375
c Widh 3015
c Gef 1080
Top 1920
c yle 1m Graphical
c BackColor
c
Comma d4 Caption &Reporte
c Height 375
c Width 3015
c Left 1080
c Top 2520
c Style 1m Graphical
BackColor
Gos Archivosc
Capílo 7
c c
c
Command4 Caption &Repore
c Height 375
Width 3015
c Left 1080
c Top 2520
c Style 1- raphical
c BackColor Ñl primer verdeÀ
c
Comma
c d5 Caption &Salir
Height 375
c Width 3015
c Left 1080
c Top 3120
c Style 1m Graphical
c BackColor Ñl primer verde.
c
c
ó Ahora vamos a agregar un nuevo formulario (Form2) para la primera opción del menú principal.
c
c
ó Haga clic en el menú Projec y luego haga clic en la opción Add Form. Ñn el cuadro de dialogo
quec aparece haga clic en el botón Open (abrir).
c
ó Ahora aparecerá un formulario en blanco. Ñn este formulario pondremos todo lo necesario para
c
agregar un nuevo contacto en la base de datos.
c
c
ó Ahora dibuje el siguiente entorno en el nuevo formulario (Form2):
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c à Ñl primer botón será utilizado para guardar los datos del nuevo contacto.
c
c à Ñl segundo botón será utilizado para limpiar las cajas de texto y permitir agregar un nuevo
contacto.
c
c à Ñl tercer botón cerrará la ventana de Agregar nuevo contacto.
c
c
ó Ñstablezca los siguientes valores en los controles del nuevo formulario:
Gos Archivosc
Capílo 7
c c
c
CTRG PRPëÑ3A3 VAGR
c
Form2 Capio Agregar nuevo contacto
c BackColor Ñl primer amarillo.
Borderyle 1 ± Fixed Single
c howë TaskBar False
c Heih 4005
c Widh 5445
c arUpPosiio 1 m CenterOwner
c
Label1 Aoize True
c Capio INTRODUZCA LOS DATOS DÑL NUÑVO CONTACTO
c BackColor Ñl primer verde.
c Gef 120
Top 240
c Fo Tamaño 8 y Negrita.
c
Label2 Aoize True
c Capio Nombre
c Backyle 0 ± Transparent
c Fo Tamaño 8 y Negrita.
c Gef 120
c Top 720
c
Label3 Aoize True
c Capio Apellido
Backyle 0 ± Transparent
c
Fo Tamaño 8 y Negrita.
c Gef 120
c Top 1200
c
Label4 Aoize True
c Capio Teléfono
c Backyle 0 ± Transparent
c Fo Tamaño 8 y Negrita.
c Gef 120
Top 1680
c
Label5
c Aoize True
Capio Dirección
c
Backyle 0 ± Transparent
c Fo Tamaño 8 y Negrita.
c Gef 120
c Top 2160
c
Tex1 Tex (Vació)
c
Appeara ce 0 ± Flat
c Heih 285
c Widh 3615
c Gef 1080
c Top 720
c
Tex2 Text (Vació)
c Appearance 0 ± Flat
c Height 285
Width 3615
c Left 1080
c Top 1200
Gos Archivosc
Capílo 7
c c
c
Text3 Text (Vació)
c Appearance 0 ± Fla
Height 285
c Width 2055
c Left 1080
c Top 1680
c
Text4 Tex (Vació)
c Appeara ce 0 ± Flat
c Heih 285
Widh 3975
c Gef 1080
c Top 2160
c
c
Command1 Capio &Guardar
c Heih 375
Widh 855
c Gef 240
c Top 3000
c
Command2 Capio &Nuevo
c Heih 375
c Widh 855
Gef 1320
c Top 3000
c
Comma d3 Caption &Cancelar
c Height 375
c Width 855
c Left 4200
Top 3000
c
c
c
ó Active o seleccione el primer formulario (Form1) de la ventana de Proyectos (Project) haciendo
c clic sobre el mismo.
doble
c
c
ó Ahora haga clic en el primer botón ³Agregar un nuevo contacto´ y escriba en el evento Click la
siguiente
c línea de código:
c
Form2.Show 1, De
c
c
Lac línea de código anterior permite mostrar el segundo formulario. Ñl método Show permite mostrar
unc formulario en la pantalla. Ñl ³1, De´ es un método utilizado para que el formulario que se muestra
sea el único activo en la pantalla, es decir, hasta que este no sea cerrado no se podrá activar
c
ninguna otra opción del menú principal.
c
c
ó Active el segundo formulario (Form2) de la ventana de Proyecto (Project) haciendo doble clic
c el mismo.
sobre
c
ó Ahora vamos a codificar el botón de Guardar:
c
c el evento Click del botón @ escriba lo siguiente:
ó Ñn
cOpen "C:\AGÑNDA\Agenda.dat" For Append As #1
c Print #1, Text1.Text & ";" & Text2.Text & ";" & Text3.Text & ";" & Text4.Text
c
cClose #1
Text1.Text = ""
Text2.Text = ""
ë À Carlos Ma el Rodríez Bcarelly
Gos Archivosc
Capílo 7
c c
Text3.Text
c = ""
Text4.Text
c = ""
c
Text1.SetFocus
c
DsgBox ("Ñl nuevo contacto ha sido agregado.")
c c
c
Ñxplicació del códio a erior:
c
c
- Primera lí ea:
c
Openc "C:\AGÑNDA\Agenda.dat" For Append As #1
c
Ñn esta línea de código la única novedad es el método Appe d que permite agregar información al
c
final del archivo y si este no existe entonces se crea. No utilizamos el método p por la razón
dec que este método crea nuevamente el archivo y elimina los datos que tenia anteriormente para
c
sustituirlo con los nuevos datos.
c
- e
c da lí ea:
c
Print #1, Text1.Text & ";" & Text2.Text & ";" & Text3.Text & ";" & Text4.Text
c
Ñstac línea permite escribir en una línea del archivo el contenido de cada unas de las cajas de texto
c
separado con un punto y coma (;), como habíamos explicamos anteriormente.
c
- Ulimas lí eas:
c
c Close #1
c
cText1.Text = ""
cText2.Text = ""
cText3.Text = ""
Text4.Text = ""
c
cText1.SetFocus
cDsgBox ("Ñl nuevo contacto ha sido agregado.")
c
Ñn estas últimas líneas no hay nada nuevo. Se cierra el archivo, se limpian cada unas de las cajas
c
de texto, se hace que el cursor se posicione en la primera caja de texto y se muestra un mensaje.
c
c
ó Corra la aplicación y, a continuación, haga clic en el botón . ccc .
c
Debec de aparecer el segundo formulario (Form2). Bien agregue un contacto y haga clic en el botón
Guardar. Inmediatamente este registro se agrega en la base de datos. Dás adelante veremos como
c
leer estos registros.
c
c
ó Detenga la aplicación.
c
ó Haga
c doble clic en el botónc× del segundo formulario (Form2) y escriba lo siguiente:
cccccText1.Text = ""
cText2.Text = ""
cText3.Text = ""
cText4.Text = ""
Text1.SetFocus
Gos Archivosc
Capílo 7
c c
c
Ñxplicació del códio a erior:
c
Ninguna novedad. Limpia todas las cajas de texto y hace que el cursor se posicione en la primera
c
caja.
c
c el evento Click del botón ( cescriba:
ó Ñn
c
Unload De
c
c
Ñxplicació del códio a erior:
c
c
Unload De
c
Ñsta línea de código permite cerrar el formulario y no la aplicación completa.
c
Ñl csignificado de esta línea al castellano es: ³DÑSCARGADDÑ´.
c
c
ó Active el primer formulario desde la ventana de Proyectos (Project) haciendo doble clic sobre el
mismo.
c
c
ó Ahora vamos a crear un nuevo formulario que será el formulario de la segunda opción del menú
c
principal. Ñn este formulario agregaremos todo lo necesario para buscar un contacto, ya sea por
c
número telefónico o por nombre.
c
ó Agregue
c un nuevo formulario haciendo clic en el menú Project y a continuación, en Add Form. Ñn
el cuadro de dialogo que aparece haga clic en el botón Open.
c
c
ó Aparecerá un nuevo formulario (Form3).
c
c
ó Dibuje un entorno similar al que se muestra en la imagen siguiente en un tercer formulario
(Form3).
c Hágalo tal y como se ve, no daré los valores de los controles como lo había echo
anteriormente.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c el evento Click del botón de comandoc escriba el siguiente bloque de código:
ó Ñn
c If Len(Trim(Text1.Text)) = 0 Then
c DsgBox ("Debe escribir algo en la caja de texto.")
c Text1.SetFocus
ÑlseIf Option1.Value = False And Option2.Value = False Then
c
ë À Carlos Ma el Rodríez Bcarelly
Gos Archivosc
Capílo 7
c c
c DsgBox ("Debe seleccionar el tipo de búsqueda.")
cÑlse
cOn Ñrror GoTo NOarchivo:
cDim Linea As String
cDim Campo1, Campo2, Campo3, Campo4 As String
cDim Posicion1, Posicion2, Posicion3 As Integer
cDim Ñncontro As Integer
Ñncontro = 0
c
cOpen "C:\AGÑNDA\Agenda.dat" For Input As #1
c While Not ÑOF(1)
c Line Input #1, Linea
c
Posicion1 = InStr(1, Linea, ";", vbTextCompare)
c Posicion2 = InStr(Posicion1 + 1, Linea, ";", vbTextCompare)
c Posicion3 = InStr(Posicion2 + 1, Linea, ";", vbTextCompare)
c Campo1 = Did(Linea, 1, Posicion1 m 1)
c Campo2 = Did(Linea, Posicion1 + 1, Posicion2 m 1 m Posicion1)
Campo3 = Did(Linea, Posicion2 + 1, Posicion3 m 1 m Posicion2)
c
Campo4 = Did(Linea, Posicion3 + 1, Len(Linea))
c
c If UCase(Campo1) = UCase(Text1.Text) And Option1.Value = True Then
c DsgBox ("Nombre: " & Campo1 & " Apellido: " &
c Campo2 & " Teléfono: " & Campo3 & " Dirección: " & Campo4)
c Ñncontro = 1
c Ñnd If
c
c If Campo3 = Text1.Text And Option2.Value = True Then
c
DsgBox ("Nombre: " & Campo1 & " Apellido: " &
c
Campo2 & " Teléfono: " & Campo3 & " Dirección: " & Campo4)
c Ñncontro = 1
c
c Ñnd If
c
c Wend
c If Ñncontro = 0 Then
c DsgBox ("No se ha encontrado el contacto especificado.")
c Ñnd If
c
cClose #1
cÑnd If
c
c Sub
Ñxit
c
NOarchivo:
c
c
DsgBox ("La base de datos no existe.")
c c
Ñxplicació del bloqe de códio a erior:
c
- Gas primeras res lí eas:
Gos Archivosc
Capílo 7
c c
cIf Len(Trim(Text1.Text)) = 0 Then
DsgBox ("Debe escribir algo en la caja de texto.")
c
Text1.SetFocus
c
c bloque de código permite verificar si la caja de texto se deja vacía, en caso de que se deje
Ñste
c entonces se muestra un mensaje y el cursor se envía a la caja de texto.
vacía
c
La sentencia Ge permite obtener la longitud de una cadena de caracteres, en este caso la longitud
c
de la caja de texto. La sentencia Trim permite eliminar los espacios en blanco que posiblemente se
c
escriban al final de la caja de texto.
c
Lac traducción del código anterior sería la siguiente:
SI cLA LONGITUD DÑ LA CAJA DÑ TÑXTO ÑS IGUAL A CÑRO ÑNTONCÑS
DUÑSTRA ÑL DÑNSAJÑ (³Debe escribir algo en la caja de texto´)
c
HAS QUÑ LA CAJA DÑ TÑXTO RÑSIVA ÑL ÑNFOQUÑ
c
- Gíc ea 4, 5 y 6:
c
c ÑlseIf Option1.Value = False And Option2.Value = False Then
c
DsgBox ("Debe seleccionar el tipo de búsqueda.")
c
c Ñlse
c
c bloque de código permite verificar si se selecciona una de las opciones del tipo de búsqueda.
Ñste
La propiedad Vale permite verificar si el botón de opción esta seleccionado o no. Cando tiene el
c
valor r indica que el botón no esta seleccionado.
c
Lac traducción del bloque anterior es la siguiente:
c
SIc PRIDÑRA OPCION = no seleccionada Y SÑGUNDA OPCION = no seleccionada ÑNTONCÑS
c
DUÑSTRA ÑL DÑNSAJÑ (³Debe seleccionar el tipo de búsqueda.´)
c
DÑc LO CONTRARIO
c
Ñl c operador lógico And permite enlazar dos expresiones. Si ambas expresiones se cumplen,
entonces, se ejecutan las líneas de códigos de más abajo.
c
Lac cláusula Ñlse (De lo contrario) se ha utilizado para tomar una decisión en caso de que no se
c
cumpla la condición, es decir, en caso de que se seleccione alguna de las opciones. Si una da las
c
opciones se selecciona, entonces, toda la codificación que se encuentra debajo de la cláusula Ñlse
secejecutará.
c
- Gí ea 7:
c
Onc Ñrror GoTo NOarchivo:
c
c línea de código activa el detector de errores. Si ocurre algún error en la apertura del archivo,
Ñsta
entonces, se ejecuta la codificación que se encuentra debajo en la etiqueta NOarchivo.
c
- Gíc eas 8, 9, 10, 11 y 12:
c
cDim Linea As String
Dim Campo1, Campo2, Campo3, Campo4 As String
Dim Posicion1, Posicion2, Posicion3 As Integer
cccc
ë À Carlos Ma el Rodríez Bcarelly
Gos Archivosc
Capílo 7
c c
cDim Ñncontro As Integer
cÑncontro = 0
Ñnc esta sección se declararon todas las variables necesarias para proceder con la codificación.
c
Lac primera variable Linea se utilizará para almacenar cada unas de las líneas de texto del
documento.
c Las variables Campo1, Campo2, Campo3, Campo4 son variables de tipo cadena
donde se almacenarán temporalmente el contenido de cada campo de la base de datos. Las
c
variables Posicion1, Posicion2, Posicion3 son variables de tipo entero, donde se almacenarán las
c
posiciones de cada uno de los punto y coma (;) que utilizamos para separar los campos. Tres
c
posiciones porque utilizamos solamente tres punto y coma.
c
Lac variable Ñncontro como tipo entero, donde se almacenará un valor que indicará si se encontró o
no la búsqueda realizada. Si la variable tiene el valor cero entonces no se encontró ningún
c
elemento y si tiene el valor uno entonces se encontró el elemento.
c
c
Ñncontro = 0 se ha especificado para darle un valor inicial a la variable.
c
- Gíc eas 13, 14, 15:
c
Open "C:\AGÑNDA\Agenda.dat" For Input As #1
c
c While Not ÑOF(1)
c
c Line Input #1, Linea
c
Nada que no haya visto. Primero se abre el archivo para modo de lectura, segundo se inicia el
c y por ultimo se lee cada línea del archivo y se almacena en la variable Linea.
bucle
c
- Gíc eas 16, 17, 18:
c
Posicion1 = InStr(1, Linea, ";", vbTextCompare)
c
c Posicion2 = InStr(Posicion1 + 1, Linea, ";", vbTextCompare)
c
c Posicion3 = InStr(Posicion2 + 1, Linea, ";", vbTextCompare)
c
Posiblemente aquí encuentre muchas cosas extrañas pero trataré de explicarlo con algunos
c
ejemplos.
c
c
Primeramente empezaré definiendo la función de la sentencia ë r. Ñsta sentencia permite obtener
la cposición de un carácter especificado en la cadena de caracteres, es decir, te devuelve el número
dec la posición donde se encuentra ese carácter en la cadena de texto.
c
Ñjemplo:
c
c
Carlos
Ma el
809-589-5858
UrbÀ Ralma, Calle #4
c
c
Puede observar que utilicé tres punto y coma (;) para separar los tres campos (nombre, apellido,
teléfono
c y dirección). Ñsas posiciones de esos tres punto y coma lo almacenaré en cada una de las
variables ya vistas anteriormente.
c
Porc ejemplo, la posición del primer punto y coma (;) lo almacenaré en la variable Posicion1, al
c
posición del segundo punto y coma (;) lo almacenaré en la variable Posicion2 y la posición del
tercer punto y coma (;) lo almacenaré en la variable Posicion3.
Gos Archivosc
Capílo 7
c c
Ñnc el ejemplo anterior las posiciones que se almacenarían en las variables son los siguientes:
c
Posicion1 = 7
c
Posicion2 = 14
c
Posicion3 = 27
c
Ñstoc es por lo siguiente:
c
c
C ca r l o s
M a e l
8 0 9 ± 5 8 9 ± 5 8 5 8
U r b À R a l m a , C a l l e # 4
cccc2cc&cc"ccc(ccc)cccccc-ccc.cc/ccc2c&cc(c)c+c-c.c2/c2c22c2&c2"c2(c2)c c2-c2.c&/c&c&2c&&c&"c&(c&)c&+c7777777
cc
c c
Cadac carácter tiene una posición en la cadena. Ñstas posiciones que hemos leído serán de mucha
c
utilidad a la hora de leer los campos de la base de datos. Ñso lo veremos a continuación.
c
Ñl formato de la sentencia ë r es el siguiente:
c
c
ë r(Valor_ë icial, Cade a_Pri cipal, Cade a_a_Bscar, Tipo_de_bsqeda)
c
c
Donde:
c
Valor_ë icial: Ñs un número de una posición de algún carácter de la cadena de texto principal. Por
c
ejemplo, si el valor inicial es 1 entonces la búsqueda comienza desde el principio de la cadena, es
c desde el primer carácter.
decir,
c
Cadec a_Pri cipal: Representa la cadena de caracteres en donde se realizará la búsqueda.
c
Cade a_a_Bscar: Representa la cadena a buscar.
c
c
Tipo_de_bsqeda: Ñs una constante que representa el tipo de búsqueda. Se ha especificado la
c
constante vbTexCompare que indica que la búsqueda que se realizará es de tipo texto.
c
c
a) Posicion1 = InStr(1, Linea, ";", vbTextCompare)
c
Ñstac línea busca el primer punto y coma que aparece en el registro. La búsqueda se realiza a partir
delc primer carácter, por eso se especifica el número 1.
c
b) cPosicion2 = InStr(Posicion1 + 1, Linea, ";", vbTextCompare)
c
Ñsta línea busca el segundo punto y coma que aparece en el registro. La búsqueda se realiza a
c de la posición del primer punto y coma, por eso se especifica Posicio 1 + 1.
partir
c
c) cPosicion3 = InStr(Posicion2 + 1, Linea, ";", vbTextCompare)
c
Ñsta línea busca el tercer punto y coma que aparece en el registro. La búsqueda se realiza a partir
dec la posición del segundo punto y coma, por eso se especifica Posicio 2 + 1.
c
- Gíc eas 19, 20, 21 y 22:
c
c Campo1 = Did(Linea, 1, Posicion1 m 1)
c Campo2 = Did(Linea, Posicion1 + 1, Posicion2 m 1 m Posicion1)
c
c Campo3 = Did(Linea, Posicion2 + 1, Posicion3 m 1 m Posicion2)
Gos Archivosc
Capílo 7
c c
c cuatro líneas de código permiten leer cada uno de los campos de la base de datos.
Ñstas
c
Antes de explicar cada línea de código, vamos a definir la sentencia Mid.
c
Lac sentencia Mid permite copiar una cadena de caracteres de otra cadena de caracteres, llamada
c
cadena principal. Ñn esta función se debe especificar la cadena de donde se hará la copia que es la
cadena
c principal. Se debe especificar también la posición en la cadena desde donde se quiere
iniciar
c la copia y por ultimo, se debe especificar la cantidad de caracteres a copiar.
cc
c
Campo2 = Did(Linea, 8, 14 ± 1 ± 7)
c
Ñl c8 es por Posicion1 + 1 que es la posición del primer punto y coma (;).
Ñl c14 es por Posicion2 que es la posición del segundo punto y coma (;).
Ñl cm1 es para que en la copia no se incluya el primer punto y coma (;).
c
mPosicion1 es la posición del primer punto y coma que se le resta a la segunda posición menos uno,
estoc le dará la cantidad de caracteres del segundo campo. 14 ± 1 ± 7 = 6 que es la longitud del
c
campo Apellido.
c
c) cCampo3 = Did(Linea, Posicion2 + 1, Posicion3 m 1 m Posicion2)
Ñstac línea lee el campo ³Teléfono´. Se aplica lo mismo que al campo anterior pero iniciando desde
la cposición2.
c
d) cCampo4 = Did(Linea, Posicion3 + 1, Len(Linea))
c
Ñsta línea lee el campo ³Dirección´. Se aplica lo mismo que el campo anterior pero iniciando desde
c
la posición3. Len(Linea) es lo único diferente y se especifica porque no existe una ultima posición
que c indique la longitud del último campo. Siempre tendrá que utilizar esta sentencia para leer el
c campo, pero todo lo demás es igual.
último
Gos Archivosc
Capílo 7
c c
- Gíc ea 23, 24, 25, 26 y 27:
c
If UCase(Campo1) = UCase(Text1.Text) And Option1.Value = True Then
c DsgBox ("Nombre: " & Campo1 & " Apellido: " &
c Campo2 & " Teléfono: " & Campo3 & " Dirección: " & Campo4)
c Ñncontro = 1
c Ñnd If
c
Ñste bloque de código permite verificar si el contenido del campo nombre es igual al contenido de la
c de texto para luego mostrar el registro completo en una caja de mensaje.
caja
c
Lac sentencia Ucase permite convertir un texto en mayúscula. Ñsta sentencia se utilizo para que no
exista
c problema de mayúscula y minúscula, es decir, si el usuario escribe el nombre en mayúscula
y en la base de datos esta en minúscula entonces habrá un problema, porque no sería el mismo
c
texto aunque dijera lo mismo, por esa razón se ha convertido el valor del campo y el valor de la caja
dec texto en mayúscula.
c
Lac traducción del bloque anterior es la siguiente:
c
ë el campo ombre e mayscla = al co e ido de la caja de exo e mayscla Y la
c
primera opció esa seleccio ada (la opció bsqeda por ombre) Ñ o ces
c
c Mesra (Ñl ombre, el apellido, el el
fo o y la direcció )
c Asi a el valor o a la variable Ñ co ró para saber qe se e co ró el reisro
c
Fi aliza el ë
c
- Gíc eas 28, 29, 30, 31 y 32:
c
c If Campo3 = Text1.Text And Option2.Value = True Then
c
DsgBox ("Nombre: " & Campo1 & " Apellido: " &
c
Campo2 & " Teléfono: " & Campo3 & " Dirección: " & Campo4)
c Ñncontro = 1
c
c Ñnd If
c
Lo mismo que el bloque de código anterior. La única diferencia es que la comparación se hace con
c
el Campo3, es decir, con el campo teléfono. Ñsto es en caso de que se seleccione la segunda
c
opción que es buscar por teléfono.
c
Lac traducción del bloque anterior es:
c
ë el campo ombre e mayscla = al co e ido de la caja de exo e mayscla Y la
c
primera opció esa seleccio ada (la opció bsqeda por ombre) Ñ o ces
c
c Mesra (Ñl ombre, el apellido, el el
fo o y la direcció )
c Asi a el valor o a la variable Ñ co ró para saber qe se e co ró el reisro
c
Fi aliza el ë
c
- Gíc eas 28, 29, 30, 31 y 32:
c
c If Campo3 = Text1.Text And Option2.Value = True Then
DsgBox ("Nombre: " & Campo1 & " Apellido: " &
Campo2 & " Teléfono: " & Campo3 & " Dirección: " & Campo4)
c
ë À Carlos Ma el Rodríez Bcarelly
Gos Archivosc
Capílo 7
c c
c
Ñncontro =1
c
Ñnd If
c
Loc mismo que el bloque de código anterior. La única diferencia es que la comparación se hace con
el cCampo3, es decir, con el campo teléfono. Ñsto es en caso de que se seleccione la segunda
opción
c que es buscar por teléfono.
c
La traducción del bloque anterior es:
c
ë cel campo el
fo o = al co e ido de la caja de exo Y la se da opció esa
c
seleccio ada (la opció bsqeda por ombre) Ñ o ces
c
Mesra (Ñl ombre, el apellido, el el
fo o y la direcció )
c Asi a el valor o a la variable Ñ co ró para saber qe se e co ró el reisro
c
Fi c aliza el ë
c
Ñnc este bloque no se utilizo la sentencia Ucase por la razón de que los números no se escriben ni
en mayúscula ni en minúscula.
c
m Gíc ea 33:
c
c Wend
c
Ñsta sentencia ya la he explicado anteriormente y se utiliza para indicar el final del bucle, o bien,
c
hasta donde se repetirá el bucle.
c
- Gíc eas 34, 35 y 36:
c
c If Ñncontro = 0 Then
DsgBox ("No se ha encontrado el contacto especificado.")
c
Ñnd If
c
c bloque de código permite mostrar un mensaje en caso de que no se encuentre el registro
Ñste
c
especificado. Cuando el valor de la variable Ñ co ro es igual a cero entonces no se encontró
ningún
c registro y si el valor es uno entonces se encontró el registro.
c
- Ulimas lí eas:
c
c #1
Close
c
cÑnd If
c
Ñxit Sub
c
c
NOarchivo:
c
DsgBox ("La base de datos no existe.")
Close
c #1
Close #2
c
c
c el evento Click del botón ( cescriba:
ó Ñn
c
µDescarga
c el formulario.
Unload De
Gos Archivosc
Capílo 7
c c
ó Corra
c la aplicación. Haga clic en el botón . ccc y, a continuación, agregue
un nuevo contacto.
c
c
ó Cierre la ventana de Agregar un nuevo contacto, y a continuación, haga clic en el botón c
c .
c
c
ó Ñscriba el nombre del contacto y seleccione la opción ccP, y a continuación, haga
clic en el botón .
c
c vamos a darle función a la tercera opción del menú principal (Ñliminar contacto):
Ahora
c c
c
Agregue un nuevo formulario y dibuje el siguiente entorno:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Ñn el evento Click del botón cescriba:
c
Ifc Len(Trim(Text1.Text)) = 0 Then
c
c DsgBox ("Debe escribir algo en la caja de texto.")
c Text1.SetFocus
cÑlseIf Option1.Value = False And Option2.Value = False Then
c
c DsgBox ("Debe seleccionar el tipo de búsqueda.")
Ñlse
c
Onc Ñrror GoTo NOarchivo:
c
cDim Linea As String
cDim I As Integer
Dim Campo1, Campo2, Campo3, Campo4 As String
cDim Posicion1, Posicion2, Posicion3 As Integer
cDim Ñncontro As Integer
cÑncontro = 0
c
cDim posicionRegistro As Integer
Dim LineasdelArchivo(1000000) As String
cDim NumeroLinea As Integer
cDim registroBorrar As Integer
cposicionRegistro = 0
NumeroLinea = 0
Gos Archivosc
Capílo 7
c c
cOpen "C:\AGÑNDA\agenda.dat" For Input As #1
c While Not ÑOF(1)
NumeroLinea = NumeroLinea + 1
c Line Input #1, LineasdelArchivo(NumeroLinea)
c Wend
cClose #1
c
Open
c "C:\AGÑNDA\Agenda.dat" For Input As #1
c While Not ÑOF(1)
c posicionRegistro = posicionRegistro + 1
c Line Input #1, Linea
c
c Posicion1 = InStr(1, Linea, ";", vbTextCompare)
c
c Posicion2 = InStr(Posicion1 + 1, Linea, ";", vbTextCompare)
c Posicion3 = InStr(Posicion2 + 1, Linea, ";", vbTextCompare)
c
c Campo1 = Did(Linea, 1, Posicion1 m 1)
c
c Campo2 = Did(Linea, Posicion1 + 1, Posicion2 m 1 m Posicion1)
c Campo3 = Did(Linea, Posicion2 + 1, Posicion3 m 1 m Posicion2)
c
c Campo4 = Did(Linea, Posicion3 + 1, Len(Linea))
c
c
Dim Respuesta
c
c If UCase(Campo1) = UCase(Text1.Text) And Option1.Value = True Then
c
c registroBorrar = posicionRegistro
c
Respuesta = DsgBox("¿Desea eliminar el registro " & "'" &
c Campo1 & Chr(32) & Campo2 & "' ?", vbYesNo)
c
c If Respuesta = vbYes Then
c
c 'SÑ DODIFICA ÑL ARRÑGLO
' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
c
c For I = 1 To NumeroLinea
c If I = registroBorrar Then
c LineasdelArchivo(I) = ""
c Ñnd If
Next I
c
c Ñnd If
c Ñncontro = Ñncontro + 1
Ñnd If
c
cccccccccccc
cccccIf UCase(Campo3) = UCase(Text1.Text) And Option2.Value = True Then
c
Respuesta = DsgBox("¿Desea eliminar el registro " & "'" &
Campo1 & Chr(32) & Campo2 & "' ?", vbYesNo)
cccccccccccc
ë À Carlos Ma el Rodríez Bcarelly
Gos Archivosc
Capílo 7
c c
If Respuesta
c = vbYes Then
c 'SÑ DODIFICA ÑL ARRÑGLO
c ' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
c For I = 1 To NumeroLinea
c If I = registroBorrar Then
c LineasdelArchivo(I) = ""
c Ñnd If
c Next I
c
Ñnd If
c
c Ñncontro = Ñncontro + 1
Ñndc If
c Wend
c Close #1
cIf Ñncontro = 0 Then
c DsgBox ("No se ha encontrado el contacto especificado.")
cÑnd If
c
cIf Ñncontro > 0 And Respuesta = vbYes Then
c Open "C:\AGÑNDA\TemporalArchivo.Dat" For Output As #2
c For I = 1 To NumeroLinea
c
If Len(Trim(LineasdelArchivo(I))) > 0 Then
c
c Print #2, LineasdelArchivo(I)
c Ñnd If
c Next I
c Close #2
c 'SÑ ÑLIDINA LA BASÑ DÑ DATOS ORIGINAL
c ' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
c Kill "C:\AGÑNDA\agenda.dat"
c
c 'SÑ LÑ PONÑ ÑL NODBRÑ ORIGINAL A LA BASÑ DÑ DATOS TÑDPORAL
' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
c
c Name "C:\AGÑNDA\TemporalArchivo.Dat" As "C:\AGÑNDA\agenda.dat"
c DsgBox (Ñncontro & " registro eliminados.")
c
cText1.Text = ""
cÑnd If
c
c Ñnd If
Ñxit Sub
c
NOarchivo:
c
c
DsgBox ("La base de datos no existe.")
c #1
Close
c
Close #2
Gos Archivosc
Capílo 7
c c
c
Ñxplicació del bloqe de códio a erior:
c
1À- Gí eas desde la 1 hasa la 12:
c
Ñsc la misma codificación que se escribió en el botón buscar del formulario c .
c
2À-c Gí eas 13, 14, 15, 16, 17 y 18:
c
Dim posicionRegistro As Integer
cDim LineasdelArchivo(1000000) As String
cDim NumeroLinea As Integer
cDim registroBorrar As Integer
c
cposicionRegistro = 0
NumeroLinea = 0
c
Ñnc la línea 13 de declara una variable llamada - cde tipo entero. Ñn esta variable se
c
almacenará el registro actual que se esta leyendo de la base de datos, para saber cual es el
número
c del registro que se esta leyendo.
c
Ñn la línea 14 se declara un arreglo llamado , . cde tipo cadena Ñste arreglo permitirá
c
almacenar un millón de registros de la base de datos en caso de que existan. Ñste arreglo es muy
c
importante, ya que va a permitir almacenar temporalmente cada registro de la base de datos.
c
Ñnc la línea 15 se declara una variable llamada ×P, de tipo entero. Ñn esta variable se
almacenará el total de registros de la base de datos, es decir, el número de líneas que tiene la base
c
de datos.
c
Ñnc la línea 16 se declara una variable llamada - de tipo entero. Ñn esta variable se
c
almacenará el número de la línea que se va a borrar, es decir, el número del registro que se va a
borrar
c de la base de datos.
c
Las otras dos líneas establecen un valor inicial en las variables - cc×P, c
c c
3À-c Gí eas 19, 20, 21, 22, 23 y 24:
cOpen "C:\AGÑNDA\agenda.dat" For Input As #1
c While Not ÑOF(1)
c NumeroLinea = NumeroLinea + 1
c Line Input #1, LineasdelArchivo(NumeroLinea)
c Wend
Close #1
c
c bloque de código permite almacenar en el arreglo cada uno de los registro de la base de
Ñste
c
datos. Lo único nuevo es el bloque de código , . ×P, que explicaré a
c
continuación:
c c
La variable ×P, se incrementará cada vez que se repite el bucle. Gracias a esto es
c
posible almacenar en posiciones diferentes del arreglo cada registro leído de la base de datos.
c
c vez que se repite el bucle sucede lo siguiente:
Cada
c Input #1, LineasdelArchivo(1)
Line Cuando inicia el bucle
Line
c Input #1, LineasdelArchivo(2) La segunda repetición
Line Input #1, LineasdelArchivo(3) La tercera repetición
c
Line Input #1, LineasdelArchivo(4) La cuarta repetición
«« Ñsto se repite hasta el fin del archivo.
c
ë À Carlos Ma el Rodríez Bcarelly
Gos Archivosc
Capílo 7
c c
- Gíc eas desde la 25 a la 35:
c
Open "C:\AGÑNDA\Agenda.dat" For Input As #1
c
c While Not ÑOF(1)
c posicionRegistro = posicionRegistro + 1
c
c Line Input #1, Linea
c
c Posicion1 = InStr(1, Linea, ";", vbTextCompare)
c Posicion2 = InStr(Posicion1 + 1, Linea, ";", vbTextCompare)
c
c Posicion3 = InStr(Posicion2 + 1, Linea, ";", vbTextCompare)
c
c Campo1 = Did(Linea, 1, Posicion1 m 1)
c Campo2 = Did(Linea, Posicion1 + 1, Posicion2 m 1 m Posicion1)
c
c Campo3 = Did(Linea, Posicion2 + 1, Posicion3 m 1 m Posicion2)
c
c Campo4 = Did(Linea, Posicion3 + 1, Len(Linea))
c
c codificación se explica en el botón cde la ventana c .
Ñsta
c
Sec ha agregado una nueva línea de código posicio Reisro = posicio Reisro + 1À Ñsta
variable
c se incrementa cada vez que se lee un registro. Ñn pocas palabras esta variable almacena
el número del registro que se lee de la base de datos.
c
c
- Gíc eas desde la 36 a la 51:
c
Dimc Respuesta
c If UCase(Campo1) = UCase(Text1.Text) And Option1.Value = True Then
c
registroBorrar = posicionRegistro
c
c Respuesta = DsgBox("¿Desea eliminar el registro " & "'" &
c Campo1 & Chr(32) & Campo2 & "' ?", vbYesNo)
c
If Respuesta = vbYes Then
c
c 'SÑ DODIFICA ÑL ARRÑGLO
c ' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
For I = 1 To NumeroLinea
c
c If I = registroBorrar Then
LineasdelArchivo(I) = ""
c
Ñnd If
c
c Next I
c
c Ñnd If
c
Ñncontro = Ñncontro + 1
Ñnd If
ë À Carlos Ma el Rodríez Bcarelly
Gos Archivosc
Capílo 7
c c
Ñnc la primera línea del bloque anterior se declara una variable donde se almacena la respuesta
proporcionada por el usuario, cuando se le hace la pregunta ³¿Desea borrar el registro?´.
c
Si el usuario hace clic en el botón YÑS o SI, entonces en la variable se almacena un valor
c
constante que es vbYÑS. Si hace clic en el botón NO, entonces en la variable se almacena un valor
c
constante que es vbNO.
c
Lac segunda línea del código anterior se explicó en el botón .
c
La línea 38 que es la tercera línea del código anterior, permite almacenar en la variable
- c el número del registro que se va a borrar, que es el registro actual leído de la base
dec datos.
c
Respuesta
c = DsgBox("¿Desea eliminar el registro " & "'" &
Campo1 & Chr(32) & Campo2 & "' ?", vbYesNo)
c
Loc nuevo en esta línea de código es la variable - cdelante de la sentencia DsgBox. Ñsta
c
variable permite almacenar la respuesta proporcionada por el usuario.
c
If Respuesta
c = vbYes Then
c
'SÑ DODIFICA ÑL ARRÑGLO
c ' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
c
For I = 1 To NumeroLinea
c If I = registroBorrar Then
c LineasdelArchivo(I) = ""
c Ñnd If
c
c Next I
c Ñnd If
c
Ñncontro = Ñncontro + 1
c
Ñnd If
c
Ñnc este bloque se comprueba cual fue la respuesta proporcionada por el usuario, si la respuesta es
si, cse hace una modificación en el arreglo.
c
La traducción del bloque anterior es la siguiente:
c
ë cRespuesta = Si Ñ o ces
c
c µSÑ DODIFICA ÑL ARRÑGLO
c µ mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
c
Para I = 1 Hasa Ñl número de líneas que tiene el archivo
c Si I = Al registro a Borrar Ñntonces
c Limpia el elemento correspondiente al valor de I en el arreglo LineasdelArchivo
c Fin Si
c Próximo I
c
Fin Si
c
c Incrementa la variable Ñncontró, para saber cuantos contactos encontró.
c
Gos Archivosc
Capílo 7
c c
- Gíc eas desde la 52 hasa la 65
c
If UCase(Campo3) = UCase(Text1.Text) And Option2.Value = True Then
c
c Respuesta = DsgBox("¿Desea eliminar el registro " & "'" &
c Campo1 & Chr(32) & Campo2 & "' ?", vbYesNo)
c
If Respuesta = vbYes Then
c
c 'SÑ DODIFICA ÑL ARRÑGLO
c ' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
For I = 1 To NumeroLinea
c
c If I = registroBorrar Then
LineasdelArchivo(I) = ""
c
Ñnd If
c
c Next I
c Ñnd If
c Ñncontro = Ñncontro + 1
c
Ñnd If
c
Lac misma codificación del bloque de código anterior. La única diferencia es que se hace cuando se
c
selecciona la opción búsqueda por teléfono en vez de búsqueda por nombre.
c
- Gí eas desde la 66 hasa la 70:
c
c
Wend
c
cClose #1
c
cIf Ñncontro = 0 Then
DsgBox ("No se ha encontrado el contacto especificado.")
cÑnd If
c
c bloque de código se entiende claramente. Indica primero el fin del bucle, cierra el archivo y
Ñste
verifica
c si no se encontró el contacto especificado para luego mostrar un mensaje al usuario.
c
-Gí eas desde la 71 hasa la 94:
c
c
If Ñncontro > 0 And Respuesta = vbYes Then
c Open "C:\AGÑNDA\TemporalArchivo.Dat" For Output As #2
c For I = 1 To NumeroLinea
c
If Len(Trim(LineasdelArchivo(I))) > 0 Then
c Print #2, LineasdelArchivo(I)
c Ñnd If
c Next I
c Close #2
c
'SÑ ÑLIDINA LA BASÑ DÑ DATOS ORIGINAL
c ' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
c Kill "C:\AGÑNDA\agenda.dat"
c 'SÑ LÑ PONÑ ÑL NODBRÑ ORIGINAL A LA BASÑ DÑ DATOS TÑDPORAL
' mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
Name "C:\AGÑNDA\TemporalArchivo.Dat" As "C:\AGÑNDA\agenda.dat"
cccccc ë À Carlos Ma el Rodríez Bcarelly
Gos Archivosc
Capílo 7
c c
c DsgBox (Ñncontro & " registro eliminados.")
Text1.Text = ""
c
c Ñnd If
cÑnd If
c Sub
Ñxit
NOarchivo:
c
c
DsgBox ("La base de datos no existe.")
c
Close #1
c #2
Close
c
Lac primera línea del bloque anterior permite verificar si se ha encontrado algún elemento para
borrar y verifica también si el usuario proporciona la respuesta Si, es decir, si el desea que el
c
registro sea borrado. Ñs lógico que en la búsqueda se puede encontrar el contacto, pero esto no es
c
suficiente, también se requiere saber si el usuario quiere borrar el contacto de la base de datos. Por
talcrazón se verifica ambas cosas.
c
c 'SÑ CRÑA UN ARCHIVO TÑDPORAL
c Open "C:\AGÑNDA\TemporalArchivo.Dat" For Output As #2
For I = 1 To NumeroLinea m Ñncontro
c Print #2, LineasdelArchivo(I)
c Next I
c Close #2
c
Ñste bloque de código crea un archivo temporal con los datos que contiene el arreglo. Ñs muy
c
importante crear un archivo temporal con los datos de la base de datos original porque no
c
trabajaríamos directamente con la base de datos y se envidarían muchos problemas futuros.
c
Ñl ccódigo se entiende claramente: Se abre el archivo para modo de escritura, se inicia un bucle que
sec repetirá hasta el total de líneas del archivo menos el total de registros borrados, se almacena
cada uno de los elementos del arreglo y se cierra el archivo.
c
c Kill "C:\AGÑNDA\agenda.dat"
c
c línea de código elimina la base de datos general, pero esto no importa, porque ya tenemos
Ñsta
unac copia de la base de datos original.
c
Name "C:\AGÑNDA\TemporalArchivo.Dat" As "C:\AGÑNDA\agenda.dat"
c
c línea de código cambia el nombre de la base de datos temporal y le pone el nombre de la base
Ñsta
dec datos original. Ñsto se debe de entender claramente.
c
c DsgBox (Ñncontro & " registro eliminados.")
Text1.Text = ""
c
Lac primera muestra el total de registros eliminados y la segunda limpia la caja de texto donde se
c
escribió el nombre o el teléfono del contacto. Las demás líneas las hemos visto anteriormente.
c
ó Ñn el evento Click del botón ( escriba:
c
Unload
c DÑ
c
c el evento Click del tercer botón del menú Principal de nuestra aplicación escriba:
ó Ñn
Form3.Show 1, De
Gos Archivosc
Capílo 7
c c
ó Corra
c la aplicación.
c
ó Haga clic en el botón P c , introduzca el nombre del contacto que desea eliminar y a
c
continuación, haga clic en el botón . Si el contacto no existe agréguelo.
c
c
ó Ahora daremos función a la cuarta opción del menú principal, al botón -.
c
ó Agregue un nuevo formulario.
c
c
ó Antes de proseguir debemos agregar un nuevo control a la barra de controles. Ñste control se
c GisView que estudiamos en el capítulo anterior.
llama
c
ó Haga
c clic derecho sobre la barra de controles y seleccione la opción (Pc #.
c
ó Ñn el cuadro de diálogo Componente, busque y active el componente c Î c
c
(PPc(cy haga clic en el botón . .
c
c
ó Dibuje un control ListView en el formulario y dos botones de comando, tal y como se muestra
enc la siguiente imagen:
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
ó Haga
c un solo clic sobre el control ListView y busque la propiedad View. Ñstablezca el valor 3 ±
lvwRepor.
c Ñste valor permitirá mostrar los registros como un reporte.
c
c
ó Ñn el evento Goad del formulario escriba:
c
Dimc dato As ListItem
c
ListView1.ColumnHeaders.Add(1) = "Nombre"
c
ListView1.ColumnHeaders.Add(2) = "Apellido"
c
ListView1.ColumnHeaders.Add(3) = "Telefono"
ListView1.ColumnHeaders.Add(4)
c = "Direccion"
c c
Ñl cbloque de código anterior permite agregar los encabezados al control ListView. Los encabezados
serán los campos de la base de datos.
Gos Archivosc
Capílo 7
c c
ó Ñnc el evento Click del botón cescriba:
Onc Ñrror GoTo Noarchivo:
cDim Linea As String
cDim campo1, campo2, campo3, campo4 As String
cDim Posicion1, Posicion2, Posicion3 As Integer
cDim dato
cDim Ñncontro As Integer
Ñncontro = 0
c
cOpen "C:\AGÑNDA\Agenda.dat" For Input As #1
c While Not ÑOF(1)
c Line Input #1, Linea
c
c If Len(Trim(Linea)) > 0 Then
c Posicion1 = InStr(1, Linea, ";", vbTextCompare)
c
Posicion2 = InStr(Posicion1 + 1, Linea, ";", vbTextCompare)
c
c Posicion3 = InStr(Posicion2 + 1, Linea, ";", vbTextCompare)
c campo1 = Did(Linea, 1, Posicion1 m 1)
c campo2 = Did(Linea, Posicion1 + 1, Posicion2 m 1 m Posicion1)
c
campo3 = Did(Linea, Posicion2 + 1, Posicion3 m 1 m Posicion2)
c
c campo4 = Did(Linea, Posicion3 + 1, Len(Linea))
c Set dato = ListView1.ListItems.Add(, , campo1)
c dato.SubItems(1) = campo2
dato.SubItems(2) = campo3
c
dato.SubItems(3) = campo4
c
c Ñncontro = 1
c Ñnd If
cWend
cClose #1
c
cccccccc
c If Ñncontro = 0 Then
DsgBox ("La base de datos esta vacía")
c Ñnd If
c
Ñxitc Sub
c
Noarchivo:
DsgBox
c ("La base de datos no se encuentra.")
Gos Archivosc
Capílo 7
c c
7À9c ÑJÑRCëCë PRPUÑTc
c
1.m Hacer una aplicación que permita abrir un archivo de texto y mostrarlo en una caja de texto. La
c
aplicación debe permitir seleccionar el archivo de la unidad de disco mediante el cuadro de diálogo
c
Abrir.
c
2.mc Hacer una aplicación que permita almacenar en un archivo con estructura de base de datos los
campos:
c Nombre, Apellido, Ñdad y lugar de nacimiento. Ñl programa debe permitir visualizar los
registros agregados en un control ListView. También debe permitir borrar un registro almacenado
enc el archivo de base de datos.
c
3.mc Hacer una aplicación que permita borrar un archivo de una unidad de disco. Ñl nombre de este
archivo
c y la unidad donde este se encuentra debe ser especificado en una caja de texto y mediante
un botón de Borrar el programa debe permitir borrarlo. Si el archivo no se encuentra se debe
c
mostrar un mensaje informando al usuario que ese archivo no existe.
c
4.mc Hacer una aplicación que permita almacenar en un archivo el texto escrito en una caja de texto.
Ñl c programa debe permitir al usuario escribir el nombre del archivo y la unidad donde desea
guardarlo.
c Para esto, usted debe utilizar el cuadro de diálogo @ del control Common Dialog.
c
5.m Hacer una aplicación similar al cc de Windows. Debe dar funciones a las opciones
delc primer menú (Archivo) y del tercer menú (Fuente). Utilice para esto el control Common Dialog.
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Para cargar un Recordset usted debe realizar tres pasos que son realmente necesarios, el primero,
rs.Open "select * from contactos", cn 'Abrimos el Recordset y lo llenamos con una consulta SQL.
Ñndc Sub
c
c
ó Corra
c la aplicación. Utilice los botones para desplazarse por los registros de la base de datos.
c
ó Detenga la aplicación y guárdela con los nombres FormÑjercicio2-8 para el P c y
c
Ñjercicio2-8 para el proyecto.
c
c
- 8À4À1À6
c Modificació de reisros e Recordse
c
La modificación de un registro consiste en la actualización de uno o más campos del registro que se
c
encuentra cargado en el Recordset. Ñsto es posible mediante el método Updae del objeto
c
Recordset que permite la actualización simultanea de varios registro, utilizando la siguiente sintaxis:
c
c
Updae 6( P 6
c
( cPa Ñste argumento es un tipo Variant que contiene el nombre de un campo, un índice de
c
campo o un array de nombres de campo o índices.
c
ca Ñste argumento es un tipo Variant que contiene un valor único o un array de valores. Ñn
este se deben especificar los nuevos valores que serán establecidos en el argumento ( P.
c
c
Ambos argumentos son opcionales, pero solo uno de ellos podrá omitir. Si incluye ambos
c
argumentos deberá especificar los mismos números de campos y valores en ambos argumentos.
Porc ejemplo, si va a modificar dos campos uno llamado ×P y otro . deberá especificar
losc valores que tendrán ambos campos en el argumento . Ñl siguiente ejemplo muestra la
forma en que usted puede actualizar varios campos utilizando la siguiente sintaxis:
c
c
µActualizar cinco campos en una sola operación.
c
c
rs.Update Array(³Nombre´, ³Apellido´, ³Telefono´, ³Direccion´, ³Correo´),
c Array(³Carlos´, ³Rodríguez´, ³809m598m3696´, ³Calle #6, Alma Rosa´, ´[email protected]´)
c
rs.move 0 µHace que el registro se actualice.
c
Al cutilizar el método Update el registro no se modifica inmediatamente hasta que se desplace a otro
c
registro del Recordset o hasta que se emplee un método como el utilizado en el ejemplo anterior.
c
ADO dispone del método Ca celUpdae para cancelar una operación de actualización que se halla
c
realizado sobre un registro y dejarlo como estaba al principio. Si utiliza conjuntamente el método
c
Updae con el método Ca celUpdae podrá ofrecer al usuario la posibilidad de confirmar o
c
cancelar las modificaciones realizadas sobre el registro activo:
c
µSi el registro aun no se ha modificado.
If rs.ÑditDode = adÑditInProgress Then
Ñndc Sub
c
Si cdesea aprovechar este evento, podrá agregar nuevos registros cuando este suceda. Para esto
tendrá
c que ejecutar el método
* y rellenar con datos la colección r y, a continuación,
definir
c el parámetro 0 como para permitir que ADO sepa que ha añadido nuevos
registros.
c
Trcos de la redc
c
c
CTÑë3
c
c
9.1 Abrir la ventana de quitar o agregar programas de Windows.
9.2c Obtener el directorio desde donde estemos ejecutando nuestro programa.
9.3c Verificar si un archivo existe o no.
9.4c Capturar la pantalla entera o la ventana activa.
9.5c Desplegar la lista de un ComboBox automáticamente.
9.6c Cambiar el fondo de Windows.
9.7 Comprobar si el sistema posee una tarjeta de sonido.
9.8c Apagar el equipo, reiniciar Windows y reiniciar el sistema.
9.9c Situar un ScrollBar horizontal en una ListBox.
c Centrar una ventana.
9.10
9.11
c Obtener el directorio de Windows y el directorio de Sistema.
9.12 Crear un efecto Shade al estilo de los sistemas de instalación.
c
9.13 Hacer sonar un fichero WAV o una secuencia DIDI.
c Ocultar y mostrar el cursor.
9.14
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
Trcos de la redc
c
c
Ñnc el presente apartado he decidió colocar una pequeña colección de trucos recogidos de la red.
Ñstos códigos diseñados por aficionados a la programación visual le serán de mucha utilidad en sus
c
aplicaciones, y lo mejor de todo es, que están disponibles gratuitamente para ser usados cada vez
quec los necesite.
c
9À1c Abrir la ve a a de qiar o arear proramas de Wi dows
c
Ñste código le permitirá abrir la ventana . cc c P cde Windows. Ñn un botón de
c
comando escriba:
c
Dim
c X
Xc = Shell("Rundll32.exe shell32.dll,Control RunDLL appwiz.cpl @0")
c
9À2 be er el direcorio desde do de esemos ejeca do esro prorama
c
c código es muy utilizado para leer el directorio o path desde donde se esta ejecutando la
Ñste
c
aplicación:
c
Dim
c Directorio As String µÑsta variable almacenará el directorio actual.
c
ChDir App.Path
c
ChDrive App.Path
Directorio
c = App.Path
Ifc Len(Directorio) > 3 Then
c Directorio = Directorio & "\"
c If
Ñnd
Trcos de la redc
c
c
c otro botón de comando escriba:
ó Ñn
c
'Captura toda la pantalla completa.
c
keybd event 44, 1, 0&, 0&
c
9À5c 3esplear la lisa de ComboBox aomáicame e
c
Ñl csiguiente código le permitirá desplegar la lista de un ComboBox al hacer clic sobre un botón de
comando:
c
c la sección general del editor de código escriba:
ó Ñn
c
Private Declare Function SendDessageLong Lib "user32" Alias
c
"SendDessageA" (ByVal hwnd As Long, ByVal wDsg As Long,
c
ByVal wParam As Long, ByVal lParam As Long) As Long
c
c el evento Goad del formulario escriba:
ó Ñn
c
µAgregamos elementos al ComboBox.
c
Combo1.Clear
c
Combo1.AddItem "Objeto 1"
c
Combo1.AddItem "Objeto 2"
c
Combo1.AddItem "Objeto 3"
Combo1.AddItem
c "Objeto 4"
Combo1.AddItem "Objeto 5"
c
Combo1.AddItem "Objeto 6"
c
Combo1.AddItem "Objeto 7"
c
Combo1.Text = "Objeto 1"
c
c un botón de comando escriba:
ó Ñn
c
'Hacemos que la lista se despliegue.
c Resp As Long
Dim
c
Resp = SendDessageLong(Combo1.hwnd, &H14F, True, 0)
c
9À6c Cambiar el fo do de Wi dows
c
Podrá cambiar el fondo del escritorio de Windows mediante el siguiente código:
c
c la sección general escriba:
ó Ñn
c
Private
c Declare Function SystemParametersInfo Lib "user32" Alias
"SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As
c
Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long
c
c un botón de comando:
ó Ñn
c
Dim
c fallo As Integer
fallo = SystemParametersInfo(20, 0, "C:\WINDOWS\FONDO.BDP", 0)
c
c
9À7c Comprobar si el sisema posee a arjea de so ido
c
Ñl csiguiente código le permitirá verificar si una computadora tiene o no instalada una tarjeta de
sonido:
Trcos de la redc
c
c
c la sección general escriba:
ó Ñn
c
Private Declare Function waveOutGetNumDevs Lib "winmm.dll" () As Long
c
c un botón de comando escriba:
ó Ñn
c
Dim inf As Integer
c = waveOutGetNumDevs()
inf
c
Ifc inf > 0 Then
c DsgBox "Tarjeta de sonido soportada.", vbInformation, "Informacion: Tarjeta de sonido"
Ñlse
c DsgBox "Tarjeta de sonido no soportada.", vbInformation, "Informacion: Tarjeta de sonido"
c If
Ñnd
c
9À8c Apaar el eqipo, rei iciar Wi dows y rei iciar el sisema
c
Con el siguiente código podrá apagar y reiniciar el sistema. También podrá cerrar la sesión en
c
Windows.
c
c la sección general escriba:
ó Ñn
c
Private Declare Function ÑxitWindowsÑx& Lib "user32" (ByVal
c
uFlags&, ByVal dwReserved&)
c
c un botón de comando escriba:
ó Ñn
c
Dim i As Integer
ic = ÑxitWindowsÑx(1, 0&) 'Apaga el equipo.
c
c
ó Ñn un segundo botón de comando escriba:
c
Dim
c i As Integer
ic = ÑxitWindowsÑx(0, 0&) 'Reinicia Windows con nuevo usuario.
c
ó Ñn un tercer botón de comando escriba:
c
c i As Integer
Dim
ic = ÑxitWindowsÑx(2, 0&) 'Reinicia el Sistema.
c
9À9c iar crollBar horizo al e a GisBox
Losc ListBox no poseen una barra de desplazamiento horizontal, podrá agregar una mediante el
siguiente
c código:
c
ó Ñn la sección general escriba:
c
Private
c Declare Function ÑxitWindowsÑx& Lib "user32" (ByVal
uFlags&, ByVal dwReserved&)
c
c
ó Ñn el evento Goad del formulario escriba:
c
Dim
c x As Integer, i As Integer
For
c i = 1 To 20
List1.AddItem "Ñl número final de la selección es el " & i
c
Next i
x = SendDessage(List1.hwnd, &H194, 200, ByVal 0&)
Trcos de la redc
c
c
9À10
c Ce rar a ve a a
c
ó Ñn el evento Goad del formulario escriba:
c
c
Dove (Screen.Width m Width) \ 2, (Screen.Height m Height) \ 2
c
9À11
c be er el direcorio de Wi dows y el direcorio de isema
c
ó Ñn la sección general escriba:
c
Declare
c Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA"
(ByVal lpBuffer As String, ByVal nSize As Long) As Long
c
Declare Function GetWindowsDirectory Lib "kernel32" Alias
c
"GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
c
c
ó Inserte dos etiquetas y un botón de comando en el formulario.
c
c el evento Click del botón de comando escriba:
ó Ñn
c Car As String * 128
Dim
c Longitud, Ñs As Integer
Dim
c Camino As String
Dim
c
Longitud = 128
c
c = GetWindowsDirectory(Car, Longitud)
Ñs
c
Camino = RTrim$(LCase$(Left$(Car, Ñs)))
c
Label1.Caption = Camino
c
c = GetSystemDirectory(Car, Longitud)
Ñs
Camino = RTrim$(LCase$(Left$(Car, Ñs)))
c
Label2.Caption = Camino
c
c
9À12
c Crear efeco hade al esilo de los sisemas de i salació
c el evento Goad del formulario escriba:
ó Ñn
c
Dim
c i As Long
Dim y As Long
c
Form1.Cls
c
Form1.AutoRedraw = True
c
Form1.DrawStyle =6
c
Form1.DrawDode = 13
Form1.DrawWidth
c =2
Form1.ScaleDode = 3
c
Form1.ScaleHeight = (256 * 2)
c
c i = 0 To 255
For
c Form1.Line (0, y)m(Form1.Width, y + 2), RGB(0, 0, i), BF
c y=y+2
Next i
c
c
c
Trcos de la redc
c
c
9À13
c Hacer so ar fichero WAV o a sece cia Më3ë
c
ó Ñn un módulo escriba:
c
c
Declare Function mciÑxecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
cc
c un botón de comando escriba:
ó Ñn
c
Dim Sonido
c
Sonido = mciÑxecute("Play c:\windows\ringin.wav")
cc
c clar y mosrar el crsor
9À14
c
c un módulo escriba:
ó Ñn
c
Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long
cc
c
ó Agregue dos botones de comando al formulario. Ñn el primer botón escriba:
c
Dim
c result
result
c = ShowCursor(False)
cc
c el segundo botón de comando escriba:
ó Ñn
c result
Dim
c
result = ShowCursor(True)
cc
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
A exos
c
TABGA
c 3Ñ VAGRÑ ACëëc
c
c Códios ACëë ormales (códios 0 - 127)
c
c 000 (nul) 016 Ź (dle) 032 sp 048 0 064 @ 080 P 096 ` 112 p
001 ſ (soh) 017 Ż (dc1) 033 ! 049 1 065 A 081 Q 097 a 113 q
c 002 ƀ (stx) 018 Ľ (dc2) 034 " 050 2 066 B 082 R 098 b 114 r
c 003 Ɔ (etx) 019 ĵ (dc3) 035 # 051 3 067 C 083 S 099 c 115 s
c 004 Ƈ (eot) 020 ¶ (dc4) 036 $ 052 4 068 D 084 T 100 d 116 t
005 ƅ (enq) 021 § (nak) 037 % 053 5 069 E 085 U 101 e 117 u
c 006 Ƅ (ack) 022 ŷ (syn) 038 & 054 6 070 F 086 V 102 f 118 v
c 007 (bel) 023 ľ (etb) 039 ' 055 7 071 G 087 W 103 g 119 w
008 Ž (bs) 024 Ĺ (can) 040 ( 056 8 072 H 088 X 104 h 120 x
c 009 (tab) 025 Ļ (em) 041 ) 057 9 073 I 089 Y 105 i 121 y
c 010 (lf) 026 (eof) 042 * 058 : 074 J 090 Z 106 j 122 z
c 011 ƃ (vt) 027 ĸ (esc) 043 + 059 ; 075 K 091 [ 107 k 123 {
012 Ƃ (np) 028 Ŀ (fs) 044 , 060 < 076 L 092 \ 108 l 124 |
c 013 (cr) 029 ļ (gs) 045 - 061 = 077 M 093 ] 109 m 125 }
c 014 Ɖ (so) 030 Ÿ (rs) 046 . 062 > 078 N 094 ^ 110 n 126 ~
c 015 Ɓ (si) 031 ź (us) 047 / 063 ? 079 O 095 _ 111 o 127 ł
c
c Códios ACëë exe didos (códios 128 - 255)
c
c 128 129 ü
Ç 143 Å
144 É
158 ×
159 ƒ
172 ¼
173 ¡
186 Œ
187 Ř
200 ś
201 ŕ
214 Í
215 Î
228 õ
229 Õ
242 Ĵ
243 ¾
c 130 é 145 æ 160 á 174 « 188 Ş 202 Ū 216 Ï 230 µ 244 ¶
c 131 â 146 Æ 161 í 175 » 189 ¢ 203 ŧ 217 ŋ 231 þ 245 §
c 132 133 à
ä 147 ô
148 ö
162 ó
163 ú
176 ų
177 Ŵ
190 ¥
191 ʼn
204 š
205 ő
218 ň
219 Ű
232 Þ
233 Ú
246 ÷
247 ¸
c 134 å 149 ò 164 ñ 178 ŵ 192 Ŋ 206 ŭ 220 ů 234 Û 248 °
c 135 ç 150 û 165 Ñ 179 Ň 193 ŏ 207 ¤ 221 ¦ 235 Ù 249 ¨
136 ê 151 ù 166 ª 180 ō 194 Ŏ 208 ð 222 Ì 236 ý 250 ·
c 137 ë 152 ÿ 167 º 181 Á 195 Ō 209 Ð 223 Ů 237 Ý 251 ¹
c 138 è 153 Ö 168 ¿ 182 Â 196 ņ 210 Ê 224 Ó 238 ¯ 252 ³
c 139 ï 154 Ü 169 ® 183 À 197 Ő 211 Ë 225 ß 239 ´ 253 ²
140 î 155 ø 170 ¬ 184 © 198 ã 212 È 226 Ô 240 254 Ŷ
c
cccccccccccc"cccc()cccc+cccc-(cccc..c ccc2&c!ccc22+c"ccc2"c ccc2((ccccccc
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
A exos
c
CTRGÑ
c TRABAJA3c
c
c
Ɣ hape: Ñs un control gráfico que se muestra como un rectángulo, un cuadrado, una elipse, un
c
círculo, un rectángulo redondeado o un cuadrado redondeado.
c
Ɣ cRichTexBox: Ñs un control que permite al usuario escribir y modificar texto al tiempo que
proporciona
c características de formato más avanzadas que el control TexBox convencional.
c
Ɣ 3aa rid
c (Co rol): Duestra y permite la manipulación de datos de una serie de filas y columnas
que corresponden a registros y campos de un objeto Recordse.
c
Ɣ cMFlex rid: Ñl control Dicrosoft FlexGrid (MFlex rid) muestra datos de tablas y efectúa
c
operaciones en ellos. Proporciona una flexibilidad completa para ordenar, combinar y aplicar
c
formato a tablas que contienen cadenas e imágenes. Cuando se enlaza a un control 3aa, el control
MFlex rid
c muestra datos de sólo lectura.
c
Ɣ cWi sock: Ñl control Wi sock, invisible para el usuario, proporciona un acceso sencillo a los
servicios de red TCP y UDP. Pueden usarlo los programadores de Dicrosoft Access, Visual Basic,
c
Visual C++ o Visual FoxPro. Para escribir aplicaciones de servidor o de cliente no necesita
c
comprender los detalles de TCP ni llamar a las API de Wi sock de nivel inferior. Si establece las
c
propiedades y llama a los métodos del control, podrá conectar fácilmente con un equipo remoto e
intercambiar
c datos en las dos direcciones.
c
Ɣ cCo rol Cale dar de Microsof: Ñs una control que permite introducir en una aplicación un
calendario personalizado.
c
c
Ɣ Co rol A imaio : Puede reproducir archivos AVI para que pueda añadir animaciones sencillas
c
a su programa. Ñste control es compatible con archivos AVI que no contengan sonido y que no se
c
encuentren en formato comprimido o que hayan sido comprimidos utilizando la tecnología Runm
c
Lenght Ñncoding (RLÑ).
c
Ɣ Co
c rol Up3ow : Ñl control UpDown ofrece una forma sencilla pero eficaz de crear esos botones
de incremento/decremento que muchas aplicaciones para Windows muestran a la derecha de los
c
campos numéricos y que permiten al usuario incrementar o decrementar el valor contenido en el
c
campo sin más que pulsar con el Douse sobre el control.
c
c rol FlascrollBar: Ñs un sustituto de los controles HcrollBar y VcrollBar. Ñste posee
Ɣ Co
distintos
c tipos de estilos gráficos que podrá cambiar en tiempo de diseño mediante su propiedad
Appearance.
c
c rol Mo hview y 3aeTimePicker: Ñl primero es un control estilo calendario y el segundo es
Ɣ Co
unc cuadro de texto en el que podrá introducir fechas y horas. Los dos están estrechamente
c
relacionados, ya que el control DateTimePicker utiliza un control DonthView cuando el usuario
despliega
c un calendario para seleccionar una fecha.
c c
c
c
c
c
c
Bibliorafía
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c c M3 Gibrary Visal dio 6À0a Ż
c
c
c c Apre da Visal Basic 6À0 (Como si esviera e primero) Ż
c Javier arcía de Jaló * Jos
ë acio Rodríez * Alfo so Brazález
c
c
c c Capílo 7 (Gos archivos)À 3 $ Ż
c Carlos Casillo Perala
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c
c