% Megabyte s.a.c. 
G R U P O E D I T O R I A L 
Tercera Edición, Febrero 2006 
Área : Computación e Informática 
Hecho el Depósito Legal en la Biblioteca Nacional del Perú 
N° 2006-1601 (Ley N° 26905 / D.S. N° 017-98-ED) 
R.U.C. N° 20507993444 
ISBN: 9972 - 821-53 - 6 
© Edward Aburto Correa 
Gerente General___________ 
© Juan José Castañena León 
Autor 
© Gean Cario Apolinario García 
Diseño de Carátula _____ 
Visual Basic 6.0 Como Debe Ser..... 
Derechos Reservados / Decreto Ley 822 
Prohibido la reproducción total o parcial de este libro, su tratamiento informático 
la transmisión de ninguna otra forma o por cualquier otro medio ya sea electrónico, 
mecánico, por fotocopia, por registro u otros métodos sin permiso previo y por 
escrito de los titulares de Copyright. 
D istribu ción y Ventas 
Jr. Rufino Torrico 889 of. 208 - C ercado de Urna 
Telefax: 332-4110 
ww w .e d ito ria lm e g a b y te .c o m v e n ta s @ e d ito ria lm e g a b y te .c o m 
Cta. B a n c o de Crédito 
SI. 191-12591005-0-86 
$. 191-12591006-1-87 
VISUAL BASIC como debe ser. 
Dedicatoria | 
A José Domingo y María Eugenia, mis 
Padres, por darme todo lo que estuvo 
a su alcance para ser un profesional. 
A Blanca Mírela, mi esposa y a 
Juan José, José María y María José, 
mis hijos, por el amor que nos une. 
G r u p o E d it o r ia l Megabyte
'fo VISUAL BASIC como debe ser.. < 
AGRADECIMIENTO 
A todas las personas e instituciones que, una vez 
más, hicieron posible la culminación de este segundo 
libro. 
A mis alumnos, de manera especial, por ser ellos 
quienes me en señ a ro n , d ia ria m en te qué y cóm o 
escribir este libro. 
El A utor. 
► 6 G r u p o E d it o r ia l Megabyte •‘í 
VISUAL BASIC como debe ser.. . 4ÊÊÊÈb 
PRÓLOGO 
Pensando en ti, me animé por la redacción de este libro. “Visual 
Basic, como debe ser...”, es como tú: único; distinto de muchos otros 
libros de com putación, especialm ente los referentes a lenguaje de 
program ación. 
A través de mis años de experiencia como docente he notado, con 
asombro y pesar, que la mayoría de los estudiantes se “quejan” de los 
libros porque no los “entienden”, ya que sólo presentan conceptos y 
sintaxis que antes de responder a sus inquietudes y aclarar sus dudas, 
los confunden. Además, dicen, presentan una secuencia de temas que 
pocas veces se tratan en el desarrollo de la asignatura. 
“V isual B asic, com o debe s e r ...”, es un texto em inentem ente 
práctico, quizás esto sea lo medular que lo hace diferente de otros libros. 
Aquí encontrarás programas desarrollados y ejercicios propuestos que 
te ayudarán a conjugar armoniosamente la teoría y la práctica. Es, pues, 
una eficiente guía didáctica para crear aplicaciones que te serán útiles 
en la realización de tus diversas tarcas como programador en tu centro 
de trabajo. 
Sé, también, que como docente no sólo debo ser el “facilitador” del 
aprendizaje, si no que además tengo la tarea de buscar despertar en los 
alumnos su aletargado espíritu de investigación que le ayuden a no 
“contestar”, con los conocimientos, impartidos en aulas sino más bien 
que profundicen sus conocim ientos, los contrasten y los pongan en 
práctica. Para ellos y par ello presento también aplicaciones propuestas. 
G r u p o E d it o r ia l Megabyte 7 ^ | | ¡ ¡ | l
o 
VISUAL BASIC como debe ser.. . i l i l i P 
C O N T E N I D O 
Prólogo.................................................................................................................................. 7 
Indice .................................................................................................................................... 9 
Introducción ........................................................................................................................ 17 
CAPÍTULO I : ENTORNO DEL VISUAL BASIC 
Acceso al visual Basic ......................................................................................................... 21 
Ventana de In icio .................................................................................................................. 22 
¿Qué es un Proyecto?............................................................................................................ 23 
Componentes del Visual Basic.............................................................................................. 25 
Descripción de la Barra Estándar......................................................................................... 28 
Ventana de Componentes..................................................................................................... 31 
Salir del Visual Basic.............................................................................................................. 33 
Solucionando los problemas iniciales................................................................................... 34 
Filosofía de programación en Visual Basic........................................................................... 40 
Preguntas de repaso N° 01.................................................................................................... 41 
CAPÍTULO II : DESCRIPCIÓN DE LOS CONTROLES BÁSICOS 
El formulario ........................................................................................................................ 45 
¿Cómo asignar una propiedad?............................................................................................. 47 
Etiqueta (Label)..................................................................................................................... 49 
Aplicación desarrollada N° 0 1 .............................................................................................. 50 
Seleccionar controles ............................................................................................................ 51 
Modificar el tamaño de los controles................................................................................... 52 
Mover el control .................................................................................................................. 52 
Guardar o Grabar una aplicación.......................................................................................... 54 
Ventana para grabar un formulario....................................................................................... 55 
Ventana para grabar un proyecto......................................................................................... 55 
Abrir o recuperar una aplicación ......................................................................................... 56 
Ejecutar una aplicación ........................................................................................................ 57 
Finalizar una aplicación ....................................................................................................... 58 
Grabar un proyecto en un diskette....................................................................................... 58 
Crear un archivo ejecutable (*.EXE).................................................................................... 59 
¿Qué es un acceso directo?.................................................................................................... 59 
Crear un acceso directo........................................................................................................ 60 
Caja de texto (Text) ............................................................................................................ 64 
I P I ^ G r u p o E d i t o r i a l M e g a b y t e 9 m »
VISUAL BASIC como debe ser... 
Aplicación desarrollada N° 02 .................................................. .......................................... 65 
Aplicación propuesta N° 01................................................................................................. 67 
Aplicación desarrollada N° 03.............................................................................................. 67 
Botones de Comandos (Command)..................................................................................... 69 
Aplicación desarrollada N° 04............................................................................................. 70 
Escribir instrucciones para los controles............................................................................. 71 
Ventana de código o de instrucciones................................................................................... 71 
Principales eventos .............................................................................................................. 72 
Visual Basic le ayuda a escribir los programas..................................................................... 75 
Aplicación propuesta N° 0 2 ................................................................................................. 75 
Trabajando con os nombres de los controles...................................................................... 76 
Aplicación desarrollada N° 05.............................................................................................. 77 
Errores más com unes........................................................................................................... 80 
Preguntas de repaso............................................................................................................. 81 
CAPÍTULO III : ELEMENTOS DE LA PROGRAMACIÓN 
Procedimientos y funciones ................................................................................................ 85 
Sintaxis de un procedimiento............................................................................................... 87 
Sintaxis de una función......................................................................................................... 88 
Parámetros por referencia .................................................................................................... 89 
Parámetros por valor ............................................................................................................ 89 
Creación de procedimientos a nivel de formulario ............................................................ 90 
Llamar a un procedimiento................................................................................................... 91 
Constantes ............................................................................................................................. 92 
Variables................................................................................................................................. 92 
Tipos de variables ................................................................................................................ 94 
Diferencia entre Dim. y Static ............................................................................................. 95 
Aplicación Desarrollada N° 0 6 ............................................................................................ 97 
Ejemplo de una variable a nivel de procedimiento ............................................................. 98 
Ejemplo de una variable a nivel de formulario ................................................................... 98 
Operadores aritméticos ........................................................................................................ 99 
Orden de ejecución de los operadores................................................................................. 99 
Comentarios .......................................................................................................................... 100 
Aplicación desarrollada N° 0 7 ............................................................................................. 101 
IfT h e n ................................................................................................................................... 106 
Operadores lógicos............................................................................................................... 107 
M sgB ox.................................................................................................................................. 109 
Iconos de la función M sgBox.............................................................................................. 110 
Aplicación desarrollada N° 08 ............................................................................................. 112 
Consistencia de datos ........................................................................................................... 116 
E d it o r ia l M e g a b y t e # ^ 
VISUAL BASIC como debe ser... 
Aplicación desarrollada N° 0 9 ............................................................................................ 116 
InputBox ............................................................................................................................... 122 
Contadores y acumuladores ................................................................................................ 125 
Aplicación desarrollada N° 1 0 ............................................................................................ 125 
Aplicaciones propuestas N° 04 y 05 .................................................................................. 130 
IIF ........................................................................................................................................... 131 
SelectCase............................................................................................................................. 132 
Aplicación desarrollada N° 11.............................................................................................. 133 
Aplicación desarrollada N° 12 ........................................................................................... 137 
Aplicación propuesta N° 06 ............................................................................................... 143 
Choose................................................................................................................................... 143 
Funciones de cadena............................................................................................................ 144 
Aplicación desarrollada N° 13 ............................................................................................ 145 
Funciones tipo fecha ............................................................................................................ 146 
Aplicación desarrollada N° 1 4 ............................................................................................. 146 
Función DateAdd .............,.................................................................................................. 148 
Función DateDiff.................................................................................................................. 148 
Función DateAdd ................................................................................................................. 150 
Funciones tipo hora .............................................................................................................. 152 
Funciones Numéricas............................................................................................................. 152 
Aplicación desarrollada N° 15 ............................................................................................. 154 
Función S h ell........................................................................................................................ 157 
Aplicación desarrollada N° 16 ........................................................................................... 158 
For Next ................................................................................................................................ 159 
Do Loop ................................................................................................................................ 159 
D oEvenst............................................................................................................................... 159 
Aplicación desarrollada N” 17.............................................................................................. 160 
A rray...................................................................................................................................... 162 
Aplicación desarrollada N° 1 8 ............................................................................................. 163 
Crear un array de controles ................................................................................................. 164 
Aplicación desarrollada N° 19 ........................................................................................... 165 
Aplicación desarrollada N° 2 0 ............................................................................................ 169 
Aplicación desarrollada N° 21 ............................................................................................ 174 
Errores más com unes............................................................................................................ 178 
Preguntas de repaso N° 0 3 ................................................................................................... 179 
CAPÍTULO IV : MEJORANDO EL ASPECTO DE LOS FORMULARIOS 
Control Frame (Marco) ....................................................................................................... 183 
Asignando colores................................................................................................................. 184 
Qbcolor ................................................................................................................................. 184 
G r u p o E d i t o r i a l Megabyte H
A f c VISUAL BASIC como debe ser.. . <5>§ 
RGB ................................................. .................................................................................... 184 
Control Shape (Figuras)........................................................................................................ 185 
Control Line (Línea) ............................................................................................................ 186 
Control PictureBox (Caja de Imagen) ................................................................................ 187 
Método gráficos ................................................................................................................... 189 
Aplicación desarrollada N° 22 ............................................................................................. 190 
Buscando gráficos en la computadora .............................................................................. 193 
Control Image ....................................................................................................................... 195 
Control Timer ....................................................................................................................... 195 
Aplicación desarrollada N° 2 3 ............................................................................................ 196 
Aplicación desarrollada N° 2 4 ............................................................................................ 198 
Control ImageList (Lista de Im ágenes).............................................................................. 200 
Manejo de las imágenes en el control ImageList............................................................... 202 
Aplicación desarrollada N° 25............................................................................................. 203 
Función LoadPicture............................................................................................................. 203 
Control Calendar (Calendario)............................................................................................ 204 
Aplicación desarrollada N° 26.............................................................................................. 205 
Control StatusBar (Barra de Estado)................................................................................... 206 
Ejemplo de una aplicación usando el control StatuBar ..................................................... 209 
Pantallas de presentación ..................................................................................................... 211 
Control O L E .......................................................................................................................... 211 
Activar una presentación en Power Point ......................................................................... 212 
Objetos insertables................................................................................................................ 214 
Controles Hscroll y Vscroll ................................................................................................ 215 
Aplicación desarrollada N° 27 ............................................................................................. 215 
Control ProgressBar............................................................................................................. 218 
Control Slider......................................................................................................................... 218 
Preguntas de repaso N° 04 .................................................................................................. 219 
CAPÍTULO V : INGRESO PERSONALIZADO DE DATOS 
ComboBox............................................................................................................................. 223 
Aplicación desarrollada N° 28 ............................................................................................. 224 
Aplicación propuesta N° 07 ................................................................................................ 225 
Aplicación desarrollada N° 29.............................................................................................. 226 
Aplicación propuesta N° 08 ............................................................................................... 229 
Aplicación desarrollada N° 31 ............................................................................................ 230 
Aplicación desarrollada N° 32 ............................................................................................ 233 
OptionButton ....................................................................................................................... 236 
Aplicación desarrollada N° 33 ............................................................................................. 237 
Aplicación desarrollada N° 34 ............................................................................................ 239 
l j § i ¡ || |> 12 G r u p o E d it o r ia l Megabyte ^ f||¡|§ 
VISUAL BASIC como debe ser... 
CheckBox.............................................................................................................................. 240 
Aplicación desarrollada N° 35 ............................................................................................ 240 
ListBox .................................. .............................................................................................. 243 
Aplicación desarrollada N° 36 ............................................................................................ 244 
Calculando los días Probables de Fertilidad....................................................................... 246 
UpDown ..... ......................................................................................................................... 248 
MaskEdBox ......................................................................................................................... 250 
Aplicación desarrollada N° 37 .............................................. ............................................... 252 
SendKeys ............................................................................................................................. 257 
Aplicación desarrollada N° 38 ............................................................................................ 258 
Aplicación desarrollada N° 39 ............................................................................................ 261 
Instrucción With ................................................................................................................... 264 
Preguntas de repaso N° 05 .................................................................................................. 265 
CAPÍTULO VI : MANEJO DE VARIOS FORMULARIOS 
Agregar Formularios a una aplicación................................................................................. 269 
Quitar formularios de una aplicación ................................................................................. 271 
Seleccionar un formulario a ejecutar prim ero..................................................................... 271 
Instrucciones para manejar formularios ............................................................................. 272 
Aplicación desarrollada N° 40 ............................................................................................ 273 
Aplicación desarrollada N° 4 1 .............................................................................................. 278 
Errores más com unes............................................................................................................ 280 
Preguntas de repaso N° 06 .................................................................................................. 281 
CAPÍTULO VII : DISEÑO DE MENU 
Editar EN menú .................................................................................................................... 295 
Instrucciones PopupMenú .................................................................................................. 298 
Control ToolBar ................................................................................................................... 303 
Aplicación desarrollada N° 43 ............................................................................................ 305 
SsTab...................................................................................................................................... 309 
Errores más com unes............................................................................................................ 311 
Preguntas de repaso N° 07................................. .................................................................. 312 
CAPÍTULO VIII : MANEJO DE ARCHIVOS 
DriveListBox .................................................. ..................................................................... 315 
DirListBox ........................................................................................................................... 315 
FileListBox ........................................................................................................................... 315 
Aplicación desarrollada N° 44 ........................................................................................... 316 
Aplicación desarrollada N° 45 ........................................................................................... 317 
CommoDialog ...................................................................................................................... 319 
l i l i l í ^ G r u p o E d i t o r i w Megabyte 13
_______________ , . o 
^É iÍÉ É ÍÍ’' VISUAL BASIC como debe ser... 
Aplicación desarrollada N° 46 ........................................................................................... 323 
Uso de la im presora............................................................................................................. 325 
Objeto printer ....................................................................................................................... 326 
Método Print ....................................................................................................................... 327 
Instrucción T a b ..................................................................................................................... 327 
Instrucción S p c ..................................................................................................................... 328 
Método PrintForm .............................................................................................................. 328 
Aplicación desarrollada 47 ................................................................................................... 328 
Comandos del D O S ............................................................................................................. 331 
Control de Errores ............................................................................................................... 332 
On Error ................................................................................................................................ 332 
Objeto E r r ............................................................................................................................. 332 
Errores interceptables más comunes ................................................................................. 333 
Control RichTextBox........................................................................................................... 334 
LoadFile................................................................................................................................. 335 
SaveFile.................................................................................................................................. 335 
Funciones A P I...................................................................................................................... 336 
Apagar la computadora automáticamente ......................................................................... 337 
Crear discos de instalación .................................................................................................. 338 
Control ActiveMovie ........................................................................................................... 340 
Crear Archivos de Ayudas................................................................................................... 341 
CAPÍTULO IX : MANEJO DE BASE DE DATOS 
Base de d a to s......................................................................................................................... 347 
Tablas...................................................................................................................................... 347 
Registros y Campos ............................................................................................................. 347 
Crear una Base e Datos usando Visual Basic........................... ......................................... 349 
Tipos de Recordset ............................................................................................................... 351 
Crear una Base de Datos usando Microsoft Access ......................................................... 354 
Control Data ......................................................................................................................... 358 
Objeto Recordset .................................................................................................................. 358 
Aplicación desarrollada N° 48 ............................................................................................. 359 
Aplicación desarrollada N° 49 ............................................................................................. 362 
Control DbList ...................................................................................................................... 364 
Consulta de registros ........................................................................................................... 364 
Aplicación desarrollada N° 50 ............................................................................................. 365 
Método MoveFirst .............................................................................................................. 365 
Método Nomatch ................................................................................................................. 366 
Mantenimiento de registros ............................................................................................... 367 
Aplicación desarrollada N° 51 ............................................................................................ 367 
G r u p o E d it o r ia l M e g a b y t é * 
VISUAL BASIC como debe ser... 
Asistente VB para base de datos ........................................................................................ 371 
Control D bcom bo................................................................................................................. 372 
Aplicación desarrollada N° 52 ........................................................................................... 372 
Aplicación propuesta N° 09 ................................................................................................ 373 
Control D bgrid...................................................................................................................... 374 
Aplicación desarrollada N° 53 ............................................................................................. 376 
Instrucciones S Q L ................................................................................................................ 376 
Aplicación desarrollada N° 54 ............................................................................................ 379 
Aplicación desarrollada N° 55 ............................................................................................. 383 
Variables tipo Recordset...................................................................................................... 386 
Aplicación desarrollada N° 56 ............................................................................................ 388 
Aplicación desarrollada N° 57 ............................................................................................ 392 
Modificar varios registro a la v e z ........................................................................................ 397 
Métodos de Transacciones .................................................................................................. 397 
Aplicación desarrollada N° 58 ............. ............................................................................... 397 
Manejo de fo to s.................................................................................................................... 398 
Aplicación desarrollada N° 59 ............................................................................................. 398 
Manejo de varias tablas ....................................................................................................... 402 
Uniendo tablas ..................................................................................................................... 404 
Aplicación desarrollada N° 6 0 ............................................................................................. 406 
Errores más com unes............................................................................................................ 410 
Preguntas de repaso N° 09 .................................................................................................. 411 
CAPÍTULO X : PROGRAMACIÓN DAO 
Objeto de acceso a datos ..................................................................................................... 416 
Métodos para manejar base de datos .................................................................................... 417 
Antes de programar con D A O ................................................................................................420 
Control MsFlexgrid................................................................................................................. 425 
Otras instrucciones SQL ....................................................................................................... 433 
Control MsChart .................................................................................................................... 440 
CAPÍTULO XI : CREACIÓN DE REPORTE 
Pasos para crear un rep o rte................................................................................................... 447 
Reportes tipo Estándar .......................................................................................................... 447 
Vincular Tablas....................................................................................................................... 448 
Creación de índices................................................................................................................ 450 
Ordenación de los registros ................................................................................................... 451 
Totalizar o contar registros .................................................................................................. 452 
Estilo del reporte .................................................................................................................. 453 
Control Cristal Report .......................................................................................................... 453 
¡I||Íj^ G r u p o E d it o r ia l Megabyte 15 « ¡ g »
VISUAL BASIC como debe ser. 
CAPÍTULO XII PROGRAMACIÓN ADO 
Conexión L ocal..................................................................................................................... 461 
Conexión Remota .................................................................. .............................................. 461 
ODBC .................................................................................................................................... 461 
Archivos de Vínculos OLE-DB........................................................................................... 461 
Configurar una conexión ODBC......................................................................................... 462 
Configurar una conexión OLE-DB...................................................................................... 466 
El control A D O ..................................................................................................................... 467 
Uso de la propiedad ConnectionString .............................................................................. 468 
Uso de la propiedad RecordSource..................................................................................... 470 
Errores más comunes ............................................................................................................. 471 
Control DataGrid ................................................................................................................ 474 
Control DataList ................................................................................................................. 474 
Control DataCombo ...............................................................................................................474 
Control DTPicker ....................................................................................................................491 
EIDataReport ....................................................................................................................... 498 
Controles del DataReport ................................................................................................... 500 
Propiedades para un reporte ............................................................................................... 501 
Métodos del DataReport ..................................................................................................... 501 
DataEnvironment ................................................................................................................ 508 
Objeto Connection ................................................................................................................. 510 
Objeto Command ................................................................................................................. 511 
Uso del Data Report con Data Enviroment ...................................................................... 513 
El Control MSHFlexGrid..................................................................................................... 514 
Uso de comandos Jerárquicos en MSHFIexGrid .............................................................. 515 
Reporte de comandos Jerárquicos ....................................................................................... 518 
Conexión de una Base de Datos mediante Instrucciones .................................................. 520 
Método Execute..................................................................................................................... 528 
Instrucciones SQL para consultas de Acción .................................................................... 529 
Instrucciones DLL ................................................................................................................ 531 
1 8 1 1 ^ 1 6 G r u p o E d i t o r i a l Megabyte 
VISUAL BASIC como debe ser. .. 
INTRODUCCIÓN 
Este libro esta diseñado de tal manera que sirve de apoyo y guía para estudian­tes 
de programación de computadoras y para un autoaprendizaje porque ha sido 
escrito con la experiencia que tiene el autor en el dictado del curso y sobre todo 
con la experiencia de alumnos en su proceso de aprendizaje, observando sus difi­cultades 
y escuchando sus preguntas y sugerencias. 
Visual Basic Como Debe Ser..., contiene: 
y SECUENCIA ADECUADA DE TEMAS 
Obtenida de los años de experiencia que tiene el autor en el dictado del 
curso con la finalidad que no se pierda el interés en su aprendizaje, 
jy DISKETTE GRATIS 
Que contiene los principales programas desarrollados en este libro para dar 
ejemplos mas rápidos y apoyar al lector para que pueda desarrollar aplica­ciones 
mas avanzadas, 
y APLICACIONES PROPUESTAS Y PREGUNTAS DE REPASO 
Para que el lector demuestre en forma práctica los conocimientos adquirí 
dos y autoevaluarse con la finalidad de ir midiendo los conocimientos 
adquiridos. 
^ TEMAS DE IMPORTANCIA PARA UN CENTRO DE TRABAJO. 
Porque se prepara al lector para desarrollar por sí solo aplicaciones que se 
presenten en un centro de trabajo, como por ejemplo: 
Q J Controles ActiveX 
Q j Creación de archivos de ayuda 
Q j Manejo de impresoras 
y j Base de datos 
Q J Instrucciones SQL 
Q j Programación ADO 
QIJ Uso de DataEnvironment y DataReport 
¡ Y Mucho más! 
' G r u p o E d i t o r i a l Megabyte 17
^ÉÍÍÍÉÉI» VISUAL BASIC como debe ser... 
ANTES DE EMPEZAR 
Visual Basic es un programa muy fácil de aprender y con este libro no es 
necesario que usted tenga conocimientos de programación, pero si es muy 
importante que sepa el manejo básico de cualquier versión del Windows, 
especialmente el manejo de Mouse. 
Antes de empezar usted debe saber: 
Manejar el Mouse. 
Abrir y cerrar ventanas. 
^ Minimizar, maximizar y restaurar ventanas. 
''b Mover y modificar el tamaño de las ventanas. 
Manejar el teclado. 
Este libro le enseña con una secuencia adecuada brindando en cada párrafo un 
conocimiento mas acerca de Visual Basic, por eso es muy importante que los lea sin 
apresuramiento y en el mismo orden en el que ha sido escrito. 
No olvide de desarrollar las preguntas de repaso y las aplicaciones propuestas 
antes de pasar al siguiente capítulo. 
“Un libro es el mejor aliado para la formación de un buen Profesional” 
G r u p o E d it o r ia l Megabyte ^ f¡||j|| 
CAPITULO I 9 '" i" in )■ !■ ■ — — — 
Mic(psoft Visual B asic 
fiew j L>3.u.y I I 
5 l <s¡V 
ActiveX m A-rtiv^y r*U ArtivíX v*5 Appfcatkr. «, 
Control W¿ard H 
VB Lrierpfis« Adiri MwtX Active!-’ 
Etftkx» Doajmwt Cemriás OU Document V/.Î  
1l 
I ^.Pioyectol - Micjosoft Visual Basic [diseño] H S B l 
Archivo Edición Ver Proyecto Rumato depuración Ejecutar Consulta Diagrama Herramientas Complementos Ventana Ayuda 
$ • ¡3 ' & B > 
■ 
0 1 D 
- ^ Proyectol (Proyectol) 
|Forml Form J : 
Aïabética | Por categorías j 
(Nombre) Formi + - 
Appearance 1-30 
AutoRedraw False 
iackColor □ &H8000000F8 
iorderStyle 2 • Sizable 
Caption Formi 
ClipControls True 
ControlBox True 
ENTORNO 
DEL 
VISUAL BASIC
CAPITULO I: Entorno Del Visual Basic 4 
Visual Basic es un sistema diseñado para crear aplicaciones gráficas 
de una manera rápida y sencilla las cuales se ejecutan bajo Windows. 
El acceso a Visual Basic es muy sencillo y depende de la carpeta 
donde lo instaló o de su versión. P o r ejem plo: 
Accesorios ► 
_ r) Corel5 ► 
_rr) Inicio ► 
r j 3SBEESSSB0ÉI AH T ext Viewer 
.rj] Microsoft Visual FoxPro ► ijjjj Application Performance Explorer 
. 7^ Powersoft 5.0 ► jO^ Application Setup Wizard 
The Hacker Anti-Virus > 0 Automation Manager 
^ Cuaderno de Microsoft Books Online 
Explorador de Windows Crystal Reports 
Internet Explorer & Readme 
Internet Mail RemAuto Connection Manager 
Internet News ■fe 
^ Microsoft Access 
^ Microsoft Excel 
'J2 Microsoft NetMeeting 
Microsoft Outlook 
Microsoft Photo Editor 
■i*l Microsoft PowerPoint 
ß j Microsoft Word 
m MS-DOS 
jjri) A c c e îo ric î * 
Adobe » 
. - j j Adobe A r m b * 4 0 * 
CorelDRAW 8 » 
Hwiamterrfa: de M ia oso it Office » 
H P DeskJet S a » 840C v2 3 * 
»«Cb » 
ä « rte n rt Explore. 
I r j MiCttÄoft Offcce ^ » P ro fe s io n a l ► 
A b * f o m e n t o de Olhce . r j Microsoft Ofhce Ï o d * » 
3 ] Nuevo documento de Office . r j M erosoft SQL Serve? 7.0 * 
< 4 l W inZip . - j M ê ro iô fr W efcPuW iîhirçj » H erram iertat errçm ariates de M ie to » » VStwIS» 
PLATINUM W orkf/iew h t iníeinel Explore» » . r j MicrQ:oft Visual SourceSafe 
, Services er. ¡inea * ' i j Microsoft Visual ßawe 6 Û 
_¿J Eavortos ► 
. r j S jfca te * 0 J M cro :oft Visual FoxPro SO 
j j , w * « * " • ^ 
ä j f i . v c . W Æ ic 
^ A)uda ¿I 
£ ] E r — £ W - n H E , t o . 
£ MS-DOS 
S i* Apagar es iiî«n >3 O u llcx* Ewpress 
In ic io « Ô § ^ V - â lo flfc W « fc s E R « ¡r> E R X 3 5 » 
¡ |j |¡ ||^ G r u p o E d i t o r i a l Megabyte 21 4ÊS»
<Q> 
m X m / VISUAL BASIC como debe ser... 
Según como está configurado el Visual Basic, antes de ingresar a su 
pantalla principal Ud. puede visualizar lo siguiente: 
M* H'i crosoft^ Visual Basic 
_Ll2<J 
New j Existing | Recent ) 
¿á Sí Ì 7 J1t7 « V 
ActiveX EXE ActiveX DLL ActiveX 
Control 
VB Application 
Wizard 
¡él SI S i [ <é l VB Enterprise 
Edition 
Controls 
Addin ActiveX 
Document DLL 
ActiveX 
Document EXE 
Cancelar 
Ayuda 
Don't show this dialog in the future 
Elija STANDARD EXE para ejecutar el Visual Basic en modo Estándar 
y luego haga click en el botón ABRIR. 
N O TA: 
Para visualizar o no esta ventana cada vez que Ud. ingresa al Visual 
Basic, debe hacer lo siguiente: Una vez que ingresó al Visual Basic haga 
click en la opción TOOLS (Herramientas) de la barra de menú y elija 
O P T IO N S ... De la v en tan a que se v isu a liz a activ e la p ág in a 
ENVIRONMENT (Entorno)y active el botón P ro m p t F or P roject (Pre­guntar 
por un Proyecto)para que se visualice esta ventana cada vez que 
ingresa o el botón C reate D efault P roject (Crear un proyecto predetermi­nado) 
para que no se visualice. 
m 22 G r u p o E d it o r ia l Megabyte< 
CAPITULO I: Entorno Del Visual Basic 
La pantalla tiene tres hojas: New, Existing y Recent. 
La hoja NEW, permite crear un formulario en blanco para empezar a 
diseñar una nueva aplicación (Ver la figura anterior). 
La hoja Existing muestra todos los proyectos creados y permite abrir 
cualquiera de ellos: 
rrrn 
M ic ro so ft Visual Basic 
New Existing | Recent | ----------------------------------------------------- 
Buscar en: | _ J Vb 
J CKsvr 
J Help 
J Nueva carpeta 
JO dbc 
J report 
J Repostry 
j samples 
J Setup 
J setupkit 
J T empiate 
J Tsql 
j vbonline 
j L I 
_ j Winapi 
u J Wizards 
amer.vbp ^ANA.vbp 
cli..vbp 
% |C H IQ U I.virr 
j J 
Nombre de archivo: (j 
Archivos de tipo: [Project Files (“ vbp;".mak;".vbg) 
A,brir 
Ayuda 
r Doni show tNs dialog in thè future 
C a silla q u e perm ite o no v isu alizar esta 
p an talla al ingresar al V isual B asic 
S e le c cio n a las 
h o ja s 
S e le c c io n a 
u n a c a rp e ta 
___ M u e stra los 
p ro y e c to s q u e está n 
m ás a la d erecha 
S e le c cio n a el 
tip o de a rc h iv o 
qu e d esea ver. 
¿ QUÉ ES UN PROYECTO ? 
Es toda aplicación que se desarrolla en Visual Basic y está compuesto 
por formularios, módulos, etc. Para abrir un proyecto (visualizar uno que ya 
existe) siga uno de los siguientes pasos: 
• Haga doble click en el nombre del proyecto. 
■ Selecciónelo haciendo un click en él y luego haga click en el botón 
Abrir. 
• Escriba el nombre del proyecto siempre y cuando se encuentre en la 
carpeta activa y luego haga click en el botón Abrir. 
G r u p o E d it o r ia l Megabyte 23
¿ 5 9 ^ VISUAL BASIC como debe ser. .. 
La hoja Recent muestra todos los proyectos activados recientemente y 
nos da la posibilidad de abrirlos. 
New Project 
M ic ro s o ft ■ Visual Basic 
New | Existing R ecent 
File 
%¿CHIQUI 
garner 
IÜoMAR 
PROJECT 1 
I^LEO 
% | tALLER~1 
Folder 
C:Archivos de programaDev5tudioVB 
C:Archivos de programaDev5tudioVB 
C:Archivos de programaDev5tudioVB 
C:Archivos de programaDevStudioVB 
C :ARCHIV~ 1DEVSTU~ 1 VB 
C :  ARCHI V~ 1 DEVSTU~ 1  VB 
C : ARCHI V~ 1 DEVSTU~ 1 VB 
J 
j T 1 
Abrif 
Cancelar 
Ayuda 
P D on't show this dialog in the future 
Seleccione el nombre del proyecto y haga click en el botón Abrir. 
MUY IMPORTANTE 
Si en cualquiera de las 3 páginas Ud. selecciona la opción CANCELAR, 
ingresará al Visual Basic, pero no podrá ver ninguno de sus componentes. 
Para solucionar este problema puede seguir cualquiera de los siguientes 
pasos: 
• De la opción FILE (Archivo) elija New Project. 
• Pulse las teclas < CONTROL > + < N > 
24 G r u p o E d it o r ia l Megabyte 
CAPÍTULO I: Entorno Del Visual Basic 
ENTORNO DEL VISUAL BASIC 
Al ingresar al Visual Basic se visualiza la siguiente pantalla: 
Barra de Titulo 
Barra de Menú Barra Estándar 
Formulario 
'^ r Proyecto1 - Microsoft Visual Basic [diseño] 
Archivo Edición Ver Provecto Formato Depuración Ejecutar Consulta 
¡3 ' 3 0 ► ■ 
Diagrama Herramientas Component os Ventana Ayuda 
f l 15 * 'i A 
|i£ Propiedades - Formi m m m 
jF o rm l Form zi 
Alfabética | categorías )-------- 1 
(Nombre) 
Formi 
Appearance 
1 - 3D 
AutoRedraw 
False 
BackColor 
□ &H80G0000F8 
BorderStyle 
2 - Sizable 
Caption 
Formi 
ClipControls 
True 
ControIBox 
True 
zi 
Proyecto 1 (P royecto 1) 
03 Formularios 
G Forml (Forml) 
Caja de 
Herramientas 
Ventana de 
Proyecto 
Ventana de 
Propiedades 
Ventana de 
Ubicación del 
Formulario 
G r u p o E d it o r ia l Megabyte 25
é B B b VISUAL BASIC como debe ser... 
BARRA DE MENU 
'-in>x| 
»ü, P royeclo! - Microsoft Visual Basic {diseño] 
Archivo Edición Ver Proyecto Formato Depuración Ejecutar Consulta Diagrama Herramientas Complementos Ventana Ayuda 
Contiene las órdenes que se utilizan para desarrollar una aplicación. Las 
opciones que se visualizan dependen de la versión del Visual Basic. 
M 
DESCRIPCIÓN DE LA OPCIÓN ARCHIVO 
Una de las opciones de la Barra de menú mas utilizada es la opción 
Archivo la cual contiene: 
N uevo Proyecto 
Crea un nuevo proyecto. 
A b rir Proyecto 
Abre un proyecto existente 
A g reg ar Proyecto 
Adiciona uno de los proyecto a la aplicación 
Q u ita r Proyecto 
Borra uno de los proyectos activados 
G u a rd a r Proyecto 
Graba un Proyecto diseñado 
G u a rd a r Proyecto Como 
Graba un proyecto con otro nombre 
G u a rd a r F o rm l 
Graba el formulario 
G u a rd a r F o rm l como 
Graba el formulario con otro nombre 
Im prim ir 
Imprime el proyecto o lo seleccionado 
G e n e ra r P ro y ecto l.ex e 
Crea el proyecto ejecutable 
Salir 
Sale del Visual Basic 
Para eleg ir cu alq u ier opción haga clic en dicha opción o utilice 
las teclas rápidas que algunas de ellas tienen, por ejem plo: para 
salir de V isual Basic puede usar A lt + Q. 
2 6 G r u p o E d i t o r i a l Megabyte 
CAPÍTULO I: Entorno Del Visual Basic 
VENTANA DE UBICACIÓN DEL FORMULARIO 
Se activa haciendo click en: 
■a 
Se u tiliza para in d icar la 
posición del formulario en la 
pantalla cuando no queremos 
que el formulario ocupe toda 
la pantalla. 
BARRA ESTANDAR 
,M- • B C L! Cr>. t- !*■’ -b W * ,S. 
Contiene los botones que perm iten realizar las tareas m ás com unes 
de u n a m an era ráp id a como: grabar, ab rir, ejecu tar un program a, 
finalizar un program a, etc. 
NOTA : Si no visualiza la Barra Estándar debe hacer click en la 
opción VIEW (Ver) de la barra de menú, luego en ToolBars 
y activar Estándar. 
jjylgp Grupo Editorial Megabyte 27
O 
% VISUAL BASIC como debe ser... 
DESCRIPCION DE LA BARRA ESTANDAR 
Crea un Nuevo Proyecto 
Crea un Nuevo Formulario 
Activa el Editor de Menú 
Abre un Proyecto 
[O Graba un Proyecto 
^ Ejecuta un Proyecto 
Finaliza un Programa 
Activa la Ventana de Proyecto 
tiO Activa la V. de Propiedades 
t í 
Ubicación del Formulario 
Activa el Examinador Browse 
Activa la Caja de Herramientas 
PRINCIPALES TECLAS RAPIDAS 
CTRL + N Crear un Proyecto. 
CTRL + O Abre un Proyecto. 
CTRL + S Graba un Formulario. 
CRTL + P Activa la Ventana para Imprimir. 
CTRL + R Muestra la Ventana de Proyecto. 
CRTL + T Activa la Ventana de Componentes. 
CRTL + D Agrega un Archivo. 
SHIFT + F7 Muestra el Formulario. 
ALT + Q Sale del Visual Basic. 
F4 Muestra de la Ventana de Propiedades. 
F5 Ejecuta un Proyecto. 
F8 Ejecuta mostrando cada instrucción. 
mm » G r u p o E d it o r ia l M e g a b y t e « * 
CAPÍTULO I: Entorno D el Visual Basic Ü IÜ P 
EL FORMULARIO 
Es la ventana principal, porque sirve de fondo para los controles que se 
“dibujan” en una aplicación como cajas de textos, etiquetas, etc. Se activa 
pulsado SHIFT + F7 o CTRL + R y luego Doble Click en el nombre del 
formulario que desea visualizar. 
CAJA DE HERRAMIENTAS 
General Se activa haciendo click en: 
* SS A 
[ibi " _J 
17 í? [ Ü 
1=1 il ^ Contiene los controles que se dibujan 
— zl en el form ulario para desarrollar 
© o _J aplicaciones. 
B  
H ü 
G r u p o E d it o r ia ! Megabyte 29 m m
m m VISUAL BASIC como debe ser,. . 
La caja de herramientas anterior contiene los controles básicos del Visual 
Basic y se visualizan cuando se ingresa en modo E stándar (icono 
STANDARD EXE) " ¡ 
New | EKisting | R e c e n t] 
S 3 ¿ 7 
S S ActiveX EXE ActiveX DLL 
Iw 
ActiveX 
Control 
VB Application 
Wisard 
VB Enterprise 
Edition 
Controls 
Ad din ActiveX ActiveX 
Document DLL Document EXE 
. n M 
General 
M A lib i □ : 
_ l w ü m 
« i n i i 
zl © □ L J 
m o Q 
igEa 
033 m m P 
1 1 § s IM aA 
; ~ r ni f e 
ôDDôO" (S 
tr. M % I T 
ÈV íh â dS 0 
ÜS $2 © ##l 
P a ra in g re s a r al V isu al B asic y 
visualizar la caja de herramientas con los 
controles más avanzados debe elegir el 
icono VB E n terp rise E dition C ontrol 
(Visual Basic Edición Em presarial). Si 
Ud., ya ingreso en modo Estándar y desea 
utilizar los controles avanzados, debe 
hacer click con el botón derecho del 
mouse en la caja de herram ientas, elegir 
la o p c ió n C o m p o n e n te s y lu eg o 
seleccionar el nom bre del control que 
desea visualizar. Estos nombres se indican 
a m ed id a q u e los c o n tro le s se van 
explicando. 
3 0 G r u p o E d i t o r i a l M e g a b y t e « * 
CAPITULO I: Entorno Del Visual Basic 
VENTANA DE COMPONENTES 
Al hacer un click con el botón derecho del mouse en cualquier parte de 
la caja de herramientas para llamar a controles que necesitamos y no se 
encuentran activos, se visualiza el siguiente menú: 
G eneral 
M A [5bi 
_ j 17 a-ü 
ü * * e| 
C3 
g5> 
C o m p o n e n te s .. 
A g re g a r fic h a .. 
A coplable 
O culta r 
Al hacer click en la opción Componentes se visualiza: 
E S 
C o n tr o le s J D i s e ñ a d o r e s | O b j e t o s i n s e r t a b l e s ] 
: : W IN D O W 5 S Y S TEM r e f e d i t . dll 
l~ i C o n tro l A c tiv e M o v ie d e M ic ro so ft 
n C o n tro l d e a d m in is tr a c ió n d e im a g e n d e W a n g 
n C o n tr o l d e d ig ita liz a c ió n d e im a g e n d e W a n g 
n C o n tr o l d e e d ic ió n d e im a g e n d e W a n g 
C J C o n tr o l d e p á g in a e n m in ia tu r a d e im a g e n d e W 
i I C r y s ta l R e p o r t C o n tr o l 4 . 6 
n c tC lip OLE C u s to m C o n tr o l m o d u le 
I""! c tC lo c k OLE C u s to m C o n tr o l m o d u le 
c t D a t e OLE C u s to m C o n tr o l m o d u le 
D c tG a u g e OLE C u s to m C o n tr o l m o d u le 
c tM e te r OLE C u s to m C o n tr o l m o d u le 
j... j c tS lid e OLE C u s to m C o n tr o l m o d u le J¡ J____________________1 -lT 
_U ^ ££ 
,V"■lí xfro_- 9SBB2 
<*rr. 
F~l [553 
I E le m e n to s s e le c c io n a d o s 
C : W IN D O W S S Y S T E M ref e d i t . dll 
U b icació n : C : W IN D O W S S YST E M re f e d i t . dll 
Para activar o llamar a un control, busque su nombre y haga click en su 
casilla hasta que se muestre un Aspa y luego haga click en el botón Aceptar. 
S ' Casilla indicando que el control se encuentra activo. 
E d i t o r i a l Megabyte 31 R i
VISU AL B A SIC como debe ser... 
VISUAL BASIC como debe ser... 
VENTANA DE PROPIEDADES 
È 
¡Form i Form A 
Alphabetic | Categorized j 
(Name) Formi 
Appearance 1 - 3D 
AutoRedraw False “ ' 
□ _▼] 
BorderStyie 2 - Sizable 
Caption Formi 
ClipControls True 
ControlBox True 
DrawMode 13-Copy Pen ¡ 
r w -.„ .c i- . J.-. n c j-.i-.A ...J 
Se activa haciendo click en: 
C o n tien e las p ro p ied ad es o 
características de cada uno de los 
controles. Estas propiedades se pueden 
cambiar según lo requiera. También se 
activa pulsando la tecla <F4>. 
VENTANA DE PROYECTO 
Project - ProjecH É 
]ÿ> Project 1 (Project 1) 
B -& Forms 
Se activa haciendo click en: 
Contine todos los formularios, módulos, 
etc. que form an una ap licació n . 
También se activa pulsando <CTRL> 
+ <R>. 
32 G r u p o E d it o r ia l Megabyte^ 
CAPÍTULO 1: Entorno Del Visual Basic 
SALIR DEL VISUAL BASIC 
Para salir del Visual Basic puede realizar cualquiera de los siguientes pasos: 
1. Haga un click en el botón Cerrar de la ventana principal del Visual 
Basic. 
Botón Cerrar-------- 
* S 3 3 E E £ 
File Edit View Project Format Debug Run lo o ls Add-Ins Window Help 
2. De la opción F IL E (Archivo) de la barra de menú elija E X IT (salir). 
3. Pulse las teclas ALT + Q 
4. Pulse las teclas ALT + F4 
NOTA: Si al salir de visual Basic se muestra el siguiente mensaje: 
Visual Basic le pregunta si desea grabar los cambios realizados en el 
proyecto. Si no es im portante lo que tiene en el proyecto o en el 
formulario, haga un click en el botón NO. 
I f l E j E ' G r u p o E d it o r i a l Megabyte 3 3 ^ ¡ ¡ ¡ |¡
BASIC como debe ser... 
SOLUCIONANDO LOS PROBLEMAS INICIALES 
1.- Al a c c e d e r al V isual B asic no se e n c u e n tra n to d o s los 
co m p o n en tes. 
Para solucionar éste problema debes hacer click en la opción VIEW 
(VER) de la barra de menú, cuyas opciones perm iten visualizar los 
componentes: 
»5, Proyectol - Microsoft Visual Basic [diseño] I—Inixi 
Archivo Edición Ver Proyecto Formato Depuración Ejecutar Consulta Diagrama Herramientas Complementos Ventana Ayuda 
$ . ¡3 . ' El Código 
EH Objeto Mayús+F7 - 
i ÿ Examinador de objetos F2 
Ctri+G 
OrK. 
jp Ventana Inmediato 
□ Ventana Locales 
£ 3 Ventana Inspección 
<§$ Explorador de proyectos Ctrl+R 
Hl* Ventana Propiedades F4 . 
¡Q Ventana Posición del formulario 
Páginas de propiedades Mayús+F4 
Tabla ► 
Zoom ► 
Mostrar paneles ► 
Cuadro de herramientas 
Ventana de la vista Datos 
Paleta de colores 
Barras de herramientas m 
Visual Component Manager 
Activa el Formulario 
■  
Activa la Ventana 
de Proyecto 
Activa la Ventana 
de Propiedades 
Activa la Caja de 
■ Herramientas 
Activa o desactiva 
la Barra Estándar 
Depuración 
Edición 
Editor de formularios 
* Estándar 
Activa la Ventana de 
ubicación de formulario 
» 34 Grupo Editorial Megabyte < | Í ¡ g 
CAPITULO I: Entorno Del Visual Basic 
2 - La Ventana de Propiedades se ubicó debajo de la Barra Estándar y 
desea llevarla a su posición normal. Así: 
,Project1 - M icrosoft Visual B asic [design] 
Fie Edit View Project Form at Debug Run Took Add-Ins Window Help 
si - a - 1 es H m, ► 
IF o rm i Form 
Alphabetic | Categorized | 
AutoRedraw False ..... *1 
BackColor □ &H8000000F& —1 
BorderStyle 2 - Sizable eSÎSSIÉBÂi 1 Formi 
ClipControls True 
ControlBox True zi 
» =iS|_xJ 
A 
dd 
[ab| *v . 
F Í» B 
m 4 ±j 0 GD _J 
®  
^gj B 
■ 
« . P ro je ct! - Form i (Form ) 
Form ! 
MO 
Para solucionar este problema debe hacer click con el botón dere­cho 
del mouse dentro de cualquier parte de la ventana de propieda­des. 
Se visualizará cualquiera de las siguientes ventanas. 
Description 
✓ Dockable 
^ Dock—able Hide 
Hide 
Desactive la opción Dockable, haciendo click en ella. 
Otra form a de solucionar este problema es haciendo click en el 
título de la ventana de propiedades y arrastrarla a su posición nor­mal. 
Si la ventana de propiedades ocupa toda la pantalla, restaure la 
ventana del Formulario. 
G r u p o E d it o r ia l Megabyte 35
4.- 
VISUAL BASIC como debe ser... 
La C aja de H erram ientas se ubicó debajo de la B a rra E stán d ar 
y desea llevarla a su posición norm al. 
Para solucionar este problema debe seguir los mismos pasos que 
se siguen para lleva r a su p o sic ió n norm al la ventana de 
propiedades (caso anterior). 
L a C aja de H erram ientas ocupa toda la pantalla. 
Para solucionar este problema haga click en el botón restaurar 
de la caja de herramientas. 
Botón Restaurar 
d i 
f x l 
Botón Maximizar 
1 -1 °« *» 
Botón Minimizar 
Botón Cerrar 
5.- No puedes visualizar el form ulario y la ventana de propiedades 
y caja de h erram ien tas están en blanco. 
Para solucionar éste problema haga en la opción FILE y elige 
NEW PROJECT (Nuevo Proyecto). 
F ile £ d it y i e w E r o j e c t F ß rm a t £>et>ug g u n T o o ls & d d - I n s W in d o w H e lp 
s # * - . g ~ £ , ■ f e i <~vf j „ c S * 
- | á | j c | 
General j 
* 
• 
¡ 
36 G r u p o E d it o r ia l Megabyte 
6 . - 
7.- 
CAPITULO I: Entorno Del Visual Basic 
No puede m over ninguno de los controles del form ulario. 
Para solu cio n a r este problem a haga un click con el botón 
derecho del mouse en cualquier parte libre del formulario y luego 
desactive la opción LO CKjCO NTRO L haciendo un click en dicha 
opción. 
No encuentra un control que ha dibujado en el form ulario. Por 
ejemplo: al d ib u ja r una etiqueta se visualiza Label3, pero Label2 
no la encuentra. 
Primero maxim iza la ventana del form ulario y luego elige el 
nombre del control que buscas de la lista de controles que se 
encuentran en la ventana de propiedades. Si en esta lista no 
existe el nombre del control que buscas significa que no existe 
en el formulario. 
L a b e l3 Label 
F o r m i Form 
L a b e ll Label 
L a b e l2 Label 
BackStyle 1 - Opaque 
BorderStyle 0 - None 
Caption Labels 
DataField 
Botón para ver ia 
lista de controles 
que se encuentran 
en el formulario 
G r u p o E d it o r ia l Megabyte 37
VISUAL BASIC como debe ser... 
P o r casualidad a creado varios proyectos o form ularios en su 
aplicación y desea borrarlos. 
En este ejemplo a creado en su 
aplicación tres proyectos y en el 
proyecto N° 1 tiene 3 formularios. 
Si hace un Click en el signo mas (+) de 
un proyecto, se visualizan sus 
componentes y en el signo + de la 
palabra Formularios se visualizan los 
formularios que contiene. Si hace un 
click en el signo menos (-) los oculta. 
Grupo de proyectos - Grupol B 
C3 
- P r o y e c t o l ( P r o y e c t o l) 
- j ' > Form ularios 
C ] F o rm l (F o rm l) 
O Form 2 (Form 2) 
C ] Form 3 (Form 3) 
0 ¡ j ? P ro yecto 2 (P ro yecto 2) 
B €: > I........ Form ularios 
...... 
Q F o rm l (F o rm l) 
- P ro yecto 3 (P ro yecto 3) 
GB- l2 Form ularios 
Para solucionar este problem a haga un click con el botón 
derecho del mouse en el proyecto o formulario que desea borrar. 
Se visualiza el siguiente menú: 
M enú del Proyecto 
Establecer como inicial 
Propiedades de Proyectol... 
Guardar proyecto 
Quitar proyecto 
Agregar ► 
é=$ Imprimir... 
v' Acoplable 
Ocultar 
M enú del Formulario 
1Ü Ver objeto 
CU Ver código 
Propiedades 
Agregar 
Guardar Forml 
Guardar Forml como. 
Quitar Forml 
1 Imprimir... 
v' Acoplable 
Ocultar 
En cualquiera de los casos haga click en la opción Q U ITAR 
(Proyecto o Formulario). 
G r u p o E d it o r ia l Megabyte 
CAPÍTULO I: Entorno Del Visual Basic ^ f ¡ ¡ & 
Desea e v ita r que los avances realizados en su aplicación se 
b o rre n p o r p ro b le m a s in e s p e ra d o s com o c o rte de fluido 
eléctrico, etc. 
Para ello, puede configurar al Visual Basic para que al ejecutar 
su aplicación se graben en form a automática todos los cambios 
que le ha realizado. 
Haga click en la opción TOOLS (Herramientas) de la barra de 
menú y elija OPTIONS... De la ventana que se visualiza active la 
página EN VIRO NM EN T (Entorno). Se visualiza la siguiente 
ventana: 
Para que los cambios realizados a 
su aplicación se graban 
automáticamente al ejecutarse 
active el botón G uardar los 
Cambios 
NOTA 
Cada una de las páginas de esta 
ventana permiten configurar id 
Visual Basic. Es muy importante 
que Ud., observe cada una de estas 
ventanas. 
Editor | Formato del editor | General ] Acople 
Cuando se inicie Visual Basic: 
Entorno | Avanzado ] 
Mostrar plantilas para: 
(• preguntar por un proyectol F Eormularios 
C £rear un proyecto predeterminado P Formularios MDI 
F Módulos 
Cuando se inicie un programa: F Módulos de clase 
C guardar los cambios F Controles de usuario 
C Preguntar p ata guardar los cambios F Páginas de propiedades 
<• No guardar los cambios F Documento de usuano 
Directorio de plantillas: 
|C:ARCHIVOS DE PROGRAMAD£VSTUDIOVBTempiate 
j Aceptar Cancelar | Ayuda 
Desea que en la ventana de propiedades se m uestre una breve 
explicación de cada una de las propiedades. 
Para ello, haga click con el botón derecho del 
mouse en cualquier propiedad y luego active 
la opción Descripción. 
v' Descripción 
v" Acoplable 
Ocultar 
Descripción de las propiedades 
[c o m m a n d 1 CommandButton * | 
Alfabética j Por categorías | 
(Name) 
Appearance 
BackColor 
Cancel 
Default 
Command 1 
1 - 3D 
□ &HSOOOOO1 
False 
False 
C ap tio n 
Devuelve o establece el texto 
mostrado en la barra de título de 
un objeto o bajo el icono de un 
G r u p o E d it o r ia l Megabyte 39
^ lltÉ ll’- VISUAL BASIC como debe sen .. 
FILOSOFÍA DE PROGRAMACIÓN EN VISUAL BASIC 
Para desarrollar un programa en Visual Basic se crea un formulario y sobre 
él se dibujan controles tales como cajas de texto, etiquetas, listas desplegables, 
gráficos, botones de comandos, etc. A continuación se le asignan las propiedades 
y finalmente se escriben las instrucciones relacionadas a cada uno de ellos. 
Quiere decir esto que cada control está ligado aun conjunto de instrucciones 
que permanece inactivo hasta que ocurra el evento que lo activa. 
EVENTO: 
Es una acción reconocida por un control u objeto para el cual se puede escribir 
instrucciones de respuesta. Los eventos pueden estar generados por una acción 
del usuario como hacer click con el mouse, pulsar una tecla, etc. 
C O N TR O L: 
Es un objeto gráfico, como por ejemplo un cuadro de texto, un botón de comandos 
o un marco que se coloca en un formulario para presentar datos, realizar una 
acción o mejorar el aspecto de un formulario, etc. 
O B JE T O : 
Es una instancia de una clase que combina datos y procedimientos. Por ejemplo 
un control cuando es ejecutado en un formulario es un objeto. 
CLASE: 
Es la definición de un objeto incluyendo su nombre, sus propiedades y métodos 
y cualquier evento que tenga. 
PR O PIED A D : 
Es un atributo con un nombre determinado que se le asigna a un control para 
definir una característica del objeto como por ejemplo, el tamaño, el color, o la 
posición en la pantalla, o un aspecto de su comportamiento, como por ejemplo, 
si está oculto o no. 
M ÉTO D O : 
Es un procedimiento similar a una instrucción o función que opera sobre objetos 
específicos. 
G r u p o E d it o r ia l Megabyte" 
CAPÍTULO I: Entorno Del Visual Basic w m 
PREGUNTAS DE REPASO - N° 01 
01.- La ventana principal de una aplicación se llama: 
02.- El entorno de Visual Basic está compuesto por: 
03.- Qué es un Proyecto? 
04.- Los controles se encuentran en: 
05.- Para activar la Ventana de Proyecto se debe pulsar: 
06.- Dibuje el botón que sirve para ejecutar una aplicación. 
07.- ¿Qué debe hacer si al activar el Visual Basic no encuentra la Barra 
Estándar? 
08.- Dibuje el botón para grabar un proyecto. 
09.- ¿Qué tecla activa la Ventana de Propiedades? 
10.- Dibuje el botón que sirve para finalizar una aplicación. 
11.- ¿Qué ventana contiene las características que se les puede asignar a 
los controles? 
12.- Dibuje el botón que activa la Caja de Herramientas. 
13.- ¿Qué es un método? 
14.- Dibuje el botón que sirve para llamar o abrir un proyecto. 
15.- ¿Qué contiene la Barra Estándar? 
16.- ¿Qué teclas permiten visualizar el formulario? 
17.- ¿Qué debe hacer si al ingresar al Visual Basic no se visualizan todos 
sus componentes? 
18.- ¿Cuáles son los pasos para desarrollar una aplicación? 
19.- ¿Cuándo se ejecutan las instrucciones de los controles? 
20.- ¿Qué es un evento? 
¡CU ID A D O ! 
Le recomiendo no seguir con los próximos temas mientras 
no obtenga un veinte en esta autoevaluación. 
G r u p o E d it o r ia l Megabyte 41
CAPITULO II 
Datos Personales 
G uardar com o tipc; I Form File: %T" ‘ 
OBSERVACIONES 
Nuevo Alumno Finalizar 
DESCRIPCION 
DE LOS 
CONTROLES BÁSICOS
EL FORMULARIO: 
Es una ventana muy importante porque aquí se dibujan o pegan todos los 
controles que necesitamos utilizar en nuestro programa o aplicación. Se 
pueden utilizar tantos formularios como se necesiten, y dependiendo de la 
utilidad que se les dé, éstos serán de diferentes tipos. Así, se puede crear un 
formulario que contenga un gráfico, para visualizar información o para 
ingresar datos. 
P R IN C IP A L E S P R O P IE D A D E S D E U N F O R M U L A R IO : 
Ñ A M E 
Permite asignar un nombre al formulario. Por defecto el nombre es FORM 1, 
FORM2, FORM3, etc. 
B A C K C O L O R 
Selecciona un color de fondo para el formulario. 
B O R D ER ST Y LE 
Selecciona el estilo de presentación y comportamiento del formulario. 
C A PT IO N 
Asigna un Título al formulario. 
C O N T R O L B O X 
Indica si se visualizan los botones de control del formulario (Maximizar, 
Minimizar, etc.). 
EN A BLED 
Indica si el formulario debe estar activado o no. Si no esta activado, no 
responde a ningún evento. 
FO N T 
Indica el tipo, tamaño y estilo de letra de los controles que se dibujen en el 
formulario. 
IC O N 
Selecciona un icono para el formulario. 
E d i t o r i a l Megabyte 45
4S S S & VISUAL BASIC como debe ser... 
LE FT 
Permite indicar la posición horizontal del formulario. 
M A X BU TTO N 
Indica si se visualiza el botón Maximizar. 
M IN B U T T O N 
Indica si se visualiza el botón Minimizar. 
M O U SE IC O N 
Se utiliza para indicar un icono que debe reemplazar al puntero del Mouse 
cuando éste se encuentre dentro del formulario. Para que esto suceda debe 
asignar el valor 99-Custom a la propiedad MousePointer. 
M O U S E P O IN T E R 
Se utiliza para indicar el estilo del puntero del mouse. 
M O V E A B L E 
Indica si el usuario puede mover el formulario. 
P IC T U R E 
Para seleccionar un gráfico que sirva de fondo para el formulario. 
S C A L E M O D E 
Asigna la unidad de medida para el tamaño o ubicación del formulario o cualquier 
otro control. La unidad de medida que se activa en forma automática es TWIP. 
Un TWIP es una unidad de medida estándar para todo tipo de pantallas la 
cual nos permite asignar el mismo tamaño o ubicación de los controles sin 
importar el tipo de pantalla que utilizamos. Un TWIP es igual a 1/20 de un 
punto de impresora. 1440Twips equivalen a una pulgada y 567 equivalen a 
un centímetro. 
SH O W IN TA SK B A R 
Indica si el formulario se debe visualizar en la barra de tareas cuando se 
esta ejecutando. 
ST A R T U PPO SIT IO N 
Permite seleccionar la posición inicial del formulario en la pantalla. 
T O P 
Se utiliza para indicar la posición vertical del formulario en la pantalla. 
V ISIB LE 
Indica si el formulario se debe visualizar. 
W ID TH 
Permite indicar el ancho del formulario. 
W INDOW STATE 
Selecciona el modo de presentación del formulario: Normal, Minimizado o 
Maximizado. 
G r u p o E d i t o r i a l Megabyte < 
CAPÍTULO II:Descripción de los Controles Básicos 
¿CÓMO ASIGNAR UNA PROPIEDAD? 
Para asignar una propiedad a un control (formulario, caja de texto, 
etiqueta, botón de comando, etc.), primero debe seleccionarlo, haciendo un 
click en él, luego pulse <F4> o el botón propiedades. 
BOTON DE PROPIEDADES 
NOMBRE DEL 
CONTROL AL 
CUAL SE LE ^ T 
ESTA ASIGNADO 
PROPIEDADES 
FORMAS DE 
VISUALIZAR 
LAS 
PROPIEDADES 
ES* i S S S B S OE - Ia !.*J 
JF o r m i Form .I.J 
Alphabetic ] Categorized | 
Aubzftëèdraw False 
jáckColor □ &H8000000 
/ BorderStyle 2 - Sizable 
ClipControls True 
ControlBox True 
DrawMode 13 - Copy P e n __ 
DrawStyle 0 - Solid 
DrawWidth 1 
Enabled True 
FillColor ■ &HGÜ0Û000 
FillStyle 1 - Transparen 
Font MS Sans Serif 
FontTransparenl True 
ForeColor ■ &H8000001 
Height 3600 
HelpContextID 0 ^ 
BOTON PARA 
SELECCIONAR EL 
CONTROL Al. 
CUAL LE 
QUEREMOS 
ASIGNAR 
PROPIEDADES 
BARRA DE 
DESPLAZAMIENTO 
DE 
PROPIEDADES 
NOTA: 
Usted, puede modificar el ancho o altura de esta ventana. 
G r u p o E d it o r ia l Megabyte 47 ■ w J Ü
é S fÍk > VISUAL BASIC como debe ser... 
* Según la propiedad que ha elegido, Ud. Puede visualizar: 
1 II 
2 D S H j J 
3 (None) ^ 
1.- Para escribir el texto que se desea mostrar en la propiedad. 
2.- Para que al hacer un click en la flecha hacia abajo se visualice una 
lista de valores que podemos asignar como propiedad. 
3.- Para que al hacer un click en los tres punto se visualice una ventana 
de diálogo. 
NOTA : P uede m o d ific a r c u a lq u iera de las p ro p ie d a d e s y 
com probar sus efectos ejecutando el form ulario con la 
tecla <F5> o con el botón Ejecutar y para term inar . U 
ejecución pulse la tecla <ALT> + <F4> o click en el 
botón finalizar. 
* B O T O N E JE C U T A R 
B O TO N FIN A L IZ A R 
G r u p o E d i t o r i a l Megabyte-^ 
ETIQUETA (Label) : 
A 
Es un control que se utiliza para mostrar mensajes en una aplicación. 
Al dibujarlo en el formulario se visualiza: Label 1, Label2, Label3, etc. 
Al dibujar un control no debe preocuparle el tamaño Inicial que tome, 
porque se puede modificar de una manera fácil y rápida. 
PR IN CIPA LES PR O PIED A D ES DE UNA ETIQUETA: 
ÑA M E 
Permite asignarle un nombre. Por defecto el nombre es Label 1, 
Label2, Label3, etc. Según el número de Etiquetas que se dibujen en el 
formulario. 
A L IG N M E N T 
Alinea el texto que se encuentra en la Etiqueta: Left (Izquierda), 
Right (Derecha) y Center (Centro). 
A PPEA R A N C E 
Cambia la apariencia de la Etiqueta. 
A U T O S IZ E 
Para indicar si el tamaño de la Etiqueta depende del tamaño de la 
letra seleccionada. 
B A C K C O L O R 
Selecciona un color de fondo de la Etiqueta 
B A C K STY LE 
Asigna el estilo del fondo de la Etiqueta. 
B O R D ER ST Y LE 
Asigna el estilo del borde de la Etiqueta. 
C A PIT O N 
Para escribir el texto o información que desea visualizar. 
¡ j l l l l ^ G r u p o E d i t o r i a l Megabyte 49
é S B ib ' VISUAL BASIC como debe ser.. . , < $ 8 
PONT 
Permite asignar el Tipo, Tamaño y el Estilo de la letra del texto o 
mensaje que desea visualizar en la Etiqueta. 
FORECOLOR 
Permite asignar el Color de la letra del texto o mensaje que desea 
visualizar en la Etiqueta. 
VISIBLE 
Indica si la Etiqueta se debe visualizar o no. 
A P L IC A C IÓ N D E S A R R O L L A D A N° 01 
MI PRIM ERA APLICACION 
VISUAL BASIC 
Como debe ser... 
M± nombre es ; ¿fuan. José Castane<t* Leon 
P a ra d esarro llar una aplicación debe seguir los siguientes pasos: 
1.- C rear una nueva aplicación. 
De la opción F IL E de la Barra de Menú elegir N E W PROJECT. 
2.- Mueva y ajuste el tamaño del Formulario. 
3.- Dibuje los controles. 
4.- Defina las propiedades del formulario y controles. 
5.- Escriba las instrucciones para los controles. 
6.- Guarde la aplicación. 
7.- Ejecute la aplicación. 
NOTA: Si durante el diseño de la aplicación desea b o rra r un control, 
debe seleccionarlo haciendo un click en él y luego pulsar la tecla D ELETE 
(SUPRIMIR). 
G r u p o E d it o r ia l Megabyte 
APÍTULO I I .-Descripción de los Controles Básicos % 
MUY IMPORTANTE: 
Para trabajar con un control, debes seleccionarlo. 
Siempre debes mirar la caja de propiedades para darte cuenta con qué 
control estas trabajando. 
Ejemplo: El formulario siguiente tiene una etiqueta, pero esta seleccionado 
el formulario. 
- lai *1 
P 
/ 
C o n tro l 
A ctivo 
Propiedades - Formi 
I F o r m i Form 
Alfabética | por categori! 
(Nombre) Forml 
Appearance 1 - 3D — 1 
AutoRedraw False 
BackColor □ &H8000000F8 
BorderStyle 2 - Sizable 
Caption Forml 
En el formulario siguiente se tiene una etiqueta, la cual está activada. 
, C o n tro l 
I□ I x || 
1 A ctivo 
(Nombre) Label 1 jfv 
Alignment 0 - Left Justify 
Appearance 1 - 3D 
AutoSize False 
BackColor □ &H8000000F8 
BackStyle 1 - Opaque 
BorderStyle 0 - None 
Caption Labell 
G r u p o E d it o r ia l Megabyte 51
VISUAL BASIC como debe ser.. 
Los puntos alrededor de un control indican que este se encuentra 
activado. 
MODIFICAR ELTAMAÑO DE LOS CONTROLES 
Para modificar el tamaño de un control, primero debe seleccionarlo 
haciendo click en él. Una vez seleccionado se visualizará los puntos 
que permiten modificar su tamaño, entonces lleve el puntero del mouse 
por uno de estos puntos hasta que visualice una flecha en doble sentido, 
luego arrastre el mouse ampliando o reduciendo el tamaño del control. 
El control esta 
Formi EHH1 
Labell 
El control esta listo 
para modificar su— 
ancho 
listo para 
modificar 
su ancho 
El control esta listo para 
modificar su ancho 
MOVER UN CONTROLEN EL FORMULARIO 
Para mover un control haga clic dentro del control y arrastre el 
mouse hasta la posición donde desea moverlo. Observará la siguiente 
pantalla. 
■ü. Formi 
Labell 
Posición del control 
en el formulario 
CAPITULO II.Descripción de los Controles Básicos 
DESARROLLO DE LA APLICACIÓN N° 01 
Para desarrollar la aplicación N° 01 se siguen los siguientes pasos: 
Ajustar el tamaño 
del Form ulario 
D ibujar los 
Controles 
JSl-ül 
Labell 
Label2 
Label3 
3.- Asignar las propiedades a los Controles 
CONTROL CAPTION ALIGNMENT AUTOSIZE FONT BORDERSTYÜ 
F O R M I M I PR IM E R A A P L IC A C IO N — — — — 
LA B EL1 V IS U A L B A SIC C en ter T rue 28 0-N one 
L A B E L 2 C om o debe ser... C enter T rue 14 1-F ixed Single 
L A B E L 3 Mi nom bre es Juan José.. R ight T rue 10 0 -N one 
Si desea que a¡ ejecutar la aplicación el formulario ocupe toda 
la pantalla, su propiedad W indowstate debe tener el valor 2 
fmaximized). 
En esta aplicación no se escriben instrucciones porque sólo 
permite mostrar mensajes. 
A.Guarde o grabe la aplicación. 
5.Pulse la tecla F5 o el botón ejecutar para que el formulario se ejecute 
y observar los resultados de esta aplicación. 
G r u p o E d i t o r i a l Megabyte 53 « H »
 I l b VISUAL BASIC como debe s e r ... > 
GUARDAR O GRABAR UNA A PLIC A C IÓ N . 
Existen dos formas de guardar una aplicación: 
1 Haciendo click en la figura del Disco que se encuentra en la Barra 
Estándar 
2.- De la opción F IL E "Archivo" de la Barra de Menú, elegir Guardar 
Proyecto. Si desea guardarlo con un nombre diferente al asignado 
inicialmente, debe elegir la opción Guardar Proyecto Como. 
Primero le pide el nombre de cada formulario (*.FRM) que forma 
parte de la aplicación y al final le pide el nombre del Proyecto (*. VBP) 
el cual se utiliza para abrir o recuperar posteriormente la aplicación. 
VENTANAPARAGRABAR UN FORMULARIO 
Acción que 
está realizando 
S a ve File A s 
C arpeta 
Actual 
Selecc rna 
otra carpeta 
C arpeta 
A nterior 
C rea una N ueva 
C arpeta 
Guardai en: | M Vb + 
I 
m J 
J Clisvr 
j Help 
J Odbc 
j report 
J Repostry 
1 samples 
L - Ï Setup 
L_J setupkit 
—J T empiate 
L J T sql 
__j vbonline 
L J Winapi 
L U Wizards 
hh 
^ PROG01 
Q PRO G 02 
Nombre de archivo: ' |9BRr 
Guardar como tipo: I Form FileJ 
Guardar | " 
(x.frm) Cancelar 
Ayuda 
Formas de 
ver los 
Formularios 
y carpetas 
^Form ularios y 
carpetas 
existentes 
Botón para 
G rabar 
C aja para escribir el nom bre del form ulario que T ipo de archivo que está ^ C ancela la acción 
desea g rab ar grabando 
•CAPITULO II'.Descripción de los Controles Básicos 
VENTANA PARA GRABAR UN FORMULARIO 
Acción que 
está realizando 
Q-ave Pieiect A* 
Carpeta 
Actual 
Selecciona 
otra carpeta 
Carpeta 
Anterior 
Crea una Nueva 
Carpeta 
j d - i i 
G uardar en: _já V b = 3 d ü 
3 c ap 
t I R e p o s try 
__ I vb o n lin e 
J Clisvr 
I sam ples 
__ J W in a p i 
J does 
L J S e tu p 
I W iz a rd s 
j H elp 
__ 1 se tu p kit 
C A LE N D A R 
j O dbc 
(__J T em piate 
<jbf c a s e • 
j report 
— I T sql 
c h e c k l 
jlL 
N om bre de archivo: 
G uardar com o tipo: 
G uardar 
{P ro je c t Filep (x.vbp) 
j J 
□ - 
C ancelar 
Ayuc a 
Caja para escribir el nombre del formulario que 
desea grabar 
Tipo de archivo que está 
grabando 
Formas de 
ver los 
Formularios 
y carpetas 
_Formularios y 
carpetas 
Botón para 
Grabar 
Cancela la acción 
" MUCHO CUIDADO " 
Para cada formulario de un proyecto y para cada proyecto que usted 
grabe, utilice nom bres d istin to s porque de lo contrario el nuevo 
formulario o proyecto borrará al anterior. Por ejemplo, si ya tiene un 
proyecto grabado con el nom bre trabajo y graba un nuevo proyecto 
con el mismo nombre, entonces el primer proyecto se borrará y ya no 
podrá recuperarlo. Esto también sucede con los formularios. Por eso 
tenga M U C H O CUIDADO 
Antes que el proyecto o formulario se borre se muestra un mensaje 
de advertencia. 
G u a r d a i p r o y e c t o c o m o 
C :A rchivos de program aM icrosoft V isual S tud io V B 98 T ra ba jo .vbp va existe. 
¿D esea reemplazarlo? 
Si usted responde SI, el nuevo proyecto o formulario reemplaza al 
anterior (lo borra) y si responde NO, Visual Basic le pide otro nombre. 
G r u p o E d it o r ia l Megabyte ss mm
VISUAL BASIC como debe ser... 
Para Evitar estos problemas te recom iendo que cada proyecto o 
aplicación que hagas lo grabas en una carp eta diferente, esto también 
te permite administrar mejor tus proyecto. 
A BRIR O R E C U PER A R UNA A PLIC A C IÓ N 
Existen tres formas de abrir o recuperar una aplicación: 
1 Haciendo click en la figura del L ibro que se encuentra en la Barra 
Estándar. 
2.- De la opción ARCHIVO de la Barra de Menú, elegir A b rir Proyecto. 
3.- Pulsar las teclas (CTRL + O). 
Una vez que se visualiza la ventana para abrir un proyecto, usted 
puede hacer doble clic en el nombre del proyecto o escribir su nombre 
en la caja indicada y luego haga clic en el botón ABRIR. Si al abrir un 
proyecto, no se visualiza, pulse CTRL + R para activar la ventana de 
proyecto y luego doble clic en Forms y/o en el formulario que desea 
visualizar. 
VENTANAPARA ABRIR UN PROYECTO 
m 
Muestra todos los proyectos que tienes grabados. 
Muestra la acción aue esta 
Muestra los orovectos recién 
E xisten te j R e c ie n te s J 
fju s c a r en: [ «J V b 
] D a ta e n v iro n m e n t 
J T em piate 
1 T sql 
) W iz a rd s 
A lu m no s 
B a la n c e 
C olegio 
Com pras 
C ontables 
E xam en 
F arm acia 
H orarios 
3 S | H o tel 
Inform es 
J u e g o s 
P agos 
P s ic o lo g ia 
S is te m a s i 
a J a l frnr-il 
S ue ld os 
T est 
T ie n d a 
T rabajo 
U n iv e rs id a d 
U n iv e rs o d a d 
UL 
N o m b re d e a rc h iv o :  
I'P O d e a rch ivos: j P ro y e c to (“ . v b p ;“ .m a kj". vb g) 
Caja para 
escribir el 
Tipo de Abre el Muestra los Proyectos que 
archivo que ” ------ - están mas a la derecha 
& ► 56 G r u p o E d i t o r i a l M egab yte^ 
E JE C U T A R UNA A P L IC A C IÓ N 
Existen tres formas de ejecutar una aplicación: 
1.- Pulsando la Tecla <F5>. 
2.- De la opción E jecu tar de la Barra de Menú, elegir Iniciar. 
3.- Haciendo click en el Botón E jecu tar que se encuentra en la Barra 
Estándar. 
> BOTÓN EJECUTAR 
NOTA: 
Según como esta configurado Visual Basic, cada vez que ejecuta un 
programa le preguntará si desea guardar los cambios realizados. Esto se 
puede activar o desactivar en la opción H erram ientas de la barra de menú 
luego en Opciones y finalmente en la hoja E ntorno 
E ditor | F o rm a to d el e d ito r | G en eral | Acopl< 
C u a n d o s e Inicie Visual B asic: 
C~ p r e g u n ta r p o r u n p ro y e c to 
C r e a r u n p ro y e c to p re d e te rm in a d o 
C u a n d o s e inicie u n p ro g ra m a : 
<*■ g u a r d a r lo s c a mbios! 
p r e g u n ta r si s e g u a r d a n los cam bios 
C f¿o g u a r d a r los cam bios 
D irectorio d e plantillas: 
, E n to rn o j A v a n z a d o | 
M o strar plantiB as p a ra : 
P7 F orm ularios 
W F orm ularios MDI 
P? M ódulos 
W M ódylos d e c la se 
f y C o n tro le s d e u su a rio 
W P á g in a s d e p ro p ie d a d e s 
W D o cu m en to d e u su ario 
l e ARCHI VOS DE PROGRAMAM ICROSOFT VISUAL STUDIOVB98T e m p iate 
Como puede observar, aquí también se puede cambiar otras configuraciones. 
MUY IMPORTANTE: 
l.S i al ejecutar una aplicación no se visualiza el form ulario, 
verifique que el formulario no tenga en su propiedad Visible el valor 
False o que en su p ro p ied ad W indow S tate no tenga el valor I-Minimized 
(Minimizado). 
2. Si al ejecutar la aplicación el form ulario se visualiza pero no 
responde a ningún evento incluyendo los controles que contiene, 
entonces verifique que su propiedad Enabled no tenga el valor False. 
¡ ||¡ ||^ G r u p o E d it o r ia l Megabyte
%■ VISUAL BASIC como debe ser... 
F IN A L IZ A R UNA A P L IC A C IÓ N 
Existen cuatro formas de Finalizar una aplicación: 
1.- Pulsando las Teclas <ALT> + <F4>. 
2.- De la opción Ejecutar de la Barra de Menú, elegir Term inar. 
3.- Haciendo click en el botón cerrar del formulario (X). 
4.- Haciendo click en el Botón Finalizar que se encuentra en la Barra 
Estándar. 
■ BOTÓN FINALIZAR 
GRABAR UN PROYECTO EN UN D IS K E T T E 
Si desea llevar tu proyecto en un diskette, debe copiar en él no sólo 
el proyecto (*.VBP) si no también cada uno de los formularios (*.FRM) u 
otros componentes que contiene como por ejemplo una base de datos, etc. 
Si ya grabaste tu aplicación er, el disco de la computadora (disco 
duro) y te encuentras en el Visual Basic con tu aplicación en la pantalla que 
deseas llevar en un diskette, entonces debes activar la ventana de proyecto 
(CTRL+R) hacer clic con el botón derecho del mouse en cada formulario 
(uno por uno) y elegir G u a rd a r xxx.Frm Como. Esta opción también se 
encuentra en la opción Archivo de la barra de Menú donde encontrarás 
también la opción G ra b a r Proyecto Como la cual se utiliza para guardar el 
proyecto, entonces haga clic donde se selecciona las carpetas y elija Disco 
3 1/2A: 
r ? i x i 
G u a rd a r e n : V b 9 8 « ■■■.. ^ , mi Ml ou immJ 
_ _ J D a ta e n v iri 
M M i P C ^ 
3H ..I T e m p ia te 
D is c o d e (A :) 
¿ a J J u a n jo s é (C .) 
__J T s q l 
1 ... 1 A r c h iv o s d e p ro g ra m a 
_ J W iz a r d s 
C3 d d d 
Ö e 
I 1 M ic ro s o ft V is u a l S tu d io 
C e d ti (D :) 
1....1 S e r v ic io s e n lin e a 
N o m b re d e a rc h iv o : {R a y a 1 g u a r d a r 
G u a rd a r c fim o | F o rm u la rio (x.frm ) 
a r c h iv o s d e tip o : T 1 C a n c e la r j 
A y u d a j 
También puede utilizar el Windows para realizar esta copia. 
G r u p o E d i t o r i a l Megabyte^ 
CREAR UN ARCHIVO EJECUTABLE (*.EXE) 
Un archivo ejecutable es un archivo con la extensión EXE donde se 
encuentran unidos todos los formularios, instrucciones y módulo de una 
aplicación. 
Tiene las siguientes ventajas: 
• Permite ejecutar la aplicación sin necesidad de ingresar al Visual 
Basic. 
• Evita que alguien visualice las instrucciones que hemos utilizado en 
nuestra aplicación. 
• Evita que alguien modifique las instrucciones que hemos escrito en 
la aplicación. 
Para crear un archivo ejecutable elija primero la opción ARCHIVO 
de la barra Estándar y luego GENERAR EXE. Visual Basic le pedirá el 
nombre del archivo que desea crear. El nombre por defecto que presenta es 
el nombre con el que Ud. a grabado la aplicación. 
Guardar en: p_il Vb98 M l » J f ü ml 
2J Dataenvironmenl i*""1 Link 
* 1 T empiate feV b6 
_2j T sql Ce? Visdata 
*"1 Wizards 
3 C2 
**~1 Cvpack 
tiombre de archivo: ITrabaio 1 Aceptar J 
Cancelar I 
Ayuda i 
Qpciones. . 1 
Al hacer click en el botón A ceptar o pulsar ENTER después de ingresar 
el nombre, Visual Basic genera en forma automática el archivo ejecutable. 
Una vez creado el archivo ejecutable Ud. puede crearle un acceso directo 
para poder ejecutarlo desde el entorno del WINDOWS sin necesidad de 
activar el Visual Basic. 
¿ QUÉ ES UN ACCESO DIRECTO ? 
Un Acceso Directo es una manera rápida de ejecutar una aplicación des­de 
el escritorio del Windows sin necesidad de activar el Visual Basic. 
También nos permite acceder a arribos y carpetas. 
G r u p o E d it o r ia l Megabyte 59 « f i f i »
^ÉiÍÉÉÉ^ VISUAL BASIC como debe ser... 
CREAR UN ACCESO DIRECTO 
Hay tres maneras de crear un acceso directo: 
1. Desde una carpeta. 
2. Desde el escritorio. 
3. Desde el Menú de Inicio. 
Para crear un acceso directo en el escritorio del Windows, primero 
debe salir al escritorio y luego seguir los siguientes pasos: 
En cualquier parte libre del escritorio haga clic con el botón derecho 
del mouse. Se mostrará el siguiente menú de opciones: 
Active Desktop ► 
Organizar iconos ► 
Alinear iconos 
Actualizar 
' ' Éenát • 
Deshacer Eliminar 
Active Desktop ► 
Organiza» iconos ► 
AJinear iconos 
Actualizar 
Pegar f'ft3<£ á c ñjvtfpy [ 
Deshacer Eliminar 
Nuevo 
Propiedades 
Lleve el puntero del mouse a la opción Nuevo. Se 
mostrará la siguiente pantalla. 
Propiedades 
I _ J Carpeta 
¿j Acceso directo 
^ W inZp File 
J j] Documento de texto 
Documento de Microsoft Word 
t i l Imagen de mapa de bits 
A/chivo de sonido 
l¡P Presentación de Microsoft PowerPoint 
Hoja de cálculo de Microsoft Excel 
ir CorelDRAW 8.0 Gráfico 
@ Imagen Corel PHOTO-PAI NT 8.0 
^1 Corel Media Folder 
O Adobe Photoshop Image 
PowerDesigner 8 Physical Data Model File 
^ Microsoft Data Link y 60 G r u p o E d it o r ia l M egab yte^ 
VITULO II:Descripción de los Controles Básicos 
3. De la pantalla anterior haga clic en la opción Acceso Directo para visualizar 
la siguiente pantalla: 
E s c rib a el n o m b re y la u b ic a c ió n d e l e le m e n to pa ra 
el q u e d e s e a c re a r u n a c c e s o d ire c to , o b ie n , 
b u s q u e el e le m e n to h a c ie n d o c lic e n Exam inar. 
L ín e a de co m a n d o s : 
Exam inar.. 
C a n c e la r 
De la pantalla anterior haga clic en el botón Examinar para buscar el archivo 
Ejecutable (*.EXE) que usted ha creado 
E xam inar 
Buscar en: Vb98 
Nombre de archivo: | 
Tipo de archivos: | Programas 
a i » I B a l 
_JÍDataenvironmen(j IZÜLink 
1 T empiate Q Trabajo 
ZDTsql ^ VbS 
1 Wizards G jiV isdala 
Z 3 C2 
1Cvpack 
Abrir 
~ 3 Cancelar 
Normalmente Visual Basic Graba el archivo ejecutable que usted crea en la 
carpeta: 
C:Archivos de programaM icrosoft Visual StudioVB98 
G r u p o E d i t o r i a l Megabyte 61
W VISUAL BASIC como debe ser... 
Una vez que en cu en tra el archivo selecciónelo haciendo doble clic 
en él o un solo clic y luego en el botón A brir. Se mostrará la siguiente 
pantalla donde se muestra la ruta y el nombre del archivo ejecutable. En 
nuestro ejemplo el archivo se llama TRABA JO.EX E. 
C re a r a c c e s o d ire c to 
l i 
Sjy > I 
«fi S ~ sPB«*§> «•»»*... 1 
E s c rib a e l n o m b re y la u b ic a c ió n d e l e le m e n to p a ra 
e l q u e d e s e a c re a r u n a c c e s o d ire c to , o b ie n , 
b u s q u e e l e le m e n to h a c ie n d o c lic e n E x a m in a r. 
L í n e a d e c o m a n d o s : 
| d e p ro g ra m a S M ¡c ro s o ft V is u a l S tu d io S V B 9 8  T ra b a jo . e x e f' 
E x a m in a r... I 
De la pantalla anterior seleccione el botón Siguiente. 
S e le c c io n e u n t ít u lo p a ra el p ro g ram a 
S e le c c io n e u n n o m b re p a ra e l a c c e s o d ire c to : 
IT ra b a jo 
: A tr á s ) j | C a n c e la r | 
La pantalla anterior le permitirá en forma opcional cambiar el nombre para 
el acceso directo. 
Según los iconos (*.ico) que tenga grabados, Windows le pedirá también 
elegir el icono para el acceso directo. 
62 G r u p o E d it o r ia l M eg a b y te< |¡¡¡| 
Después de cambiar o no el nombre del acceso directo haga clic en el botón 
Finalizar. Observará inmediatamente en el escritorio del Windows un nuevo 
icono. 
NOTA: 
Para ver las otras formas de crear un Acceso Directo consulte con el Manual 
o Ayuda de Windows. 
MUY IM P O R T A N T E 
Si desea grabar y ejecutar el archivo *.EXE generado en una computadora 
que no tenga instalado el Visual Basic, debe copiar en la carpeta 
WINDOWSSYSTEM de dicha computadora el archivo MSVBVM60.DL1, 
que se encuentra en la misma carpeta de la computadora donde desarrolló 
la aplicación. Si la aplicación trabaja con archivos externos como base de 
datos también debe copiarlos en su carpeta respectiva. Si no copia el archivo 
*.DLL se mostrará el siguiente mensaje cuando intente ejecutar la aplicación. 
Error al iniciar el programa a l 
N o s e e n c o n tró el a rc h iv o D L L re q u e rid o , M S V B V M 6 0 .D L L . 
A c e p ta r j| 
NOTA: 
También puede crear los Discos de Instalación de la Aplicación como se 
explica en la página N° 307. 
G r u p o E d it o r ia l Megabyte 63 4 M i
VISUAL BASIC como debe ser... 
CAJA DE TEX TO (TEXT): 
fibj 
Es un control que permite al usuario el ingreso de datos por medio del teclado. 
Al dibujarlo se visualiza: Textl, Text2, Text3, etc. 
PRIN CIPA LES PRO PIED A D ES DE UNA CAJA DE TEXTO: 
Ñ A M E 
Permite asignarle un nombre. Por defecto el nombre es Textl, Text2, Text3, 
etc. Según el número de Cajas de Texto que se dibujen en el formulario. 
B A C K C O L O R 
Selecciona el color del fondo. 
EN A B L ED 
Activa o Desactiva la Caja de Texto. Si está desactivada se muestra en un 
color opaco y no responde a ningún evento ni se puede ingresar datos. 
FO N T 
Permite asignar el Tipo, Tamaño y el Estilo de la letra del texto que se 
escribe en este control. 
F O R E C O L O R 
Permite asignar el Color de la letra del texto que se escribe en este control. 
L O C K E D 
Permite que el usuario pueda o no ingresar o modificar el texto que se 
encuentra en este control. El valor FALSE permite el ingreso o modificación 
y el valor TRUE lo evita. 
M A X LEN G TH 
Para indicar el número máximo de caracteres que el usuario puede ingresar 
en una Caja de Texto. El valor cero (0) permite que el número de caracteres 
a ingresar sea ilimitado. Este valor es asignado por defecto. 
M U L T IL IN E 
Indica si el texto a escribir en la caja de texto puede ocupar varias líneas. Se 
recomienda utilizarla junto con la propiedad SCROLLBARS para poder 
desplazarse de una manera más rápida y fácil por el texto ingresado 
PA SSW O R D C H A R 
Para indicar el carácter que deseamos que reemplace a cada uno de los 
caracteres que digitamos. Se puede utilizar por ejemplo cuando queremos 
ingresar claves de acceso. 
SC R O L L B A R S 
Para indicar qué barras de desplazamiento queremos que tenga la caja de 
texto: Ninguna (None), Vertical, Horizontal o Ambas (Both). 
TABINDEX 
Indica el orden en el que el cursor debe ubicarse en las Cajas de Texto. 
Donde queremos que se ubique el cursor al, ejecutar la aplicación debe 
tener el valor cero. 
TA B STO P 
Indica si el cursor debe ubicarse o no en una Caja de Texto. 
TEX T 
Almacena el texto que el usuario escribe en este control. Por defecto su 
contenido es: Textl, Text2, Text3, etc. Para ingresar datos debe borrar este 
contenido y dejar en blanco la Caja de Texto. 
V ISIB L E 
Indica si la Caja de Texto se debe visualizar o no. 
APLICACIÓN DESARROLLADA N° 02 
- i n l x | 
Datos Personales 
Nombre 
Dirección 
T eléfono 
Centro de Estudios 
OBSERVACIONES 
"1] 
G r u p o E d it o r ia l Megabyte 65
> VISUAL BASIC como debe ser. . . 
D esarrollo de la Aplicación: 
1.- D ib u jar los controles. 
Labell 
Label2 |T e>:H 
Label3 Jfext2 
Label4 ffe x t3 
Label5 f f ext4 
Label6 
ÍText5 
2.- A signar las Propiedades a los C ontroles. 
ETIQUETAS 
CONTROL CAPTION ALIGNMENT BORDERSTYE 
Labell Datos Personales Center 1-Fixed Single 
LabeI2 Nombre Left O-None 
Label 3 Dirección Left O-None 
Label4 Teléfono Left O-None 
Label5 Centro de Estudios Left O-None 
Labeló Observaciones Center O-None 
CAJAS DE TEXTO 
CONTROL TEXT MULTILINE SCROLLBARS 
TEXT1 En Blanco False None 
TEXT2 En Blanco False None 
TEXT3 En Blanco False None 
TEXT4 En Blanco False None 
TEXT5 En Blanco True Vertical 
El formulario debe tener: INGRESO DE DATOS en su Caption. 
66 G r u p o E d i t o r i a l Megabyte ^¡¡¡¡¡^ 
APLICACIÓN PROPUESTA N° 01 
 <. IN G R E S O DE P R O D U C TO S m m _ |n |x | 
♦ 
Nombre 
Descripción 
Precio Unitario 
Unidad de Medida 
Stock 
Fecha de Vencimiento f 
| Chic ¡¿yo. 2 } de Agosto de 1.998 
APLICACIÓN DESARROLLADA N° 03 
n O T T T r O T r r n r T a r r 
Nombre r~ 
Ciclo (del I al X) !...... 
Sexo [F /M ] r~ 
Clave r~ 
D irección Electrónica i .................... ...... 
L a d ir ec c ió n e letró n ica e s a s ig n a d a d e s p u é s 
d e in g r e s a r to d o s io s r e g is tr o s ; p o r lo tardo, 
U d. n o p o d r á in g r e s a r la 
CARACTERISTICAS: 
1. En el ciclo sólo se debe ingresar hasta 03 caracteres. 
2. En el sexo sólo un carácter. 
3. En la clave hasta 05 caracteres y no se debe visualizar a medida 
que se ingresa. 
4. No se debe permitir el ingreso de la dirección electrónica. 
G r u p o E d i t o r i a l Megabyte 67
17.S7 l / ItASIC como debe ser. 
Iii nidlli) ilc l¡i Aplicación: 
I I Xluijiu los controles. 
< 
Labell j|T extl 
Label2 |T ext2 
Label3 ¡Text3 » 
----- 
Label4 [ i ext4 
Label5 
Label6 
j í ext5 
2.- Asignar las Propiedades a los Controles. 
E T IQ U E T A S 
CONTROL CAPTION ALIGNMENT BORDERSTYE 
Labell Nombre Left O-None 
LabeI2 Ciclo (del I al X) Left O-None 
LabeI3 Sexo (F/M) Left O-None 
Label4 Clave Left O-None 
Label5 Dirección Electrónica Left O-None 
Labeló La dirección elec... Center 1-Fixed S. 
CAJAS DE TEXTO 
CONTROL LOCKED m a x l e n g t h PASSWORDCHAR t e x t 
TEXT1 False 0 En Blanco En Blanco 
TEXT2 False 3 En Blanco En Blanco 
TEXT3 False 1 En Blanco En Blanco 
TEXT4 False 5 En Blanco 
TEXT5 True () En Blanco En Blanco 
Caption del formulario : INSCRIPCION DE ALUMNOS 
G r u p o E 68 d it o r ia l Mega byte< 
PÍTULO II'.Desciipción de los Controles Básicos 
BO TO N DE CO M A N D O S (C O M M A N D ): 
Es un control que contiene instrucciones que se ejecutan cuando ocurre 
un evento. El evento más utilizado es el evento CLICK, cuyas instrucciones 
se ejecutan cuando el usuario hace un click en dicho control. Cuando se 
dibuja se visualiza:Commandl, Command2, Command3, Etc. 
P R IN C IP A L E S P R O P IE D A D E S DE UN BOTON DE COMANDOS: 
Ñ A M E 
Permite asignarle un nombre. Por defecto el nombre es Com m andl, 
Command2, Command3, etc. Según el número de Botones de Comandos 
que se dibujen en el formulario. 
B A C K C O L O R 
Selecciona el color del fondo. Para que acepte el color que se le asigna la 
propiedad Style debe estar en modo Gráfico. 
C A N C EL 
Para indicar si las instrucciones que contiene se deben ejecutar cuando el 
usuario pulsa la tecla <ESC>. 
C A PT IO N 
Para indicar el título que debe tener el botón. El título que se le asigne 
siempre se visualiza en el centro del botón de comandos. Ud. puede subrayar 
una de las letras del título usando antes de dicha letra el símbolo (&), esto le 
permitirá ejecutar las instrucciones que contiene este control pulsando la 
tecla ALT y la letra subrayada. 
FO N T 
Permite asignar el Tipo, Tamaño y el Estilo de la letra del texto que se 
escribe como título del botón. 
P IC T U R E 
Selecciona un gráfico para que se utilice como título del botón de comandos. 
Ü P G r u p o E d i t o r i a l Megabyte 69
^ ¡¡¡¡fe > VISUAL BASIC como debe ser... 
STYLE 
Para seleccionar su estilo de visualización: Estándar o Gráfico. Si el estilo es 
gráfico, puede almacenar un gráfico como título y se le puede cambiar el 
color del fondo. 
T O O L T IPT E X T 
Nos permite escribir un texto que se visualizará cuando el puntero del mouse 
se ubique en el botón. El texto que se escriba sirve de ayuda para el usuario, 
porque le puede dar a entender qué tarea o /unción realiza el botón. 
V ISIB LE 
Para indicar si el botón se debe visualizar. 
APLICACIÓN DESARROLI ADA N° 04 (Similar a la N° 02) 
1 « INGRESO DE DATOS wmm 
1 Datos Personales 
N om bie j¡ 
D irección 
T eléf ono 
C entro d e E stu d io s J- — ■ 
OBSERVACIONES 
LiL li 
H u e v o Alumno j Finalizar J 
La propiedad de los controles son iguales a la Aplicación N°02. Lo que sigue 
son de los nuevos controles. 
CONTROL CAPITON CANCEL TOOLTIPTEXT 
Commandl &Nuevo AlumnoFalse Adiciona un nuevo alumno. 
Command2 &Finalizar True Finaliza la aplicación. 
NOTA: 
• El resultado de TOOLTIPTEXT, se visualiza cuando al ejecutar la 
aplicación se ubica el puntero del mouse por unos instantes en cualquiera 
de los botones. 
• Se debe escribir instrucciones dentro de los Botones. 
• El símbolo & permite que una letra esté subrayada. 
7 0 G r u p o E d it o r ia l Megahyte 
ESCRIBIR INSTRUCCIONES PARALOS CONTROLES 
Para escribir instrucciones dentro de algún control se debe hacer 
Doble Click en dicho control o una vez seleccionado (haciendo un click en 
él) se debe pulsar la tecla <F7>. Ingresará a la ventana de instrucciones, 
llamada también ventana de código: 
VENTANA DE C Ó D IG O Q IN STR U C CIO N ES 
IM PO R T A N T E : 
El nombre del control depende de dónde se hizo doble click o pulsó 
<F7> y de la Propiedad Ñame que tiene el control. Si no ha cambiado la 
propiedad Ñame del control se visualiza el nombre por defecto. 
Cada control tiene un evento por defecto, si Ud. desea programar en un 
evento diferente debe hacer click en la lista de Eventos y si desea programar 
dentro de otro control que pertenece al mismo formulario debe hacer click 
en la lista de controles (Flecha hacia abajo). 
I p l ^ G r u p o E d i t o r i a l Megabyte m 71 w m
^Ü Íy ¡É ^ VISUAL BASIC como debe ser... 
PRINCIPALES EVENTOS ACTIVATE 
Es un evento del formulario. Las instrucciones que se escriben dentro de 
este evento se ejecutan cuando el formulario es activado. 
CH A N G E 
Las instrucciones que se escriben dentro de este evento se ejecutan cuando 
se modifica el contenido del control. 
C L IC K 
Las instrucciones que se escriben dentro de este evento se ejecutan cuando 
se hace un click o pulsa ENTER en un control. 
D B L C L IC K 
Las instrucciones que se escriben dentro de este evento se ejecutan cuando 
se hace doble click control. 
DEA C T I VATE 
Es un evento del formulario. Las instrucciones que se escriben dentro de 
este evento se ejecutan cuando el formulario es desactivado. 
G O TFO C U S 
Las instrucciones que se escriben dentro de este evento se ejecutan cuando 
el cursor se posiciona en un control. 
IN IC IA L IZ A T E 
Es un evento del formulario. Las instrucciones que se escriben dentro de 
este evento se ejecutan cuando el formulario se inicializa. 
K EY PRESS 
Las instrucciones que se escriben dentro de este evento se ejecutan cuando 
se pulsa una tecla en el control. 
LO A D 
Es un evento del formulario. Las instrucciones que se escriben dentro de 
este evento se ejecutan cuando el formulario es cargado en memoria. 
LO STFO C U S 
Las instrucciones que se escriben dentro de este evento se ejecutan cuando 
el cursor sale en un control. 
T IM E R 
Es un evento del control Timer (Reloj). Las instrucciones que se escriben 
dentro de este evento se ejecutan cada cierta cantidad de segundos, que 
Ud. Deberá indicar. 
U N LO A D 
Es un evento del formulario. Las instrucciones que se escriben dentro de 
este evento se ejecutan cuando el formulario es descargado de la memoria. 
7 2 G r u p o E d it o r ia l Megahvte 
EV ENTO S M OUSEDOW N Y M OUSEUP 
Las instrucciones que escribimos en el MouseDown se ejecuta se presiona 
un botón del mouse.Las instrucciones que escribimos en el evento MouseUp 
se ejecutan cuando se deja de presionar un botón del mouse. 
Estos eventos reciben cuadro (4) valores y se almacenan en la variables 
Button, Shift X, Y. 
Prívate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As 
Single, Y As Single) 
End Sub 
Prívate Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y 
As Single) 
End Sub 
La variable BUTTON recibe un valor que indica el botón del mouse que se 
presionó: 
Valor 
1 Indica que se presionó el botón Primario. 
2 Indica que se presionó el botón Secundario. 
3 Indica que se presionó el botón Central. 
(No todos los mouse tiene 3 botones) 
La variable SH IFT recibe el valor que indica la tecla especial que se tiene 
presionada cuando pulsa o deja de pulsar uno de los botones del mouse: 
Mayús (Shift), CONTROL (Ctrl) o ALT. 
Valor 
1 Indica que se tiene presionada MAYÚS (Shift). 
2 Indica que se tiene presionada CONTROL (Ctrl). 
3 Indica que se tiene presionada ALT. 
Las variables X, Y reciben el valor de la posición Horizontal y Vertical del 
mouse respectivamente. 
MUY IM PO RTA N TE 
El botón primario del Mouse es el botón principal y permite seleccionar los objetos 
de una manera normal y casi siempre es el botón Izquierdo. El botón secundario del 
Mouse permite acceder a los menú contextúales y casi siempre es el botón derecho. 
Los menú contextúales contienen las opciones mas utilizadas de una aplicación. 
Puede utilizar la configuración del Panel de Control de Windows para configurar el 
Mouse. 
l i l i l í G r u p o E d i t o r i a l Megabyte
V 
Á VISUAL BASIC como debe ser... 
En este libro al botón secundario se le llama “Botón Derecho” 
¡ § É I ¡ I 
DESARROLLO DE LA APLICACIÓN N° 04 
En la aplicación N° 04 sólo se necesita programar el Evento Click de cada Botón de 
Comandos. 
ELBOTÓN: NUEVO ALUMNO. 
Debe limpiar las cajas de texto y ubicar el cursor en Textl para ingresar un nuevo 
alumno. 
EL BOTÓN: FINALIZAR. 
Debe finalizar o terminar la aplicación, ^sto también debe suceder si se pulsa la tecla 
ESC. 
Entonces dentro del evento click del botón Nuevo Alumno se debe escribir: 
Textl = ”” 
Text2 = ”” 
Text3 = ”” 
Text4 = ”” 
Text5 = ”” 
Textl.Setfocus 
Y dentro del botón finalizar se debe escribir: End 
NOTA: 
• La instrucción END finaliza un Programa, SETFOCUS ubica el cursor en un 
determinado control y Textl = ”” borra el contenido de Textl. Entre las comillas no 
debe dejar espacios en blanco. 
• Después de escribir las instrucciones de un control puede cerrar la ventana haciendo 
clic en el botón cerra (X). 
• Las instrucciones quedan grabadas cuando se graba el proyecto o el formulario. 
ASPECTO FINAL DE LAS VENTANAS DE COMANDOS 
BOTONNUEVO ALUMNO BOTON FINALIZAR 
Private Sub Command2_Click() ¿ 
End 
End Sub 
G r u p o E d i t o r i a l M egabyte^ 
^CAPÍTULO II:Descripción de los Controles Básicos 
VISUAL BASIC AYUDA A PROGRAMAR 
Cuando escribe el nombre de un control que tiene en el formulario y luego 
un punto se visualiza las propiedades o eventos que puede asignar a dicho 
control. Una vez que se encuentra seleccionada (Sombreada) la propiedad 
o evento en forma automática o en forma manual (con la flecha hacia abajo 
o h acia arrib a), pulse la barra e s p a d a d o ra para que se escrib a 
automáticamente. 
Esta ayuda se puede activar o desactivar en la opción: 
HerramientasOpcionesEditorLista de miembros automática 
También le ayuda cuando escribe una función visualizando los parámetros 
que necesita. Cuando esto ocurre quiere decir que ha escrito correctamente 
el nombre del control o el nombre de la función. 
I P P r o y e c t o l - F o im l (C ó d ig o ] 
I C o m m a n d l " l i J c " ck 
1t Proyecto! • Form! (Código) 
P r i v a t e S u b C o m m a n d l _ C l i c k IT 
T e x t 1. 
E n d S [^lÁiignment 
eü* Appearance 
Ef? BackColor 
i**? BorderStyle 
nf? CausesValidation 
eS* Container 
ei? DataChanged 
Commandl Click 
Private Sub Commandl_Click() 
Dim R As Intger 
R = Right ( 
End S Right(SftMg,Le)i#/lsi-onfl) [ 
i f 1 
A PLIC A C IÓ N PRO PU ESTA N° 02 
Escriba la siguiente aplicación: 
Si se hace un click en el botón de comando N° 1 (Nombre), se debe visualizar 
tu nombre. Si se hace un click en el botón de comando N° 2 (Centro de 
Estudios), se debe visualizar el nombre del colegio, instituto, universidad, 
etc. donde estudias. Si se hace un click en el botón de comando N° 3 (Fecha 
de Nacimiento), se debe visualizar la fecha en que naciste. 
O - | n |_ g j 
N o m b re ¿I Centro de E s tu d io s F e c h a d e N a c im ie n to 
Salir 
G r u p o E d it o r ia l Megabyte 75
VISUAL BASIC como debe ser... 
TRABA JAN DO CON LOS NO M BRES DE LOS C O N TR O LE S 
Todos los controles tienen asignado un nombre automáticamente cuando 
son dibujados en el formulario, esto lo puede confirmar mirando la propiedad 
Ñame (Nombre) de cada control que dibuja en el formulario. 
Por ejemplo: 
La primera etiqueta (Label) que dibujas en el form ulario tiene 
automáticamente el nombre Label 1, la segunda Label2, etc. 
La primera caja de textos (Text) que dibujas en el formulario tiene 
automáticamente el nombre T extl, la segunda Text2, etc. 
El primer botón de comando (Command) que dibujas en el formulario 
tiene automáticamente el nombre Command 1, el segundo Command2, 
etc. 
Para desarrollar una aplicación puedes utilizar estos nombres que se asignan 
automáticamente al ser dibujados en el formulario asignarles nombres que 
usted cree conveniente (ESTO ES OPCIONAL). 
N O TA: 
Normalmente los controles en su propiedad Caption o Text tienen lo 
mismo que se asigna automáticamente en la propiedad Ñame, por eso 
tenga mucho cuidado de no modificar la propiedad Ñame en lugar de 
la propiedad Caption o Text. 
E jem plo: 
En la siguiente aplicación se les asigna a los controles nombres distintos a 
los que Visual Basic les asigna en forma automática. 
7 6 G r u p o E d it o r ia l Megabyte“ 
A PLIC A C IÓ N DESARROLLAD A N° 05 
Esta aplicación permite ingresar el nombre, fecha de nacimiento, DNI y 
domicilio actual de una persona utilizando la propiedad Ñame de los controles. 
. Ingreso de D a lo s 
■ Nombre.................. 
! Fecha de Nacimiento ! ! 
■ DNI 
Domicilio Actual • 
Paso N° 01: D ib u jar los controles. 
Salir 
• Labell- 
: Label2 : 
- Label3 • 
Label4- • 
; |Texl3 
............| Text 4 
Command! : Command2 
Paso N° 02: D ib u jar los controles. 
ETIQUETAS 
CONTROL 
L a b e 11 
Label2 
LabeB 
Label4 
CAJAS DE TEXTO 
CONTROL TEXT 
Textl 
Text2 
Text3 
Text4 
CAPTION 
Nombre Fecha de Nacimiento 
DNI 
Domicilio Actual 
En Blanco En Blanco 
En Blanco 
En Blanco 
CAJAS DE TEXTO 
CONTROL CAPTION 
Coiranandl Nuevo 
Command2 Salir 
NAME 
Nombre 
Fecha 
Dni 
Domicilio 
NAME 
Nuevo 
Salir 
^ G r u p o E d it o r ia l Megabyte 
AUTOSIZE 
True True 
True 
True 
77
VISUAL BASIC como debe ser... 
Paso N° 03:E scribir las instrucciones p a ra los controles. 
Instrucciones del botón Nuevo. 
Cuando haga clic o pulse la tecla F7 en el botón Nuevo, se visualiza la 
siguiente ventana: 
Observe el nombre del 
Control 
1 IH Proyectol - Formi (Código) 
Huevo jtJ 1 Click 
Private S u b Nuevo C l i c k () T 
1 t " 
Ü I 1 Q b U D r 
k u j A 
En esta ventana se tiene que escribir las instrucciones para limpiar el contenido 
de las cajas de texto y poder ingresar los datos de otra persona. 
Como cada caja de texto tiene un nombre asignado, entonces se tiene que 
escribir las siguientes instrucciones: 
1 tü P royectol - Formi (Código] Llnlxl 
1 Huevo 1 Click t | 
Private Sub Muevo Click ( ) T 
Nombre = 
Fecha = 
Dni = 
Domicilio = 
Nombre.SetFocus — 
End Sub 
8 -ill ±J 
Instrucciones del Botón Salir 
Cuando haga clic o pulse F7 en el botón Salir, se visualiza la siguiente ventana 
donde debe escribir End. 
Observe el nombre 
del control 
P 78 G r u p o E d it o r ia l Megabyte 
PREFIJOS PARA LOS NOMBRES DE LOS 
CONTROLES 
Si tu lo deseas, puedes hacer uso de los prefijos que se recomiendan 
utilizar en los nombres de los controles de Visual Basic, de tal manera que 
con su nombre se sepa a qué tipo de control te refieres. Por ejemplo, si en 
una caja de textos va a ingresar la dirección de una persona, le puedes 
asignar el nombre de txtdireccion. Esto es opcional, incluso si tu lo deseas 
puedes crear tus propios prefijos para los nombre de los controles en sus 
aplicaciones. 
Control Prefijo Control Prefijo 
Base de datos db Line lin 
Campo f Id ListBox 1st 
CheckBox chk Menu mnu 
ComboBox cbo MsChar ch 
Command Button cmd Ole Contaiifeg-; ole 
Command Dialog cdl Option Button opt 
Data Control dat Picture Box pic 
DbCombo dbc ProgressBar prg 
DbGrid dbg Recordset Ree 
DbList dbl ScrollBar Horizontal hsb 
Directory ListBox dir Scrollbar Vertical vsb 
Drive ListBox drv Shape shp 
DTPicker dtp SsTab tab 
File ListBox fil Tabla tb 
Form f rm TextBox txt 
Frame f ra Timer tmr 
Image img UpDown upd 
Label lbl 
G r u p o E d i t o r i a l Megabyte 79
é S È k VISUAL BASIC como debe ser... 
ERRORES MAS COMUNES 
Si al ejecutar una aplicación se m uestra una ventana de m ensaje 
indicando un error, haga click en el botón aceptar o en el botón Debug 
y finalice la aplicación para corregir el error. 
Se espera fin del procedimiento. 
Posiblemente, borró End Sub por casualidad al 
escribir las instrucciones del control 
- « r - v . • _ j | 
j v Compile error: 
Expected End Sub 
A ceptar j j Ayuda 
R un-tim e e rro r '424‘: 
O b ject required 
End J { D e b u g j| Help I 
Se req u iere un objeto. 
seguramente Ud. se está refiriendo a un control que no existe en el formulario, 
escribió en forma incorrecta la propiedad del control o a una propiedad le 
está asignando un valor incorrecto. 
¿ G ra b a r los cam bios? SI, NO o CA N CELA R 
Seguramente quiere salir del proyecto actual sin grabarlo. 
80 G r u p o E d it o r ia l Megabyte 
PREGUNTAS DE REPASO N° 02 
1. ¿Cómo se borra un control del formulario? 
2. La propiedad Caption sirve para: 
3. ¿Con qué propiedad se puede evitar que un control se visualice cuando 
se ejecute una aplicación? 
4. Para que al ejecutar el formulario ocupe toda la pantalla se usa la 
propiedad: 
5. ¿Cuál es la diferencia entre una etiqueta y una caja de textos? 
6. ¿Cuál es el nombre por defecto de un formulario, caja de textos, etiqueta 
y botón de comandos? 
7. ¿Para qué sirve la propiedad Font? 
8. ¿Para qué sirve la propiedad Tooltiptext? 
9. ¿Cuál es la diferencia entre la propiedad visible y la propiedad Enabled? 
10. ¿Cuántas formas de ejecutar una aplicación conoces? 
11. ¿Para qué sirve la propiedad Backcolor? 
12. ¿Cuántas formas de finalizar una aplicación conoces? 
13. ¿Para qué sirve la propiedad Forecolor? 
14. Los pasos para desarrollar una aplicación son: 
15. ¿Cómo se borra un control del formulario? 
16. ¿Cómo se puede asignar un color a un botón de comandos? 
17. ¿Qué utilidad tiene la propiedad Tabindex en las cajas de texto? 
18. Para escribir instrucciones dentro de un control se debe: 
19. ¿Cuál es el evento por defecto de un formulario, etiqueta, caja de texto 
y de un botón de comandos? 
20. ¿Cuándo se ejecutan las instrucciones que se encuentran en el evento 
Click? 
¡CUIDADO! 
No pase a los siguientes temas sin responder 
correctamente a esta autoevaluación. 
G r u p o E d it o r ia l Megabyte 81
CAPITULO III 
Nombre del Trabajador David Infante 
Horas Trabajadas Normales 48 
Horas Extras 5 
Pago por Hora Normal 10 
Pago por Hora Extra 20 
Total por Horas Normales 480 
Total por Horas Extras 100 
Sub 
Descuento 
Total a 
; Calcular 
Nuevo 
□ a v e Incorrecta 
l'XA 
Aceptar Cancelar 
Producto 
Precio Unitario 
Cantidad Comprada 
Subtotal S/. 
Calce1 
Nuf 
ELEMENTOS D e scuentoS /. | 0 DE LA 
TOTAL A PAGAR $/. ===> PROGRAMACION 
Se
I 
PROCEDIMIENTOS Y FUNCIONES -- --------------------------------------------------------------- ;------------------------------ 
Un procedimiento es un conjunto de instrucciones que se le da a la 
computadora para que desarrolle un determinado proceso. A este conjunto 
de instrucciones se le asigna un nombre para poder llamarlo o ejecutarlo en 
cualquier momento. Toda aplicación en Visual Basic está basada en 
procedimientos. 
Según la forma como empiezan a ejecutarse los procedimientos se 
dividen en dos grupos: 
1. Procedimientos conducidos por eventos. 
2. Procedimientos generales. 
PROCEDIMIENTOS CONDUCIDOS POR EVENTOS 
Son procedimientos ligados siempre a un control y a un evento 
determinado y que se ejecutan cuando el control reconoce que a ocurrido 
dicho evento. También se puede ejecutar cuando es invocado desde cualquier 
otro procedimiento. Estos tipos de procedimientos se crean automáticamente 
cuando comenzamos a escribir instrucciones para un determinado control. 
Por ejemplo el siguiente procedimiento llamado Command l Click, 
se crea automáticamente cuando hacemos doble click o pulsamos la tecla 
F7 en el control COMMAND 1 para escribir las instrucciones
VISUAL BASIC como debe ser... 
Las instrucciones que Ud. escriba en este procedim iento llam ado 
C o m m an d l_ C lick se ejecutan cuando se haga CLICK en el control 
COMMAND1; es decir cuando ocurra el evento Click en el control 
Commandl. 
El nombre del procedimiento depende del nombre que Ud. ha asignado al 
control en la propiedad ÑAME y del evento elegido. Si Ud., no ha asignado 
un nombre al control, entonces Visual Basic utiliza el nombre que le asigna 
a cada control en forma automática. 
Así como cada control tiene un nombre que en forma automática le asigna 
Visual Basic, también tiene un evento predeterminado el cual se visualiza 
cuando empezamos a escribir las instrucciones para el control. Por ejemplo, 
el evento predeterminado de los botones de comandos (Command) es el 
evento CLICK y si queremos escribir instrucciones en otro evento, debemos 
elegirlo de la lista de eventos. Otros ejemplos: 
Prívate Sub Form_Activate() ^as instrucciones que se escriban 
en este procedimiento se ejecuta 
EndSub cuando el formulario es activado 
Prívate Sub Form Load() Las instrucciones que se escriban en 
este procedimiento se ejecuta cuando el 
EndSub formulario es llamado para que quede activado. 
Prívate Sub Textl_Change() Las instrucciones que se escriban en este 
procedimiento se ejecuta cuando se modifica 
EndSub el contenido del control Textl. 
Prívate Sub Textl_KeyPress(KeyAscii As Integer) 
EndSub 
Las instrucciones que Ud. escriba en este procedimiento se ejecutan cuando se 
presiona alguna tecla (escribe) en el control Textl y en la variable KeyAscii se 
almacena el valor de la tecla pulsada. Por ejemplo si pulsa la tecla ENTER se 
almacena el valor 13, ESC almacena el 27, la letra A el valor 65, etc. Esto quiere 
decir que almacena el valor ASCII. 
86 G r u p o E d it o r ia l Megabyte ^ 
CAPÍTULO III: Elementos de la Programación 
P R O C E D IM IE N T O S G ENERALES 
Son los procedimientos que se ejecutan sólo cuando se hace una llamada 
explícita a dicho procedimiento. Estos tipos de procedimientos no se crean 
automáticamente, por eso también reciben el nombre de procedimientos o 
funciones definidos por el usuario. 
Un procedimiento general puede escribirse como procedimiento SUB o 
como función FUNCTION. Un procedimiento conducido por un evento 
siempre es un procedimiento SUB. 
Según el lugar de la aplicación donde los podemos llamar, los procedimientos 
generales pueden ser: 
1. Procedimientos a nivel de formulario. 
2. Procedimientos a nivel de módulo. 
Procedimientos a Nivel de Formulario. 
Los procedimientos a nivel de formulario son aquellos que se pueden 
llamar o ejecutar sólo desde el formulario en el cual han sido creados. 
Procedimientos a Nivel de Módulo. 
Los procedimientos a nivel de módulo son procedimientos públicos; es 
decir, se pueden llamar o ejecutar desde cualquier formulario de la aplicación. 
Sintaxis para un procedim iento: 
[Prívate | Public] [Static] Sub nombre [(listaDeArgs)J 
[instrucciones] 
[Exit Sub] 
[instrucciones] 
End Sub 
G r u p o E d it o r ia l Megabyte 87 « S i
VISUAL BASIC como debe ser. 
Un procedimiento tiene las siguientes partes: 
1. FORM AS DE ACCESO: 
Prívate Indica que se puede tener acceso al procedimiento sólo desde 
los procedimientos del formulario donde se ha declarado o 
creado(Procedimiento a nivel de Formulario). 
Public Indica que se puede tener acceso al procedimiento desde 
todos los procedimientos de cualquier formulario que forma 
parte de la aplicación (procedimiento a nivel de módulo). 
Statíc Indica que se conservan los valores de las variables locales 
del procedimiento entre una llamada al procedimiento y otra. 
El atributo Static no afecta a las variables declaradas fuera 
de Sub, ni siquiera cuando se usa en el procedimiento. 
2. N O M B R E : 
Nombre del procedimiento que se utiliza para poder llamarlo o ejecutarlo. 
3. LISTA DE ARG U M EN TO S (LISTADEARGS): 
Lista de variables que almacenan los valores que se pasan al procedimiento 
cuando es llamado. Cuando se pasan varios valores se utilizan variables 
múltiples y se separan con comas. También se llaman parámetros. 
4. IN STR U C C IO N ES 
Cualquier grupo de instrucciones que se va a ejecutar dentro del cueipo 
del procedimiento. 
Las palabras claves E x it S ub producen la salida inm ediata del 
procedimiento. La ejecución del programa continúa con la instrucción 
siguiente a la instrucción que ha llamado al procedimiento. 
Sintaxis pa ra una F unción: 
[Public|Private][Static]Function nombre [(listaDeArgs)][As tipo] 
[instrucciones] 
[nombre = expresión] 
[Exit Function] 
(instrucciones] 
[nombre = expresión] 
End Function 
Además de lo que contiene un procedimiento, una Función tiene las siguientes 
partes: 
' 8 8 G r u p o E d it o r ia l M e g a b y t e ^ 
CAPÍTULO III: Elementos de la Programación 
1. T IPO 
Es opcional e indica el tipo de dato del argumento que se pasa a la función. 
2. EX PRESIÓ N 
Es el valor que retorna la función. 
Las palabras clave Exit Function producen la salida inmediata de la Función. 
La ejecución del programa continúa con la instrucción siguiente a la 
instrucción que ha llamado a la Función. 
MUY IMPORTANTE 
* La diferencia principal entre una Función y un Procedimiento es que un 
procedimiento nunca devuelve un valor mientras que la función si puede 
devolver un valor y además una función puede usarse en una expresión. 
* Al conjunto de procedimientos, funciones, declaraciones de variables 
y constantes se le llama M ÓDULO. Un módulo puede ser: 
Módulo de formulario, contiene todos los procedimientos a nivel de 
formulario los cuales se graban en un archivo con la extensión *.Frm. 
Módulo estándar, contiene todos los procedimientos y declaraciones a 
nivel de módulo, se graban en un archivo con la extensión *.Bas. 
PARÁMETROS POR REFERENCIA. 
Permite que el valor de un parámetro pueda cambiarse en el cuerpo 
de la función o procedimiento. 
Para pasar un parámetro por Referencia debe estar sin paréntesis. 
La palabra ByRef (Opcional), indica que el parámetro se pasa por 
referencia. ByRef es el modo predeterminado en Visual Basic. 
PARÁMETROS POR VALOR. 
Permite que el valor de un parámetro no pueda cambiarse en el cuerpo de 
la función o procedimiento. Para pasar un parámetro por Valor debe estar 
entre paréntesis. La palabra By Val (Opcional). Indica que el argumento se 
pasa por valor. 
Ejemplo: 
Raíz (Num), D if 
En la llamada a la función Raíz, el parámetro Num es pasado como por 
Valor y el parámetro Dif es pasado por Referencia. 
l i l i l í G r u p o E d i t o r i a l Megabyte 8 9
^ÉÍÍÍÉÉ^ VISUAL BASIC como debe ser... 
CREACIÓN DE PROCEDIMIENTOS A NIVEL DE FORMULARIO 
Existen 2 formas para crear este tipo de procedimientos: 
Ira . Form a. 
Active la ventana de código o instrucciones del formulario o de cualquier 
control haciendo doble click en él o pulsando la tecla F7, luego elija la opción 
Tools (herramientas) de la Barra de Menú y luego ADD PROCEDURE 
(Agregar Procedimiento). Se visualiza la siguiente ventana: 
Agregar procedimiento m 
Nombre: j | 
Tipo 
(* Procedimiento 
Función 
Alcance 
(* Público 
C Propiedad 
í~ E vento 
; 
f~ Todas las variables locales son estáticas 
A ceptar 
Cancelar- 
Una vez que Ud. llene los datos de esta ventana con la información 
correcta del procedimiento que desea crear, haga click en el botón Aceptar 
para que se muestre la plantilla del procedimiento y empezar a escribir las 
instrucciones que se deben ejecutar cuando el usuario llame al procedimiento. 
2da. Form a. 
Active la ventana de código o instrucciones del formulario o de cualquier 
control haciendo doble click en él o pulsando la tecla F7, luego ubique el 
cursor después de cualquier instrucción EN D SUB y escriba la palabra 
SUB seguida del nombre del procedimiento que desea crear o la palabra 
FUNCTION y el nombre de la función y despues pulse la tecla ENTER. 
G r u p 90 o E d ito r ia l Mega b y te 
CAPÍTULO III: Elementos de la Programación < ^ ¡ ¡ ¡ || 
Ejemplo: Para crear un procedimiento llamado cambio, escriba la siguiente 
instrucción y luego pulse la tecla ENTER. 
SUB CAMBIO 
NOTA: 
Para crear o activar la ventana de declaración de un formulario, haga doble 
click en cualquier parte libre del formulario o pulse la tecla F7. Luego, de la 
lista de objetos elija GENERAL y de la lista de eventos DECLARACIONES. 
LLAMAR A PROCEDIMIENTOS 
Para llamar o ejecutar procedimientos sólo se necesita escribir el nombre 
del procedimiento con los argumentos o parámetros si es necesario y 
opcionalmente puede utilizar la instrucción CALL. 
La sintaxis para llamar o ejecutar un procedimientos es: 
[Cali] nombre [listaargumentos] 
La instrucción CALL es opcional, si Ud. la utiliza para llamar o ejecutar 
procedimientos que necesitan argumentos o parámetros, estos deben estar 
entre paréntesis. Por ejemplo la siguiente instrucción llama al procedimiento 
IMPRIME utilizando la instrucción CALL y le pasa 2 argumentos. 
Cali imprime("Hola",3) 
La siguiente instrucción llama al procedimiento IMPRIME sin utilizar la 
instrucción CALL y le pasa 2 argumentos. 
Imprime "Hola",3 
NOTA: 
Para pasar una matriz completa a un procedimiento, use el nombre de 
la matriz seguida de paréntesis vacíos. 
G r u p o E d it o r ia l Megabyte 91 m m
o 
S VISUAL BASIC como debe ser... 
CONSTANTES 
Es un elemento con un nombre determinado que mantiene un valor 
constante durante el desarrollo de todo el programa el cual no se puede 
cambiar. La constantes se definen con la instrucción CONST. Por ejemplo: 
CONST Saludo = ’’Buenos Dias” 
Define la constante SALUDO que tendrá el texto Buenos Días durante 
la ejecución del programa. Esto quiere decir que si se desea utilizar el texto 
puede utilizar sólo la constante Saludo. Así, la siguiente instrucción muestra 
el texto Buenos Días en el control Label 1: 
Label 1 = Saludo 
La siguiente instrucciones define la constante IGV con el valor 18. 
Const IGV = 18 
Si durante el desarrollo del programa escribimos por ejemplo IGV = 16 para 
cambiar de valor a la constante IGV, se visualiza un mensaje de error. 
M icrosoft V isu a l Basic n 
Error de compilación: 
Asignación a la constante no permitida 
Aceptar Ayuda 
NOTA: 
La definición de constantes puede empezar con las palabras Public o Private. 
Para que sean públicas o privadas. Por defecto son Privada. 
G r u p 92 o E d ito r ia l Megabyte 
CAPÍTULO III: Elementos de la Programación % 
VARIABLES 
Una variable es un elemento con un nombre determinado que contiene 
un valor en forma temporal hasta que la aplicación finalice. El valor puede 
variar en cualquier momento de la ejecución de la aplicación. Una variable, 
según el lugar de la aplicación donde se desea utilizarla puede ser: 
1. Variables a nivel de procedim iento. 
-Si una variable se declara a nivel de procedimiento, significa que conserva su 
valor (se reconoce) sólo dentro del procedimiento donde ha sido declarado. 
2. Variables a nivel de Form ulario. 
Si una variable se declara a nivel de formulario, significa que conserva su 
valor (se reconoce) en cualquier procedimiento del formulario donde ha 
sido declarada. 
3. Variables a nivel de M ódulo. 
Si una variable se declara a nivel de módulo, significa que conserva su 
valor (se reconoce) en cualquier procedimiento de cualquier formulario 
de la aplicación. 
La sintaxis básica para declarar una variable es: 
Am bito Nombre As Tipo 
1) A M B IT O : 
El ámbito indica en qué lugar de la aplicación desea utilizar la variable y 
puede ser una de las siguientes palabras claves: Dim, Static, Prívate o Public. 
Dim : Se puede utilizar a nivel de procedimiento y a nivel de formulario. 
Si se declara una variable a nivel de procedimiento con la palabra 
DIM, Visual Basic reinicializa (borra su contenido) la variable 
cada vez que ejecuta el procedimiento. 
Static : Se utiliza sólo a nivel de procedimiento. Cuando una variable se 
declara con la palabra STATIC, Visual Basic no reinicializa la 
variable cada vez que se ejecuta el procedimiento, sólo lo hace la 
primera vez. Esto quiere decir que la variable conserva su valor 
entre una llamada al procedimiento y otra. 
Prívate: Se utiliza sólo a nivel de módulo e indica que la variable es privada; 
es decir, sólo va a ser reconocida dentro del módulo donde ha 
sido declara. 
Public : Se utiliza sólo a nivel de módulo e indica que la variable es publica; 
es decir, va a ser reconocida en toda la aplicación. 
G r u p o E d it o r ia l Megabyte 93 ^ j | ¡ J | |
é S B ts VISUAL BASIC como debe ser... 
2) N O M B R E : 
Es el nombre que utilizamos para referirnos a la variable en la aplicación. 
El nombre de una variable tiene que comenzar con una letra y puede 
tener como máximo 255 caracteres. Los caracteres pueden ser letras, 
dígitos, el carácter subrayado y los caracteres de declaración del tipo de 
la variable (%,&,!,#,@ y $). El nombre de una variable no puede ser una 
palabra reservada porque tienen un significado especial para Visual Basic. 
3) T IP O : 
Es opcional y determina qué clase de valores puede almacenar una variable. 
Si no indica el tipo no utilice la palabra AS, en este caso la variable se 
considera de tipo Variant. 
TIPOS DE VARIABLES 
TIPO DESCRIPCIÓN CARÁCTER RANGO 
Byte I Byte 0 a 2 5 5 
Boolean Lógico 
(2 Bytes) 
T rue o False 
Integer Entero 
(2 bytes) 
% -32768 a 32767 
Long Entero Largo 
(4 bytes) 
& -2147483648 a 2147483647 
Single Real Simple 
Precisión (4 bytes.) 
i -3.40E+38 a 3.40E+38 
Double Real Doble 
Precisión (8 bytes) 
# -1.79D+308 a 1.79D+308 
Currency Número con Punto 
Decimal Fijo (8 bytes) 
@ -9.22E+14 a 9.22E+14 
String Cadena de Caracteres $ 
(4 b.+ l b./car. hasta 64K.) 
0 a 65500 car. 
Date 8 bytes 01/01/100 a 31/12/9999 
Variant es el tipo de datos al que se convierten todas las variables si no se 
declaran explícitamente de algún tipo. El tipo de datos Variant no tiene carácter 
de declaración de tipo. 
Los tipos de datos Byte, Integer, Long, Single, Double y Currency indican 
que una variable va a almacenar sólo números, pero cada uno de estos tipos 
tiene sus características. Por ejemplo: 
Una variable definida de tipo Byte acepta números enteros (sin decimales), 
pero sólo entre 0 y 255. 
94 G r u p o E d it o r ia l Megabyte 
CAPÍTULO III: Elementos de la Programación 
Una variable definida de tipo Integer, acepta números enteros comprendidos 
entre -32768 hasta 32767. Una variable definida de tipo Single, Double y 
Currency acepta números sin decimales y con decimales. 
MUY IMPORTANTE: 
Si a una variable la declaramos de un tipo determinado y le asignamos un 
valor incorrecto se visualiza un error. 
Ejemplo N°l: 
Dim A as Integer 
A = 50000 
Se define la variable A de tipo Integer cuyo valor máximo debe ser 32767, 
pero le asignamos el valor 50000. En este caso se visualiza un error de 
overflow (desbordamiento): 
E rro r '6 ' e n tie m p o d e e je c u c ió n : 
D e s b o rd a m ie n to 
j T e r m in a r j 1 D e p u ra r j | A y u d a | 
Ejem plo N° 2: 
Dim A as Integer 
A = "Juan" 
Se define la variable A de tipo Integer cuyo valor máximo debe ser 32767, 
pero le asignamos un valor tipo Texto. En este caso se visualiza un error de 
Type Mismatch (tipo): 
E r ro r '1 3 ' e n tie m p o d e e je c u c ió n : 
N o c o in c id e n lo s tip o s 
D e p u ra r A y u d a 
G r u p o E d it o r ia l Megabyte 95
éS K S k VISUAL BASIC como debe ser.. . < § § 
¿CÓMODECLARAR VARIABLES ANIVELDEPROCEDIMIENTO? 
Las variables a nivel de procedim iento se declaran dentro de cada 
procedimiento que Ud., crea en su aplicación. Su utilización más común es 
intervenir en cálculos intermedios. Por ejemplo: 
Prívate Sub CommandI_Click() 
Dim NOM As String * 30 
Dim E As Integer 
Static C As Integer 
Otras instrucciones 
End Sub 
¿CÓMO DECLARAR VARIABLES A NIVEL DE FORMULARIO? 
Debe activar la ventana de declaración de variables. Para ello se debe hacer 
doble click en cualquier control o pulsar la tecla <F7>, lueg'o de la lista de 
controles elegir GENERAL y de la lista de eventos elegir DECLARACIONES. 
Se puede visualizar 
ti 
|(General) j(Declarations) 
1"m P ro je c t-! * Ft»m 1 (C ode) -J C lx jl 
I(General) V j |(Declarations) j r j j 
; 
Jd 
iSëjj ±r 
[O ption E x p l i c i t ¿ : 
s jJ J i T 
Si la ventana tiene la instrucción OPTION EXPLICIT, significa que se generará 
un error por cada variable que utilice y no declare: V ariable not Defined 
(Variable no definida). 
Si Ud., desea puede borrar la instrucción Option Explicit y también si esta 
ventana no la tiene, la puede escribir. 
¿CÓMO DECLARAR VARIABLES A NIVEL MÓDULO? 
De la opción Proyecto de la barra de menú elija la opción Adicionar Módulo. 
^ P ro y e c lo l - M odule! (Código) H l i i E [ | Este tipo de variables normal­mente 
se utilizan |(General) jrJ j (Declaraciones) cuando nuestra 
1 ^ aplicación tiene varios for­5 
mularios. 
_1_U 
í j j |¡ |l § ^ 96 G r u p o E d i t o r i a l Megabyte 
CAPÍTULO III: Elementos de la Programación 
A PLIC A C IÓ N DESARROLLAD A N° 06 
Esta aplicación muestra la diferencia entre una variable declarada con DIM 
y STATIC dentro de un procedimiento. 
PASO N° 01: Dibujar los controles. 
o Ci ■ - lo l *l 
Increm enta ia variable À y B 
PASO N° 02: Asignar las propiedades. 
C3 5 1 - _ l a l x | 
L a b e ll 
Labei3 
Label2 
Label4 
¡! - 
Com m andl )| 
CONTROL 
Labe11 
Label2 
Label3 
Label4 
BO R D ER STY LE 
0 - None 
0 - None 
1 - Fixed Single 
1 - Fixed Single 
E T IQ U E T A S (L A B E L ) 
C A P T IO N A U T O S IZ E 
Valor de A True 
Valor de B True 
En Blanco False 
En Blanco False 
BOTONES DE COMANDOS 
CONTROL CAPTION 
Coinmandl Incrementa la variable A y B 
Caption del Formulario: Diferencia entre Dim y Static. 
PASO N° 03: Escribir las instrucciones. 
* Sólo se programa en el commandl. Observará que al hacer click en 
este botón la variable A no se incrementa porque está declarada 
con DIM, que perm ite reinicializar una variable cada vez que ,v< 
ejecuta un procedim iento. En el ejem plo, el procedim iento es: 
COMMAND 1_CLICK(). 
Private Sub Commandl_Click() 
Dim A Ai Integer 
Static B Ai Integer 
A = A + / 
B = B + 1 
Labe!3 = A 
Label4 = B 
End Sub 
G r u p o E d i t o r i a l Megabyte 97
 
EJEMPLO DEUNA VARIABLEANIVELDEPROCEDIMIENTO 
□ S E 
VISUAL BASIC como debe ser. 
« .V A R I A B L E S A N IV E L D E P R O C E D IM IE N T O 
PROCEDIMIENTO "A " PROCEDIMIENTO "B " 
Dibuje una etiqueta y dos botones de comandos y asígneles su propiedad 
Caption como se muestra en la aplicación. 
INSTRUCCION DEL COMMAND1 
Prívate Sub Commandl_Click() 
Dim N As Integer 
N = 5 
INSTRUCCIONES DEL COMMAND2 
Prívate Sub Command2_Click() 
Labell = N 
End Sub 
Labell = N 
N = 10 
End Sub 
Al hacer click en el Commandl (Procedimiento "A"), se visualiza el valor 5, 
y luego la variable N toma el valor 10, pero al hacer click en el Command2 
(Procedimiento "B") se visualiza el error "VARIABLE NO DEFINIDA" o 
no se muestra nada. Esto depende si existe o no la instrucción Option Explicit. 
Como puede observar, el valor de la variable N no es reconocida en el 
segundo procedimiento (Command2) porque fue declarada dentro del 
procedimiento commandl (Nivel de Procedimiento). 
EJEMPLO DE UNA VARIABLE ANIVELDE FORMULARIO. 
Para que la variable N sea reconocida en ambos procedimientos, debe de 
declararla a Nivel de Form ulario. 
1 m P ro ye cto l - Form i (Código) . n l x l 
| (General) j(Declaraciones) -*■] 
D im N A s I n t e g e r ~ H 
ü j U 
J j 
Las instrucciones de los botones de comandos serán: 
Prívate Sub Command] _Clíck() 
N = 5 
Labell = N 
N = 10 
End Sub 
K A 98 
Prívate Sub Command2_Clíck( ) 
Labell = N 
End Sub 
G r u p o E d it o r ia l Megabyte-^ 
CAPÍTULO III: Elementos de la Programación 
OPERADORES ARITMETICOS: 
Suma 
Resta 
Multiplicación 
División 
 División Entera 
MOD Resto de una División 
A Exponenciación 
0 Orden de Operación 
Ejemplos: 
OPERACION 
5+13 
8 0 -4 
7 *6 
13/2 
13  2 
13 MOD 2 
4 A3 
12+14/2 
(12 +14)/2 
RESULTADO 
18 
76 
42 
6.5 
6 
1 
64 
19 
13 
ORDEN DE EJECUCIÓN DE LOS OPERADORES (Prioridad) 
Cuando hay varios operadores en una misma expresión se resuelven en un 
orden predeterminado según la prioridad de los operadores. Así: 
1. Exponenciación (A) 
2. Negación (-) 
3. Multiplicación y división (*, /) 
4. División de enteros () 
5. Resto de una División (Mod) 
6. Suma y Resta (+, -) 
NOTA: 
Si los operadores de una expresión tienen la misma prioridad se ejecutan de izquierda 
a derecha. 
Los paréntesis cambian el orden de operación porque toda expresión que tenga 
paréntesis se ejecuta primero y si existen varios paréntesis primero se ejecutan los 
paréntesis más internos. Por ejemplo, si las notas de un alumno son 12 y 14, la 
siguiente expresión: 12 + 14/2 dará como promedio 19 y la expresión (12 + 14) / 2 
dará como promedio 13. 
G r u p o E d it o r ia l Megabyte 99
éÊ Ê È k' VISUAL BASIC como debe ser... 
COMENTARIOS 
Los comentarios son textos que se pueden utilizar para documentar nuestra 
aplicación perm itiendo de esta m anera ir explicando cómo estamos 
desarrollando la aplicación y cómo funciona. Este texto explicativo y 
aclaratorio es ignorado por la computadora cuando nuestra aplicación se 
ejecuta. 
Los comentarios se pueden colocar dentro de un programa utilizando la 
instrucción REM o el Apostrofe ( ‘). 
La instrucción REM normalmente se utiliza al inicio de una línea y en forma 
independiente. Por ejemplo: 
Rem Se limpian las cajas de texto. 
Textl="" 
Text2 = "" 
Text3 = "" 
Si queremos colocar el comentario en la misma línea de instrucción, se debe 
separar con dos punto (:). Ejemplo: 
Textl = "" : Rem Limpia la caja de textos 
El apostrofe se puede utilizar al inicio de una línea en forma independiente o 
al final de una línea de instrucción. Por ejemplo: 
1. 
‘El valor de A se incrementa en 1 
A = A + 1 
2. A = A + 1 ‘El valor de A se incrementa en 1 
NOTA: 
Cuando se insertan los comentarios se visualizan con un color diferente al 
de las instrucciones, este color es normalmente el verde. 
100 G r u p o E d it o r ia l Megabyte 
^ CAPÍTULO III: Elementos de la Programación 
APLICACIÓN DESARROLLADA N° 07 
Ingresar el nombre de un trabajador, las horas normales que ha trabajado, 
las horas extras, el pago por cada hora normal y extra. Al hacer un Click en 
el botón Calcular se debe calcular y mostrar el total por las horas normales, 
el total por las horas extras, el sub total, un descuento del 10% del sub total 
y el total que se le debe pagar. 
1 üi_ PAGOS 
Nombre del Ttabajadoi David Infante 
Horas T r abajadas Normales 48 
Horas Extras 5 
Pago por Hora Normal 10 
Pago por Hora Extra 20 
Total por Horas Normales 
GO 
O 
Total por Horas Extras I I 00 
Sub Total |580 
Descuento (10%) |58 
T otal a Pagar j522 
PASO N° 1: D ib u jar los controles. 
Form! 
G r u p o E d i t o r i a l Megabyte 
Calculai 
Nuevo 
Salir 
I - I □ I *1 
L a b e ll ¡T e x tl 
L a b el2 ( i ext2 
Label3 |T e x t3 
L abel4 |T ext4 
L abel5 |T ext5 
LabeIS L a b e ll 1 
Label7 L a b e ll 2 
LabeIS L a b e ll 3 
LabeIS L a b e ll 4 
L a b e ll 0 L a b e ll 5 
C om m andl 
C om m and2 
C om m and3 
101 Wm
^ÜÍÉÉÉ> VISUAL BASIC como debe ser... 
PASO N° 2: A signar las propiedades a los controles. 
Asigne la propiedad Caption al formulario, a los botones de comandos y a la 
etiqueta número 1 hasta la etiqueta número 10 como se muestra en la 
aplicación a desarrollar. 
A las cajas de texto y las etiquetas desde la número 11 hasta la número 15 
no les borre su contenido por se van a limpiar al ejecutar la aplicación. 
PASO N° 3: E scrib ir las instrucciones p a ra los controles. 
Para que al ejecutar la aplicación se limpie el contenido de las cajas de texto 
y de las etiquetas N° 11 hasta la N° 15 y además se ubique el cursor en la 
caja de textos N° 1 para empezar a ingresar los datos, se debe programar en 
el evento ACTIVATE del formulario. Para ello ingrese a la ventana de código 
o instrucciones haciendo doble click en el formulario o pulse la tecla F7 y de 
la lista de controles seleccione el control FORM y de la lista de eventos 
seleccione el evento ACTIVATE. Se visualizará la siguiente ventana: 
| m Proyectol - Formi (Código) 
|Form jftctiuate j r j 
Private S ub Form Activate () Sj| 
End Sub 
S_ÜJ 
Las instrucciones que debe escribir en esta ventana son: 
Prívate Sub Form_Activate() 
Textl = "" 
Text2 = "" 
Textl = "" 
Text4 = "" 
TextS = "" 
Labelll = 
Labell2 = "" 
Labell3 = "" 
Labell4 = "" 
Labell5 = "" 
Textl. SetFocus 
End Sub 
102 G r u p o E d it o r ia l Megabyte <^¡g¡¡ 
CAPÍTULO III: Elementos de la Programación ^¡¡ 
IN STR U C C IO N ES DEL BOTÓN C A LCU LA R . 
Para escribir las instrucciones del botón CALCULAR, debe hacer doble 
click o pulsar la tecla F7 en dicho botón. Si se encuentra dentro de la ventana 
de código seleccione de la lista de controles el control COMMAND1 y de 
la lista de eventos el evento Click. Se visualizará la siguiente ventana: 
H Práyeclol - Foiml (Código) ^ ó í x ] 
Commandl — Click - 
Option Explicit _____ at. 
Private Sub Coimiandl_Clicli: ( ) 
I ---- 
I 
End Sub ....... » I 
m <l I 
i 
JÜ 
MUY IMPORTANTE: 
Si al ingresar a la ventana de código visualiza la instrucciones Option 
Explicit, significa que debe definir todas las variable que va a utilizar. Si 
Ud., no desea definir las variables puede borrar la instrucción Option Explicit. 
Las instrucciones del botón CALCULAR (Commandl) son: 
Prívate Sub Commandl_Click() 
Dim HNT, HET, PHN, PHE, THN, THE, ST, DES, TP As Single 
Const DESCUENTO = 10 
HNT = Val(Text2) ‘Horas Normales Trabajadas 
HET = Val(Text3) ‘Horas Extras Trabajadas 
PHN = Val(Text4) ‘Pago por Hora Normal 
PHE = Val(Text5) ‘Pago por Hora Extra 
THN = HNT * PHN ‘Total por Horas Normales 
THE = HET * PHE ‘Total por Horas Extras 
ST = THN + THE ‘Sub Tota! 
DES = ST * DESCUENTO /1 0 0 ‘Descuento 
TP = ST - DES ‘Total a Pagar 
Labelll = THN 
Labell2 = THE 
Labell3 = ST 
Labell4 = DES 
LabellS = TP 
End Sub 
Ü > IÜ Ü ^ G r u p o E d i t o r i a l Megabyte 1 0 3
#• VISUAL BASIC como debe ser... 
NOTA: 
En esta aplicación se utiliza la función VAL, que permite convertir un 
valor tipo carácter a un valor tipo numérico. Para realizar operacio­nes 
aritméticas con datos almacenados en cajas de texto o etiquetas, 
se recomienda usar la función VAL para convertirlos a numéricos. 
OTRA FORMA DE PROGRAMAREN EL BOTÓN CALCULAR 
En el ejemplo anterior se definen y usan variables y constantes para obtener 
los resultados deseados, pero también se pueden obtener los resultados sin 
utilizarlas.Por eso dentro del botón CALCULAR (Commandl) también se 
puede programar lo siguiente: 
Prívate Sub Commandl_Click() 
Labelll = VaI(Text2) * Val(Text4) 
Labell2 = Val(Text3) * Val(Text5) 
Labell3 = Val( Labelll) + Val(Labell2) 
Labell4 = Val(Labell3) * 1 0 /1 0 0 
LabelI5 = Val(Labell3) - Val(Labell4) 
End Sub 
INSTRUCCIONES DEL BOTÓN NUEVO. 
Cada vez que haga click en el botón NUEVO, se deben limpiar los datos 
ingresados y los resultados y ubicar el cursor en textl para ingresar los 
datos de un nuevo trabajador. 
Como las instrucciones que realizan este proceso se encuentran en el 
procedimiento Form_Activate ya no es necesario volverlas a escribir en el 
botón NUEVO, sólo debe llamar al procedimiento desde este botón. 
La instrucción que debe escribir en el botón NUEVO es: 
Form Actívate 
| t í Proyectol - Formi (Código) | _ | n | x | 
|com m and2 j r J | Click 
P r i v a t e S ub Command2 C l i c k () 
F o rm A c t i v a t e 
(End S ub —1 lililí 
jf1 
¿ m m 
G r u p o E d it o r ia l M egabyte^ 
MUY IMPORTANTE: 
Se puede desarrollar la aplicación de tal manera que los resultados se 
visualicen al ingresar los datos sin necesidad de hacer click en el botón 
CA LCU LAR. Para ello debe llam ar a las instrucciones del botón 
CALCULAR (procedimiento Command2_Click) desde el evento CHANGE 
de cada una de las cajas de textos. 
rm Provecto! - Form! [Código) n | x | 
Tenti J IChange T 
.................................... ........zq 
Private Sub Textl_Change( ) 
Commandl_C 1 ickj 
End Sub 
Private S u b Text2_Change() 
C ommand1_C1i c k 
End Sub 
Private S ub Text3_Change() 
Command1_Click 
End S ub 
Private S ub Text4_Change( ) 
Command1_C1ick 
End S ub 
Private Sub Text5_Change() 
Command1_Click 
End Sub 
De esta manera ya no necesita el botón CALCULAR porque los resultados 
se visualizan cuando se ingresa o modifica cualquier dato. Ud., puede borrar 
el botón CALCULAR porque las instrucciones que contiene permanecen 
en el formulario cuando el botón se borra. 
G r u p o E d it o r ia l Megabyte 105
-------------------------------- ^ ^ 
VISUAL BASIC como debe ser... 
IF - THEN - ELSE 
Permite ejecutar una o más instrucciones dependiendo de la respuesta 
(verdad o Falso) de una condición dada. 
Su sintaxis es: 
1.- If condición Then 
Instrucción(es) 
(Se ejecutan cuando es Verdad) 
Else 
Instrucción(es) 
(Se ejecutan cuando es Falso) 
Endlf 
2.- If condición Then 
Instrucción(es) 
(Se ejecutan cuando es Verdad) 
Endlf 
3.- If condición Then 
Instrucción(es) 
(Se ejecutan cuando es Verdad) 
Elself condición then 
Instrucción(es) 
(Se ejecutan cuando es Verdad) 
Else 
Instrucción(es) 
(Se ejecutan cuando es Falso) 
End If 
4.- If condición Then Instrucción else Instrucción 
Esta ultima sintaxis se pude utilizar normalmente cuando en cada caso de va 
a ejecutar sólo una instrucción, si son dos o más instrucciones se deben 
separar por dos puntos, pero es recomendable utilizar la lera, o 2da. sintaxis 
en estos casos. 
106 G r u p o E d it o r i a l 
CAPITULO III: Elementos de la Programación 
En la condición se pueden utilizar los OPERADORES DE RELACIÓN Y 
LÓGICOS: 
= Igual 
> Mayor Que 
< Menor Que 
>= Mayor o Igual 
<= Menor o Igual 
o Diferente 
AND Y Lógico 
OR O Lógico 
NOT Negación 
Like Comparar Cadenas 
Por ejemplo: 
Se desea mostrar en la etiqueta N° 1 (Labell) el mensaje APROBADO O 
DESAPROBADO, dependiendo de su promedio almacenado en la variable PROM. 
La instrucción será: 
If Prom >= 10.5 Then 
Label 1 = “APROBADO" 
Else 
Labell = “DESAPROBADO” 
End If 
La instrucciones anterior también se puede desarrollar de la siguiente manera: 
If Prom>= 10.5 Then Label 1 =“ APROBADO” Else Label 1=“DES APROBADO” 
La instrucción If se debe utilizar con Else normalmente cuando sólo existen 
dos alternativas como por ejemplo para saber si un alumno está aprobado o 
no, para saber si una persona es mayor de edad o no. 
Cuando existe sólo una o a partir de tres alternativas es mejor utilizar una 
instrucción If sin Else para cada alternativa. 
Por ejemplo: 
Se ha ingresado en Text3 el turno de un trabajador y de acuerdo al turno se 
le da un pago que debe visualizarse en Labeló. 
Mañana (M) ==> 300, Tarde (T) ==> 500 y Noche (N) ==> 700 
G r u p o E d it o r ia l Megabyte 107 <lf¡§¡íj§|^
VISUAL BASIC como debe ser... 
Las instrucciones serían: 
Dim PAGO As Integer 
I f Text3 = "M" Then 
PAGO = 300 
End I f 
I f Text3 = "T" Then 
PAGO = 500 
End I f 
I f Text3 = "N" Then 
PAGO = 700 
End I f 
Label6 = PAGO 
Tam bién se puede d esarro llar de la siguiente m anera: 
Dim PAGO As Integer 
I f Text3 = "M" Then PAGO = 300 
I f Text3 = "T" Then PAGO = 500 
I f Text3 = "N" Then PAGO = 700 
Labeló = PAGO 
La sintaxis N” 03 (con Elself) también se puede utilizar en estos casos: 
Dim PAGO As Integer 
I f Text3 = "M" Then 
PAGO = 300 
E lself Text3 = "T" Then 
PAGO = 500 
E lself Text3 = "N" Then 
PAGO = 700 
End I f 
Labeló = PAGO 
108 G r u p o E d it o r ia l Megabyte^ 
CAPITULO III: Elementos de la Programación 
MSGBOX 
M uestra una ventana de m ensaje en el centro de la pantalla. Tiene 
dos sintaxis: 
1.- Cuando no se espera la respuesta del usuario: 
Msgbox “Mensaje”, Valor,’’Título” 
2.- Cuando se espera la respuesta del usuario: 
Varíable^Msgbox (“Mensaje”,Valor,’’Título”) 
Variable: Almacena un valor tipo entero de acuerdo a la respuesta del usuario. 
Mensaje: Es el mensaje que se desea mostrar. 
Valor : Indica qué botones van a acompañar al mensaje. 
Título : Es el título que desea que tenga la ventana. 
Valor C onstante Botón que se visualiza 
0 vbOKOnly Ok (Aceptar) 
1 vbOKCancel Ok y Cancelar 
2 vbAbortRetrylgnore Anular,Reintentar e Ignorar 
3 vbYesNoCancel Sí, No y Cancelar 
4 vbYesNo Sí y No 
5 vbRetryCancel Reintentar y Cancelar 
16 vbCritical Icono de Error Crítico 
32 vbQuestion Icono de Inten-ogación 
48 vbExclamation Icono de Exclamación 
64 vbínformation Icono de Información 
0 vbDefaultButtonl Primer botón por defecto 
256 vbDefaultButton2 Segundo botón por defecto 
512 vbDefaultButton3 Tercer botón por defecto 
G r u p o E d it o r i a l Megabyte 109
VISUAL BASIC corno debe ser.. . 
ICONOS QUE SE PUEDEN MOSTRAR 
Icono de Error Crítico 16 
Icono de Interrogación 32 
Icono de Exclamación 48 
Icono de Información 64 
O 
V 
NOTA : 
Para visualizar los botones con los iconos se debe sumar los valores 
de cada uno de ellos. Por ejemplo para visualizar los botones Sí y No 
y el icono de interrogación el valor será: 4 + 32 o simplemente 36. 
También se puede usar las constantes en lugar de los valores. 
Si queremos que el mensaje ocupe varias líneas, se debe usar Chr(13) 
al fin a l de cada línea. 
Valores que reto rn a: 
Valor C o n sta n te R espuesta del U suí 
1 vbOK OK (Aceptar) 
2 vbCancel Cancelar 
3 vbAbort Anular 
4 vbRetry Reintentar 
5 vblgnore Ignorar 
6 vbYes Si 
7 vbNo No 
G r u p o E d it o r ia l Megabyte 
O 
CAPÍTULO III: Elementos de la Programación ^ ¡¡Í^ ||P 
Ejem plo: 
1. 
Dim R as Integer 
R=M sgbox(“Está seguro de salir”,3 6 ,”CUIDADO") 
Muestra la siguiente ventana: 
1 
Está seguro de salir 
Sí No 
Si el usuario hace un click en el botón SI, la variable R toma el 
valor 6 y si hace un click en el botón NO la variable R toma el valor 7. 
2. 
Dim T as Integer 
T-M sgB ox("C lave Incorrecta",1 + 16, "Acceso D enegado") 
Muestra la siguiente ventana: 
ü l 
O Clave Incorrecta 
Aceptar ; Cancelar 
Si el usuario hace un click en el botón ACEPTAR, la variable T 
toma el valor 1 y si hace un click en el botón CANCELAR la variable T 
toma el valor 2. 
G r u p o E d it o r ia l Megabyte 111
O B E Sb VISUAL BASIC como debe ser... 
APLICACIÓN DESARROLLADA N° 08 
D esarrollar nuevamente la siguiente aplicación (N ° 04) 
C on las siguientes características: 
1. A l ejecutar la a p lic a c ió n el botón Nuevo Alumno debe estar 
desactivado. Sólo se debe activar cuando com ience a ingresar el 
nombre del alumno. 
2. Cuando el usuario ingrese un campo y pulse E N T E R , el cursor 
debe pasar autom áticam ente al siguiente campo. 
3. A l hacer un c lic k en el botón fin a liz a r se debe m ostrar un mensaje 
de advertencia. Las instrucciones de este botón se deben ejecutar 
tam bién cuando el usuario pulse <E S C >. 
P a r a d e s a r r o lla r la a p lic a c ió n d e b e d ib u ja r to d o s lo s c o n tr o le s y 
a sig n a rles las m ism a s p ro p ied a d es de la aplica ció n N u 02, p e ro adem ás: 
CAPÍTULO III: Elementos de la Programación 
Para desarrollar la característica N° 01 se debe: 
A ) El co m m an dl (N uevo alum no) debe tener en la propiedad Enabled 
el va lo r False. 
B ) Se debe program ar en el evento Change de T e x tl: 
I f Trim(text 1 )=’” ’ Then 
Command 1 ,enabled=False 
Else 
Commandl.enabled= True 
E n d lf 
NOTA: 
1. C om o p u e d e observar, p a ra referirse a la p r o p ie d a d de un control 
dentro de un p ro g ra m a se debe resp eta r la sig u ien te sintaxis: 
Nombre del Control.Propiedad = Valor 
2. La fu n c ió n Trim quita los espacios en blanco que se encuentran a la 
d erech a de una caja d e texto s o d e una cadena. 
3. I f T rim (te x tl) = ” ” Then.- P reguntar si una caja de textos está va ­cía 
(entre las co m illa s no d ebe h a b e r esp a cio s en blanco). Si la 
caja de texto s está vacía el botón N u evo A lu m n o se desa ctiva y 
en caso c o n tra rio (si hay a lg o escrito ) se activa. 
Para desarrollar la característica N°02 de esta aplicación se debe: 
A ) Program ar en el evento Keypress de cada una de las cajas de texto. 
Por ejem plo haga doble C lic k en T e x tl y de la lista de eventos elija el 
evento Keypress. Visualizará: 
Prívate Sub Iext 1 KeyPress(KeyAscii As Integer) 
End Sub 
Entonces se debe program ar lo siguiente: 
Prívate Sub Textl_K eyP ress(K eyA scii A s Integer) 
Ifke ya sc ii = 13 then 
Text2.set focus 
End If 
E nd Sub 
G r u p o E d i t o r i a l Megabyte 113
L a variable KeyAscii almacena el va lo r de la tecla que se ha pulsado. 
E jem plo: E N T E R = 13, ESC = 27, etc. 
Si el usuario ha pulsado la tecla E N T E R (13) el cursor pasa en form a 
autom ática a la segunda caja de Texto. 
En las siguientes cajas de texto tam bién se tiene que program ar casi lo 
mismo: 
Prívate Sub Text2_KeyPress( KeyAscii As Integer) 
Ifkeyascii = 13 then 
Text3.setfocus End If 
End Sub 
Prívate Sub Text3_KeyPress(KeyAscii As Integer) 
Ifkeyascii = 13 then 
Text4.setfocus 
End I f 
End Sub 
Prívate Sub Text4_KeyPress(KeyAscii As Integer) 
Ifkeyascii = 13 then 
Text5.setfocus 
End I f 
End Sub 
Prívate Sub Text5_KeyPress(KeyAscii As Integer) 
Ifkeyascii = 1 3 then 
Commandl.setfocus 
E n d lf 
End Sub 
C uando el usuario term ine de ingresar los datos (pulse E N T E R en Text5), el 
cursor se ubica en el botón N uevo A lu m n o. 
Para desarrollar la característica N ° 03 de esta aplicación se debe program ar 
en el evento C lic k del C om m and2 (F in alizar) lo siguiente: 
Prívate Sub Command2_Click() 
R = MsgBox( “ESTÁ SEGURO DE SALIR ” , 36, “CUIDADO ” ) 
IfR = 6 Then 
End 
End I f 
End Sub 
¿m m . 114 G r u p o E d i t o r i a l M egab yte^ 
CAPÍTULO III: Elementos de la Programación 
NOTA: 
S i a l e je c u ta r la a p lic a c ió n se v is u a liz a u n e r r o r in d ic a n d o q u e la 
variable R no está definida, significa que existe la instrucción OPTION 
E X P L IC IT en la v e n ta n a d e d e cla ra ció n d e variables, en to n c e s debe 
b o r r a r e sta in stru c c ió n o d e c la r a r la v a r ia b le R d e tip o In te g e r a l 
inicio d e las instrucciones: Dim R as Integer 
La program ación del evento C lic k del C om m and 1 (N uevo A lu m n os) es: 
Prívate Sub Commandl_Click() 
Textl = 
Text2 = 
Text3 = 
Text4 = “ ” 
Text5 = 
Textl. SetFocus 
Commandl .Enabled = False 
End Sub 
A PL IC A C IÓ N PROPUESTA N 2 0 7 : 
D esarrolle la siguiente aplicación de la m ejor manera posible. 
«. Datos del Alum no 
Alumno 
Especialidad 
Ciclo 
Turno 
Aula 
Otro Alumno 
Salir 
IChiclayo, 1G de Agosto de 1998 
IMPORTANTE: 
Ud. ta m b ié n d e b e fo r m u la r s e n u e v a s a p lic a c io n e s o in te r c a m b ia r 
a p lica cio n es p ro p u e sta s entre su s co m p a ñ ero s y d esa rro lla rla s con la 
fin a lid a d d e fo r ta le c e r su s co n o cim ien to s. 
G r u p o E d i t o r i a l Megabyte 115
CONSISTENCIA DE DATOS 
La consistencia de datos consiste en controlar que el usuario ingreso sólo 
los datos correctos que necesita el programa, por ejem plo, si se trata de 
ingresar la nota de un alum no se debe controlar que sólo se ingrese un 
núm ero entre 0 y 20. La siguiente a p lica ció n m uestra un e je m p lo de 
consistencia de datos. 
APLICACIÓN DESARROLLADA N° 09 
E l siguiente program a perm ite ingresar los apellidos y nombre, fecha de 
ingreso, turno y prom edio de un alum no. Este program a debe tener las 
siguientes características: 
1. El p rim e r carácter de cada nom bre o a pe llido debe convertirse en 
mayúscula y el resto en m inúsculas. 
2. Se debe v e rific a r que la fecha ingresada este correcta. 
3. En el turno sólo se debe aceptar las letras M , T y N. 
4. E l prom edio debe ser un núm ero entre 0 y 20. 
5. Los botones N uevo y S alir deben permanecer desactivados hasta que 
se ingresen todos los datos correctos. 
1 I N G R E S O D E D A T O S B H æ M - I n l x l 
1 
.apellidos y Nombres ¡¡ 
Fecha de Ingreso ----- 
Turno [M -T-N ] |‘ .... N u e v o 
Prom edio [U a 20] S_alir 
PASO N° 1 D IBU JAR LOS CONTROLES 
I ¡ü» Fo rm i ■ ■ ■ ■ ■ - Ini 
La bell |Text1 
Label2 |Text2 
— 
LabeIS 1 Text3 Com m andl 
LabeW j T ext4 Command2 
116 G r u p o E d it o r ia l 
O 
CAPÍTULO III: Elementos de la Programación 
PASO N° 2 ESCRIBIR LAS INSTRUCCIONES 
Prim ero debe de escribir las siguientes funciones: 
Función Mayuscula 
Que ind ica si la letra ingresada está en mayúscula. 
Función M inuscula 
Que indica si la letra ingresada está en m inúscula. 
Función Numero 
Indica si se ha ingresado un número. 
Función Especial 
Indica si a ingresado una vocal con tilde, la letra ñ o Ñ o pulsó E N T E R , la 
Barra Espaciadora o de Retroceso (BackSpace). 
Las funciones reciben en la variable V el va lo r de la tecla que el usuario a 
pulsado desde la variable K E Y A S C II del procedim iento KeyPress de la 
Cajas de Textos y devuelven un valor verdadero (T R U E ) o falso (FA LS E). 
L o valores con sus respectivos caracteres son: 
A = 65 a = 97 á = 255 0 = 48 
B = 66 b = 98 é = 233 1 = 4 9 
C = 67 c = 99 f = 237 2 = 50 
ó = 243 
ú = 250 
ñ = 241 
Z = 90Z z = 122 Ñ = 209 9 = 57 
La tecla E N T E R tiene el valor 13. 
La tecla de Retroceso (B A C K S P A C E ) tiene el valor 8. 
La tecla de Escape (ESC) tiene el valor 27. 
La Barra Espaciadora tiene el va lo r 32. 
Function M ayuscula(v) F unction M inuscula(v) 
l f (v> —65 A n d v<=90) Then V (v> = 97 A n d v< ~ 1 2 2 ) 
M ayuscula = True Tlien 
p¡se ' M inuscula = True 
M ayuscula = False Else 
£nc¡¡f Minuscula = False 
E nd Function E nd If 
E nd Function 
G r u p o E d it o r i a l Megabyte 117 « X
^ Íliy¡|> VISUAL BASIC como debe ser... 
Function numero(v) 
I fv < 48 Or v > 57 Then 
numero = False 
Else 
numero = True 
End I f 
End Function 
Function Especial(v) 
I f v - 13 Or v -3 2 Or v=8 Or v=225 Or v=233 Or v=237 Or v=243 Or 
v=250 Or v=241 Or v = 209 Then 
Especial = True 
Else 
Especial - False 
End I f 
End Function 
Instrucciones de la Función INGRESADO: Verifican si todos los datos han sido 
ingresados correctamente para poder activar o no los botones Nuevo y Salir. 
Function ingresados() 
IfTrim (Textl) <> ""A nd lsDate(Text2) A nd Trim(Text3) <> "" 
A nd Trim(Text4) o "" Then 
Command 1 .Enabled = True 
Command2. Enabled = True 
Else 
Command ¡.Enabled = False 
Command2. Enabled = False 
E n d ¡ f 
End Function 
Instrucciones del Procedim iento F o rm _A ctiva te: Para que al ejecutar 
el program a se lim p ie el contenido de las cajas de texto, se desactiven los 
botones de comandos N uevo y S a lir y el cursor se ubique en te x tl para 
empezar a ingresar los datos. 
Private Sub Form_Activate() 
Text¡ - "" 
Text2 = "" 
Text 3 - "" 
Text4 = "" 
Command 1 .Enabled = False 
Command2. Enabled - False 
Textl. Set Focus 
End Sub 
l i l i l í ! ^ G r u p o E d i t o r i a l Megabyte 
CAPÍTULO III: Elementos de la Programación 
Instrucciones del Procedim iento T extl_K eypress: Verifican que los apellidos 
y nombres se ingresen correctam ente y que se convierte la prim era letra a 
m ayúscula y el resto a m inúscula. 
Private Sub Textl_KeyPress(KeyAscii As Integer) 
Static anteriorespacio As Boolean 
¡f KeyAscii = 13 Then 
Text2.SetFocus 
End I f 
I f KeyAscii = 32 Then 
anteriorespacio = True 
Else 
I f May usculaf KeyAscii) Or Minuscula( KeyAscii) Or 
Especial(KeyAscii) Then 
IfTrim (Textl) = "" Or anteriorespacio Then 
Rem Convierte a Mayuscula. 
KeyAscii = Asc(UCase(Chr( KeyAscii))) 
Else 
Rem Convierte a Minuscula 
KeyAscii = Asc(LCase(Chr( KeyAscii))) 
End I f 
anteriorespacio = False 
ElseM 
sgBox "Debe ingresar sólo letras", 16, "Cuidado" 
KeyAscii = 0 ‘Ignora el carácter digitado 
Commandl .Enabled = False 
Command2. Enabled = False 
End I f 
End I f 
End Sub 
Instrucciones del Procedim iento Text2_LosFocus: V erifican que la fecha 
ingresada esté correcta. Esto ocurre en el m om ento que ubica el cursor en 
otra caja de texto u otro control. 
Prívate Sub Text2_LostFocus() 
I f lsDate(Text2) Tiren 
ingresados 
ElseM 
sgBox "Debe ingresar una fecha correcta", 16, "Cuidado" 
Text2.SelStart = 0 
Text2.SelLength - Len(Text2) 
Text2 = Text2.Se/Text 
Text2.SetFocus 
End I f 
End Sub 
l i l i l í ^ G r u p o E d i t o r i a l Megabyte 119
|S ¡ ¡ Í |> VISUAL BASIC como debe ser... 
Instrucciones del Procedimiento Text2_KeyPress: Ubican el cursor en Text3 
cuando pulse la tecla Enter siempre y cuando la fecha ingresada esté correcta. 
Prívate Sub Text2_KeyPress(KeyAscii As Integer) 
IfK eyA scii = 13 Then 
Text3. Set Focus 
End I f 
End Sub 
Instrucciones del Procedimiento Text3_Keypress: Verifican que en el tumo sólo se 
ingresen las letras M, T o N y si se ingresan en minúscula las convierte en mayúscula. 
Prívate Sub Text3_KeyPress(KeyAscii As Integer) 
Dim Letra A i String * 1 
IfK eyA scii = 13 Then 
Text4.SetFocus 
Else 
Letra = UCase(Chr( KeyAscii)) 
lfLetra= "M" Or L etra -"T " Or Letra= "N" Or KeyAscii=8 Then 
Rem Convierte la letra ingresada a Mayúsculas. 
KeyAscii = Asc( UCasef Chr(KeyAscii))) 
Else 
M sgBox "Debe ingresar sólo las letras M ,T o N", 16, "Error" 
Rem Ignora el caracter ingresado. 
KeyAscii = 0 
Command 1 .Enabled = False 
Command!. Enabled = False 
End I f 
End I f 
E nd Sub 
Instruccion e s del P ro ced im ien to T ext4_K eypress: C on trola n que en el 
p ro m e dio sólo se ingresen números. 
Prívate Sub Text4_KeyPress(KeyAscii As Integer) 
I f numerof KeyAscii) Or KeyAscii = 8 Or KeyAscii = 13 Then 
ingresados 
Else 
M sgBox "Debe ingresar sólo números", 64, "Cuidado" 
KeyAscii - 0 
Command! .Enabled = False 
Command!.Enabled = False 
End I f 
End Sub 
EXPLICACION BREVE DE LAS FUNCIONES UTILIZADAS (Ver Pgs. 116,122 y 130): 
CH R : Convierte un valor ASCII a su respectivo carácter. 
UCASE: Convierte un texto a mayúscula. 
LCASE: Convierte un texto a minúscula. 
TRIM : Quita los espacios en blanco de la derecha de un texto. 
^ |¡¡¡¡¡f^ 120 G r u p o E d i t o r i a l Megabyte <111111 
CAPÍTULO III: Elementos de la Programación 
Instrucciones del Procedim iento Text4_Change: V erifican que el prom edio 
ingresado se encuentre entre 0 y 20. 
Prívate Sub Text4_Change() 
l f Val(Text4) < 0 Or Val(Text4) > 20 Then 
M sgBox "El promedio debe estar entre 0 y 20", 16, "Error" 
Text4.SelStart = 0 
Text4.SelLength = Len(Text4) 
Text4 = Text4.SelText 
Text4.SetFocus 
Commandl.Enabled - False 
Command2.Enabled = False 
Else 
ingresados 
E n d lf 
End Sub 
La instrucción de los siguientes procedim ientos llam an al procedim iento 
IN G R E S A D O S cada vez que se m o d ifica algún dato para v e rific a r si todos 
los datos han sido ingresado correctam ente para poder activar o no los 
botones N uevo y Salir. 
Prívate Sub Textl_Change() 
ingresados 
End Sub 
Prívate Sub Text3_Change() 
ingresados 
End Sub 
Instrucción de botón N uevo. Llam a al procedim iento F o rm _A ctiva te para 
empezar a ingresar los datos de un nuevo alum no. 
Prívate Sub Commandl_Click() 
Form_Activate 
End Sub 
Instrucciones del p rocedim iento F orm _U n loa d: Piden una respuesta de 
co n firm a ción para fin a liz a r el program a. 
Prívate Sub Form_Unload(Cancel As Integer) 
Dim resp A í Integer 
resp = MsgBox("Está seguro de salir", 36, "Cuidado") 
I f resp = 7 Then 
Rem Respondió SI 
Cancel = True 
End I f 
End Sub 
¡ § j | f | j | ^ G r u p o E d it o r i a l Megabyte 121
é S /S k í VISUAL BASIC como debe ser. . . .= < 3 § 
INPUTBOX 
M uestra una caja con un mensaje y perm ite además que el usuario pueda 
ingresar un dato el cual se considera de tipo String. Su sintaxis es: 
Variable=InputBox(mensaje,título, valor pred, co lu m n a jila ) 
Variable. 
Es la variable que almacena el va lo r que se ingresa en la caja. 
M ensaje. 
Es el mensaje que se desea m ostrar cuando se pida el dato a ingresar. 
Título. 
Es el títu lo de la caja. 
Valor predeterminado 
Es el va lo r que se m uestra en fo rm a autom ática para ser ingresado. 
Columna 
Es un va lo r que ind ica la posición h orizontal del fo rm u la rio donde se desea 
que se muestre la caja. 
Fila 
Es un valor que indica la posición vertical del fo rm u la rio donde se desea que 
se muestre la caja. 
Por ejem plo, la siguiente instrucción: 
P = IN P U T B O X ("IN G R E S E E L P R E C IO D E V E N T A ","V E N T A D E 
D O L A R E S ",3 .35 ,2 00 0,10 00 ) 
Perm ite ingresar el precio de venta del dólar, m ostrando en form a automática 
el precio de 3.35 para cada dólar en la posición horizontal 2000 y vertical 
1000. M uestra la siguiente caja de ingreso: 
IV E N TA DE D O LAR ES E3 
IN G R E S E E L P R E C ID D E V E N T A A c e p ta r 
C a n c e la r 
| EJES 
122 G r u p o E d i t o r i a l Megabyte 
CAPÍTULO III: Elementos de la Programación ^¡¡111^ 
NOTA: 
La variable y el mensaje es lo único o b lig a to rio que se debe u tiliz a r en la 
funció n Inputbox. Por ejem plo, la instrucción: 
P=InputBox("INGRESE EL PRECIO DE VENTA") 
M uestra la siguiente caja de ingreso: 
Proyecto! E 
IN G R E S E E L PRECIO D E V E N T A 
C ancelar 
Si no desea u tiliza r alguno de los otros parámetros interm edios, debe u tiliz a r 
siem pre las comas. 
Por ejem plo, en la siguiente instrucción no se indica el precio que debe salir 
en fo rm a automática. 
P = IN P U T B O X (''IN G R E S E E L P R E C IO D E V E N T A ","V E N T A D E D O L A R E S " , ,2 0 0 0 ,1 0 0 0 ) 
M uestra la siguiente caja de ingreso: 
IN G R E S E E L P R E C IO D E V E N T A Aceptar | 
C a n ce la r 
VENTA DE DOLARES 
Si no desea u tiliz a r los ú ltim o s parámetros, no es necesario que u tilic e las 
comas. 
Por ejem plo, en la siguiente instrucción no se indica el precio que debe salir 
en form a autom ática ni la ubicación de la caja en el fo rm u la rio . 
G r u p o E d i t o r i a l Megabyte .23
P=INPUTBOX("INGRESE EL PRECIO DE VENTA","VENTA DE DOLARES") 
M uestra la m ism a caja de ingreso anterior en el centro de la pantalla, p or­que 
no se ind icó la posición: 
Si desea escribir el mensaje en varias líneas, u tilic e C hr(13) (R etorno de 
C arro) o C h r(lO ) (Avance de línea) o las dos juntas al fin a l de cada línea. 
Por ejem plo, en la siguiente instrucción se muestra el mensaje “ ingrese el 
precio de venta” acompañado de la fecha y hora actual (escríbalo es una 
sola línea). 
P=InputBox("INGRESE EL PRECIO DE VENTA"+Chr(13)+" AL ■ + 
Str(Now),"VENTA DE DOLARES") 
S 
^ Ü Í l> VISUAL BASIC como debe ser... 
VENTA DE DOLARES 
INGRESE EL PRECIO DE VENTA 
AL 29/04/99 6:49:00 PM Aceptai 
NOTA: 
Cancela 
La funció n N O W , perm ite obtener la fecha y hora actual y la fu n ció n STR, 
convierte un dato a tip o carácter. 
1 2 4 G r u p o E d i t o r i a l Megabyte <á l p l | 
CAPÍTULO III: Elementos de la Programación 
CONTADORES Y ACUMULADORES 
Un contador es una variable num érica que perm ite contar algún evento 
que ocurre durante la ejecución de un program a. Su sintaxis es: 
VARIABLE = VARIABLE + IN C REM EN TO . 
E l increm ento norm alm ente es uno. Por ejem plo: A = A + 1. 
Cada vez que la computadora ejecuta esta instrucción, el valor de la variable 
A se increm enta en 1. 
U n acumulador llam ado tam bién sumador es una variable que perm ite ir 
almacenando el contenido que va tom ando otra variable. Su sintaxis es: 
VARIABLE1 = VARIABLE1 + VARIABLE2 
E jem plo: R = R + F. 
C ada vez que la c o m p u ta d o ra ejecu ta esta in stru cció n en la variable 
R a cum ula el valor de la variable F. 
L a v a ria b le ta m b ié n p u e d e s e r un c o n tro l co m o u n a c a ja d e textos, 
e tiq u e ta , etc. 
E jem plo: L a b el5 = Val(Label5) + Val(Text3) 
C ada vez que se ejecu ta esta in stru cció n en L a b elS a cu m u la el valor 
d e Text3. 
La siguiente aplicación muestra un ejem plo de contadores y acumuladores. 
APLICACION DESARROLLADA N° 10 
Esta aplicación cuenta el núm ero de depósitos y retiros realizados por un 
cliente, además almacena el total de las m ontos tanto de retiros com o de 
depósitos efectuados incluyendo el saldo actual 
I «*.. B a n c o " E l A m i g o " M B - i n i R i i 
C lie n te jT it o R a m ire z V á s q u e z O k 1 
M o n t o d e M o v im ie n to 
15 0 
D e p ó s it o j R e tiro _ l 
C a n tid a d T o ta l 
D e p ó s it o |2 |1 3 5 0 1 i N u e v o C lie n t e lj 
R e tir o h 150 
S a lir 
S A L D O A C T U A L |1 300 
G r u p o E d i t o r i a l Megabyte 125
i ® ! » VISUAL BASIC como debe ser. 
PASO N° 1: Dibujar los controles. 
L a b e ll |T e x t1 
L a b e l2 
j f e x f2 
C o m m a n d 2 j C o m rn a n d 3 
L a b e l3 L a b e l4 
L a b e l5 L a b e l7 L a b e l9 
L a b e l6 L a b e (8 L a b e ll 0 
L a b e ll 1 L a b e ll 2 
C o rn m a n d 4 
C o m m a n d 5 
<i> 
PASO N° 2: Asignar las propiedades. 
Asigne la propiedad Caption al formulario, etiquetas y botones de comandos 
como se muestra en la aplicación planteada. 
PASO N° 3: Escribir las instrucciones para los controles. 
DECLARAR LAS VARIABLES A N IV E L DE FO R M U LAR IO EN: General 
Declaraciones. 
Dim td, cd, tr, cr, saldo As Integer 
INSTRUCCIONES DELPROCEDIM IENTO FORM _ACIW ATE. 
Permiten que al ejecutar la aplicación se limpien las cajas de texto y las etiquetas, 
además muestran el botón O K y desactivan los botones DEPOSITO y RETIRO y no 
se permite el ingreso del monto. 
Prívate Sub Form_Activate() 
Textl = 
Texl2 = 
Label7 = 
Label8 = 
Label9 = 
LabelJO = "" 
Labell2 = "" 
Com mandl .Visible = True 
Command2. Enabled = False 
Commands. Enabled = False 
Text I.Locked - False 
Text2.Locked = True 
Textl.SetFocus 
End Sub 
G r u p o E d i t o r i a l M egabyte^ 
CAPITULO III: Elementos de la Programación 
INSTRUCCIONES D EL BOTÓN OK. 
Private Sub Commandl_Click() 
Textl.Locked = True Text2.Locked = False Commandl.Visible = False Command2.Enabled = True Command3.Enabled = True 
Rem La siguiente instrucción debe ir en una sola línea. saldo=Val (InputBox ("Monto de Apertura "+Chr (13) +Chr(13) +" 
La cuenta se apertura con cualquier monto ", "Nueva de 
Cuenta", 350)) 
Labell2 = saldo 
td = saldo 
cd = 1 Label7 = cd 
Label9 = td 
Text2.SetFocus 
End Sub 
INSTRUCCIONES D E L BOTÓN DEPÓSITO. 
Priva te Sub Command2_Click() 
Dim deposito As Integer deposito = Val(Text2) 
td = td + deposito 'Total de depósitos 
cd = cd + 1 'Cantidad de depósitos 
Label7 = cd 
Label9 = td 
saldo = Val(Labell2) 
Labell2 = saldo + deposito 
End Sub 
INSTRUCCIONES D E L BOTÓN RETIRO. 
Private Sub Command3_Click() 
Dim retiro As Integer retiro = Val(Text2) saldo = Val(Labell2) 
If saldo < retiro Then 
MsgBox "La cantidad que desea retirar excede su saldo actual", 64, "Disculpe" 
Text2 = "" 
Text2.SetFocus 
El se 
tr = tr + retiro 'Total de Retiros 
cr = cr + 1 'Cantidad de Retiros 
Label8 = cr Label10 = tr Label12 = saldo - retiro 
End If 
End Sub 
G r u p o E d i t o r i a l Megabyte 1 2 7
INSTRUCCIONES D EL BOTÓN NUEVO C LIE N T E . 
Llama al procedimiento Form_Activate y reinicializa las variables con cero (0). 
P r í v a t e S u b C o m m a n d 4 _ C l i c k () 
F o r m _ A c t i v a t e 
t d = 0 ' T o t a l D e p ó s i t o s 
c d = 0 ' C a n t i d a d d e D e p ó s i t o s 
t r = 0 ' T o t a l d e R e t i r o s 
c r = 0 ' C a n t i d a d d e R e t i r o s 
E n d S u b 
Este program a tam bién se puede desarrollar sin usar variables. 
INSTRUCCIONES D E L BOTÓN OK. 
Private Sub Commandl_Click() 
Textl.Locked = True 
Text2.Locked = False Commandl.Visible = False Command2.Enabled = True Command3.Enabled = True 
Rem La siguiente instrucción debe ir en una sola línea. Label12=InputBox("Monto de Apertura "+Chr(13)+Chr(13) +" La cuenta se apertura con cualquier monto ", "Nueva de Cuenta ", 350) 
Label 7 = 1 
Label 9 = Label12 Text2.SetFocus 
End Sub 
INSTRUCCIONES D E L BOTÓN DEPÓSITO. 
Prívate Sub Command2_Click() 
Label7 = Val(Label7) + 1 
Label9 = Val(Label9) + Val(Text2) 
Label12 = Val(Labell2) + Val(Text2) 
End Sub 
CAPÍTULO III: Elementos de la Programación ^ 
INSTRUCCIONES D EL BOTÓN RETIRO. 
Prívate Sub Command.3_Click() 
lfV al(Labell2) < Val(Text2) Then 
MsgBox "La cantidad que desea retirar excede su saldo 
actual", 64, "Disculpe" 
Text2 = "" 
Text2.SetFocus 
Else 
Label8 = Val(Label8) + 1 
Label 10 = Val(LabellO) + Val(Text2) 
Label 12 = Val(Labell2) - Val(Text2) 
End I f 
End Sub 
INSTRUCCIONES D EL BOTÓN NUEVO CLIENTE. 
Private Sub Command4_Click() 
Forrn_Activate 
End Sub 
INSTRUCCIONES D I I J ’ROCI.DIM IKNTO FO R M AC TIVATE. 
Private Sub Form_Activate() 
Textl = 
Text2 = "" 
Label7 = "" 
Label8 = 
Label9 = "" 
LabellO = "" 
Labell2 = "" 
Commandl .Visible = True 
Command2.Enabled = False 
Command3.Enabled = False 
Textl.Locked = False 
Text2.Locked = True 
Textl.SetFocus 
End Sub 
G r u p o E d i t o r i a l Megabyte 129
A * VISUAL BASIC como debe ser... 
DESARROLLAR LAS SIGUIENTES APLICACIONES: 
N 04: Ingresar el nom bre del producto, precio anterior y precio actual, 
luego calcular el alza en soles y el alza en porcentaje. 
NOTA: 
E l alza en porcentaje es igual al alza en Soles p or 100 / Precio A nterior. 
n - I n i x | 
Producto f............. 
Precio Anterior 
1..................... 
Precio Actual 
1........... ... 
Alza en Soles r............ 
Alza en Porcentaje r ~ ....... 
N uevo Producto Calcular Salir I 
N 05: Ingresar el nom bre del profesor, el núm ero de horas normales que 
ha trabajado y el núm ero de horas extras, luego se debe calcular el total que 
se le debe pagar p o r el N ° de horas norm ales, el total p or horas extras y el 
total a pagar. 
Si ha trabajo más de 48 horas su pago p or hora es de S/. 8.00 soles y SI. 7.00 
en caso contrario. Por hora extra S/. 9.50. 
Nombre del Profesor 
Horas Trabajadas 
Horas Extras 
Pago por Hora 
Total por Hs. Normales 
Total por Hs.Extras 
T o t a l a P a g a r = = = > 
__________ Calcular 
Otro 
Salir 
P rogra m a d orJu a n J osé Castañeda León 
G r u p o E d i t o r i a l Megahyte<^ ||| § | 
CAPÍTULO III: Elementos de la Programación 
IIF 
Es una fu nció n que devuelve uno de dos valores dados dependiendo de una 
condición. 
Su sintaxis es: 
VARIABLE = IIF (CONDICION, VALOR 1, VALOR2) 
Si el resultado de la condición es verdad (si), la variable tom a el V A L O R 1 y 
si el resultado de la condición es falso (no), la variable tom a el V A LO R 2 . 
Tam bién se puede u tiliz a r un control com o una caja de textos o etiqueta para 
almacenar cualquiera de los valores. Si los valores son de tipo carácter 
deben ir entre com illas. 
Por ejem plo: En la siguiente instrucción, si el va lo r de la variable E D A D es 
m ayor o igual a 18, se almacena en la variable OBS el mensaje M A Y O R 
DE E D A D , y si el va lo r de la variable E D A D es m enor que 18 se almacena 
en la variable OBS el mensaje M E N O R D E E D A D . 
OBS = IIf(EDAD >= 18, "MAYOR DE EDAD", "MENOR DE EDAD") 
Otro ejemplo: 
I ,a siguiente instrucción: 
If pro >= 10.5 Then 
Label8 = "Aprobado" 
Else 
Label8 = "Desaprobado" 
End I f 
También se puede escribir de la siguiente manera: 
I ,abel8 = IIF(pro >= 10.5,’’Aprobado” ,’’Desaprobado” ) 
G r u p o E d i t o r i a l Megabyte » , w m
iÉ iÉ jÉ É ^ VISUAL BASIC como debe ser.. . < 5 ¡§ 
SELECT - CASE 
Perm ite ejecutar una o más instrucciones dependiendo del va lo r de 
una variable, de una expresión. Puede reemplazar a varias instrucciones 
IF-THEN. 
Su sintaxis es: 
Select Case VARIABLE O EXPRESIÓN 
Case CASO N° 1 
Instrucción(es) 
Case CASO N°2 
Instrucción(es) 
Case CASO N°3 
Instrucción(es) 
Case C AS O N °4 
Instrucción(es) 
Case CASO n 
Instrucción(es) 
Case Else 
Instrucción(es) 
End Select 
NOTA: 
Case Else e s o p c io n a l y las in stru c c io n e s qu e c o n tie n e se ejecu ta n 
c u a n d o n o se c u m p le n in g u n o de lo s casos. 
S i s e d e se a e s c r ib ir in s tr u c c io n e s en la s m ism a lín e a d e l C ase, se 
d eb en sep a ra r p o r d o s p u n to (:). U sando d o s p u n to s se p u e d e n escrib ir 
d o s o m á s in stru ccio n es en una so la línea. 
Los casos pueden escribirse de la siguiente manera: 
Case 1 
Case 2 
Case 1 to 10 
Case 10 to 20 
Case 1,2,3 
Case 4,5,6 
Case Is >40 
Case Is <20 
§ j ^ 132 G r u p o E d i t o r i a l Megabyte1 
<? 
CAPITULO III: Elementos de la Programación 
APLICACIÓN DESARROLLADA N° 11 
f=i L’i i : i f . i «i a í:iíT!TTT37íT! WÊSÊÊÉÊÊIM - In | x | 
Producto 
Precio Unitario 
Cantidad Comprada I Calcular 
Subtotal S/. 0 Nuevo 
Descuento X 0 .................. «i;:!. 1 
Salir 
Descuento S/. 0 
T O T A L A P A G A R S/. ===> 
1 
0 
CARACTERÍSTICAS: 
Se debe ingresar el nom bre de un producto, su precio u n ita rio y la canti­dad 
comprada de dicho producto, luego se debe calcular y visua liza r el 
subtotal, el descuento en porcentaje, el descuento en soles y el total a pagar, 
lil descuento en porcentaje se depende del subtotal, de acuerdo a la siguien­te 
tabla: 
SUBTOTAL DESCUENTO % 
100 ó 101 2% 
de 101.1 a 200 4% 
de 200.1 a 500 6% 
a partir de 500 10% 
NOTA: 
lista aplicación m u estra un ejem plo del uso de S E L E C T C A S E , adem ás 
u tiliz a la p r o p ie d a d Ñ A M E d e a lg u n o s c o n tr o le s p a r a p o d e r 
m a n e ja r lo s y la f u n c i ó n F O R M A T p a r a a s ig n a r un f o r m a t o d e 
visu a liza ció n a los datos. 
G r u p o E d i t o r i a l Megabyte 133
VISUAL BASIC como debe ser... 
D E S A R R O L L O D E L A A P L IC A C IÓ N ° 11 
P A SO N ° 01: D ib u ja r los controles. 
- î n l x l 
La bell ||T extl 
Label2 |Text2 
Label3 | t ext3 Commaridl 
Label4 Label8 Command2 
Label5 Label9 
Command3 
LabelG La b e ll 0 
La bell 1 
Label7 
P A S O N " 02: A sig na r las propiedades. 
E T IQ U E T A S (L A B E L ) 
CONTROL NAME ALIGNMENT CAPTION BORDERSTYLE 
Labell Labell 0 - Left Producto 0 - None 
Labe12 Label2 0 - Left Precio Uni. 0 - None 
Label3 Label3 0 - Left Cantidad Com. 0 - None 
Labe14 Label4 0 - Left Subtotal 0 - None 
Label5 Label5 0 - Left Descuento % 0 - None 
Label6 Label6 0 - Left Descuento S/. 0 - None 
Labe17 Label7 0 - Left TOTAL A PAGAR 0 - None 
Labe18 SUBTOTAL 1 - Right 0 1 - Fixed S 
Label9 DESCPOR 1 - Right 0 1 - Fixed S. 
LabellO DESCSOL 1 - Right 0 1 - Fixed S. 
Label11 PAGO 1 - Right 0 1 - Fixed s, 
C A JA S D E T E X T O S 
CONTROL NAME TEXT 
Textl NOMBPRO En Blanco 
Text2 PRECIO En Blanco 
Text3 CANTIDAD En Blanco 
BOTONES DE COMANDOS 
CONTROL CAPTION Tooltiptext 
Coinmandl &Calcular Muestra los totales 
Command2 &Nuevo Para ingresar otro producto 
Command3 ScSalir Finaliza la aplicación 
E l formulario debe tener en C aption: V E N T A D E P R O D U C TO S. 
P A SO N ° 03: E scrib ir las instrucciones. 
IN S T R U C C IO N E S D E L C O M M A N D 1 , donde se u tiliz a la propiedad 
Ñ A M E asignada a las cajas de texto y algunas etiquetas. 
Private Sub Commandl_Click() 
Dim ST As Single 
ST = Val(PRECIO) * Val(CANTIDAD) 
SUBTOTAL = ST Select Case ST Case 100, 101 
DESCPOR = 2 Case 101.1 To 200 DESCPOR = 4 Case 200.1 To 500 DESCPOR = 6 Case Is > 500 
DESCPOR = 1 0 Case El se 
DESCPOR = 0 End Select 
DESCSOL = ST * Val(DESCPOR) / 100 'El Total a Pagar se visualiza con 2 decimales PAGO = Format(ST - Val(DESCSOL) , "###, ##0.00") 
End Sub 
INSTRUCCIONES DEL COMMAND2 (Nuevo). 
Prívate Sub Command2__Click () 
NOMBPRO = "" 
PRECIO = "" 
CANTIDAD = "" 
SUBTOTAL = 0 
DESCPOR = 0 DESCSOL = 0 
PAGO = 0 
NOMBPRO.SetFocus 
End Sub 
sHHIb G r u p o E d i t o r i a l Megabyte 135 ^ ||||¡|¡^
^ lililí'' VISUAL BASIC como debe ser,.. 
INSTRUCCIONES DEL COMMAND3 (Salir) 
Prívate Sub Command3_Click() 
Dim H As Integer 
H = MsgBoxf"ESTA SEGURO DE SALIR", 36, "CUIDA­DO") 
If H = 6 Then End End If 
End Sub 
MUY IMPORTANTE: 
S i Ud., d esea q u e el resultado ta m b ién se visu a lice cu a n d o ingrese 
o m o d ifiq u e el p re c io u n ita rio d e l p ro d u c to o la c a n tid a d co m p ra d a ; 
en to n ces, d e b e p r o g r a m a r en el ev e n to C H A N G E de ca d a una de las 
c a ja s d e texto. 
L a s in stru c c io n e s q u e ca lcu la n y v isu a liza n los resu lta d o s q u e e n ­c 
u en tra n en el botó n d e co m andos N ° 1 ( C O M M A N D 1), es d e c ir en el 
p r o c e d im ie n to lla m a d o C O M M A N D 1 _ C L IC K , e n to n c e s en e l e v e n to 
C H A N G E d e ca d a u n a d e las ca ja s d e texto (P R E C IO y C A N T ID A D ) 
só lo se d eb e lla m a r a d ich o pro ced im ien to . 
A sí: 
INSTRUCCIONES DE TEXT2, CUYO NOMBRE (ÑAME) ES PRECIO. 
Prívate Sub PRECIO__Change () 
Commandl_Clíck 
End Sub 
INSTRUCCIONES DE TEX T3, CUYO NOMBRE (ÑAME) ES CANTIDAD. 
Prívate Sub CANTIDAD_Change() 
Commandl_Clíck 
End Sub 
CAPÍTULO III: Elementos de la Programación 
APLICACIÓN DESARROLLADA N° 12 
Se debe ingresar el nom bre del alum no, su nota N ° 1 y su nota N k z, ai 
hacer c lic k en el botón Obtener Prom edio se debe visualizar: el prom edio 
del alum no, una observación que ind ica si el alum no está aprobado o 
desaprobado, la cantidad de puntos que le fa lta n para aprobar, si está 
desaprobado o los puntos para llegar a veinte en caso que esté aprobado. 
Tam bién se debe visua liza r la N ota C u a lita tiva del alum no de acuerdo al 
promedio: 
Entre 0 y 5 Pésimo 
Entre 5.1 y 10.4 Malo 
Entre 10.5 y 14.4 Regular 
Entre 14.5 y 17.4 Bueno 
Entre 17.5 y 20 Excelente 
Se debe controlar que sólo se ingresen notas entre 0 y 20. 
« Información Académica B H f l W M W K - I n l x l 
Alumno 
Curso 
1 .......................... 
r 
-------- Otro Alumno 
Nota N! 01 
Nota N! 02 
Promedio 
|o 
|o 
1 
Obtener Promedio 
Finalizar 
Observación 1 ..................... 
Puntos 
Cualidad 
G r u p o E d i t o r i a l Megabyte
D E S A R R O L L O D E L A A P L IC A C IO N 
PASO N ° 01: D ib u ja r los controles 
L abell |fr ext1 
Label2 |íe x l2 
Label3 IT ext3 
LabeM ¡Text4 
Label5 Label8 
LabelG Label9 
Label7 Lab e ll 0 
L abell 1 
Labell 2 
Commandl 
Command2 
Command3 
PA SO N ° 02:A sig n ar las propiedades. 
E T IQ U E T A S (L A B E L ) 
CONTROL CAPTION AUTOSIZE BORDERSTYLE 
Labell Alumno True 0 - None 
Label2 Curso True 0 - None 
Label3 Nota N 2 01 True 0 - None 
Labe14 Nota Ne02 True 0 - None 
Label5 Promedio True 0 - None 
Label6 Observación True 0 - None 
Label7 Puntos True 0 - None 
Labe18 En Blanco False 1 - Fixed Single 
Label9 En Blanco False 1 - Fixed Single 
Label10 En Blanco False 1 - Fixed Single 
Label11 Cualidad True 0 - None 
Label12 En Blanco False 1 - Fixed Single 
C A JA S DE T E X T O S 
CONTROL TEXT TABINDEX 
Textl En Blanco 0 
Text2 En Blanco 1 
Text3 0 2 
Text4 0 3 
138 G r u p o E d i t o r i a l Megabyte 
BOTONES DE COMANDOS 
CONTROL 
Commandl 
Command2 
Command3 
CAPTION 
&0tro Alumno 
Obtener &Promedio 
&Finalizar 
TOOLTIPTEXT 
Ingresar nuevo alumno 
Imprime el promedio 
Finaliza la aplicación 
FORMULARIO 
CONTROL CAPTION 
Forml Información Académica 
Ud. P u ed e c a m b ia r cu a lq u ie r otra p ro p ie d a d p a ra m ejo ra r el aspecto 
d e l fo rm u la rio . 
P A S O N ° 03: E scrib ir las instrucciones. 
N O T A : 
1. SelStart, SelLength, y SelText son propiedades de las cajas de texto 
que se usan en el m odo de program ación. 
SelStart: 
Especifica la posición de in ic io del bloque de texto seleccionado. 
SelLength: 
Especifica el núm ero de caracteres seleccionados. 
SelText: 
C ontiene el texto seleccionado. 
2. Para escribir comentarios dentro de un program a se u tiliza las com illas 
sim ples o apostrofe ( ‘ )* 
3. L a fu nció n IS N U M E R IC perm ite saber si lo ingresado por un usuario 
se puede considerar de tip o num érico.
W/ VISUAL BASIC como debe ser. 
D E S A R R O L L O D E L A A P L IC A C IO N 
P A SO N ° 01: D ib u ja r los controles 
Labell IfT extl 
Label2 |T ext2 
Label3 |T ext3 
LabeW | í ext4 
Label5 LabelS 
LabelG LabeIS 
Label7 L ab e ll 0 
n - : 
Command! 
Command2 
Command3 
L abell 1 
L ab e ll 2 
PA SO N ° 02:A sig n ar las propiedades. 
E T IQ U E T A S (L A B E L ) 
CONTROL CAPTION AUTOSIZE BORDERSTYLE 
Labell Alumno True 0 - None 
Label2 Curso True 0 - None 
Labe13 Nota N s 01 True 0 - None 
Label4 Nota N 2 02 True 0 - None 
Label5 Promedio True 0 - None 
Labe16 Observación True 0 - None 
Label7 Puntos True 0 - None 
Labe18 En Blanco False 1 - Fixed Single 
Labe19 En Blanco False 1 - Fixed Single 
Label10 En Blanco False 1 - Fixed Single 
Label11 Cualidad True 0 - None 
Label12 En Blanco False 1 - Fixed Single 
C A JA S DE T E X T O S 
CONTROL TEXT TABINDEX 
Textl En Blanco 0 
Text2 En Blanco 1 
Text3 0 2 
Text4 0 3 
138 G r u p o E d i t o r i a l Megabyte <|§¡y§s; 
BOTONES DE COMANDOS 
CONTROL CAPTION 
Commandl &0tro Alumno 
Command2 Obtener &Promedio 
Command3 &Finalizar 
TOOLTIPTEXT 
Ingresar nuevo alumno 
Imprime el promedio 
Finaliza la aplicación 
FORMULARIO 
CONTROL CAPTION 
Forml Información Académica 
Ud. P u ed e ca m b ia r c u a lq u ier otra propiedad p a ra m ejorar el aspecto 
d e l fo rm u la rio . 
P A S O N ° 03: E scrib ir las instrucciones. 
N O T A : 
1. SelStart, SelLength, y SelText son propiedades de las cajas de texto 
que se usan en el m odo de programación. 
SelStart: 
E specifica la posición de in ic io del bloque de texto seleccionado. 
SelLength: 
E specifica el núm ero de caracteres seleccionados. 
SelText: 
Contiene el texto seleccionado. 
2. Para escribir comentarios dentro de un programa se u tiliza las com illas 
simples o apostrofe ( ‘ ). 
3. L a fu nció n IS N U M E R IC perm ite saber si lo ingresado por un usuario 
se puede considerar de tipo numérico.
^IIÈ É ^ VISUAL BASIC como debe ser... 
A l empezar a escribir la Nota N° 01, se selecciona el contenido de la 
caja de texto N ° 03 para que sea reemplazado por el valor que se ingresa. 
Las siguientes instrucciones se deben escribir en el evento GotFocus 
de Text3. Para e llo Haga doble c lic k en Text3 o un solo c lic k y pulse F7, 
luego en la lista de Eventos seleccione el Evento GotFocus. 
Text3.SelStart = 0 
Text3.SelLength - Len(Text3) 
Text3 = Text3 .SelText 
A l fin a liza r observará lo siguiente: 
* : P fojectl - Fòrmi (Code) _ |n[ x| 
Text3 GotFocus 
Prívate Sub Text3_GotFocus() 
Text3.SelStart = 0 
Text3.SelLength = Len(Text3) 
Text3 = Text3.SelText 
End Sub 
Las siguientes instrucciones perm iten que al empezar a escribir la 
N ota N° 02, se selecciona el contenido de la caja de texto N° 04 para que 
sea reemplazado por el va lo r que se ingresa. Se deben escribir en el evento 
GotFocus de Text4. 
Private Sub Text4_GotFocus() 
Text4. SelStart ~ 0 
Text4. SelLength = Len(Text4) 
Text4 = Text4. SelText 
End Sub 
m m ™ G r u p o E d i t o r i a l Megabyte 
CAPÍTULO III: Elementos de la Programación 
Las siguientes instrucciones perm iten que al fin a liz a r de e scribir la N ota N° 
01, se ve rifiq u e que se ha ingresado un va lo r num érico y entre 0 y 20. Se 
deben escribir en el evento LostFocus de Text3. 
Prívate Sub Text3_LostFocus() 
‘Pregunta si no se ha ingresado un valor numérico o 
‘la nota N°1 es menor que 0 ó es mayor que 20 
I f Not IsNumeric(Text3) Or Val(Text3)<0 Or Val(Text3)>20 Then 
MsgBox "Sólo números entre 0 y 20", 16, "Cuidado" 
Text3.SetFocus 
E n d lf 
End Sub 
Las siguientes instrucciones perm iten que al fin a liz a r de escribir la N ota N° 
02, se ve rifiqu e que se ha ingresado un v a lo r num érico y entre 0 y 20. Se 
deben escribir en el evento LostFocus de Text4. 
Prívate Sub Text4_LostFocus{) 
‘Pregunta si no se ha ingresado un valor numérico o 
‘la nota N°2 es menor que 0 ó es mayor que 20 
I f Not lsNumeric(Text4) Or Val(Text4)<0 Or Val(Text4)>20 Then ' 
MsgBox "Sólo números entre 0 y 20", 16, "Cuidado" 
Text4.SetFocus 
E n d lf 
End Sub 
Las siguientes instrucciones perm iten ingresar los datos de un nuevo alumno, 
lim p ia n do las cajas de texto y las etiquetas y ubicando el cursor en T e xtl 
para empezar a ingresar el nom bre del alum no. Se deben escribir en el 
evento C lic k del C om m and 1. 
Prívate Sub Commandl_Click() 
Textl = "" 
Text2 = "" 
Text3 - 0 
Text4 = 0 
Label8 = "" 
Label9 = "" 
LabellO = "" 
Labell2 = "" 
Textl.SetFocus 
End Sub 
141
VISUAL BASIC como debe ser... CAPÍTULO III: Elementos de la Programación 
Las siguientes instrucciones perm iten m ostrar los resultados del alum no 
(prom edio, observación, etc). Se deben e scribir en el evento C lic k del 
Command2. 
Prívate Sub Command2_Click() 
pro = (Val(Text3) + Val(Text4)) / 2 
Label8 = pro 
I f pro >= 10.5 Then 
Label9 = "Aprobado(a)" 
LabellO = "Le faltan "+Str(20-pro)+" puntos para tener 20" 
Else 
Label9 = "Desaprobado(a)" 
LabellO - "Le faltan " + Str(ll-pro)+ " puntos para Aprobar" 
E n d lf 
Select Case pro 
Case OTo 5 
Labell2 = "Pésimo" 
Case 5.1 To 10.4 
Labell2 = "Malo" 
Case 10.5 To 14.4 
Labell2 = "Regular" 
Case 14.5 To 17.4 
Labell2 - "Bueno" 
Case 17. 5 To 20 
Labell2 = "Excelente" 
End Select 
End Sub 
L a siguiente instrucción fin a liz a la aplicación. Se debe e scribir en el evento 
C lic k del Command3. 
Prívate Sub Command3jClick() 
End 
End Sub 
CONCATENACION 
Concatenar sig n ifica u n ir textos y para e llo se puede u tiliz a r el signo + o & . 
E l signo + sólo perm ite concatenar valores tipo texto. Si desea concatenar 
valores de diferente tipolos tiene que co n ve rtir a texto usando la función 
STR si es un núm ero o Cdate si es tip o fecha. 
E l signo & tiene la ventaja de poder concatenar datos de diferente tipo. 
Por ejem plo, la instrucción: 
L a b e ll = “ Le faltan “ + Str(20 - pro) + “ Puntos para llegar a 20” 
Se puede reem plazar por: 
L a b e ll = “ Le faltan “ & 20 - pro & “ puntos para llegar a 20” 
MUY IMPORTANTE 
Antes y después de estos signos debe dejar un espacio en blanco. 
^ ¡¡¡¡^ ¡^ G r u p o E d i t o r i a l M e « a h v t e <^ ^ ^ 
APLICACION PROPUESTA N° 06 
Se debe ingresar el nom bre y el año de nacim iento de una persona y se 
tiene que visualizar: su edad, una observación que indica si es m ayor o 
m enor de edad. Si m enor de edad se debe m ostrar cuántos años le faltan 
para ser m ayor de edad y si es m ayor de edad se debe m ostrar hace cuántos 
años es m ayor de edad. Tam bién se debe m ostrar la etapa de la persona 
teniendo en cuenta lo siguiente: 
0 y 12 Niño 
13 y 17 Adolescente 
18 y 30 Joven 
31 y 70 Adulto 
70... Anciano 
f e - I r i f xf 
N o m b re jj 
A ñ o d e N a c im ie n to | 
E d a d J- 
□ b s e rv a c ió n j" 
A ñ o s 
R e s u lta d o s | 
N u e v o 
S alir 
r E ta p a 
FUNCIÓN CHOOSE 
Retorna un valor dependiendo de un índice. 
Su sintaxis es: Variable = CHOOSE(índice, valorl, valor2, valor3...) 
La siguiente instrucción almacena en la variable N O M B R E , el nombre del 
día de la semana dependiendo del va lo r que contiene la variable D IA . 
NOMBRE=Choose(DIA,” LU N ” ,” M AR” ,” M IE” ,” JUE” ,” VIE” ,” SAB” ,” DOM” ) 
Si D IA tiene el va lo r 1, devuelve L U N , si día tiene el va lo r 2, devuelve 
M A R , etc. 
El índice debe tener un 
valor entre 1 y el núm ero 
I M ic r o s o f t V is u a l B a s ic 
de valores devueltos, en 
Error '94' en tiempo de ejecución : 
caso contrario se muestra 
El uso de Nuil no es válido 
el mensaje de error: 
í Terminar j j Depurar j| Ayuda |
VISUAL BASIC como debe ser. ,. 
F U N C IO N E S D E C A D E N A 
U na cadena es un dato tipo S tring (carácter); es decir se refiere a letras o 
letras y números, com o por ejem plo: el nom bre de una persona, su dirección, 
etc. Si usamos al fin a l de la función el signo $ devuelve el resultado com o 
tip o Cadena, de lo contrario el tipo devuelto es Variant. 
R IG H T .- Obtiene de una cadena una cantidad de caracteres empezando por 
la derecha. Sintaxis Right(Cadena, N) 
LE FT.- Obtiene de una cadena una cantidad de caracteres empezando por 
la Izquierda. Sintaxis Left(Cadena, N) 
MXD. - Obtiene de una cadena una cantidad de caracteres 
a partir de una determinada posición. 
Sintaxis Mid(Cadena, Posición, N) 
Donde N indica la cantidad de caracteres que se desea obtener. 
L E N .- Obtiene la longitud de una cadena, es decir la cantidad de caracteres 
que contiene incluyendo los espacios en blanco. 
T R IM .- Quita los espacios en blanco que se encuentran al inicio y al fin al de 
una cadena. 
R T R IM .- Quita los espacios en blanco al fin al de una cadena. 
L T R IM .- Quita los espacios en blanco que se encuentran al inicio de una 
cadena. 
U C ASE.- Convierte una cadena a mayúsculas. 
L C A S E .- Convierte una cadena a minúsculas. 
La sintaxis de las funciones anteriores es: Función (Cadena) 
STR C O N V : Esta función permite convertir una cadena a 3 formas diferentes: 
STRCONV (Cadena, Valor) 
El valor indica el tipo de conversión y puede ser: 
1. Convierte el texto a mayúscula. 
2. Convierte el texto a minúscula. 
3. Convierte la primera letra de cada palabra a mayúscula. 
IN S T R : Obtiene un número que indica la posición de una subcadena dentro de 
una cadena. 
INSTR (Valor, Cadena, Subcadena) 
E l v a lo r ind ica la posición de la cadena desde donde se va a buscar la 
subcadena. Cadena es el texto donde se desea buscar y Subcadena es el 
texto que desea buscar. 
1 4 4 - G r u p o E d it o r ia l M e e a b v t e 
CAPITULO III: Elementos de la Programación 
APLICACIÓN DESARROLLADA N° 13 
Las siguiente aplicación es un ejem plo del uso de las funciones de cadena 
I n g r e s e u n a F r a s e 
L o n g itu d d e la F r a s e 
P rim e r C a r á c te r 
U ltim o C a r á c te r 
D e l 2 d o a l G to C a r á c te r 
P o s ic ió n d e la 1 r a le tr a *A' 
M in ú s c u la s 
M a y ú s c u la s E S T U D IA N D O V ISU A L B A SIC 
S ó lo la p rim e ra e n M a y ú s c u la E s t u d ia n d o V is u a l B a s ic 
¡ E s t u d i a n d o V I S U A L B A S I C 
2 3 nr ::: M u e s tr a 
c N u e v o 
stu di 
S a lir i 
e s tu d ia n d o v is u a l b a s ic 
l ’A S O N° 01: D ib u ja r los controles. 
Labell 
Label2 
LabeB 
LabeM 
Label5 
LabeS 
Label? 
LabeB 
LabeIS 
:|Text1 
Labell 0 
Label! 1 
Labell 2 
Labell 3 
Label14 
Labell 5 
Labell 6 
Labell 7 
PA SO N ° 02: A sig na r las propiedades a los controles. 
Ud., está en condiciones de asignar las propiedades a los controles: Asigne 
la propiedad C aption a las etiquetas desde L a b e ll hasta Label7 y a los 
botones de commandos. T e x tl y las etiquetas desde LabeI8 hasta L a b e ll3 
deben estar en blanco. 
PASO N ° 03: E scrib ir las instrucciones para los controles. 
Prívate Sub Commandl_Click() 
LabellO = Len(Trím(Textl )) 
tM belll = Left(Trím( Textl ), 1) 
Labell2 = Right(Trim(Textl ), 1) 
Labell3 = Mid(Trím(Textl), 2, 5) 
Labell4 = lnStr(Textl, "a") 
Labell 5 = LCase(Textl) 
Label 16 = UCase(Textl) 
Label 17 = StrConv(Textl, 3) 
End Sub 
Prívate Sub Commandi JClick() 
Textl = "" 
LabellO = 
Labelll = 
Labell2 = 
Labell3 = 
Label 14 = 
Labell5 = 
Label 16 = 
L a b e l 1 7 = Textl.SetFocus 
End Sub
como debe ser. 
FUNCIONES TIPO FECHA 
NOW.- Obtiene la fecha y hora del sistema. 
DATE.- O btiene la fecha del sistema. 
YEAR.- O btiene el año de una fecha. 
MONTH.- O btiene el núm ero mes de una fecha. 
DAY.- Obtiene el día de una fecha. 
W E E K D A Y .-O b tie n e el núm ero del día de la semana. 
D om ing o = 1 , Lunes = 2, M artes = 3, etc. 
CVDATE.- C onvierte una cadena en un va lo r tipo fecha. 
ISDATE.-V erifica si un determinado va lo r puede considerarse de tipo fecha. 
La fu n ció n Format perm ite asignar un form ato a las fechas: 
d-m-y 
dd/mm/yy 
dd-mmmm-yyyy 
h:m:s: AM /PM , dd/mm/yy 
21-8-98 
21/08/98 
21-Ago-1998 
20:35:20 PM, 21/08/98 
APLICACION DESARROLLADA N° 14 
Se debe ingresar el nom bre y la fecha de nacim iento de una persona y 
visualizarse p or separado: El día, mes, año, núm ero del día de la semana, la 
fecha en letras y la fecha y hora actual. 
Nombre 
Fecha de Nacimiento 
D ía Ingresado 
Mes Ingresado 
Año Ingresado 
D ía de la semana 
fjOS E MARIA 
11 7-1 0-86 
P7 
|ïô 
|1986 
O k 
Salir 
V'í&rsr&s-. / Z afe 
iHoy es 1 7 /07/1 998 11:26:58 PM 
PASO N° 01 D ib u ja r los controles. 
=asi-2l 
Labell 
Label2 
Label3 
Label4 
Label5 
LabeIS 
jfT extl 
jText2 
Label7 
LabeIS 
Label9 
Labell O 
PASO N° 02 A sig na r las propiedades. 
A signe las propiedades a los controles de tal manera que se visualicen como 
se muestra en la aplicación a desarrollar. 
1 4 6 ^ 1 G r u p o E d it o r ia l Megahyte 
CAPÍTULO III: Elementos de la Programación 
PASO N ° 03 E scrib ir las instrucciones. 
La siguiente instrucción muestran en la etiqueta N ° 12 la fecha y hora del 
sistema. Se deben e scribir en el evento Form Load. 
Prívate Sub Form_Load() 
Labell2 = "Hoy es " + Str(Now) 
End Sub 
Las siguientes instrucciones perm iten visua liza r los resultados que se de­sean. 
Se escriben en el evento C lic k del C om m andl (O K ). 
Prívate Sub Commandl_Click() 
Dim fecha As Date 
Dim ndia, nmes As String *10 
Dim día, mes, año, diasemana As Integer 
fecha = CVdate(Text2) 
dia = Day (fecha) 
mes — Month(fecha) 
año = Year(fecha) 
diasemana - WeekDay(fecha) 
Label7 - dia 
Label8 = mes 
Label9 - año 
LabellO = diasemana 
‘convierte el N° del día de la semana en letras 
‘Si desea escribir dos instrucciones en una 
‘línea, debe separarlas por dos puntos 
Select Case diasemana 
Case 1 : ndia = "Domingo" 
Case 2 : ndia = "Lunes " 
Case 3 : ndia = "Martes" 
Case 4 : ndia = "Miércoles” 
Case 5 : ndia = "Jueves" 
Case 6 : ndia = "Viernes" 
Case 7 : ndia - "Sábado" 
End Select 
‘convierte el N° del mes en letras. 
Select Case mes 
Case 1: nmes = "Enero" 
Case 2: nmes - "Febrero" 
Case 3: nmes = "Marzo" 
Case 4: nmes - "Abril" 
Case 5: nmes = "Mayo" 
Case 6: nmes = "Junio" 
Case 7: nmes - "Julio" 
Case 8: nmes = "Agosto" 
Case 9: nmes - "Setiembre" 
Case 10: nmes = "Octubre" 
Case 11: nmes = "Noviembre" 
Case 12: nmes = "Diciembre" 
End Select 
Labell 1 = ndia+", "+Str(dia)+" de "+nmes+" de "+Str(año) 
End Sub 
147 « ¡ s »
VISUAL BASIC como debe ser... 
FUNCIÓN DATEADD 
Permite increm entar o d is m in u ir un intervalo de tiem po a una fecha. El 
intervalo de tiem pos puede ser un num ero de días, semanas, meses, años, 
etc., retornando una nueva fecha. 
Su sintaxis es: D ateAdd ("Intervalo",V alor,Fecha) 
Intervalo 
Indica qué intervalo de tiem po se va a increm entar o d is m in u ir a la fecha. 
Los valores que puede tener son: 
Intervalo Descripción 
yyyy Año 
q Trimestre 
m Mes 
y Día del año 
d Día 
w Día de la semana 
ww Semana 
h Hora 
n Minuto 
s Segundo 
Valor 
Es la cantidad del intervalo de tiem po que se va a increm entar o d is m in u ir a 
una fecha. U n va lo r p ositivo increm enta y un va lo r negativo dism inuye. 
Fecha 
Es la fecha a la cual se va a d is m in u ir o increm entar el intervalo de tiem po 
Ejemplo: 
Las siguientes instrucciones muestran en L a b e ll la fecha actual y en Label2 
la fecha anterior pero increm entada en dos semanas. Si desea d is m in u ir dos 
semanas, debe e scribir menos dos (-2). 
Label 1 = Now 
Label2 = DateAdd("ww", 2, Now) 
FUNCIÓN DATEDIFF 
D evuelve la d iferencia entre dos fechas en un intervalo de tiem po indicado. 
Por ejem plo, la diferencia de dos fechas en días, semanas, meses, etc. Su 
sintaxis es: 
DateDiff(Intervalo, Fecha I, Fecha2, Valor I,VaIor2) 
Intervalo 
Indica en qué intervalo de tiem po se va a calcular la diferencia entre las dos 
fechas. Los valores que puede tener son los m ism os que en la función DateAdd. 
Fechal y fecha2 
Son las fechas entre las cuales se va a calcular la diferencia. 
G r u p o E d i t o r i a 148 l Megabyte<|f¡¡jj||| 
CAPÍTULO III: Elementos de la Programación 
Valorl 
Es opcional y perm ite in d icar cuál es el p rim e r día de la semana se usará 
Visual Basic. En form a predeterm inada el p rim er día de la semana es el 
D om ingo. Los valores que se pueden escribir son: 
Valor Descripción 
1 Domingo (predeterminado) 
2 Lunes 
3 Martes 
4 Miércoles 
5 Jueves 
6 Viernes 
7 Sábado 
VaIor2 
Es opcional y perm ite in d icar cuál es la prim era semana del año que usará 
Visual Basic. En form a predeterminada es la semana que contiene al prim ero 
de enero. Los valores que se pueden escribir son: 
Valor D escripción 
1 E m p ie z a c o n la sem ana en la que se e n c u e n tra el 1 de E n ero 
(predeterm inado). 
2 Empieza con la Ira. semana que tenga al menos 4 días en el nuevo año. 
3 Empieza con la Ira semana que esté completamente incluida en el nuevo año. 
L a siguiente instrucción muestra en la etiqueta N ° 1 (L a b e ll) la diferencia 
en semanas que existe entre el 30 de Setiem bre del año 1999 y el 01 de 
M ayo del año 2000. 
L a b e ll = D a te D iff("w w ", C V D a te ("3 0 -0 9 -9 9 "), C V D a te fO 1-05-00")) 
N O T A 
Visual Basic devuelve cero (0) si las fechas se encuentran dentro del m ism o 
intervalo de tiem po indicado. Por ejem plo, si el prim er día de la semana es 
dom ingo, la instrucción: 
Labell = DateDiff("ww", C V D atef 14-07-00"), CV D atef 15-07-00")) 
Muestra en Labell el valor cero (0) porque el 14-07-00 es viernes y el 15-07-00es 
sábado (la misma semana). 
La instrucción: 
Labell = DateDiff("ww", CV D atef 15-07-00"), CVDate(" 16-07-00")) 
M uestra en L a b e ll el v a lo r uno (1) porque el 15 de Ju lio del año 2000 es 
sábado y el 16 de Ju lio del año 2000 es dom ingo (siguiente semana). 
149
VISUAL BASIC como debe ser... 
FUNCIÓN DATEPART 
Perm ite obtener el intervalo de tiem po en el cual se encuentra una fecha. 
Por ejem plo, a qué núm ero de la semana del año corresponde a una fecha. 
Su sintaxis es: 
DatePart(Intervalo, Fecha, Valorl,VaIor2) 
Intervalo 
Indica el intervalo de tiem po en el que se encuentra la fecha. Los valores 
que puede tener son los m ism os que en la fu nció n DateAdd. 
Fecha 
Es la fecha que se desea evaluar. 
Valorl y Valor2 
Son los m ism os que los de la fu nció n D a te D iff. 
Por ejem plo, la siguiente instrucción m uestra en Label 1 el trim estre del año 
al cual pertenece la fecha actual. 
Label 1 = DatePart("q", Now) 
APLICACIÓN DE EJEMPLO: 
Esta a p lic a c ió n p e rm ite ing re sa r una fe ch a de n a c im ie n to y m uestra 
inform ación utilizando las funciones anteriores: 
TTTc: 
Fecha de Nacimiento |oi -05-68 1 
Nom bre de la Estación en la que nació jO toño 
Signo Z o d ia ca l al que p ertenece |Tauro 
N 9 de la S em ana del A ñ o en que nació h 8 
M eses Transcurridos desde que n ació {377 
Fecha A c tu a l D espués de 3 Semanas 
23-10-1999 
1. DIBUJAR LOS CONTROLES 
g n ^ — — ■ 1 □ 1 x 1 
L a b e ll jl* e x t l C o m m a n d l j 
L a b e l2 LabeIS 
L a b e l3 L a b e l7 
L a b e l4 L ab elQ 
L = b » l5 L a b ' 19 
L a b e l! O 
L a b e ll 1 C o m m a n d ? 
150 G r u p o E d i t o r i a l M egabyte^ 
> CAPÍTULO III: Elementos de la Programación 
1. ESCRIBIR LAS INSTRUCCIONES PARA LOS CONTROLES. 
Instrucciones del Form_Activate 
Prívate Sub Form_Activate() 
Textl = "" 
Label7 = "" 
LabelS = "" 
Textl. SetFocus 
Fonnl.C aption = "Fecha A c tu a l: " + Str(Date) 
End Sub 
Instrucciones del del Botón Aceptar 
Prívate Sub Commandl _Cl¡ck() 
Dim Dia,Mes As Integer 
Dim Fecha As date 
IflsDate(Textl) Then 
Fecha = CDate(Textl) 
Día = Day( Fecha) 
Mes = Month( Fecha) 
Rem ESTACION DE NACIMIENTO 
If(Dui>=23 And Mes=12) OrMes- 10rMes=2 Or(Dia<=22 AndMes=3) Then Label6= "Verano" 
lf(Dia>=23AndMes=3) 0rMes=4 0rMes=5 Or (Dia<=22 And Mes=6) Then Label6= "Otoño " 
lf( Dia> =23 AndMe=6)0rMes=70r Mes=8 Or (Dia< =22AndMes=9) Then LabeI6= "Invierno" 
lf(Dia>=23AndMes=9) 0rMes=l()0rMes=II 0r(Dia< =22AndMes= 12) Then Label6= "Primav. 
Rem SIGNO ZODIACAL 
lf(Dia>=21 And Mes=3) Or (Dia <= 20 And Mes = 4) Then Label7 = "Aries" 
If (Dia>=21 And Mes=4) Or (Dia <= 20 And Mes = 5) Then Label7 = "Tauro" 
I f (Dia>=21 And Mes=5) Or (Dia<=20 And Mes = 6) Then Label7 = "Geminis" 
lf(Dia>=21 And Mes=6) Or (Dia<=22 And Mes = 7) Then Label7 = "Cáncer" 
lf(Dia>=23 And Mes = 7) Or (Dia <= 22 And Mes = 8) Then Label7 = "Leo" 
I f (Dia>=23 And Mes=8) Or (Dia <=22 And Mes = 9) Then Label7 = "Virgo" 
I f (Dia>=23 And Mes=9) Or (Dia<=22 And Mes = 10) Then Label7 = "Libra" 
I f (Dia>=23 And Mes=10) Or (Dia<=2l And M es= ll) Then Label7="Escorpio" 
lf(Dia>=22 And M es=Il) Or (Dia<=21 And Mes=12) Then Label7="Sagitario" 
If(Dia>=22 And Mes=12) Or (Dia< = 19 And M es=l) Then Label7="Capricorn." 
I f (Dia>=20 And M es=l) Or (Dia<=18 And Mes = 2) Then Label7 = "Acuario" 
If (Dia> = 19 And Mes=2) Or (Dia<=20 And Mes = 3) Then Label7 = "Piscis" 
Label8 = DatePart("ww", CDate(Textl)) 
Label9 = DateDiff("m", CDate(Textl), Date) 
Label 11 = DateAdd("ww", 3, Date) 
Else 
MsgBox "La fecha ingresada no es correcta", 64, "Verifique" 
Textl.SetFocus 
End If 
End Sub 
Instrucciones del del Botón Salir 
Prívate Sub Command2_Click() 
End 
End Sub
m k » VISUAL B ASW co.no t e t e s e , . . 
F U N C I O N E S T I P O H O R A 
TIM E 
D evuelve la H ora exacta del sistema H H :M M :S S . 
HOUR 
O btiene sólo las Horas (H H ). 
M INUTE 
O btiene sólo los M in utos (M M ). 
SECOND 
O btiene sólo los Segundos (SS). 
F U N C I O N E S N U M E R I C A S 
ABS 
O btiene el va lo r absoluto de un núm ero. A B S (N úm ero). 
BVT 
O btiene la parte entera de un núm ero. IN T (N ú m e ro ). 
SQR 
O btiene L a raíz cuadrada de un núm ero. SQ R (N úm ero). 
RND 
Retorna un va lo r random. 
Para obtener números aleatorios en un intervalo dado, use esta fórm ula: 
Int(i(Lím._superior-Km._inferior+l)*Rnd+ lím.Jnferior) 
Por ejemplo, para obtener números aleatorios entre 12 y 50 u tilice la siguiente 
form ula: 
Int((50 - 12 + 1) * Rnd + 12) 
RANDOM IZE 
In ic ia liz a el generador de números aleatorios, perm itiendo que no se repita 
la secuencia de números aleatorios anteriores. 
SGN 
O btiene el signo de un núm ero. SGN(Número) 
-1 Negativo, 0 Cero, 1 Positivo 
HEX 
C onvierte un núm ero a Base H exadecim al. HEX(Número). 
OCT 
C onvierte un núm ero a Base O ctal. OCT(Número). 
152 G r u p o E d it o r ia i Megabyte 
O 
CAPÍTULO III: Elementos de la Programación % 
VAL 
I .a fu nció n Val convierte una cadena de caracteres en un va lo r num érico. 
VAL(Cadena) 
STR 
,u función Str convierte un valor num érico en una cadena de caracteres. 
STR(Valor Numérico) 
CHR 
Devuelve el carácter A S C II de un valor. C H R (V alor). 
ASC 
Devuelve el va lo r A S C II de un carácter. ASC (C arácter). 
FORMAT 
Realiza lo m ism o que STR, y además da un form ato a la salida de acuerdo 
con el patrón especificado. 
Ejemplo: 
Si la variable Sueldo = 635, la siguiente instrucción: 
Textl = Format(Sueldo,” ###,##0.00” ) 
Visualiza en la caja de texto el valor: 635.00 
E l s ím b o lo # representa un d íg ito c u a lq u ie ra , excepto los ceros no 
significativos. E l sím bolo cero (0) representa un dígito cualquiera, incluyendo 
los ceros no sig n ifica tivo s y además redondea el resultado. E l punto indica 
la posición del punto decim al y la coma es el separador de m iles. Otros 
sím bolos que tam bién se pueden usar son: + -$ () y espacios. E l sím bolo % 
representa el va lo r p or ciento y añade este sím bolo al resultado. 
Para indicar el separador decimal (punto o coma) debe hacerlo en la 
configuración del Windows. 
ISNUM ERIC 
Perm ite saber si un va lo r se puede considerar com o num érico. 
ISNUMERIC(Valor) 
ISEMPTY 
Perm ite saber si una variable está vacía. 
ISEMPTY (Variable) 
ISNULL 
Permite saber si el contenido de una variable no es válido. 
ISNULL(Variable) 
1 f c 153 ^
j a m 
VISUAL BASIC como debe ser. 
APLICACIÓN DESARROLLADA N° 15 
Esta aplicación es un ejem plo de la u tilid a d de las funciones tipo numéricas. 
Ingrese un número j[~ 
Parle Entera 
Parte Decima! 
Valor Absoluto 
R aíz cuadrada 
Signo del Número 
Valor Octal (Base 8) 
Valor Hexadecimal (Base 16) 
M U ES TRA 
□ x 
NUEVO 
SALIR 
Labell ¡(T extl 
Label2 LabeIS 
Label3 LabellO 
Labe!4 LabelH 
Label5 Labell 2 
LabelB Labell 3 
Label? Labell 4 
Labelô Labell 5 
Commandl 
Command? 
Command3 
A signe la propiedad C aption al fo rm u la rio , botones de comandos y etiquetas 
desde L a b e ll hasta L a b e l8. E l resto debe estar en blanco. 
Instrucciones del botón M UESTRA: 
Prívate Sub Commandl_Click() 
Dim NUM As Double 
I f lsNumeric(Textl) Then 
NUM = Val(Textl) 
Label9 = Int(NUM) 
LabellO = NUM - Val(Label9) 
Labelll = Abs(NUM) 
‘No se puede obtener la Raíz Cuadrada de un # Negativo 
IfNUM > 0 Then 
Lab el 12 = Sqr(NUM) 
Else 
Lab el 12 - "No Existe" 
End If 
Labell 3 = Sgn(NUM) 
LabelM = Oct(NUM) 
Labell 5 = Hex(NUM) 
Else 
MsgBox "Debe ingresar un valor numérico", 0, "Sólo números" 
Textl = "" 
Textl.SetFocus 
End If 
End Sub 
En el botón N uevo, lim p ie T e x tl y las etiquetas desde Label9 hasta Label5 
y el botón S a lir escriba la instrucción E N D . 
O 
CAPÍTULO III: Elementos de la Programación ^ 
NUEVAS FUNCIONES 
La Versión 6.0 de Visual Basic tiene las siguientes funciones: 
ROUND 
Esta función perm ite redondear un núm ero a una determ inada cantidad de 
decimales. 
Round (Valor.; Número de Decimales) 
M O N T H N A M E 
Esta fu nció n muestra el nom bre del mes a p a rtir de un núm ero entre 1 y 12. 
MonthName (Numero, Valor Lógico) 
El núm ero debe estar entre 1 y 12 de lo contrario se muestra un mensaje de 
error. E l va lo r lóg ico es opcional: True indica que el nom bre se muestre en 
abreviatura y False com pleto. 
WEEKYDAYNAME 
M uestra el nom bre del día de la semana a p a rtir de un N ° entre 1 y 7 según 
el 1er. D ía de la semana configurado. 
WeekDayName (Número, Valor lógico,Primer Día) 
Núm ero debe estar entre 1 y 7, V a lor L ó g ic o in d ica si el nom bre se muestra 
en abreviatura. P rim er D ía co nfig ura el día que se debe considerar el que 
in icia la semana y puede tener uno de los siguientes valores: 
1 Domingo (Predeterminado), 2 Lunes, 3 M artes,... 7 Sábado. 
Por ejem plo: W eekDayN am e(3,False,5) devuelve sábado porque el 1er día 
de la semana se ha configurado a 5 (Jueves). 
R EPLAC E 
Reemplaza una subcadena p or otra dentro de una cadena. 
Replace (Cadena, SubCadenal, SubCadena2, ValorI, Valor2) 
( 'adena es aquella donde se desea realizar el reemplazo. 
SubCadenal es la subcadena que va hacer reemplazada. 
SubCadenal es la subcadena reemplazante. 
V a lo r 1 es un va lo r que in d ica la posición de la cadena desde donde se va a 
luiscar la subcadena que va hacer reemplazada. 
V a lo ré ind ica la cantidad de veces que desea buscar y reem plazar la 
ubcadena. El va lo r -1 (predeterm inado) indica que busque y reemplace 
lodas las subcadenas que se encuentren.
|VISUAL BASIC como debe ser... - "xs 
STRREVERSE 
In vierte los caracteres de una cadena. 
StrReverse ( Cadena) 
El ú ltim o carácter lo coloca prim ero, el penúltim o lo coloca segundo, etc. 
FORMATCURRENCY 
A signa un form ato m onetario a los números. El signo m onetario depende de 
la C onfiguración Regional. 
FormatCurrency (Número, Valorl, Valor2, Valor3, Valor4) 
V a lo rl: Indica la cantidad de decimales. 
Valor2: Indica si se muestra un cero en la parte entera cuando no hay decimales. 
Valor3: Indica si los negativos deben estar entre paréntesis. 
Valor4: Indica si se muestra el separador para los miles. 
Valor2, valor3 y Valor4 pueden ser: 
-1 SI, 0 N O ,-2 Según la configuración Regional 
NOTA 
Si no indica ningún valor, V isual Basic muestra los resultados según la 
configuración regional (Inicio/C onfiguración/P anel de C on trol) 
Configuración 
regional 
FORMATNUMBER 
Esta fu n c ió n es s im ila r a F o rm a tC u rre n cy pero no m uestra el sím bolo 
monetario. 
FORMATDATETIME 
A signa un form ato a datos tip o fecha y hora. 
Form atD ateTim e(Fecha, Valor) 
E l va lo r puede ser: 
0: Form ato general (Fecha u Hora). 
1: Form ato de fecha largo. 
2: Form ato de fecha corto. 
3: Form ato de hora según la config uració n regional. 
4: M uestra la hora en form ato de 24 hora. 
156 G r u p o E d i t o r i a l Meeabvte 
CAPITULO III: Elementos de la Programación 
FUNCIÓN SHELL 
La fu nció n S H E L L se u tiliz a para ejecutar programas (archivos ejecutables 
com o *.E X E , *.C O M , etc.) desde el V isual Basic. 
Su sintaxis es: 
SHELL “RUTA Y NOMBRE DEL PROGRAMA”, 
La ruta es la dirección exacta de la carpeta donde se encuentra el program a 
que se desea ejecutar. 
El va lo r indica el estilo de la ventana donde se va a ejecutar el programa: 
0 : O culta la ventana donde se ejecuta el archivo. 
1 : E jecuta el p ro g ra m a en su ven ta n a de tam año norm al. 
2 : Ejecuta el program a con su ventana m inim izada. 
3 : Ejecuta el program a con su ventana m axim izada. 
4 : Ejecuta el program a con el tamaño y posición mas reciente de su 
ventana. L a ventana actual continua activa. 
6 : Ejecuta el program a con su ventana m in im iza da y la ventana actual 
continua activa. 
Si no escribe el va lo r el program a se visualiza con la ventana m inim izada. 
Por ejem plo, la siguiente instrucción ejecuta la calculadora del w indow s. 
Shell "c:windowscalc.exe", 1 
D e sp u é s d e e je c u ta r el p ro g ra m a , V isual B a sic c o n tin u a e je c u ta n d o 
la s s ig u ie n te s in s tr u c c io n e s q u e s ig u e n a l S H E L L . E sto n o s d á la 
p o s ib ilid a d de e je c u ta r varios p ro g ra m a s. P o r ejem p lo las sig u ien tes 
in stru c c io n e s ejecu ta n la ca lcu la d o ra y el p a n e l de control. 
Shell "c:windowscalc.exe", 1 
Shell "c:windowscontrol.exe", 1 
L a fu n c ió n S h e ll d e v u e lv e un v a lo r tip o D o u b le q u e in d ic a s i el 
p ro g ra m a se ha ejecu ta d o con éxito, ca so co n tra rio devu elve cero (0). 
P ara o b te n e r este va lo r utilice la sig u ien te sintaxis: 
V A R IAB LE= SHELL(“ RUTAY NOMBRE D EL PROGRAMA” , VALOR)
|¡ I ¡ ¡ i> VISUAL BASIC como debe ser... 
APLICACIÓN DESARROLLADA N° 16 
L a siguiente aplicación perm ite ejecutar desde el V isual Basic algunos 
programas. 
¡a. u s o d e l s h e l l 
_________________________ M 
| P r o g r a m a a E / e c u t a r : 
CALCULADORA ELECTRONICA 
MICROSOFT W O R D 
MICROSOFT EXCEL 
EXPLO RADOR DE W IN D O W S 
SALIR A L D .O .S. 
í...... FIN A LIZA R .......]} 
Si sale al D.O.S., escriba EXIT para regresar al Windows. 
La instrucción de cada Botón de Comando es: 
Private Sub Command 1 JClickf) 
Shell "C:WlNDOWSCALC.EXE", 1 
End Sub 
Prívate Sub Command2_Click() 
Shell "C:Archivos deprogramaMicrosoft OfftceOfficeWINWORD.EXE", 1 
End Sub 
Prívate Sub Commands_Click() 
Shell "C:Archivos de programaMicrosoft OjficeOfficeEXCEL.EXE", I 
End Sub 
Prívate Sub Command4_Click() 
Shell "C:WINDOWSEXPLORER.EXE", I 
End Sub 
Prívate Sub Command5_Click() 
Shell "C:WINDOWSCOMMAND.COM", 1 
End Sub 
Prívate Sub Commandó_Click() 
End 
End Sub 
'mm ™ G r u p o E d i t o r i a l Megabyte 
CAPÍTULO III: Elementos de la Programación % 
FOR-NEXT 
Permite crear bucles. Un bucle es la repetición de una o más instrucciones. 
Su sintaxis es: 
F O R variable = v.inicial T O v.final S T E P incremento 
Instrucción(es) 
N EX T variable 
STEP: Sólo es necesario cuando el incremento es diferente de 1. 
EXIT FORM: Permite salir del bucle. 
DO-LOOP 
Permite ejecutar una o más instrucciones mientras una condición se cumpla 
(W H IL E ) o hasta que se cum pla una condición (U N T IL ). Tiene cuatro 
sintaxis: 
Do W hile Condición 
Instrucción(es) 
Loop 
Do 
Instrucción(es) 
Loop W hile Condición 
Do Until Condición 
Instrucción(es) 
Loop 
Do 
Instrucción(es) 
L oop Until Condición 
MUY IMPORTANTE 
M ientras Visual Basic está ejecutando un bucle, no reconoce ningún evento. Esto 
lo puede evitar con la instrucción DoEvents. 
DOEVENTS 
D oE vents p a sa el control a l sistem a o p era tivo y verifica si a ocurrido 
alg ú n evento. S i a o c u rrid o un e v e n to o e v e n to s los e je c u ta y lu eg o 
con tin u a con el even to inicial. 
E jem p lo s: 
Dim x Integer 
E stas instrucciones m ueven la etiqueta N° 1 de 
For x = 1 To 10000 
izq u ierd a a d erecha y no se reconoce ningún 
Lab ell .Left = x 
evento hasta que termine. 
Next 
Dim x As Integer 
For x = / To 10000 
Labe 11. Left = x 
Doevents 
Next 
Estas instrucciones m ueven la etiqueta N° 1 de 
izquierda a derecha, p ero cada vez que ejecuta el 
bucle verifica si ha ocurrido algún evento para 
ejecutarlo.
m s* VISUAL BASIC como debe ser. 
APLICACION DESARROLLADA N° 17 
Se debe ingresar un texto y luego se debe m ostrar letra por letra del texto 
ju n to con su va lo r A S C II y su valor B in ario; además, el valor binario se debe 
desplazar de izquierda a derecha por el form u la rio . 
Ö E JE M P L O S D E B U C LES 
IN G R E S E UN TE XTO 
LE T R A 
V A L O R ASCII 
• . |n| x| 
V A L O R B IN AR IO 
O K 
P A S O N ° 01: D ib u ja r los controles 
I ^ Form » - . I n i x | 
L a b e ll IfT e x tl 
Label2 LabeIS 
Label3 LabelB 
Label4 Label? 
C om m andl I 
LabelQ 
P A S O N ° 02: A sig na r las propiedades a los controles. 
A signe la propiedad C aption a los controles según el ejem plo. 
160 G r u p o E d it o r i a l Megabyte < 
CAPÍTULO III: Elementos de la Programación 
PASO N ° 03:E scrib ir las instrucciones para los controles. 
Instrucciones del botón OK: 
Prívate Sub Commandl_C!ick() 
TEXTO = Trim(Textl) 
For X - 1 To Len( TEXTO) 
Label7 = " " 
LETRA = Mid(TEXTO, X, 1) 
Label5 = LETRA 
VALOR = Asc( LETRA) 
Labeló = VALOR 
La be 17 = BlNARIO( VALOR) 
Label8 = Label7 
‘Mvimiento del valor Binario 
For T = 1 Tó 5000 Step 0.1 
Label8.Left - T 
Next T 
N extX 
End 
End Sub 
Instrucciones de la función BINARIO: 
Prívate Function BINARIO(NUM) 
Dim VALORBIN As String 
Do While NUM > 1 
RESTO = NUM Mod 2 
NUM = N U M 2 
VALORBIN = Trim(Str( RESTO)) + Trim( VALORBIN) 
Loop 
VALORBIN = Trím( Str( NUM)) + VALORBIN 
BINARIO = VALORBIN 
End Function 
16, 4 ¡ £ »
i l l i ^ VISUAL BASIC como debe ser... 
i 
ARRAYS 
U n array perm ite almacenar en una sola variable, varios elementos del m ism o 
tip o utiliza nd o un índice. El prim er elemento de un array se almacena en 
fo rm a predeterminada en el índice 0, pero con la instrucción OPTIO N B A SE 
7, le indica al Visual Basic que el p rim er elemento de un array se almacene 
en el índice 1. 
C on la palabra P U B L IC se declaran arrays globales y lo debe hacer en la 
sección de declaraciones de un m ódulo. 
Con la palabra D IM se declaran arrays a nive l del m ódulo o del fo rm u la rio . 
C on la palabra STATIC se declaran arrays locales a un procedim iento. 
A r r a y s E stá tico s. 
Se caracterizan porque tienen un núm ero fijo de elementos. Ejem plos: 
Dim Nom (19) As String 
D eclara la variable Nom de tip o cadena que perm ite alm acenar veinte 
elementos (de 0 a 19). 
Dim A (1 to 15) As Integer 
D eclara la variable A de tipo integer que perm ite almacenar 15 elementos 
(de 1 a 15). 
Static N um (1 to 4, 1 to 4) A s Integer 
D eclara la variable Num de dos dim ensiones (4 * 4) de tipo Entero. 
A r r a y s D in á m ico s. 
Se caracterizan porque sus dim ensiones no son fijas. 
E l espacio para un array dinám ico será asignado durante la ejecución del 
program a. Un array dinám ico, puede ser redim ensionado en cualquier 
m om ento de la ejecución del program a. 
R E D IM 
Es una instrucción que permite cam biar el núm ero de elementos de un array, 
se debe escribir solamente en un procedim iento. Ejem plo: 
Dim Num () As Integer 
D eclaración dinám ica de la variable N u m de tip o Entero. 
En el m om ento que necesite asignarle espacio puede escribir: 
Redim N um (N ) 
Donde N contiene el valor con el que desea redim ensionar la variable Num . 
íljllllll^ 162 G r u p o E d i t o r i a l Megabvte 
( 
CAPÍTULO III: Elementos de la Programación ^ ¡ ¡ ¡ ¡ ¡ 1 
APLICACIÓN DESARROLLADA N° 18 
Se debe ingresar un núm ero del 1 al 7 y visua liza r el nom bre del día de la 
semana. 
-----I1-n---|1-x--|-1 
Ingrese un número (1-7] 
GK 
Salir 
1. D ib u ja r los controles y asignarle sus propiedades. 
2. D eclarar en la sección de declaración del fo rm u la rio . 
Dim D (1 To 7) As String * 9 
3. A sig na r los elementos al array en F O R M L O A D . 
Prívate Sub Form_Load() 
'Almacena los elementos en el Array D (1) = "Lunes" 
D(2) = "Martes" 
D(3) = "Mi ércoles" 
D(4) = "Jueves" 
D(5) = "Viernes" 
D(6) = "Sábado" 
D (7) = "Domingo" 
End Sub 
4. Escribrir las instrucciones del Botón OK. 
Prívate Sub Commandl_Click() 
Dim N As Integer 
N = Val(Textl) 
If N >= 1 And N <= 7 Then 
L ubel2- "El número ingresado representa el día "+D(N) 
El se 
MsgBox "Sólo números del 1 al 7", 0, "Por favor" Textl = "" 
Textl.SetFocus End If 
End Sub 
El botón S A L IR debe tener la instrucción E N D .
VISUAL BASIC como debe ser... 
CREAR UN ARRAYDE CONTROLES 
Existen dos form as de crear un array de controles: 
l.Cuando los controles ya están dibujados en el formulario. 
Si los controles ya están dibujados en el fo rm u la rio y desea crear con ellos 
un array de controles, asígneles el m ism o nom bre (propiedad Ñ A M E ) a 
cada uno de ellos. A l escribir el m ism o nombre al segundo control se 
visualiza el siguiente mensaje: 
M icrosoft V isual Basic 
Y a existe un control llam ado 'N'. ¿D esea crear una matriz de 
con troles? 
Sí N o 
Haga c lic k en el botón SI y continúe asignado el m ism o nom bre a los si­guientes 
controles. Cuando todos los controles tienen un m ism o nom bre se 
tiene un array con una sola dim ensión cuyos elementos se diferencian por el 
va lo r de su propiedad IN D E X de cada control, por ejem plo: E l p rim er con­tro 
l tendrá en su propiedad Index el va lo r 0, el segundo control tendrá el 
va lo r 1, etc. 
2. Cuando los controles todavía no están dibujados en el formulario. 
Si los controles todavía no los ha dibujado en el form ulario, entonces d ibu­je 
sólo el p rim er control y asígnele, si lo desea, un nom bre diferente al que 
tiene en form a predeterminada, luego selecciónelo haciendo un C lic k en 
dicho co ntrol y pulse las teclas CTRL+C, para copiarlo en la m em oria 
de la com putadora y después pulse las teclas CTRL+V, para pegarlo en 
el form ulario. 
L a prim era vez que Ud. pulsa CRTL+V, se visualiza el mensaje anterior, 
haga C lic k en el botón SI y continúe pulsando CTRL+V hasta que tenga 
la cantidad de controles deseadas. Cada control que pega se ubica en la 
parte superior izquierda del form ulario uno sobre otro, con el m ism o nombre, 
pero con la propiedad IN D E X diferente. Cuando term ine ubíquelos en su 
respectivo lugar y en el orden correcto. 
Las teclas C T R L + C equivalen a la opción C o p ia r (C o p y) de la opción 
E D ITA R (E D IT ) d e la Barra de M en ú y C T R L + V equ iva le a la opción 
P e g a r (P aste). 
164 G r u p o E d i t o r i a l Mega bvte 
CAPÍTULO III: Elementos de la Programación 
APLICACIÓN DESARROLLADA N° 19 
La siguiente aplicación perm ite ingresar valores en un array de 4 
llen arlo con valores al azar entre 1 y 50, luego se pueden ordenar en 
ascendente y restaurar los valores iniciales. 
PASO N° 1: D ib u ja r los controles 
X 4 ó 
form a 
t i, F o tm l ¡U s TE l 
Fram el 
|[T e x tl |T e xt2 I T ext3 j 
| t ext5 JT extG |Tex<7 I 
1T ext9 I T e x tl 0 |Text11 
T ext4 
T e xt8 
T e x tl 2 
T e x tl 6 
|T e xt1 3 |T e x tl 4 | t e x tl 5 1 
C om m a n d l 
C om m and2 
C om m and3 
C om m and4 
C om m and5 
PASO N° 2: Convertir las Cajas de Texto en un array. 
Cree un array de controles con las cajas de texto usando cualquiera de los 
dos form as indicas y asígnele el nom bre N en la propiedad Ñame a cada 
una de ellas. 
NUEVO 
[' O R D EÑ AR '] 
RESTAURAR I 
LLENAR 
SALIR 
¡i,. ORDENACION DE UN ARRAY 
Valores del Array 
I2 1Í3 I4 II5 
I8 1I12 !|23 28 
I43 144 |S3 |54 
j GG I76 leo 1154
áüÉyÉÍ!' VISUAL BASIC como debe ser... 
PASO N° 3: Escribir las instrucciones para los controles. 
En el objeto G E N E R A L y en el evento D E S C R IP C IO N E S del fo rm u la rio 
declare las siguientes variables: 
Se declara la variable O R IG E N tipo array a nive l de fo rm u la rio para poder 
llam ar a los datos desde cualquier procedim iento. 
La variable Y A se u tiliz a para saber si ya se alm acenaron los valores 
originales en el array O R IG E N 
Dim ORIGEN( 16) As Integer 
Dim YA As Boolean 
Instrucciones del Evento FORM ACTIVATE 
A l activarse el fo rm u la rio se llam an a las instrucciones del C o m m a n d l para 
lim p ia r el contenido de las cajas de texto. 
Prívate Sub Form_Activate() 
‘Al activarse el formulario se llaman a las instrucciones del 
'Commandl para limpiar el contenido de las cajas de texto 
Commandl jC lick 
End Sub 
Instrucciones del Botón NUEVO 
Estas instrucciones perm iten lim p ia r el contenido de las cajas de texto para 
ingresar nuevos valores. 
Prívate Sub Commandl_Click() 
Dim X A i Integer 
ForX = OTo 15 
N(X) = " " 
N extX 
N(0).SetFocus 
‘Activa el botón ORDENAR 
Command2.Enabled = True 
‘Inicializa la variable Ya 
YA = False 
End Sub 
G r u p 166 o E d i t o r i a l Megabyte 
CAPÍTULO III: Elementos de la Programación ^|ÉfeiÍP 
Instrucciones del Botón LLENAR 
Estas instrucciones llenan las cajas de texto con valores al azar entre 1 y 50. 
La fu nció n R N D , perm ite obtener valores al azar y para obtener valores al 
azar entre un rango determ inado se u tiliz a la siguiente form ula: 
Int((límitesup - límiteinf + 1) * Rnd + límiteinf) 
Límitesup: 
Es el v a lo r m áxim o que deseamos obtener. 
Límiteinf: 
Es el va lo r m ínim o que se deseamos obtener. 
Por ejem plo para obtener valores al azar sólo entre 7 y 36 se escribe: 
lnt( (3 6 - 7 + 1 ) * Rnd + 7). 
Int: 
Es una función que perm ite obtener sólo la parte entera (sin decim ales) de 
un valor. 
Prívate Sub Command4_Clíck() 
‘Almacena en las cajas de texto 
‘valor al azar entre 1 y 50 
ForX = OTo 15 
N(X) = lnt((50 -1 + 1)* Rnd + I) 
Next X 
Activa el botón ORDENAR 
Command2.Enabled = True 
‘Desactiva el botón RESTAURAR 
Command3.Enabled = False 
‘Inicializa la variable Ya 
YA = False 
End Sub
VISUAL BASIC como debe. ser. _. 
Instrucciones del Botón ORDENAR 
Prívate Sub C om m andl _Click() 
Dim A R ( 16) A i Integer 
‘Copia los valores de las cajas de texto en las 
‘variables tipo array A R y O RIG EN 
F o r X = 0 T o l 5 
IfN o t YA Then 
ORIG EN(X) = Val(N(X)) 
E n d l f 
A R(X) = Val(N(X)) 
N ext 
‘O rdena los valores que se encuentran en la variable A R 
Do 
sw - 0 
F or X = 0 7o 14 
IfO p tio n l Then 
IfA R (X ) > A R (X + 1) Then 
A X - AR(X) 
AR(X) = A R (X + 1) 
A R (X + 1) = A X 
sw - 1 
E n d lf 
Else 
IfA R (X ) < A R (X + 1) Then 
A X = AR(X) 
A R (X )= A R (X + 1) 
A R (X + 1) - A X 
sw = 1 
E n d lf 
E n d lf 
N e x tX 
Loop Until sw = O 
‘M uestra los valores ordenados en las cajas de textos 
F o r X - O To 15 
N (X) = AR(X) 
N e x tX 
YA - True 
‘Activa el botón restaurar 
C om m and3.E nabled - True 
E nd Sub 
Instrucciones del Botón RESTAURAR 
E sta s in stru c c io n e s m u e stra n en la s ca ja s ele te x to lo s va lo res en la 
p o sic ió n o rig in a l (a n te s ele o rd en a rse). 
Prívate Sub Command3_Click() 
For X = O To 15 
N(X) = ORICEN(X) 
NextX 
End Sub 
168 G r u p o E d i t o r i a l Megabyte 
CAPÍTULO III: Elementos de la Programación 
APLICACIÓN DESARROLLADA N° 20 
La siguiente aplicación perm ite m anejar los elementos de array de 4 x 4. 
Estos elementos son valores num éricos de tip o entero con los cuales se 
realiza los siguientes procesos: 
1.- Suma las filas. 
2.- Suma las colum nas 
3.- Sum ar las diagonales, etc. 
a. MANEJO DE ARRAYS ■ ■ ■ - ! n | x ¡ 
C0L1 COL 2 COL 3 COLI 
FILA 1 [i [2 [6 p p - LIMPIAR EL ARRAY i 
F IU 2 |Í2 |— - p------- f -------- |20 LIMPIA LOS BESULTADOsj 
FIL43 p [5 [3 jÍ3 SUMA U S COLUMNAS | 
n w . p ------- [ío — p ----------p — p - SUMA LAS El LAS | 
[ _ _ 
| SUMAS INDEPENDIENTES ----- 
COLUMNA 1 | COLUMNA 2 | COLUMNA 3 | COLUMNA 4 | 
FILAI 1 FILA 2 | FILA3 1 FILM 1 1 
DIAGONAL Ni 1 |  ) | j DIAGONALN12 [ / ) ! 
|25 |15 
SAUR 1 1 
PASO N° 1: Dibujar los controles. 
Labell Label2 Label3 LabeM ......................... 
■ |7^r fr¿r [ f ür l*™ ; Label5 
Labelß 
; 1 Text5 ¡Text6 |Text7 jíexl8 Label14 • - Command2 | 
• f r ^ T fie x iTö f í ^ ñ T f r 3 r t 2  Command3 | 
: Labd7 
• Label8 |TexH3 ¡Text14 |TexH5 fTextlG L-abel16 
: LabeB LabellO Labdl.1 Label12 : : : : : : : 
Command4 | 
Comrr¡aiid9 I Commandl 0 I Command'll I Commandl 2 I ; 
Commandl 3 Commandl 4 
Labell 8 Labell 9 
Commandl 5
álll^ É I’' VISUAL BASIC como debe ser... 
PASO N° 2: Convertir las Cajas de Texto en un array. 
U tilic e cualquiera de las dos formas explicadas. Asigne el nom bre N a cada 
una de las cajas de Texto. 
PASO N" 3: Convertir las Etiquetas desde Label9 hasta Labell2 
en un array de controles. 
Asigne a cada una de estas etiquetas el nom bre SC empezando por Label9 
en form a ordenada hasta label 12, pero al fin al cambie el valor de la propiedad 
IN D E X de cada etiqueta de tal manera que Label9 se llam e SC, pero que su 
propiedad IN D E X tenga el va lo r 1, L ab ellO tenga en su propiedad IN D E X 
el valor 2, Label 11 tenga en su propiedad IN D E X el va lo r 3, Label 12 tenga 
en su propiedad IN D E X el valor 4. 
Para cambiar el va lo r de la propiedad IN D E X de cada control debe empezar 
por el ultimo (en el ejem plo em piece por Label 12). Esto nos perm ite 
program ar de una form a más cóm oda por que el array de controles empieza 
con el Indice uno (1) y no con el cero (0). 
PASO N° 4: Convertir las Etiquetas desde Labell3 hasta Labelló 
en un nuevo array de controles. 
Asigne a cada una de estas etiquetas el nom bre SF empezando p or Label 13 
en form a ordenada hasta label 16, pero al fin al cambie el valor de la propiedad 
IN D E X de cada etiqueta de tal manera que Label 13 se llam e SF, pero que 
su propiedad IN D E X tenga el valor 1, Label 14 tenga en su propiedad IN D E X 
el valor 2, Label 15 tenga en su propiedad ÍN D E X el valor 3 y Label 16 tenga 
en su propiedad IN D E X el valor 4. 
MUY IMPORTANTE 
N o se olvide empezar por el ú ltim o co ntrol (en el ejem plo empiece por 
L a b e lló ) para cam biar el valor de la propiedad IN D E X . 
PASO N° 5: Asignar a los otros controles sus propiedades. 
La propiedad p rin c ip a l a m o d ific a r es C A P T IO N para los botones de 
comandos como para las etiquetas, algunas etiquetas tienen además en la 
propiedad B O R D E R S T Y L E el va lo r 1 -Single Fixed. 
170 ^ G r u p o E d i t o r i a l Megabyte < ^ ¡||¡|| 
¡ 
> CAPÍTULO III: Elementos de la Programación 
PASO N° 6: Escribir las instrucciones para los controles. 
En la ventana de declaración del fo rm u la rio defina las siguientes variables: 
Dim COL, F1L, X, ST As Integer 
Dim A(1 To 4, 1 To 4), SUMA(1 To 4) As Integer 
Crear el siguiente procedim iento en el fo rm u la rio . 
E ste p ro ced im ien to p erm ite p a sa r los valores alm a cen a d o s en las cajas 
d e texto a l a rra y d efin id o en la variable A. 
N O T A : 
E l ín d ice d el a rra y d o n d e se p a sa n los va lo res d e las ca ja s d e texto 
em p ieza n con el va lo r 1. 
Sub PASAR() 
X = 0 
For COL = lT o 4 
For FIL = lT o 4 
A(COL, FIL) = Val(N(X)) 
X = X + 1 
Next FIL 
Next COL 
End Sub 
Instrucciones para el evento FORM_ACTIVATE. 
Prívate Sub Form_Activate() 
‘Al activarse el formulario llama al procedimiento 
‘COMMAND1JCLICK (Limpia los valores) y al 
'procedimiento COMMAND2_CLICK (Limpia los resultados) 
Commandl jC lick 
Command2_Cl ick 
End Sub 
Botón LIMPIAR EL ARRAY 
Private Sub Commandl_Click() 
'Limpia los valores del array 
ForX - OTo 15 
N(X) = "" 
Next X 
N(0).SetFocus 
End Sub 
Botón L IM P IA LOS RESULTADOS 
Prívate Sub Command2_Click() 
'Limpia los resultados 
ForX - 1 To 4 
SF(X) = "" 
SC(X) = "" 
Next X 
End Sub 
171
VISUAL BASIC como debe ser.. 
In s tru c c io n e s d e l B o tó n S U M A L A S C O L U M N A S 
Private Sub C om m and3_C lick() 
‘Llama al procedim iento "PASAR" 
PASAR 
‘SUMA L AS CO LU M NAS D EL ARRAY 
F or COL = 1 To 4 
SU M A(CO L) = 0 
For FIL = 1 To 4 
SU M A(CO L) = SU M A(CO L) + A(FIL, COL) 
N ext FIL 
N ext COL 
F o r X = 1 To 4 
SC(X) = SU M A(X) 
N e x tX 
E nd Sub 
In s tru c c io n e s del B o tó n S U M A L A S F IL A S 
Prívate Sub C om m and4_C lick() 
‘Llama al procedim iento "PASAR" 
PASAR 
‘SUMA L AS FILAS D E L A R R AY 
F or FIL = I To 4 
SU M A(FIL) = 0 
For COL = 1 To 4 
SU M A(FIL) = SU M A(FIL) + A(FIL, COL) 
N ext COL 
N ext FIL 
F or X = 1 To 4 
SF(X) = SU M A(X) 
N e x tX 
End Sub 
Instrucciones: Botón COLUMNA 1 Instrucciones: Botón COLUMNA 2 
Prívate Sub Command5_Click() Prívate Sub Command6_Click() 
‘Suma sólo la columna 1 ‘Suma sólo la columna 2 
ST = 0 PASAR 
PASAR ST = 0 
Command2_Click Command2_Click 
ForX = 1 To 4 F orX = 1 To 4 
ST = ST + A(X, 1) ST = ST + A(X, 2) 
NextX NextX 
S C (1 ) = ST SC(2) = ST 
End Sub End Sub 
G r u p o E d i t o r i a l M egabyte^ 
/ 
CAPITULO III: Elementos de la 
Instrucciones: Botón COLUMNA 3 
Prívate Sub Command7_Click() 
‘Suma sólo la columna 3 
S T - 0 
PASAR 
Command2_Click 
For X = lT o 4 
S T = S T + A(X, 3) 
NextX 
SC(3) = ST 
End Sub 
Instrucciones del Botón FILA 1 
Prívate Sub Command9_Click() 
‘Suma sólo la fila 1 
ST = 0 
PASAR 
Command2_Click 
F orX = I To 4 
S T = S T + A(l, X) 
NextX 
SF( 1) = ST 
End Sub 
Instrucciones del Botón FILA 3 
Prívate Sub Commandl 1 _Click() 
‘Suma sólo la fila 3 
ST = 0 
PASAR 
Commcind2 _Click 
For X = IT o 4 
ST = ST + A(3, X) 
NextX 
SF(3) = ST 
End Sub 
Instruc.:Botón DIAGONAL 1() 
Prívate Sub Commandl 3_Click() 
‘Suma la diagonal 1 (  ) 
PASAR 
ST = 0 
ForX = 1 To 4 
ST = ST + A(X, X) 
NextX 
Labe! 18 = ST 
Eiul Sub 
Instrucciones:Botón COLUMNA 4 
Prívate Sub Command8_Click() 
‘Suma sólo la columna 4 
S T = 0 
PASAR 
Command2_Click 
ForX = lT o 4 
ST = ST + A(X, 4) 
NextX 
SC(4) = ST 
End Sub 
Instrucciones del Botón FILA 2 
Prívate Sub Commandl 0_Click() 
‘Suma sólo la fila 2 
ST = 0 
PASAR 
Command2_Click 
For X = 1 To 4 
ST = ST + A(2, X) 
NextX 
SF(2) = ST 
End Sub 
Instrucciones del Botón FILA 4 
Prívate Sub Commandl 2_Clíck() 
‘Suma sólo la fila 4 
ST = 0 
PASAR 
Command2_Clíck 
For X = 1 To 4 
ST = ST + A(4, X) 
NextX 
SF(4) = ST 
End Sub 
Instruc.: Botón DIAGONAL 2 (/) 
Prívate Sub Commandl4_Click() 
‘Suma la diagonal 2 ( / ) 
PASAR 
ST = 0 
For X = 1 To 4 
ST = ST + A(X, 5 - X) 
NextX 
Lab el 19 = ST 
End Sub 
173
VISUAL BASIC como debe ser... 
APLICACIÓN DESARROLLADA N° 21 
La siguiente aplicación perm ite realizar operaciones con arrays com o sumar 
dos arrays, restar, m ultip lica r, etc. 
m. O P E R A C IO N E S C O N A R R A Y S 
ARRAY "A " ARRAY "B " 
[a p¡ Í5 [5 [9 pr 
I3 |7 |-4 |7 1 10 
Io |-5 |-1 I9 3 1 
T r a n s p u e s t a | Transpuesta | 
RESULTADO 
I 13 I 8 1 4 Borrar | 
I 10 1 8 1 6 Llenar j 
1 9 1 -2 i ° Salir j 
OPERACIONES : 
i ¿ urna i| R esta J M ultiplica [ divide | 2A * 3B 
PASO N° 1: Dibujar los controles 
D ib u je los controles com o de m uestran en el ejemplo. Para el 1er. Array, 
dibuje la lera., caja de texto y asígnele el nombre (Ñame) A, luego cópiela 
hasta tener 9 (desde A (0 ) hasta A ( 8)). A l 2do. Array, asígnele el nom bre B 
y al 3er.array (etiquetas) asígnele el nom bre R. 
Labell 
jTextl T extl Textl 
|T extl T extl Textl 
JT extl Textl Textl 
Commandl 
• ■ • Label2 
|T e x t l J T extl |Text1 
jTextl |Text1~ |T extl 
J Textl jT extl jTextl 
- • Command2 I • 
Label3 
Label4 Label4 Label4 
Label4 Label4 Label4 
Label4 Label4 Label4 
Command8 
Commarid9 j 
Commandl 0 
Framel 
Commands Command4 Commands Commands Command7 
174 G r u p o E d it o r ia l M egab yte^ 
CAPÍTULO III: Elementos de la Programación 
PASO N° 2: Asignar las propiedades a los controles. 
A las etiquetas N° 1, 2 y 3, al Frame y a los C om m ands, asígneles en su 
C aption los mensajes com o en el ejem plo. 
PASO N° 3: Escribir las instrucciones para los controles. 
D efinir las variables a nivel de Formulario 
Dim X, F, C A s Byte 
Dim AA( 1 To 3, 1 To 3) A s Inte ge r 
Dim AB( ¡T o 3, 1 To 3) As Integer 
Dim AR( I To 3, ¡ To 3) As Single 
Instrucciones del Form_Activate. 
Prívate Sub Form_Activate() 
Rem Limpian el contenido de los arrays 
For X = OTo 8 
A(X) = »" 
B(X) = "" 
R(X) = "" 
N extX 
A(0).SetFocus 
End Sub 
Instrucciones del Botón LLEN AR. 
Prívate Sub Command9_Click() • 
Rem Llenan los dos Arrays con valores entre -5 y ¡0. 
Randomize 
F o rX = OTo 8 
A(X) = Int((10 - (-5) + l ) * R n d + (-5)) 
B(X) = Int((10 - (-5) + ¡) * Rnd + (-5)) 
N extX 
End Sub 
Instrucciones del Botón BO RRAR. 
Prívate Sub Command8_Click() 
Form_Activate 
End Sub 
Transpuesta para el Array A. 
Private Sub Command¡_Click() 
Rem Traspuesta del array A 
PASAR 
For F - ¡T o 3 
For C = 1 To 3 
AR(C, F) = AA(F, C) 
Next C 
Next F 
MOSTRAR 
End Sub 
Transpuesta para el Array B. 
Prívate Sub Commandl_Click() 
Rem Traspuesta del array B 
PASAR 
For F = 1 To 3 
For C - ¡ To 3 
AR(C, F) = AB(F, C) 
Next C 
Next F 
MOSTRAR 
End Sub
Ufo VISUAL BASIC como debe ser... 
Instrucciones del Botón SUMAR. 
Prívate Sub Command3_Click() 
Rem Suma los valores. 
PASAR 
For F ■= 1 To3 
For C = 1 To 3 
AR(F,C)=AA(F,C)+AB(F,C) 
Next C 
Next F 
MOSTRAR 
End Sub 
Instrucciones del Botón RESTAR. 
Prívate Sub CommandA_Click() 
Rem Resta los valores. 
PASAR 
For F - 1 To 3 
For C = 1 To 3 
AR(F,C)=AA(F,C)-AB(F,C) 
Next C 
Next F 
MOSTRAR 
End Sub 
Instrucciones del Botón MULTIPLICAR. 
Prívate Sub Command5_Click() 
Rem Multiplicación los valores de los Arrays 
Dim Y As Byte 
PASAR 
For F - 1 To 3 
For C - 1 To 3 
AR(F, C) = 0 
For Y = 1 To 3 
AR(F, C) = AR(F, C) + (AA(F Y) * AB( Y, C)) 
Next Y 
Next C 
Next F 
MOSTRAR 
End Sub 
Instrucciones del Botón 2A + 3B (Multiplicación Escalar). 
Prívate Sub Command7_Click() 
Rem Multiplicación Escalar 2A.3B 
PASAR 
For F = 1 To 3 
F orC = 1 To 3 
AR(F, C) = AA(F, C )* 2 + AB(F, C) * 3 
Next C 
Next F 
MOSTRAR 
End Sub 
176 G r u p o E d i t o r i a l Megabyte 
CAPITULO III: Elementos de la Programación 
Instrucciones del Botón DIVIDIR. 
Prívate Sub Command6_Click() 
Rem Divide los valores de los Arrays 
PASAR 
For F = 1 To 3 
For C = 1 To 3 
I f AB(F, C) o O Then 
AR(F, C) = AA(F, C)/AB(F, C) 
End If 
Next C 
Next F 
Rem Muestra los resultados con 2 decimales 
Dim N As Byte 
For F = 1 To 3 
For C = 1 To 3 
R(N) = Format(AR(F, C), "##0.00") 
N = N + 1 
Next C ■ 
Next F 
End Sub 
Instrucciones del PROCEDIMIENTO PASAR. 
Sub PASAR() 
'Pasan los elementos desde los Text al Array Bidimesional. 
Dim N As Byte 
For F = 1 To 3 
ForC = 1 To 3 
AA(F, C) = A(N) 
AB(F, O = B(N) 
N = N + 1 
Next C 
Next F 
End Sub 
Instrucciones del Botón MOSTRAR. 
'Muestran los resultados en el array R (etiquetas). 
Sub MOSTRARO 
Dim N As Byte 
For F = 1 To 3 
For C = 1 To 3 
R(N) = AR(F, C) 
N = N + I 
Next C 
Next F 
End Sub 
177 «
A S if r VISUAL BASIC como debe ser... 
ERRORES MAS COMUNES 
S i a l ejecu ta r o d esa rro lla r una a p lica ció n se m u estra un m en sa je de 
error, trate d e so lu cio n a rlo Ud., m ism o, d e esa m anera es p o c o pro b a b le 
c¡ue lo vuelva a com eter. 
Microsoft Visual Basic 
Compile error: 
Variable not defined 
Aceptar Ayuda 
Variable no definida. Está usando una 
variable sin definirla. Defina la variable o 
borre OPTION E X P LIC IT del objeto 
GENERAL. 
Microsoft Visual Basic 
Compile error: 
* Expected: list separator o r) 
[ Aceptar ] Ayuda 
Se esperaba separador de lista o 
paréntesis. 
Verifique que ha cerrado paréntesis. 
Microsoft Visual Basic 
Compile error: 
Expected: Then or GoTo 
Aceptar j l Avuda 
Run-time error '13': 
Type mismatch 
End Debug 
178 
Se esperaba THEN. 
Probablemente se o lvid o de escribir 
T H E N después de la condición en la 
instrucción IF. 
— I 
Help 
Error de Tipo 
Los Datos o variables 
son de diferente tipo. 
G r u p o E d i t o r i a l Megabyte 
CAPÍTULO III: Elementos de la Programación 
P R E G U N T A S D E R E P A S O N g 0 3 
1. Por defecto una variable es de tipo: 
2. Escriba la sintaxis de la función M sgbox. 
3. Por qué es im portante Setfocus. 
4. ¿Qué debe hacer para que no se produzca un error cuando se quiere 
u tiliz a r una variable no declarada o definida? 
5. E xplique los atributos de una variable. 
6. Explique las características de una variable, Local, a N iv e l de Form ulario 
y Global. 
7. ¿Cómo se activa la ventana para declarar variables a N ivel de M ódulo? 
8. ¿Cómo se declara la variable A de tip o Integer y de ám bito G lobal. 
9. Una variable num érica por defecto tiene el v a lo r .....y la de tipo cadena 
10. ¿Cómo se borra el contenido de una caja de textos? 
11. ¿ Q ué v e n ta n a se v is u a liz a co n la s ig u ie n te in s tru c c ió n ? 
R = M S G B O X (“ A C C E S O D E N E G A D O ” ,2 l , ” L O S IE N T O ” ) 
12. De la pregunta anterior ¿Qué v a lo r tom a la variable R si el usuario 
hace c lic k en Cancelar? 
13. ¿ Q ué v e n ta n a se v is u a liz a c o n la s ig u ie n te in s tru c c ió n ? 
T = M S G B O X (“ F IN A L IZ A L A A P L IC A C IO N ” ,36,’’R E S P O N D A ” ) 
14. ¿Qué ventana se visua liza con la siguiente instrucción? M S G B O X 
“ Bienvenido al Sistema” . 
15. Escriba los Iconos y Botones con su respectivo va lo r que podemos 
visualizar en el M sgbox. 
16. ¿Qué valores puede devolver el M sgb ox y a qué botón pertenece? 
17. ¿Qué función cum ple: C H R (13)? 
18. ¿Qué es una palabra reservada y con qué palabra reservada se define 
una variable y qué fu nció n cumple? 
19. ¿Si en la ventana de declaración de variables se tiene la instrucción 
O P T IO N E X P L IC IT qué significa? 
20 ¿Cuantos tipos de procedim ientos existente? 
IM P O R T A N T E 
Con los conocim ientos adquiridos hasta ahora ya está en condiciones de 
desarrollar m uchas Aplicaciones. 
1 7 9
CAPITULO IV 
SISTEMA 
DE 
VENTAS 
Castañeda O 5 4:42 AM 
H O R A mm : |11:18:25 PM 
'v'rSrarl-ir—•• 
I 
MEJORANDO EL ASPECTO 
DE LOS FORMULARIOS
f 
I 
M A R C O ( F R A M E ) : 
IIB p 
Es un control que se u tiliz a para m ejorar el aspecto de un fo rm u la rio y para 
agrupar controles de tal manera que se puedan m anejar como un sólo co n tro l. 
Se puede d ib u ja r sobre controles que están en el fo rm u la rio , los 
cuales quedarán ocultos. Pulse las teclas < C T R L > + < K > para restaurar o 
visua liza r los controles ocultados. Esto no sucede con las etiquetas, por lo 
que se recomienda d ib uja r prim ero el F R A M E y luego las etiquetas (Label). 
PRIN C IPALES PRO PIEDAD ES D E UN FRAM E: 
Ñ A M E 
Perm ite asignarle un nom bre. Por defecto el nom bre es F ra m e l, Frame2, 
Frame3 etc. Según el núm ero de marcos que se dibujen en el form u la rio . 
B A C K C O L O R 
Selecciona un c o lo r de fondo para el marco. 
B O R D E R S T Y L E 
Selecciona el estilo del borde. 
C A P T IO N 
A signa un T ítu lo al marco. 
E N A B L E D 
Perm ite que el m arco se encuentre activo o no. 
F O N T 
Para cam biar el tipo, tamaño y estilo de letra. 
F O R E C O L O R 
A signa un co lo r de las letra. 
M O U S E P O IN T E R 
Para seleccionar el tipo de puntero de mouse. 
V IS IB L E 
Para indicar si se debe m ostrar el marco. 
N O T A : 
Para agrupar varios controles en un m arco, prim ero dibuje el m arco y encim a los 
controles. C ualquier p ro piedad que le cam bia al m arco será también para los 
controles que se encuentran dentro de él. 
w m ■ « m m
VISUAL BASIC como debe ser.. . - 
E je m p lo : 
U d. puede desarrollar la siguiente aplicación usando marcos. 
a .. M A T R I C U L A D E A L U M N O S 
- D A T O S P E R S O N A L E S 
Nombre 
Dirección 
T eléfono j" 
A SIG N A N D O COLORES 
Q B C O L O R : 
Es una fu nció n que perm ite asignar colores. 
Su sintaxis es QBCOLOR(Valor). E l va lo r es un num ero entre 0 y 15 que 
representa el va lo r a asignar: 
COLOR OSCURO CLARO 
Negro 0 8 
Azul 1 9 
Verde 2 10 
Aguamarina 3 11 
Ro j o 4 12 
Fucsia 5 13 
Amarillo 6 14 
Blanco 7 15 
La siguiente in stru cció n asigna el c o lo r azul claro al fo rm u la rio N° 1: 
Form l.B ackC olor = QBColor(9) 
R G B : 
Es una fu nció n que perm ite asignar un c o lo r que se obtiene de los colores 
R ojo, Verde y A zu l. 
Su sintaxis es: RG B (Valorl, Valor2, Valor3). Los tres valores pueden ser 
un núm ero entre 0 y 255 que representan la intensidad asignada a los colores 
Rojo, Verde y A z u l para obtener el c o lo r deseado. El V a lo rl representa la 
intensidad asignada al co lo r Rojo, el Valor2 representa la intensidad asignada 
al co lo r Verde y el valor3 la intensidad para el c o lo r A zu l. 
L a sig u ie n te in s tru c c ió n asigna un c o lo r rosado al fo rm u la rio N ° l: 
F orm l.B ackC olor = RGB(255, 0, 190) 
G r u p 184 o E d i t o r i a l Megabyte 
F IG U R A S (S H A P E ): 
0 
Es un control que se utiliza para mejorar el aspecto de un form ulario dibujando 
figuras de diferente form a. 
P R IN C IP A L E S P R O P IE D A D E S D E U N S H A P E : 
Ñ A M E 
Perm ite asignarle un nom bre. Por defecto el nom bre es S hapel, Shape2, 
Shape3 etc. Según el núm ero de figuras que se dibujen en el fo rm u la rio . 
B A C K S T Y L E 
Selecciona el estilo del fondo para la figura. 
B O R D E R C O L O R 
A signa un co lo r para el borde de la figura. 
B O R D E R S T Y L E 
A signa el estilo del borde. 
B O R D E R W ID T H 
Para cam biar el ancho del borde. 
F IL L C O L O R 
A sig na el co lo r que rellena la figura. 
F IL L S T Y L E 
Para ind icar el estilo del llenado de la figura. 
S H A P E 
Para seleccionar el tip o de la fig u ra que deseamos 
I Shape lo - RectanaleHfföSS*‘ 
0 - Rectangle 
1 - Square 
2 - Oval 
3 - Circle 
4 - Rounded Rectangle 
5 - Rounded Square
M ___________________ ____ o W t&Im VISUAL BASIC como debe ser.. . 
LINEA (LINE): 
Es un control que se utiliza para m ejorar el aspecto de un form ulario dibujando 
líneas. 
PRIN C IPALES PRO PIED AD ES D E L CONTROL LIN E: 
ÑAME 
Perm ite asignarle un nom bre. Por defecto el nom bre es L in e l, Line2, Line3 
etc. Según el núm ero de líneas que se dib uje n en el fo rm ulario. 
BORDERCOLOR 
A signa un co lo r para el borde de la línea. 
BORDERSTYLE 
A signa el estilo del borde. 
BORDERWIDTH 
Para cam biar el ancho del borde. 
DRAWMODE 
A signa el m odo de la línea. 
VISIBLE 
Para in d icar si se desea visua liza r la figura. 
Ejemplo : 
El siguiente fo rm u la rio presenta algunos ejem plos de figuras y líneas que se 
pueden d ib u ja r en una aplicación. 
O 
  Y   
¡¡Etiqueta d en tro de la Ftguid 
• ....... 
1 8 6 G r u p o E d i t o r i a l M egab yte^ 
P IC T U R E B O X (C A J A D E IM A G E N ): 
Es un control que se u tiliza para m ejorar el aspecto de un form ulario 
insertando dibujos o gráficos. Estos gráficos pueden ser M ap a de B its, Iconos 
o M e ta rc h ivo s. Los g rá fico s que se m uestran en este c o n tro l tom an 
automáticamente el mismo tamaño del control. 
Los archivos m apa de bits, son imágenes representadas por pixeles. 
Normalmente estos archivos tienen la extensión *.BMP. 
Los Iconos son gráficos que se utilizan normalmente para representar 
aplicaciones minimizadas en M icrosoft W indows. Estos archivos tienen la 
extensión *.IC O . 
Los M eta rchivos representan gráficos como líneas, círculos, etc., como 
pixeles. Estos archivos normalmente tienen la extensión *.W M F. El este control 
también puede mostrar archivos Metarchivos mejorados con la extensión *.JPG 
y *.GIF. 
Ud., p u ed e utilizar cualquiera de los gráficos que estén instalados en su 
com putadora o crear sus propios gráficos utilizando p o r ejem plo el Paintbrush. 
PRINCIPALES PROPIEDADES DE UN PICTURE BOX: 
ÑAME 
Perm ite asignarle un nombre. Por defecto el nom bre es P ic tu re l, Picture2, 
Picture3, etc. 
APPEARANCE 
Para seleccionar la apariencia del control. 
AUTOSIZE 
Para ind icar si el g ráfico debe visualizarse con su tamaño o rigin al o según el 
tamaño del PictureBox. 
BACKCOLOR 
Selecciona un co lo r para el fondo. 
BORDERSTYLE 
A signa el estilo del borde. 
DRAWSTYLE 
Asigna el estilo de línea de los círculos y cuadros creados con los métodos gráficos. 
DRAWW IDTH 
Asigna el ancho de línea de los círculos y cuadros creados con los métodos gráficos. 
E N A B L E D 
A c tiv a o desactiva el control.
Ufo VISUAL BASIC como debe ser. 
FILLCOLOR 
A sig n a el co lo r que se usado para llenar formas, también se usa para llenar 
círculo s y cuadros creados con los métodos gráficos C ircle y Line. 
FILLSTYLE 
A sig na el estilo de relleno para los controles Shape, así com o los círculos y 
los cuadros creados con los métodos gráficos C ircle y Line. 
FONTTRANSPARENT 
In dica si el texto y los gráficos de fondo de un objeto Form o Printer, o de un 
c o n tro l P ictureB ox, se muestran en el espacio situado entre los caracteres. 
FORECOLOR 
A sig n a el co lo r para los círculos y los cuadros creados con los métodos 
g rá fico s C ircle y Line. Para que se active el co lo r asignado, la propiedad 
D ra w m o de debe tener el va lo r 13 - C opy Pen 
PICTURE 
Selecciona el g ráfico o d ib u jo que se desea insertar en el fo rm u la rio . Ud. 
debe buscar el d ire cto rio donde se encuentran estos gráficos. 
SCALEMODE 
In dica m ediante un va lo r la unidad de medida de las coordenadas del control. 
l= T w ip , 2 = P u n to s, 3 = P ix e l, 4 = C a rá c te r, 5 = P u lg a d a , 6= M ilím e tr o , 
7=centím etro. 
SCALEWIDTH 
Indica el valor m áxim o del ancho de un control cuando se u tiliza instrucciones 
para gráficos. 
SCALEHEIGHT 
Indica el valor m áxim o de la altura de un control cuando se utiliza instrucciones 
para gráficos. 
VISIBLE 
Para in d ic a r si se desea visualizar el d ib u jo o gráfico. 
Ejemplo de una aplicación con el control PictureBox. 
n r m — n i mi 11« ■ miman m in in a ........... 
i- Información dei A lum no...... -................................... 
Alumno j 
I Curso ! 
Nota N* 01 | 
Nota N 9 02 I 
Promedio 
Observación 
Opc/ones Dispan/bfes : 
N uevo Calcular el Promedio Salir 
188 G r u p o E d i t o r i a l M egabyte^ 
METODOS GRÁFICOS ■ 
Son instrucciones que operan sobre un objeto com o un Form , PictureBox, 
P rinter y efectúa operaciones de d ib u jo en tiem po de ejecución com o una 
anim ación o sim ulación. Los métodos gráficos son: 
CIRCLE 
Perm ite d ibujar círculos, una elipses o arcos. Sintaxis: 
C ircle (x,y), radio, co lo r 
Si se om ite el co lo r se tom a el de la propiedad Forecolor. Los argumentos 
X ,Y es el punto central del círculo. Por ejem plo, la siguiente instrucción 
d ib uja un círculo en un control P ictu reB o x de c o lo r rojo. 
P ic tu re l.C irc le (1 0 00 ,4 00 ), 250, R G B (2 5 5 ,0 ,0 ) 
Las características del círculo dependen de los valores asignados a las pro­piedades: 
D raw style, F illco lo r, etc. 
Para crear elipses o arcos u tilic e la sintaxis: 
C ircle (x,y), radio, color, in icio , fin , aspecto 
In ic io y Fin, se u tiliza n para especificar en radianes las posiciones de in ic io 
y de fin del arco. El intervalo para ambos es de -2 p i radianes a 2 p i radianes. 
El v a lo r predeterm inado para in ic io es 0 radianes; el va lo r predeterm inado 
para fin es 2 * pi radianes. 
Aspecto, es un va lo r de precisión sim ple que ind ica la relación de aspecto 
del círculo. E l valor predeterminado es 1.0, lo que produce un círculo perfecto. 
LINE 
Perm ite d ibujar líneas o rectángulos. Sintaxis: 
Line (xl, yl) - (x2, y2), [color], [B][F] 
X I y Y l , es el punto in ic ia l de la línea o rectángulo. 
X 2 y Y 2 , es el punto fin a l de la línea o rectángulo. 
B Es opcional. Si se incluye, hace que se dibuje un cuadro usando las 
coordenadas para especificar las esquinas opuestas del cuadro. 
F Es opcional. Si se utiliza la opción B, la opción F especifica que el 
cuadro se llena con el m ism o color utilizado para dibujar el cuadro. No puede 
utilizar F sin B. Si se utiliza B sin F, el cuadro se llena con los valores actuales de 
F illC o lo r y FillStyle. El valor predeterminado para F illS tyle es transparente.
é B B fa - VISUAL BASIC como debe ser... 
La siguiente instrucción dibuja una línea en el control P ictureB ox. 
P ic tu r e l.L in e (100, I0 0 )-(8 0 0 , 1000) 
L a siguiente instrucción d ibuja un rectángulo en el co ntrol PictureB ox. 
P ic tu r e l.L in e (100, 100)-(800, 1000), , B 
E l co lo r de los gráficos que se dibujan en el ejem plo, depende de la p ro pie ­dad 
Forecolor porque no se a especificado el color. 
C L S 
B o rra el texto o los gráficos d ibujado en el fo rm u la rio o en el co ntrol 
P ictureBox. 
Por ejem plo la siguiente instrucción borra lo dibujado en el p rim e r control 
P ictureBox. 
P ic tu r e l. cls 
P R IN T 
M uestra un texto en un fo rm u la rio o en el co ntrol PictureBox. 
Por ejem plo la siguiente instrucción muestra el texto “ D IB U J A N D O ” en el 
p rim er control PictureBox. 
P ic tu r e l.P r in t " D IB U J A N D O ” 
APLICACIÓN DESARROLLADA N° 22 
En la siguiente aplicación se muestra dentro de tres controles Picturebox 
círculos, líneas y rectángulos con un tamaño, co lo r y posición al azar. 
Finalizar 
G r u p o E d i t o r i a l Megabyte ~4l p l i | 
Métodos Gráficos 
P A S O N ° 1: D ib u ja r los co n tro le s: 
D ib u je 3 P ictureB ox, un botón de comandos y un Tim er. 
¡i. Formi 
Command! 
P A S O N ° 2: E scrib ir las instrucciones para los controles. 
Debe crear 3 procedim ientos para que cada uno de ellos dib uje círculos, 
líneas y rectángulos. 
Rem Definición de las variables 
Public maxcolumna, maxfila, color As Integer 
Public coll, col2, fill, fil2 As Integer 
Sub lineas() 
maxcolumna = Picture2.ScaleWidth 
maxfila = Picture2.ScaleHeight 
coll = Int((maxcolumna - 1 + 1 ) * Rnd + 1) 
fill = Int((maxfila - 1 + 1 ) * Rnd + 1) 
col2 = Int((maxcolumna - 1 + 1 ) * Rnd + 1) 
fil2 = Int((maxfila - 1 + 1 ) * Rnd + 1) 
color = I nt((14 - 1 + 1) * Rnd + 1) 
Picture2.ForeColor = QBColor(color) 
Picture2.Line (coll, fill)-(col2, fil2) 
End Sub 
P r i v a t e S u b T i m e r l _ T i m e r () 
c í r c u l o s 
l i n e a s 
r e c t á n g u l o s 
E n d S u b 
P r i v a t e S u b F o r m _ L o a d ( ) 
R a n d o m i z e 
T i m e r l . I n t e r v a l = 1 0 0 
E n d S u b 
191
éS iñ k > VISUAL BASIC como debe ser... 
Sub círculos() 
Dim columna, fila, margder, margsup, margderm As Integer 
Dim margsupm, maxradioder, maxradiosup, radio As Integer 
maxcolumna = Picturel.ScaleWidth 
maxfila = Picturel.ScaleHeight 
columna = Int((maxcolumna - 1 + 1 ) * Rnd + 1) 
fila = Int((maxfila - 1 + 1 ) * Rnd + 1) 
margder = Picturel.ScaleWidth 'máximo ancho 
margsup = Picturel.ScaleHeight ' máxima altura 
Reí7i Obtiene el punto central del. control picture 
margderm = Picturel.ScaleWidth / 2 
margsupm = Picturel.ScaleHeight / 2 
color = Int((14 - 1 + 1 ) * Rnd + 1) 'Color al azar 
If columna>margderm Then 
maxradioder=margder-columna El se 
maxradioder = columna End If 
If fila > margsupm Then 
maxradiosup = margsup - fila El se 
maxradiosup = fila End If 
If maxradioder > maxradiosup Then radio = maxradiosup El se 
radio = maxradioder End If 
Picturel.ForeColor = QBColor(color) 
Picturel.Circle (columna, fila), radio If (Int(Timer) Mod 10) = O Then 
Picturel.Cls Picture2.Cls Picture3.Cls 
Randomize 
End If 
End Sub 
Sub rectángulos() 
maxcolumna - Picture3.ScaleWidth maxfila = Picture3.ScaleHeight coll = Int((maxcolumna - 1 + 1 ) * Rnd + 1) 
fill = Int((maxfila - 1 + 1 ) * Rnd + 1) 
col2 = Int((maxcolumna - 1 + 1 ) * Rnd + 1) 
fil2 = Int((maxfila - 1 + 1 ) * Rnd + 1) color = I nt((14 - 1 + 1) * Rnd + 1) 
Picture3.ForeColor = QBColor(color) 
Picture3.Line (coll, fill)- (col2, fil2), , B End Sub 
192 G r u p o E d i t o r i a l Megabyte < 
BUSCANDO GRAFICOS EN LA COMPUTADORA 
N orm alm ente los gráficos que Ud. puede insertar se encuentran en la carpeta 
G raphics que se encuentra dentro de Vb. Tam bién puede insertar gráficos 
del M ic ro s o ft O ffic e que norm alm ente se encuentran en la siguiente ruta: 
C :A rch ivo d e P m g rg m a sM ic ro so ft O ffic e C lip a rtP o p u la r 
Si desea buscar en el disco de su com putadora todos los gráficos que puede 
insertar, siga los siguientes pasos: 
Haga un C lic k en el Botón In ic io de la barra de 
tareas del W indow s y e lija la opción Buscar y 
luego A rch ivo s o Carpetas. 
Archivos o carpetas... 
PC... ^ Mediante Miciosoft Outlook... 
á l ~É1 Programas ► 
----- 3 Documentos ► 
m Configuración ► 
 Buscar ► | 
1 ^ 
Ayuda 
Ejecutar... 
í y j Suspender 
^ j j Apagar el sistema... 
|i;ÍH jn iciq i 
2. Visualizará la siguiente ventana: 
m Buscai: todos los archivos 
A rch ivo E dición V e r O pciones A yu d a 
Nom bre y ubica ción | F e ch a de m odificación ] A va n zad a s j 
Nombre: 
Buscar en: |M i PC -w j Examinar., 
in clu ir subcarpetas 
Buscar ahora | 
N u e va búsqueda 
A 
En la caja de textos N O M B R E : escriba un asterisco (* ) y luego un punto 
seguido de la extensión del tipo de a rchivo g ráfico que desea buscar.
H- VISUAL BASIC como debe ser.. 
Por ejem plo: Para buscar todos los archivos gráficos que tengan la extensión 
BM P, se debe escribir: *.B M P 
Si desea buscar varios tipos de archivos gráficos a la vez, indíquelos separados 
por un espacio en blanco. 
Por ejem plo: para buscar todos los gráficos con la extensión BM P, IC O y 
W M F , debe escribir: *.B M P *.IC O * .W M F 
En la caja de textos B U S C A R EN: seleccione M I PC para que los archivos 
gráficos se busquen en todos los discos de su computadora. Así: 
A rc h iv o E dición V e r O p cio n e s A y ü d a 
N om bre y u b ic a c ió n j F e c h a de m o d ific a c ió n | A v a n z a d a s j 
--------------- 3 
Nom bre: |*.B M P " ICO X.W M P 
B uscar en: |M i PC Exam inar.. 
W in c lu ir subcarpetasj 
B uscar a hora I 
N u e v a b ú sq ue d a 
A 
3. Haga c lic k en el botón B U S C A R A H O R A para que empiece la bús­queda 
de todos los archivos que tienen las extensiones indicadas (ar­chivos 
gráficos). Por cada a rchivo que se encuentra se visualiza la ruta 
exacta donde está ubicado para que al u tiliz a r la propiedad P IC T U R E 
U d., pueda buscar la carpeta y ubicarlos rápidamente. 
H Buscar: archivos co n nombre “ .BMP “ .ICO " W M P 
¿Archivo Edición Ver Qpciones Ay¿jd» 
Nombre y ubicación j Fecha de modificación ] Avanzadas j 
|q»x i 
Nombre |- BMP “ ICG “ WMP 
Buscar jMiPC 
fv? incluir subcarpetas 
~Ei 
I Buscar ahora 
I 
¿•Jueva búsqueda I 
I En carpeta | Tama... | Tipo Modificado ■*- I 
Notel 6. ico 
Notel 7.ico 
Notel 8.ico 
PenOI .ico 
Pen02.ico 
^*Pen03.ico 
« í 
C:Archivos de prograrrtaSDevStudioWBSGraphi... 
C:Archivos de programaSDevStudioWBSGraphi... 
C:Archivos de prograrnaDevStud¡oVBGraphi... 
C:Archivos de programaDevStudioVBGraphi... 
C:Archivos de programaDevStudioW/B.Graphi .. 
C:VArchivos de programaDevStudioVBGraphi 
2KB Icono 
2KB Icono 
2KB Icono 
2KB Icono 
2KB Icono 
2KB Icono 
20/02/97 12:00 AM 
20/02/97 12:00 AM 
20/02/97 12:00 AM -----1 
20/02/97 12:00 AM 
20/02/97 12:00 AM 
20/02/97 12:00 AM — | 
1 61 6 archivo(s) encontrado(s) 
NOTA: 
• Para visualizar la ruta com pleta de cada archivo am plíe la colum na En Carpeta. 
• A rchivos que se muestren depende de los que tenga instalados en su com putadora. 
1, n94, G r u p o E d i t o r i a l Megabyte^ 
IM A G E ( IM A G E N ) : 
Este control perm ite m ostrar gráficos en un fo rm u la rio , sim ila r al control 
P ictureBox. Se diferencian porque el co ntrol Im agen no tiene ninguno de 
los métodos gráficos ni todas las propiedades y otros métodos que el control 
P ictureBox tiene. 
E l tamaño del g rá fico que se alm acena en este control no depende del 
tamaño del control, si no que u tiliz a su propio tamaño. La propiedad Stretch 
determ ina si el tamaño del g ráfico depende del tamaño del control. 
T IM E R ( R E L O J ): 
Es un control que se u tiliz a para poder ejecutar instrucciones cada cierta 
cantidad de segundos. Puede ayudar a m ejorar el aspecto de un form u la rio . 
PRINC IPALES PRO PIED AD ES D E UN TIM ER: 
Ñ A M E 
Perm ite asignarle un nombre. Por defecto el nom bre es T im e rl, Tim er2, 
Tim er3 etc. Según el núm ero de controles que se dibujen en el form u la rio . 
E N A B L E D 
Permite que el co n tro l se encuentre activo o no. 
IN T E R V A L 
Indica el tiem po en que se deben ejecutar las instrucciones. El va lo r 1000 
indica cada segundo. 
Las instrucciones que queremos que se ejecuten cada cierto tiem po se deben 
escribir en el E v e n to T im e r de este control.
VISUAL BASIC como debe ser.. < 
APLICACIÓN DESARROLLADA N° 23 
En la siguiente aplicación se u tiliza n funciones tratadas anteriorm ente y 
ejem plos de cóm o m ejorar el aspecto del fo rm u la rio : 
FECHA : J21 -07-1S 
- V e n ia d e P ro d u c to s : 
Nombre del Producto JJ-Precio 
Unitario 
Cantidad T 
I.G.V. J” 
Total I-L 
o q u e p u e d e h a c e r : — 
^ I J j u e v o ] f í e s u l t a d o s 
PASO N° 1: DIBUJAR LOS CONTROLES: 
Labell Label2 
■ Framel---------------- 
Label5 (Textl 
Label6 |jext2 
Label7 |t ext3 
Label3 Label4 
Label8 Labell 1 
Label9 Labell 2 
Labell 0 Labell 3 
© 
-Frame2------------ 
Command! Command2 Command3 
PASO N° 02: ASIGNAR LAS PROPIEDADES. 
Asígnele las propiedades a cada uno de los controles que se muestran en el 
form ulario, de tal manera que tenga un aspecto sim ilar a la aplicación planteada. 
NOTA: 
Los botones de comandos deben tener en su propiedad S Y T LE el valor 1 Gráfico y 
en su propiedad PICTURE asígnele los gráficos indicados. 
Los nombres de los gráficos en el orden que se muestran en la aplicación a desarrollar 
son: PAINT.BMP, PREVIEW.BMP, POINT4.1CO, que normalmente se encuentran 
en la siguiente carpeta: Archivos de ProgramaDevStudioVbGraphics 
^ |||jj|Íf^ 196 G r u p o E d i t o r i a l Megabyte 
T 
> CAPITULO IV: Mejorando el Aspecto de los Formularios ^ 
El g rá fic o del control PICTUREBOX se llam a DINERO.WMF, que 
norm alm ente se encuentra en la carpeta: A rch ivo s de P rogram aSM icrosoft 
O ffic e C lip a r tP o p u la r 
Búsquelos, y si no los encuentra practique insertando otros gráficos. 
A las etiquetas donde se muestran la fecha y hora no les asigne ninguna 
propiedad, porque se visualizan cuando se ejecuta el programa. 
E l control Timer lo puede d ib u ja r en cualquier parte del fo rm u la rio porque 
cuando ejecuta la aplicación no se visua liza y tiene un solo tamaño. 
PASO N° 03: E scrib ir las instrucciones de cada control. 
Instrucciones del B. Calcular 
Prívate Sub Command2_Click() 
Instrucciones Form Activate 
Prívate Sub Form_Acüvate() 
Textl = "" 
Text2 = "" 
Text3 = "" 
L a b elll = "" 
Labell2 = "" 
Labell3 = "" 
Textl.SetFocus 
End Sub 
Instrucciones del botón Nuevo. 
Dim ST, IGV, TPAs Single 
ST = Val(Text2) * Val(Text3) 
IGV= S T * 18/100 
TP = ST+ IG V 
Labell 1 =Format(ST, "###,##0.00") 
Labell2=Format(IGV, "###,##0.00") 
Labell3=Format(TP, "###,##0.00") 
End Sub 
Private Sub Commandl_Click() 
Form_Activa te 
End Sub 
Instrucciones del botón Salir 
Prívate Sub Command3_Click() 
Dim R As Integer 
R = MsgBox("Está seguro de salir", 36, "Cuidado") 
If R = 6 Then End 
End Sub 
Instrucciones del Evento L O A D : Visualizan la fecha del sistema en la etiqueta 2, y la 
palabra VENTAS en el Caption del formulario y activan las instrucciones del control TIMER. 
P r í v a t e S u b F o r m _ L o a d ( ) 
L a b e l 2 = F o r m a t ( D a t e , " d d - m m - y y y y " ) 
F o r m l . C a p t i o n = "VENTAS" + S p a c e (5 0 ) 
T i m e r 1 . I n t e r v a l = 1 0 0 
E n d S u b 
Instrucciones del control T IM E R : Visualizan la hora en la etiqueta 4 y mueven la palabra 
VENTAS en el título del formulario. 
P r i v a t e S u b T i m e r l _ T i m e r () 
L a b e l 4 = F o r m a t ( T i m e , " h h :mm: s s AMPM") 
Forml.Caption = Mid(Forml.Caption, 2) + LeftfForml.Caption, 1) 
E n d S u b 
1 9 7 i n *
áülÉÉ^ VISUAL BASIC como debe ser... 
APLICACIÓN DESARROLLADA N° 24 
En esta aplicación se u tiliz a la instrucción P R IN T que perm ite escribir 
mensajes directam ente en el fo rm u la rio y T A B para dejar espacios antes 
de im prim ir. 
Esta aplicación es una pantalla de presentación con un texto de fondo, una 
etiqueta cuyo contenido va m odificando su tamaño y un gráfico que se mueve 
de derecha a izquierda. 
« PANTALLA DE PRESENTACION 
Visual Basic como debe ser... 
Visual Basic como debe ser... 
Visual Basic como debe ser... 
Visual Basic como debe ser... 
Visual Basic como debe ser.. 
Visual Basic como debe ser. 
V IS U A L 
IA % I4 
H SI3E3 
Juan José Castañeda León 
Juan José Castañeda León 
Juan José Castañeda León 
Juan José Castañeda León 
Juan José Castañeda León 
Visual Basic como debe ser... 
Visual Basic como debe ser... 
Visual Basic como debe ser... 
Visual Basic como debe ser.. 
Visual Basic como debe ser. OK 
Visual Basic como debe ser... 
Juan José Castañeda León 
Juan José Castañeda León 
Juan José Castañeda León 
Juan José Castañeda León 
Juan José Castañeda León 
j Juan José Castañeda León 
Juan José Castañeda León 
Juan José Castañeda León 
Juan José Castañeda León 
Visual Basic como debe ser... 
Visual Basic como debe ser... 
Visual Basic como debe ser... Juan José Castañeda León 
Visual Basic como debe ser... Juan José Castañeda León 
P A S O N ° 0 1 : Debe d ib u ja r en el fo rm u la rio una e tiq u e ta (L a b e l), un 
gráfico(picturebox), un reloj (tim e r) y un botón de comandos (com m and). A 
la etiqueta, al botón de com ando y al fo rm u la rio , m odifíqueles su propiedad 
C aption com o se muestra en la fig u ra anterior: 
«i. Form! 
Labell 
a m G rupo E ditorial M t « 
PASO N 2 02: Escribir las instrucciones. 
D e fin ir las variables a u tiliz a r en la sección de declaración del fo rm u la rio . 
1 01 Project! - Formi (Code) r ° M 
|(General) jrJ 1 (Declarations) 
Dirn T, N As Irxteger 
▼ : 
■-ill jlP 
E s c rib ir las instrucciones en el evento A C T IV A T E del fo rm u la rio para que 
se ejecutan cuando el fo rm u la rio se activa. Estas instrucciones muestran un 
texto de fondo en el fo rm u la rio . 
Prívate Sub Form_Activate() 
Dím X As Integer 
'Ancho del Formulario Forml.Wídth - 6400 
'Altura del Formulario Forml.Height = 3330 
Labell.AutoSíze = True For X = 1 To 35 
Print T a b ( X) "V is u al Basic como debe ser. . . Print Tab(60 - X); "Juan José Castañeda León" Next X 
'Posición inicial del Gráfico T = 6000 
'Puesta en marcha del Reloj Timerl.Interval = 1 0 End Sub 
Instrucciones del Evento T IM E R 
Prívate Sub Timerl_Timer () 
N = N + 1 
If N > 30 Then N = 1 
End If T = T - 50 
If T < -600 Then 
T = 6000 End If 
Picturel.Left = T 
Labell.FontSize = N 
End Sub 
El botón O K debe tener la instrucción E N D .
|¡ ! ¡ l i > VISUAL BASIC como debe ser... 
IMAGELIST (LISTA DE IMAGENES): 
S 1 
Este co ntrol perm ite almacenar imágenes o gráficos con la extensión IC O 
(*.IC O ) y con la extensión B M P (*.B M P ) en la m em oria de la com putadora 
para poder m anipularlos en nuestro program a. 
Si no se encuentra en la caja de herram ientas debe seguir cualquiera de los 
siguientes pasos: 
1. En la caja de herramientas haga c lic k con el botón derecho y e lija la 
opción C O M P O N E N T E S . 
2. De la opción P roject e lija C O M P O N E N T E S . 
3. Pulse las teclas < C R T L > + <T >. 
De la lista de componentes haga c lic k en la casilla del co ntrol llam ada: 
Microsoft Windows Common Controls 5.0. 
Tam bién se puede llam ar este co ntrol, si elegim os la opción C O N T R O L E S 
D E VB E D IC IO N E M P R E SA R IA L , en el m om ento de ingresar a V isual 
Basic o crear un nuevo proyecto. 
PRINCIPALES PROPIEDADES DE UN IMAGELIST: 
Las propiedades principales del control se obtiene con sólo elegir la propiedad 
C ustum ize (personalizado). Se visua liza la siguiente ventana con tres hojas 
o fichas: General, Imágenes y color. 
P á g in a s d e p r o p ie d a d e s 
í j « n * r . * ! j ] Im á g e n e s J C o lo r 
H e ig h t: | 
W id th : f 
r - 1 6 X 1 6 
3 2 x 32 
r - 4 8 X 4 8 
C u s to m 
1 ^ J U s e M a s k C o lo r 
t m  
A c e p ta r | C a n c e la r | A y u d a 
La hoja General, perm ite asignar la altura y el ancho para los gráficos que 
se van a alm acenar en este c o n tro l. Estos valores se pueden cam biar 
solamente cuando el control no tenga ningún g rá fico almacenado. 
200 G r u p o E d i t o r i a l Megabyte 
El contenido de la Hoja Im ágenes es: 
w n 
G e n e r a l [ i m á g e n e s |) C o l o r 
Im agen actual 
Index: h &ey: 1 
lag: 1 
Imágenes: 
U 
Insertar imagen.. ! Quitar imagen I Núm ero de imágenes: 
A c e p ta r j C ancelar 
En esta hoja podemos adicionar o e lim inar más gráficos del control imagelist. 
E l botón Insertar Imagen perm ite buscar y seleccionar una im agen para 
adicionarla. 
El botón Quitar Imagen perm ite borrar una imagen. 
En la caja de textos Key, se puede asignar uno o más caracteres que van a 
id e n tific a r a cada im agen almacena en el control. 
En la caja de textos Tag se puede e scribir un texto el cual queda almacena­do 
para poder u tiliz a rlo en cualquier m om ento si lo deseamos. 
En la caja de textos Index se visualiza el núm ero de im agen activa y p e rm i­te 
activar a cualquier otra imagen. 
En la etiqueta N úm ero de Imágenes se visualiza la cantidad de imágenes 
que tiene el control Im agelist. 
Ejemplo de algunos gráficos que puede insertar en el control Imagelist: 
Páginas de propiedades 
G eneral Im á g e n e s | c o lo r 
Im ag en a c tu a l 
in d e x: [ g Key: p 
lag: r 
Im ágenes: 
LE] 
[ in sertar im agen... | Q uitar im agen | N úm ero de im ágenes: J? 
A c e p t a r j C a n c e la r j A p lica r A y u d a 
201
£ 3 ^ VISUAL BASIC como debe ser. 
El contenido de la Hoja C olor es: 
P á g in a s d e p r o p ie d a d e s 
G e n e ral ) Im á g e n e s C olo r j 
P ro pie d ad e s: C on ju nto d e colores: 
r - T 
■laskColor 
j C olores e stá n d a r 
P a le ta d e colores: 
| C ara d e l b o tó n g ] - i 
E scritorio 
m E s p a c io d e tra b a jo de la a p lica ció n 
F o n d o d e la v e n ta n a 
j l J 
E d ita r co n tro l p ersonalizado... 
A c e p ta r ~| C a n c e la r A p lic a r 
B a ckC olo r perm ite asignar un c o lo r de fondo y M askC oIor asigna un co lo r 
para la mascara del control. 
E l control también tiene la propiedad U sem askC olor para establecer un valor 
que determ ina si el co lo r asignado en la propiedad M askC oIor es utiliza do 
com o una máscara. 
M A N E T O D E L A S IM Á G E N E S D E L C O N T R O L IM A G E L IS T 
Para obtener cualquiera de las imágenes que se encuentran almacenas en 
el control Im agelist se u tiliza la siguiente sintaxis: 
Control_ImageList.Listlmages(índice).picture 
E l índice es un va lo r que indica el núm ero de la imagen que se quiere 
obtener.Por ejem plo, para m ostrar en el co ntrol Picture 1 la imagen N° 3 del 
co ntrol Im agelist N ° 1 se escribe. 
Picturel = ImageListl.Listlmages(3).Picture 
Para saber cuantas imágenes tiene el control Im ageList u tilice la propiedad 
C ount. Por ejem plo, la siguiente instru cció n almacena en la variable N, la 
cantidad de imágenes del control Im ag elist 1. 
N = ImageListl.Listlmages.Count 
G r u p o E d i t o r 2 0 2 i a l Megabyte <||§ § f | 
> CAPÍTULO IV: Mejorando el Aspecto de los Formularios 
APLICACIÓN DESARROLLADA N° 25 
Inserte en el control Im agelist una cantidad determ inada de imágenes para 
que luego se muestren una a continuación de otra al hacer c lic k en el botón 
M O S T R A R S IG U IE N T E . D ibu je en un fo rm u la rio un co ntrol Im agelist, 
un Picture y dos comm and. 
« . MU ESTRA DE IMAGENES E H J 
Mostrar Siguiente 
SALIR 
Una vez que insertó imágenes en el control Im a g e L is tl, use la propiedad 
Personalizado, escriba las siguientes instrucciones en el botón M o stra r Siguiente: 
Prívate Sub Commandl_Click() 
S t a t i c P A s I n t e g e r 
P = P + 1 
I f P > I m a g e L i s t l . L i s t l m a g e s . C o u n t T h e n 
P = 1 
E n d I f 
P i c t u r e l = I m a g e L i s t l . L i s t l m a g e s ( P ) . P i c t u r e 
End Sub 
Las instrucciones anteriores permiten mostrar las imágenes una a continuación 
de otra y cuando se llega a la ultim a muestra nuevamente la primera. 
FUNC IO N LOADPICTURE 
Es una función que perm ite colocar en un co ntrol Image o PictureB ox un 
gráfico. Su sintaxis es: 
Nombre_del_Control=loadpicture (ruta y nombre de gráfico) 
Ej empl os: 
P ictu rel = L oadP icture( "graphicsiconscom puterkey04. ico ") 
Im age 1 = L oadP icture("graphicsiconscom puterkey04.ico") 
P ictu rel = LoadPicture( "c:vbm etafilescom puter.wm f") 
M U Y IMPORTANTE 
Ud., debe escribir correctamente la ruta de donde se encuentra el gráfico que desea 
colocar en el control PictureBox o en el control Image. 
203
VISUAL BASIC como debe ser... 
CALENDAR: (CALENDARIO) 
Es un control que se utiliza para manejar la fecha del sistema de una manera 
personalizada. Este control muestra en el formulario un calendario con la fecha 
actual seleccionada y nos permite buscar otra fecha en cualquier mes o año. De la 
lista de componentes haga click en la casilla del control llamado: Microsoft ca­lendar 
Control. 
PRIN C IPALES PRO PIED AD ES D E UN CALEND AR: 
CUSTOM 
Permite personalizar el control Calendar. 
DAY 
Obtiene el día de la fecha seleccionada y permite seleccionar un 
nuevo día. 
DAYFONTCOLOR 
Asigna el color para los nombres de los días. 
DAYLENGTH 
Indica la forma de visualizar el nombre de los días de la semana. 
FIRSTDAY 
Permite indicar el primer día de la semana a visualizar en el 
calendario. 
GRIDCELLEFFECT 
Cambia el estilo de las líneas del calendario. 
GRIDFONTCOLOR 
Asigna un color para los días del mes. 
MONTH 
Obtiene el número del mes seleccionado y permite seleccionar un 
nuevo mes. 
MONTHLENGTH 
Indica la forma de visualizar el nombre de los meses. 
SHOWDATESELECT 
Permite que se muestren los botones para seleccionar una nueva 
fecha del calendario. 
SHOWDAY 
Permite que se muestren los nombres de los días de la semana en 
el calendario. 
SHOWVERTICALGRID 
Permite visualizar las líneas verticales del calendario. 
VALUE 
Permite obtener la fecha seleccionada del calendario. 
YEAR 
Obtiene el año de la fecha seleccionada y permite seleccionar un 
nuevo año. 
2 0 4 G r u p o E d it o r ia l M e g a b y t e ^ ”^ 
' CAPITULO IV: Mejorando el Aspecto de los Formularios 
APLICACIÓN DESARROLLADA N° 26 
La aplicación muestra la fecha seleccionada en una etiqueta, pero en letras. 
ig g ig w a g ta i'gi'ai» «í ¿y; i is tii ¡ggggj 
O c tu b re 1998|octubre ~£ j-ms _-J 
Dom L u n Mar Mié Ju e Vie Sáb 
1 2 3 
4 5 6 7 8 9 10 
11 12 13 14 15 16 .............i 
18 19 20 21 22 23 24 
25 26 27 28 29 30 31 
4 6 
DESARROLLO DE LA APLICACIÓN 
Para desarrollar esta aplicación dibuje en el formulario el control Calendar y dos 
etiquetas. Luego se debe programar en el evento C lick del control Calendar. 
El signo dólar ($) al final de una variable indica que la variable es de tipo String. 
INSTRUCCIONES DEL CONTROL CALENDAR. 
Prívate Sub Calendarl_Click() 
Labell = Calendar1.Valué diasemana = WeekDay(Labell) dia$ = Day(Labell) mes = Month(LabellJ año$ = Year(Labell) 
Select Case diasemana 
Case 
Case 
Case 
Case 
1 : 
2 : 
3 : 
4 : 
diasem 
diasem 
diasem 
diasem 
"Domingo" "Lunes" "Martes" 
"Mi ércol es " 
Case 5: diasem = "Jueves" 
Case 6: diasem = "Viernes" 
Case 7: diasem = "Sábado" 
End Select 
Select Case mes 
Case 1: nmes = "Enero" 
Case 2: nmes = "Febrero" 
Case 3: nmes = "Marzo" 
Case 4: nmes = "Abril" 
Case 5: nmes = "Mayo" 
Case 6: nmes = "Junio" 
Case 7: nmes = "Julio" 
Case 8: nmes = "Agosto" 
Case 9: nmes = "Setiembre" 
Case 10 : nmes = "Octubre" 
Case 11 : nmes = "Noviembre 
Case 12 : nmes = "Diciembre 
End Select 
Label2 = diasem 
End Sub 
+ dia$ + " de " + tunes + " de " + año$
VISUAL BASIC corno debe ser... 
STATUSBAR (BARRA DE ESTADO) 
' ts;;:: 
r ~ r 
Este control se u tiliz a para m ostrar una barra de estado en un fo rm u la rio 
norm alm ente en la parte in fe rio r en la cual se puede m ostrar inform ación 
com o por ejem plo la fecha y hora del sistema, el estado del teclado, o 
cualquier otro tip o de mensaje. 
Esta inform a ción se visualiza en determ inados espacios dentro de la barra 
de estado llam ados paneles los cuales pueden ser hasta 16. 
Si no se visualiza en la caja de herram ientas, haga c lic k en la casilla del 
c o ntrol llam ado: Microsoft Windows Common Controls 5.0 de la lista 
de componentes. 
P RIN C IPALES PRO PIED AD ES D E U N STATU SBARS: 
Las propiedades principales del control se obtiene con sólo elegir la propiedad 
Custum ize (personalizado). Se visualiza la siguiente ventana con cuatro hojas 
o fichas: General, Paneles, Fuente e Im agen. 
E l contenido de la hoja General es: 
a m a r 
G e n e ra l j Paneles ] F u e n te | Im a g e n j 
Style: H f W BfflllTO 
M o useP ointer: j o - c c D e ía u lt 
G imple T ext. 
Q L E D ro p M o d e : j o - c c O L E D ro p N o n e 
E n a b le d fs? S h o w T ip s 
A c e p ta r j C a n c e la r | Aplicar, A y u d a 
206 G r u p o E d i t o r i a l Mega 
CAPITULO IV: Mejorando el Aspecto de los Formularios 
STYLE 
Permite indicar el estilo de la barra de estado. El estilo 0-strN orm al, muestra 
la barra de estado con todos los paneles asignados y el estilo 1-sbrSim ple 
muestra sólo el texto escrito en la propiedad S im ple Text. 
MOUSEPOINTER 
Se u tiliz a para in d icar la form a que tendrá el puntero del mouse cada vez 
que éste pase por la barra de estado. Si desea com o puntero del mouse un 
g rá fico seleccionado por U d. Debe elegir la ú ltim a opción (99-ccC ustom ). 
La selección del g rá fico los puede hacer en la página Imagen com o se verá 
más adelante. 
SIMPLE TEXT 
Perm ite escribir un texto el cual se visualiza en la barra de estado cuando 
en la propiedad Style se elige el estilo 1-sbrSim ple. 
OLEDDROPMODE 
D evuelve o establece el m odo en que un com ponente de destino realiza las 
operaciones de colocación. 
ENABLED 
Indica si la barra de estado debe estar activada o desactivada. 
SHOWTIPS 
In dica si la barra de estado debe m ostrar el texto de ayuda que se escribe 
en la propiedad T o o ltip te x t de la hoja Paneles. 
E l contenido de la hoja Paneles es: 
G e n e r a l P a n e le s j F u e n t e ) I m a g e n ] 
Incjex: 
T e x t : 
T o o lT i p T ext: 
K e y : 
T a a 
A lig n m e n t: 
Sfttle: 
B e v e l: 
A u t o S ize: 
f p a n e l j Q u it a r p a n e l 
M ín im u m W id t h : 
A c t u a l W id t h : 
Im a g e n 
11 4 4 0 .0 0 
11 4 4 0 00 
0 - s b r T e x t 
1 - s b rln s e t 'W I 
E x a m in a r... 
O - s b r N o A u t c ^ ~ | E n a b l e d Jv' 
J J A y u d a 
INDEX 
Visualiza o selecciona cualquiera de los paneles creados en la barra de estado.
¿ S S t t VISUAL BASIC como debe ser... 
TKXT 
Permite escribir un texto el cual se va a visualizar en el panel siempre y cuando la 
propiedad Style de esta hoja tenga el valor 0-sbrText. 
TOOLTIPTEXT 
Permite escribir un texto de ayuda que se visualiza cuando el puntero del mouse se 
encuentre en el panel siempre y cuando la propiedad Show Tips de la hoja General 
se encuentre activada. 
KEY 
Permite asignar uno o más caracteres que van a identificar a cada panel. No acepta 
números. 
TAG 
Permite escribir un texto el cual queda almacenado para poder utilizarlo en cualquier 
momento si lo deseamos. 
ALIGNMENT 
Alinea el texto o el gráfico dentro del panel a la izquierda, centro o derecha. 
STYLE 
Permite seleccionar el tipo de información que desea mostrar en el panel. Si desea 
visualizar el texto escrito en la propiedad Text, debe elegir el estilo 0-sbrText. Aquí 
puede elegir que se muestre la fecha u hora del sistema, el estado del teclado, etc. 
BEVEL 
Selecciona el tipo de borde del panel (sin relieve, bajo relieve o en alto relieve). 
A ITO SIZE 
Para indicar si el tamaño del panel debe estar de acuerdo al tamaño de lo que 
contiene o no. 
M IN IM U M WIDTH 
Para indicar el ancho mínimo que puede tener el panel. 
EXAMINAR 
Permite seleccionar un gráfico que va a acompañar a la información que mostramos 
en el panel. Ud., debe conocer previamente la ruta de la carpeta donde se encuen­tran 
los archivos de gráficos en su computadora. 
Una de las rutas donde puede encontrar archivos de gráficos es: 
C:Archivos de ProgramaDevStudioVbGraphics'Sicons Y luego en cualquiera de las carpetas que contiene. 
SIN IMAGEN 
Borra el gráfico asignado al panel 
ENABLED 
Para indicar si el panel debe estar activado o no. 
VISIBLE 
Para indicar si el panel debe estar visualizar o no. 
208 G r u p o E d i t o r i a l Megabyte 
< CAPITULO IV: Mejorando el Aspecto de los F orm ularios^ 
E l contenido de la h o ja F ue nte es: 
-  
G e n e ra l ] P a neles F u e n te Im a g e n ) 
P ro p ie d a d e s: Fuente: X a m a ñ o : 
¡M S S a n s S erif z ] I8 2 6 J Ü 
E fe cto s 
r N e g rita r S u b ra y a d o 
1 C u rsiva r T a c h a d o 
T e x to d e ejem plo: 
M S S a n s S erif 
A c e p t a r | 
Permite cambiar el tipo 
de letra, tam año y 
asignar efectos al texto 
que se muestra en la 
barra de estado. 
E l contenido de la h o ja Im a g e n es: 
G e n e r a l | P a n e le s j F u e n t e I m a g e n j 
Prop. ie_d_a_d__e_s: Vista previa: 
Exam inar... VJMzi — i 
A c e p ta r I C a n c e la r J ____ I 
-------- 
Esta hoja permite 
seleccionar un gráfico el 
cual va a reemplazar al 
puntero del mouse cuándo 
lo ubiquemos en cualquier 
parte de la barra de estado. 
El gráfico que Ud. elija se 
visualiza siempre y cuando 
se halla seleccionado la 
opción 99-ccCustom de la 
propiedad MousePointer 
de la hoja General.. 
EJEMPLO DE UNAAPLICAGON USANDO ELCONTROLSTATUSBAR 
tm iS M m m n ™ i ^ 'm rr— — T - idi *i 
S I S T E M A 
D E 1 
V E N T A S ? 
/ X 8 /0 5 /9 9 José Castañeda 4 42 AM I 
209
^ Íllíl¡|> VISUAL BASIC como debe ser.. . 
Asigne las propiedades al control Toolsbar de tal manera que tenga el m ism o 
aspecto de la aplicación mostrada. Tam bién se puede program ar dentro de 
este control, p or ejem plo: Se desea que al hacer c lic k en la calculadora, se 
active la calculadora del w indow s. 
L a propiedad INDEX del PANEL nos perm ite saber en cuál de ellos el 
usuario hizo click. A l hacer c lic k en el p rim er panel la propiedad Index toma 
el va lo r 1, al hacer c lic k en el segundo panel, la propiedad Index toma el 
va lo r 2, etc. 
Entonces las siguientes instrucciones para el control son: 
Prívate Sub StatusBarl _PanelClick(ByVal Panel As ComctlLib. Panel) 
If Panel.Index = 4 Then 
Shell "c:windowscalc.exe", 1 
End If 
End Sub 
Si U d., ha asignado uno o más caracteres en la propiedad K E Y , entonces 
tam bién puede id e n tific a r el panel donde se h iz o C lic k , m ediante esta 
propiedad. Por ejem plo: Si ha asignado las letras CAL en la propiedad K E Y 
del panel núm ero 4 (calculadora), entonces puede e s c rib ir tam bién las 
siguientes instrucciones en el control: 
Prívate Sub StatusBar l_PanelClick(By Val Panel As ComctlLib.Panel) 
I f P a n e l . K e y = "CAL" T h e n 
S h e l l " c :  w i n d o w s  c a l c . e x e “, 1 
E n d I f 
End Sub 
NOTA 
SHELL perm ite ejecutar program as (*.exe) desde el V isual Basic y el valor l le 
indica que el program a se debe ejecutar con e l tam año d e ventana normal. Debe 
especificar correctam ente la ruta y el nom bre del archivo. 
CALCULADORA DEL WINDOWS 3* Edición Ver Ayuda ¡ 
r ~ B a c k 1 C E 1 C 1 
M C 8 9 / s q r t 
M R 4 5 6 % 
M S 1 2 3 1 /x 
M + 0 +h f 
G r u p 210 o E d i t o r i a l Megabyte 
> CAPITULO IV: Mejorando el Aspecto de los Formularios ^ 
PANTALLAS DE PRESENTACIÓN 
1. Pantalla desarrollada en Power Point. 
•' rm * 
o t t j R a n r r j i t 
T R A N S P O R T S . A 
f; sai is ¡1 
U d., puede diseñar su pantalla en Power P oint y pegarla en su fo rm u la rio o 
activarla. Si usted pega la pantalla, ésta se visualizará estática (sin los 
m ovim ientos o efectos asignados) Para ello una vez que term inó de diseñarla, 
preséntela (C lic k en el Botón P R E S E N T A C IO N C O N D IA P O S IT IV A ) y 
pulse IMPR PANT (Print Screen), luego vaya al V isual Basic y,haga 
c lic k en cualquier parte del fo rm u la rio y pulse CTRL+V. Si desea borrar la 
pantalla, borre el contenido de la propiedad P icture del form u la rio . 
Para activar una pantalla en Pow er P oint desde V isual Basic y visualizar 
los m ovim ientos y efectos que le asignó, puede u tiliz a r el co ntrol O LE . 
EL CONTROL OLE 
Permite insertar objetos. A l dibujarlos se visualiza una caja de diálogo donde 
se puede e le gir el objeto a insertar. Si pulsó C A N C E L A R y salió de la caja 
de dialogo, para regresar haga un c lic k con el botón derecho del mouse en 
el control O L E y e lija la opción INSERTAR OBJETO. 
E l 
I Insellai o b j e t o ... . ........ « . S I 
Tips de objeto: I Aceptar 
<• Crear Quevo 
Adobe«-Table 2.5 
Clip de multimedia 
Corel PHOTO-PAINT 5.0 Imagen 
CorelCHART! 5.0 Chart 
CorelDRAW! 5.0 Gráfico 
CorelDRAW! 5.0 Presentation Exchar , 
CorelEquation! 1.0 Equation .T I 
Cancelar 
f " Crear desde archivo 
I postrar como icono 
Resultado 
Inserta un nuevo objeto de Adobe Photoshop 
Image en el documento. 
La opción C rear d esd e A rc h iv o perm ite seleccionar el archivo previam ente 
creado
VISUAL BASIC como debe ser... 
ACTIVAR UNA PRESENTACIÓN EN POWER POINT 
Una vez creada y grabada la presentación en Power Point, active el Visual 
Basic y en un form ulario en blanco pegue el control O LE y en la ventana que se 
visualiza elija la opción C rear desde A rch ivo , luego haga clic en el botón E x a ­m 
in a r para buscar y seleccionar la presentación creada en Power Point ha­ciendo 
clic en el botón Insertar y luego en Aceptar. En el evento Form Load 
del form ulario debe escribir: 
P r i v a t e Su b F o rm _ L o a d () 
O l e l . V i s i b l e = F a l s e 
O l e l . A c t i n o = 7 
End Sub 
2. Muestra la palabra SISTEMA letra por letra. 
SISTEMA 
ic s ^ 'l 
o * ..j 
En un form ulario debe crear un array de 7 etiquetas. Para ello, Dibuje la etiqueta 
N° 01, luego pulse C TR L+C y luego C T R L + V hasta completar las siete (desde 
Labell(O ) hasta L abell(6)). También debe dibujar un control T IM E R y un 
botón de comandos el cual tiene el gráfico llamado: PO IN T4.IC O (opcional). 
A cada etiqueta debe asignarle una letra de la palabra S IS T E M A . Labe] 1 (0) 
debe tener en su propiedad C aption la letra S, L a b e ll( l) la letra I, etc. 
INSTRUCCIONES: 
Definir las variable en la sección de declaración del formulario 
P u b l i c P As I n t e g e r 
P u b l i c F I N A s I n t e g e r 
In stru ccion es del procedim iento FORM ACTIVATE 
Prívate Sub Form_Activate() 
Dim X As Byte 
Formt. WindowState = 2 ‘Maximiza el Formulario 
For X = OTo 6 
Labell(X).FontName = "Couríer New" ‘Tipo de letra 
Labell(X).FontSize = 72 'Tamaño de letra 
Labell(X). Visible = False ‘Oculto 
Labell(X).BackStyle = 0 ‘Transparente 
Labell(X).AutoSize = True 
Next X 
FIN = 2500 ‘Ubicación de la primera letra 
Commandl. Visible = False ‘Oculta el Botón OK 
Timerl Anterval = 100 
End Sub 
- * - Grupo Editorial Megabyte 
7 
CAPÍTULO IV: Mejorando el Aspecto de los Formularios 
Instrucciones del control TIMER 
Private Sub TimerI JTimer() 
Static N As Byte 
Labell(N). Visible = True ‘Muestra de la letra 
Labell(N).Top = 2000 'Ubicación vertical 
Labell(N ).Left = P ‘Ubicación horizontal 
P = P + 500 ‘Velocidad de movimiento de las letras 
IfP > FIN Then 
FIN = FIN + Label 1(N). Width + 200 
P = 0 
N = N + 1 
End I f 
I fN > 6 Then 
Tim erl.Inten’al = 0 
Commandl .Visible - True 
End I f 
End Sub 
3. Mueve las palabras y oscurece y aclara el formulario 
. P R E S E N T A C IO N 1-ñJSlJü' 
BIENVENIDOS 
AL SISTEMA 
D ibuje en el form ulario dos 
etiquetas, dos control Tirner, un 
P ic tu re B o x y un botó n de 
com andos. A las etiquetas, 
P ic tu re B o x y botó n de 
co m a n d o a síg n e le s las 
propiedades como se muestran 
en la figura anterior. 
Labell 
Label2 
Comm andl 
Definir las variable en la sección de declaración del formulario 
P u b l i c N, I A s I n t e g e r 
Public sw, CLARO As Boolean 
m m
VISUAL BASIC como debe ser... 
Instrucciones del procedimiento Form Activate 
P r í v a t e S u b F o r m _ A c t i v a t e () 
F o r m l . W i n d o w S t a t e = 2 
T i m e r l . I n t e r v a l = 1 0 0 
T i m e r 2 . I n t e r v a l = 1 0 0 
End Sub 
Instrucciones del TIM ER1 
Suben y bajan las palabras 
Prívate Sub Timerl_Timer() 
Ifsw Then 
Instrucciones del T IM E R 2 
Aclaran y oscurecen el formulario. 
Prívate SubTimer2_Timer() 
If CLARO Then 
1 = 1-5 
If 1 = 0 Then 
N = N - 200 
IfN < 0 Then 
sw = False 
E n d lf 
C LARO = False 
Else 
End If 
N = N + 200 
Else 
1 = 1 + 5 
IfN > 7000 Then 
sw True 
If I = 255 Then 
= E n d lf 
CLARO = True 
E n d lf 
End If 
End Labell.Top If 
= N 
Label2. Top = 7000 N 
Form 1 .BackColor=RGB(0,1,0) 
- End Sub 
End Sub 
Practique cam biando la p osición del de la variable I en R G B. 
E xisten muchas otras form as de crear pantallas de presentación y muchas 
veces depende de la creatividad de cada uno. 
Tam bién puede inse rtar otros objetos com o p or ejem plo: imágenes de 
M icro so ft, galería de imágenes, Hojas y gráficos de Excel etc. 
Para ello, haga c lic k con el botón derecho del mouse en cualquier parte de la 
caja de herramientas y e lija la opción componentes y de la pantalla que se 
visua liza e lija la hoja O B J E T O S IN S E R T A B L E S . 
Selected Items Only 
Adobe Phiotoshop Imaj- 
Location: COM 1 3DADOBEPHOTOSHP.EXE 
=J 
214 G r u p o E d i t o r i a l Megabyte'1 
HSCROLL Y VSCROLL (Barras de Desplazamiento) 
j j i l 
i l 
i l 
Las barras de desplazam iento son controles que se pueden u tiliz a r para 
varias aplicaciones com o por ejem plo para visua liza r in form a ción cuando 
se encuentra en un co ntrol donde no se puede visualizar toda al m ism o 
tiem po, para incrementar o d ism inuir el valor de una variable, etc. 
Sus p rin c ip a le s p ro p ie d a d e s son: 
L A R G E C H A N G E 
Para in d icar el increm ento o decremento de la propiedad Valué cada vez 
que el usuario haga c lic k en el área de desplazamiento. 
S M A L L C H A N G E 
Para in d icar el increm ento o decremento de la propiedad Valué cada vez 
que el usuario haga c lic k en la flecha de desplazamiento. 
M A X 
Para in d icar el v a lo r m áxim o que puede tom ar el va lo r de la propiedad 
Valué. E l va lo r predeterm inado es 32767. 
M I N 
Para indicar el va lo r m ínim o que puede tom ar el valor de la propiedad Valué. 
E l va lo r predeterm inado es 0. 
V A L U E 
Indica la posición actual del cuadro de desplazamiento. Esta propiedad es la 
predeterm inada de las barras de desplazamiento, esto quiere d ecir que para 
referirm os a esta propiedad sólo se necesita escribir el nom bre del control 
Por ejem plo: las dos instrucciones realizan lo m ism o: R = H sc ro lll. Valué y 
R = H s c r o lll 
APLICACIÓN DESARROLLADA N° 27 
Esta aplicación perm ite m o d ific a r el co lo r del fondo del fo rm u la rio con 
diferentes tonalidades, y m over un gráfico. 
M 3 
M u e ve el Gráfico 
« USO DE SC R O LLB A R S 
Intensidad 
R O JO j J M 1255 
V E R D E j J 1 » 1 1255 
A Z U L j J M 1255 
Empezar 1 Salir 1 
A. 
j d 
215
S l b VISUAL BASIC como debe ser. ., 
P A S O N ° 01: D IB U J A R L O S C O N T R O L E S . 
D ib u je los controles com o se muestra a continuación: 
I t i Form l i m i — — .Inlxl 
Labell jlU 
Label4 
Labe!5 LabeIS 
Label2 Label6 ±1 
Label3 <1 1 jü Label7 
Command! | Command2 | 
PA SO N ° 02: A S IG N A R L A S P R O P IE D A D E S . 
A signe las propiedades a las etiquetas y botones de comandos com o de 
muestra en la aplicación a desarrollar. 
Instrucciones del F orm _Lo ad para que al ejecutar la aplicación se asignen 
las propiedades a las barras de desplazamiento. 
Prívate Sub Form_Load() 
HScrolll.Min = 0 
HScrolll.Max = 255 
HScrolll.LargeChange = 5 
HScrolll .SmallChange = 5 
HScroll2.Min = 0 
HScrolll.Max = 255 
HScroll2.LargeCh.ange - 5 
HScroll2.SmallChange - 5 
HScroll3.Min = 0 
HScroll3.Max = 255 
HScroll3.LargeChange - 5 
HScrollJ. SmallChange = 5 
VScrolll.Min = 0 
VScrolll.Max = Forml .ScaleHeight 
VScrolll .LargeChange = 100 
VScrolll.SmallChange = 25 
End Sub 
- l í * G r u p o E d it o r ia l M e g a b y t e < |f ¡ ||¡ |j j f 
Instrucciones del F o rm _A ctiva te para que al activarse el fo rm u la rio las 
barras de desplazam iento y las etiquetas N ° 5 ,6 y 7 tengan el v a lo r cero (0). 
Priv a t e S u b F o r m _ A c t i v a t e () 
H S c r o l l l . V a l u é = 0 
H S c r o l l 2 . V a l u é = 0 
H S c r o l l 3 . V a l u é = 0 
V S c r o l l l . V a l u é = 0 
P i c t u r e l . T o p = 0 
L a b e l 5 = 0 
L a b e 1 6 = 0 
L a b e l 7 = 0 
E n d S u b 
Instrucciones del procedim iento C A M B IO , que perm iten cam biar el color 
del fondo del fo rm u la rio de acuerdo al va lo r de la propiedad Valué de cada 
una de las barras de desplazam iento. 
S u b CAMBIO() 
D im ROJO, VERDE, AZUL A s B y t e 
ROJO = H S c r o l l l 
VERDE = H S c r o l l 2 
AZUL = H S c r o l l 3 
F o r m l . B a c k C o l o r = RGB(ROJO, VERDE, AZUL) 
L a b e l 5 = H S c r o l l l 
L a b e l 6 = H S c r o l l 2 
L a b e l 7 = H S c r o l l 3 
E n d S u b 
Instrucciones del Botón E M P E Z A R . 
P r í v a t e S u b C o m m a n d l _ C l i c k () 
F o r m _ A c t i v a t e 
E n d S u b 
D entro de cada Barra se llam a al procedim iento C A M B IO . 
Prívate Sub HScrolll_Change() 
CAMBIO 
End Sub 
Prívate Sub HScroll2_Change() 
CAMBIO 
End Sub 
Prívate Sub HScroll3_Change() 
CAMBIO 
End Sub 
Instrucciones del control V S C R O L L 1 . 
P r í v a t e S u b V S c r o l l l _ C h a n g e () 
P i c t u r e l . T o p = V S c r o l l l 
E n d S u b
^ ¡llíiil? ' VISUAL BASIC como debe ser. . 
PROGRESSBAR (Barra de Progreso) 
m 
M uestra una barra que refle ja la ejecución de un proceso en la com putado­ra. 
En la ventana de componentes se llam a: M icrosoft W indow s C om m on 
C ontrols 6.0. Sus principales propiedades son: 
M A X 
Indica el va lo r m áxim o que puede tom ar el control. 
M I N 
Indica el valor m ínim o que puede tom ar el control. 
V A L U E 
índica el v a lo r del co ntrol en un determ inado m omento. 
P ara d e s a rr o lla r un 
e je m p lo , pegue en un 
fo rm u la rio en blanco el 
c o n tro l P rogressB ar y 
en su p ro c e d im ie n to 
F orm A ctívate escriba: 
C O N T R O L S L ID E R 
m P ro y e c to l - F orm l (C ódigo) | _ | a | x | 
jF o r m jrj j A c tív a te + j 
P r í v a t e Sub F o r m_Act i v at e () 
D i m x A s I n t e g e r 
P r o g r e s s B a r 1.M a x = 1000 
F o r x = 1 To 1000 
N e xt x 
E n d Sub 
£ < 1 1 Jlfl 
tr. 
P r o g r e s s B a r 1.V a l u é = x 
Es un control que perm ite desplazar una barra a través de una marca que 
tiene el control. Se puede m anejar de manera casi igu al a los controles 
H s c ro ll y V s c ro ll. En la ventana de com ponentes se lla m a : M icro so ft 
W indow s C o m m o n C ontrols 6.0. 
Sus principales propiedades son: 
L A R G E C H A N G E 
Indica el núm ero de marcas que se desplazará la barra al presionar las 
teclas R E P Á G o A V P Á G o al hacer clic en el control. 
S M A L L C H A N G E 
Indica el núm ero de marcas que se desplazará la barra al presionar las 
teclas Flecha Izquierda o Flecha Derecha. 
M A X y M IN 
Son sim ilares a las del control ProgressBar. 
O R IE N T A T IO N 
Indica la posición del control (H o rizo n ta l o Vertical) 
V A L U E 
Indica el va lo r del co ntrol en un determ inado m omento. 
N O T A : D e s a rro lle la a p lic a c ió n N ° 27 usando este c o n tro l. 
jfjjj l l p l » 218 G r u p o E d i t o r i a l Megabyte * |¡ ¡ íj |¡ |¡ 
C A P ÍT U L O IV : M ejorando el A specto ác los F orm ularios 
PREGUNTAS DE REPASO N 2 04 
1. ¿Qué casilla debe activar en las lista de componentes si en 
la caja de herramientas no encuentra el control ImageList? 
2. Explique los métodos gráficos. 
3. ¿Con qué propiedad se puede saber el panel donde el usuario 
hizo click en el control StatusBar? 
4. ¿Cuál es la diferencia entre Qbcolor y RGB? 
5. ¿Cuál es la utilidad del control Calendar? 
6. Explique cómo se pueden buscar los gráficos que tenemos 
disponibles en nuestra computadora. 
7. ¿Qué significa el signo de dólar ($) al final de una variable? 
8. ¿Qué valor debe tener el control Timer en su propiedad 
Interval para que las instrucciones que contiene se ejecuten 
cada segundo? 
9. ¿Qué diferencia encuentra entre el control Hscroll y Vscroll? 
10. ¿Qué es un método gráfico? 
11. ¿Cómo podemos saber la ruta exacta de un archivo gráfico? 
12 . ¿Cuál es el valor predeterminado de la propiedad Max y Min di> 
los controles Hscroll y Vscroll? 
13. ¿Cuál es la diferencia entre los controles Image y PictureBox? 
14. ¿Cuántos tipos de figuras se pueden dibujar con el control 
Shape? 
15. ¿Cuál es la ventaja de usar el control Frame? 
16. ¿Cuál es la utilidad del control ImageList? 
17. ¿Cuales son los tipo de gráficos que se pueden insertar en el 
control PictureBox? 
18. ¿Con qué función se puede colocar un gráfico en un control 
PictureBox o Image? 
19. ¿Cómo le indicamos a Visual Basic que deje de ejecutar las 
instrucciones que se encuentran en el control Timer.? 
20. ¿Qué función cumple las pulsación de las tecla CTRL+K cuando 
trabajamos con el control Frame? 
Es muy importante que Ud., se formule nuevas aplicaciones o 
intercambie aplicaciones propuestas entre sus compañeros de estudio 
y desarrollarlas con la finalidad de enriquecer sus conocimientos. 
r
CAPITULO V 
TA DE PASAJES 
Agencia de Transporte "EL PROVINCIANO S., 
Pasajero |H T 0 RAMIREZ 
D.N.I. |1 6895654 
Hora de Salida 
C 8 :0 0 pm. 
(* 9:00 prn. 
Destino : 
Lima annan 
O B S ER V A C r 
ffiLSoft D a tò S .A n i s i E a g 
1 PROFORM A 
•' ............ 
Precio 
p 1 p e s c u t ¡ 
Fecha Ö7/Z3/9B 
.Wc |XIM E NA TORREE 
le c c ió n 1 CAS TI LLA 2565 
î^omputadaroa |p æ ker Bell - | 7DOLOO 
y re s o ia s |D a s k e t 40a - ] 270.00 
í ^ u b Total 970.00 I.G.V. 174.G0 Total 1 1 44. EO 
 _ Q tra F W q r n a - j „ 
INGRESO 
PERSONALIZADO 
DE DATOS 
V-lA
< X ¿ > CAPÍTULO V: Ingreso Personalizado de Datos 
C O M B O (LISTA D E S P L E G A B L E ): 
Es un control que combina una caja de textos con una lista y se utiliza para 
ingresar datos de una manera muy sencilla para el usuario. 
PR IN C IPA LES PR O PIED A D ES DE UN CO M BO: 
Ñ A M E 
Permite asignarle un nombre. Por defecto el nombre es Com bol, Combo2, 
Combo3 etc. Según el número de controles que se dibujen en el formulario. 
EN A B L ED 
Para indicar si debe estar activo o no. 
FO N T 
P erm ite seleccionar el tipo, tam año y estilo de letra. 
LIST 
Permite ingresar los valores o datos que el usuario puede elegir de este 
control. Por cada elemento que se ingrese se debe pulsar <CTRL> + 
<ENTER>. Para insertar un elemento, ubique el cursor al inicio de donde lo 
desea insertar y pulse <CTRL> + <ENTER>. 
LISTIN D EX 
Obtiene el numero del elemento seleccionado. Si se elige el 1er elemento 
devuelve cero(O), el segundo uno(l), etc. 
L O C K E D 
Para indicar si se puede cambiar el contenido del control. 
SO RTED t 
Para indicar si los elementos deben salir ordenados. 
STYLE 
Selecciona el modo de elegir los elementos del control. TEXT 
Para indicar lo que se va a mostrar automáticamente en el control y 
almacena el texto seleccionado. 
V ISIB LE 
Para indicar si se debe visualizar el combo.
VISUAL BASIC como debe ser.. 
APLICACION DESARROLLADA N 28 
Esta aplicación debe permitir al usuario ingresar el nombre del alumno, su 
especialidad y tumo. Al hacer click en cualquiera de los Combo se debe 
desplegar las opciones posibles a elegir. 
J n J x j 
Especialidad JComputación j r ] 
^ U!ri° ¡Mañana j - ] 
Otro Alumno Finalizar 
Alumno Daniel Riveía 
Especialidad ^ « 3 
T urno Arquitectura 
Secretariado 
Sistemas 
Olio Alumno Finaliza! 
PASO N° 01: Dibujar los controles. 
Labell 
Label2 jcombol 
Label3 |Combo2 
Command! 
3 
Command2 
PASO N° 02: Asignar las propiedades. 
EOQUEIA CAPTION 
Label 1 Alumno 
Label2 Especialidad 
Label3 Turno 
COMANDO CAPTION 
Command I &Otro Alumno 
Command2 &Finalizar 
1EXTO 
Textl 
TEXT 
En Blanco 
224 : 
COMBO TEXT 
Combol Computación 
Combo2 Mañana 
G r u p o E d it o r ia l 
LIST 
Computación 
Arquitectura 
Secretariado 
Sistemas 
Mañana 
Tarde 
Noche 
CAPÍTULO V: Ingreso Personalizado de Datos ;l l ¡ | ¡ | | 
PASO N° 03: Escribir las instrucciones para los controles. 
Instrucciones del botón O T R O A LUM NO 
Prívate Sub Com mandl_Click() 
‘Borra el contenido de Textl 
Textl = 
‘Muestra el elemento predeterminado del Combol (Computación) 
Combol. Listlndex = 0 
'Muestra el elemento predeterminado del Combo2 (M añana) 
Combo2.Listlndex - 0 
‘Ubica el cursor en Textl para ingresar un nuevo alumno 
Textl. SetFocus 
End Sub 
El botón FINALIZAR debe tener la instrucción END. 
A PLIC A C IO N PROPU ESTA N° 07 
e . 4 V i 
Nombre 1 
Tipo [Permanente z  
Estado Civil 1Casado Z Ï 
Categoria |a -i 
Ingresar Otro Salir I 
Tipo : Permanente, Contratado, Eventual. 
Estado Civil : Casado, Soltero, Viudo, Divorciado. 
Categoría : A -l, A-2, A-3 B -l, B-2, B-3.
VISUAL BASIC como debe ser... 
APLICACION DESARROLLADA N° 29 
P a g o p o r H o r a [1 5 .0 0 
H o ra s T ra b a ja d a s | ■ 
T 0 T A L A P A G A R f p | 
N u e v o S a lir 
La aplicación debe tener las siguientes características: 
1. Al ejecutar la aplicación, el gráfico debe estar oculto y el botón Nuevo 
desactivado hasta que se comience a ingresar el nombre del trabajador. 
2. El pago por hora se visualiza en forma automática y depende del tipo de 
empleado: Permanente S/.15.00, Contratado S/.10.00 y Eventual SI. 
5.00. 
3. No existe el botón Calcular, entonces el total a pagar debe visualizarse 
automáticamente cuando el usuario ingrese el N° de horas trabajadas o 
cuando cambie el tipo de empleado. 
4. En el número de horas trabajadas no se permite el ingreso de letras (no se 
activa el botón Nuevo). 
PASO N° 1: Dibujar los controles. 
L a b e l l jlT e x t l 
L a b e l2 jC o m b o l ^ | 
L a b e l3 L a b e lG ---------- 
L a b e M | T e x t2 
L a b e l5 L a b e l7 
C o m m a n d l C o m m a n d 2 
CAPÍTULO V: Ingreso Personalizado de Datos 
PASO N° 02: Asignar las propiedades. 
EITQUETA CAPITON BORDERSTYLE 
Labell Nombre 0 - None 
Label2 Tipo 0 - None 
Label 3 Pago por Hora 0 - None 
Label4 Horas Trabajadas 0 - None 
Label5 TOTALA PAGAR 0 - None 
Labeló En Blanco 1 - Fixed Single 
Label7 En Blanco 2 - Fixed Single 
COMANDO CAPTION ENABLED 
Commandl &Nuevo False 
Command2 &Salir True 
FIGURA VISIBLE PICTURE 
Picture 1 False Gráfico que se indica 
COMBO TEXT LIST 
Combo 1 Permanente Permanente 
Contratado 
Eventual 
Ud. Puede cambiar otras propiedades que crea conveniente. 
PASO N° 03: Escribir las instrucciones de los controles. 
M UY IM PO RTA N TE: 
El valor cero (0) puede reemplazar al valor False y el valor uno (1) puede 
reemplazar al valor True. Ejemplo: 
Commandl.Visible=True es igual a Commandl.Visible=l 
Commandl.Visible=False es igual a Commandl.Visible=0 
Instrucciones del botón Nuevo: limpia las cajas de texto y las etiquetas, 
además muestra el tipo de empleado por defecto y oculta el gráfico. 
Prívate Sub CommandI_Click() 
Textl = 
Com bol .Listlndex = 0 
Labeló = 
Text2 = 
Label7 — 
Picture! .Visible = 0 
End Sub
Í Ü Ü Í > VISUAL BASIC como debe ser... 
Instrucciones del C om bol: permiten visualizar en forma automática el 
pago por hora, según el tipo de empleado que se elija y si ya se ingresó las 
horas trabajas visualiza el total a pagar. 
Prívate Sub Com bol_Click() 
N = Combol .Listlndex 
Select Case N 
‘Si N vale 0 a elegido la primera opción 
Case 0 
Labeló = "15.00” 
Case 1 
‘Si N vale 1 a elegido la segunda opción 
Labeló = "10.00” 
Case 2 
‘Si N vale 2 a elegido la tercera opción 
Labeló = “5.00” 
End Select 
‘Pregunta si no se ha ingresado el pagos por hora 
I f Trim(Text2) = Then 
‘Si no ha sido ingresado pide N" de horas trabajadas 
Text2.SetFocus 
Else ‘Si se ha ingresado calcula el total a pagar 
Label7 = Format(Val(Labeló) * Val(Text2), "###,##0.00”) 
End I f 
End Sub 
Instrucciones de Textl: Verifica si se ha comenzado a ingresar el nombre. 
Si es verdad activa el botón Nuevo y visualiza el gráfico. 
Prívate Sub Textl_Change() 
I f Trim( Textl) = Then 
Command2.Enabled = 0 
Pie ture 1.Visible - 0 
ElseC 
ommand2.Enabled = 1 
Picturel.Visible = 1 
End I f 
CAPÍTULO V: Ingreso Personalizado de Datos 
Instrucciones de Text2: Verifica que se ingrese sólo números en las 
horas trabajas y calcula en forma automática el total a pagar. Se puede 
realizar la misma operación usando la función ISNUMERIC. 
Prívate Sub Textl_Cliange() 
I f Trim(Text2) = Or Val(Text2) = 0 Then 
Command 1 .Enabled = 0 
ElseC 
ommand 1 .Enabled = 1 
Label?-Format(Val(Labeló) * Val(Text2), "###,##0.00”) 
End I f 
E nd Sub 
A P L IC A C IÓ N P R O P U E S T A N° 08 
Si es Soltero debe pedir la edad y el N° de hermanos y si es casado debe 
pedir el tiempo de casado y el N° de hijos. 
Nombre 
Estado Civil |Soltero 
Edad | 
N 5 de hermanos | 
N uevo J Sal» J 
Nombre 
Estado Civil [Casado 
Tiem po de Casado j 
N s de hijos j 
N uevo j Salir 
M U Y IM P O R T A N T E 
Ud., fo rm ú le se nuevas aplicaciones o intercam bie aplicaciones 
propuestas entre sus com pañeros y desarróllelas con 
la fin a lid a d de enriquecer sus conocim ientos. 
“ E l q u e a p re n d e y a p re n d e y n o p ra c tic a , es com o el 
q u e a r a y a r a y n u n c a s ie m b ra ”
o 
# • V ISl’AL BASIC como debe ser.. 
APLICACION DESARROLLADA N° 31 
JQI-xJ 
Tipo de Curso |a p u w TIVÖS ^ 
Nombre del Curso |W IN D O W S 95 j r ] 
Nuevo Salir 
Esta aplicación permite asignar un curso a cada profesor. Primero se debe 
ingresar su nombre y luego seleccionar el tipo de curso: Aplicativos, 
Programación, Otros. Según el tipo de curso, se mostrará una lista de cursos: 
APLIC A TIV O S 
Windows 95 
Word 
Excel 
Power Point 
P R O G R A M A C IO N 
Foxpro 
Visual Basic 
Visual Foxpro 
Power Builder 
OTROS 
Internet 
Correo Electrónico 
Inglés Técnico 
IM PO R T A N T E : 
C LE A R : Permite limpiar el contenido de un combo. 
Nombre del Control. Clear 
AD D 1TEM : Permite adicionar un elemento a un combo. 
Nombre del Control. Additem “Elemento ” 
En está aplicación de ejem plo, las propiedades de cada combo se 
asignan en el Evento Form_Load. 
PASO N° 1: Dibujar los controles. 
a ; .=..l.s l->d 
L a b e ll jfT e x t l 
L a b e l2 [C o m b o l zJ 
L a b e l3 |C o m b o 2 .... -1 
C o m m a n d l | C o m rn a n d 2 I 
230 G r u p o E d it o r ia l Megabyte-^ 
CAPITULO V: Ingreso Personalizado de Datos 
PASO N° 02: Asignar las propiedades. 
EITQUEIÄ 
Labell 
Label2 
Label3 
COMANDO 
Command 1 
Command2 
TEXTO 
Textl 
COMBO 
Combol 
Combo2 
CAPTION 
Profesor 
Tipo de Curso 
Nombre del Curso 
CAPTION 
&Nuevo 
&Salir 
TEXT 
En Blanco 
BORDERSTYLE 
0 - None 
0 - None 
0 - None 
ENABLED 
True 
True 
TEXT 
En Blanco 
En Blanco 
LIST 
En Blanco 
En Blanco 
Ud. Puede cambiar otras propiedades que crea conveniente. 
PASO N° 03: Escribir las instrucciones de los controles. 
Instrucciones del Form JL oad para asignar las propiedades o valores iniciales 
de cada Combo. 
Prívate Sub Form_Load() 
‘Limpia el contenido del combol 
Com bol.Clear 
'Adiciona elementos al combol 
Combol.Additem “APLICATIVOS” 
Combol.Additem “PROGRAMACIÓN” 
Combo 1 .Additem “OTROS” 
‘Limpia el contenido del combo2 
Combo2.Clear 
‘Adiciona elementos al combo2 
Combo2.Additem “WINDOWS 9 5 ” 
Combo2.Additem “WORD” 
Combo2.Additem “EXCEL” 
Combo2.Additem “PO IN T” 
‘Permite que se visualice el ler. elemento de cada combo 
Combo l.Listlndex = 0 
Combo2.Listlndex - 0 
End Sub
¿ S ü t VISUAL BASIC como debe ser... 
Instrucciones del Combol para que de acuerdo al tipo de curso que se 
seleccione, se muestre en el combo2 los nombres de los cursos. 
P r í v a t e S u b C o m b o l _ C l í c k () 
n = C o m b o l . L í s t l n d e x 
S e l e c t C a s e n 
C a s e 0 
C o m b o 2 . C 1 e a r 
C o m b o 2 . A d d l t e m "WINDOWS 9 5 " 
Combo2 . A d d l t e m "WORD" 
C o m b o 2 . A d d l t e m "EXCEL" 
C o m b o 2 . A d d l t e m "POINT" m 
C o m b o 2 . L í s t l n d e x = 0 
C a s e 1 
C o m b o 2 . C 1 e a r 
C o m b o 2 . A d d l t e m "FOXPRO" 
C o m b o 2 . A d d l t e m "VISUAL B A S IC " 
C o m b o 2 . A d d l t e m "VISUAL FOXPRO" 
C o m b o 2 . A d d l t e m ”POWER BUILDER" 
C o m b o 2 . L í s t l n d e x = 0 
C a s e 2 
C o m b o 2 . C 1 e a r 
Combo2 . A d d l t e m "IN TER N ET " 
C o m b o 2 . A d d l t e m "CORREO ELECTRÓNICO" 
Combo2 . A d d l t e m "INGLÉS TÉCNICO" 
C o m b o 2 . L í s t l n d e x = 0 
E n d S e l e c t 
E n d S u b 
Instrucciones del Commandl (Nuevo), para ingresar un nuevo profesor. 
A signa los valores por defecto a cada com bo y para ello, llam a el 
procedimiento Form_Load que contiene dichas instrucciones. 
P r í v a t e S u b C o m m a n d l _ C l í c k () 
' L i m p i a y u b i c a e l c u r s o r e n T e x t l 
T e x t l = 
T e x t l . S e t F o c u s 
'L la m a a l p r o c e d i m i e n t o F o r m _ L o a d 
F o r m _ L o a d 
E n d S u b 
En e l com m and2 s e e s c r i b e l a i n s t r u c c i ó n E N D . 
232 G r u p o E d it o r ia l Megabvte 
CAPITULO V: Ingreso Personalizado de Datos " llliJ S P ' 
A P L IC A C IÓ N D E S A R R O L L A D A N° 32 
Una empresa de venta de computadoras necesita un formulario que permita 
realizar su proforma. Dicha empresa tiene los siguientes productos: 
Computadoras Precio 
IBM 850.00 
Packer Bell 700.00 
Acer 600.00 
Impresoras 
Epson LX-300 
Deskject 400 
IBM graphics 
Precio 
180.00' 
270.00 
380.00 
« t S o it D a ta S .A 
P R O F O R M A 
C lien te |X IM E N A T O R R E S 
D ire c c ió n 
n s ix i 
F e c h a 0 7 /2 3 /9 8 
(C A S T IL L A 2 5 6 5 
C o m p u ta d o ra s | p a c k e r B ell [ 7 0 0 .0 0 
Im p re s o ra s |D e s k je t4 0 0 -■ | 2 7 0 .0 0 
S u b T o ta l 9 7 0 .0 0 I.G .V . 1 7 4 .6 0 T o ta l 1 1 4 4 .6 0 
C a lc u la r j O tra P ro fo rm a | _______ S alir | 
• El botón Calcular permitirá obtener el Sub Total, IGV (18%) y el Total. 
• El botón O tra Proform a permitirá limpiar los datos y pedir otros. 
• El botón Salir finalizará el programa. 
PASO N° 01: Dibujar los controles. 
I in. Formi m é m 
LabeH Label2 
Labe!3 ¡T extl 
— 
Label4 |ïe x t2 
Label5 I Com bol Label7 
LabelB |Com bo2 Labe!8 
Label9 L ab e ll 0 Labell 1 
Com m andl Command2 Comm and3 | 
1
| ¡ S S ¡ ^ VISUAL BASIC como debe ser... 
PASO N° 02: Asignar las propiedades. 
A las etiquetas y botones de comandos, asígneles la propiedad Caption, como 
se muestra en la aplicación. 
TEXTO TEXT 
Textl En Blanco 
Text2 En Blanco 
LINEA BORDEWIDTH 
Linei 4 
Line2 4 
LIST 
IBM 
Packer Bell 
Acer 
c o m b o t e x t 
Combol IBM 
Combo2 Epson LX-300 Epson LX-300 
Deskject 400 
IBM graphics 
Ud. Puede cambiar otras propiedades que crea conveniente. 
PASO N° 03: Escribir las instrucciones de los controles. 
Instrucciones del C o m b o l. 
Estas instrucciones permiten visualizar el precio de la computadora cuando 
el usuario la selecciona en el combo N°1 haciendo click. 
P r í v a t e S u b C o m b o l _ C l i c k () 
Dim n A s I n t e g e r 
n = Combo1 . L i s t i n d e x 
Select Case n C a s e 0 
L a b e l 7 = " 8 5 0 . 0 0 " 
C a s e 1 
L a b e l 7 = " 7 0 0 . 0 0 " 
C a s e 2 
L a b e l 7 = " 6 0 0 . 0 0 " 
E n d S e l e c t 
E n d S u b 
w 234 G r u p o E d it o r ia l Megabyte'^¡| 
CAPÍTULO V: Ingreso Personalizado de Datos 
In stru cc io n es del-C om bo2. 
Estas instrucciones permiten visualizar el precio de la impresora cuando el 
usuario la selecciona. 
P r i v a t e S u b C o m b o 2 _ C l i c k ( ) 
Dim n A s I n t e g e r 
n = C o m b o 2 . L i s t l n d e x . 
S e l e c t C a s e n 
C a s e 0 : L a b e l 8 = " 1 8 0 . 0 0 " 
C a s e 1 : L a b e l 8 = " 2 7 0 . 0 0 " 
C a s e 2 : L a b e l 8 = " 3 8 0 . 0 0 " 
E n d S e l e c t 
E n d S u b 
Instrucciones del Botón CALCULAR. 
P r í v a t e S u b C o m m a n d l _ C l i c k () 
D im s t , i g v , t t A s S i n g l e 
s t = V a l ( L a b e l 7 ) + V a l ( L a b e l 8 ) 
i g v = s t * 1 8 / 1 0 0 
t t = s t + i g v 
L a b e 1 9 = " S u b T o t a l " + F o r m a t $ ( s t , " # # # , # # 0 . 0 0 " ) 
L a b e l l O = " I . G . V . " + F o r m a t $ ( i g v , " # # # , # # 0 . 0 0 " ) 
L a b e l l l = " T o t a l " + F o r m a t $ ( t t , " # # # , # # 0 . 0 0 " ) 
E n d S u b 
Instrucciones del Botón OTRA PROFORMA. 
P r í v a t e S u b C o m m a n d 2 _ C l i c k () 
T e x t l = " ” 
T e x t 2 = "" 
' M u e s t r a e n l o s c o m b o s e l p r i m e r e l e m e n t o 
C o m b o l . L i s t l n d e x = 0 
C o m b o 2 . L i s t l n d e x = 0 
L a b e l 9 = ”" 
L a b e l l O = "" 
L a b e l l l = "" 
T e x t l . S e t F o c u s 
E n d S u b 
El botón SALIR debe tener la instrucción END.
VISUAL BASIC como debe ser... 
OPTION BUTTON (BOTON DE OPCION): 
£ 
Es un control que permite ingresar datos por selección. De esta forma sólo 
se puede seleccionar una opción de un grupo de ellas. 
PR IN CIPA LES PR O PIED A D ES DE UN O PTIO N BUTTON: 
ÑAME 
Permite asignarle un nombre. Por defecto el nombre es 
Optionl, 0ption2, 0ption3 etc. 
A IJ G N M E N T 
Para indicar la ubicación del texto y del botón. 
CAPTION 
Para escribir el texto que acompaña al botón. 
ENABLED 
Para indicar si debe estar activo o no. 
FONT 
Permite seleccionar el tipo, tamaño y estilo de letra. 
FORECOLOR 
Selecciona un color de la letra. VALUE 
Permite saber si un botón ha sido elegido o seleccionado. 
VISIBLE 
Para indicar si se debe visualizar. 
M UY IM PO RTA N TE 
Para preguntar si un botón de opción está seleccionado se utiliza la 
propiedad Valué. Por ejem plo, para preguntar si el botón N°1 está 
seleccionado se escribe: 
I f O p t i o n l . V a l u é = T r u e t h e n 
También se puede preguntar asi: I f O p t i o n l t h e n 
P a r a s e l e c c i o n a r u n b o t ó n m e d i a n t e un c o m a n d o s e l e 
a s i g n a e l v a l o r TRUE y p a r a q u i t a r l a s e l e c c i ó n s e l e 
a s i g n a e l v a l o r FALSE, E j e m p l o : 
O p t i o n l . v a l u e = T r u e o O p t i o n l = T r u e Lo s e l e c c i o n a . 
O p t i o n l , v a l u e = F a l s e o O p t i o n l = F a l s e Q u i t a l a s e l e c c i ó n . 
ÉÉÉ^ 236 G r u p o E d it o r ia l Megabyte 
CAPÍTULO V: Ingreso Personalizado de Datos 
A P L IC A C IO N D E S A R R O L L A D A N° 33 
Si es Soltero debe pedir la edad y el N- de hermanos y su sueldo debe ser 
S/. 200.00. Si es Casado debe pedir el tiempo de casado y el N- de hijos, su 
sueldo debe ser S/. 250.00. 
Nombre 
Estado Civil : 
<• Soltero (a) 
C Casado [a) 
Sueldo 
Edad 
N! de hermanos 
n s i r 
Nuevo 
Salir 
í:i J n jx j 
Nombre | 
- Estado Civil:-....... 
r Soltero [a) 
(• Casado [a] 
Nuevo 
Salir 
Sueldo (250.00 
Tiempo de Servicio | 
N! de Hijos I 
PASO N ’ 1: Dibujar los controles. 
Labell |Texti 
Framel Commandl I 
C Optionl 
f ' 0ption2 Command2 
Label2 LabeB 
Label3 |Texl2 
LabeW |Text3 
PASO N° 02: Asignar las propiedades. 
Asigne las propiedades como se muestra en la aplicación planteada.
PASO N° 03: Escribir las instrucciones de los controles. 
P r í v a t e S u b C o n u n an dl_ _ C líck () 
T e x t l = "" 
T e x t 2 = "" T e x t 3 = "" O p t i o n l . V a l u é = 1 
L a b e 13 = " E d a d " 
L a b e l 4 = "Ns d e H e r m a n o s " 
L a b e 1 5 = " 2 0 0 . 0 0 " 
T e x t l . S e t F o c u s 
E n d S u b 
Si el usuario hace un click en el botón N° 1, se cambia el contenido de las etiquetas N° 
1, N° 2 y N° 3 por: Edad, N” de hermanos y 200.00 respectivamente. 
P r í v a t e S u b O p t i o n l _ C l i c k () 
L a b e l 3 = " E d a d " L a b e l 4 = "Ng d e H e r m a n o s " 
L a b e l 5 = " 2 0 0 . 0 0 " 
T e x t 2 . S e t F o c u s 
E n d S u b 
Si el usuario hace un click en el botón N° 2, se cambia el contenido de las etiquetas 
N° 1, N° 2 y N° 3 por: Tiempo de Servicio, N° de hijos y 250.00 
P r í v a t e S u b O p t i o n 2 _ C l i c k () 
L a b e 13 = " T ie m p o d e S e r v i c i o " 
L a b e l 4 = "NB d e H i j o s " 
L a b e l 5 = " 2 5 0 . 0 0 " 
T e x t 2 . S e t F o c u s 
E n d S u b 
Si no desea escribir las instrucciones en el evento Click de los botones de opciones, 
puede agregar un botón de comandos (Command3) que realiza lo mismo: 
P r i v a t e S u b C o m m a n d 3 _ C lic k () 
I f O p t i o n l T h e n 
L a b e 13 = "E d a d " 
L a b e l 4 = "N e d e H e r m a n o s " 
L a b e l 5 = " 2 0 0 .0 0 " 
Text2.SetFocus 
E n d I f 
I f O p tio n 2 T h e n 
L a b e 1 3 = "T ie m p o d e S e r v i c i o " 
L a b e l 4 = "N B d e H i j o s " 
L a b e l 5 = " 2 5 0 .0 0 " 
T e x t 2 . S e t F o c u s 
E n d I f 
End Sub 
VISUAL BASIC como debe ser. . . 
G r u p o E d it o r ia l Megabyte( 
O 
CAPÍTULO V: Ingreso Personalizado de Datos 
A P L IC A C IÓ N D E S A R R O L L A D A N° 34 
Esta aplicación permite ingresar dos valores numéricos y según el botón de 
opción que se elija, se mostrará el resultado. 
Labell 
Label2 
( i exl1 
(• 0 phon1 
C 0pl¡on2 
C 0ption3 
r 0ption4 
|Text2 
Label3 
Label4 
Commandl Command2 
PASO N’ 01: Dibujar los controles. 
OPERACIONES ARITMETICAS P its] 
Valor N * 01 
Valor NS 02 
C Suma 
( " Resta 
r * M ultiplica 
r Divide 
j R E SU LT AD O 
OK SALIR 
PASO N° 02: Asignar las propiedades. 
PASO N° 03: Escribir las instrucciones de los controles. 
Instrucciones de Commandl (OK): 
P r i v a t e S u b C o m m a n d l _ C l i c k ( ) 
I f O p t i o n l T h e n L a b e l 4 = V a l ( T e x t l ) + V a l ( T e x t 2 ) 
I f O p t i o n 2 T h e n L a b e l 4 = V a l ( T e x t l ) - V a l ( T e x t 2 ) 
I f O p t i o n 3 T h e n L a b e l 4 = V a l ( T e x t l ) * V a l ( T e x t 2 ) 
I f O p t i o n 4 T h e n L a b e l 4 = V a l ( T e x t l ) / V a l ( T e x t 2 ) 
E n d S u b
VISUAL BASIC como debe ser. . . 
C H E C K BOX (CAJA DE V ER IFIC A C IO N ): 
P 
Es un control que permite seleccionar una opción. Se diferencia de los botones 
de opciones porque se puede seleccionar varias opciones de un grupo. 
PR IN C IPA LES PR O PIED A D ES DE UN C H EC K BOX: 
Ñ A M E 
Permite asignarle un nombre. Por defecto el nombre es 
Checkl, Check2, Check3 etc. AUGNMENT 
Para indicar la ubicación del texto y de la caja. CAPTION 
Para escribir el texto que acompaña a la caja. ENABLED 
Para indicar si debe estar activo o no. P O N T’ 
Permite seleccionar el tipo, tamaño y estilo de letra. FORECOLOR 
Selecciona un color de la letra. VALUE 
Permite saber si una caja ha sido elegida o seleccionada. VISIBLE 
Para indicar si se debe visualizar. 
A P L IC A C IÓ N D E S A R R O L L A D A N° 35 
Esta aplicación es un ejemplo de cómo se puede usar las cajas de verificación. 
Para preguntar si una caja de verificación está seleccionada se utiliza la 
propiedad Valué. Para preguntar si la caja de verificación N° 1 está 
seleccionada se escribe: 
If Checkl. Valué = 1 Then 
También se puede preguntar de la siguiente manera: 
If Checkl Then 
A l i g u a l q u e l o s O p t i o n B u t t o n s e p u e d e n s e l e c c i o n a r o 
q u i t a r l a s e l e c c i ó n c o n l o s v a l o r e s TR U E o F A L S E : 
C h e c k l . v a l u e = T r u e o C h e c k l = T r u e Lo selecciona. 
C h e c k l . v a l u e = F a l s e o C h e c k l = F a l s e Le quita la selección. 
® ¡ f ^ 2 4 0 G r u p o E d it o r ia l Megabyte 
| > CAPITULO V: Ingreso Personalizado de Datos 
L A A P L IC A C IO N A D E S A R R O L L A R E S: 
tí 
V I S U A L B A S I C 
1 [Negritai f " Subrayado T~ Cursiva 
Salir 
PASO N° 01: Dibujar los controles. 
Ê3 
L a b e l ! 
iCheckl r Check2 
Commandl 
PASO N° 02: Asignar las propiedades. 
ETIQUETA 
Labell CAJA DE VERIF. 
Checkl 
Check2 
Check3 COMANDOS 
Commandl 
CAPTION 
Visual Basic 
CAPTION 
Negrita 
Subrayado 
Cursiva 
CAPTION 
&Salir 
J— Check3 
BORDERSTYLE 
1 - Fixed Single VALUE 
0 - Unchecked 
0 - Unchecked 
0 - Unchecked 
FORMULARIO 
Formi 
CAPTION 
Estilos de Letra
|¡ l l t y ¡ |> VISUAL BASIC como debe ser. . . 
PASO N° 03: Escribir las instrucciones de los controles. 
Si el usuario hace un click en la caja N° 1, se verifica sí está seleccionada. 
Para activar la letra negrita, a la propiedad FontBold de la etiqueta se le 
asigna el valor True. 
P r í v a t e S u b C h e c k l _ C l i c k () 
l ' f C h e c k l . V a l u é = 1 T h e n 
L a b e 1 1 . F o n t B o l d = T r u e 
E l s e 
L a b e l l . F o n t B o l d = F a l s e 
E n d I f 
E n d S u b 
Si el usuario hace un click en la caja N° 2, se verifica sí está seleccionada. 
Para activar la letra subrayada, a la propiedad FontUnderline de la etiqueta 
se le asigna el valor True. 
P r í v a t e S u b C h e c k 2 _ C l í c k () 
I f C h e c k 2 . V a l u é = 1 T h e n 
L a b e l l . F o n t U n d e r l i n e = T r u e 
E l s e 
L a b e l l . F o n t U n d e r l i n e = F a l s e 
E n d I f 
E n d S u b 
Si el usuario hace un click en la caja N° 3, se verifica sí está seleccionada. 
Para activar la letra cursiva, a la propiedad Fontltalic de la etiqueta se le 
asigna el valor True. 
P r í v a t e S u b C h e c k 3 _ C l i c k () 
I f C h e c k 3 . V a l u é = 1 T h e n 
L a b e l l . F o n t l t a l i c = T r u e 
E l s e 
L a b e l l . F o n t l t a l i c = F a l s e 
E n d I f 
E n d S u b 
G r u p o E d it o r ia l Megabyte^ 
CAPITULO V: Ingreso ¡ 
LISTBOX (CAJA DE LISTA) 
Es un control que permite mostrar en una lista un conjunto de elementos o 
alternativas que el usuario puede seleccionar. 
PR IN CIPA LES PR O PIED A D ES DE UN LISTBOX: 
ÑAM E 
Permite asignarle un nombre. Por defecto el nombre es 
Listl, List2, List3 etc. ENABLED 
Para indicar si debe estar activo o no. 
FONT 
Permite seleccionar el tipo, tamaño y estilo de letra. 
FO REC O LO R 
Selecciona un color de la letra. 
LIST 
Permite ingresar los elementos o alternativas que el 
usuario puede elegir de este control. Por cada elemento 
que se ingrese se debe pulsar <CTRL> + <ENTER>. Para 
insertar un elemento, ubique el cursor al inicio de 
donde lo desea insertar y pulse <CTRL> + <ENTER>. 
LISTCOUNT 
Permite obteneí el número de elementos de la lista. 
LISTINDEX 
Para saber el elemento que el usuario ha elegido. El 
valor -1 indica que no se ha seleccionado ningún 
elemento, 0 indica el primer elemento, 1 el segundo,etc. 
SORTED 
Para indicar si los elementos deben salir ordenador. 
STYLE 
Para indicar la forma de seleccionar un elemento: 
O-Standard ó 1-Checkbox. La opción 1-Checkbox permite 
que cada elemento funcione como una casilla de 
verificación. T O O L T IPT E X T 
Para mostrar un mensaje de ayuda cuando el puntero 
del mouse se encuentre sobre el control. 
V ISIB LE 
Para indicar si el control se debe visualizar.
A P L IC A C IO N D E S A R R O L L A D A N° 36 
t * V E N T A D E P A S A J E * « 5 3 * 3 1 
A g e n c ia d e T r a n s p o r t e " S I N R E T O R N O S . A . " 
P a s a je r o ( R u b é n C a s tillo 
D . N .I. | l 6 3 7 4 6 5 7 
D e s t in o : 
L im a ^ 
¡ s e r a s * » — 
P r e c io 1 5 0 .0 0 
P ? [D e s c u e n to ! js.O O 
T ru jillo ----- 
P iu ra 
T O T A L S / . 4 5 . 0 0 
N u e v o j S a lir 
D.N.I, y el lugar de destino que se debe seleccionar de una lista, luego debe 
mostrar en forma automática su precio y opcionalmente un descuento del 
10%. Los lugares de destino y su precio son: Lima S/. 60.00, Chimbóte S/. 
50.00, Trujillo S/. 30.00, Piura S/. 30.00 y Tumbes S/. 50.00. El precio debe 
estar almacenado en un array. 
PASO N° 1 : D ib u jar los controles. 
L a h > a t 3 ----------------------- 
Lat»ol3 j T e x t2 
L a b e l5 L o b o l7 
----- I C h e c k l Lo b o ie 
L a b e l B L a b e I S 
C o m m a n d l | C o m m a n d 2 1 
N O TA : 
La barra de desplazamiento vertical del control List se muestra en forma automática cuando no 
se puede visualizar todos los elementos que contiene. 
PASO N° 02: A signar las propiedades a los controles. 
Ud., está en condiciones de asignar las propiedades a los controles como se 
muestra en la aplicación a desarrollar. Los elementos se ingresan a la lista 
de la misma forma que en un Combo. Las cajas de texto deben estar en 
blanco. 
PASO N° 03: E scrib ir las instrucciones de los controles. 
Definir la variable PRECIO de tipo Array para cinco elementos en la ventana 
de declaración del formulario (General - Declarations). 
‘CINCO ELEMENTO (DE 0 A 4) 
Dim PREClO(5) As Single 
FnrrnRiAr M e g a b y , e « S 
CAPÍTULO V: Ingreso Personalizado de Datos 
Asignar los valores al array; es decir los precios de los pasajes. Se ejecutan 
cuando se activa el formulario. 
Al hacer Doble Click o pulsar F7 en cualquier parte libre del formulario elija 
el evento ACTIVATE. 
Prívate Sub Form_Activate() 
P R E C IO (0 ) 
60 
P R E C IO (1 ) 
5 0 
P R E C IO (2 ) 
3 0 
P R E C IO (3 ) 
3 0 
P R E C IO (4 ) 
5 0 
End Sub 
Instrucciones del Botón Nuevo. 
P r í v a t e S u b C o m m a n d l_ C lic k () 
L i s t l . L i s t l n d e x = 0 
C h e c k l . V a l u é = 0 
T e x t l = "" 
T e x t2 = ” L a b e l 7 = L a b e l8 = 
L a b e l 9 = T e x t l . S e tF o c u s 
End Sub 
Instrucciones de la Casilla de Verificación (CHECK1), para que al activar 
o desactivar el descuento se visualicen los resultados. 
P r í v a t e S u b C h e c k l _ C l i c k () 
D im D e s , T o t A s S i n g l e 
'P r e g u n t a s i t i e n e d e s c u e n t o 
I f C h e c k l T h e n 
D e s = V a l ( L a b e l 7 ) * 1 0 / 1 0 0 
L a b e l 8 = F o r m a t( D e s , " # # 0 .0 0 " ) 
E l seL 
a b e l 8 = 0 
E n d I f 
T o t = V a l ( L a b e l 7 ) - V a l ( L a b e l 8 ) 
L a b e l 9 = F o r m a t ( T o t , " # # 0 .0 0 " ) 
E n d S u b ? 
Instrucciones del Control LIST1, para que al seleccionar un elemento 
(destino), se visualicen los resultados. 
P r í v a t e S u b L i s t l _ C l i c k ( ) ' 
D im N A s I n t e g e r 
D im D e s , T o t A s S i n g l e 
N = L i s t l . L i s t l n d e x 
L a b e l 7 = F o r m a t( P R E C I O (N ) , " # # 0 . 0 0 ”) 
I f C h e c k l T h e n 
D e s = V a l ( L a b e l 7 ) * 1 0 / 1 0 0 
L a b e l 8 = F o r m a t( D e s , " # # 0 .0 0 " ) 
E l seL 
a b e l 8 = 0 
E n d I f 
T o t = V a l ( L a b e l 7 ) + V a l ( L a b e l 8 ) 
L a b e l 9 - F o r m a t ( T o t , " # # 0 .0 0 " ) 
E n d S u b
wæÆ ï VISU A L BASIC como debe ser... 
CALCULWiWSDÍAS DE FERTILIDAD SEGÚN ELMÉTODODELRITMO 
G C liíS MENSTRUALES REGULARES 
Si una mujer tiene ciclos Menstruales Regulares, sus días probables de fertilidad empiezan 
a losódíasde su primer día de menstruación y duran 13 días. Por ejemplo: Si su primer 
día de menstruación fue el 01 de Oct, sus días fértiles empiezan el 7 de Oct y terminan en 
19deOct. 
OCLQ8 MENSTRUALES IRREGULARES 
Para determinar los días probables de fertilidad en mujeres con ciclos Menstruales 
Irregulares, se tiene que saber cuál es el período de días mas largo y mas corto en los 
últimos 6 (seis) ciclos menstruales. A la cantidad de días mas corto se le resta 18 
(dieciocho) para obtener a los cuantos días de su primer día de menstruación empieza 
sus días fértiles y al periodo de días mas largo se le resta 11 (once) para obtener a los 
cuantos días de su primer día de menstruación terminan sus días fértiles. Por ejemplo, 
si el periodo de días mas corto fue de 24 días y el ciclo mas largo fue de 32 días, 
entonces, sus días fértiles empiezan a los seis días de su primer día de menstruación 
(contando uno el primer día de su menstruación) y terminan a los 21 días de iniciado su 
periodo menstrual. 
■». M t T O D O " D E L R I T M O " O M E T O D O " N A T U R A L " 
D I A i» P R O B A R L E S D E E E R T I I ID A D E N 
M i t r . * li u « c ió n l l r g u l . « I M c n i l i u o c i ó n l i i a g u l a i 
r D Ía d o M e n stru ació n : D o m in g o , 2 3 ck» E n e ro d e 2 0 0 0 
•A S P R O B A B L E S E N C IC 
NO FERTILIDAD 
L O M E N S T R U A L R E G 
F E R T IL I D A D 
J L A R D E : .............................. 
NO FERTILIDAD 
2 3 / 0 1 /0 0 2 9 /0 1 /OU 1 1 /0 2 /0 0 
2 4 /0 1 / 0 0 3 0 / 0 1 /0 0 1 2 /0 2 /0 0 
2 5 /0 1 / 0 0 3 1 / 0 1 /0 0 1 3 /0 2 /0 0 
2 6 /0 1 / 0 0 0 1 / 0 2 /0 0 1 4 /0 2 /0 0 
2 7 /0 1 / 0 0 0 2 / 0 2 /0 0 1 5 / 0 2 /0 0 
2 8 / 0 1 /0 0 0 3 / 0 2 / 0 0 — 1 6 /0 2 /0 0 
0 4 / 0 2 /0 0 1 7 /0 2 /0 0 
0 5 / 0 2 /0 0 1 0 /0 2 /0 0 
0 6 / 0 2 /0 0 J T J 1 9 /0 2 /0 0 
FU EN TE O B S T E T R IZ M at a llan a H u rtad o - Cop. 7 5 9 7 S e i v icio d e C o n se je ría IN N P A R E S * C hiciayo 
D IA S P R O B A B L E S D E F E R T IL I D A D E N 
M e n s t r u a c i ó n R é g u l a i M e n s t r u a c i ó n li r é g u l a i 
1 et. D í a d e M e n stru ació n : M a lte s , 0 4 d e E n e ro d e 2 0 0 0 
P e ó o d o m a s c o ito : 2 6 d í a s y p e í io d o m a s largo: 31 d ía s 
D IA S P R O B A B L E S E N C IC L O M E N S T R U A L I R E G U L A R D E . 
N O FERTILID AD F E R T IL I D A D N O FERTILIDAD 
0 4 /0 1 /0 0 
0 5 /0 1 /0 0 
0 6 /0 1 /0 0 
0 7 /0 1 /0 0 
0 8 /0 1 / 0 0 
0190//0011//0000 
1112//0011//0000 
1 3 / 0 1 /0 0 
1 4 / 0 1 /0 0 
1 5 / 0 1 /0 0 
1 6 /0 1 / 0 0 
1 7 /0 1 / 0 0 
1 8 /0 1 / 0 0 
1 9 /0 1 / 0 0 
2 5 /0 1 /0 0 
2 6 / 0 1 /0 0 
2 7 /0 1 /0 0 
2 8 /0 1 /0 0 
2 9 /0 1 /0 0 
3 0 /0 1 /0 0 
3 1 / 0 1 /0 0 
01/0 2 /0 0 
02/02/00 
FU EN TE O B S T E T R IZ : S u s a n a M a ta la n a H u rlad o - C o p 7 5 9 7 S e iv ic io d e C o n se je ría IN N P A R E S - C N d a y o 
Para desarrollar esta aplicación, dibuje en un formulario 2 controles Frame, 2 boto­nes 
de comandos, 4 etiquetas y 3 ListBox. 
► 246 G rupo E ditorial Megabyte^ 
CAPÍTULO V: Ingreso Personalizado de Datos 
i n s t r u c c i o n e s d e l o s b o t o n e s 
B O T Ó N P E R IO D O M E N S T R U A L R E G U L A R 
Prívate Sub Commandl_Click() 
Dim fecha As String 
Dim R, X As Integer 
Listl.Clear : ListíClear : List3.Clear 
fecha = InputBox(“Ingrese la Fecha del Primer Día” + Chr(13) + “ de la 
última menstruación”, “MENSTRUACION REGULAR”) 
If Not IsDate(fecha) Then 
MsgBox “HA INGRESADO UNA FECHA INCORRECTA”, 16, “CUIDADO” 
Else 
R = MsgBox(“ ler. Día de Menstruación + Format(CDate(fecha), “Long 
Date”), 36, “ES LA FECHA CORRECTA”) 
If R = 6 Then 
Labell=” ler. Día de Menstruación:”+Format(CDate(fecha),”Long Date”) 
Frame2 = “DIAS PROBABLES EN CICLO MENSTRUAL REGULAR DE: “ 
For X = 0 To 5 
Listl.Addltem (CDate(fecha) + X) 'DIAS PROBABLES DE NO FERTILIDAD 
Next X 
For X = 6 To 18 
List2.AddItem (CDate(fecha) + X) ‘DIAS PROBABLES DE FERTILIDAD 
Next X 
For X = 19 To 27 
List3.AddItem (CDate(fecha) + X) ‘DIAS PROBABLES DE FERTILIDAD 
Next X 
End If 
E ndlf 
End Sub 
BOTÓN PERIODO MENSTRUAL REGULAR Prívate Sub Command2_Click() 
Dim fecha As String 
Dim L, C, INICIO, FINAL, R, x As Integer 
C = Val(InputBox(“Número de días más corto”,"DE LOS ULTIMOS 6 CICLOS MENSTRUALES")) 
L = Val(InputBox(“Número de días más largo “, “DE LOS ULTIMOS 6 CICLOS MENSTRUALES')) 
INICIO = C - 18 
FINAL = L - 11 
MsgBox “El período fértil empieza a los “ & INICIO & “ días de la menstruación” & Chr(13) & “ y 
termina después de “ & FINAL & “ dias de tu mestruación”, 64, “CUlDAIX V’ 
fecha=InputBox(“ingresa ek día de tu última menstruación”,’’MENSTRUACION IREGULAR”) 
If Not IsDate(fecha) Then 
MsgBox “HA INGRESADO UNA FECHA INCORRECTA ”, 16, “CUIDADO” Else 
If R = 6 Then 
Labell = “ 1er. Día de Menstruación: “ + Format(CDate(fecha), “Long Date”) 
Labell = Labell & Chr(13) & “Periodo mas corto: “ & C & " días y 
periodo mas largo: “ & L & “ días” 
Frame2 = “DIAS PROBABLES EN CICLO MENSTRUAL IREGULAR DE: “ 
For x = 0 To INICIO - 2 
Listl.Addltem (CDate(fecha) + x) ‘DIAS PROBABLES DE NO FERTILIDAD 
Next x 
For x = INICIO - 1 To FINAL 
List2.AddItem (CDate(fecha) + x) ‘DIAS PROBABLES DE FERTILIDAD 
Next x 
For x = FINAL + 1 To 30 
List3.AddItem (CDate(fecha) + x) ‘DIAS PROBABLES DE FERTILIDAD 
Next x 
End If 
End If 
End Sub
iÉÉÉÍÉÍ» VISUAL BASIC como debe ser... 
UPDOW N 
1: 
Este control muestra dos botones con flechas que nos permiten incrementar 
o disminuir un valor. Se puede relacionar o no con otro control como por 
ejemplo con una caja de textos para que funcionen como un solo control. 
PR IN C IPA LES PR O PIED A D ES D E C O N TR O L UPDOW N: 
Las propiedades principales del control se obtiene con sólo elegir la propiedad 
Custumize (personalizado). Se visualiza una ventana con tres hojas o fichas: 
General, Relaciones y Desplazamiento. 
la^TTiT-Tl-'MdJ I II I I I I I ■ ■ ■ ■ ■ ■ ■ ■ ■ E l 
General | Relaciones | Desplazamiento j 
Qriontntíon |0 c-c20r¡©n»«t¡onV©r»icoil _~] 
OLEDrouMode jü - cc20LEDropNone j - ] 
_J C a n c e la r j ______________| A y u d a 
A L IG M E N T 
Coloca el control UpDown a la derecha o izquierda del control con el que se 
ha relacionado. 
O R IE N T A T IO N 
Coloca el control en forma vertical o en forma horizontal 
O L E D R O P M O D E 
Devuelve o establece el modo en que un componente de destino realiza las 
operaciones de colocación. 
E l contenido de la hoja Relaciones es: 
G e n e ra l R e la c io n e s J D e s p la za m ie n to j 
B u d d y C o n t r o l | 
f~ ÍAutoBu¿cíyj í~ 
I □ 
I A c e p ta r | C a n c e la r | A p liç a r j A y u d a 
248 G r u p o E d it o r ia l Megab 
CAPÍTULO V: Ingreso Personalizado de Datos 
B U D D Y C O N TRO L 
Se utiliza para escribir el nombre de un control que se encuentre dibujado en 
el formulario y con el cual desea relacionar el control UpDown. Por ejemplo, 
si tiene dibujado 5 cajas de texto y desea relacionar el control con Text3, 
entonces debe escribir Text3 o el nombre que le a asignado en Ñame. 
AUTOBUDDY 
Permite que el control UpDown se relacione automáticamente con el control 
que usted ha dibujado inmediatamente antes o despues de dibujar del 
control UpDown. 
SYNCBUDDY 
Se utiliza para indicar si la propiedad Valué del control UpDown debe estai 
sincronizada con la propiedad predeterminada o seleccionada del control 
con el que se encuentra relacionado. Si se relaciona con una caja de textos, 
la propiedad predeterminada es Text, esto quiere decir que en la propiedad 
Text de la caja de texto se muestra el valor la propiedad Valué del control 
UpDown. 
BU DD YPROPERTY 
Se utiliza para seleccionar una propiedad para la relación diferente a la 
predeterminada. 
El contenido de la hoja Desplazamiento es: 
r-j'.i.mi'. f 'i'i'.mumiii.Kiii.i-'— m ^ — í^ n — a— ■ i 
G enera! | R elaciones D e s pla za m ien to | 
In te iva lo d e d e s p la z a m ie n to , 
y e lu e M in: M a x 
B fó fu l r Wmp 
T a s a d e d e s p la z a m ie n to 
In c re m e n t j 
! ir' 
| A ceptar j Cancetai' J Aphj. y | A y ix l . 
VALUE 
Contiene un valor que depende de los botones donde se hizo clíck. Este 
valor se visualiza en el control relacionado. 
M IN 
Se utiliza para indicar el valor mínimo para el control UpDown. 
M AX 
Se utiliza para indicar el valor máximo para el control UpDown. 
WRAP 
Esta propiedad permite establecer si el valor regresa al valor mínimo cada 
vez que se llegue al valor máximo o viceversa. 
IN C R E M E N T 
Esta propiedad permite establecer el valor del incremento o decremento 
para cada vez que se haga clik en los botones del control UpDown.
íM B á ? VISUAL BASIC como debe ser... 
M A SK ED B O X 
##| 
Este control permite ingresar y visualizar datos con un formato determinado. 
Si no le asignamos ningún formato de ingreso o visualización se comporta de 
una manera similar al de una caja de textos. 
PR IN C IPA LES PR O PIED A D ES D EL C O N TR O L M ASKEDBOX: 
FORMAT 
Sirve para seleccionar el formado de visualización de los 
datos. Estos datos pueden ser de tipo numérico, fecha, hora 
y texto. Por ejemplo: Formato monetario $#,##0.00; ($#,##0.00) Utiliza separador de miles; presenta los números negativos entre paréntesis. 
Formato de porcentaje. 0% 
Multiplica el valor por 100 y agrega un signo de porcentaje. Formato de fecha largo, dddddd 
Ejemplo: Domingo 13 de Junio de 1999 Formato de fecha medio, dd-mrm-yy 
Ejemplo: 13-Jun-99. Formato de fecha corto, ddddd 
Ejemplo: 13/06/99. Formato de hora largo, tttt 
Ejemplo: 1:30:42 A.M. Formato de hora medio. hh:mm AM/PM 
Ejemplo: 1:30 A.M. Formato de hora corto. hh:mm 
Ejemplo: 1:30. 
MASK 
Sirve para asignar un formado para ingresar datos. 
Los caracteres más utilizados son: 
# .- Indica que sólo se deben ingresar dígitos. 
? .- Indica que sólo se deben ingresar letras. 
. .-Se utiliza para separar decimales. 
, .- Se utiliza para separar miles. 
: .-Se utiliza para separar en las horas. 
/ .-Se utiliza para separar en las fechas. 
En los cuatro caracteres anteriores verifique la configuración 
de su computadora (Configuración regional). 
A . -- Indica que sólo se deben ingresar letras o números. 
> .- Convierte las siguientes letras a mayúsculas. 
< .- Convierte las siguientes letras a minúsculas. 
C .- Indica que sólo debe aceptar espacios. 
 .- Permite incluir cualquier carácter anterior dentro de 
la máscara. 
2 5 0 G rupo E ditorial M e g a b y t e < | ¡ ¡ ¡ ^ 
> CAPÍTULO V: Ingreso Personalizado de Datos Í s S S Í Í P 
Ejemplo: Si en la propiedad Mask Ud., escribe: 
#### .- Permite ingresar cuatro dígitos. 
???? .- Permite ingresar cuatro letras. 
##??## .- Permite ingresar dos dígitos, luego dos letras y 
luego dos dígitos mas. 
##/##/## o ##-##-## .- Facilita el ingreso de un fecha, pero 
no controla si la fecha ingresada es correcta. 
##:##.## .- Facilita el ingreso de las horas, minutos y 
segundos, pero no controla si se ingresada correctamente. 
###,###.## .- Facilita el ingreso de cantidades utilizando 
miles y dos decimales. 
>?<??????? .- Permite ingresar ocho letras, la primera la 
convierte a mayúscula y el resto en minúsculas. 
<####> .- Permite ingresar cuatro dígitos entre los signos 
mayor y menor. 
##CAAAAA .- Permite ingresar dos dígitos, -un espacio (opcional) 
y luego cinco valores alfanuméricos (letras o números). 
NOTA: Para borrar dentro de un programa el contenido de este control, primero debe borrar lo que 
contiene en la propiedad Mask y luego se borra lo que contiene la propiedad Text. 
MaskedBox 1 .Mask ="" 
MaskedBox 1 .Text="" 
A L L O W P R O M P T 
Se utiliza para indicar el carácter de petición se puede considerar como un 
ingreso válido. 
P R O M P T C H A R 
Se utiliza para indicar el carácter de petición de los datos. El carácter 
predeterminado es el subrayado (_), pero Ud., puede utilizar cualquier otro 
carácter. 
MUY IM PO RTA N TE 
Si no desea visualizar ningún carácter de petición de datos, borre el carácter 
que se encuentra en la propiedad PromptChar y luego pulse la tecla ALT y 
el número 255. 
P R O M P T IN C L U D E 
Se utiliza para indicar si al referirnos al contenido de la propiedad Text se va 
a tomar en cuenta el carácter de petición. 
NOTA: 
( uando se ingresa un valor incorrecto; es decir, no cumple el formato establecido, entonces 
se ejecutan las instrucciones del evento ValidationError.
como debe ser... 
APLICACION DESARROLLADA N° 37 
iü, IN G R E S O DE P A C IE N T E S E s ì z i 
N o m b re d e l P a c ie n te jjO R G E R IO S 
F e c h a d e In g re s o | 0 4 / 0 8 / 1 9 9 9 - 
H o ra d e In g re s o (2 4 H s .) 1 6 : 2 0 : 1 5 - I 3 
S a la N s [ I - 1 2 ) 
A s e g u ra d o (S /N ) ? 
D a lo s d e l S iste m a : 
F e c h a j M ié rc o le s 4 d e A g o s to d e 1 9 9 9 
A c tu a liz a r e l S is te m a j] 
A c tu a liz a r e l S is te m a 
N u e v o 
Salir 
H o ra 1 6 :2 0 :3 0 
Debe tener las siguientes características: 
1. La Fecha y la hora de ingreso se pueden modificar con el control UpDown. 
2. Para actualizar la hora el usuario debe ubicar primero el cursor en las horas, 
minutos o segundos. En forma predeterminada se modifican los segundos. 
3. Para ingresar la sala se deben utilizar un caja de textos y un control UpDown. 
4. En Asegurado sólo se debe aceptar las letras S(si) o N(no). 
5. Los botones Actualizar el Sistema, deben actualizar la fecha y hora del 
sistema. 
6. Se deben visualizar la fecha y hora del sistema. 
PASO N° 1: Dibujar los controles. 
NOTA: Cuando dibuje los controles MaskedBox, no se visualizaran los nombres 
(salen en blanco). 
S i G rupo E ditorial M e g a b y t e « * 
CAPITULO V: Ingreso Personalizado de Datos ^ ¡ ¡ 
PASO N° 2: Asignar las propiedades a los controles. 
AL formulado, frame, etiquetas y botones de comandos asígneles la propiedad 
Caption como se muestra en la aplicación a desarrollar. 
Las cajas de texto: Text2, Text4 y Textó deben tener en su propiedad 
BorderStyle el valor 0-None y en su propiedad Width el valor 200. 
Las cajas de texto: Text3 y Text5 deben tener en su propiedad BorderStyle 
el valor 0-None, en su propiedad Width el valor 90 y en su propiedad Texl 
dos punto (:). 
Las cajas de texto desde Text2 hasta Textó, deben estar lo mas juntas 
posibles. Esto lo puede lograr usando la propiedad Left. 
Los controles UpDown 1 y UpDown2 no deben tener ninguna propiedad 
porque no están ligados a ningún control, trabajan en forma independiente. 
El control UpDown3 está ligado al control Text7, por lo tanto, debe tener las 
siguientes propiedades: 
UPDOWN BUDDYCONTROL SYNCBUDDY BUDDYPROPERTY MIN MAX WRAP 
UpDown3 Text7 True Predeterminado 1 12 True 
Las propiedades de los controles MASKEDBOX son: 
MASKEDBOX 
FORMAT 
MASK 
ENABLED 
MaskedBoxl 
En Blanco 
#/##/#### 
True 
MaskedBox2 
En Blanco 
>? 
True 
MaskedBox3 
dddddd 
En Blanco 
False 
Maskedbox4 
ttttt 
En Blanco 
False 
PASO N° 3: Escribir las instrucciones para los controles. 
Definir las variables a nivel de formulario: 
jjl Proyeclol - Form! (Código) m u 
(General) (Declaraciones) 
O ption E x p lic it 
Dim CAJA, HORAS, MINUTOS, SEGUNDOS As Byte 
Dim FECHA As Date
Instrucciones del Procedimiento M UESTRATIEM PO 
S u b MUESTRATIEMPO () 
T e x t 2 = F o rm a t(H O R A S , " 0 0 " ) 
T e x t 4 = F o rm a t(M IN U T O S , " 0 0 " ) 
T e x t 6 = Form at(SEG U ND O S, " 0 0 " ) 
E n d S u b 
Instrucciones del evento Form_activate 
P r í v a t e S u b F o r m _ A c t i v a t e () 
T i m e r l . I n t e r v a l = 1 000 ' A c t i v a l a s i n s t r u c c i o n e s d e l T im e r 
CAJA = 6 'L o s s e g u n d o s d e m o d i f i c a n e n fo rm a p r e d e t e r m i n a d a 
FECHA = D a te 
M a s k E d B o x l. T e x t = Format(FECHA, " d d /m m / y y y y " ) 
M a skE d B ox2. T e x t = "N" 
M askE dB o x3 . T e x t = D a te 'M u e s t r a l a F e cha d e l S i s t e m a 
M a skE dB o x4 . T e x t = T im e 'M u e s tr a l a Hora d e l S i s t e m a 
HORAS = H o u r (T im e ) 
MINUTOS = M i n u t e ( T i m e ) 
SEGUNDOS = S e c o n d ( T im e ) 
MUESTRATIEMPO 
T e x t l = "" 
T e x t 7 = 1 
T e x t l . S e t F o c u s 
E nd S u b 
Instrucciones del Control Timer 
'Muestra la hora del sistema P r í v a t e S u b T i m e r l _ T i m e r () 
M a s k E d B o x 4 . T e x t = T im e 
E n d S u b 
Instrucciones del Control UpDownl 
'A l h a c e r c l i c k e n l a f l e c h a h a c i a a b a j o d i s m i n u y e l a f e c h a . 
P r í v a t e S u b U p D o w nl_D o w nC lick() 
FECHA = C V D a te ( M a s k E d B o x l.T e x t) - 1 
M a s k E d B o x l. T e x t = Format(FECHA, " d d /m m /y y y y " ) 
E nd S u b 
'A l h a c e r c l i c k e n l a f l e c h a h a c i a a r r i b a a u m e n ta l a f e c h a . 
P r í v a t e S u b U p D o w n l_ U p C lic k () 
FECHA = C V D a te ( M a s k E d B o x l .T e x t) + 1 
M a s k E d B o x l. T e x t - Format(FECHA, " d d / m m / y y y y " ) 
E nd S u b 
2 5 4 G rupo .............R,al M e g a b y t e # * 
CAPÍTULO V: Ingreso Personalizado de Datos 
Instrucciones del Control UpDown2 
Al hacer click en la flecha hacia abajo disminuye las horas, los minutos o 
segundos, dependiendo de donde se encuentre el cursor. En forma 
predetermina disminuyen los segundos. 
P r í v a t e S u b U p D o w n 2 _ D o w n C lic k () 
S e l e c t C a s e CAJA 
C a s e 2 
HORAS = HORAS - 1 
I f HORAS = - 1 T h e n HORAS = 23 
C a s e 4 
MINUTOS = MINUTOS - 1 
I f MINUTOS = - 1 T h e n MINUTOS = 59 
C a s e 6 
SEGUNDOS = SEGUNDOS - 1 
I f SEGUNDOS = - 1 T h e n SEGUNDOS = 5 9 
E n d S e l e c t 
MUESTRATIEMPO 
E n d S u b 
Al hacer click en la flecha hacia arriba aumentan las horas, los minutos o 
segundos, dependiendo de donde se encuentre el cursor. En forma 
predetermina aumentan los segundos. 
P r í v a t e S u b U pD ow n2_U pC lick() 
S e l e c t C a se CAJA 
C a se 2 
HORAS = HORAS + 1 
I f HORAS = 24 T hen HORAS = 0 
C a se 4 
MINUTOS = MINUTOS + 1 
I f MINUTOS = 6 0 Then MINUTOS = 0 
C a se 6 
SEGUNDOS = SEGUNDOS + 1 
I f SEGUNDOS = 6 0 Then SEGUNDOS = 0 
E nd S e l e c t 
MUESTRATIEMPO 
End S u b 
Instrucciones del Botón Actualizar el Sistema (Fecha) 
P r í v a t e S u b C o m m a n d l_ C lic k () 
D a t e = C V D a te (M a s k E d B o x l.T e x t) 
M a skE d B ox3. T e x t = D a te 
End S u b 
I nstrucciones del Botón Actualizar el Sistema (Hora) 
P r í v a t e S u b C o m m a n d 2 _ C lic k () 
HORAS = V a l ( T e x t 2 ) 
MINUTOS = V a l ( T e x t 4 ) 
SEGUNDOS = V a l ( T e x t 2) 
Time = CVDate ( S t r (HORAS) + ": "+Str (MINUTOS) + *: "+Str (SEGUNDOS)) 
M askE d B ox4. T e x t = Tim e 
End S u b
Í ¡ f Í ^ VISUAL BASIC como debe ser. . . < 3§ 
Instrucciones del Control M askEdBoxl 
Al dejar de ingresar la fecha de ingreso, verifica que la fecha es correcta. 
P r í v a t e S u b M a s k E d B o x l_ L o s tF o c u s () 
I f N o t ( I s D a t e ( M a s k E d B o x l . T e x t ) ) Then 
M sgBox "No e s una f e c h a C o r r e c t a " , 1 6, " R e c t i f i q u e " 
M a s k E d B o x l. S e t F o c u s 
End I f 
Erid S u b 
Instrucciones del Control M askEdBox2 
Permiten que sólo se ingresen las letras N o S. 
P r í v a t e S u b M a s k E d B o x 2 _ K e y P r e s s ( K e y A s c ii A s I n t e g e r ) 
Dim K A s I n t e g e r 
K = A s e (U C a se(C h r (K e y A s c i i ) ) ) 
I f N o t (K = 83 Or K = 78 Or K = 2 7 Or K = 13 Or K = 8) Then 
K e y A s c i i = 0 'I n g n o r a e l c a r a c t e r i n g r e s a d o 
E nd I f 
End S u b 
Instrucciones de las Cajas de Texto 
Al ubicar el cursor en una caja de textos la variable Caja indica dónde de 
hizo Click y selecciona lo que contienen. 
P r i v a t e S u b T e x t2 _ G o tF o c u s () 
CAJA=2 'H i z o c l i c k e n T e x t 2 
T e x t 2 . S e l S t a r t = 0 
T e x t 2 . S e l L e n g t h = 
L e n ( T e x t 2) 
T e x t 2 = T e x t 2 . S e l T e x c 
E nd S u b 
P r i v a t e S u b T e x t 4 _ G o t F o c u s () 
CAJA=4 'H i z o c l i c k e n T e x t 4 
T e x t 4 . S e l S t a r t = 0 
T e x t 4 . S e l L e n g t h = L e n ( T e x t 4 ) 
T e x t 4 = T e x t 4 . S e i T e x t 
End S u b 
P r i v a t e S u b T e x t 6 _ G o t F o c u s () 
CAJA=6 'H i z o c l i c k e n T e x t 6 
T e x t 6 . S e l S t a r t - 0 
T e x t 6 . S e l L e n g t h = L e n ( T e x t ß ) 
T e x t 6 = T e x t 6 . S e i T e x t 
E nd S u b 
P r i v a t e S u b T e x t7 _ G o tF o c u s () 
T e x t 7 . S e l S t a r t = 0 
T e x t 7 . S e l L e n g t h = L e n ( T e x t 7 ) 
T e x t 7 = T e x t 7 . S e i T e x t 
E n d S u b 
I n s t r u c c i o n e s d e l B o t ó n Nuevo P r i v a t e S u b C o n m a n d 3 _ C l i c k () 
F o r m _ A c t i v a t e 
E n d S u b 
E l Botón salir debe tener la instrucción END. 
2 5 6 G r u p o E d i t o r i a l Megabyte 
CAPÍTULO V: Ingreso Personalizado de Datos '% 
INSTRUCCIÓN SENDKEYS 
Hace que Visual Basic considera que se han pulsado teclas como si 
hubiésemos utilizado el teclado. Esto quiere decir que con esta instrucción 
podem os presionar autom áticam ente las teclas ENTER, ESCAPE, 
BACKSPACE, TAB, etc., o escribir algún texto sin que el usuario, es decir, 
la persona que esta usando la computadora lo haga. Por ejemplo, para enviar 
el texto Visual, se escribe: SendKeys "Visual” 
Los signos más(+), intercalación(A), porcentaje(%), tilde(~), los paréntesisO 
y las teclas especiales deben de estar entre llaves ({}). Debe utilizar el 
nombre correcto de las teclas especiales en mayúsculas o minúsculas. 
TECLA 
NOMBRE 
TECLA 
NOMBRE 
RETROCESO 
{BACKSPACE}, {BSJ 
INSERT 
{INSERT} o {INS} 
INTER 
(BREAK) 
FLECHA IZQ 
{LEFT} 
BLOQMAYÚS 
¡CAPSLOCKj 
BLOQ NÚM 
{NUMLOCK} 
SUPR 
(DELETE} o (DEL) 
RE PAG 
{PGDN} 
FLECHA ABAJO 
(DOWN} 
AVPÁG 
{PGUP} 
FIN 
(END) 
IMPR PANT 
{PRTSC} 
ENTRAR 
{ENTER}o ~ 
FLECHA DER 
{RIGHT} 
ESC 
{ESC} 
BLOQ DESPL 
{SCROLLLOCK} 
AYUDA 
{HELP} 
TAB 
{TAB} 
INICIO 
(HOME) 
FLECHA ARRIBA {UP} 
Las teclas de función Fl, F2, etc., tienen el mismo nombre. 
Ejemplos: 
Las siguientes instrucciones ubican el cursor en Textl y pulsan en 
forma automática la tecla TAB. 
Textl.setfocus 
Sendkeys "{TAB}" 
Las siguientes instrucciones ubican el cursor en el Command2 y pulsan 
en forma automática la tecla ENTER que equivale a hacer click, por lo 
tanto ejecutarán las instrucciones que se encuentran en dicho botón 
de comandos. 
Command2.SetFocus 
SendKeys ''{enter}" 
La siguiente instrucción pulsa en forma automáticas las teclas 'Í’AB y 
ENTER: 
SendKeys "{tab}{enter}" 
Para combinar las teclas con CTRL, MAYÚS (SHIFT) y ALT, debe escribir 
primero el código de la tecla: 
CTRL (CONTROL) A MAYÚS (SHIFT) + ALT %. 
Y luego el nombre de la tecla que desea entre paréntesis. Por 
ejemplo, La siguiente instrucción pulsa en forma automática F4, 
manteniendo presionada la tecla ALT. S e n d K e y s "% ({F 4}) “ 
La siguiente instrucción mantiene presionada la tecla Shift, mientras 
escribe la palabra trabajo. S e n d K e y s "+ ( t r a b a j o ) " 
Se puede indicar también la cantidad de veces que desea que se pulse 
la tecla. Por ejemplo, la siguiente instrucción pulsa 6 veces la 
tecla BACKSPACE: S e n d K e y s " (B S 6} "
i y,SY. VIL BA SIC como debe ser. 
A P L IC A C IO N D E SA R R O L L A D A N° 38 
Esta aplicación permite ingresar datos, pero tiene un botón que hace una 
demostración de cómo ingresarlos. 
Nombre 
E d ad 
D irección 
T eléfoho 
r 
(Demostración 
Estudios j Primaria 
N u evo S a lir 
PASO N° 1: Dibujar los controles. 
-IPI *1 
Labell 
Label2 
Label3 
Labe!4 
LabeIS 
¡T extl 
|T e xt2 
|T e xt3 
| f ext4 
Command3 
Com bol 
Comm and! 
" 3 : : 
Comm and2 
PASO N° 2: Asignar las propiedades a los controles. 
A las etiquetas y botones de comandos asígneles su propiedad Caption como 
se muestra en la aplicación a desarrollar. 
El Com bol debe tener en su propiedad List, los valores: Prim aria, 
Secundaria y Superior. 
PASO N" 3: Escribir las instrucciones para los controles. 
Definir las variables a nivel de formulario. 
P u b l i c DATO, Y, N A s B y t e 
P u b l i c NOMBRE, EDAD, D IRECCIO N, TELEFONO A s S t r i n g 
Procedimiento Cambio 
S u b CAMBIO () 
DATO = DATO + 1 
Y = 0 
S e n d K e y s " { TAB}' E n d S u b 
258 
Instrucciones del botón Nuevo 
P r í v a t e S u b C o m m a n d l _ C l í c k () 
F o r m _ A c t i v a t e 
E n d S u b 
G r u p o E d it o r ia l Megabyte* 
Instrucciones del procedimiento Form_Activate 
P r i v a t e S u b F o r m _ A c tiv a te () 
Rem D a to s a v i s u a l i z a r en l a d e m o s tr a c ió n 
NOMBRE = "OLGA UBILLUS D. " 
EDAD = "25 ANOS" 
DIRECCION = "A v. IMELDA LOPEZ 2 8 5 " 
TELEFONO = "2 2 2 3 2 4 " 
DATO = 1 
Y = 0 
T e x t l = : T e x t2 = "" : T e x t3 = "" : T e x t4 = 
C o m b o l. L i s t l n d e x = 0 : T e x t l . S e tF o c u s 
E nd S u b 
Instrucciones del botón Demostración. 
P r i v a t e S u b C o m m a n d 3 _ C lic k () 
F o r m _ A c tiv a t e 
C om m andl. E n a b le d = F a ls e 
Command2. E n a b le d = F a ls e 
Command3. E n a b le d = F a ls e 
T im e r 1 . I n t e r v a l = 10 0 
E nd S u b 
Instrucciones del-control Tim erl 
P r i v a t e S u b T im e r l_ T im e r () 
Y = Y + 1 
S e l e c t C a se DATO 
C a se 1 
S e n d K e y s M id (NOMBRE, Y, 1) 
I f Y = L e n (NOMBRE) T hen CAMBIO 
C a se 2 
S e n d K e y s M id (EDAD, Y, 1) 
I f Y = L e n (EDAD) T h en CAMBIO 
C a se 3 
S e n d K e y s M id (DIRECCION, Y, 1) 
I f Y = L en (DIRECCION) T hen CAMBIO 
C a se 4 
S e n d K e y s M id (TELEFONO, Y, 1) 
I f Y = L en (TELEFONO) T hen CAMBIO 
C a se 5 
T i m e r l . I n t e r v a l = 700 'A m p lia e l i n t e r v a l o d e tie m p o 
S e n d K e y s " ( { f 4 } ) " 'M u e s tr a l o s e le m e n t o s d e l Combol 
DATO = DATO + 1 
C a se 6 
S e n d K e y s " ( { dow n})" DATO = DATO + 1 
C a se 7 S e n d K e y s " ( {dow n})" DATO = DATO + 1 
C a se E l s e 
T i m e r l . I n t e r v a l = 0 
C om m andl. E n a b le d = T r u e 
Command2. E n a b le d = T r u e 
Command3.E n a b le d = T r u e 
C om m andl. S e tF o c u s 
E nd S e l e c t 
E nd Su b 
2 5 9 « ¡ g »
VISUAL BASIC como debe ser.. 
ARRASTRAR Y COLOCAR 
Para que usted pueda desarrollar programas donde se permita Arrastrar y 
Colocar Objetos, primero debe saber siguiente: 
EVENTO DRAGDROP 
Es un evento cuyas instrucciones que contiene se ejecutan cuando se termina 
el proceso de Arrastrar y Colocar. 
Recibe normalmente tres valores en las siguientes variables: 
SOURCE: Es una variable que representa al control que se esta arrastrando. 
Puede utilizar esta variable para asignar valores a las propiedades de dicho 
control. 
X: Es una variable que representa la posición Horizontal del puntero del mouse. 
Y: Es una variable que representa la posición Vertical del puntero del mouse. 
Si trabajamos con array de controles también devuelve un valor en la variable 
INDEX que representa al N° del control del array que se está utilizando. 
EVENTO DRAGOVER 
Es un evento cuyas instrucciones que contiene se ejecutan cuando el proceso 
de Arrastrar y Colocar se esta realizando. 
Recibe los mismos valores que el evento DragDrop, pero además: 
STATE: Es una variable que representa cuál es la situación del control que 
se esta arrastrando en el control de destino. Devuelve los valores 1, 2 ó 3. 
0 : El control que se está arrastrando entra al control destino. 
1 : El control que se está arrastrando sale del control destino. 
2: El control que se está arrastrando se ha movido sobre el control destino. 
PROPIEDAD DRAGMODE 
Cuando un control tiene esta propiedad se utiliza para indicar cómo se debe 
iniciar el proceso Arrastrar y Colocar. 
Si se le asigna el valor 0 (Manual) se necesita utilizar el método Drag para 
iniciar el proceso. 
Si se le asigna el valor 1 (Automático) el proceso se inicia automáticamente 
cuando usted lo requiera. 
MÉTODO DRAG 
Este método se utiliza para iniciar, terminar o cancelar un proceso de 
Arrastrar y Colocar. Su sintaxis es: 
Nombre del Control.Drag Valor 
El valor puede ser: 
0 : Cancela el proceso de Arrastrar y Colocar. 
1 : Inicia el proceso de Arrastrar y Colocar. 
2 : Termina el proceso de Arrastrar y Colocar. 
La siguiente aplicación muestra un ejemplo de Arrastrar y Colocar: 
260 G r u p o E d it o r ia l Megabyte ^ ||i ||| 
O 
CAPÍTULO V: Ingreso Personalizado de Datos 
A P L IC A C IO N D E SA R R O L L A D A N° 39 
Esta aplicación consiste en el juego “TRES EN RAYA” para lo cual se 
utiliza el proceso de Arrastrar y Colocar. 
yjS*í 
ür~? mr r ■**f*e« 
ix : r p ^ 
■ ... ..... . 
p B t m & x W 01 corneto 
j& lí ix a Muela 
PASO N° 1: Dibujar los controles. 
Picturel Picture2 Array de Pictureó Picture3 Picture4 
(de0a8) 
Hcture5 ■ 
Labell 
Label3 
jT ex tl 
mm 
Labe(2 
LabeM 
IT ext2 
Frame4 
r Check! 
-Picture7 
PASO N° 2: Asignar las propiedades. 
Coloque el Picture2 sobre el Picturel y el Picture4 sobre el Picture3. 
Sólo al Picture5 y Picture7 asigneles en su propiedad DragMode el valor I 
(Automático). Los gráficos utilizados en la propiedad picture de algunos 
controles son: Face03.ico (Alegre), Face04.ico (Triste), House.ico (Casa), 
Match.ico (Fuego), TrffclOa.ico (Semáforo), EraseOl .ico (Borrador). Si no 
los tiene utilice cualquier otro. 
A los otros controles asigneles las propiedades como se indica en la 
aplicación.
Í S Í ¡ ^ VISUAL BASIC como debe ser. . . 
PASO N° 3: Escribir las instrucciones para los controles 
Instrucciones del botón Nuevo Juego. 
Private Sub Commandl_C lick() 
Dim x As Byte 
Rem Oculta las figuras alegre y triste 
Picture 1. Visible = False 
Picture2.Visible = False 
Picture3.Visible = False 
Picture4.Visible = False 
Rem Limpia el tablero del tres en raya 
For x = 0 To 8 
Pictureófx) = LoadPicture("") 
Next x 
Rem Pregunta quién juega primero 
I f Check2 Then 
Frame ¡.Enabled = True 
Frame 3. Enabled = False 
ElseF 
rame 1. Enabled = False 
Frame3. Enabled - True 
End I f 
Rem Activa el tablero del tres en raya 
Frame2. Enabled = True 
End Sub 
Instrucciones del botón Inicializar el Puntaje. 
Private Sub Com mand!_Click() 
Labell = 0 
Label2 = 0 
End Sub 
Instrucciones del C heckl 
Private Sub C heckl jC lic k () 
I f Checkl Then 
Labell .Visible = True 
Label2.Visible = True 
Else 
Label ¡.Visible = False 
luibel2.Visible = False 
End I f 
End Sub 
Instrucciones del Form_Activate 
Prívate Sub Form_Activatef) 
Checkl. Valué = 1 
Check2. Valué - 1 
Com mandl _Click 
End Sub 
262 G r u p o E d it o r ia l Megabyte 
CAPÍTULO V: Ingreso Personalizado de Datos 
Instrucciones del Array Pictureó (Programa en cualquiera de ellos) 
Private Sub Picture6_DragDrop(Index As Integer, Source As Control, xA s Single, 
Y As Single) 
Rem Coloca la figura 
Pictureóf Index) = Source 
Rem Activa el jugador de turno 
If Source = Picture5 Then 
Frame ¡.Enabled = False 
Frame 3. Enabled = True 
Else 
Frame 1. Enabled - True 
Frame 3. Enabled = False 
End If 
Rem Pregunta si hubo un ganador (Tres en raya horizontal) 
IfPictureó(O) = Pictureóf 1) And Picture6( 1) = Pictureóf2) Then Call ganadorfO) 
If Pictureóf 3) = Pictureóf4) And Pictureóf 4) = Pictureóf 5) Then Call ganado rf3) 
IfPictureófó) = Pictureóf 7) And Pictureó(7) - Pictureó(8) Then Call ganadorfó) 
Rem Pregunta si hubo un ganador f Tres en raya vertical) 
If Pictureóf 0) = Pictureóf 3) And Pictureó(3) - Pictureóf ó) Then Call ganadorfO) 
If Pictureóf 1) = Pictureóf4) And Pictureóf 4) = Pictureóf 7) Then Call ganado rf I) 
If Pictureóf 2) = Pictureóf 5) And Pictureóf5) = Pictureóf 8) Then Call ganado rf 2) 
Rem Pregunta si hubo un ganador (Tres en raya diagonal) 
IfPictureó(O) = Pictureó(4) And Pictureó(4) = Pictureó(8) Then Call ganadorfO) 
If Pictureóf 2) = Pictureóf4) And Pictureóf4) = Pictureóf 6) Then Call ganado rf 2) 
End Sub 
Instrucciones del Procedim iento GANADOR. 
Sub ganadorfcarta) 
Rem Pregunta si ganó el jugar N° 01 
If Pictureóf carta) - Picture5 Then 
Picturel. Visible = True 
Picture4. Visible = True 
MsgBox “Ganó el Jugador N° 01 “+Chr(13)+Chr(34)+Textl+Chr(34),ó4, 
“Felicitaciones ” 
Labell = Labell + 10 
Frame2. Enabled = False 
End If 
Rem Pregunta si ganó el jugar N° 02 
If Pictureóf carta) = Picture7 Then 
Picture2. Visible = True 
Picture3. Visible = True 
MsgBox “Ganó el Jugador N° 02 “+Chr(13)+Chr(34)+Text2+Chr(34), ó4, 
“Felicitaciones ” 
Label2 = Label2 + 10 
Frame2.Enabled = False 
End If 
End Sub
à I Ì VISUAL BASIC como debe ser... 
AHORRE TIEMPO AL PROGRAMAR 
IN STR U C CIÓ N W IT H 
Esta instrucción permite ahorrar tiempo al momento de programar, porque 
evita referirnos varias veces al nombre de un control. 
Su sintaxis en la siguiente: 
With Nombre del Control 
Instrucción (es) 
End With 
Dentro del bloque de instrucciones, usted puede referirse a cualquier 
propiedad o método del control indicado con sólo escribir un punto (.) antes 
de la propiedad o método. 
Ejemplo: 
Las siguientes instrucciones: 
C o m b o l . A d d l t e m " A p i i c a t i v o s " 
C o m b o l . A d d l t e m " P r o g r a m a d ón " C o m b o l . A d d l t e m " O t r o s " 
C o m b o l . L i s t l n d e x = 0 
Se pueden escribir de la siguiente manera 
Wi t h Combo1 
. A d d l t e m " A p l i c a t i v o s " 
. A d d l t e m " P r o g r a m a c i ó n " 
. A d d l t e m " O t r o s " 
. L i s t l n d e x = 0 
E n d Wi t h 
IM PO R T A N T E : 
Cuando tengas que repetir instrucciones similares es un programa, utiliza las 
herramientas de Copiar y Pegar, la cuales también permiten ahorrar tiempo 
durante la programación. 
COPIAR -> Ctrl + C o Edición/Copiar 
PEGAR -> Ctrl + V o Edición/Pegar 
264 G r u p o E d it o r ia l Megabyte 
PREGUNTAS DE REPASO N° 05 
1. ¿Cómo se pregunta si un control OptionButton está activado? 
2. ¿Qué instrucción o método permite quitar un elemento del control 
ComboBox y ListBox? 
3. ¿Cuál es la diferencia entre las propiedades Format y Mask del control 
MaskEdBox? 
4. ¿Cómo sabemos el elemento que el usuario a elegido de un control, 
ComboBox o ListBox? 
5. ¿Cóm o se puede verificar que la fecha ingresada en el control 
MaskEdBox es correcta? 
6. ¿Cuál es la diferencia entre en un OptionButton y CheckBox? 
7. ¿Qué ventaja tiene el control MaskEdBox sobre un TextBox? 
8. ¿Qué utilidad tiene la propiedad Warp en el control UpDown? 
9. ¿Qué teclas se deben pulsar por cada elemento que desea adicionar al 
control ListBox o ComboBox? 
10. ¿Cómo se pregunta si un control Checkbox está activado? 
11. ¿Qué debe hacer si no desea visualizar el caracter de petición en el 
control MaskEdBox? 
12. El Valor True se puede reemplazar por el núm ero____ y el valor False 
por el núm ero____ . 
13. ¿Cuál es la propiedad que permite saber si un control OptionButton o 
CheckBox se encuentran activados o no? 
14. ¿Qué utilidad tiene la instrucción Sendkeys? 
15. ¿Cuál sería el formato de la propiedad Mask del MaskEdBox para 
ingresar una fecha apartir del año 2000 (4 digitos)? 
16. ¿Con qué instrucción o método se puede agregar elementos al control 
ComboBox y ListBox? 
17. ¿Cómo se borra el contenido de un control MaskEdBox? 
18. ¿Qué utilidad tiene la propiedad Buddycontrol de un UpDown? 
19. ¿Qué evento se ejecuta en el control MaskEdBox cuando se ingresan 
los que se cumple el formato establecido? 
20. ¿Cómo podemos hacer que se muestren los elementos de un ComboBox 
en forma automatica con la instrucción SendKeys? 
Es m uy importante que usted, se form ule nuevas aplicaciones o 
intercambie aplicaciones propuestas entre sus compañeros de 
estudio y desarrollarlas con la finalidad de enriquecer sus 
conocimientos.
BASIC como debe ser.. . 
PREGUNTAS DE REPASO N° 06 
1. ¿Cómo quita un formulario de sus aplicación? 
2. ¿Qué debe hacer si desea evitar que se muestre la ventana de diálogo 
cada vez que agrega un formulario a su aplicación? 
3. ¿Se puede grabar dos formularios con el mismo nombre? 
4. ¿Cuáles son los pasos para agregar la calculadora de Visual Basic a una 
aplicación? 
5. ¿Es obligatorio ocultar un formulario para visualizar otro durante la 
ejecución de una aplicación? 
6. ¿Se puede agregar a una aplicación un formulario que en su propiedad 
Ñame tenga el mismo nombre de uno de los formularios de dicha 
aplicación? 
7. ¿Cuál es la diferencia entre Hide y Unload? 
8. ¿Qué debe hacer si en una aplicación tiene varios formularios y desea 
visualiza o modifcar uno de ellos? 
9. Explique cómo se adiciona un formulario ya creado a una nueva aplicación. 
10. Cuando se ejecuta una aplicación, Visual Basic en forma predeterminada 
ejecuta el formulario N °___ . 
11. ¿Qué m ensajes de error se visualizan cuando no puede agregar 
formularios existentes a su aplicación y a qué se deben? 
12. ¿Cómo nos podemos referir a la propiedad de un control que se encuentra 
en otro formulario? 
13. ¿Cuál es la diferencia entre Show y Load? 
14. Explique la palabra clave Me. 
15. Explique cómo se adiciona un formulario en blanco a una aplicación. 
16. Si tiene una aplicación con 5 formularios. Cuando grabe la aplicación 
cuántos nombres debe ingresar. 
17. ¿Qué debe hacer para que Visual Basic ejecute primero un formulario 
diferente al que ejecuta en forma predeterminada? 
18. ¿Cómo se declara una variable o procedimiento para poder usarlo en 
cualquier formulario de una aplicación? 
19. ¿Cuál es la diferencia entre la calculadora del Visual Basic y la 
calculadora del Windows? 
20. ¿Cuando quita un formulario de su aplicación, se borra físicamente del 
disco de su computadora? 
La creatividad es muy importante, form úlese nuevas aplicaciones o 
intercambie aplicaciones propuestas entre sus compañeros de estudio 
y desarrollarlas con la finalidad de enriquecer sus conocimientos. 
266 G r u p o E d it o r ia l Megabyte 
CAPITULO VI 
Aqirfior Inrmulino 
N u o t o I E ü is te n ltí I 
E M t M M t V B D a t a / W fitfin t A b o u t Log In O p t io n s S p la s h T ip O f 
F a r m e p a r a O a io g D ia lo g D ld a q S c r e e n T h e Dew ¥ f-rwfrvii J b.i< 
 
W2ard f o m id a r i 
a s d e 
datas . . . Q- en a o. a o. en. & 
A d d in O D B C Efr’o w s e r CvstaG rid Q u e r y s A c e rc a Entelo d e ü p e t o ... Loa In de sesión 
A b rir 
L -e n e e le i ¡ 
Ájiuda 
-08-98 
BIENVENIDOS 
AL 
SISTEMA 
"lü D K lD l Cancelar 
MANEJO DE 
VARIOS 
FORMULARIOS
CAPÍTULO VI: Manejo de Varios Formularios 
MANEJO DE VARIOS FORMULARRIIOOSS 
r- — — 
Cada vez que ingresa al Visual Basic, muestra una aplicación que tiene en 
forma predeterminada un formulario (Form l). Pero puede agregar más 
formularios. 
AGREGAR FORMULARIOS A UNA APLICACIÓN: 
Existen 3 formas de agregar formularios: 
1. De la opción Project (Proyecto) de la Barra de Menú elija Add Form 
(Agregar Formulario). 
2. Haga Click en el botón Add Form de la barra de Herramientas. 
3. En la ventana de proyecto haga click con el botón derecho del Mouse y 
elija la opción Agregar, luego formulario. 
Í3 - BOTON ADD FORM 
Según como está configurado el Visual Basic puede visualizar la siguiente 
ventana: 
í?|x| 
A gregar form ulario 
Nuevo | Existente | 
a ¿ V ¿ V Q D Q D Q . 
2 2 2 2 3 8 1 VB D a ta A s is te n t A b o u t Log In O p tio n s S p la sh Tip Of 
F orm e p a r a D ialog D ialog D ialog S c re e n T h e D ay 
W iz a rd fo rm u la n 
o s d e 
d a t o s ... 
O O O O O Q O CJ ' 
Addiri ODBC B ro w se r D ataG rid Q u e r y s A c e rc a Inicio d e O p c io ... f 
Log In d e se s ió n 
Abtir 
Cancelar | 
Ayyda | > 
f” Nfi mostrar esfe cuadro de diálogo en el futuro 
Si no desea visualizar esta ventana active la casilla: 
No mostrar este cuadro de diálogo en el futuro. 
Si desea visualizarla: Active la opción Tools (Herramientas), luego Options 
(Opciones) y de la hoja Environment (Entorno) active la casilla Foms (Formularios). 
En la hoja Nuevo, se muestra el icono formulario (Form), que permite agregar 
un nuevo formulario en blanco a nuestra aplicación. Para ello, selecciónelo 
y haga click en el botón Abrir.
á U l É l b - VISUAL BASIC como debe ser: . . 
En la hoja Existente, se muestran los formularios que Ud., a diseño y 
permite agregarlos a su nueva aplicación. Para que esto tenga éxito debe 
de tener cuidado que los nuevos formularios existentes que desea agregar 
no tengan el mismo nombre (propiedad Ñame) de los formularios que tiene 
en su aplicación actual. 
Por ejemplo, se desea agregar a la aplicación actual un formulario que tiene en 
su propiedad Ñame el nombre Forml, pero en la aplicación actual ya existe un 
formulario que en sus propiedad Ñame tiene dicho nombre. Entonces se visualizan 
los siguientes mensajes de error: 
Microsoft Visual Basic 
& 
Errores de carga. Consulte 'C:Archivos de programaDevStudioVBForm1 log' para 
obtener más detalles 
Aceptar j| Ayuda 
M icroso ft V isual Basic 
f  N o se cargará 'F o rm l* El nom bre y a está e n uso. 
I r ^ A c j ^ c i r )| A y u d a j 
Para solucionar este problema cambie el nombre de la propiedad Ñame a cualquiera 
de los formularios. 
Para visualizar todos los formularios que tienen nuestra aplicación podemos 
acticar la ventana de proyectos. Por ejemplo, la siguiente ventana indica 
que tenemos 4 formularios: 
' CD 
C 3 F o r m l ( F o r m i ) 
a F o rm 2 (F o r m 2 ) 
a F o rm 3 (F o r m 3 ) 
a Fo rrn 4 (F o r m 4 ) 
Haga click en el signo más (+) si no se visualizan los formularios. 
Los nombres de los formularios que se visualizan dependen del asignado en 
su propiedad Ñame. 
Para visualizar o modificar cualquier formulario, haga doble click en su 
nombre o pulse SHIFT+F7. 
p 270 Grupo Editorial Megabyte 
CAPÍTULO VI: Manejo de Varios Formularios < 1 1 1 1 1 
QUITAR FORMULARIOS DE UNA APLICACIÓN: 
Para quitar un formulario de su aplicación pude seguir cualquiera de los 
siguientes pasos: 
1. De la opción Project (Proyecto) de la Barra de Menú elija Remove 
Form (Quitar Formulario). 
2. En la ventana de proyecto haga click con el botón derecho del Mouse en 
el nombre del formulario que desea quitar y elija la opción Remove 
Form. 
NOTA: 
Cuando Ud., quita formularios de su aplicación que previamente a grabado, 
Visual Basic no los borra de su computadora, sólo los quita de la aplicación 
actual. Esto quiere decir que Ud., puede volver a agregar dicho formulario a su 
aplicación o en cualquier otra. 
SELECCIONAR EL FORMULARIO A EJECUTARSE PRIMERO: 
Visual Basic en forma predeterminada ejecuta el formulario N° 1 cuando 
Ud., ejecuta su aplicación. Si desea indicarle que ejecute otro formulario 
puede seguir cualquiera de los siguientes pasos: 
1. De la opción Project (Proyecto) de la Barra de Menú elija Properties 
Project (Propiedades del Proyecto) 
2. En la ventana de proyecto haga click con el botón derecho del Mouse en 
el nombre del proyecto y elija la opción Propiedades del Proyecto. 
Se visualiza la siguiente ventana: 
G e n e r a l j G e n e r a r j C o m p i l a r | C o m p o n e n t e | 
T ip o d e p r o y e c t o : O b j e t o in ic ia l: 
No£nt>f© d « p r o y e c t o : 
j P r o y e c t o 1 I d . d e c o n t e x t o , 
d e l a A y u d a d e l 
h o m b r e d e l a r c h i v o d e A y u d a : p r o y e c t o : 
i----------------------------------------- n¡— '— 
d e s c r i p c i ó n d e l p r o y e c t o : 
I----------------------------------------------------------------- 
r~ 
A c t u a l i z a r c o n t r o l e s A c t i v e X C 
r I 3 
A c e p t a r } C a n c e l a r __ | A y u d a 
Haga click en la flecha hacia ahajo de Startup Object (Objeto Inicial) y seleccione 
el formulario que desea que se ejecute primero.
íÉ Ü ^ I é ¡- VISUAL BASIC como debe ser. . . 
M U Y IM PORTANTE 
Si desea referirse a la propiedad de un control que se encuentra en 
otro formulario, debe utiliza el signo de admiración: 
Nombre del Formulario!Control. Propiedad = Valor 
Ejemplo: 
La siguiente instrucción muestra en la etiqueta N° 2 del form ulario 
Form3 la palabra HOLA. Esto se puede realizar desde cualquier fo r­mulario. 
Form3!Label2 = "Hola" 
Los nombres de los formularios en forma predeterminada son: Form 1, Form2, 
Form3, etc. según la cantidad de formularios que adicione a su aplicación. 
INSTRUCCIONES PARA MANEJAR FORMULARIOS 
LOAD : 
Permite cargar un formulario en la memoria, pero no lo visualiza. Para tener 
acceso a los controles y propiedades de un formulario, éste debe estar car­gado 
en memoria. 
LOAD Nombre del Formulario 
UNLOAD : 
Permite descargar (cierra) un formulario de la memoria independientemen­te 
de que se esté o no visualizando. 
UNLOAD Nombre del Formulario 
HIDE : 
Permite ocultar un formulario. 
Nombre del Formulario.HIDE 
SHOW : 
Permite visualizar un formulario. 
Nombre del Formulario.SHOW 
Ejemplos: 
FORM2.SHOW Muestra el formulario N° 2. 
UNLOAD FORM2 Descarga el form ulario N° 2. 
La palabra clave M E puede reemplazar al nombre del formulario actual. 
UNLOAD ME Descarga el form ulario activo. 
272 G rupo E ditorial Megabvte 
CAPITULO VI: io de Varios Formularios 'M, 
A PL IC A C IO N D E SA R R O L L A D A N H 40 
Esta aplicación es un ejemplo de cómo se manejan varios formulario en una 
aplicación. 
PASO N° 01 
Agregue y dibuje los formularios siguientes: 
FO R M I FORM 2 
IN G R ES O LE DA 
Centro de Estudios 
Especialidad 
Ciclo 
Turno 
Aula [“ 
MUEVO I SAUR I 
FORM 3 
INGRESO DE DATOS: 
DATOS EERSONALES | 
DATOS ACADEMICOS j 
DATO FAMILIARES I 
IÂÏÏR ”]| 
X.■ 
Apodeiado(a) J¡~ 
N* de Hermanos | 
Lugar de Origen j 
Tipo de Vivienda | 
NUEVO { 
FO RM 4 
* Nombre J[~ 
Dirección f “ 
T eléfono |~ 
Fecha de Nac. |~ 
Sexo | 
MUEVO I SALIR 
FORM 5 
Sjxl 
Hora: 4;30pm. 
Fecha: 21-08-98 
B IE N V E N ID O S 
AL 
S IS T E M A 
I Cancelar I 
FO RM 6 
Ingiese los Datos Correctos : 
Usuario Jj 
P a s s w o r d i—
PASO N° 02 
INSTRUCCIONES DEL FORM1 
Las instrucciones del Commandl (OK) permiten ocultar el formulario N° 1 
y visualizar el formulario N° 2 . 
P r í v a t e S u b C o m m a n d l _ C l i c k () 
F o r m l . H í d e 
F o r m 2 . S h o w 
E n d S u b 
Las instrucciones del Command2 (Cancelar) permiten finalizar la aplicación. 
P r í v a t e S u b C om m and2__C lick () 
Dím R A s I n t e g e r 
R = M s g B o x ( " E s t a s e g u r o " , 3 6 , " C u i d a d o " ) 
I f R = 6 T h e n E n d 
E n d S u b 
INSTRUCCIONES DEL FORM2 
Las instrucciones del Com m andl (OK) verifica que se ha ingresado 
correctamente el nombre del usuario y su password. El nombre del usuario 
es JUAN JOSE y su password VISUAL. 
La caja dE textos N° 2 (Text2) debe tener en la propiedad Passwordchar el 
asterisco (*) para que no se vea el password cuando es ingresado. 
P r í v a t e S u b C o m m a n d l_ C lic k () 
I f U C a s e ( T r i m ( T e x t l ) ) = "JUAN JOSE" A n d UCase ( T r i m ( T e x t 2 ) ) 
= "VISUAL" Then 
F o rm 2 .H íd e 
F o rm 3. Show 
E l s e 
MsgBox "DATOS INCORRECTOS", 1 6 , "ACCESO DENEGADO" 
T e x t l = "" 
T e x t 2 = "" T e x t l . S e t F o c u s 
End I f 
End S u b 
Las instrucciones del Command2 (Cancelar) permiten finalizar la aplicación. 
P r í v a t e S u b C o m m a n d 2 _ C lic k () 
Dim R A s I n t e g e r 
R = M s g B o x ( " E s ta s e g u r o " , 3 6 , " C u id a d o " ) 
I f R = 6 T h en End 
CAPÍTULO VI: Manejo de Varios Formularios ^ ¡ § | f | | 
INSTRUCCIONES DEL FORM3 
Las instrucciones del Commandl (Datos Personales) oculta el Form3 (Menú 
Principal) y visualiza el Form4 (Ingreso de datos Personales). 
P r í v a t e S u b C o m m a n d i t a i c k ( ) 
F o r m 3 . H í d e 
F o r m 4 . S h o w 
E n d S u b 
Las instrucciones del Command2 (Datos Académicos) oculta ei Form3 
(Menú Principal) y visualiza el Form5 (Ingreso de datos Académicos). 
P r i v a t e S u b C o m m a n d 2 _ C l i c k ( ) 
F o r m 3 . H í d e 
F o r m 5 . S h o w 
E n d S u b 
Las instrucciones del Command3 (Datos Familiares) oculta el Form3 (Menú 
Principal) y visualiza el Formó (Ingreso de datos Personales). 
P r í v a t e S u b C o m m a n d 3 _ C l i c k () 
F o r m 3 . H í d e 
F o r m 6 . S h o w 
E n d S u b 
Las instrucciones del Command4 (Salir) permiten finalizar la aplicación. 
P r í v a t e S u b C o m m a n d 4 _ C l i c k () 
R = M s g B o x ( " E s t a s e g u r o " , 3 6 , " C u i d a d o " ) 
I f R = 6 T h e n E n d 
E n d S u b 
INSTRUCCIONES DEL FORM4 
Instrucciones del botón Nuevo. 
^ P r í v a t e S u b C o m m a n d l _ C l i c k () 
T e x t l _ » » 
T e x t 2 _ n » 
T e x t 3 _ il n 
T e x t 4 = " " 
T e x t 5 = " " 
T e x t l S e t F o c u s 
E n d S u b 
Instrucciones del botón Salir. 
P r í v a t e S u b C o m m a n d 2 _ C l i c k () 
F o r m 4 . H í d e 
F o r m 3 . S h o w 
E n d S u b 
275
w X ÉÍfo VISUAL BASIC como debe ser.. 
INSTRUCCIONES DEL FORM5 
Instrucciones del botón Nuevo. 
P r í v a t e S u b C o m m a n d l _ C l í c k () 
T e x t l = 
T e x t 2 = 
T e x t 3 = 
T e x t é = 
T e x t 5 = 
T e x t l . S e t F o c u s 
E n d S u b 
Instrucciones del botón Salir. 
P r í v a t e S u b C o m m a n d 2 _ C lic k () 
F o r m 5 .H id e 
F o r m 3 . S h o w 
E n d S u b 
INSTRUCCIONES DEL FORMÓ 
Instrucciones del botón Nuevo. 
P r i v a t e S u b C o m m a n d l_ C lic k () 
T e x t l = "" 
T e x t 2 = "" 
T e x t 3 = "" 
T e x t 4 = "" 
T e x t l . S e t F o c u s 
E n d S u b 
Instrucciones del botón Salir. 
P r í v a t e S u b C o m m a n d 2 _ C lic k () 
F o r m ó . H id e 
F o r m 3 . S h o w 
End Sub 
¿Qué instrucciones debe tener el botón OK si se quiere desarrollar la aplicac. 
anterior con botones de opciones? 
f . _ | □ | x | 
In g ie r o d e D ato .- 
( • .D a to s P e rs o n a le s 
C ' D a to s A c a d é m ic o s 
D a to s Fam ilia re s 
r Salir 
O K | 
276 G r u p o E d it o r ia l Megabyte < 
CAPÍTULO VI: Manejo de Varios Formularios 
TIPO S D E FO R M U L A R IO S 
Formulario Modal: 
Consiste en un formulario que NO permite continuar ejecutando la aplicación 
o pasar a otro formulario sin que se cierre correctamente. Para mostrar un 
formulario y que funcione de tipo Modal sólo debe escribir del método Show 
el número 1 o la palabra vbModal. Ejempo: FormS.Show 1 
Formulario No Modal 
Consiste en un formulario que SI permite continuar con la ejecución de la 
aplicación o pasar a otro formulario sin necesidad que el formulario se cierre. 
Para mostrar un formulario y que funcione de tipo No Modal se debe escribir 
del método Show sin ningún parámetro. Ejempo: Form3.Show 
TIPO DE INTERFAZ 
SDI (Interfaz de Documentos Simples) 
Permiten crear aplicaciones con los formularios estándar o normales como 
los utilizados en los ejemplos anteriores. 
MDI (Interfaz de Documentos Múltiples) 
Permiten crear aplicaciones que mantienen varios formularios (secundarios) 
dentro de un formulario principal llamado MDI. Los MDI sólo aceptan 
controles que tengan la propiedad Align como StatusBar, ToolBar y Picture 
(puede dibujar otros sobre este control) o aquellos que no se visualicen al 
momento de ejecutarse el formulario como el control Timer. 
DESARROLLAR UNA APLICACIÓN CON UN FORMULARIO MDI 
Para desarrollar la aplicación anterior con formularios MDI y secundarios 
siga los siguientes pasos: 
Elija la opción Proyecto y luego Agregar Formulario MDI. En este formulario 
MDI diseñe el Menú Principal y al resto de formularios asígneles en su 
propiedad MDIChild el valor TRUE. 
PR O C E D IM IE N T O M A IN 
Si desea que su aplicación ejecute primero un procedimiento, entonces en la 
opción Proyecto/Propiedades del Proyecto/Objeto Inicial, elija Sub Main. El 
procedimiento Sub Main lo debe crear en un módulo. Por ejemplo, en la aplicación 
anterior agregue un módulo y un formulario (Form7) y diseñe en él una pantalla 
de presentación la cual se visualizará por 3 segundos antes de mostrar el formulario 
N° 1 (Bienvenida). En este formulario debe dibujar un control Timer. 
Instrucciones del Timer Instrucciones del procedimiento Main 
Prívate Sub Timerl_Timer() Prívate Sub Main () 
£ n Form7.Show 
Timer 1. Inten’al = 0 Fonn 7¡Timer. Interval = 3000 
Forml.Show End Suh 
End Sub 
IMPORTANTE: Cada aplicación Sólo acepta un formulario MDI y los formularios 
secundarios no se pueden llamar de tipo Modal. 
I p f i ^ G r u p o E d it o r ia l Megabyte 277 « 9
VISUAL BASIC como debe ser.. . 
APLICACION DESARROLLADA N° 41 
Desarrolle una aplicación que permita manejar y compartir información de 
tres formularios. 
El primer formulario debe permitir el ingreso o adición de registros como se 
muestra en la figura siguiente: 
o 
N O M B R E 
E D A D 
D IS T R IT O 
S E X O (M /F ) 
A D IC IO N A R 
V E R R E G IS T R O S 
S A L IR 
El ingreso de datos debe tener las siguientes características: 
1. El nombre, distrito y sexo se deben convertir automáticamente a 
mayúsculas. 
2. En la edad sólo se debe permitir el ingreso de números y con un máximo 
de dos dígitos. 
3. En el sexo sólo se debe ingresar la letra M o la letra F. 
4. Sólo de debe activar el botón adicionar cuando se hallan ingresado los 
cuatro datos. 
5. Al hacer click en el botón AD ICIO NA R, los registros ingresados se 
deben almacenar en la lista que se encuentran en el formulario N° 2. 
6. El botón VER REG ISTR O S, debe mostrar el formulario N°2 para 
visualizar los registros adicionados. 
El segundo formulario debe permitir visualizar y manipular los registros que se 
adicionaron en el formulario N° 1. 
N O M B R E 
J U A N : ^ 
R O D O L F O 
M A R IA 
L U IS 
K A R IN A 
L U K Y 
A D R I A N A 
- Ini xj 
D I S T R I T O S E X O 
12 
5 6 
2 3 
22 
1 4 
9 0 1 
A D IC I O N A R V E R E S T A D I S T I C A 
L A M B A Y E Q U E 
C H IC L A Y O 
R E Q U E 
M O N S E F U 
F E R R E Ñ A F E 
C H IC L A Y O 
O L M O S 
M O D IF IC A R 
M - 
MF 
MF 
MF 
j d 
E L I M I N A R 
278 G r u p o E d it o r ia l Megabyte" 
CAPÍTULO VI: Manejo de Varios Formularios 
Los botones MODIFICAR y ELIMINAR sólo se deben activarse cuando 
el usuario selecciona un registro. 
El botón ADICIONAR debe permitir regresar al formulario N° 1 para seguir 
adicionando registros. 
El botón VER ESTADISTICA debe permitir pasar al siguiente formulario 
(N° 3) para visualizar una estadística de los registros que se van adicionando. 
El botón MODIFICAR debe llevar los datos del registro seleccionado al 
formularios N° 1 y eliminarlo del formulario actual para poder modificarlos y 
si después de modificarlo se hace un click en el botón adicionar se vuelve a 
adicionar el registro, con los datos ya modificados. 
El botón ELIMINAR debe permitir eliminar el registro que el usuario a 
seleccionado. Antes de eliminar el registro se debe pedir una confirmación. 
El formulario N° 3 debe mostrar la estadística de los registros adicionales como se 
muestra en la siguiente figura. 
- E S T A D I S T I C A D E L O S R E G I S T R O S I N G R E S A D O S M C T E 3 
M A Y O R E S D E E D A D [ 5 ( 6 2 . 5 * ) 
M E N O R E S D E E D A D I 3 ( 3 7 . 5 * ) 
H O M B R E S |~4 ( 5 0 . 0 * ) 
M U J E R E S [ 4 ( 5 0 . 0 * ) 
|{ V E R R E G I S T R O S ]| 
_ A D I C I O N A R 
H O M B R E S M A Y O R E S I 3 ( 3 7 . 5 * ) 
T O T A L D E R E G I S T R O S 
H O M B R E S M E N O R E S | l ( 1 2 5 * ) 1 8 ( 1 0 0 5 * ) 
M U J E R E S M A Y O R E S | 2 ( 2 5 . 0 * ) 
M U J E R E S M E N O R E S f T ~ ( 2 5 T o * r 
El botón VER REGISTROS de mostrar el formulario N° 2 para visualizar­los 
registros adicionados. 
El botón ADICIONAR debe mostrar el formularios N° 1 para poder ingresar 
nuevos registros. 
G rupo E ditorial Megabyte , 279 á m m
VISUAL BASIC como debe ser... 
DESARROLLO DE LA APLICACIÓN 
PASO NH 01: Debe adicionar a su proyecto 3 formularios y luego a cada 
uno de ellos le debe dibujar sus controles y propiedades. Así: 
FORMULARIO N 2 01 
L a b e ll 
Label2 
Label3 
Label4 
|T e x t2 
]T e x t3 G om m andl 
Command2 
Command3 
Asigne la propiedad Caption a los controles, como se muestra en la aplicación 
a desarrollar. El botón adicionar debe tener el valor False en su propiedad 
Enabled y las etiquetes el valor True en su propiedad Autosize. 
F O R M U L A R I O N 2 0 2 
AL formulario, etiquetas y botones de comandos asígneles su propiedad 
Caption como se muestra en la aplicación. Los botones Adicionar y Eliminar 
debe estar desactivados. Los List deben estar en blanco. Las propiedades 
de las cajas de texto son: 
CONTROL TEXT MAXLENGTH 
Textl En Blanco 0 
Text2 En Blanco 2 
Text3 En Blanco 0 
Text4 En Blanco 1 
2 8 0 G r u p o E d i t o r i a l M e g a b y t e < 
CAPÍTULO VI: Manejo de Varios Formularios 
.o 
FORMULARIO N e 03 
L a b e l l 
Label2 
Labe)4 
Label5 
LabelS 
Label7 
Lat>el8 
LabeIS 
• Labell O 
Labell 1 
Labell 2 
Labell 3 
Labell 4 
Labell 5 
Labell 6 
Commandl 
Command2 
Labell 7 
Labell 8 
Las etiquetas desde la N° 9 hasta la N° 16 y la N° 18 deben quedar en 
blanco y en su propiedad BorderStyle deben tener el valor 1 - Fixed Single. 
PASO N" 02:Escribir las instrucciones para los controles. 
Instrucciones de los controles del FO RM U LARIO N° 1. 
Debajo de cualquier instrucción END SUB escriba: SUB VERIFICA. 
j F o rm Load »j 
Private Sub Form L o a d () a. 
End Sub 
SUB v e r i f i c a | 
s j l LI 
▼ 
± r 
Y luego pulse la tecla ENTER para crear el procedimiento a nivel de 
form ulario llamado VERIFICA: 
j(General) | VERIFICA d 
Private Sub Form L o a d () — 
End Sub 
Sub VERIFICA() I1E 
n d S u b 
m < 1 1 
Este procedimiento permite controlar que se halla escrito información en 
las cuatro cajas de texto para poder activar el botón ADICIONAR, de lo 
contrario lo desactiva. 
Ü iiíÉIÜ ^ G r u p o E d it o r ia l Megabyte 281
Las instrucciones que se deben escribir en este procedimiento Son: 
S u b v e r i f i c a () 
I f T r i m ( T e x t l ) <> "" A n d T r i m ( T e x t 2 ) <> "" A n d T r i m ( T e x t 3 ) 
o "" A n d T rim ( T e x t 4) <> "" Then 
Commandl. E n a b le d = T r u e 
E l s e 
Commandl. E n a b l e d = F a l s e 
End I f 
End S u b 
VISUAL BASIC corno debe ser... 
En el evento CHANGE de cada Caja de Textos se debe llamar a este 
procedimiento. Así: 
P r i v a t e S u b T e x t l _ C h a n g e () P r i v a t e S u b T e x t 3 _ C h a n g e () 
V e r i f i c a v e r i f i c a 
End S u b End Su b 
P r i v a t e S u b T e x t2 _ C h a n g e () P r í v a t e S u b T e x t 4 _ C h a n g e () 
v e r i f i c a v e r i f i ca 
End S u b End S u b 
Instrucciones del botón ADICIONAR 
Permite pasar los datos ingresados en las cajas de texto a sus respectivas 
listas que se encuentran en el formularios N° 02. 
P r i v a t e S u b C o m m a n d l _ C l i c k () 
F o r m 2 ! L i s t i . A d d l t e m T e x 1 1 
F o r m 2 ! L i s t 2 . A d d l t e m T e x t 2 
F o r m 2 ! L i s t 3 . A d d l t e m T e x t 3 
F o r m 2 ! L i s t 4 . A d d l t e m T e x t 4 
T e x t l = " " 
T e x t 2 = "" 
T e x t 3 = "" 
T e x t 4 = "" 
T e x t l . S e t F o c u s 
E n d S u b 
Instrucciones del botón VER REGISTROS 
Permite activar el formulario N° 02 para visualizar los registros adicionados. 
P r í v a t e S u b C o m m a n d 2 _ C l i c k () 
F o r m 2 . S h ow 
F o r m l . H i d e 
E n d S u b 
E l botón SA LIR debe tener la instrucción END 
2 8 2 G r u p o E d it o r ia l Megabyte< 
CAPÍTULO VI: Manejo de Varios Formularios 
Las instrucciones de la caja de texto N° 1 que permiten convertir a mayúsculas 
el texto que se ingresa, se deben escribir en el evento Keypress el cual 
almacena en la variable Keyascii el valor ASCII de cada carácter que se 
escribe en la caja de textos. 
Las letras minúsculas en el código ASCII comienzan a partir del numero 97 
hasta el 122 (a=97, b=98, etc.). 
Las letras mayúsculas en el código ASCII comienzan a partir del numero 65 
hasta el 90 (A=65, B=66, etc.), por lo tanto, la diferencia entre mayúsculas 
y minúsculas es 32. Si se quiere convertir una letra minúscula a mayúscula, 
entonces a su valor ASCII de dicha letra se le debe restar 32. 
Otra forma de convertir cada carácter a mayúsculas es usando la siguiente 
instrucción: 
KeyAscii = A s e (UCase(Chr(KeyAscii))) 
Instrucciones del evento Keypress de TEXTL 
P r í v a t e S u b T e x t l _ K e y P r e s s ( K e y A s c i i A s I n t e g e r ) 
' P r e g u n t a s i l a l e t r a p u l s a d a e s t a e n m i n ú s c u l a . 
I f K e y A s c i i >= 9 7 A n d K e y A s c i i <= 1 2 2 T h e n 
' S i e s m i n ú s c u l a l e r e s t a 3 2 . 
K e y A s c i i = K e y A s c i i - 3 2 
E n d I f 
E n d S u b 
Para que una caja de textos acepte sólo valores numéricos también se le 
debe programa en el evento Keyascii. 
El Valor ASCII de la tecla pulsada se convierte en el carácter ASCII 
correspondiente y se pregunta si es menor a cero (0) o mayor a nueve (9), 
si la respuesta es verdad significa que no se ingreso un numero, entonces 
hacemos que Visual Basic ignore el carácter ingresado asignándole el valor 
cero a la variable Keyascii. También se debe ignorar la tecla pulsada cuando 
el valor ASCII sea diferente de 8 que pertenece a la tecla de Retroceso 
para que se pueda borrar lo que se escribe. 
G r u p o E d it o r ia l Megabyte 2 8 3
|¡ llllÉ I > VISUAL BASIC como debe ser... 
Instrucciones del evento Keypress de TEXT2. 
P r i v a t e S u b T e x t 2 _ K e y P r e s s ( K e y A s c i i A s I n t e g e r ) 
Dim TECLA A s S t r i n g * 1 
TECLA = C h r ( K e y A s c i i ) 
I f (TECLA < "0" Or TECLA > "9") A n d K e y A s c i i <> 8 Then 
K e y A s c i i = 0 
End I f 
End S u b 
Las instrucciones de la caja de textos N° 3 son similares a las de la caja de 
textos N° 1. 
Instrucciones del evento Keypress de TEXT3. 
P r í v a t e S u b T e x t 3 _ K e y P r e s s ( K e y A s c i i A s I n t e g e r ) 
' S I SE INGRESA EN MINUSCULAS LO CONVIERTE A MAYUSCULAS 
I f K e y A s c i i >= 9 7 A n d K e y A s c i i <= 1 2 2 T h e n 
K e y A s c i i = K e y A s c i i - 32 
E n d I f 
E n d S u b 
Las instrucciones de la caja de texto N° 4. 
Permiten aceptar sólo las letras F o M y si se ingresan en minúsculas se 
deben convertir a mayúsculas. 
Primero se pregunta si el valor ASCII del carácter pulsado es 102 ó 109 que 
corresponden a las letras <f> o <m> en minúsculas. Si la respuesta es 
verdad se le resta 32 y si el valor ASCII es diferente de 70, 77 y 8 que 
corresponden a las letras <F>, <M> en mayúsculas y a la tecla de Retroceso 
(BackSpace <-), el carácter es ignorado, es decir no se visualiza, porque le 
asignamos el valor cero (0) a la variable Keyascii. 
Instrucciones del evento Keypress de TEXT4. 
P r i v a t e S u b Text4_ _ K eyP ress ( K e y A s c i i A s I n t e g e r ) 
'SOLO ACEPTA LAS LETRA "F" o "M" Y S I SE INGRESAN 
'EN MINUSCULAS LAS CONVIERTE A MAYUSCULAS 
I f ( K e y A s c i i = 102 Or K e y A s c i i = 1 09) Then 
K e y A s c i i = K e y A s c i i - 32 
E l s e l f K e y A s c ii< > 7 0 A n d K e y A s c ii< > 7 7 A nd K e y A s c ii< > 8 Then 
K e y A s c i i = 0 
End I f 
End Sub 
l |¡ ¡ ! § ^ 2 8 4 G r u p o E d i t o r i a l Megabyte 
CAPÍTULO VI: Manejo de Varios Formularios 
Instrucciones de los controles del FORMULARIO N° 2. 
Definir la variable NUM de tipo entero a nivel del formulario. Esto se hace 
en el Objeto GENERAL y el Evento DECLARATIONS. Dim NU M As 
Integer 
(General) -r (Declarations) 
Dira MUM As Integer 
< 11 
Crear un nuevo procedimiento llamado SELECCIONA, que permite 
seleccionar todo el registro cuando el usuario hace click en cualquiera de las 
listas además permite activar los botones de comandos Command3 y 
Command4. 
Para ello en cualquier parte libre de la ventana de código escriba: SUB 
SELECCIONA y luego pulse la tecla EN TER. 
1 tW P r o i e c ll - F o r m 3 (C o d e ) 
¡F o r m [L o a d 
P r i v a t e S u b C o rra n e in c i2 _ C 1 i c k ( ) “¡H 
F o r m l . S h o w — ^ 
F o r r n 3 . H i c i e 
E n d S u b 
P r i v a t e S u b F o r m A c t í v a t e ( ) 
y E n d S u b S U B S E L E C C I O N A . 
m 1 1 i ► n 
Se visualizará la siguiente pantalla: 
* G r u p o E d i t o r i a l Megabyte 2 8 5
^ f | ¡ | | | » VISUAL BASIC como debe ser... 
Luego escriba dentro del procedimiento las instrucciones. 
Estas instrucciones permiten seleccionar todo un registro cuando el usuario 
hace click en cualquiera de las listas. 
L i s t l . L i s t l n d e x = NUM 
L i s t 2 . L i s t l n d e x = NUM 
L i s t 3 . L i s t l n d e x = NUM 
L i s t 4 . L i s t l n d e x = NUM 
Com m and3. E n a b l e d = T r u e 
C om m and4. E n a b l e d = T r u e 
La ventana de código tendrá el siguiente aspecto: 
(General) -*• SELECCIONA zl 
Suta SELECCIONA() 
List1.L istIndex = NUM i List2.Listlndex = NUM 
List3 . Listlndex = NU11 
List4.Listlndex = NUM 
Conmand3.Enabled = True 
Command4.Enabled = True 
End Sub kh j l L! 
Este procedimiento es invocado cuando el usuario hace click en cualquiera 
de la lista, para ello se tiene que programar en el evento Click de cada Lista. 
P r í v a t e S u b L i s t l _ C l i c k () 
NUM = L i s t l . L i s t l n d e x 
SELECCIONA 
E n d S u b 
P r í v a t e S u b L i s t 2 _ C l i c k () 
NUM = L i s t 2 . L i s t l n d e x 
SELECCIONA 
E n d S u b 
P r í v a t e S u b L i s t 3 _ C l i c k () 
NUM = L i s t 3 . L i s t l n d e x 
SELECCIONA 
E n d S u b 
P r í v a t e S u b L i s t 4 _ C l i c k ( ) 
NUM = L i s t 4 . L i s t l n d e x 
SELECCIONA 
E n d S u b 
Instrucciones del Botón ADICIONAR. 
Permiten mostrar el formulario N° 1 para poder adicionar más registros. 
P r í v a t e S u b C o m m a n d l _ C l i c k () 
F o r m l . S h o w 
F o r m 2 . H i d e 
E n d S u b 
2 8 6 G r u p o E d it o r ia l Megabyte^ m 
CAPÍTULO VI: Manejo de Varios Formularios 
Instrucciones del Botón VER ESTADISTICA. 
Permiten pasar al Formulario N° 3 para visualizar la estadística de los regis­tros 
que se van adicionando. 
Prívate Sub Command2_Click() 
Dim N, EDAD, MAYORES, MENORES, HOMBRES As Inte ge r 
Dim MUJERES,HOMMAY, HOMMEN, MUJMAY, MUJMENAs Integer 
Dim SEXO Aó' String * 1 
‘Cuenta la cantidad de registros adicionados. 
N = Listl.ListCount 
For X = 1 ToN 
‘Activa en forma secuencial una edad ingresada. 
List2. Listlndex = X - 1 
‘Almacena en la variable EDAD, la edad activa. 
EDAD = Val(List2.Text) 
‘Activa en forma secuencial un sexo ingresado. 
List4. Listlndex - X - 1 
‘Almacena en la variable SEXO, el sexo activado. 
SEXO - Trim( List4. Text) 
‘Cuenta los mayores y menores de edad. 
IfEDAD > = 18 Then 
MAYORES = MAYORES + 1 
Else 
MENORES = MENORES + 1 
E n dlf 
‘Cuenta los hombres y las mujeres. 
IfSEXO = "M" Then 
HOMBRES = HOMBRES + 1 
Else 
MUJERES = MUJERES + 1 
E n dlf 
‘Cuenta los hombres mayores y menores de edad. 
IfSEXO="M"AndEDAD>=18 Then HOMMAY = HOMMAY + 1 
IfSEXO- "M " And EDAD< 18 Then HOMMEN = HOMMEN + 1 
‘Cuenta las mujeres mayores y menores de edad. 
IfSEXO= "F" And EDAD>=18 Then MUJMAY - MUJMAY + 1 
IfSEXO= "F" And EDAD<18 Then MUJMEN = MUJMEN + 1 
NextX 
‘Obtiene los respectivos porcentajes. 
PORCMAY = MAYORES * 100/ N 
PORCMEN = MENORES * 100/ N 
PORCHOM = HOMBRES * 100/N 
PORCMUJ = MUJERES * 1 0 0 /N 
PORCHOMMAY = HOMMAY * 1 0 0/N 
PORCHOMMEN = HOMMEN * 1 0 0 /N 
PORCMUJMAY = MUJMAY * 1 0 0 /N 
PORCMUJMEN = MUJMEN * 1 0 0 /N 
G r u p o E d it o r ia l Megabyte 2 8 7
J Ü Ü É ^ VISUAL BASIC como debe ser... 
'Muestra los resultados en el formulario N° 03 
Form3!Label9=Str(MAYORES)+"("+Format(PORCMAY, "##0.0")+ "%)" 
Form3!Label 10-Str(MENORES) + "("+Format(PORCMEN, "##0.0”)+ "%)" 
Form3!Labelll=Str(HOMBRES)+ "("+Format(PORCHOM, "##0.0")+ "%)" 
Form3!Labell2=Str(MUJERES)+ "("+Format(PORCMUJ, "##0.0")+ "%)" 
Form3!Labell3-Str(HOMMAY)+ "("+Format(PORCHOMMAY, "##0.0")+ "%)" 
Form3!Label 14=StríHOMMEN)+ "("+Format(PORCHOMMEN, "##0.0")+ "%)" 
Form3!Label 1 5 -Str(MUJMAY)+ "("+Format(PORCMUJMAY, "##0.0")+ "%)" 
Form3!Labell6=Str(MUJMEN)+ "("+Fonnat(PORCMUJMEN, ”##0.0")+ "%)" 
Form3!Label 18 = Str(N) + " (100%)" 
'Muestra el formulario N° 3 
Form3.Show 
Form2.Hide 
End Sub 
Instrucciones del Botón MODIFICAR. 
Permiten pasar al Formulario N° 1 los datos del registro seleccionado para 
poder modificarlos y borra estos datos originales de las listas. 
Prívate Sub Command3_Click() 
Dim E A í Integer 
Forml ITextl = Listl.Text 
Forml !Text2 = List2.Text 
Forml !Text3 = List3.Text 
Forml!Text4 - List4.Text 
E - Listl.Listlndex 
Listl.Removeltem (E) 
List2.RemoveItem (E) 
List3.RemoveItem (E) 
List4.RemoveItem (E) 
Forml .Show 
Form2.Hide 
End Sub 
Instrucciones del Botón ELIMINAR. 
Borra de las listas el registro seleccionado, pidiendo una respuesta de con­firmación. 
Prívate Sub Command4_Click() 
Dim E, RAs Integer 
R-MsgBox( "ESTA SEGURO DE ELIMINAR EL REGISTRO",36,"CUIDADO") 
IfR = 6 Then 
E = Listl.Listlndex 
Listl.Removeltem (E) 
List2.Removeltem (E) 
List3.Removeltem (E) 
List4.Removeltem (E) 
End If 
Command3. Enabled = False 
Command4.Enabled = False 
End Sub 
2 8 8 G r u p o E d it o r ia l Megabyte < ® g 
CAPITULO VI: Manejo de Varios Formularios 
Instrucciones del Evento ACTIVATE del Formulario. 
Estas instrucciones se ejecutan cuando el formulario es activado y permiten 
que no se encuentre seleccionado ningún registro y a demás desactiva los 
botones MODIFICAR y ELIMINAR. 
P r í v a t e S u b F o r m _ A c t í v a t e () 
L i s t l . L i s t l n d e x = -1 
L i s t 2 . L í s t l n d e x = -1 
L i s t 3 . L i s t l n d e x = - 1 
L i s t 4 . L í s t l n d e x = -1 
C o m m a n d 3 .E n a b l e d = F a l s e 
C om m and4. E n a b l e d = F a l s e 
E n d S u b 
Instrucciones de los controles del F O R M U L A R IO N° 3 
Instrucciones del Botón VER REGISTROS. 
Permiten visualizar el formulario N° 2 donde se encuentran todos los registros 
adicionados. 
P r í v a t e S u b C o m m a n d l _ C l í c k () 
F o r m 2 . S h o w 
F o r m 3 . H í d e 
E n d S u b 
Instrucciones del Botón ADICIONAR. 
Permiten visualizar el formulario N° 1 para poder adicionar más registros. 
P r i v a t e S u b C o m m a n d 2 _ C lic k () 
F o r m l. S h o w 
F o r w 3 . H id e 
E n d S u b 
G r u p o E d it o r ia l Megabyte 289 ^
VK vk/ VISUAL BASIC como debe ser. . . 
ERRORES MAS COMUNES 
Microsoft Visual Basic 
Debe haber un formulario de inicio o un procedimiento Sub Ma¡n[) 
Aceptar Ayuda 
Su aplicación no tiene 
especificado un formulario 
para ejecutar primero. 
Haga clic en el botón 
Aceptar y seleccione un 
formulario en Objeto 
Inicial. 
Microsoft Visual Basic 
Error '424' en tiernpo de ejecución : 
Se requiere un objeto 
Terminar A yuda 
Está tratando de utilizar un 
formulario que no tiene en 
su aplicación o escribió 
en forma incorrecta 
su nombre. 
AI ejecutar el programa finaliza inmediatamente. 
S eg u ram en te por 
casualidad escribió la 
instrucción END en el 
evento Form Load o 
en A ctivate del 
fo rm u lario que se 
ejecuta primero. 
10 Proyecto! - Fornii (Código) 
F o rm L o a d 
Private Sub Form_Load() 
End 
End Sub 
Al llamar a un formulario, no se muestra ninguno. 
S e g u r a m e n t e 
m P ro ye cto l - F o im l (C ó d ig o ) 
escribió Hide en 
jc o m m a n d l C lic k 
lugar de Show. 
Private Sub Commandl_Click( ) Tj 
Fo rml.Hide — 
Fo rm2.Hide 
End Sub J É 
■ ill _l T 
290 G r u p o E d it o r ia l Megabyte" 
CAPÍTULO VI: Manejo de Varios Formularios 
PREGUNTAS DE REPASO N° 06 
1. ¿Cómo quita un formulario de sus aplicación? 
2. ¿Qué debe hacer si desea evitar que se muestre la ventana de diálogo 
cada vez que agrega un formulario a su aplicación? 
3. ¿Se puede grabar dos formularios con el mismo nombre? , 
4. ¿Cuáles son los pasos para agregar la calculadora de Visual Basic a una 
aplicación? 
5. ¿Es obligatorio ocultar un formulario para visualizar otro durante la 
ejecución de una aplicación? 
6. ¿Se puede agregar a una aplicación un formulario que en su propiedad 
Ñame tenga el mismo nombre de uno de los formularios de dicha 
aplicación? 
7. ¿Cuál es la diferencia entre Hide y Unload? 
8. ¿Qué debe hacer si en una aplicación tiene varios formularios y desea 
visualiza o modificar uno de ellos? 
9. Explique cómo se adiciona un formulario ya creado a una nueva aplicación. 
10. Cuando se ejecuta una aplicación, Visual Basic en forma predeterminada 
ejecuta el formulario N °___. 
11. ¿Qué m ensajes de error se visualizan cuando no puede agregar 
formularios existentes a su aplicación y a qué se deben? 
12. ¿Cómo nos podemos referir a la propiedad de un control que se encuentra 
en otro formulario? 
13. ¿Cuál es la diferencia entre Show y Load? 
14. Explique la palabra clave Me. 
15. Explique cómo se adiciona un formulario en blanco a una aplicación. 
16. Si tiene una aplicación con 5 formularios. Cuando grabe la aplicación 
cuántos nombres debe ingresar. 
17. ¿Qué debe hacer para que Visual Basic ejecute primero un formulario 
diferente al que ejecuta en forma predeterminada? 
18. ¿Cómo se declara una variable o procedimiento para poder usarlo en 
cualquier formulario de una aplicación? 
19. ¿Cuál es la diferencia entre la calculadora del Visual Basic y la 
calculadora del Windows? 
20. ¿Cuando quita un formulario de su aplicación, se borra físicamente del 
disco de su computadora? 
La creatividad es muy importante, form úlese nuevas aplicaciones o 
intercambie aplicaciones propuestas entre sus compañeros de 
estudio y desarrollarlas con la finalidad de enriquecer sus 
conocimientos. 
I p l l ^ G r u p o E d it o r ia l Megabyte 291 é m m
CAPITULO VII 
Cacílen; CONGRESO 
Na me : 
"IñgrescT 
Indes.: 
tlPlPí-CintextlD : J o 
Ch© cke>d T ? ELnabl&d 
NeaotlatePccsIbciri 
R? risible 
SISTEMA 
DISEÑO 
DE 
MENÚ
C A P IT U L O V II: D iseño de M en ú 
D I S E Ñ O D E M E N Ú 
Para activar el editor de menú puede seguir uno de los siguientes pasos: 
1. De la barra de menú elegir la opción Tools (Herramientas) y luego Menú 
Editor. 
2. Presionar las tecla <CRTL> + E. 
3. Hacer un click en el botón de Diseño de Menú. 
H BOTÓN DE DISEÑO DE MENÚ 
El editor de menú es: 
CAPTION 
Permite escribir la opción que deseamos visualizar en el menú. 
Puede usar el & para subrayar una letra de una opción. 
ÑAME 
Permite asignarle un nombre a cada opción. Es obligatorio que toda opción 
tenga un nombre. Este nombre debe ser único, es decir, no deben, existir dos 
opciones con el mismo nombre y además los nombres no pueden tener 
espacios en blanco. 
INDEX 
Se utiliza en caso que queremos usar un array de opciones. 
SHORTCUT 
Permite asignar teclas de acceso rápido a cada opción. No puede usarse 
para las opciones principales. 
CHECKED 
Sirve para indicar con un aspa si una opción está activa. 
I p f l ^ G r u p o E d it o r ia l Megabyte 295 a »
V4s?0¡k ', VISUAL BASIC como debe ser. 
EN A BLED 
Permite desactivar una opción para que no se pueda elegir. 
V ISIB LE 
Permite que una opción se pueda visualizar o no. 
W IN D O W LIST 
Permite especificar si un menú mantiene una lista de las ventanas abiertas 
usando un aspa a la izquierda del elemento de la lista que representa la 
ventana activa. 
FLEC H A IZQU IERDA 
Permite mover una opción más a la izquierda dentro del menú con la finali­dad 
que se ubique en un nivel más alto. 
FLE C H A DERECHA 
Mueve una opción más a la derecha con la finalidad que sea una subopción 
de la que se encuentra en la parte superior. Las opciones principales deben 
estar bien a la izquierda y las subopciones más a la derecha según el nivel 
que le corresponde. 
. . . permjte mover una opción hacia arriba. 
FLE C H A ARRIBA 
FL E C H A ABAJO 
: Permite mover una opción hacia abajo. 
NEXT (Siguiente) 
: Permite ir a la opción siguiente. 
INSERT (Insertar) 
: Permite insertar una nueva opción. 
D ELETE (Elim inar) 
: Permite borrar una nueva opción. 
NOTA 
Para crear una línea de separación entre grupos de opciones, escriba 
sólo un guión en el CAPTION y especificar cualquier nombre en ÑAME. 
La aplicación desarrollada anterior puede tener también un menú de opcio­nes. 
Por ejemplo en el formulario N° 03 se puede escribir el menú siguiente 
menu. 
C a Q t i o n : ] S J N G R E S O 
N a m e : j IN G R E S O | 
I n d e & : |~ 
C a n c e l 
H e l p C o n t e x t I D : j o 
r ~ C h e c k e d í*7 E n a b l e d 
Next 
Shortcut: [(None) 
NegotiatePosition : 
fP Risible f 
1 insert j 
3 
Jo - N o n e T 1 
W in d o W L is t 
D e l e t e I 
■D A TO S & P E R S O N A L E S C t r l + P 
■D A TO S & A C A D E M IC O S C trl-t-A 
■D A TO S & F A M IL IA R E S C t r l + F 
F I& N A L IZ A R 
■NO 
■SI C t r l + Q 
2 9 6 G r u p o E d it o r ia l Megabyte < 
CAPITULO VII: Diseño de Menú 
Al ejecutar la aplicación se visualiza las ventanas siguientes. El gráfico es 
opcional y está diseñado con un Picture Box. 
IN G R E S O FIN A LIZ A R 
IN G R E S O 
NOTA: 
Cada opción se considera un botón de comandos, esto quiere decir 
que Ud. puede escribir instrucciones dentro de cada una de ellas, las 
cuales se ejecutan cuando el usuario elige dicha opción. 
Las instrucciones de cada opción en esta aplicación son las mismas de los 
botones de comandos del formulario N° 03 de la aplicación N° 30. 
Si no desea ocultar el formulario del menú principal cuando se llame a un 
formulario, no escriba la instrucción FORM3.HIDE 
Privale Sub DA TOSPER_Click() 
Fomú.Hide 
Fonn4.Show 
End Sub 
Private SiéDATOSACA_Qkk() 
Fomú.Hide 
Fomó.Sliow 
EjtdSub 
Private Sub DATOSFAR__Qi<M) 
Forrn3.Hide 
FomúSIiow 
EtidSub 
La opción Salir debe tener la instrucción END. 
G r u p o E d it o r ia l Megabyte 2 9 7
l i l i l í VISUAL BASIC como debe ser... 
INSTRUCCIÓN PQPUPMENU 
Detiene la ejecución del programa y activa el menú en el formulario. El 
programa continua su ejecución cuando deja de utilizar el menú. Su sintaxis 
es: 
PopupM enu Nombre, Ubicación,X, Y,Opción,Negrita 
Nombre 
Es el nombre del menú que desea activar. 
Ubicación 
Para indicar en qué parte de la pantalla se va a ubicar el menú en relación 
a la posición del formulario donde hizo clic y qué comportamiento debe 
tener. Sus valores pueden ser: 
Para Ubicación 
0 (Predeterminado). El menú a la derecha de donde hizo clic. 
4 El menú se muestra en el centro de donde hizo clic. 
6 El menú se muestra a la izquierda de donde hizo clic. 
Para Comportamiento 
0 Ignora la pulsación del botón derecho del Mouse. 
2 El menú reconoce la pulsación del botón derecho del Mouse. 
Para cambiar la Ubicación y el Comportamiento se utiliza la palabra OR. 
Por ejemplo, la siguiente instrucción activa el menú Ingreso en el centro de 
donde hace Clic y reconoce el botón derecho del Mouse. PopupMenu In­greso 
4 Or 3. 
X, Y 
Es la posición horizontal (X) y vertical (Y) del formulario donde desea mos­trar 
el menú. 
Opción_Negrita 
Sirve para indicar el nombre de una de las opciones del menú que desea 
visualizar en negrita cuando se muestra el menú. 
Por ejemplo, La siguiente instrucción activa el menú INGRESO en las co­ordenadas 
5000, 6000 y pone en negrita la opción DATOSPER. 
No reconoce la pulsación del botón derecho del Mouse (si un valor no se 
indica, se deja una coma). 
PopupM enu Ingreso„5000.6000,DatosPer 
NOTA: 
Sólo el nombre del menú es obligatorio. Esta instrucción normalmente se 
escribe en el evento MouseDown o MouseUp explicado en la página N° 52. 
Por ejemplo, la instrucción anterior se ejecua cuando el usuario hace clic 
con el botón Derecho del Mouse en cualquier parte libre del formulario. 
2 9 8 G r u p o E d it o r i a l Megabyte ^ ¡ |||¡ |f 
CAPITULO Vil: Diseño de Menú mm 
CONTROL TOOLBAR 
^¿J 
Permite crear junto con el control Imagelist, barras de herramientas para 
que acompañen a un menú de opciones. La barra de herramientas son un 
conjunto de botones con un texto y/o gráfico que se utilizan para acceder de 
una manera rápida a las opciones más utilizadas de un menú. Como por 
ejemplo: 
D & s ü zl X f 
Nuevo Abrir Grabar Imprimir Ordenar Eliminar Ayuda Salir 
Estos gráficos Ud. los puede colocar en la barra de herramientas de cual 
quier menú, siempre y cuando existan en su computadora. Los nombres de 
cada uno de ellos en el orden en que se visualizan son: New.bmp, Open.bmp, 
Save.bmp, Print.bmo, Sortasc.bmp, Delete.bmp, Help.bmp. y Trffc 14.ico 
Puede utilizar en la barra de herramientas cualquier otro gráfico con la ex 
tensión *.BMP o *.ICO. 
Si este control no se encuentra en la caja de herramientas debe seguir cual­quiera 
de los siguientes pasos: 
1. En la caja de herramientas haga click con el botón derecho y elija la 
opción COMPONENTES. 
2. De la opción Project de la barra de menú elija COMPONENTES. 
3. Pulse las teclas <CRTL> + <T>. 
De la lista de componentes haga click en la casilla del control llamada: 
Microsoft Windows Common Controls. 
También se puede llamar este control, si elegimos la opción CONTROLAS 
DE VB EDICION EMPRESARIAL, en el momento de ingresar a Visual 
Basic o crear un nuevo proyecto. 
G r u p o E d it o r i a l Megabyte 2 9 9
VISUAL BASIC como debe ser... 
PRINCIPALES PROPIEDADES DEL CONTROL TOOLBAR: 
Las propiedades principales del control se obtiene con sólo elegir la propiedad 
Custumize (personalizado). Se visualiza una ventana con tres hojas o fichas: 
General, Botones e Imagen. 
El contenido de la hoja General es: 
v  :■ ' ' -v m • <- - ■; ; . . .w >,? . ■ ■ •" - jü 
G o n o r a l J Botones» | I m a g e n J 
fc íjo u s e P o inter: ................ : - i 
im o ig e L is t j < N in g u n o > -J 
B o r d e irS ly l® ] ti - c c N o n a rJ 
A ja p ta o ra n c ra : j 1 -c c 3 D .zJ 
Q L E P r o p M o c l o : Jü c c O LEI D r o p 1' J o ñ o j d 
1 le J p C o n t e x t lD 1" M é lp ¿ íle : | 
D u tto n tJ o ig h t. J2 6 4 H r ? A llo w C u s t a t r iiz e W W r o p p a b l e 
B u tto n W id th : j ? 8 8 .0 0 S h o w T i p s Fs E n a b l e d 
L A c e p te « ¡ C a n c e la r A y u d e 
MOUSEPOINTER 
Se utiliza para indicar la forma que tendrá el puntero del mouse cada vez 
que lo ubiquemos dentro de la barra de herramientas. Si desea como puntero 
del mouse un gráfico seleccionado por Ud. Debe elegir la última opción 
(99-ccCustom). La selección del gráfico los puede hacer en la página Imagen 
como se verá más adelante. 
IMAGELIST 
Se utiliza para seleccionar el control ImageList desde donde queremos 
obtener los gráficos para la barra de herramientas. 
Ud., debe dibujar primero el control ImageList en el formulario y asignar los 
gráficos antes de comenzar a darle las propiedades al control ToolsBar 
(Capitulo IV). 
BORDERSTYLE 
Selecciona el estilo del borde de la barra de herramientas. 
APPEARANCE 
Selecciona la apariencia de la barra de herramientas. 
OLEDROPMODE 
Establece el modo en que un componente de destino realiza las operaciones 
de colocación. 
HELPCONTEXTID 
Permite indicar un número de contexto asociado a un objeto. Se utiliza para 
proporciona Ayuda interactiva para la aplicación. 
BUTTONHEIGHT 
Permite indicar la altura de los botones. 
300 G r u p o E d it o r ia l Megabyte ^ §¡j|f|f 
CAPITULO Vil: Diseño de Menú 
BUTTONWIDTH 
Permite indicar el ancho de los botones. 
HELPFILE 
Aquí se indica la ruta de acceso y el nombre de un archivo de Ayuda de 
Microsoft Windows usado por la aplicación para presentar Ayuda o 
documentación en pantalla. 
ALLOWCOSTOMIZE 
Se utiliza para indicar si el usuario final puede personalizar un control Tool bar 
con el cuadro de diálogo Personalizar barra de herramientas. 
SHOWTIPS 
Se utiliza para indicar si se debe visualizar el texto de ayuda asignado a 
cada botón. 
WRAPPABLE 
Se utiliza para indicar si el tamaño de los botones de la barra de herramientas 
depende del tamaño del formulario. 
ENABLED 
Permite activar o desactivar la barra de herramientas. 
El contenido de la hoja Botones es: 
G e n e ra l B otone# j im a g e n j 
In d ex : - J T * | »1 | In s e rta r b o tó n | Q uito/ b o tó n 
C o p tiQ n | d e s c r ip tio n : | ' 
¥«>lue [o tb r U n p r e s s e d ' ~^| 
S M ® jo tb rO e fe u lt V^idth (P la c e h o ld e r ) | 
lag | 
T o o lT t p T e g t J~ 1 1 
Im a g e . 
F? V is ib le & fc n e b le d f~ h jix e d S ta ie 
INDEX 
Visualiza o selecciona cualquiera de los paneles creados en la barra de 
estado. También sirve para identificar a cada uno de los botones. 
CAPTION 
Permite escribir un texto el cual se va a visualizar en el botón de la barra de 
herramientas. 
KEY 
Permite asignar uno o más caracteres que van a identificar a cada panel. 
No acepta números. 
STYLE 
Permite seleccionar estilo de cada botón. 
G r u p o E d it o r ia l Megabyte 301 ^
VISUAL BASIC como debe ser... «il 
Ejemplo de una aplicación utilizando Menú, ToolBar y StatusBar. 
Sub M enú de Ventas: 
BIENVE 
Calculadora 
Actualizar la Fecha y Hora 
Copia de Seguridad 
D.Û.S. 
AL 
SISTEMA 
2 9 / 0 5 / 9 9 C h ic la y o - P e r ú  ' I 6 :4 4 A M 
Nuevos Usuarios 
Borrar Usuarios 
Cambiar Clave 
Sub M enú de Utilitarios: 
PRODUCTOS CUENTES UTILITARIOS SALIR 
Realizar Ctil+R I 
m ili 1,1') 'U .’I.IMUMMWI 
Presupuestos 
Registro de Ventas 
AL 
SISTEMA 
Por Vendedor Qrl+V 
Por Linea Ctrl+L 
Por Producto Ctrl+P 
Por Fecha Ctil+F 
Por T urno Ctrl+T 
A . 2 9 / 0 5 / 9 9 C h ic la y o - P e r ú 6 :4 4 A M 
3 0 2 G r u p o E d it o r ia l Megabyte 
.^ .5 CAPÍTULO VII: Diseño de Menú < € ¡¡¡¡1 
Si la opción VENTAS es la más utilizada, podemos programar de tal mane­ra 
que el usuario la active haciendo un Click con el botón derecho del Mouse 
en cualquier parte del formulario. 
P R O D U C T O S C L I E N T E S V E N T A S U T I L I T A R I O S S A L I R M W a 
BIENVENIDOS 
AL 
S I S T E M I Realizar Qrl+R 
------------- Consultar Ventas ► 
Presupuestos 
Registro de Ventas 
f  2 9 / 0 5 / 9 9 C h i c l a y o - P e r ú Í > 1 3:1 4 A M 
...... » 
Para esto, debe programar en el evento MouseDown del formulario: 
Private Sub FonnMouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) 
If Button = 2 Then 
PopupMenu Ventas 
End If 
End Sub 
PROGRAMAR DENTRO DEL TOOLBAR 
Suponiendo que el primer botón está ligado a la opción Nuevos Clientes 
(Form7), el 2do a Realizar Ventas (Form 19), el 3ro al Cuentas Corrientes 
(Form 13) y el 4to a la Calculadora. Entonces debe hacer doble clic en 
cualquiera de los botones y programar: 
Private Sub Toolbarl JButtonClick(ByVal Button As MSComctlLib.Button) 
If Button.Index = 1 Then Form7.Show 
If Button. Index = 2 Then Forml9.Show 
If Button.Index = 3 Then Forml3.Show 
If Button.Index = 4 Then Shell “C:WindowsCalc.exe", 1 
End Sub 
¡ ||¡ |j ¡ ^ G r u p o E d i t o r i a l Megabyte 3 0 3 ^ § ¡ |¡ ||l
é S S tè ' VISUAL BASIC como debe ser... 
Dentro de las propiedades de la Barra de Herramientas, en la hoja Botones 
también se muestra el siguiente marco: 
ButtonMenus 
Index: [1 Insertar ButtonMenu | Quitar ButtonMenu | 
Text: | Keji: | Tag: | 
l>7 Enabled 17 Visible 
Esto permite agregar Sub Opciones a cualquier botón de la Barra de 
Herramientas, como por ejemplo: 
Para realizar esto, debe seleccionar en la hoja botones (Propiedad Index) el 
botón al cual desea asignarles sub opciones y en su propiedad Style asignar 
el valor 5 - tbrDropDown, luego dentro del marco ButtonMenus insertarle 
(Insert ButtonMenu) las sub opciones que desea, usando la propiedad Text 
para escribir el título de cada opción. 
Para saber qué sub opción ha elegido el usuario se debe programar 
en el evento ButtonMenuClick usando la propiedad Text. 
Prívate Sub Toolbarl_ButtonM enuClick(ByVal ButtonMenu As ...) 
I f ButtonMenu.Text = “Ordenado ” Then 
‘Escriba aquí las instrucciones para la opción Ordenados 
MsgBox “Ordenado”, 64, “Bienvenido” 
End I f 
I f ButtonMenu.Text = “Sin Ordenar” Then 
‘Escriba aquí las instrucciones para la opción Sin Ordenar 
MsgBox “Sin Ordenado”, 64, “Bienvenido” 
End I f 
End Sub 
| | | | | | ^ 3 0 4 G r u p o E d it o r ia l M e g a b y t e ^ j j j ^ l 
CAPITULO Vil: Diseño de Menú 
APLICACIÓN DESARROLLADA N° 43 
Esta aplicación consiste en adicionar dos formularios más al menú anterior 
(form2 y form3). 
En el formulario N° 2 se debe ingresar el nombre de un usuario y su respectiva 
clave de acceso (password). 
Son 3 usuarios los que acepta el sistema: 
USUARIO PASSWORD 
JULIO XYZ 
PEDRO ABCD 
ANA 1234 
El programa debe dar hasta tres oportunidades para ingresar. 
Si se termina las oportunidades, se activa el formulario N° 03 donde se 
muestra un mensaje para cerrar la aplicación llenándose de puntos de color 
negros el formulario. Para salir de la aplicación se debe presionar CTRL + 
ALT + SUPR o apagar la computadora. 
El usuario JULIO es el dueño de la empresa, por lo tanto debe tener acceso 
a todas las opciones del menú. 
El usuario PEDRO no debe ingresar a las opciones Actualizar los Precios 
ni a Cuentas Corrientes (deben estar desactivadas), además no debe 
visualizar la opción Usuarios. 
El usuario ANA debe tener desactivadas las opciones M antenimiento que 
se encuentra dentro de Productos e Internet que se encuentra dentro de 
Utilitarios. Además no debe visualizar la opción VENTAS. 
Grupo Editorial Megabyte 305 « ¡ K
<í> 
| BASIC como debe ser. 
PASO N° 01: 
Agregar dos formularios más a la aplicación anterior que contiene el menú. 
El formulario N° 02 debe tener dos etiquetas, dos cajas de texto y dos botones 
de comandos. 
El formulario N° 03 no debe tener ningún control. 
¡¡.ACCESO AL SISTEMA 
USUARIO 
CLAVE 
OK CANCELAR 
íi, Form3 
NOTA; 
Para llenar un formulario con puntos se debe utilizar la instrucción PSET, 
cuya sintaxis es: 
Nom brejControl.Pset (x,y), (color) 
Donde X, Y son las coordenadas del control donde desea escribir el punto y 
COLOR, es un valor que indica el color del punto, puede utilizar la función 
RGB o QBCOLOR. 
Si no se especifica el nombre del control, el punto se dibuja en el formulario 
activo. 
Las propiedades DrawWidth se utiliza para indicar el grosor del punto. 
Por ejemplo, las siguientes instrucciones muestran un punto de color celeste 
en el formulario activo. 
D raw W idth - 0 
P set (2 0 0 0 ,6 0 0 0 ), Q b c o lo r (11) 
PASO N° 02: Asignar las propiedades a los controles 
Al formulario N° 02, a las etiquetas y botones de comandos asígneles la 
propiedad Caption como se indica. 
El formulario N° 03 debe tener el valor FALSE en sus propiedades ControlBox 
y ShowinTaskbar y en su propiedad WindowState el valor 2 (Maximizado). 
@¡¡¡¡!¡¡¡{§¡j¡í? 306 G r u p o E d it o r ia l Megabyte 
CAPÍTULO VII: Diseño de Menú 
PASO N° 03: Escribir las instrucciones para los controles. 
Declarar la variable US en un módulo para poder compartirla entre los 
lormularios de la aplicación. Para ello, de la opción Proyecto elija Agregar 
Módulo. ____________ Proyectol - Modulel (Código) ¡aa 
(General) (Declaraciones) 
Public US As String 
Instrucciones del procedimiento Form_Activate del Formulario N° 01, 
para que al activarse este formulario que contiene el menú, se asignen las 
restricciones de acuerdo al usuario que se ingresó en el formulario N° 02. 
P r i v a t e S u b F o r m _ A c t i v a t e () 
S e l e c t C a s e US 
C a s e "JU LIO " 
Rem NO TIEN E NINGUNA RE STR ICC IÓ N 
C a s e "PEDRO" 
A c t u a l i z a r _ P r e c i o s . E n a b l e d = F a l s e 
C u e n t a _ C o r r i e n t e . E n a b l e d = F a l s e 
U s u a r i o s . V i s i b l e = F a l s e 
C a s e "ANA" 
M a n t e m i e n t o . E n a b l e d = F a l s e 
I n t e r n e t . E n a b l e d = F a l s e 
V e n t a s . V i s i b l e = F a l s e 
E n d S e l e c t 
E n d S u b 
NOTA: 
No olvide de utilizar el nombre correcto que asignó en la propiedad ÑAME a cada opción. 
Cuando grabe el módulo creado obtiene la extensión *.BAS. 
INSTRUCCIONES DEL FORMULARIO N° 02 
Instrucciones del Procedimiento Form_Activate. 
P r í v a t e S u b F o r m _ _ A c t i v a t e () 
T e x t l = ”" 
T e x t 2 = "" 
T e x t l . S e t F o c u s 
E n d S u b
i l l l É l * VISUAL BASIC como debe ser... CAPITULO VII: Diseño de Menú 
Instrucciones del Botón OK. 
Verifican si se ingreso el usuario y su password correcto y brindar hasta tres opor­tunidades 
para ingresar. 
Prívate Sub Command 1 _Click() 
Static OP As Byte 
Dim PW As String 
US = UCasefTextl) 
P W — T J C n sp( T e x t2 ) 
lf U S - “JULIO ” And PW = “XYZ” O rU S = “PEDRO" And 
PW = “ABCD ” Or US = “ANA ” And PW = “1234 ” Then 
Unload Form2 
Forml.Show 
ElseO 
P = OP + 1 
IfO P = 3 Then 
MsgBox “Datos Incorrectos" + Chr(13) + Chr(13) + “ Tiene “ _ 
+ Str(3 - OP) + “ oportunidades”, 16, “ACCESO DENEGADO’ 
Form3.Show 
Else 
MsgBox “Datos Incorrectos” + Chr(13) + Chr(13) + “ Tiene “ _ 
+ Str(3 - OP) + “ oportunidades", 16, “ACCESO DENEGADO” 
Form_Activate 
End If 
End If 
End Sub 
INSTRUCCIONES DEL FORMULARIO N° 03 
instrucciones del procedimiento Form_Activate 
Prívate Sub Form_Activate() 
Form3.Caption - “Cierre la aplicación, no tiene acceso” + Space(135) 
Mensaje 
End Sub 
instrucciones del Procedimiento MENSAJE 
Sub Mensaje() 
Dim x, y As Integer 
DrawWidth = 10 ‘Establece el grosor de los puntos a Imprimir 
Do 
Form3.Caption Mid(Form3.Caption, 2) + Left(Form3.Caption, 1) 
F orx - lT o 35000 
Ncxt x 
PSet (Rnd * ScaleWidth, Rnd * SaleHeight), QBColor(O) 
Loop 
End Sub 
IMPORTANTE 
Configure el Visual Basic de tal manera que ejecute primero el formulario N° 02. 
|¡ j § ¡ |^ 308 Grupo E ditorial M egabyte ^ § ¡¡1 
C O N T R O L SSTAB 
fSS, 
Permite diseñar varias páginas en un solo formulario con lo cual podemos 
también crear menús. 
Si este control no se encuentra en la caja de herramientas active la lista de 
componentes y haga clic en la casilla de Microsoft: 
M icrosoft Tabbed Dialog Control 
PRINCIPALES PROPIEDADES DE UN CONTROL SSTAB: 
ÑAM E 
Permite asignarle un nombre. Por default el nombre es Sstabl, Sstab2, Sstab3, 
etc. 
CAPTION 
Para escribir el título de la página que está seleccionada. 
ENABLED 
Para indicar si el control debe estar activado o no. 
FONT 
Para indicar el tipo, tamaño y estilo de letra. 
FORECOLOR 
Para seleccionar el color de las letras. 
TAB 
Para indicar la página que debe estar activa. 
TABORIENTATION 
Para indicar la posición del título de las páginas.. 
TABS 
Para indicar el número de páginas que debe tener el control. 
TABSPERROW 
Para indicar el número de páginas por fila. 
VISIBLE 
Para indicar si el control se del?e visualizar. 
* G r u p o E d i t o r i a l Megabyte 309 ^
VISUAL BASIC como debe ser... 
EJEMPLO: 
■ ■ ■ 
Usando SSTAB, los formularios 03, 04, 05 y 06 de la aplicación N° 30 se 
pueden desarrollar en un solo, como se puede observar a continuación. 
Las propiedades que debe asignar al control SSTAB es CAPTION: 
PERSONALES ACADÉMICOS FAMILIARES 
Dentro de cada hoja se deben dibujar las etiquetas, cajas de texto y botones 
de comandos correspondiente. 
fid isi 
Labell 
JSL5I 
INGRESO DE DATOS 
PERSÖHÄL|s|T ACADEMICOS J FAMILIARES 
Nombre 
Dirección 
Teléfono 
Fecha de Nac. 
Sexo 
NUEVO SALIR 
f f l I l l l l i i f a i M — T M 
| ING RESO DE DATOS 
PERSONALES ; ACADEMICÓSfl FAMILIARES 
Centro de Esludios [" 
Especialidad p 
Gclo | 
Turno | 
Aula | ” 
NUEVO | SALIR [ 
I INGRESO DE DATOS 
' PERSONALES 7 ACADEMICOS | f M ÜARÉsT 
Apoderado(a) |~ 
N! de hermanos ["" 
Lugar de Origen |~ 
Tipo de Vivienda | 
NUEVO [ SALIR [ 
3 1 0 G ru po E d ito r ia l Megabyte 
CAPITULO VII: Diseño de Menú 
ERRO RES MAS COMUNES 
Microsoft Visual Basic 
El control M enu debe tener un nom bre 
Aceptar j | Ayuda 
Se olvido de asignarle el 
nombre (Ñame) a la opción 
que Visual Basic tiene 
seleccionada. 
Toda opción debe tener un 
nombre. 
Microsoft Visual Basic 
No se puede colocar aquí una marca de verificación 
Aceptar ; Ayuda 
Microsoft Visual Basic 
O El elemento de menú ha saltado un nivel 
A ce p ta r J j | Ayuda 
Microsoft Visual Basic 
0 No se puede asignar una tecla de método abreviado a un menú de nivel superior 
Aceptar i Ayuda 
Microsoft Visual Basic C 
0 El elemento de la matriz de controles de menú debe tener un índice 
i Aceptar j Ayuda 
A las opciones principales 
no se les puede asignar 
Checked, entonces 
desactive esta casilla a la 
opción que Visual Basic tie­ne 
seleccionada. 
Pulsó dos o más veces la fle­cha 
a la derecha saltando 
uno o más niveles. Pulse la 
flecha a la izquierda en la 
opción seleccionada para 
corregir este error. 
A asignado una tecla rápida 
(Shortcut) a una opción prin­cipal. 
Las opciones que tiene sub 
opciones no pueden tener 
Shortcut. 
Escribió dos opciones con el 
mismo nombre (Ñame). 
Dos opciones pueden tener 
el mismo Caption, pero noel 
mismo nombre. 
G r u p o E d it o r ia l Megabyte 311
l S l l ! > VISUAL BASIC como debe ser... 
PREGUNTAS DE REPASO N° 07 
1. ¿Con qué finalidad se puede crear utilizar un menú? 
2. ¿Cuántas y cuáles con las formas de ingresar al Editor de Menú? 
3. ¿A qué opciones de un menú se les puede asignar la propiedad Shortcut? 
4. ¿Cuál es la diferencia entre la propiedad Caption y Ñame? 
5. ¿Qué requisitos debe cumplir la propiedad Ñame de una opción? 
6. ¿Cómo se programa dentro de una opción? 
7. ¿Cuál es la importancia de un control ToolBar? 
8. ¿Con qué otros controles se puede crear un menú? 
9. ¿Cómo se sabe la opción que el usuario a elegido de un control ToolBar? 
10. ¿Para qué sirve y cómo funciona PopupMenu? 
11. ¿Cuál es la ventaja y cómo funciona el control SSTAB? 
12. ¿Qué control permite asignar gráficos al ToolBar? 
13. ¿Qué debe hacer si la opción para ingresar al Editor de Menú 
(Herramientas/Editor de Menú) se encuentra desactivado? 
14. ¿Se puede asignar propiedades a las opciones de un menú dentro de un 
programa? 
15. ¿Para qué sirve la flecha hacia abajo y hacia arriba dentro del Editor 
de Menú? 
16. ¿Cuál es la ventaja de usar un menú en un aplicación? 
17. ¿Dos opciones pueden tener el mismo nombre (Ñame)? 
18. ¿Se puede dejar espacios en blanco en la propiedad Caption y Ñame 
de una opción? 
19. ¿Qué propiedades de un control Tovar se consideran más importantes? 
20. ¿Cuál es la diferencia entre las propiedades Tabs y TabsPerRow del 
control SSTAB? 
La CREATIVID AD es m uy importante, form úlese nuevas 
aplicaciones o intercambie aplicaciones propuestas entre sus 
compañeros de estudio y desarróllelas con la finalidad de 
enriquecer sus conocimientos. 
G r u p o E d it W 3 1 2 o r ia l Megabyte ^ |§ |¡ |j j i 
CAPITULO VIII 
C h l o l a y o -*• 
P u * r t D E la in 
L â r f i b r a q u a 
3 USp 3 
R E S I S T R D A C T U A L | T O P O S | 5A U R | 
MANEJO 
DE 
ARCHIVOS
> CAPÍTULO VIII: Manejo de Archivos < € ¡ 8 ¡ 1 ^ 
DRTVELISTBOX 
O 
Muestra las unidades de disco permitiendo seleccionar cualquiera de ellas. 
Su principal propiedad es DRIVE que indica la unidad que se encuentra 
ac tiva o que se desea activar. Sólo se puede cambiar de unidad durante la 
ejecución del programa. Su nombre predeterminado es Drivel, Drive2, etc. 
Al dibujarlo se visualiza 
j — i c: [CETDI] 
DIR LISTBO X 
Muestra las carpetas, llamadas también directorios, de la unidad de disco 
que se encuentra activa. Su principal propiedad es PATH que indica la ruta 
que se encuentra activa o que se desea activar. Sólo se puede cambiar de 
unidad durante la ejecución del programa. Su nombre predeterminado es 
D irl, Dir2, etc. y cuando se dibuja se visualiza: 
FILELISTBOX 
Q l Archivos de programa — 
: i DevStudio 
Muestra los archivo que pertenecen a la carpeta que se encuentra activa o 
a la establecida en su propiedad PATH durante la ejecución del programa. 
Su nombre predeterminado es F ilel, File2, etc. y cuando se dibuja se visualiza: 
ADDSCCES.DLL 
ADDSCCUS.DLL ! 
aplicación sueldo neto, ene 
aplicación sueldo neto.vbp H 
G r u p o E d it o r ia l Megabyte 3 1 5
VISUAL BASIC como debe ser... 
Las principales propiedades del control FileListBox son: 
ARCHIVE 
Para indicar si muestra los archivos con atributo de modificado. 
FTLENAME 
Obtiene el nombre del archivo seleccionado. 
fflDDEN 
Para indicar si muestra los archivos ocultos. 
NORMAL 
Para indicar si muestra los archivos con atributo de normal. 
PATH 
Indica la ruta del archivo seleccionado. 
PATTERN 
Acepta caracteres comodines (* y ?) para seleccionar los archivos que se desean 
visualizar. El signo de interrogación (?) reemplaza a un carácter y el asterisco (*) a 
dos o mas. 
READONLY 
Para indicar si muestra los archivos de solo lectura. 
SYSTEM 
Para indicar si muestra los archivos de sistema. 
A P L IC A C IÓ N D E SA R R O L L A D A N° 44 
La siguiente aplicación muestra las carpetas de la unidad selecciona y los archivos 
de cada carpeta que se selecciona. Para seleccionar una carpeta haga Doble Click en 
ella. 
MIRANDO ARCHIVOS 
le : [CETDI] 
â _ J C : 
Archivos de prograr- 
ADDSCCES.DLL 
ADDSCCUS.DLL 
aplicación sueldo neto.exe 
aplicación sueldo neto.vbp 
aplicación sueldo neto.vbw I 
Para desarrollar esta aplicación sólo se debe programaren el evento Change de los 
controles DriveListBox y DirListBox. 
Instrucciones del control DriveListBox: 
Prívate Sub Drivel_Change() 
Dirl.Path = Drivel.Drive 
End Sub 
Instrucciones del control DirListBox: 
Prívate Sub Dirl_Change() 
Filel.Path = Dirl.Path 
CAPITULO VIII: Manejo de Archivos 
A PLIC A C IO N D E SA R R O L L A D A N° 45 
La siguiente aplicación muestra las carpetas de la unidad selecciona y los 
archivos de la carpeta que se selecciona, además permite establecer el tipo 
de archivos a visualizar (ingresando la extensión) y cuando se muestran 
archivos *.EXE, los podemos ejecutar. 
U N I D A D C A R P E T A 
I — l e : |C. ] - I 1 — S l c A ■*. 1 
• W I N D O W S ■ ■ 
í""1 A rc h iv o s recibidos — ------1 
_ J C O M M A N D 
_ J C O N F I G 
r ~ l C o o k ie s 
i i Crystal 
A R C H I V O 
E x t e n s i ó n j ” E X E 
A C C S T A T .E X E 
A R P .E X E S i 
C O N T R O L E X E 
C S 3 K I T .E X E - r J 
Unidad |c: [CUCHO] 
Carpata |c:WINDOWS 
Archivo |CA4_C EXE 
Ejecutar el programa | £»alir j 
PASO N° 01: DIBUJAR LOS CONTROLES. 
PASO N° 02: ASIGNAR LAS PROPIEDADES. 
Asigne las propiedades sólo a las etiquetas y a los botones de comandos 
como se indica en la aplicación a desarrollar. 
La caja de texto Textl, debe estar en blanco. 
G r u p o E d it o r ia l Megabyte 317 w m
VISUAL BASIC como debe ser. 
PASO N° 03: ESCRIBIRLAS INSTRUCCIONES PARALOS CONTROLES. 
Instrucciones evento Form_Load 
Prívate Sub Form_Load() 
D rivel jC hange 
End Sub 
Instrucciones del control DriveListBox: 
Prívate Sub D rivel_C hange() 
D irl.Path = Drivel.Drive 
Label7 = Drivel.Drive 
End Sub 
Instrucciones del control DirListBox: 
Prívate Sub D irl_C hange() 
F ilel = Dirl.Path 
Label8 = D irl.Path 
Commandl .Enabled = False 
End Sub 
Instrucciones del control FileListBox: 
Prívate Sub Filel_C lick() 
Label9 = Filel.filename 
I f Right(UCase(Label9), 3) = "EXE" Then 
Commandl .Enabled = True 
Else 
Commandl .Enabled - False 
End I f 
End Sub 
Instrucciones del control Textl: 
Prívate Sub Textl_Change() 
Filel. Pattern = Textl 
End Sub 
Prívate Sub Textl _KeyPress(KeyAscii As Integer) 
c = Chr(KeyAscii) 
I f c = "*" O r c = "." O r e = "?" Then 
Textl JChange 
End I f 
End Sub 
Instrucciones del botón Ejecutar el Programa. 
Prívate Sub Com m andl _Click() 
Dim N n v JntPQpr 
N = Shell( D irl.Path + V + F ilel filenam e, 1) 
End Sub 
w 3 1 8 G r u p o E d it o r ia l Megabyte ^ 
CAPÍTULO VIII: Manejo de Archivos 
C O NM O N D IA LO G 
Presenta los cuadros de diálogo más comunes del Windows. Su nombre 
predeterminado es CommonDialogl, CommonDialog2, etc. 
Sus principales propiedades son: 
ACTION 
Se utiliza para indicar el cuadro de diálogo que deseamos activar. Los valores 
que puede tener son: 
0 Ningún cuadro 
1 Activa el cuadro de diálogo Abrir. 
2 Activa el cuadro de diálogo Guardar como. 
3 Activa el cuadro de diálogo Color. 
4 Activa el cuadro de diálogo Fuente. 
5 Activa el cuadro de diálogo Imprimir. 
6 Activa la ayuda del Windows. 
También se puede utilizar los métodos para activar el cuadro de diálogo que 
desea: ShowOpen (Abrir), ShowSave (Guardar como), ShowColor (Color), 
ShowFont (Fuente), ShowPrinter (Imprimir) y ShowHelp (Ayuda) 
EJEMPLO DE CUADROS DE DIALOGO 
_________lue 
Colores básicos: 
i r r r r r i r r 
■ r r r r i a s s 
■ r i ï E i i a i 
■ ■ ■ ■ ■ ■ ■ ■ 
■ r r R i i r i r 
Colores personalizados: 
r r r r~ r 
r 
r m m ® b 
Definir colores personalizados» 
Aceptar Cancelar 
. tr«pn©»«r* ' 
E 'la d o p«ecM<iro«rvidA. Liil« 
T *k > Arr*o La«»W iíI«i 
UOoadör)' LPT 1: 
r «nmnlqrio 
■ 3 
I Imprimir en un archivo 
Imprima - 
r»- T odo 
Comas 
Número de £«p¡«s; 
I Aceptar. I Cancelar | 
Fijante: 
I A n al N <m lo w 
"■i’ À badi M T C o n d e m S d rÄ l »r Aiiäi '•t1 Ai liti B lack — * 
1 T a c t y r t o 
I £ u l> ia y a d o ; AaBbY yZ z 
f ~ ...— ------- A lfa b e to : jKassiHiMasw»«*wa -i 
G r u p o E d it o r ia l Megabyte 3 1 9
s , VISUAL BASIC como debe ser... 
PR O PIE D A D ES PARA EL CU A D R O FU EN T ES 
Antes de usar el método ShowFont tiene que asignar a la propiedad Flags 
una de tres valores: 
&H3 Muestra los tipos de letra que acepta el monitor y la impresora. 
&H2 Muestra sólo los tipos de letra que acepta la impresora. 
&H 1 Muestra sólo los tipos de letra que acepta el monitor. 
Si no establece Flags, aparecerá el siguiente mensaje de error: 
N o h a y fu e n te s ins ta la d a s . 
P a ra instalarla s, a b r a la c a r p e t a F u e n t e s e n el P a n e l d e co n tro l. 
También puede asignar a la propiedad Flags, entre otros, los siguientes valores: 
&H200 Activa el botón Aplicar en el cuadro de diálogo. 
&H 100 Especifica que el cuadro de diálogo permite los efectos de tachado, 
subrayado y color. 
&H2000 Especifica que el cuadro de diálogo selecciona sólo tamaños de 
fuente dentro del intervalo especificado por las propiedades Min y 
Max. 
NOTA: 
Utilice el operador OR para asignar dos valores a la propiedad Flags, por 
ejemplo, se puede escribir en un botón de comandos: 
CommonDialogl.Flags = &H2 Or &H100 
C om m onD ialogl. ShowFont 
COLOR 
Obtiene el color seleccionado para la letra. 
FO NTBO LD 
Indica si ha seleccionado negrita. 
FONTITALIC 
Indica si ha seleccionado cursiva. 
FONTSTRIKETHRU 
Indica si ha seleccionado tachado. 
FONTUNDERLINE 
Indica si ha seleccionado subrayado. 
FONTNAM E 
Obtiene el nombre del tipo de letra seleccionada. 
FONTSIZE 
Obtiene el tamaño de letra seleccionada. 
^ 320 G r u p o E d it o r ia l M egabyte^ 
CAPITULO VIII: Manejo de Archivos % 
PR O PIE D A D E S PARA EL C U A D R O C O LO R 
COLOR 
( )btiene el color seleccionado. 
I'LAGS 
So utiliza para configurar el cuadro de diálogo Color. 
I .os valor que puede tener son: 
&H2 Presenta el cuadro con los colores personalizados. 
& 114 Desactiva el botón de comando Definir colores personalizado. 
PR O PIE D A D E S PA RA E L C U A D R O A B R IR Y G U A R D A R 
DEFAULTEXT 
Indica la extensión predeterminada de los archivos. 
KILENAME 
Obtiene el nombre del archivo seleccionado. 
FILTER 
I establece los filtros para los tipos de archivos a visualizar. 
La sintaxis apara establecer un filtro es: 
Filter = descripciónl filtrol descripción2 filtro2... 
Para separar cada descripción y filtro debe utilizar el carácter N° 124 (|). 
Ejemplo, las instrucciones: 
C'onimonDialogl.Fílter = “Documentos(*.Doc)|*.Doc|Gráficos(*.Bmp)|*.Bmp|Todos|*.*” 
CommonDialogl.ShowOpen 
Muestran la siguiente ventana de Abrir: 
Abrir 1 
Buscar en | _ j| Vfb z J £ j f t j f ü ü j 
_ j Clisvr _ J samples L_j Winapi 
_ ] Graphics _ J Setup _ j Wizards 
_ J Help __1 setupkit 
_J0 db c _ J T empiate 
_ j report C_1 Tsql 
_ j Repostry __1 vbortline 
Nombre de archivo: 1 | £ btlf J 
Archivos de tipo: j Documentos^. Doc) _LÍ Cancelar I 
!Documenios(*.Doc1 ■JMNIrilrittflHpMU .......... . ■ 
Gráficos(“ Bmp) 
Todos 1-------------------------- NOTA: 
Si no especifica la propiedad Filter, el combo de Archivos de Tipo se muestra 
en blanco, permitiendo ver todos los archivos. 
G r u p o E d it o r ia l Megabyte 321
VISUAL BASIC como debe ser... 
IIITERIMMX 
Para indicar el filtro predeterminado de los que se ha colocado en la propiedad Filter. 
Por ejemplo, la siguiente instrucción hace que se muestre el segundo filtro de los 
establecidos: 
CbmnlmDial(^lEltel•=',DocuI^xa^tos(*I)c)c)(*.Doc|Graficos(*.Bn^p)|*.Brnpf^odos(*.*,' 
CbmrnonDialogLFilterindex=2 
CommonDialog LShowOpen 
FLAGS 
Se utiliza para configurar el cuadro de diálogo Abrir o Guardar. 
Los valor que puede tener son: 
&H1000 Especifica que el usuario sólo puede introducir nombres de archivos 
existentes en el cuadro de texto Nombre de archivo. Si este indicador está 
activado y el usuario escribe un nombre de archivo no válido, se mostrará 
una advertencia. 
&H4 Oculta la casilla de verificación Sólo lectura. 
&H8 Hace que el cuadro de diálogo restablezca como directorio actual el que lo 
era en el momento de abrirse el cuadro de diálogo. 
&H8000 Especifica que el archivo devuelto no tendrá establecido el atributo de 
Sólo lectura y no estará en un directorio protegido contra escritura. 
&H2 Hace que el cuadro de diálogo Guardar como genere un cuadro de mensajes 
si el archivo seleccionado ya existe. El usuario tiene que confirmar si desea 
sobrescribiré! archivo. 
IMTDIK 
Establece la ruta de la carpeta predetermina al para Abrir o Grabar un archivo. Por 
ejemplo, la siguiente instrucción hace que se muestre la carpeta del Windows en 
forma predeterminada. 
CommonDialogl.InitDir - "c:windows" 
CommonDialog l.ShowOpen 
PROPIEDADES PARA EL CUADRO IMPRIMIR 
COPIES El número de copias que se van a imprimir. 
FROMPAGE 
La página en la que se inicia la impresión. 
TOPAGE 
La página en la que se detiene la impresión. 
Los principales valores de la propiedad Flags 
&H80000 Desactiva la casilla para Imprimir en un archivo. 
&H 100000 Oculta la casilla para Imprimir en un archivo. 
&H40 Hace que el sistema presente el cuadro de diálogo Configurar impresora 
en vez del cuadro de diálogo Imprimir. 
&H20 Devuelve o establece el estado de la casilla de verificación Imprimir en un 
archivo. 
&H400 Devuelve el nombre de la impresora predeterminada. 
€ ¡ S ¡ I 5' 3 2 2 G r u p o E d i t o r i a l M e g a b y te < | § | g 
CAPITULO VIII: Manejo de Archivos 
A P LIC A C IÓ N D E SA R R O L L A D A N° 46 
La siguiente aplicación permite asignar un gráfico, un color de fondo, un 
tipo y color de letra utilizando las cajas de diálogo. 
CUADROS OE DIÁLOGO azi 
VISUAL BASIC 
FUENTE GRÁFICO FONDO LETRAS 
PASO N° 01: DIBUJAR LOS CONTROLES. 
Dibuje una etiqueta, un PictureBox, cuatro botones de comandos y un control 
CommonDialog como se muestra a continuación: 
m u 
üi. Formi 
LabeH 
Commandl Command2 UommandS Command4 
PASO N° 02: ASIGNAR LAS PROPIEDADES A LOS CONTROLES. 
Asigna la propiedad Caption a la etiqueta y a los botones de comandos. Al 
control PictureBox asígnele el gráfico indicado o cualquier otro. El control 
CommonDialog no tiene ninguna propiedad. 
¡ § |¡ ||1 ^ G r u p o E d it o r ia l Megabyte 323
¡¡B B k VISUAL BASIC como debe ser... 
PASO N° 03: ESCRIBIR LAS INSTRUCCIONES PARA LOS CONTROLES. 
Instrucciones del botón FUENTE 
Prívate Sub Commandl_Click() 
CommonDialogl.FontName = "ARIAL" ‘Tipo de letra predeterminada 
CommonDialogl.Flags = &H3 Or &H100 
CommonDialog 1 .ShowFont 
Labell. FontName = CommonDialogl .FontName 
Labell .FontSize = CommonDialogl .FontSize 
Labell. Fontltalic = CommonDialogl .Fontltalic 
Labell. FontUnderline = CommonDialogl.FontUnderline 
Labell.ForeColor = CommonDialogl .Color 
End Sub 
Instrucciones del botón GRÁFICO 
Prívate Sub Command2_Click() 
CommonDialogl.Filter = "WMF*.wmfICO*.icoBMP*.bmpTodos*. *" 
CommonDialogl. ShowOpen 
Picturel.Picture - LoadPicture(CommonDialogl.filename) 
End Sub 
Instrucciones del botón FONDO 
Prívate Sub Command3_Click() 
CommonDialogl.Flags - &H2 
CommonDialogl. ShowColor 
Picturel.BackColor - CommonDialogl.Color 
Labell. BackColor = CommonDialogl .Color 
End Sub 
Instrucciones del botón LETRAS 
Prívate Sub Command4_Click() 
CommonDialogl .Flags - &H2 
CommonDialogl.ShowColor 
Labell.ForeColor = CommonDialogl.Color 
End Sub 
l i l i l í 324 G r u p o E d it o r ia l Megabyte <IÉp l l 
CAPÍTULO VIII: Manejo de Archivos % 
USO DE LA IM PRESORA 
Para manejar la impresora dentro de un programa se debe utilizar el objeto PRINTER. 
PRINCIPALES PROPIEDADES DELOBJETO PRINTER: 
COLORMODE 
Se utiliza sólo para impresoras a color para indicar si va a imprimir en color o negro (escala de 
grises). Si le asigna el valor uno (1) imprimir en negro y dos (2) imprime en color. 
COPIES 
Indica el número de copias a imprimir. 
CURRENTX 
Establece la posición Horizontal donde deseamos imprimir. 
CURRENTY 
Establece la posición Vertical donde deseamos imprimir. 
DEVTCENAME 
Obtiene el nombre del dispositivo. 
DRIYERNAME 
Obtiene el nombre del controlador. 
FONTBOLD 
Permite indicar si se imprime en negrita. 
PONTITALIC 
Permite indicar si se imprime en cursiva. 
FONTSTTRIKErHRU 
Permite indicar si se imprime con letras tachadas. 
FONTUNDERLINE 
Permite indicar si se imprime con subrayado. 
FONTNAME 
Permite establecer el tipo de letra para la impresión. 
FONTSIZE 
Permite establecer el tamaño de letra para la impresión. 
HEJGHT 
Para indicar la altura del papel donde desea imprimir. 
WIDTH 
Para indicar el ancho del papel donde desea imprimir 
ORIENTARON 
Permite establecer si se imprime en forma horizontal o vertical. Asignándole el valor 
I se imprime vertical y 0 Horizontal. 
PAGE 
Devuelve el número de la página que se esta imprimiendo. 
PAPERBPM 
Establece la forma de introducir el papel a la impresora. Los principales valores que 
puede tener son: 
1 Utilizar papel de la bandeja superior. 
4 Esperar a la inserción manual de cada hoja. 
7 (Predeterminado) Utilizar papel de la bandeja activa. 
8 Utilizar papel del alimentador por tracción. 
G r u p o E d it o r ia l Megabyte 325 m m
Ü ! Ü | > VISUAL BASIC como debe ser... „ 
PAPERSIZE 
Establece el tamaño del papel donde desea imprimir. Los valores principales son: 
I Carta, 216 x 279 mm 
8 A3,297 x 420mm 
9 A4,210 x 297mm 
II A5,148x210mm 
12 B4,250 x 354mm 
13 B5,182x257 mm 
14 Folio, 216x330 mm 
39 Continuo USA estándar, 310 x 280 mm 
40 Continuo alemán estándar, 216 x 305 mm 
41 Continuo alemán oficio, 216 x 330 mm 
256 Definido por el usuario 
Cuando le asigna el valor 256 el tamaño del papel será el indicado por la propiedades 
Height y Width. 
PORT 
Devuelve el nombre del puerto por el que se envía los documentos a la impresora. 
PRINTQIAI.ITY 
Establece la calidad de impresión. Sus valores pueden ser: 
CONTANTE VALOR CALIDAD 
vbPRPQDraft -1 Resolución borrador 
vbPRPQLow -2 Resolución baja 
vbPRPQMedium -3 Resolución media 
vbPRPQHigh -4 Resolución alta 
SCALEMODE 
Establecen la unidad de medida para el objeto Printer. Los valores que puede tener 
son: 
1 (Predeterminado). Establece la unidad de medida Twip. 
2 Punto (72 puntos por pulgada lógica). 
3 Píxel (resolución del monitor o la impresora). 
4 Carácter (horizontal= 120 twips por unidad; vertical=240 twips por unidad). 
5 Pulgada. 
6 Milímetro. 
7 Centímetro. 
ZOOM 
Indica el porcentaje en que se amplia o reduce el resultado impreso. 
PRINCIPALES MÉTODOS DEL OBJETO PRINTER: 
ENDDOC 
Inicia el envía la información a la impresora. 
K IL L I X X 
Finaliza el trabajo de impresión en ejecución. 
NEWPAGE 
Avanza a la siguiente página e incrementa el valor de la propiedad Page en 1 (uno). 
326 G r u p o E d it o r ia l Megabyte 
CAPÍTULO VIII: Manejo de Archivos ^ ¡ ¡ B 
M E T O D O PR IN T 
Es un método que usado con el objeto Printer, permite imprimir información en la 
impresora. 
Su sintaxis para imprimir en la impresora es: 
PRINTER.PRINT Expresión 
Donde expresión es lo que deseamos imprimir. Si es un mensaje debe ir entre comillas 
(") o apostrofes (‘). Ejemplos: 
La siguiente instrucción imprime VISUAL BASIC en la impresora. 
Printer.Print "VISUALBASIC” 
Las siguientes instrucciones imprimen el texto VISUAL BASIC y el texto COMO 
DEBE SER..., pero en dos líneas diferentes. 
Printer.Print "VISUALBASIC" 
Printer.Print "COMO DEBE SER... " 
Después de la expresión puede utilizar una coma (,) que permite imprimir el siguiente 
mensaje en la misma línea pero después de ocho (8) espacios o puede utilizar un 
punto y coma (;) que permite imprimiré! siguiente mensaje en la misma línea pero 
junto a la anterior. 
Las siguientes instrucciones imprimen el texto VISUAL BASIC y el texto COMO 
DEBE SER..., en la misma línea pero separados por 8 espacios (hay una coma después 
de imprimir VISUAL BASIC). 
Printer.Print "VISUALBASIC", 
Printer.Print "COMO DEBE SER... " 
Las siguientes instrucciones imprimen el texto VISUAL BASIC y el texto COMO 
DEBE SER..., en la misma línea pero juntos (hay un punto y coma después de 
imprimir VISUAL BASIC). 
Printer.Print "VISUAL BASIC"; 
Printer.Print "COMO DEBE SER... " 
Las siguientes instrucciones imprimen: SU EDAD ES: 31 AÑOS. 
Dim E As Integer 
E = 31 
Print "SU EDAD ES: Str(E); " AÑOS" 
La instrucción Printer.Print sin ningún parámetro deja una linea en blanco. 
IN ST R U C C IÓ N TAB 
La instrucción Tab se utiliza junto con Print para indicar el número de la columna de 
la línea actual donde desea imprimir la siguiente expresión. Por ejemplo: 
I .a instrucción imprime en la columna 20 la palabra COMPUTACION. 
Printer.Print Tab(20); "Computación" 
La siguiente instrucción imprime en la columna 10 el texto VISUAL BASIC y en la 
columna 30 el texto COMO DEBE SER... 
Print Tab(10); "VISUALBASIC"; Tab(30); "COMO DEBE SER.." 
G r u p o E d it o r ia l Megabyte 327 m m
VISUAL BASIC 'íZtS&m' como debe ser. 
IN ST R U C C IÓ N SPC 
Esta instrucción permite dejar espacios en blanco antes de imprimir. 
La siguiente instrucción imprime los textos VISUAL BASIC y COMO DEBE SER..., 
separados por 5 espacios en blanco. 
Print "VISUAL BASIC"; Spc(5); "COMO DEBE SER..." 
NOTA: 
• Es opcional escribir los punto y coma en las instrucciones TAB y SPC, porque se 
escriben automáticamente. 
• Cuando la columna donde trata de imprimir con la instrucción TAB está ocupada 
por la expresión anterior, entonces se imprime en la columna indica pero en la 
siguiente línea. 
PR IN T FO R M 
Es un método que pertenece a los formularios y permite imprimirlo incluyendo todos 
los controles que contiene incluyendo gráficos. Para ello asigne el valor TRUE a la 
propiedad AUTOREDRAW del formulario que desea imprimir. Su sintaxis es: 
Nombre_Del_Fonnulario.PRINTFORM 
A P L IC A C IO N D E SA R R O L L A D A N° 47 
La siguiente aplicación es un ejemplo del uso de laimpresora imprimiendo los datos 
de una sola persona o un listado general. 
USO DE LA IMPRESORA -mixi 
D a lo s P e r s o n a le s : 
Nombre ¡Cesar 
Almacenar j 
Distrito ||_a Victoria 
Edad f 35 
Cancelar 
Anaximandro -1 
Ana María lie 7 Fi't1 'Jifflffli'‘wWnffT 
Karina j d 
IM P R IM IR 
REGISTRO ACTUAL 
Labell ] Textl 
Label2 (7ext2 
Label3 I™ 3 
Frame2 
Command3 | Command4 
PASO N" 01: DIBUJAR LOS CONTROLES. 
Dibuje los controles y asígnele las propiedades como se muestra a continuación. 
Las listas deben quedar en blanco: 
PASO N° 02: ESCRIBIR LAS INSTRUCCIONES PARA LOS CONTROLES. 
Definir las variables a nivel de formulario. 
Dim N As Byte 
Instrucciones del botón Salir. 
Prívate Sub CommandS_Click() 
IfMsgBox("ESTA SEGURO DE SALIR", 36, "CUIDADO") = 6 Then End 
End Sub 
328 G r u p o E d it o r ia l Megabyte^ 
CAPÍTULO VIII: Manejo de Archivos 
Instrucciones del botón Nuevo o Almacenar. 
P r i v a t e S u b C o m m a n d l _ C l i c k () 
I f C o m m a n d l . C a p t i o n = "& Nuevo" T h e n 
C o m m a n d l . C a p t i o n = " ¿ A l m a c e n a r " 
Conunand2. E n a b l e d = T r u e 
F r a m e 1 . E n a b l e d = T r u e 
l i m p i a 
T e x t l . S e t F o c u s 
E l s e 
C o m m a n d l. C a p t i o n = "& N uevo" 
C om m and2. E n a b l e d = F a l s e 
F r a m e 1 . E n a b l e d = F a l s e 
Rem p a s a l o s d a t o s d e l a s C a j a s d e T e x t o a l o s L i s t 
L i s t l . A d d l t e m T e x t l 
L i s t 2 . A d d l t e m T e x t 2 
vL i s t 3 . A d d l t e m T e x t 3 
E n d I f 
E n d S u b 
Inst, del FormActivate. 
P r i v a t e S u b F o r m _ A c t i v a t e () 
C o m m a n d l. C a p t i o n = "&Nuevo 
C om m and2. E n a b l e d = F a l s e 
F r a m e 1 . E n a b l e d = F a l s e 
l i m p i a 
E n d S u b 
PROCEDIMIENTO LIMPIA 
S u b l i m p i a () 
T e x t l = " " 
T e x t 2 = "" 
T e x t J = " " 
E n d S u b 
Inst, del botón Cancelar. 
P r i v a t e S u b 
C o m m a n d 2 _ C l i c k ( ) 
F o r m _ A c t i v a t e 
E n d S u b 
PROCEDIMIENTO MUESTRA 
S u b MUESTRA () 
T e x t l = L i s t l 
T e x t 2 = L i s t 2 
T e x t 3 = L i s t 3 
E n d S u b 
INSTRUCCIONES DE LOS CONTROLES LIST 
Private Sub Ustl_CUck( ) 
N = Listl. Listindex 
List2.ListIndex - N 
List3.ListIndex = N 
End Sub 
Private Sub lJst2_Click() 
N = List2.ListIndex 
List 1 .List Index=N 
List 3. List Index = N 
MUESTRA 
End Sub 
Private Sub List3_Click() 
N = List3.ListIndex 
Listi. Ustlndex = N 
List2.UstIndex = N 
MUESTRA 
End Sub 
E d it o r ia l Megabyte 329
VISUAL BASIC como debe ser. . . •■ ■■■.■*,•• 
Instrucciones del procedim iento EN C A BEZ A D O 
Sub ENCABEZADOO 
Printer.FontName = "Arial" 
Printer.FontSize - 8 
Printer.Print Tab(33);"PáGINA N°" + Str(Printer.Page);Tab(80); 
"Fecha y H o r a + Str(CVDate(Now)) 
Printer.CurrentY - 1 0 
Printer.Print 
Printer.FontName = "courier new" 
Printer.FontSize = 22 
Printer.Print Tab(12); "LISTADO DE REGISTROS" 
Printer.FontSize = 10 
Printer.Print 
Printer.Print Tab(20);"NOMBRE"; Tab(40); "DISTRITO"; Tab(70); "EDAD" 
Printer.Print Tab(20); String(55, "*") 
End Sub 
Instrucciones del B otón R egistro A ctual. 
Prívate Sub Command3jClick() 
Printer.PrintQuality = -4 
Printer.ScaleMode = 6 
Printer.PaperSize = 9 
Printer.CurrentY = 10 
Printer.FontName = "courier new" 
Printer.FontSize = 20 
Printer.Print Tab(17); "DATOS PERSONALES" 
Printer.FontSize - 14 
Printer.Print 
Printer.Print Tab(20); "Nombre................: " + Textl 
Printer.Print Tab(20); "Distrito...............: " + Text2 
Printer.Print Tab(20); "Edad....................: " + Text3 
Printer.EndDoc 
End Sub 
Instrucciones del procedim iento Todos. 
Prívate Sub Command4_Click() 
Printer.PrintQuality = -4 
Printer.ScaleMode = 6:Printer.PaperSize=9:Printer.CurrentY = 10 
ENCABEZADO 
F orX - 1 To Listl.ListCount 
Printer.FontName = "courier new" 
Printer.FontSize - 1 0 
Listl.Listlndex = X - 1:List2.Listlitdex = X - 1: List3.ListIndex = X - 1 
Printer.Print Tab(20);Listl; Tab(40); List2; Tab(72); List3 
IfX Mod 3 - 0 Then 
Printer.NewPage 
ENCABEZADO 
E n d lf 
Next X 
Printer.EndDoc 
End Sub 
330 G r u p o E d it o r ia l Megabyte 
CAPITULO VIII: Manejo de Archivos ^ 
COMANDOS DEL D.O.S. 
Todas las tareas para manejar archivos o carpetas, se pueden realizar a través del 
Windows y con las cajas de diálogo (CommonDialog), pero Visual Basic también 
acepta instrucciones que se usan en el D.O.S: 
niR 
Permite obtener el nombre de un archivo, el nombre de la carpeta actual o el nombre 
de la etiqueta del disco. 
Su sintaxis es: DIR (RUTA, VALOR) 
Ruta es el ubicación y el nombre del archivo que desea obtener. Se pueden utilizar 
los caracteres comodín: 
* Que representa dos o más caracteres. 
? Que representa un solo carácter. 
Es un valor que indica el atributo del archivo. 
Los valores pueden ser: 
vbNormal 0 Normal 
vbHidden 2 Oculto 
vbSystem 4 Archivo de sistema 
vbVolume 8 Etiqueta de volumen; si se especifica se ignoran todos 
los atributos. 
vbDirectory 16 Directorio o carpeta. 
FTLECOPY 
Copia un archivo. Por ejemplo, la siguiente instrucción copia el archivo 
INFORME.DOC AL DISCO A: FileCopy "INFORME.DOC ", "A:" 
KIIJ. 
Borra un archivo. Por ejemplo, la siguiente instrucción borra el archivo 
INFORME.DOC: KILL “INFORME.DOC 
ÑAME 
Cambia el nombre de un archivo, directorio o carpeta. Por ejemplo, las instrucción 
cambia el nombre DATOS.DOC por HOY.DOC 
Ñame “DATOS.DOC”As “HOY.DOC” 
(URDIR 
Devuelve la unidad y ruta actual. La siguiente instrucción almacena en Label 1, la 
unidad y ruta actual: Labell=CURDIR 
CHDIR 
Cambia la unidad y ruta actual. Por ejemplo, la instrucción cambia a una nueva 
ruta: C:Windows. 
MKDIR 
Crea una nueva carpeta. Por ejemplo la siguiente instrucción crea la carpeta Agenda: 
MKDIR “C:AGENDA” 
RMDIR 
Borra una carpeta, siempre y cuando se encuentre vacía. Por ejemplo: RMDIR 
“C:AGENDDA”. Boira la carpeta AGENDA. 
CHDRIVE 
Cambia de unidad de disco. Por ejemplo, la siguiente instrucción cambia a la unidad 
A:. CHDRIVE “A:”. 
G r u p o E d it o r ia l Megabyte 331
VISUAL BASIC como debe ser... 
CONTROL DE ERRORES 
La instrucción ON ERROR 
Esta instrucción permite detectar errores durante la ejecución de los programas. 
Cada vez que hay un error se puede llamar a un grupo de instrucción para poder 
controlarlo y evitar que nuestro programa deje de funcionar en un momento 
inesperado. 
Tiene 3 sintaxis: 
On Error GoTo Nombre_deIaIínea 
Con esta sintaxis, cada vez que se produce un error se ejecutan las instrucciones 
que están después del nombre de la línea. El nombre de la línea debe terminar con 
dos puntos (:). Antes del nombre de la línea debe escribir la instrucción EXIT SUB 
On Error Resume Next 
Con esta sintaxis, cada vez que se produce un error la computadora ejecuta la 
siguiente instrucción después de la línea de ocurrió el error. 
On Error GoToO 
Con esta sintaxis, se desactiva el control de errores. 
EL OBJETO ERR 
El objeto ERR contiene información acerca del error que se a producido. Su 
propiedades más importantes son: 
DESCRIPTION.- Devuelve el mensaje que muestra el sistema por el error producido. 
NUMBER.- Devuelve el número del error. 
SOURCE.- Devuelve el nombre del objeto donde ocurrió el error. 
EJEMPLO DE CÓMO CONTROLAR LOS ERRORES 
Prívate Sub Command l_Click() 
Dim NUMERR, R As Integer 
Rem ACTIVA EL CONTROL DE ERRORES 
On Error GoTo VERIFICA 
Instrucciones 
ExitSub 
VERIFICA: 
NUMERR = Err.Number 
Select Case NUMERR 
Case 6: MsgBox "DEFINE CORRECTAMENTE TU VARIABLE", 16, "ERROR" 
Case 11: MsgBox "NO SE PUEDE DIVIDIR ENTRE CERO", 16, "ERROR" 
Case 61: MsgBox "EL DISCO NO TIENE ESPACIO LIBRE", 16. "ERROR" 
Case 71: MsgBox "INSERTE CORRECTAMENTE EL DISCO", 16, "ERROR" 
Case Else 
MsgBox "HA OCURRIDO UN ERROR NO CONTROLADO EN:" _ 
+ Err.Source+Chr( 13)+"Número de Error:"+Str(Err.Number) _ 
+ Chr(I3)+"Descripción :"+Err.Description + Chr(13) 
End Select 
End Sub 
3 3 2 G r u p o E d i t o r i a l M e g a b v t e < ||¡ |¡ | 
CAPÍTULO VIII: Manejo de Archivos % 
ALGUNOS ER R O R ES IN TER CEPTA B LES 
Número Descripción 
5 El argumento o la llamada al procedimiento no son válidos 
6 Desbordamiento 
7 Sin memoria 
9 El subíndice está fuera del intervalo 
11 División por cero 
13 No coinciden los tipos 
20 Resume sin Error 
35 No se ha definido Sub, Function o Property 
47 Hay demasiados clientes de la aplicación DLL 
52 Nombre o número de archivo incorrecto 
53 Imposible encontrar el archivo especificado 
54 Modo de archivo incorrecto 
55 El archivo ya está abierto 
57 Error de E/S de dispositivo 
58 El archivo ya existe 
61 Disco lleno 
62 La entrada de datos ha sobrepasado el final del archivo 
63 El número de registro es incorrecto 
67 Hay demasiados archivos 
71 El disco no está listo 
74 Imposible cambiar el nombre con una unidad de disco diferente 
75 Error de acceso a la ruta o al archivo 
92 El bucle For no está inicializado 
94 El uso de Nuil no es válido 
321 Formato de archivo no válido 
380 Valor de propiedad no válido 
381 El índice de la matriz de propiedades no es válido 
382 Set no se admite en tiempo ae ejecución 
383 Set no se admite (propiedad de sólo lectura) 
385 Se necesita un índice de matriz de propiedad 
387 Set no está permitido 
393 La propiedad no se puede leer en tiempo de ejecución 
400 El formulario ya está mostrado. Imposible mostrar en forma modal 
402 Primero debe cerrar u ocultar el formulario modal superior 
422 No se encontró la propiedad 
423 No se ha encontrado la propiedad o el método 
424 Se requiere un objeto 
438 El objeto no acepta esta propiedad o método 
449 El argumento no es opcional 
450 Número de argumentos erróneo o asignación de propiedad no valida 
451 El objeto no es una colección 
459 Este componente no acepta eventos 
482 Error de impresora 
483 El controlador de impresora no admite la propiedad especificada 
484 Problemas al obtener información de la impresora desde el 
sistema; asegúrese de que la impresora está configurada correctamente 
485 El tipo de imagen no es válido 
485 No se puede imprimir la imagen de formulario en este tipo de 
impresora 
520 No se puede vaciar el Portapapeles 
521 No se puede abrir el Portapapeles 
735 Imposible guardar el archivo en TEMP 
744 No se encontró el texto de búsqueda 
31001 Sin memoria 
31027 Imposible activar el objeto 
G r u p o E d it o r ia l Megabyte 3 3 3
A t VISUAL BASIC como debe ser... 
RICHTEXBOX 
Es sim ila r a una caja de textos. Se diferencia porque este control perm ite 
asignar un form ato a todo o parte del texto y tiene otras características más 
avanzadas como por ejem plo, perm ite a brir y grabar archivos con form ato 
R TF y texto A S C II norm al usando los métodos LoadF ile y SaveFile. 
A parte de las propiedades de la caja de texto, tiene las siguientes: 
BULLETINDENT 
Indica la sangría con la que debe trabajar. 
DISABLENOSCROLL 
Acepta un valor lógico que indica si están activadas las barras de desplazamiento. 
RIGHTMARGIN 
Perm ite in d icar el margen derecho. 
SCROLLBARS 
Indica si el control debe tener las barras de desplazamiento. 
SELALIGNMENT 
A line a el texto asignándole los valores N u il (ninguna), 0 (izquierda), 1 
((derecha) y 3 (centro). 
SELBOLD 
A c tiv a o desactiva el estilo N egrita al texto seleccionado. 
SELITALIC 
A c tiv a o desactiva el estilo C ursiva al texto seleccionado. 
SELSTRIKETHRU 
A c tiv a o desactiva el estilo Tachado al texto seleccionado. 
SELUNDERLINE 
A c tiv a o desactiva el estilo Subrayado texto seleccionado. 
SELBULLET 
A c tiv a o desactiva el estilo con V iñeta texto seleccionado. 
SELCOLOR 
A signa un co lo r al texto seleccionado. 
SELFONTNAM E 
A signa un tipo de letra al texto seleccionado. 
SELFONTSIZE 
A signa un tamaño de letra al texto seleccionado. 
SELPROTECTED 
Acepta un va lo r lóg ico que indica si el texto seleccionado esta protegido, es 
decir, no puede m odificarse. 
334 G r u p o E d it o r ia l Megabyte 
CAPÍTULO VIII: Manejo de Archivos 
MÉTODO LOADFILE 
Abre un archivo con form ato RTF o de tip o texto. Su sintaxis: 
R ic h T e x tB o x .L o a d F ile “ru ta y n o m b r e ”, Valor. 
El va lo r indica el tip o de archivo: 0 RTF y 1 Texto. 
MÉTODO SAVEFILE 
Graba un archivo R TF o texto. Su sintaxis es s im ila r a LoadFile. 
Aplicación de Ejemplo 
La siguiente aplicación que perm ita a brir y grabar archivos. 
^ ^ rchÍ vo s H 0 E 3 I 
|j ÁBRÍR j | GRABAR | 
CONTENIDO DEL ARCHIVO 
EL SID A 
SID A significa Síndrome de Inmuno Deficiencia Adquirida y es una enfermnedad que hasta 
ahora no tie n e cura, por lo tanto, trae como consecuencia la muerte sin tomar en cuenta la edad, 
el color, la raza, el sexo ni el nivel económico de una persona. 
El SIDA es la etapa mas avanzada de la infección producida por el Virus de Inmunodeficiencia 
Hum ana (VIH). Esto quiere decir que antes que una persona tenga S ID A primero tiene el virus 
VIH y este virus se contagia principalmente por tener rela c io n e s se x u a le s sin p ro te c c ió n con 
una persona infectada con este virus del VIH. La protección mas usada es el CONDÓN. 
La persona que tiene el virus VIH que es el principio del SIDA no tiene ningún síntoma ni ninguna 
forma de saber a simple vista (sólo a través de la prueba de Elisa) que tiene el virus, por eso es 
muy importante, si vas a tener relaciones sexuales, el u so d e l C o n d ó n el cual también te protege 
de las enfermedades de transmisión sexual (ETS) como Sífilis, Gonorrea, Herpes, Chancro 
Blando, Candidiasis, Verruga, etc. 
Muchas personas dicen que hacerlo con condón "no es igual”, pero tu tienes que saber que una 
v id a con SID A tam poco e s igual y es preferible, si no tienes un condón " p e r d e r " una relación 
sexual o una noche de placer, que perder la salud y sobre todo la VIDA. 
"N o olvides que tu familia te q u iere y te necesita'* 
DESARROLLO 
D ibu je en un fo rm u la rio dos botones de comandos, una etiqueta, un control 
R ichTextBox y un control Com m ondialog 
INSTRUCCIONES DEL BOTÓN ABRIR. 
Pri vate Sub Command l_Click() 
On Error GoTo PRUEBA 
CommonDialogl .Filter="RTF (*.RTF)|*.RTF |TEXTO (*.TXT)|*.TXT" 
CommonDialogl .ShowOpen 
RichTextBox 1 .LoadFile CommonDialog 1 .filename, CommonDialog 1 .FilterI ndex-1 
Exit Sub 
PRUEBA: 
MsgBox "NO SE PUEDE TENER ACCESO A L ARCHIVO", 64, "ERROR" 
End Sub 
Las instrucciones del botón Grabar son similares a la de Abrir, sólo cambie la 
propiedad ShowOpen por ShowSavey el método LoadFilepor SaveFile. 
H ü j ¡ ^ G r u p o E d it o r ia l Megabyte 335
VISUAL BASIC como debe ser. . . 
FUNCIONES API 
A P I sign ifica Interfaz de Program ación de Aplicaciones y son un conjunto 
de funciones que tiene el W indow s que nos ayudan a desarrollar aplicaciones 
o tareas de una más rápida y sencilla. 
Para u tiliz a r una funció n A P I de W indow s debe agregarla al m ódulo de su 
aplicación. Para e llo siga los siguientes pasos: 
1. De la opción Com plem entos e lija V iso r A P I. 
Si no encuentra la o p ció n V is o r A P I, ingrese a A d m in is tra d o r de 
Com plem entos y active la casilla de V B A P I Viewer. 
2. De la ventana que se visualiza al ingresar a la opción V is o r A P I e lija 
A rc h iv o y luego Cargar A rc h iv o de Texto. 
Complementos 
Adm inistrador visual de d a to s ... 
Diseñador de in form es... 
Adm inistrador de com plem entos., 
Visor API 
Comptern e n t os disp on ibles : 
: M ic ro s o ft D o la T o o li 
: VB A ctiv e X C o n tro l In te rfa c e W iza rd 
1 VB A ctiv e X D ocu m e nt Mwji a tio n W iza rd 
I VB A d d In Toolbar 
• tT-7.r 
i VB A p p lica tio n W iza rd 
j VB C lass Bui!d«»t U tility 
; v o D a ta F orm W iza rd 
j VB P ro p e rty P age W iza rd 
) vm T-SQt. D eb ug ge r 
: VB W iza i d M anager 
f A c e p ta r | 
3. Ingrese a la carpeta W inapi y seleccione el archivo W in32api. 
Seleccione un archivo de texto API 
ßuscaren: | _ j Vb 
__i Clisvr C J samples 
_ ] Graphics i_ J Setup 
_ J Help __1 setupkit 
_ )0 d b c C_] Template 
_ J report -J T s q l 
_ j Repostry __1 vbonline 
Nombre de archivo: ¡f" 
Archivos de tipo: ¡Texto TXT) 
“ 3 
_ 1 Winapi 
_ f J Wizards License 
Redist 
m a l Seleccione un archivo de texlo API 
hombre de archivo: |f 
Archivos de tipo: [Texto (‘ TX T) 
Se muestra una ventana con 5 botones de comandos: 
BUSCAR : Perm ite buscar a una función. 
AGREGAR : Agrega a la lista la fu n c ió n seleccionada. 
QUITAR : Q uita una fu nció n de la lista de funciones seleccionadas. 
COPIAR : C opia la fu nció n seleccionada en el portapapeles. 
INSERTAR : Inserta la fu nció n o funciones seleccionadas en la ventana 
de declaraciones el form u la rio activo o del m ódulo. 
MUY IMPORTANTE 
Estas funciones deben estar en el m ódulo de la aplicación. Para e llo adicione 
un m ódulo antes de realizar los pasos indicados. 
w 336 G r u p o E d it o r ia l Megabyte < 
CAPÍTULO VIII: Manejo de Archivos 
APAGAR LA COMPUTADORA AUTOMATICAMENTE 
......... 
Función ExitWindowsEx 
Es una función A P I que perm ite apagar en fo rm a automática la computadora 
a través de una aplicación. Su sintaxis es: 
E xitW in d o w sE x (V A L O R 1 ,V A L O R 2) 
E l valor2 siempre es cero (0). 
Los principales valores que puede tener V a lor I son 1,2,5 y 6 : 
1 Apaga la com putadora pero si tenemos un archivo sin grabar, pregunta 
si deseamos grabarlo. 
2 R ein icia liza la com putadora pero si tenemos un a rchivo sin grabar, 
pregunta si deseamos grabarlo. 
5 Apaga la com putadora sin preguntar si deseamos grabar un archivo 
que tenemos sin grabar. 
6 R einicializa la computadora sin preguntar si deseamos grabar un archivo 
que tenemos sin grabar. 
APLICACION DE EJEMPLO 
i,. F U N C IO N A P I MZi 
REINICIALIZAR LA COMPUTADORA 
APAGAR LA C OM PUTADORA 
C rear una nueva aplicación y adicionarle un m ódulo (Proyecto Agregar 
M ó d u lo ), luego inserte en dicho m ódulo la fu nció n A P I E xitW in d o w sE x y 
escriba en los botones de comandos las instrucciones correspondientes. 
Botón Reinicializar la Computadora 
Prívate Sub C o m m a n d l_ C lic k () 
D im N As Integer 
N = E xitW in d o w s E x (6, 0) 
End Sub 
Botón Apagar la Computadora 
Prívate Sub C om m an d2 _C lick() 
D im N As Integer 
N = E xitW ind ow sE x(5 , 0) 
End Sub 
NOTA: 
Estas in stru ccio n e s se pueden u tiliz a r cuando el u suario no ingresa 
correctam ente el Password o Clave. 
G r u p o E d it o r ia l Megabyte
f a VISUAL BASIC como debe ser... 
C R EA R D ISC O S DE INSTALACIO N 
Visual Basic crea de una manera m uy fá cil y rápida los discos de instalación 
de cualquier aplicación que usted desarrolle con la finalidad que la aplicación 
la instale y ejecute en cualquier com putadora sin necesidad que ésta tenga 
el V isual Basic. 
Para crear los discos de instalación grabe correctamente su aplicación y salga 
del V isual Basic, luego de su ventana de acceso e lija: H erra m ien ta s de 
M icrosoft Visual B asic 6.0A sistente p a ra E m paquetado y D istribución. 
_ jj favoritos 
l_ j documentos 
Configuración 
^ fiuscar 
& Ayuda 
J 3 Ejecutar.. 
JT J Internet txptorer * 
Microsoft Ollice 2000 Profesional ► 
j r j Microsoft Office Took ► 
^ Microsoft Visual Studio SO Herramientas de Microsoft Visual Studio S O 
L ÍJ Herramientas empresariales - ä Microsoft Web Pubfcshing ► de Microsoft Visual SL.. 
■ _Tj PLATINUM WotkView fot Internet Explorer ► Microsoft Visual SourceSafe 
*J* Apagar el sistema. 
|§É!"í£!í?r V 
™ - 3 Power 8 0 
^ > .3 Servicios en línea 
> - i j Sybase 
. T j The Hacker Antivirus 
- i j WinZip 
j j Explotador de Wndows 
'¿ i- Internet Explorer 
MS-OOS 
Outlook Express 
► Microsoft Visual Basic S O 
► Microsoft Visual FoxPro 6.0 
Se visualiza la ventana de Asistente de 
Empaquetado y D istrib u ció n donde se 
debe hacer C lic en el botón E xam inar 
para buscar y seleccionar el proyecto 
al cual le va a crear los discos de insta­lación. 
El proceso de instalación consiste en: 
■3 
■-J 
M 
OM'*»» 
.’-áJ 
1. Empaquetar la aplicación. 
Para ello haga clic en el botón Empaquetar. Si no ha creado el ejecutable 
(*.E X E ) para la aplicación se visualiza el siguiente mensaje: 
Asistente de empaquetado y d is trib u c ió n 
f)  Para poder continuar, el Asistente requiere el archivo ejecutable 'Horarios.EXE' 
para este proyecto. Haga clic en Examinar para buscar el archivo o en Compilar 
para compilar el proyecto. 
! Compilar | Cancelar 
Haga c lic k Compilar y siga las instrucciones del Asistente. 
338 Grupo E ditorial M egabyte^ 
CAPÍTULO VIII: Manejo de Archivos 
En tipo de Empaquetado e lija Paquete de Instalación Estándar y en opcio­nes 
de Cab. E lija M ú ltip le s A rch ivo s Cab. 
, Ot>í el t*« ie paquete ** desea c*ear 
‘ - > 4 ’ 
J ! ® 
A ’’’ ' 
■ Î 
Jifa de empèqüRôdo: 
4 Amtente de empaquetado y «Sstrfcuctán - Opciones de cab 
pars el paquee. Si va a á ñ itu k su apicación en dwjjetes 
«b e oea» múltiples «c b vw ,:ab y especftcsr un tamaño oe 
Paiola cpqón apropíadí. 
Opdones de .cab 
Ur único archivo .cab 
(* archvcs .cat< 
lanario de ardv/o .cab: 
fTíre 3 
Ayjda { Cancefcr | <Antcror | Squgte > | 
1. Distribuir la Aplicación 
Para ello, haga c lic k en el botón Distribuir y siga las instrucciones del 
Asistente. 
En M étodos de D istrib u c ió n E lija Disquetes y en Unidades de Disco 
e lija la unidad donde va a crear los discos de instalación. 
Asistente de empaquetado y distribución - Método de distribución 
; Eifa el tpe de dístróución qjc desea reafc». 
, 
Métode de dstrouoór : 
Pufcäcaöcn en Web 
Qwscipdóf.: 
a J f ír b j un paquete er varios d»»jetes. 
I J 
Ayuda i Cancela- | < Açÿerer j rí<giighte > j { | 
•jp Asiitente de empaquetado y distribución • Unidad de duquete 
a?a una uneW de cüsruete er, la bta de abafe 
” Fcmatear antes óe coear 
Obelar j <Antero- iOjjjrte > | 
A l finalizar, Visual Basic le pedirá que inserte los discos de usará 
com o instaladores. 
A siste n te de em paquetado y d istrib u ció n E l 
1 J In s e rte el d is c o 1 de 2 p a ra in icia r la c re a c ió n de disqu etes. 
A c e p ta r j j C a n ce la r j 
G r u p o E d it o r ia l Megabyte 339
v É ta m VISUAL BASIC como debe ser. 
CONTROLACTIVEMOVIE 
<> 
Permite ejecutar archivos de m ultim edia, como por ejemplo los archivo *.A V I 
que son archivos que tienen videos grabados. Un ejem plo de archivo * .A V I 
es el que usted visualiza cuando copia un archivo u tilizando W indow s: 
m * n i 
3 4 
m m i m 
Sus principales propiedades son: 
AUTOREWIND 
Indica si después de term inar el vídeo retrocede al in icio . 
AUTOSTART 
Indica si se visualiza automáticamente el vídeo cuando le asignamos el 
nom bre del archivo. 
FILENAME 
Acepta la ruta y el nom bre del archivo de vídeo que deseamos visualizar. 
FULLSCREENMODE 
Indica si el archivo debe ocupar toda la pantalla al ejecutarse. 
PLAYCOUNT 
Indica la cantidad de veces que se debe visualizar el archivo. 
APLICACIÓN DE EJEMPLO: 
La siguiente aplicación perm ite seleccionar un vídeo y visualizarlos. Para 
e llo dibuje en un fo rm u la rio en blanco; un control A c tive M o v ie , un botón de 
comandos y con control C om m onD ialog. En el botón Seleccionar un archivo, 
escriba lo siguiente: 
% VISUALIZAR VIDEOS 
Hü SELECCIONAR UN ARCHIVO 
Private Sub Commandl_Click() 
C om m onD ialogl.Filter = “Videos 
(*.Avi)|*.avi|Todos (*.*)|*.*” 
CommonDialog 1 .ShowOpen 
Acti veMoviel .filename=CommonDialog 1. 
Filename 
End Sub 
340 G r u p o E d it o r ia l Megabyte< 
CREACION DE ARCHIVOS DE AYUDA 
L xisten básicamente dos tipos de archivos de ayuda. Los archivos simples, 
que sólo muestran el texto de ayuda en una sola ventana y los archivos con 
ventanas vinculadas que consisten en llam ar a una ventana desde otra ventana. 
i w. Si«» _" __ __ 
...I ... '.....I':}'"“: ......... O P C IO N E S O K I. M I.N l’ P R IN C IP A !. - i 
I l'UODl'CTOS 
CAPÍTULO VIII: Manejo de Archivos ^ ¡ ¡ ¡ ¡ ¡ ¡ 1 
M ‘ > v iM tf:r.rú 
im« . -í (« s s j - . í k ti; í t s • I •» yj". a* 
I.-, -i.il- y Vi i-í v r - : - : ¿.r.v.vitt »ri-krt-: y 
Mi ItlH ÍK S 
>” • 5 »• tpcifn«.# »<;•= Mir¡ r...v ,r.ívm,ji¿n «t-i V , I ¡.i :.a «i i.: i.u,- j .s . 21 (■ r.. 2u'-t •: 
I l 11 ITARIOS 
W Miciosoít Woid - TUTO R rtf 
^ àrchiv»} cckión ¥er Asertar Eproiaío He/r«nfeTtas tabla Ventana 1 - Iffl X| 
: & y 4 ? ® 4 * ffl E ® 
* 12 * H X g ÜË s 31 * 1= 
O PCIO N E S DEL M E N I PR IN CIPA L 
PR9PVÇT9S MOVIMIENTOS 
BEBBm 
UTILIIASIoa 
p|3 al « I ____________________ I lT 
G I Sfc. 1 1(5 fi :.9 on i r . 6 C d 12 
Para el primer caso sólo necesita crear un documento en Word con el texto que 
c lesea mostrar en la ayuda y guardarlo con un formato RTF (Archivo/Guardar Come >) 
y luego compilar este documento con el programa M icrosoft H elp WorkSItop que 
es un utilitario del Visual Basic que debe instalar en su computadora. 
En segundo caso, debe realizar lo siguiente: 
Las opciones que va a e xp lica r y que van a lla m a r a las otras ventanas de 
ayuda se deben de separar del resto del texto de ayuda por S a lto d e P ágina 
M a n u a l (Pulsando C O N T R O L + EN TER ). Cada tema a e xplicar también 
debe de estar en una página diferente. 
OPCIONES DEL MENU PRINCIPAL 
PRODUCTOS 
MOVIMIENTOS 
REPORTES 
UTILITARIOS 
PRODUCTOS 
Esta opción permit« nininitrar toda la infamación de lo; productos que fe 
ccttnercialmn en la empresa. 
Permite por ejemplo, ingresar productos nuevos, linar proiictos por laboratorio, 
cambiar precios, etc. 
MOVIMIENTOS 
Esta opciói permite regiarar las carçras que se realisan por cada producto,registrar 
sus veitas, devoluciones, controlar y visualuar el stock inventariado y valoreado, etc. 
REPORTES 
Provee de la opciones que brindan iifonmcion útil y oportuna al usuario como por 
ejemplo D producto más vendido, el producto menos venduto, el total de ventas 
diarias, semanales,mensuales, etc. 
UTILITARIO 
Brinda al usuario las herramientas mas H itadas como por ejempb : Calculadora, 
Configuraciones (Panel de Ccntrol), maitenimiento de usuarios, es decir, eliminarlos, 
cambiar su clave, etc. 
G r u p o E d it o r ia l Megabyte m i
VISUAL BASIC como debe ser. . . 
Para crear el vínculo entre la opción elegida y el texto de ayuda a visualizar, 
p rim e ro debe separarlas p or cam bio de página m anual (C O N T R O L + 
E N T E R ), com o se muestra en la fig u ra anterior, luego a cada tema de ayuda 
debe insertar una nota al pie de página con un carácter y un nom bre de 
enlace para que pueda vincularse con las opciones de la prim era página. 
Por ejemplo: 
ENLAZAR LA OPCIÓN PRODUCTOS CON EL TEMA PRODUCTOS 
1. U b ica r el cursor inm ediatam ente después del títu lo del tema (segunda 
página) y e le gir In se rta r/N o ta a l P ie. Se muestra una ventana donde 
debe escribir el sím bolo #. Luego Aceptar. En la ventana que visualiza 
escriba el nom bre que va a tener tema para que se pueda vincu lar con 
la opción (Ira . página) y luego haga clic en cualquier parte del documento 
para cerrar la ventana de N ota al Pie. 
En el ejem plo el nom bre es PR O D U C TO S (Ud. puede poner el nombre que desea) 
Ñ olas al pie y ñolas al lin a l 
Insertar 
<• {¡iptaafpie 
Nota al final 
Final de página 
Final del documento 
Numeración 
á.utoriumeración 1, 2, 3, . 
Marca personal: |* 
•producto) 
Pag. 2 Sec. 1 2/5 A2Scn Ih Pág. 2 5«, 1 Z|5 A 25cm l 
Haga el m ism o procedim iento para el resto de temas de ayuda. 
2. Inm ediatam ente después de cada opción de la prim era página asígnele 
el m ism o nom bre asignado a cada tema de N ota al Pie de Página (paso 
anterior), luego asígneles el form ato de doble subrayado, y sólo al nombre 
asignado a cada opción, asígneles el form ato oculto. 
Îÿ ê tW ÿn jiwft« twmata «its YeQiana t - Ui,*! 
üaPH Äay- ©,<*'«>- & a s :® 
-rg n * . - • h X s W S * SÉ JE 
• •••■: ~ 1-7 7 : 
OPCIONES DEL M E N T PRINC IPAL 
REPQRXfiSRErOKTfS 
I II I IIARK>SUTI Ll.TABIQS 
______________ ] 
f .g 1 
Ayuda de Windows ■ ■ ■ H B T Í dTxI 
Archivo Edición Marcador Opciones Ayuda 
Contenido] , j | Imprimir | 
O P C IO N E S D EL M EN U PR IN C IPA L 
PRODUCTOS 
MOVIMIENTOS 
REPORTES 
UTILITARIOS 
NO TA : 
• El nombre de cada opción usted lo elige, pero sólo utilice letras y sin espacios blanco. 
• Después de estos pasos, grabe el documento con formato RTF y compílelo. 
342 G r u p o E d it o r ia l Megabyte" 
CAPITULO VIII: Manejo de Archivos % 
Verifique que tenga instalado en su computadora el u tilita rio W ork Shop del 
V isual Basic. Cuando usted activa este program a se visualiza la siguiente 
ventana in icia l. De la opción F ile de esta ventana , e lija N ew y luego H elp 
Project y pulse el botón O K . Visualizará una ventana de diálogo donde debe 
escribir el nombre de su archivo de ayuda a crear. Después de ind icar el 
nom bre del archivo a crear, se visualiza una nueva ventana: 
I ?,• M ic ro to f! H e lp W o rk s h o p P i f i l E 3 I 
Tilo Y « w J e * Tycrfs tJd p j 
^1 1 l_ J « ix J 
Ready CAP NUM 
<5, M ic ro s o ft H e lp W o ik s h o p - (h o la h p i) 
% g i ¿Je Y¡cv* V/ítkJow Tost Tyorfs Help 
'çg |q |> i _ J a r m 
Help Fio: j hola hip 
IO P T IO N S 1 
LCIÜ-0x80<s 0x0 0x0 Esporto! ÍM*x¡c.sno) 
FiCPORT «Y#« 
S ave and ConipJe I 
Por ejem plo, en la siguiente ventana se ha adicionado un docum ento *.R T F 
llam ado T U T O R .R T F en un archivo de ayuda llam ado 
también T U T O R . H L P De esa ventana haga c lic k en el botón 5 a ve a n d 
C o m p ile para grabar y co m p ila r el archivo de ayuda. Si no ha com etido 
ningún error se visualiza una pantalla sim ila r a la sigu ien te:------ 
T * TUTO R.hpi 
Help File: |TU T0 R .h lp 
LCID«0x280a 0x0 0x0 ; Español (Perú) 
R E P O R T -Y e s 
Save and Compile I 
£*e fcá» yw ^¿Klaw J«:' T¡yo*» 
*i a « i y iti 
CreaU»0 me b n ip Ute i u H W .M p . ~ 
Processing C:JJVrUTOH.rtl 
Hr.unh/iiiij keywords... 
Addjni) bitmaps... 
Topics 
.lump« 
Keywords 
Created C:JJtUTOH.hlp. l . O l ì bylcs 
Compile time: 0 minute«. 0 seconds 
0 note a. II wairriflgii 
De esta manera se ha creado un archivo de ayuda el cual se puede llam ar 
desde c u a lq u ie r p a rte de n u e s tra a p lic a c ió n u sa n d o el a rc h iv o 
W IN H E LP .E X E . Por ejem plo, la siguiente instrucción ejecuta el archivo de 
ayuda llamado T U T O R .H L P que se encuentra en C:JJ y archivo W IN H E L P 
se encuentra en C :W IN D O W S . 
S h e ll "C :W IIW D O W S W IN H E L P C :J J T U T O R " , 1 
N O T A : Después de ejecutar el archivo de ayuda, cambie el formato de Doble 
Subrayado por Subrayado Simple a las opciones, luego vuelva a compilar y ejecutar 
el archivo de ayuda para observar el nuevo comportamiento de este archivo. 
G r u p o E d it o r ia l Megabyte 343
CAPITULO IX 
v iV iiD a ta 
:¡ Ventana Ayyda 
Abrir baso de dato:,.. 
1 C:AfdNvos de pfogramaND ev5tudioWBHAGENDA.mdb 
2 C VArchivos de prograrnaSDevStudioWBMI rutto 
3 CAAichivos de progr amaVD e vS tudioWB B tblio mdb 
FERNANDEZ' 
FERREYROS 
GRANADOS 
INOÑAN 
LIMO . 
LINARES _ZJ sSituación 
<• Regular 
r 1/2 Beca 
C Beca 
C Otro 
Pensión 
filó 2 j 
Fecha de Inscripción 
116/08/1999 -i-j 
Otros 
V Traslado 
Observaciones 
A mejorado notablem ente en los 
últimos tie s meses de estudio. 
Nuevo 
Modificar 
Eliminar 
Grabar 
Cancelar 
Salir 
MANEJO 
DE 
BASE DE DATOS
I Ina BASE DE DATOS es un conjunto de inform a ción ú til organizada de 
iiiki form a específica referente a un tema o propósito concreto. Por ejem plo: 
l.i inform ación que se maneja en un In stitu to, en una farm acia, etc. La 
11111 il inación almacenada en una base de datos se organizada principalm ente 
mediante tablas. 
TABLA 
I la unidad básica de alm acenam iento de una base de datos y perm ite 
tener la inform ación organizada. Ejem plo: 
I a base de datos Institu to se puede organizar en las tablas: 
A lum nos, Pagos, Notas, Profesores, Cursos, etc. 
t Ina tabla almacena los datos en registros (fila s ) y campos (colum nas). Los 
■ impos son los datos que deseamos alm acenar en una tabla. E je m p lo de 
una Tabla: ALUMNOS. 
N 2 NOMBRE CICLO TURNO 
01 Cdll idles :: ,: M 
'2 Karina Rioia v _______ T 
03 Liliana Alarcón V M 04 Jorqe Ríos IV N 
05 Tito Ramírez II T 
REGISTRO DE DATOS 
11ii registro contiene in fo rm a ció n que pertenece a cada entrada de la base 
<lo datos. E jem plo de un R egistro 
1 03 | Liliana Alarcón 1 V 1 M ~ 
CAMPO DE DATOS 
l iii campo es una unidad de alm acenam iento para guardar un elem ento de 
«latos sim ple en un registro. Ejem plo: 
NOMBRE____________ 
Carlos Morales 
Karina Rio-ja___ 
Liliana Alarcón 
Jorge Ríos_____ 
Tito Ramírez 
ESTRUCURA DE UNA TABLA 
I i estructura de una tabla consiste en los campos que contiene, su tipo y 
l< ilicitu d de cada uno de ellos. 
I I Tipo de Campo indica qué tipo de inform ación se va a almacenar en cada 
■ impo, por ejemplo: textos, números, fechas, etc. La longitud se utilizan para 
indicar cuántos caracteres se pueden ingresar como m áxim o en cada campo. 
IN ti ejemplo el campo nombre de un alumno se define de tipo Texto y su longitud 
I m i. ■< le ser 30 de caracteres. Algunos tipos de campos ya tienen una longitud definida. 
G r u p o E d it o r ia l Megabyte 347
v i s u a L BASIC como debe ser... 
M U Y IM PO R TA NTE 
£ n un centro de estudios norm alm ente se indican las tablas estándares 
o b á sic a s que d eb en ir en una b a se de da to s p o rq u e la b a se de d a to s 
c a si siem p re va ría n de una institución a otra. 
Si U d., es estudiante es m uy im portante que se organice solo o con sus 
compañeros de estudios para visita r a empresas o entrevistar a diferentes 
profesionales para saber exactamente la inform a ción que manejan y así 
diseñar correctam ente las bases de datos y tablas. 
Por ejem plo: 
Para saber la inform ación que maneja un colegio se debe hacer una entrevista 
al director. 
Para saber la in fo rm a ció n que maneja una d istribu ido ra u otra empresa se 
debe hacer una entrevista a su adm inistrador o persona responsable. 
Para saber los campos que se deben in c lu ir en una tabla pacientes es m ejor 
hacer una entrevistas a una enferm era o m édico. 
Para saber los campos que se deben in c lu ir en una tabla medicam entos es 
m e jo r hacer una entrevista a un Q u ím ico Farm acéutico, etc. 
En las entrevistas sólo se debe investigar los campos porque el tip o de cada 
cam po y su lon gitu d lo debe hacer U d., de acuerdo a su experiencia y a los 
tipos de campos que conoce. 
“ E L EXITO D E L SISTEMA QUE DESARROLLES DEPENDE 
D E L DISEÑO CORRECTO D E LA BASE DE DATOS ” 
C R E A C IÓ N D E U N A B A SE D E DA TO S 
V isu al Basic puede m anejar base de datos de diferentes form atos como 
F oxpro, E xcel, etc. Si desea crear base de datos del m ism o form a to de 
V isual Basic lo puede hacer usando el m ism o V isual Basic o el Access 
porque tienen el m ism o form ato (* .M D B ): 
ápHpl> 348 G r u p o E d it o r ia l Megabyte f i l i l i 
CAPITULO IX: Manejo de Base de Datos % 
CREAR BASE DE DATOS USANDO VISUAL BASIC 
De la opción A dd-Ins (C om plem entos) de la Barra de M enú, e lija Visual 
Data M anager (A d m in istra d o r V isual de Datos). Observará la siguiente 
pantalla: 
Aiehivo i Ventana Ayuda 
S p i B j [ i f j g l l l J - I ~ 
De la opción F IL E (A rc h iv o ) de la pantalla anterior elija N E W (Nueva), 
luego M IC R O S O F T AC C ESS y al fin a l V E R S IO N 7.0 B M D . 
V e n ta n a A y y d a 
► I M 'c ío s o N Ace«® « * I M D B V e rs ió n ¿¡-O... 
M D B V e is ió rt 2 0... | 
im p a c io d e trabajo, . 
f- rrQíes . 
EoxP ío ► * 
P a ra d o x ► 
Q D B C 
A rc h iv o s d * te xto 
C om pa cta r M D B . 
Fkíparar H D D .. 
IC .S A r c h iv o s d & p io gram a S D e v S tu d io W B SAG E N D A. h id b 
j j C. Sài c h iv o s d e proç»amaSD é vS túdióS V B MI. m db 
3 C A A ic h iv o s d e p to g ia m ^ S D e v S tu d ío S V B ih h o m db 
Jjalir 
U s to U s u a rio : ad m ln 
Le pedirá el nom bre de la base de datos que desea crear. Escriba el nombre 
de la base de datos a crear y luego haga c lic k en G U A R D A R . 
l i l i l í * G r u p o E d it o r ia l Megabyte 349
Ä H % VISUAL BASIC como debe ser... 
Después de ingresar el nom bre de la base de datos que desea crear se 
visualiza la pantalla siguiente, (en el ejem plo la Base de datos de llam a 
Agenda). 
A rchivo Utilidad V e n ta n a Ayyd a 
<3*1 1 1 
MU 
Borrar J ________g u a rd a r________I 
jü 
*» * "i*  
_ _ _ _ _ _ _ 
Usuario: admin 
En la ventana Properties, haga c lic k con el botón derecho y e lija la opción 
N ew Table (nueva tabla), se visua liza la pantalla: 
Esliuctura de la tabla 
fjo m b re de la ta b la : li ¡ " i , ñ ¡j ' r ’ ; V - 
y s ta de cam pos: Nom bre: 
Tipo: r . 
Tamaño: r 
O rden: r 
1 Perm itir lo ngitud cero 
Posición: I N ecesario 
T e x to de validación: 1 
Regla de validación: 1 
A gregar campo | Eljminar campo 1 Valor p re d e te rm in a d o : I 
Lista de índices: 
A g re g a r índice 
r 
Campos: | 
C errar 
Escriba el nom bre de la tabla (Table Ñ am e) que desea crear dentro de la 
base de datos y para empezar a ingresar los campos haga c lic k en A dd 
Field (A gregar Cam po), se visualiza la pantalla siguiente: 
G r u p o E d it 350 o r ial Megabyte ,|l¡§¡í>f|| 
Por cada campo d e fin id o haga c lic k en el botón O k (A ceptar) y al fin a li­zar 
liaga c lic k en el botón Cióse (Cerrar) para cerrar la ventana. Puede 
configurar a cada campo para que V isual Basic perm ita o no aceptar 
campos con lon gitu d cero, es decir que se ingresen valores o no en el 
campo al adicionar registros. 
M U Y IM P O R T A N T E 
D espués de h a cer click en el botón C ióse debe tam bién de h a cer click 
' n el botón B U IL D T H E T A B L E (G en era r la Tabla) p a ra que la tabla 
t/uede co n stru id a . 
I Ina vez construida la tabla, haga c lic k con el botón derecho en el nombre 
ilc la labia construida y e lija la opción O P EN (A b rir) para ingresar o dar 
m .m tenim iento a los registros. La pantalla que visualiza depende de los bo 
iones de la barra Estándar (Debajo del M enú) que tenga activados. 
I I I er. Botón abre la tabla com o Recordset tip o Tabla. 
I I 2do. Botón abre la tabla com o Recordset tip o Dynaset. 
I I 3er. Botón abre la tabla com o Recordset tipo Snapshot. 
OH, 11' IX) RECORDSET DE TIPO HOJADE REPUESTADINAMICA 
I ii objeto Recordset de tipo hoja de respuestas dinám ica es una variedad 
11> i ib jeto Recordset que puede utilizarse para m anipular datos de una o más 
i ililas subyacentes. E l objeto consiste en un conjunto dinám ico de registros 
iiiic puede contener campos 7de una o más tablas o consultas de una base 
di' datos y que puede ser actualizable. 
< m il lO R E C O R D S E T D E T IP O D E RESPUESTA IN S T A N T A N E A 
I ii i ibjeto Recordset de tip o instantánea es un conjunto estático de registros 
• |in* puede u tiliz a r para exam inar datos de una o más tablas subyacentes. 
I ii objeto Recordset de tipo instantánea puede contener campos de una o 
m i. labias de una base de datos, pero no puede actualizarse. 
< M tJK T O R E C O R D S E T T IP O T A B L A 
l ii objeto Recordset de tipo tabla es una representación en el código de una 
i ilila base que puede utilizarse para agregar, m o d ific a r o e lim in a r registros 
<l< una labia. En la m em oria sólo se carga el registro actual en cada momento. 
I’.u.i determ inar el orden de los registros del objeto Recordset se u tiliza un 
im lii c predefinido. 
Grupo Editorial Megabyte 351
yam Él> VISUAL BASIC como debe ser. fîîlïï 
Por ejem plo al activar (haciendo 
C lic k ) el 1er. botón (Recordset tipo 
Tabla) y el 5to., botón se muestra 
la siguiente pantalla. 
I m Tabla AMIGOS _ | 0| x | 
Agregar | Editar | Eliminar | Buscar J Filtrar Cerrar 
índice: | “ 3 
Nombre del campo: Valor (F4=Zoom) 
NOMBRE: | 
DIRECCION: 
DISTRITO: ! 
TELEFONO: 
EDAD: 1 
k 1 < |CBOF)/'l ' > 1 >i 
AGREGAR (ADD) 
Perm ite ingresar registros a la tabla. Debe hacer c lic k en esta opción por 
cada registro que desea adicionar. 
A l ingresar un registro se visualizan dos opciones U P D A T E , que perm ite 
grabar el registro y C A N C E L , que perm ite cancelar la adición del nuevo 
registro. 
EDITAR (EDIT) 
Permite m o d ific a r los datos de un registro. 
ELIMINAR (DELETE) 
P erm ite e lim in a r el reg istro actual. Se visu a liza el mensaje: D E L E T E 
C U R R E N T R E C O R D ?. Responda S I o N O . 
BUSCAR (SEEK) 
Perm ite buscar un determ inado registro 
mediante un campo por el cual la tabla 
debe estar indexada. Se visualiza la pan­talla: 
KñS Parámetros do S e e k 
Operador : 
<ï- [..] r~ > - r- <~ > r- < 
*r¿_alor : 
Aceptar i Cancelar ; 
1 
Para indexar una tabla, haga c lic k con el botón derecho en el nom bre de la 
tabla y e lija la opción Desing (Diseñar). De esta manera Ud puede m o d ifi­car 
la estructura de la tabla e indexarla. 
Para indexar haga c lic k en el botón ADD INDEX (A gregar Indice), se 
visualiza la pantalla siguiente, escriba el nom bre del indexado y seleccione el 
campo o campos que desea usar en el indexado. 
O-arhpoS India-sido»' 
r.. iTït T í h n i 
IC» Primai io 
$ 7 Ú n ic o 
r * ' I o r imi a i n u lo s 
CAPÍTULO IX: Manejo de Base de Datos 
I ILTRAR (FILTER) 
Permite filtra r (seleccionar) registros de la tabla. 
CERRAR (CLOSE) 
Permite cerrar la ventana. 
A l activar el 2do. bo­lón 
(R ecordset tip o 
D yna set) y el 4 to ., 
botón se muestra la 
siguiente pantalla: 
DynasetiAM IG O S 
Agregar Actualizar Eliminar 
r r ñ n n 
Campo I Renovar [[.C e rra r 
Nombre del campo: Valor: 
NOMBRE: | 
DIRECCION: | 
DISTRITO: | 
TELEFONO: | 
EDAD: I 
í i< N lm TTïïl 
i'-l botón Agregar perm ite ingresar un nuevo registro y el botón A ctualizar, 
graba el nuevo registro. Cada vez que hace c lic k en el botón Agregar, éste 
se convierte en Cancelar 
A l activar el 2do. botón (Recordset tip o Dynaset) y el 6to „ botón se mues­tra 
la siguiente pantalla: 
HÜ! DynaseLAMIGOS 
Actualizar Ordenar 
* 
L o s botones 
perm iten G ra­bar, 
O rdenar, 
Seleccionar re­gistros 
y cerrar 
la ventana. 
filtrar 
NOMBRE I DIRECCION 
Ceirai 
[DISTRITO ITELEFONO EDAD 
| H H i Haga clic con el botón secundario del mouse para ver las propiedades del control Dat. H E 
BARRA DE DESPLAZAMIENTO 
h R | i / i V W i 
lis ta barra p e rm ite desplazarnos p o r los re g istro s a d icion ad os para 
visualizarlos o editarlos. Tam bién indica el registro actual y la cantidad de 
registros que tenemos. 
G r u p o E d it o r ia l Megabyte
VISUAL BASIC como debe ser. 
CREAR BASE DE DATOS USANDO MICROSOFT ACCESS 
Haga c lic k en el botón IN IC IO del W indow s y luego en Programas, luego 
busque y haga c lic k el archivo M ic ro s o ft Access que norm alm ente se en­cuentra 
en la carpeta M ic ro so ft O ffice . 
£ 4 Microsoft Access 
A l ingresar al Access se visualiza la siguiente ventana: 
Microsoft Access 
C rear una nueva base de d a to s usando 
Base de datos en blanco 
A sistente p ara bases de datos 
¿ b rir una base d e d a to s existente! 
Más a rc h iv o s ... 
C :A R C H IV ~lD E V 5T U ~lV B 5Y S TE M C om pra y Venta 
CREDITOS 
C A R C H IV -1 DEVSTU~ 1 VBGOHAN 
A ceptar Cancelar 
ESTA V E N T A N A T IE N E 3 O P C IO N E S : 
1. B A S E D E D A T O S E N B L A N C O . 
P E R M IT E C R E A R U N A N U E V A B A S E D E D ATO S. 
2 . A S IS T E N T E P A R A B A S E D E D A T O S . 
P E R M IT E C R E A R U N A N U E V A B A S E D E D ATO S U S A N D O U N 
A S IS T E N T E (A Y U D A ) 
3 . A B R IR B A S E D E D A T O S E X IS T E N T E . 
P E R M IT E A B R IR O V IS U A L IZ A R U N A B A S E D E D A T O S Y A 
C R E A D A . 
Entonces haga c lic k en el prim er botón de opción para crear una nueva base 
de datos y luego haga c lic k en el botón aceptar. 
N O T A : 
si se encuentra en el m enú p rin c ip a l d e l A c c e ss h aga click en la o p ­ción 
archivo y lu eg o en la o pción n u e v a b a se de datos. 
354 Grupo Editorial Megabvte 
> CAPITULO IX: Manejo de Base de Datos 
Luego se visualiza la siguiente pantalla: 
m i 
Archivo nueva base de datos 
Guardar en: | _J Mis documentos 
Vjadrrun.rridb 
yalumnos.mdb 
yBASEBIBLIO.nidb 
yBDALUMNOS.mdb 
ybdentdmdb 
06CH.IBROS.mdb 
Q BIBU0TECA.mdb 
yCREDIT0S.mdb 
DB5ISTEDU.mdb 
^edwin.mdb 
INFORME.mdb 
ywjPP.mdb 
yproductos.mdb 
yTAREA.mdb 
Crear 
Cancelar 
^ ¡control de créditos y cobranzas educativas.mdb Ç Ì ventas.mdb 
Nombre de archivo: ▼] 
Guardar como tpo: | Bases de datos de Microsoft Access (*.mdb) j* ] 
En esta pantalla seleccione la carpeta donde desea crear la nueva base de 
datos (opcional). La carpeta predeterm inada es M I S D O C U M E N T O S y 
escriba el nom bre de la nueva base de datos luego haga c lic k en el botón 
crear. Se visualizará la siguiente ventana: (en el ejem plo la base de datos se 
llam a A G E N D A ). 
ÓAGENDA : Base de datos 
Esta pantalla tiene 6 hojas o fichas. Haga c lic k en la hoja T A B L A S y luego 
en el botón N U E V O para crear cada tabla de la base de datos. 
G r u p o E d it o r ia l Megabyte 355
VISUAL BASIC como debe ser. 
Se visualiza la siguiente ventana. 
Nueva tabla 
Crear una nueva tabla en vista 
Hoja de datos. 
Vista Diseño 
Asistente para tablas 
Importar tabla 
[Vincular tabla 
Aceptar Cancelar 
D e esta ventana e lija V IS T A D E D IS E Ñ O y haga c lic k en el botón 
A C E P T A R para empezar a e scribir la estructura de la tabla. 
Tabla! : Tabla 
Nombre del campo I Tipo de datos 1 Descripción]E 
Propiedades del campo 
General j Búsqueda | 
jd 
Tablai : Tabla i - ~ lx 
Nombre del campo I Tipo de dattooss j Descripción |j 
Propiedades del campo 
General J Búsqueda | 
Tamaño del campo 
Formato 
Máscara de entrada 
Título 
Valor predeterminado 
Regla de validación 
Texto de validación 
Requerido 
Permitir longitud cero 
Indexado 
No 
No 
No 
En la colum na N O M B R E D E L C A M P O escriba el nom bre de cada campo 
que desea crear dentro de la tabla. 
En la colum na T IP O D E D A T O S indique el tipo, tamaño y otras característica 
de cada campo. 
En la colum na D E S C R IP C IO N puede e s c rib ir en fo rm a opcional un texto 
que perm ita dar una explicación acerca de cada campo. 
CAPÍTULO IX: Manejo de Base de Datos 
Cuando term ine de escribir toda la estructura de la tabla haga un c lic k en hi 
figura del disco o pulse C T R L + G para grabar la estructura. 
Una vez ingresado el nombre de la tabla se visualiza la siguiente ventana: 
CE3 
M icrosoft Access 
No hay ninguna clave principal definida. 
Aunque no es necesaria una clave principal, es recomendable que 
exista. Una tabla debe tener una clave principal para que pueda 
definir una relación entre esta tabla y otras tablas de la base de datos. 
¿Desea crear una clave principal? 
Sí No Cancelar 
Si U d., desea haga c lic k en el botón SI para que la tabla tenga un campo 
clave. Estos campos se emplean más adelante. 
Una vez que grabó la tabla cierre la ventana para regresar a la ventana 
in ic ia l donde debe hacer c lic k en el botón A B R IR para ingresar los registros 
o en el botón D IS E Ñ O para m o d ific a r la estructura de la tabla. 
MUY BIEN 
U na vez in g resa d o los registros, g rá b e lo s y cierre el A ccess. D e esta 
m anera la base de datos ya está lista p a ra m anejarla con Visual Basic. 
U na vez creada la base de datos usando Visual B asic o M icrosoft A ccess 
c o n su s r e s p e c tiv a s ta b la s Ud. p u e d e m a n e ja r la in fo r m a c ió n en 
c u a lq u ie r fo r m u la r io . 
C uando necesite ca m b ia r la estructura de la tabla se recom ienda utilizar 
el M ic r o s o ft A c c e s s (o p c ió n D is e ñ o ), p o r q u e p e r m ite h a c e r esta s 
m o d ific a c io n e s una m a n e ra m á s fá c il. A n te s de ello d eb e c e r r a r la 
a p lic a c ió n d o n d e este u tiliza n d o d ich a tabla. 
Las tablas creadas en Visual B asic y M icrosoft A ccess con com patibles, 
p o r lo tanto si la creó en A ccess la p u ed e lla m a r desde Visual B asic y 
vic e v ersa . 
f l l f l j f t ^ G r u p o E d it o r ia l Megabyte 357
ílÉllÉifl» VISUAL BASIC como debe ser... 
CONTROL DATA: 
E l control Data permite manejar los registros de una o más tablas en un form u­lario. 
Ud. puede acceder a los registros para actualizarlos, im prim irlos, etc. 
E l control Data nos ayuda a crear de una form a m uy sencilla aplicaciones 
para poder acceder y adm inistrar bases de datos sin escribir casi ninguna 
instrucción. Cuando se manejan bases de datos se u tiliz a siempre el objeto 
R ecordset. 
OBJETO RECORDSET 
U n objeto Recordset representa registros de una tabla. Están form ados por 
registros (fila s) y campos (colum nas). 
E xisten tres tip o s de ob jeto s R ecordset: 
M arcador no d efinido.O bjeto Recordset de tipo hoja de repuesta D inám ica 
O bjeto Recordset de tip o de respuesta Instantánea 
O bjeto Recordset tipo Tabla 
P R IN C IP A L E S P R O P IE D A D E S D E L C O N T R O L D A T A : 
Ñ A M E 
Perm ite asignarle un nombre. Por defecto el nombre es D a ta l, Data2, Data3 
etc. Según el núm ero de controles que se dibujen en el fo rm u la rio . 
B O F A C T IO N 
Perm ite ind icar la acción que se debe realizar cuando se encuentre al in icio 
de la tabla. L a acción puede ser: 
0 M O V E F IR S T : se ubica en el p rim e r registro. 
1 B O F : se ubica antes del p rim e r registro. 
C A P T IO N 
Para in d ica r el texto a visualizar en el co ntrol Data. 
C O N N E C T 
Para in d ica r el tipo de base de datos que se desea manejar. Por defecto es 
A r r F s s 
D A T A B A S E N A M E 
Para in d icar el nom bre de la base de datos a manejar. 
E N A B L E D 
Para in d ica r si el control Data debe estar activo o no. 
E O F A C T IO N 
Perm ite in d icar la acción que se debe realizar cuando se encuentre al final 
de la tabla. La acción puede ser: 
0 M O V E L A S T : se ubica después del ú ltim o registro. 
1 EO F : se ubica en el ú ltim o registro. 
2 A D D N E W : adiciona un nuevo registro. 
CAPÍTULO IX: Manejo de Base de Datos 
E X C L U S IV E 
Permite indicar si la base de datos puede trabajar en un sistema m ultiusuario 
(Red). E l valor False indica que el sistema es de tipo m ultiusuario, es decir 
los registros pueden ser accedidos p o r varios usuarios al m ism o tiem po y el 
va lo r True indica que es de tip o personal. 
K E A D O N L Y 
Permite indicar si la base de datos es de sólo lectura. Si es de sólo lectura las 
modificaciones que se le haga a un registro no son reconocidas o grabadas. 
K E C O R D S O U R C E 
Permite in d icar el nom bre de la tabla que se desea manejar. 
V IS IB L E 
Para indicar si el co ntrol se debe visualizar. 
APLICACIÓN DESARROLLADA N° 48 
Siguiendo los pasos mencionados al in ic io de este capítulo, crear una base 
de datos llam ada A G E N D A que tenga una tabla llam ada A M IG O S y adi­cione 
algunos registros. 
I .a tabla debe tener la siguiente estructura: 
C A M P O T IP O T / 
Nom bre Texto 25 
Dirección Texto 20 
D istrito Texto 20 
Teléfono Texto 10 
Fecnac Fecha/Hora 
Sexo Texto 1 
Peso Sencillo 
I I lo rm ulario debe funcionar de la siguiente manera: 
■ S u A C C E S O A U N A B A S E D E D A T O S 
Nombre ¡TITO RAM IREZ 
Dirección ¡EL DORADO 456 
Distrito |j.L.O . — 
T eléfono (236975 
Fecha de Nac. 107/1V I 970 
Sexo | m 
Peso |S7 
W ) D a tai ► 1 1 SALIR 1 
I .os botones del control Data permiten ir al registro Primero, Anterior, Siguiente 
y Último. 
G r u p o E d it o r ia l Megabyte 359
VISUAL BASIC como debe ser... 
DESARROLLO 
El fo rm u la rio debe tener 07 Etiquetas, 07 Cajas de Texto, un control Data y 
un botón de Comandos. 
U n i x ] 
Si* Formi 
L ab e ll |T e *t1 
Label2 ¡Text2 
Label3 |Text3 
LabeW |Text4 
Label5 |Text5 
LabelG |Tex(G 
Label7 | Tex(7 
| H | ^ | Pa>a1 ► | ►! | Com m andl | 
lro . A l control Data se le debe asignar 02 propiedades: 
PROPIEDAD DATABASENAME, donde se selecciona el nom bre de 
la base de datos con la que desea trabajar. En la aplicación a desarrollar la 
base de datos se llam a AGENDA. 
A 
Haga c lic k en los tres puntos que se muestran en esta propiedad para acti­var 
la ventana y seleccionar la base de datos. 
La ventana que se visualiza es la siguiente: 
B u s c a re n : | _>l V b ~ T ] f i n | gj<-| j i 3 : f f | f | 
— J Clisvr ;_ J Repostry _ _ | vbonline 
— I G raphics ___ I samples __J W inapi 
— I H elp — I Setup _J W izards 
— I N u e va carpeta _ J setupkit *^ 1 AG EN DA 
1 O dbc | T empiate Biblio 
— I report £ □ T sql N w ind 
Nom bre de archivo: | | Abrir 
A rchivos de tipo: fBases de datos (“ mdb) ]▼] Cancelar j 
A yuda j 
Es recomendable seleccionar el nom bre de la base de datos, porque sí Ud. 
lo escribe debe in d icar también con m ucho cuidado la ruta exacta donde 
está ubicada. 
CAPÍTULO IX: Manejo de Base de Datos 
NOI A: 
< nando crea una base de datos en V isual Basic, ésta se graba en form a 
I»'(‘determ ina la carpeta: 
C:Archivos de ProgramaDevStudioVB 
» uando crea una base de datos en Access, ésta se graba en form a prede-i. 
i m ina la carpeta: C:Mis Documentos. Si no recuerda en qué carpeta se 
i abó la base de datos, búsquela haciendo c lic k en: Botón Inicio, Buscar; 
1/ chivos o carpetas. 
PROPIEDAD RECORDSOURCE, donde se selecciona el nombre de la 
labia que contiene los registros. En nuestro ejemplo la tabla se llam a Am igos. 
RecordSource J d 
I I nombre de la tabla debe salir en fo rm a autom ática cuando haga c lic k en 
la Hecha hacia debajo de esta propiedad. 
MUY IMPORTANTE 
Si no se muestra el nom bre de la tabla o tablas, sig n ifica que no grabó la 
labia dentro de la base de datos o no a asignado prim ero la propiedad 
I )A IA B A S E N A M E . En este ú ltim o caso se muestra el siguiente mensaje 
de error: 
Microsoft Visual Basic 
O 
Para llevar a ca bo esta operación, debe rellenar las propiedades D atabaseN arne y 
C onnect del control Data. 
A cep tar A yuda 
2do. A cada caja de texto se le debe asignar 02 propiedades: 
DATASOURCE, donde se selecciona el nombre del control Data que se 
está usando. En form a predeterm inada es D A T A 1. 
DATAFIELD, donde se selecciona el cam po que desea v is u a liza r en 
cada caja de texto. 
CONTROL DATASOURCE DATAFIELD 
T e x tl D atai Nom bre 
Text2 D a ta i D irección 
Text3 D a ta i D istrito 
Text4 D atai Teléfono 
Text5 D atai Fecnac 
Textó D atai Sexo 
Text7 D atai Peso 
I 11 botón S alir debe tener la instrucción EN D . 
G r u p o E d it o r i a l Megabyte 361
é ü ü ^ VISUAL BASIC como debe se r... , '■ v a i 
A P LIC A C IO N D E SA R R O L L A D A N° 49 
D esarrollar la aplicación anterior usando botones de comandos. 
Reg N» 1 0 0 3 
N o m b r e | L I L I A N A A L A R C O N 
D i r e c c i ó n j M A R I A I Z A G A 
D i s t r i t o Jc H I C L A V O 
T e l é f o n o | 2 2 7 1 9 1 
F e c h a d e N a c . J 20/ I 0 / 1 9 7 0 
S e x o J p 
P e s o f 5 3 ¡ 
Ir a l R e g i s t r o : 
S i g u i e n t e f ¿ i n t e r i o r | U l t i m o | J g r im e r o | £ a l i r 
1.- DIBUJAR LOS CONTROLES. 
D ib u je los controles com o se muestran en la aplicación. 
2.- ASIGNAR LAS PROPIEDADES. 
Las cajas de texto y el co ntrol Data deben tener las mismas propiedades de 
la aplicación anterior. 
Label7 debe tener en su propiedad C aption: Reg. N°. 
LabelS debe tener en su propiedad C aption: 0001. 
E l control data debe tener en su propiedad visible el va lo r False para que no 
se visualice. 
NOTA: 
C u a n d o e l u su a rio visu a liza los reg istro s en las ca ja s de texto p u e d e 
ta m b ié n m o d ific a r lo s lo s d a to s, p a r a e v ita rlo , a sig n e a la s c a ja s de 
texto e l va lo r T R U E en su p ro p ie d a d L O C K E D . 
3.- PROGRAMACIÓN DE LOS CONTROLES. 
Se utilizan los siguientes métodos: 
M O V E F IR S T : M uestra el p rim e r registros. 
M O V E N E X T : M uestra el siguiente registro. 
M O V E L A S T : M uestra el ú ltim o registro. 
M O V E P R E V IO U S : M uestra el registro anterior. 
Y las siguientes propiedades: 
E O F : Indica si estamos al fin a l de la tabla. 
B O F : Indica si estamos al in ic io de la tabla. 
R E C O R D C O U N T : Cuenta la cantidad de registros. 
La sintaxis de cada uno es: 
C ontrol_D ata.R ecordset.M étodo 
Ejem plo, para ir al ú ltim o registro de la tabla que está ligada al control D ATA 1 
se escribe: D a ta l.R e c o r d s e t.M o v e la s t 
362 - G r u p o E d it o r ia l Megabyte^ 
K CAPÍTULO IX: Manejo de Base de Datos % m 
U nio n P R IM E R O : 
I'riva le Sub C o m m a n d 4 _ C lick() 
I )ata I . R ecordset. M o ve F irst 
( o m m a n d l. E n a b led = True 
( om m and3. E n a b led = True 
( <nnmand2. E n a b led = F alse 
C om m a n d 4 .E n a b led = F alse 
NR = / 
l.abelS = F orm at$(N R , ”0000") 
I n d Sub 
Botón ÚLTIM O: 
Private Sub Command3_Click() 
Data 1 .Recordset.Mo veLast 
Command I.Enabled = False 
Command3. Enabled = False 
Command2. Enabled = True 
Command4. Enabled = True 
NR = Datal. Recordset. RecordCount 
Label8 = Format$(NR, “0000") 
End Sub 
Instrucciones del botón SIGUIENTE: 
P rivate Sub C o m m a n d 1 _ C lic k () 
D a ta l .R ecordset. M o ve N e x t 
I f D ata 1. R ecordset. E O F Then 
M sgB ox “U ltim o reg istro ”, 16, “L o s ie n to ” 
C o m m a n d l.E n a b le d = F alse 
C om m and^. E n a b led = False 
D a ta l.R eco rd set. M o veP revio u s 
ElseC 
o m m a n d l .E n a b led = True 
C o m m a n d s.E n a b led = True 
C om m and2. E n a b led — True 
C om m a n d 4 .E n a b led = True 
N R = Val(Label8) + 1 
L abel8 = F orm at$(N R , “0 0 0 0 ”) 
E nd I f 
l.n d Sub 
Instrucciones del botón ANTERIOR: 
P rivate S u b C o m m a n d 2 _ C lic k () 
D a ta l. R eco rd set. M o v e P re v io u s 
I f D a ta l.R e c o rd se t.B O F Then 
M sgB ox “P rim er re g istro ”, 16, “Lo s ie n to ” 
C o m m a n d l.E n a b le d - F alse 
C om m and4. E n a b led = F alse 
D ata 1. R ecordset. M o veN ext 
E lseC 
o m m a n d l .E n a b led = True 
C om m and3. E n a b led = True 
N R = Val(Label8) - 1 
L abel8 = F o rm a t$ (N R , “0 0 0 0 ”) 
E n d I f 
E n d S u b 
El botón S A L I R d ebe ten er la instrucción E N D . 
G r u p o E d it o r ia l Megabyte 363
é 3 ñ k > VISUAL BASIC como debe ser... 
CONTROL DBLIST 
E l control D b list perm ite m ostrar el contenido de un campo de los registros 
de una tabla. En la lista de componentes, este control se llama: 
M ic ro s o ft Data Bound L is t C ontrol. 
PRINCIPALES PROPIEDADES DEL CONTROL DBLIST: 
LISTFIELD 
Permite indicar el campo cuyo contenido se debe visualizar en el control. 
Prim ero se debe in d icar en la propiedad RowSource el nombre del control 
Data que está ligado la tabla donde se encuentra el campo. 
MATCHENTRY 
Selecciona la form a de acceder a los elementos la lista. 
0. D B L B A S IC M A T C H IN G : 
Selecciona a un elem ento por el p rim e r carácter que se digiten. 
1. D B L E X T E N D E D M A T C H IN G : 
Selecciona a un elem ento por los prim eros caracteres que se digiten. 
ROWSOURCE 
Perm ite indicar el nom bre del co ntrol data que está ligado a la tabla con la 
que queremos trabajar con el co ntrol D b lis t. Esta propiedad se debe asignar 
antes de L IS T F IE L D . 
CONSULTA DE REGISTROS 
Existen dos form as básicas de consultar registros de una tabla. 
1. Ingresando el campo clave del registro que desea consultar. Por ejemplo 
el código, nombre o cualquier dato que puede identificar a un solo registro 
dentro de la tabla. 
2. Seleccionando el campo del registro a consultar desde un control D B list 
o desde un control D Bcom bo. 
M U Y IM PO R TA NTE 
Cuando en la estructura de una tabla, Ud., ha creado un 
campo cuyo nombre está compuesto con espacios en 
blanco o caracteres especiales como por ejemplo el 
guión(-), el signo número (s), etc., entonces, cada vez que 
; se refiera a ellos dentro de un programa, los debe colocar 
dentro de corchetes ([ ]). Por ejemplo: 
[FECHA DE INGRESO] 
[APELLIDO-PATERNO] 
[e RECIBO] 
CAPITULO IX: Manejo de Base de Datos 
A PLIC A C IÓ N D E SA R R O L L A D A N° 50 
- ta lx i 
Doto* Personales : 
N o m b r o | M A N U E L C A R B A JA L 
D i r e c c i ó n 
D is J rito 
T e l é f o n o 
F e c h a d e N a c 
S e x o 
P o s o 
| S A L A V E R R Y 9 8 7 
|C H I C L A V O 
12 0 9 8 7 5 
11 8 / 06 /1 9 6 0 ÍM 
Í70 
| M i •« | P -a ta l 
ASIGNAR LAS PROPIEDADES. 
I a caja de texto N ° 1 (donde se ingresa el nom bre a consultar) NO debe 
Icner ninguna propiedad. Las cajas de texto desde la N°2 hasta la N °8 y el 
control Data deben tener las mismas propiedades de la aplicación anterior. 
I •'.! control D blist 1 debe tener en su propiedad R O W S O U R C E el valor D a ta l, 
i*n su propiedad L IS T F IE L D debe seleccionar el campo N om bre y en la 
propiedad M A T C H E N T R Y el valor N°1 -D B L E X T E N D E D M A T H IN G para 
poder seleccionar un registro digitando sus prim eros caracteres. 
NOTA 
Para que los nombres se visualicen ordenados cree un índice para el campo nombre. 
MÉTODOS UTILIZADOS: 
FINDFIRST: 
Husca el prim er registro de la tabla que cum pla la condición. Su sintaxis es: 
< o n tro l D ata. R eco rd set. F in d fir s t C o n d ició n . 
Se recomienda que la condición se almacena en una variable. 
Por ejem plo se tiene una tabla con el campo N O M C L I y se desea buscar el 
u-gistro cuyo nom bre es: J U L IO D E L G A D O . 
I as instrucciones seráp: 
C = "N O M C L I = ‘J U L IO D E L G A D O ’ " 
D a ta l.Recordset.F ind first C 
Si el nombre se encuentra p o r ejem plo en T e x tl, las instrucciones serán: 
C = " N O M C L I = ‘ " + T e x tl + 
D atal .R ecordset.Findfirst C 
NOTA: 
t os apostrofes sólo se utilizan para buscar campos de tipo Texto y entre ellas y las 
i lunillas NO debe dejar espacios en blanco. 
Si el registro es encontrado, sus datos son mostrados automáticamente en las cajas 
¡le texto o etiquetas que se les a asignado la propiedad Datasource y Datafield. 
G r u p o E d it o r ia l Megabyte 365
|fllllll> VISUAL BASIC como debe ser... CAPÍTULO IX: Manejo de Base de Datos 
NOM ATCH: 
Se u tiliz a para preguntar si un registro fue encontrado. D evuelve el valor 
Falso si el registro fue encontrado y Verdadero en caso contrario. 
S intaxis para preguntar si el registro fue encontrado: 
I f N ot C o n tro l D ata. R eco rd set.N o m a tch then 
Sintaxis para preguntar si el regist. no fue encontrado: 
I f C o n tro l D a ta .R e c o rd se t.N o m a tc h then 
Ejemplo: 
D im R A s String 
R = “N O M C L I = ‘ “ + T extl + 
D ata 1.R eco rd set.F indF irst R 
I f D a ta l.R ecordset.N oM atch Then 
M sg B o x "E L N O M B R E N O E X IS T E " ,1 6 ,”Lo s ie n to " 
E n d if 
P R O G R A M A C IÓ N D E L O S C O N T R O L E S 
In s tru c c io n e s d e l b o tó n O K . 
P riv a te S u b C o m m a n d 1 _ C lick() 
D im R A s String 
I f Trim ( T e x tl) = Then 
MsgBox “DEBEINGRESARELNOM BREA CONSULTAR”,48, "LOSIENTO" 
T extl = 
T extl. S e t F ocus 
E lse 
R = “N O M B R E = *“ + T extl + 
D a ta l . R ecordset. F in d F irst R 
I f D a ta l .R eco rd set.N o M a tch T hen 
M sg B o x “E L N O M B R E IN G R E S A D O N O E X IS T E ",16, "Ingrese el 
nom bre exacto a co n su lta r ” 
E lse 
T extl = “ ” 
T extl. S etF o cu s 
E n d I f 
E n d I f 
E n d S u b 
Instrucciones del D b lis tl para que al e le gir un registro se visualicen todos 
sus datos. 
P riva te S u b D B L is tl _ C lic k () 
D im R A s String 
R = “N O M B R E = + D B L is tl.Text + 
D ata I . R ecordset. F in d F irst R 
E n d S u b 
El botón S A L IR debe tener la instrucción E N D . 
MANTENIMIENTO DE REGISTROS 
I I m antenim iento de registros consiste en realizar program as para: A d ic io ­nar, 
M o d ific a r y E lim in a r registros. 
Métodos U tilizados: 
A D D N E W : Permite adicionar un registro a una tabla. 
I I ) IT : Perm ite m o d ific a r los datos de un registro de una tabla. 
M L L E T E : Permite e lim in a r el registro actual de una tabla. 
< A N C E L U P D A T E : Perm ite cancelar las m odificaciones realizadas a un 
icgistro o la ejecución de A D D N E W m ientras el registro no este grabado. 
I a sintaxis de estos métodos es: 
Control_Data.Recordset.Nombre_Método 
A PLIC A C IÓ N D E SA R R O L L A D A N° 51 
MANTENIMIENTO DE RESGISTROS 
A m ig o s 
CARINA RIOJA j 
CARLOS M ORALE 
íDANIEL ALARCO 
I M AN UEL C A RB A JJ 
Nombre 
Dirección 
Distrito 
T eléfono 
Fecha de Nac. 115/10/1966 
Sexo 
Peso [S8 
|WIRACHORA315 
ILA VICTORIA 
I232689 ....... 
M C 
D a to s P e rs o n a le s : 
IDANIEL ALARCON 
Cancelar 
O p c io n e s d e M a n te n im ie n to 
Adicionar Modificar Cerrar 
M M Datai ► H 
l 'ste p ro g ra m a p e rm ite d a r m a n te n im ie n to a los re g istro s de una 
labia, com o p o r e je m p lo , c o n su lta rlo s, m o d ific a r sus datos, elim inarlos 
y a d ic io n a r nuevos re g is tro s . 
M U Y IM PO R TA NTE 
i slos son los programas básicos para m anejar registros, por lo tanto es muy 
im portante que Ud., los practique varias veces con diferentes tablas. 
m G r u p o E d i t o r i a l Megabyte
1. Dibujar los controles. 
I □ I x | 
VISUAL BASIC como debe ser. . . 
¡a§„ Forn ii 
............................................ F r a m e l 
L a b e l 2 | T e n t 1 
!*". Labo13 [Tr-TT 
' - L a b e l 4 | T e x t 3 isll 
L a b e l 5 | T e x t 4 
L a b e lG j T e x t S 
L a b e l 7 f f e x Í 6 ’ 
: : : : : : : : : : : : L a b e l s j T e x t 7 
F r a m e 2 ............................................... 
C o m m a n d l 
C o m m a n d 2 
C o m m a n d 3 I C o m m a n d 4 | C o m m a n d 5 | C o m m a n d 6 j 
: : : : : : : : 1n | ^ ]Da>ai ► 1 m| : 
NOTA: 
D ibuje p rim ero los F ram e y encim a los b o tones de com andos. 
2. Asignar las propiedades. 
CONTROL DATA 
CONTROL DATABASENAME 
RECORDSOURCE 
Datal Agenda Amigos 
CAJAS DE TEX TO 
CONTROL DATASOURCE DATAFIELD 
Textl Datal Nombre 
Text2 Datal Dirección 
Text3 Datal Distrito 
Text4 Datal Telefono 
Text5 Datal Fecnac 
Text6 Datal Sexo 
Text7 Datal Peso 
D B LIS T 
CONTROL ROWSOURCE LISTFIELD 
Dblistl Datal Nombre 
A los botones de comandos y fram es, asígneles su propiedad C aption, como 
se muestra en la aplicación a desarrollar. 
I ||¡ ||¡ ^ 3 6 8 G r u p o E d i t o r i a l M e g a b y t e <^ ^ ^ 
CAPÍTULO IX: Manejo de Base de Datos ^ 
Escribir las instrucciones de los controles. 
C rear dos procedim ientos (A c tiv a r y Desactivar) y escribir las siguien- 
tes instrucciones: 
SubACTIVAR() 
F ram el.Enabled = True 
Frame2. Enabled = False 
D BListl. Enabled = False 
End Sub 
Botón ADICIONAR 
Private Sub Command3_Click() 
ACTIVAR 
Data 1 .Recordset. AddNew 
Textl.SetFocus 
End Sub 
Botón MODIFICAR 
Private Sub Command4_Click() 
ACTIVAR 
D atal .Recordset.Edit 
Textl.SetFocus 
End Sub 
Sub DESACTIVARO 
F ra m el. E nabled = False 
Frame2. E nabled = True 
D B L istl .E nabled = True 
End Sub 
Botón GRABAR 
P rivate Sub C o m m a n d l _ C lick() 
D ESACTIVAR 
D a ta l.R eco rd set. U pdate 
R em Actualiza el D B listl 
D B L istl.L istF ie ld - ’’nom bre ” 
E n d Sub 
Botón CANCELAR 
P rivate Sub C om m and2_C lick() 
D E SA C TIV A R 
D a ta l. R eco rd set.C a n celU p d a te 
E n d Sub 
Instrucciones del botón ELIMINAR 
Private Sub Command5_Click() 
Dim R As Byte 
R=MsgBox(“Estásegurodeeláninaresteregistro”,36, “CUIDADO”) 
IfR = 6 Then 
D atal. Recordset. Delete 
D atal.Refresh 
End I f 
End Sub 
CONTROL DBLIST1 
Private Sub D BListl_Click() 
Dim C A? String 
C= "NOMBRE= “‘+DBListl+ 
Datal.Recordset.FindFirst C 
End Sub 
Instrucciones del Form_Load 
Prívate Sub Form_Load() 
Framel.Enabled - False 
Datal. Visible - False 
End Sub 
Instrucciones del botón SALIR 
Prívate Sub Command6_Click() 
I f M sgBox(“Está seguro de Sari ir”,36, ’’CERRAR”) = 6 Then End 
End Sub 
G r u p o E d it o r ia l Megabyte 3 6 9
M. % VISUAL BASIC como debe ser... 
A S IS T E N T E D E L V IS U A L B A S IC P A R A B A S E D E D A T O S 
Visual Basic tiene un asistente que permite desarrollar en forma automática un for­mulario 
con los programas básicos para manejar y dar mantenimiento a las tablas y 
registros de una base de datos. 
Para ello, de la opción Complementos de la Barra de M e n ú elija Asistente para 
Formulario de Datos. 
NOTA: , 
Si no tiene la opción Asistente para Formularios de Datos, ingrese a la opcion 
Administrador de Complementos y active VB Data Form Wizard. 
Cuando elige la opción Asistente para Formularios de Datos, se puede visualizar 
una ventana de introducción y cuando hace Click en Siguiente se muestra la 
ventana donde se elige el tipo de Base de Datos. El tipo predeterminado en V. Basic 
es Access. 
nanaas 
ddBMAó'iEf I:V¡; ¡JBfíSE 5 0 Fo >Pro ?■<< 
< if'fr págmjyte > | 
Después de hacer click en el botón Siguiente de la ventana anterior, Visual Basic le 
pide el nombre de la Base de Datos con la que desea trabajar y en la siguiente 
ventana le pide la forma de visualizar los registros. La primera y segunda forma se 
utilizan para una sola tabla y la tercera forma para dos tablas. 
|||||||> 370 G r u p o E d i t o r i a l Megabyte 
CAPÍTULO IX: Manejo de Base de Datos 
I n la siguiente ventana debe seleccionar en Origen de Datos el n o mbre de 
la tabla y en Campos Disponibles puede seleccionar los campos que desea 
visualizar. También puede seleccionar una columna (Campo) por el cual quiere 
ordenar los registros. C ada uno de los botones de esta ventana muestra un 
mensaje indicando su función con sólo llevar el puntero del M o u s e hasta él. 
I.n la siguiente ventana, Visual Basic le pide seleccionar los botones que 
i lesea tener en el formulario. 
pe 
£>r*jen de registros: 
Campes jesjcdcnaoos: ; 
_íJ 
Orden* cok*iwaD«: j* ] 
Ayuda I CnccSy j : <&trfe. ;| f | j g ü g l 3 l : 
’ GsrírcéK caponóles 
■ p Botan Agregar 
FBotonEbró» 
; 17 ÉotónEenovar 
• F Bótóntetuslíjai 
■ 15 Botóte Cerrar 
J ÍCÍÍ^?T3] lermna- | 
I in la última ventana, le pide el nombre del formulario. E n forma predetermina 
le asigna el n o mbre F R M seguido del n o m b r e de la tabla. Para ver su 
ejecución, puede hacer que este formulario se ejecute primero (Proyecto/ 
Propiedades del Proyecto). 
El formulario que se crea en forma automática depende el tipo que eligió. 
Por ejemplo, si ha elegido Un único Registro, se visualiza: 
■¡.AMIGOS 
NOMBRE: 
DIRECCIÓN:' 
DISTRITO: 
TELEFONO: 
FÈCNÀC: 
SEXO: 
PESO: 
Agregar j 
lIT fti 
M 3  
Eliminar Renovar Actualizar Cerrar 
T T m I 
M U Y IM P O R T A N T E 
Ud., puede mirar las instrucciones de cada uno de los botones de comandos 
del formulario creado. 
¡lililí»* Grupo Editorial Megabyte 37, « £ »
éS B k > VISUAL BASIC como debe ser... 
CONTROL DBCOMBO: 
Es un control sim ila r al D B lis t, es decir perm ite m ostrar el contenido de un 
campo, pero además puede m ostrar una caja de texto. En la lista de com po­nentes, 
este control tam bién se llam a: M ic ro so ft Data Bound L is t C ontrol. 
Tiene las mismas propiedades del control D B list, pero además se le puede 
asignar la propiedad S T Y LE . 
L a propiedad Style, indica la form a cóm o debe trabajar el D B com bo. Los 
valores que se le puede asignar son: 
Style fc) - dbcDroDdownComboH 
0 - dbcDroodownCombo 
1 - dbcSimpleCombo 
2 - dbcDropdownList 
0 : El D B com bo se muestra con una caja de texto y una lista desplegable, 
pudiendo seleccionar a un registro en cualquiera de ellas. 
1 : M uestra una caja de texto y una lista que no se despliega, pudiendo 
seleccionar a un registro en cualquiera de ellas. 
2 : Sólo muestra y perm ite seleccionar cualquier registro de la lista des­plegable. 
A P L IC A C IÓ N D E SA R R O L L A D A N° 52 
D esarrollar el program a de consulta anterior, usando un D B com bo, de tal 
manera que a m edida que se va escribiendo el nom bre de una persona, se 
visualicen sus datos en las cajas de texto. 
TñTSl 
H a g a c l i c k e n e l N o m b r e 
o d í g i t e la s i n ic i a le s 
D A 
D A N IE L A L A R C O N - I 
L IL IA N A A L A R C O r 
M A N U E L C A R B A J ^— 
T IT O R A M IR E Z _ Z J 
N o m b r e a C o n s u l t a r 
D a l o s P e r s o n a l e s 
N o m b re 
D ir e c c ió n 
D is trito 
T e lé fo n o 
F e c h a d e N a c . 
S e x o 
P e s o 
| D A N IE L A L A R C O N 
IW IR A C O C H A 3 1 5 
|L A V IC T O R IA 
| 2 3 2 6 8 9 
| 1 5 / 1 0 /1 9 6 6 
M 68 
m. FORMAS DE CONSULTAR REGISTROS 
I H| < |Datai ► l'nj 
372 G r u p o E d it o r ia l M e g a b y t e ^ 
|> CAPÍTULO IX: Manejo de Base de Datos 
DESARROLLO: 
D ibuje todos los controles de la aplicación de consulta anterior y asígneles 
las propiedades respectivas. Sólo debe cam biar el control D B lis t p or el con­trol 
D Bcom bo. 
A l control D bcom bo asígnele las propiedades R owSource Y L is tfie ld como 
se hizo para el D B list. Adem ás debe asignar sus propiedades Text y Style. 
lil contenido de la propiedad Text b órrelo para que quede en blanco y en su 
propiedad Style, asígnele el valor 2. 
Debe program ar en los eventos Change y C lic k del D B C om bo: 
Instrucciones del evento Change 
P ríva te S u b D B C o m b o l_ C h a n g e () 
D im C A s String 
D im L A s In teg er 
L = L e n (D B C o m b o l) 
C = "L E F T(N O M B R E ," + Str(L) + + D B C o m b o l + 
D a ta l.R e c o rd se t.F in d F irst C 
I f D a ta l.R e c o rd se t.N o M a tc h Then 
F ra m e l. Visible = F alse 
E lse 
F ram e 1 .V isible = True 
E n d I f 
lu id S u b 
Instrucciones del evento Click 
P rívate Sub D B C o m b o l_ C lic k (A re a A s In teg er) 
D B C o m b o l jC h a n g e 
E n d Sub 
APLICACIÓN PROPUESTA 
M o d ifiq u e la aplicación anterior de tal manera que perm ita consultar un 
registro por el nom bre o teléfono. 
IH á'l ii; FiYi <1 =»1'1 ¡i ¡143EDSIíBMMMMBZ[bISI 
S E L E C C I O N E E L D A T O D E L R E G I S T R O 
N o m b re T e lé f o n o 
| ' 3 1 2 2 7 1 3 1 3 
D a lo s P e rs o n a le s 
N o m b r e | L I L I A N A A L A R C O N 
D ir e c c ió n | M A R I A I Z A G A 
D is t r it o jC H I C L A V O 
T e lé f o n o | 2 2 7 1 9 1 
F e c h a d e N a c f 2 0 T T 0 T l9 7 0 
S e x o | p 
P e s o [ 5 3 
I l < | 4 | D a t a l ► | M i 
||||¡ |§ * G r u p o E d i t o r i a l Megabyte 373
l i l i l í , VISUAL BASIC como debe ser... 
C O N T R O L D BG R ID: 
ü 
E l co ntrol D B g rid perm ite listar los registros de una tabla en un form ulario. 
A l listar los registros Ud. puede actualizarlos, y adicionar nuevos registros. 
En la lista de componentes, este control se llam a: M ic ro s o ft Data Bound 
G rid Control. 
PRINCIPALES PROPIEDADES DEL CONTROL DBGRID: 
ÑAM E 
Perm ite asignarle un nombre. Por defecto el nom bre es D b g rid l, D bgrid2, 
D bg rid 3 etc. Según el núm ero de controles que se dibujen en el form u la rio . 
ALLOWADDNEW 
Perm ite ind icar que si al llegar al ú ltim o registro se puede adicionar nuevos 
registros. 
ALLOWARROWS 
Perm ite usar las teclas de m o vim ie n to del cursor para moverse por los 
registros. 
ALLOWDELETE 
Perm ite ind icar si se puede e lim in a r registros. 
ALLOWUPDATE 
Perm ite in d icar se pueden m o d ific a r los registros. 
CAPTION 
Perm ite escribir el títu lo para el control 
COLUM NHEADERS 
Para in d icar si desea visualizar los encabezados de cada campo. 
DATASOURCE 
Para ind icar el nom bre del co ntrol Data que contiene la tabla donde se 
encuentran los registros que se desea visualizar. 
ENABLED 
Para in d icar si el control debe estar activado. 
HEADFONT 
Para seleccionar el tipo, tamaño y estilo de letra para el encabezado de cada 
campo. 
HEADLINES 
Perm ite ind icar el núm ero de líneas que desea tener com o encabezado de 
cada campo. 
ROWDIVIDERSTYLE 
Perm ite indicar el estilo de la línea que d ivid e cada registro 
VISIBLE 
Para in d icar si el co ntrol se debe visualizar. 
G r u p o E 374 d it o r ia l M e g a b y t e « * 
CAPITULO IX: Manejo de Base de Datos ^ 
A PLIC A C IÓ N D E SA R R O L L A D A N° 53 
Con la tabla A m igos desarrolle la siguiente aplicación que perm ite listar 
todos los registros: 
jjn lí 
HOMBRE [d i r e c c i o h 
RELACION DE AMIGOS 
[d i s t r i t o It e l e f o n c I feciiac [sexc r 
{Ta RINA RIOJA ¡PRINCIPAL 34S LAMBAYBQUB 227191 20/10/1970 F 
CARLOS LA H ADRIE j LOS INCAS N" 1020 LA VICTORIA : 202020 20/10/1970 H 
CARLOS MORALES ;AREQUIPA N* 364 CHICLAYÛ 2738S8 18/07/1969 H 
DANIEL INFANTE :AV. LOS LAURES 234 iFERREÑAFE ^203347 16/12/1970 H » j______________________ _______ _______ ,_____ _ t a 
iHNIOa'al TTTlI Sala 
Para diseñar esta aplicación debe dibujar en un form ulario un control D Bgrid, 
un control Data y un botón de comandos. 
1ro. A l control Data se le debe asignar 02 propiedades: 
DATABASENAME, donde se selecciona el nombre cíela base de datos ( "Agenda"). 
RECORDSOURCE, donde se selecciona de la tabla que contiene los registros ( "Amigos"). 
2do. El control D B grid debe tener en su propiedad DataSource el nombre del 
control Data (D a ta l) y en su propiedad Caption el texto: R E L A C IÓ N DE 
A M IG O S . 
El botón SALIR debe tener la instrucción END. 
RECUPERAR LOS CAMPOS 
Una vez que asignó las propiedades al control Data y al D Bgrid, haga C lick con 
el botón derecho en el D B g rid y seleccione R EC U PER AR C AM PO S. 
ASIGNAR UN ANCHO ADECUADO A CADA CAMPO. 
Una vez que recuperó los campos en el D bgrid, haga C lick con el botón derecho 
en éste y elija E D IC IÓ N , luego, lleve el puntero a la línea que divide cada 
campo y asígnele el ancho que desea. 
QUITAR UN CAMPO DEL DBGRID 
Siga los pasos anteriores hasta elegir E D IC IÓ N , luego haga click en el título del 
campo a quitar, botón cjerecho y elija D ELETE. 
MODIFICAR EL TITULO (ENCABEZADO)A LOS CAMPOS. 
Para ello seleccione la propiedad PERSONALIDADO del D B grid y active la 
hoja C O L U M N A S . Seleccione colum na por colum na (campos) y en la 
propiedad C A P T IO N asígnele el título que desea. Además puede asignarle un 
formato a cada campo. 
En la hoja D ISEÑ O puede activar la propiedad L O C K E D de las columnas que 
desea para que no se pueda m odificar su contenido, además puede alinear el 
contenido del campo. 
ADICIONAR REGISTROS. 
Para adicionar registros en el D BG R ID asigne a su propiedad A LLO W A D D N E W 
el valor TRUE. La propiedad A LLO W U P D A T E que permite modificar o no los 
datos debe tener también el valor verdadero. 
EVITAR QUE SE MODIFIQUE LOS DATOS EN EL DBGRID. 
Para ello asigne a su propiedad A L L O W U P D A T E el valor FALSE. 
G r u p o E d i t o r i a l Megabyte 375
i S Ì É > VISUAL BASIC como debe ser... 
IN S T R U C C IO N E S S Q L 
SQL significa Structured Query Language, es decir, Lenguaje Estructurado de 
Consulta. Es un lenguaje orientado a Base de Datos que permite administrar y 
manipular sus componentes (tablas, registros, etc.) de una manera fácil y rápida. 
INSTRUCCIÓN SELECT 
Selecciona los registros con los que deseamos trabajar o ver en un momento 
determinado. También los ordenarlos, une tablas, etc. 
Esta instrucción se debe asignar a la propiedad RECORDSOURCE del control 
D ATA cuando la utilizamos en un formulario. 
LASINTAXISPARASELECaONARTODOS LOS REGISTROS ES: 
S E L E C T * FR O M NO M BRE_D E_LA_TABLA 
El asterisco (*) indica que se deben seleccionar todos los campos. 
Si desea seleccionar sólo algunos campos debe escribirlos separados por una coma 
(,). Ejemplo: 
La siguiente instrucción selecciona todos los campos y todos los registros de la 
tabla amigos: SE L E C T * F R O M AM IG O S 
La siguiente instrucción selecciona sólo el Nombre y Teléfono de todos los regis­tros: 
S E L E C T N O M BRE, TELEFO NO F R O M AM IG O S 
Para que funcione en un formulario, primero debe de darle las propiedades corres­pondientes 
al control Data y al Dbgrid, luego en un botón de comandos se debe 
escribir por ejemplo: 
Datal.RecordSource = "Select nombre,telefono from amigos" 
D atal .Refresh 
CAMPOS CALCULADOS 
Son campos que no se encuentran en una tabla, pero que se pueden obtener con los 
campo que tiene la tabla. Por ejemplo, en la tabla Amigos, el campo EDAD se puede 
considerar como campo calculado, porque se puede obtener con la fecha de naci­miento. 
La sintaxis para obtener un campo calculado es: 
Expresión As Nombre 
Donde Expresión, es la operación que se necesita realizar para obtener el campo 
calculado y Nombre, es el nombre que le desea asignar al campo calculado. Ejemplo, 
la siguiente instrucción muestra el nombre y la edad de todos los registros: 
Datal .RecordSource = "Select nombre, year(now)-year(fecnac) as edad from amigos" 
Datal.Refresh 
M UY IMPORTANTE 
Cuando desee visualizar sólo algunos campos o los campos calculados en el DBgrid, 
no debe haber recuperado los campos. (Botón Derecho, Recuperar Campos). Si ha 
recuperado los campos, haga click con el botón derecho del Mouse en cualquier 
parte del DBgrid y elija B o rra r Campos. 
' < 5 CAPÍTULO IX: Manejo de Base de Datos ^ IIÉ IP 
SELECCIONAR SÓLO ALGUNOS REGISTROS. 
Con la instrucción WHERE del SELECT, se pueden seleccionar los registros con los 
cuales deseamos trabajar o visualizar. 
Su sintaxis es: 
SE L E C T * FR O M Nom bre_deJa_Tabla W H ERE Condición 
Ejemplo: 
Seleccionar los que viven en el distrito La Victoria: 
SF1ECT * FROM AMK ¡OS WHERE DISTRITO = ”LA VICTORIA” 
Seleccionar las mujeres que pesan más de 60 kilos: 
SELECT*FROMAMIGOSWHERESEXO-”F ’ANDPESO>60 
BE TW EE N : Se puede utilizar junto con W HERE para seleccionar registros que 
tienen un campo cuyo valor en encuentra entre dos valores dados W H ERE 
NO M BJCAM PO B E T W E E N VALOR1 A N D VALOR2 
Ejemplo: Seleccionar las personas que pesan entre 60 y 73 Kilos. 
SELECT* FROMAMIGOSWHEREPESOBETWEEN60AND 73 
IN : Se puede utilizar junto con WHERE para seleccionar registros que tienen un 
campo cuyo valor es uno de los indicados. 
WHERENOmjMIPOIN(VAWRl,VAWR2,VAWR3r VAWRii) 
Ejemplo: Seleccionar las personas nacieron en el mes de Febrero, Abril, Agosto o 
Diciembre. 
SELECT*FR0MAMIG0SWHEREM0N1H(FECNAC)1N(24,8,12) 
ORDENAR LOS REGISTROS. 
Con la instrucción ORDER B Y del SELECT, se pueden ordenar los registros de una 
tabla. Su sintaxis es: 
SELECT * FROM Nombre_deJa_Tabia ORDER BY Nombre_del_Campo 
Se puede utilizar el número del campo en lugar del nombre. 
Si se quiere ordenar por varios campos, se deben separar por una coma sin importar 
el tipo de cada campo. 
Si se desea ordenar en forma descendente escriba la palabra DESC, después del 
nombre del campo. La palabra ASC, ordena en forma ascendente, pero es opcional 
utilizarla. Ejemplos: 
Para ordenar los registros por el distrito: 
SELECT*FROMAMlGOSORDERBYDlSTRnD 
Para ordenar por el campo sexo en forma descendente y por el nombre en forma 
ascendente: 
SELECT* FROMAM1GOS ORDERBYSEXO DESC, N O M B R E 
SELECCIONAR REGISTROS Y ORDENARLOS. 
Utilizando las instrucciones WHERE y ORDER B Y dentro de una instrucciones 
SELECT, podemos seleccionar y ordenar registros. 
Su sintaxis es: 
SELECr*FROMNoné_TablaWHEREConckiónORDERBYNoinb Caii¡X) 
Ejemplo: 
para seleccionar los que tiene sexo masculino y ordenarlos por su nombre: 
SELECT* FROM AMIGOS WHERESEXO=' M ’ORDER B Y N O M B R H 
G r u p o E d i t o r i a l Megabyte 377
s , '% VISUAL BASIC como debe ser... 
T O P 
Es una palabra que se puede e scribir después de S E LE C T que perm ite 
m ostrar los N prim eros registros ordenados. 
Ejemplos: 
L a siguiente instrucción muestra las 3 prim eras personas más delgadas (de 
m enor peso). 
S E L E C T TO P 3 * F R O M A M IG O S O R D E R B Y P E SO 
Si se desea las tres prim eras personas más gordas, sólo debe realizar la 
ordenación en form a descendente. 
S E L E C T TO P 3 * F R O M A M IG O S O R D E R B Y P E SO D E SC 
NOTA: 
Las siguientes personas que tiene el mismo peso de la tercera también se visualizan. 
Después del valor puede utilizar la palabra PERCENT para mostrar un porcentaje 
determinado de registros. 
L a siguiente instrucción muestra el 10% de las personas más delgadas (de 
m enor peso). 
S E L E C T T O P 10 P E R C E N T * F R O M A M IG O S O R D E R B Y PE SO 
D IS T IN C T 
Se puede u tiliza r después de S E LE C T y perm ite que no se visualicen registros 
que están duplicados en uno o más campos determinados. 
La siguiente instrucción muestra la relación de distritos sin duplicación, donde 
vive n las personas. Si dos o más personas viven en un m ism o distrito , el 
nom bre de dicho d is trito sólo se visua liza una vez. 
S E L E C T D IS T IN C T D IS T R IT O F R O M A M IG O S 
D IS T IN C T R O W 
Se puede u tiliza r después de S E LE C T y perm ite que no se visualicen registros 
que están duplicados en todos sus campos. Se u tiliz a cuando se trabaja con 
dos o más tablas. 
NOTA 
Existen otras instrucciones SQL, las cuales se explican más adelante. 
p 378 G r u p o E d i t o r i a l Megabyte^ 
CAPÍTULO IX: Manejo de Base de Datos 
¿ D O NDE P R A C TIC A R O U T IL IZ A R LAS IN STR U C CIO N ES SQL? 
I as instrucciones S Q L vistas anteriormente se pueden utilizar o practicarlas en un formulario 
con el control D A T A o en la ventana de administración visual de datos (VISDATA). 
1. EN UN FO RM ULARIO CON E L CONTRO L DATA. 
Cuando quiera practicar o utilizar las instrucciones S Q L en un formulario, debe 
asignar toda la instrucción S Q L a la propiedad R E C O R D S O U R C E del control D A T A 
y luego actualizarlo (Refresh). 
I’or ejemplo, para visualizar todas las personas que viven en el distrito La Victoria y 
ordenadas por su nombre, se escribe: 
I )cital.ReconEoutce-”Select *fivmcunigoswheivdisnito = ‘La Victoria’orderbynombre” 
Datal.Refresh 
A PL IC A C IÓ N D E SA R R O L A D A N° 54 
I .a siguiente aplicación permite seleccionar registros, ordenarlos y seleccionar c a m ­pos 
a visualizar utilizando instrucciones S Q L dentro de un formulario con el control 
DATA. 
i» . IN S T R U C C IO N E S S Q L E N F O R M U L A R IO S 
NOMBRE D IRECCION D IS T R IT O TELEFONO I CARLOS MORALES AREQUIPA 365 p e s g T T CHI CLAVO 20 20 20 1 8 /0 7 /1 9 8 9 ;M 60; 
DA N IE L ÄLAR C Ö N W IR A C O C M A 3 1B L A VIC TORIA 23P689 Ï5 /1 Q /1 % 6 ‘ m 80 i 
LILIA N A ALAR C O N M A R IA IZAG A CHI CLAVO 227131 2 0 /1 2 /1 9 9 0 : F 50: 
M A N U E L CARBAJAL SAI A V I H R Y a t )/ CHICLAYO 2 0 98 70 Ï8 /0 6 /1 3 6 0 !M ÍJSi 
T lf lb R A M IR E Z L L D O RADO 46 6 J .L 0 . 23G976 i 0 7 /1 Ï / I 3 / Ù 1 
, S E L E C C IO N A R . 
La V icto ria ) M enores | Hom bres | M m etes | O ctu b re j P e so entre 5 0 y 73 ¡ Serie Telét 22 | : 
V I S U A L IZ A R S O L U : 
N om bre y A ñ o d e N a cim iento j Nom bre. F ech a de Nacim iento y E dad 
O R D E N A R P O R : 
N om bn- | F frc li* | P oso Pete j Sexo y P »so j 
V I S U A L IZ A R IO D O S | 
üiLii Ü üjT 
DESARROLLO: 
Dibuje los controles como se muestra en la aplicación a desarrollar y asígnele las 
propiedades correspondientes al control DBgrid y al Data. 
Las instrucciones de cada botón de comandos en el orden que están dibujados son: 
Prívate Sub Com m andl_Click() 
Datal.RecordSouice- “SELECT* FROMAMIGOSWHEREDISIRITO= ’LA VICTORIA”' 
Datal.Refresh 
End Sub 
Prívate Sub Command2_Click() 
Datal.RecordSowte = “SELECT* FROMAMIGOSWHEREYEAR(NOW)- YEAR(FECNAC)<17" 
D atal .Refresh 
End Sub 
Ü » G r u p o E d i t o r i a l Megabyte 379
VISUAL BASIC como debe ser. CAPITULO IX: Manejo de Base de Datos 
PtwateSióConmmd3_Clkk() 
DataLRecordSource = "SELECT* FROMAMGOSWHERESEXO=’M’ ” 
DataLRefresh 
EndSub 
Prh>ateSubComnand4_QicH) 
DataLRecordSource = "SELECT* FROM AMIGOS WHERESEXO= ’F ’ ' 
Datal.Refresh 
E/idSub 
Private Sub Command5_Click() 
Datal.RecordSowce= "SELECT* FROM.AMIGOSWHEREMONIH(FECNAC)=10" 
DataLRefresh 
EidSub 
Prh’ateSub Convtiand6_Qick( ) 
DataLRecordSource = ' ‘SELECT* FROMAMIGOS WHERE PESO BETWEEN50AND 73 ’ ’ 
DataLRefresh 
EtdSub 
Private Sub Convnand7_Qick() 
Datal.RecoidSowve= “SELECT* FROMAMLGOSWHERETELEFONOUKE‘22*”’ 
DataLRefresh 
EndSub 
Private SubConvmÆjOlickO 
DataLRecordSource- ”SELECrNOMBRE,YER(FECNAC)AS[AÑODENACIMIENTOI FROM AMIGOS” 
DataLRefresh 
EndSub 
Private Siè Comnand9jOltk() 
Datal.RecordSowce= "SELECTNOMBRE,FECNAC,YEAR(NOW)-YEAR(FECNAC)AS EDAD FROM AMIGOS” 
Datai.Refresh 
EidSub 
Private Sub ConviiandlO_Click() 
Datal.RecordSowve- “SELECT* FROM AMIGOS ORDER BYNOMBRE” 
DataLRefresh 
BidSiè 
PmateSiè Command!l_Gick() 
DataLRecordSource - “SELECT* FROMAMIGOS ORDER BYFECNAC" 
DataLRefresh 
EndSub 
Private Sub Commandl2_Click( ) 
DataLRecordSource - “SELECT* FROM AMIGOS ORDERBYPESO DESC” 
DataLRefresh 
EìdSiò 
PriwtteSié Convnandl3_Click() 
DataLRecordSource= “SELECT* FROMAMIGOSORDERBYSEXO,PESO” 
DataLRefresh 
EjidSub 
PrivateSubConmiandl4_CUck() 
DataLRecordSoi uve=‘ ‘SELECT* FROMAMIGOS 
DataLRefresh 
FjxlSub 
||||¡ ||¡ ^ 380 G r u p o E d i t o r i a l Megabyte 
EN L A V E N T A N A D E A D M IN IS T R A C IO N V IS U A L D E D A T O S 
(V IS D A T A ). 
C ua nd o e lig e la o p c ió n C o m p le m e n to s , A d m i n i s t r a d o r V is u a l d e 
D a to s y abre una ta b la , se v is u a liz a ta m b ié n una ve n ta n a de in s ­tru 
c c io n e s S Q L. 
v g V isD ata:C :A »ch¡vos d e p ro g ra m a D e v S tu d io V B A G E N D A .m d 
A f ch iv o Utilidad V e ntan a A yu da 
a l f i l B al B l l eáHl -- 
($} [fff* Properties 
•+ E 3 AMIGOS 
Listo 
“ 3 
U suario: admin 
En esta ventana puede escribir las instrucciones S Q L (a p a rtir de S E LE C T). 
Para ver los resultados haga c lic k en el botón E JE C U T A R . De esta mane­ra 
se crean consultas (Q uery), las cuales las puede grabar haciendo c lic k 
en el botón G U A R D A R y u tiliz a rla en cualquier fo rm u la rio asignándole su 
nombre a la propiedad R E C O R D S O U R C E del control D A T A com o lo hace 
con cualquier tabla. 
Ejem plo, en la fig ura siguiente se ha creado una consulta que consiste en la 
ordenación de los registros por el Peso y ha sido grabada con el nom bre 
IN F O R M E . 
VisD ata:C :A rchivos de piogiam aVDevSludioV BAG ENDA.m db I.P.|X| 
Archivo Utilidad Ventana Ayuda 
O F Ü & I S H O f f i l & i ■ i 
S3 .•=JJ3J.2Sl _ li l i x ¡ 
•* fft?' Properties 
Ejecutar j gorrar | |; guardar 
it; m a m ig o s 
:+! @ INFORME 
SELECT * FROM AMIGOS ORDER 8Y PESO j 
_J 
Listo Usuario; adirar, 
Pruebe que esta consulta creada se puede u tiliz a r com o cualquier tabla 
haciendo un programa de listado. Para ello, dibuje en un fo rm u la rio un con­trol 
D bgrid y un control Data y asígneles las propiedades correspondientes. 
Grupo Editorial Megabyte 381
VISUAL BASIC como debe ser... >r f i K - 
m z ú 
Dentro de la opción U T IL ID A D , esta ventana tiene las opciones: 
1. Generador de Consultas: Que consisten en un asistente para crear las 
consultas con instrucciones SQ L. 
[E l 
131 F 
Ê g r e g a r a l c r it e r io j Q . p o r c r it e r io 
T a b la s : C a m p o s a m o s tr a r : 
r 
L is ta d© p o s ib le s v a lo r e s 
A g r u p a d o p o r : 
P r im e r o s N v a lo r e s : 
r O r d e n a d o p o r' • A s e f~ " P e s e | J 
E s t a b le c e r c o m b in a c io n e s d e la t a b la | 1 
" P o r c e n t a je s u p e r io r 
G u a r d a r j B o rr a r 
2 D iseñador de Form ularios: Que consiste en un asistente para crear fo r­m 
ularios que adm inistren las tablas y registros. 
II III D i s e ñ a d o r d e f o r m u la r i o s d e d a t o s 
N o m b r e d e l f o r m u la r io ( c / s e x t e n s ió n ) : 
R e c o r d S o u r c e : |I----------------------------------------------------------------3 
S e l e c c i o n e u n a l a b l a o c o n s u l t a d e la lis ta o e s e n b a u n a i m t r u c c i o n 
C a m p o s d is p o n ib le s : C a m p o s in c lu id o s : 
G e n e r a r e l fo r m u la r io 
3. Sustitución G lobal: Que perm ite reemplazar el contenido de un campo 
por un nuevo contenido. 
Eüü S u s t it u c ió n g lo b a l 
M " 1111 ■ 1 1 — — DIRECCION 
■ D IS T R IT O 
FECNAC 
NO M BRE 
PESO 
SEXO 
TELEFONO 
R eem plazar con: 
382 
Cancelar 
G r u p o E d it o r i a l Megabyte- 
CAPÍTULO IX: Manejo de Base de Datos 
LISTADOS ORDENADOS YPOR CONDICION (FILTRADOS) 
Consiste en crear programas que perm itan listar los registros en form a orde­nada 
y por una condición; es decir, mostrar sólo un grupo de registros, aquellos 
que tienen una determinada característica, por ejemplo: M ostrar sólo los que 
viven en Lambayeque, los que nacieron en un año determinado, etc. 
A PLIC A C IÓ N D E SA R R O L L A D A N° 55 
La siguiente aplicación perm ite que el usuario escriba una condición y al 
hacer c lic k en el botón O K , se deben visua liza r los registros que cum plen 
dicha condición, además se deben ordenar de acuerdo al botón de com an­dos 
donde se haga C lick. 
C O N D IC IO N •••> ' |f O K 1 TO D O S 1 SALIR | 
RELACION DE AMIGOS 
HOMBRE IDIRECCION DISTRITO TELEFONO FECNAC - 
► CARLOS LA MADRID LOS INCAS N* 1020 LA VICTORIA 202020 20/10/1970 
CARLOS MORALES AREQUIPA N* 364 CHICLAYO 273858 18/07/1969 
DANIEL INFANTE !AV. LOS LAURES 234 CHICLAYO 203347 16/12/1970 
DORIS PERALES Av. BALTA 345 CHICLAYO 232224 01/05/1970 
JORGE RIOS LA LIBERTAD 123 CHICLAYO 237143 18/09/1976 
JUAN JOSE WIRACOCHA 335 LA VICTORIA 205048 01/05/1968 
LILIANA CAMPOS MARIA IZAGA 564 CHICLAYO 237890 10/10/1972 
«1LUIS BALAREZO 
1 
I TACNA 765 LAMBAYEQUE 287678 05/03/1958 T _. ......_lT 
O R D E N A D O P O R: 
N om bre | D ire cció n | D istrito | T e lé fo n o | F e cha de N ac. | 
Distrito y N om bre j 
IJd. debe ingresar las condiciones en form a correcta. Por ejem plo, para 
mostrar: 
Los que viven en C h ic la y o : D IST R IT O = "C H IC LAYO " 
Los que su serie de teléfono es 20: T E L E F O N O L IK E "20*" 
Los que nacieron en 1970: YEAR (F E C N AC ) - 1970 
I .os que su nombre empieza con la letra C: N O M B R E L IK E "C*" 
Los que viven en la V ic to ria y nacieron en el mes de A b ril: D ISTR IT O = 
"IA V IC TO RIA" A N D M O N T H (F E C N A C ) = 4 
M ostrar los que tienen sexo masculino: SE X O = "M" 
NOTA: 
Tara indicar los campos a visualizar en el listado y para asignarle un ancho 
determinado a cada campo, debe hacer click con el botón derecho en el control 
/ 'ibgrid, mientras lo está diseñando y elegir la opción editar. 
Í P G r u p o E d it o r i a l Megabyte 383
| S ¡ 1 ¡ | ^ VISUAL BASIC como debe ser... 
INSTRUCCIONES DE LOS CONTROLES: 
MUY IMPORTANTE 
R esp ete los e sp a c io s en b la n co q u e se d eja n en los ejem plos. 
E n tre la s c o m illa s y la p a la b r a O R D E R y en tre la p a la b r a W H E R E 
y la s c o m illa s d e b e d e ja r sie m p re un e sp a c io en b la n co . 
‘ ’ S E LE C T * F R O M A M IG O S W H E R E ” 
Instrucciones del botón OK. 
Private Sub Commandl_Click() 
On Error GoTo MIRA 
Datal.ReconlSource-“SELECT*FROMAMlGOSWHERE “+Textl 
D atal.Refresh 
If D atal.Recordset.RecordCount = 0 Then 
MsgBox “No existen registros con la condición ingresada ”,16, “Lo siento ” 
End If 
Exit Sub 
MIRA: 
MsgBox “LA CONDICIONINGRESADAESINCORRECIA ”, 64, “VERIFIQUE" 
Textl .SetFocus 
End Sub 
Instrucciones de botón TODOS. 
P riv a te S u b C o m m a n d 2 _ C lic k () 
T extl = 
D a ta l.R e c o rd S o u rc e - “S E L E C T * F R O M A M IG O S ” 
D a ta l.R e fr e s h 
E n d Sub 
Instrucciones de botón NOMBRE. 
P riv a te S u b C o m m a n d 4 _ C lic k () 
I f T rim (T extl) = Then 
Datal.RecordSource = “SELECT* FROM AMIGOS ORDER BY NOMBRE" 
E lse 
Datal.RecordSource^ "SELECT* FROMAM1GOSWHERE “+Textl+ "ORDER BY NOMBRE" 
E n d I f 
D a ta ! .R efresh 
E n d Sub 
Instrucciones de botón DIRECCION. 
P riv a te S u b C o m m a n d 5 _ C lic k () 
IfT r im (T e x tl) = Then „ „ 
Datal.RecordSource = “SELECT * FROM AMIGOS ORDER BY DIRECCION 
E lse 
Datal RecoidSource= "SELECT* FROM AMIGOS WHERE “+Textl+” ORDER BY DIRECCION" 
E n d I f 
D a ta l .R efresh 
E n d Sub 
384 G r u p o E d i t o r i a l Megabyte“ 
CAPÍTULO IX: Manejo de Base de Datos 
Instrucciones de botón DISTRITO. 
P riva te S u b C o m m a n d 6 _ C lick() 
I f T rim (T extl) - "" Then 
Datal. RecordSource= ’’SELECT * FROM AMIGOS ORDER BY DISTRITO ” 
E lse 
Datal. ReconlSoi we - ' SELECT * FROM AMIGOS WHERE ‘' + Textl + ' ‘ ORDER BYDISTRI10 ' ’ 
E n d I f 
D a ta l .R efresh 
E n d S u b 
Instrucciones de botón TELEFONO. 
P riva te Sub C o m m a n d ? _ C lick() 
I f T rim (T extl) = Then 
Datal.RecordSource- "SELECT * FROM AMIGOS ORDER BY TELEFONO ” 
E lse 
Datal.ReconISowve= "SELECT* FROMAMIGOSWHERE “+Textl+ “ ORDER BYTELEFONO” 
E n d I f 
D a ta l.R e fre sh 
E n d S u b 
Instrucciones de botón FECHA DE NACIMIENTO. 
P ríva te Sub C o m m a n d 8 _ C lick() 
IfT r ím (T e x tl) = Then 
Datal.RecordSource = “SELECT * FROM AMIGOS ORDER BY FECNAC” 
E lse 
Datal.RecordSource^ “SELECT* FROMAMIGOSWHERE“+Textl + “ORDER BY FECNAC” 
E n d I f 
D a ta l.R efresh 
E n d Sub 
Instrucciones de botón DISTRITO Y NOMBRE. 
P ríva te S u b C o m m a n d 9 _ C lick() 
IfT r im (T e x tl) = Then 
Datal.ReconlSowre-“SELECT*FROMAMIGOSORDERBY DISTRITO,NOMBRE" 
E lse 
D a ta l .R e c o rd S o u rc e - "S E L E C T * F R O M A M IG O S W H E R E 
“+ T extl + ” O R D E R B Y D IS T R IT O ,N O M B R E ” 
E n d I f 
D a ta l.R efresh 
E n d S u b 
G r u p o E d it o r ia l Megabyte 385
o 
H> VISUAL BASIC como debe ser.. 
V A R IA B L E S T IP O R E C O R D SE T 
P odem os crear y u tiliza r en nuestros p ro g ra m a s variables tipo R ecordSet 
con la fin a lid a d de escrib irlo s con m a y o r fa cilid a d . 
Una va ria b le tipo R e c o rd se t es un o b je to que representa a to d o s los 
registros de la tabla que se tiene activada. 
H asta hora cada vez que nos q uerem os referir a la tabla dentro de un 
p ro g ra m a se ha u tiliza d o la in stru c c ió n Datal.Recordset, p e ro esta 
instrucción la p o d e m o s a sig n a r a una variable R ecordset y sólo tra b a ­j 
a r co n esta variable. 
Por ejemplo, suponiendo que hemos d efin id o la variable R de tipo Recordset 
a la cual le hemos asignado Datal.Recordset, entonces si queremos ir al 
siguiente registros sólo bastará con escribir R.MoveNext. En lugar de es­c 
rib ir Datal.Recordset.FindFirst C, sólo se escribiría R.FindFirst C. 
Para referirnos a un solo campo se puede u tiliz a r F IE L D S que representa a 
todos los campos de una tabla. Se puede u tiliz a r de las siguientes maneras: 
R.Fields(“Nombre”) R.Fields![nombre] R.Fields(Número) 
Donde Nombre, es el nom bre del cam po al cual se desea re fe rir y Núm ero 
es la posición del campo en la estructura de la tabla (el prim er campo tiene 
el núm ero cero). 
Para u tiliz a r la variable tip o Recordset, debe c u m p lir tres (3) aspectos 
importantes. 
1. Declarar la variable en la ventana de declaración del form u la rio o módulo. 
ü Proyeclol - Form! (Código) HHE2I 
|(General) |(Declaraciones) jrJ 
g 
Dim R As Recordset 
SjjJ 
2. A signar D a ta l .Recordset a la variable en el evento Form Actívate usando 
la instrucción SET. 
M Pioyecto1 - F ofm l (Código) l - IO|x| 
" 3 
P r iv a t e Sub F o r m _ A c tiv a te () ~T¡ 
Set R = D a ta l.R e c o rd s e t _ j 
End Sub 
f c j ä i i j 
386 G r u p o E d i t o r i a l M e g a b y t e ^ 
CAPÍTULO IX: Manejo de Base de Datos 
A c tiv a r la c a s illa de M ic ro s o ft D A O 3.51 O b je c t L ib ra ry que se 
encuentra en la opción Proyecto/Referencias: 
( R e f e r e n c ia s d is p o n ib le s : 
M ic r o s o ft A g e n t S e r v e r 2 .0 
M ic r o s o ft A g e n t S e r v e r E x te n s i o n s 2 .0 — 
M ic r o s o ft C o n n e c t io n D e s i g n e r I n s t a n c e 1 .C 
; M ic r o s o ft C o n n e c t io n D e s i g n e r v 6 .0 
M ic r o s o ft D A O 2 .5 / 3 .5 1 C o m p a tib ility L ib ra r— 
M ic r o s o ft D A O 3 .6 O b j e c t L ib ra ry 
M ic r o s o ft D a t a A d a p t e r L ib ra ry 
M ic r o s o ft D a t a B i n d in g C o lle c tio n 
M ic r o s o ft D a t a E n v ir o n m e n t 1.0 
M ic r o s o ft D a t a E n v ir o n m e n t E x te n s ib ili ty O t 
M ic r o s o ft D a t a E n v i r o n m e n t I n s t a n c e 1 .0 
M ic r o s o ft D a t a F o r m a tt i n g O b je c t L ib r a r y 
M ic r o s o ft D a t a R e D o rt D e ^ io n e r v 6 .C 
J 
A y y d a 
,L0ib ry , 
M ic ro s o ft D A O 3 .5 1 O b je c t L ib ra ry 
U b ic a c ió n : C :A R C H IV O S D E P R O G R A M A A R C H IV O S C O M U N E S M IC R O S t 
I d io m a : E s t á n d a r 
Si no se activa esta casilla, se visualiza el siguiente mensaje de error al 
ejecutar la aplicación: 
Microsoft Visual Basic 
Error de compilación: 
N o se ha definido el tipo definido por el usuario 
Ayuda 
Cada campo se considera com o un objeto F IE L D que contiene propiedades 
como por ejemplo: 
PROPIEDAD VALUE 
Devuelve el contenido del campo, Por ejem plo, para m ostrar el número 
telefónico del registro activo de la tabla A m igos en L a b e ll se puede escribir: 
L a b e ll = R .Fields! [telefono]. Valué 
Label 1 = R .F ields(“ telefono” ). Valué 
L a b e ll = R .Fields(3). Valué 
N O T A : 
La colección FIELDS y la propiedad V A L U E , Visual Basic las asume en forma 
predeterminada, esto quiere decir que es opcional escribirlas. Por ejemplo, las 
instrucciones anteriores también se pueden escribir de la siguiente manera: 
Label 1 = R ! [telefono] 
Label 1 = R(“telefono”) 
Label 1 = R(3) 
G r u p o E d it o r i a l Megabyte 387
dV,ÆA % VISUAL BASIC corno debe ser.. 
PROPIEDAD TYPE 
Devuelve un número que representa el tipo de campo como se ha definido 
en la estructura de la tabla. 
Los valores devueltos son: 
TIPO 
DE C A M P O 
(Lógico Si/No) 
(Entero) 
(Entero Largo) 
(M onetario) 
(Sencillo) 
(doble) 
(Fecha) 
(Texto) 
O R 1 Boolean 
2 Byte 
3 Integer 
4 Long 
5 Currency 
6 Single 
7 Double 
8 Date 
10 Text 
11 Binario 
12 Memo 
PROPIEDAD ÑAME 
D evuelve el nombre del campo exactamente com o esta en la estructura de 
la tabla. „ 
PROPIEDAD COUNT DEL OBJETO FIELDS 
D evuelve el número de campos que tiene la tabla. 
A PLIC A C IÓ N DESARROLLADA N° 56 
M o d ific a r el program a anterior de tal manera que el usuario pueda form ar la 
condición que desea que cumplan los registros para poder visualizarse. 
Para desarrollar éste programa s e deben mostrar en un L istB o x los nom ­bres 
de los campos y en otro los operadores para que el usuario pueda 
seleccionarlos y luego en una cajade textos ingresar el valor. A s í : 
l° l * l 
P O N P T if lN : S EX O .. — M --------------------------— ---------------------------------------------------------- 
N O M B R E 1 D I R E C C I O N [ñ iR T R IT O 
L U I S B A L A R E Z O 
P U M A C A H U A 122 
C A R L O S M O R A L E S 
A R E Q U I P A 2 5 6 
J O R G E R I O S 
L A L I B E R T A D 123 
J O S E C A S T A Ñ E D A 
W Í R Á C O C H A 335 
T I T n R A M I R F 7 
1 f i n n R A n n 4 F¡r 
M A N U E L C A R B A J A L 
S A L A V E R R Y 3 4 5 
CHI C LA V O 
CHI C L A V O 
2 7 3 8 5 8 
2 3 7 1 4 3 
1 8 / 0 7 / 6 9 M 
1 8 / 0 9 / 7 6 M 
6 0 
7 0 
-------- 2 0 5 0 4 8 5 / 0 1 / 6 8 M 6 5 
-------- .1 i n ? ^ R S 7 «S 
2 0 5 8 9 7 
7 /1 1 / 7 fl M 
1 8 / 0 6 / 6 0 M 
F¡7 
6 6 
R E G I S T R O S MOSTRADOS > S A L I R I 
NOTA: 
En la p ro p ie d a d CAPTION d e l DBgridsedebe m o s trar la c o n d ic ió n q u e e l u s u a rio a 
fo r m a d o y en u n a e tiq u e ta se debe mostrar la c a n tid a d d e re g is tro s m o s tra d o s . 
CAPÍTULO IX: Manejo de Base de Datos 
PASO N° 01: Dibujar los Controles. 
PASO N° 02: Asignar las propiedades. 
ETIQUETA 
Labell 
Label2. 
Label3 
Label4 
TEXTO 
Textl 
CAPTION 
Campo 
Operador 
Valor 
En Blanco 
TEXT 
En Blanco 
C O M A N D O 
Command 1 
Command2 
Command3 
C AP TIO N 
Ok 
Todos 
&S alir 
ENABLED 
False 
True 
True 
C O N TRO L 
Datai 
CONTROLDATA 
DATABASENAM E RECORDSOURCE V ISIB LE 
Agenda Amigos False 
C O N T R O L D BG R ID 
C O N T R O L 
Dbgri 1 
DATASOURCE 
Datai 
PASO N° 03: Escribir las instrucciones de los controles. 
Primero debe activar la casilla de M icrosoft D AO 3.51 Object Library luego definir 
la variable R de tipo Recordset. 
J® Proyectol - Formi (Código) E Ja p a 
I (General) T J f(Declaraciones) 
Dim R As Recordset 
a ï a i 
G r u p o E d i t o r i a l Megabyte 389
|¡1 ¡¡É » VISUAL BASIC como debe ser... 
Instrucciones del Evento Forni Actívate. 
Estas instrucciones muestran en L is t l los nombres de los campos y en L ist2 
los operadores lógicos, además asigna a la variable R el D atal.R ecordset. 
D im N, X A s In teg er 
S e t R = D a ta l.R e c o rd se t 
N = R .F ields.C ount 
R em M uestra los n om bre de los cam pos en L is tl 
F o r X = 1 To N 
L is tl .A d d ltem (R (X ).N am e) 
N e x t X 
R em M uestra los o p era d o res lógicos en L is tl 
L ist2 .A d d ltem “= ” 
L ist2.A ddItem “> ” 
L istl.A d d lte m “< “ 
L istl.A d d lte m 
L istl.A d d lte m “< = ” 
L istl.A d d lte m “< > ” 
L is tl.A d d lte m “L ike ” 
T extl = 
E n d S u b 
Instrucciones de la Cajas de Texto. 
Estas instrucciones perm iten activar el botón O K cuando el usuario ingresa 
el valor que form a la condición. Se debe program ar en el Evento Change. 
P rív a te S u b T e x tl_ C h a n g e () 
I f T rim (T extl) = Then 
C o m m a n d l .E n a b led = F alse 
E lseC 
o m m a n d l .E n a b led = True 
E n d I f 
E n d Sub 
Instrucciones del Botón TODOS. 
Estas instrucciones visualizan todos los registros. 
P rív a te S u b C o m m a n d l _ C lick() 
D a ta l.R e c o rd S o u rc e = “S E L E C T * F R O M A M IG O S " 
D a ta l .R efresh 
T extl - 
E n d Sub 
390 G r u p o E d it o r ia l Megabyte ^ 
CAPÍTULO IX: Manejo de Base de Datos 
Instrucciones del Botón OK. 
listas instrucciones permite visualizar los registros que cum plen la condi­ción 
que el usuario a form ado. 
I’rivate S u b C o m m a n d l_ C lic k () 
D im TIP O A i Byte 
D im C A s String 
On E rror GoTo M IRA 
TIPO - R (L istl.L istIn d ex).T yp e 
S elect Case TIPO 
C ase 1 
C = L is tl + S p a c e (l) + L is tl + S p a c e (l) + T extl 
C ase 2 To 7 
C = L is tl + Space( 1) + L is tl + Space( 1) + T extl 
C ase 8 
C = L istl+ S p a ce( 1 )+ L istl+ S p a c e ( 1)+ ”C V D A TE ( ‘ “+ T extl + “ ') ” 
C ase 10 
C - L is tl+ S p a c e ( l) + L is tl + S p a c e (l) + + T extl + 
E nd Select 
D B G r id l. C aption = “ C O N D IC IÓ N : “ + C 
Datal.RecordSource = "SELECT* FROM AMIGOS WHERE" + Space(I )+C 
D a ta l.R e fre sh 
N R = D a ta l .R eco rd set.R eco rd C o u n t 
I f N R = 0 Then 
MsgBox “NO HAY REGISTROS CON LA CONDICIÓN”, 16, “VERIFIQUE" 
E lse 
Label4 = “R E G IS T R O S M O S T R A D O S — > ” + Str(N R ) 
E n d I f 
E xit Sub 
M IR A : 
M sg B o x “N o fo r m ó la condición c o rre c ta m e n te ”, 64, “V E R IF IQ U E ” 
E n d Sub 
El botón S a lir d ebe ten er la in stru cció n E N D . 
NOTA 
Para que la condición se forme correctamente tenga cuidado al escribir los espacios 
en blanco y los apostrofes ( ‘) que se utilizan en el botón de OK (Commandl). 
En algunos casos se utiliza la función Space(l) para asegurar que se escriba im 
espacio en blanco y la función Cdate, similar a CvDate para convertir un dato 
tipo texto a fecha. 
G r u p o E d i t o r i  i . Megabyte 391
VISUAL BASIC como debe ser. 
A PLIC A C IÓ N D E SA R R O LL A D A N°57 
La siguiente aplicación permite ingresar datos utilizando diversos controles de en­trada 
como Option Buttom, Check, etc. 
Además se muestra el ejemplo de c ómo utilizar una variable tipo Recordset para 
programar de una manera más fácil y rápida. 
M A N I I N IM II 
; d»i a m « » 
Apellidos jfx 
N o m b res f u u JO 
■ <*' M ar'iaria 
C ' V arde 
Cicto jl “ El 
.P5T 
I «cha .«te lr.»tstipoi<í«i 
.(Î G /Ü 8/1 a a y -g-j 
I roslado 
U b40IVOCIOI'«5 
• m 
(><) 
m 
Cancelo» 
► I » i l 
Base de Datos: Instituto. 
Apellidos 
Nombres 
Tumo 
Ciclo 
Aula 
Situación 
Pensión 
Traslado 
Trabaja 
Fecha 
Observaciones 
Tabla: Alumnos. 
Text 25 
Text 25 
Text 1 
Integer 
Text 3 
Text 1 
Single 
Boolean (Si/No) 
Boolean (Si/No) 
Date/Time 
Memo 
DESARROLLO: 
En la ventana de declaraciones del formulario, declare la variable R E G de tipo 
Recordset y en Form Actívate asigne Datal.Recordset a la variable REG. Esto 
permite reemplazar durante todo el programa Datal.Recordset por REG. Puede 
utilizar cualquier otra variable y si desea utilizarla en varios formularios de una 
aplicación, debe declarar la variable en un módulo. 
n g m 
1 
392 G r u p o E d it o r i a l Megabyte 
CAPITULO IX: Manejo de Base de Datos 
D IB U J A R L O S C O N T R O L E S 
IgE 
TI Z L 
f l e x i l 
Label2 
Frame2 
¡Text2 
' f“* Q ption2 ; 
; í"~ OplionS 
Frame3 
f~~ Option4 I 
; r - o p tio n s i 
: <" Option6 
: <" Option? 
Frame4 
I C h e c k 1 
Labels jCombol _ d 
Label4 ¡Combo2 
LabeIS 
(î ext3 
Label6 
1T exl4 
; | t ex(5 
j H | 4 I D a ta i 
NOTA 
En la segunda ventana sólo debe dibujar un Dbgridl. 
ASIGNAR LAS PROPIEDADES 
El control Datal, Dblistl y Dbgrid (página N° 2), deben tener las propiedades que 
los ligan con la base de datos. 
C O N TRO LD ATA 
C O N T R O L DATABASENAME RECORDSOURCE 
Datal Agenda Amigos 
CO N TRO L D BLIST 
C O N TR O L ROW SOURCE L IS T F IE L D 
Dblistl Datal Apellidos 
CONTROL DBGRID 
C O N T R O L DATASOURCE 
Dbgril Datal 
El resto de controles deben tener las propiedades como se muestra en la aplicación 
a desarrollar. 
El Combol debe tener en su propiedad LIST las palabras desde Primero hasta 
Décimo. El C o m b o 2 debe tener en su propiedad LIST los números desde 101 hasta 
108. El control U p D o w n 1 debe tener: 
Propiedad Valor 
Buddy Control Text4 
Increment 1 
Max 160 
Min 1 
Value 50 
Wrap True 
¡y g |¡r Grupo Editorial Megabyte 393
i S S l ^ VISUAL BASIC como debe ser... 
INSTRUCCIONES DE LOS CONTROLES 
Crear los procedimientos: Activar, Desactivar y Pregunta. 
Sub Activar() 
Frame 1. Enabled = False 
D BListl .Enabled — True 
Command ¡.Enabled = True 
Command!.Enabled = True 
Commands.Enabled = True 
Command4.Enabled = False 
Command5. Enabled = False 
End Sub 
Sub Desactivar() 
Frame 1.Enabled = True 
DBListl.Enabled = False 
Commandl. Enabled — False 
Command2. Enabled = False 
Commands .Enabled = False 
Command4. Enabled = True 
Command5.Enabled = True 
End Sub 
Sub Pregunta() 
Rem Pregunta si no hay registros 
I f REG.RecordCount = 0 Then 
D BListl.Enabled — False 
Command2. Enabled = False 
Command3. Enabled = False 
End I f 
End Sub 
Instrucciones del Form Activate 
Private Sub Form_Activate() 
Set REG = D atal.Recordset 
Textl = 
Text2 = “ ” 
Text3 = “160" 
Text4 - Date 
Text5 = 
Combo 1 .Listlndex = 0 
Combo2.ListIndex = 0 
Option 1. Value = True 
Option4. Value - True 
Check 1.Value = False 
Check2. Value = False 
UpDownl. Visible - False 
Frame 1 .Enabled = False 
Command4. Enabled = False 
Commands.Enabled = False 
Pregunta 
End Sub 
Instrucciones del Botón Nuevo 
Private Sub Command!_Click() 
REGAddNew 
Form_Activate 
Desactivar 
Textl.SetFocus 
End Sub 
394 
Instrucciones del Botón Modificar 
Private Sub Command!_Click() 
REG Edit 
Desactivar 
Textl.SetFocus 
End Sub 
G r u p o E d i t o r i a l Megabyte 
CAPÍTULO IX: Manejo de Base de Dalos 
Instrucciones del Botón Eliminar 
Private Sub Command3_Click() 
Dim RESP As Byte 
KESP=MsgBax(“ESlASEGURODEELIMINARESrEREGISrRO”}36,"CUIDADO”) 
I f RESP = 6 Then 
REG. Delete 
REGM oveFirst 
Form_Activate 
DBListl.ListField = “APELLID O S” 
End I f 
Pregunta 
End Sub 
Instrucciones del Botón Grabar 
Private Sub Command4_Click() 
REG(O) = Textl ‘APELLIDOS 
REG( 1) = Text2 ‘NOMBRES 
Rem TURNO 
IfO p tio n l Then REG(2) - “M ” 
I f Opt ion2 Then REG(2) = “T" 
I f Option3 Then REG(2) = “N ” 
REG(3) - Combo 1.Listlndex + 1 ‘CICLO 
REG(4) = Combo2. Text ‘AULA 
Rem SITUACION 
lfO ption4 Then REG(5) = "R " ‘REGULAR 
I f OptionS Then REG(5) = “M ” ‘1/2 BECHA 
I f Optionó Then REG(S) = “B " ‘BECA 
I f Option7 Then REG(S) = “O " ‘OTRO 
REG(6) = Val(Text3) ‘PENSION 
I f Check 1 Then REG(7) = True Else REG(7) = False 
IfC heck2 Then REG(8) = True Else REG(8) = False 
REG(9) = CVDate(Text4) ‘FECHA DE INGRESO 
Rem SI NOMBRE OBSERVACIONES SE GRABA UN ESPACIO EN BLANCO 
I f Text5 = Then 
REG(IO) = “ “ 
Else 
REG(IO) = TextS 
End I f 
REG Update 
DBListl .ListField = “APELLIDOS" 
Activar 
End Sub 
Instrucciones del Botón Cancelar 
Private Sub Command5_Click() 
REG CancelUpdate 
D atal.Refresh ‘Primer Registro 
DBListl jC lick 
Activar 
End Sub 
G r u p o E d i t o r i a l Megabyte 395
¿ 9 3 ^ VISUAL BASIC como debe s e r.. 
Instrucciones del Control Dblistl 
Private Sub DBListl_Click() 
Dim C As String 
C = “APELLIDOS = + DBListl + 
D atal.Recordset.FindFirst C 
Textl = REG(O) ‘APELLIDOS 
Text2 = REG( 1) ‘NOMBRES 
Rem TURNO 
IfREG(2) = “M ” Then Optionl = True 
IfREG(2) = “T" Then Option2 = True 
IfREG(2) = “N ” Then Option3 = True 
Combol.Listlndex = REG(3) -1 ‘CICLO 
Combo2.Text = REG(4) AULA 
Rem SITUACION 
IfREG(5) = “R ” Then Option4 = True ‘REGULAR 
IfREG(5) = “M ” Then Option5 = True ‘1/2 BECA 
IfREG(5) = “B " Then Optionó - True ‘BECA 
IfREG(5) = “O" Then Option7 = True ‘OTRO 
Text3 = REG(6) ‘PENSION 
lfREG(7) Then Checkl = 1 Else Checkl ~ 0 
IfREG(8) Then Check2 = 1 Else Check2 = 0 
Text4 = REG(9) ‘FECHA DE INGRESO 
TextS = REG(IO) 
End Sub 
Instrucciones de los Option Button (Muestran la Pension) 
Private Sub Option4_Click() 
Text3 = 160 
UpDownl. Visible = False 
End Sub 
Prívate Sub Option5_Click() 
Text3 = 80 
UpDownl.Visible = False 
End Sub 
Prívate Sub Optionó_Click() 
Text3 = 0 
UpDownl.Visible = False 
End Sub 
Prívate Sub Option7_Click() 
Text3 = 50 
UpDownl.Visible = True 
End Sub 
Instrucciones del Control UpDown2 (Fechla de Inscripción) 
Prívate Sub UpDown2_DownClick() Prívate Sub UpDown2_UpClick() 
Text4 = CVDate(Text4) - 1  Text4 = CVDate(Text4) + 1 
End Sub End Sub 
Instrucciones del Botón Salir 
Prívate Sub Commandó_Click() 
I f MsgBox( “ESTA SEGURO DE SALIR ” , 36, “CUIDADO ") = 6 Then End 
End Sub 
CAPÍTULO IX: Manejo de Base de Datos j 
MODIFICAR VARIOS REGISTROS A LA VEZ 
Se puede hacer un program a para m o d ific a r o adicionar varios registros al 
m ism o tiem po usando el control D B g rid y los métodos de transacciones: 
BeginTrans, C om m itTrans y RollbackTrans. 
BEGINTRANS 
Com ienza una nueva transacción. 
COM M ITTRANS 
F inaliza la transacción actual y guarda los cambios. 
ROLLBACKTRANS 
F inaliza la transacción actual e ignora las m odificaciones realizadas. Res­taura 
las bases de datos al estado en que estaban cuando comenzó la tran­sacción 
actual. 
A P L IC A C IO N D E SA R R O L L A D A N° 58 
s¡. MODIFICACION DE REGISTROS 
N O M B R E D IR EC C IO N D IS T R IT O TELEFO N O FEC N AC 
C AR LO S M O R A LE S A R E Q U IP A 365 CHICLAYO 202 0 2 0 1 8 /0 7 /1 9 6 9 
D A N IE L ALA R C O N W IR A C O C H A 315 LA V IC T O R IA 232G89 1 5 /1 0 /1 9 6 6 
L IL IA N A A L A R C O N M A R IA IZA G A CHICLAYO 227191 2 0 /1 2 /1 9 9 0 
M A N U E L C AR B A JA L S A L A V E R R Y 987 CHICLAYO 209 8 7 5 1 8 /0 6 /1 9 6 0 
M A R IA C A S T A Ñ E D A W IR A C O C H A 32 5 LA V IC T O R IA 205048 2 3 /1 2 /1 9 9 8 
T IT O R A M IR E Z EL D O R A D O 45G J.L.O . 236975 0 7 /1 1 /1 9 7 0 
1 ....... ► 
i Ë m pezaf tas M o d ifica cio n e s~ ij G rabar todas lass M o d ifica cio n e s i Ignorar todas las M o d ifica cio n e s 
►M 
1 D ib u je los controles y asígneles sus propiedades respectivas. 
2 Escriba las siguientes instrucciones: 
Instrucciones del Form^Load 
Prívate Sub Form_Load() 
Command! .Enabled = True 
Command2.Enabled = False 
Command3. Enabled = False 
DBGridl .AllowUpdate = False 
DBGridl .AllowAddNew = False 
Datal.Refresh 
End Sub 
Instrucciones Botón Grabar 
Private Sub Command2_Click() 
CommitTrans 
Form_Load 
End Sub 
Instrucciones Botón Empezar 
Private Sub Commandl_Click() 
BeginTrans 
DBGridl .AllowUpdate = True 
DBGridl .AllowAddNew = True 
Commandl .Enabled = False 
Command2. Enabled = True 
Command3. Enabled = True 
End Sub 
Instrucciones Botón Ignorar 
Private Sub Command3_Click() 
Rollback 
FormJLoad 
End Sub 
G r u p o E d i t o r i a l Megabyte 397
 VISUAL BASIC como debe ser... ■'"¿■-.y 
MANEJO DE FOTOS 
Usando V isual Basic usted puede grabar fotos en sus tablas. Para e llo, debe 
d e fin ir el campo tipo B in ario si la tabla la crea con V isual Basic o de tipo 
O bjeto O L E si la crea con Access. 
Para m ostrar la fo to grabada en un registro puede u tiliz a r el co ntrol Image. 
Este control tiene las propiedades DataSource y D ataField igu al que las 
cajas de texto para poder conectarse con el campo que tiene la foto. Las 
fotos a u tiliz a r deben estar escaneadas y almacenas en una carpeta deter­minada. 
En esta aplicación la base de datos se llam a P erso n a l y la tabla 
E m p lea d o s cuya estructura tiene cuatro campos es: 
N o m b re Text 3 0 D irección Text 2 5 Telefono Text 10 F oto B inario 
A P L IC A C IÓ N D E SA R R O L L A D A N° 59 
L a siguiente aplicación perm ite consultar, adicionar, m o d ific a r y e lim in a r 
registros incluyendo la foto de cada uno de ellos. 
-|Pl*l 
I ALARCON GARCIA LILIANA 
CASTAÑEDA PACHECO JUAN 
MEDINA CHISCUL CESAR 
PORRO CHILLI MARCO 
RAMIREZ VASQUEZ TITO 
TERRONES PALACIOS LOURDES d 
Opciones Disponibles 
ADICIONAR I MODIFICAR I ELIMINAR 
Inform ación de los Empleados FOTO 
NOMBRE |ALARC0N GARCIA LILIANA f e * « - V - 
DIRECCION |SANJ0SE 6786 W — W . . 
TELEFONO |a2124 t i Ê L Â k 
Cuando se elige la opción A d ic io n a r o M o d ific a r se m uestran otros botones 
para poder c u m p lir con dicha opción: 
PO 
[ALARCON GARCIA LILIANA 
CASTAÑEDA PACHECO JUAN 
MEDINA CHISCUL CESAR 
PORRO INFANTES OSCAR 
RAMIREZ VASQUEZ TITO 
TERRONES PALACIOS LOURDES 
Opciones Disponibles 
.ADICIONAR I MODIFICAR I ELIk 
Inform ación de los Empleados 
NOMBRE P ° ÍIRRO INFANTES OSCAR 
DIRECCION 456 
TELEFONO 666968 
.S in fo te ___ J 
CAPITULO IX: Manejo de Base de Datos ^ Ü H 
C ua nd o se elige la opción elim inai; se muestra una ventana de advertencia: 
% EMPLEADOS 
NO M BRES 
TE 
ALARCON GARCIA LILIANA 
CASTAÑEDA PACHECrg ri ij i .t 
MEDINA CHISCUL CE! 
PORRO INFANTES OS 
RAMIREZ VASQUEZ T JJ 
TERRONES PALACIOS ™ 
O pciones D isponibles 
ADICIONAR I MODIFIc w i i n 
Info rm a ció n de los Em pleados 
NOMBRE 
FOTO 
[TERRONES PALACIOS LOURDES 
ESTA SEGURO DE ELIMINAR A ESTE EMPLEADO 
GRABAR CANCELAR 
Seleccionar su Foto 
— Siojffto 1 
C uando hace c lic k en el botón S eleccio n a r su F oto debe buscar la carpeta 
donde grabó las fotos escaneadas. En el ejem plo, las fotos han sido graba­das 
com o *.B M P : 
B u sca r en. f E M P L E A D O S Jgaj e » | HST m l 
^ C A S T A Ñ E D A P A C H E C O J U A N .b m p 
j S j C H I R I N O S P A S T O R O S C A R .b m p 
j g f C O R O N A D O V E N T U R A H E C T O R .b m p 
J P f F E R N A N D E Z G U E R R E R O A N A X IM A N D R O .b m p 
45% L I Z A A R A U J O C A R L O S .b m p 
ggf M E D I N A C H I S C U L C E S A R .b m p 
JLl_________________________________1 
^ M O R A L E S J U L I A N C A R L 
^ ■ P A C H E C O R O Q U E M IR E 
l ^ r P O R R O C H U L L I M A R C O 
P O R T A L E S G R A N A D O S 
d S R A M I R E Z S U A R E Z LILI/ 
R A M I R E Z V A S Q U E Z T IT 
-îJ .N o m b r e d e a r c h iv o : 
A b r ir 
A r c h i v o s d e tip o : 
¡ F o t o s D is p o n ib le s 
I A b r ir c o m o 3 ÓI0 le c t u r a 
" 3 
DESARROLLO DE LA APLICACIÓN 
P A S O N ° 01: D IB U J A R L O S C O N T R O L E S . 
Labell Frame2 
LabeC Í t S J T 
R a m e l 
Com mand! ! Command2 1 Com mand31 
Label3 ( f ex(2 
LabeM (r^T 
Command4 I 
| n | •< |Pa(a1 T jÑ I 
Command5 
G r u p o E d i t o r i a l Megabyte 
Label5 
CommandG 
Command? 
399
|111¡¡1|> VISUAL BASIC como debe ser... 
PASO N° 02: A S IG N A R L A S P R O P IE D A D E S A LO S C O N T R O LE S . 
Al control Datal asígnele las propiedades D a t a B a s e N a m e y RecordSource, 
al D b c o m b o l las propiedades RowSource, Listfield y en su propiedad Style 
asígnele el valor 1 y estire el control para visualizar varios registros. A las 
cajas de texto y al control Image 1 asígneles en su propiedad DataSource y 
DataField los campos correspondientes. A los botones de comandos, asíg­neles 
en su propiedad Caption el texto c o m o se muestra en la aplicación a 
desarrollar. 
P A S O N ° 03: E S C R IB IR L A S IN S T R U C C IO N E S . 
D e fin ir las va ria b le s a n iv e l de fo rm u la rio . 
O ption E xp licit 
D im R E G A s R ecordset 
Instrucciones de los procedimientos a crear 
Sub DESACTIVARO 
F ra m e 1.E n a b led = F alse 
C om m and4.V isible = F alse 
C om m ands.V isible = F alse 
C o m m a n d ó .Visible = F alse 
C om m and7.V isible = F alse 
Im age 1.Stretch = True 
Im a g e 1 .B orderStyle = 1 
End Sub 
Instrucciones del Evento Form_Activate 
P riv a te Sub F o rm _ A c tiv a te () 
D E SA C T IV A R 
D a ta l.V isib le = F alse 
S e t R E G = D a ta l.R e c o rd se t 
E n d S u b 
In s tru c c io n e s d e l b o tó n A d ic io n a r 
P riv a te S u b C o m m a n d 1 _ C lic k () 
A C T IV A R 
R E G A d d N e w 
T extl .S et F ocus 
E n d S u b 
In s tru c c io n e s d e l b o tó n M o d ific a r 
P riv a te S u b C o m m a n d 2 _ C lic k () 
A C T IV A R 
REG. E d it 
T extl. S et F ocus 
E n d S u b 
Sub ACTIVARQ 
F ram e 1.E n a b le d = True 
C om m and4. Visible = True 
C om m and5. Visible = True 
C o m m a n d ô .Visible = True 
C om m and7. Visible = True 
Im age 1.Stretch = True 
End Sub 
400 G r u p o E d it o r ia l Megabyte 
In s tru c c io n e s d el b o tó n E lim in a r 
P rív a te S u b C o m m a n d 3 _ C lic k () 
IfMsgBox( "ESTA SEGURO DE ELIMINARA ESTE EMPLEADO",36, "CUIDADO ")=6 Then 
R E G D e le te 
D a ta l.R e fre sh 
E n d I f 
E n d S u b 
In s tru c c io n e s del b o tó n G ra b a r 
P rív a te S u b C o m m a n d 4 _ C lick() 
REG. U pdate 
D B C o m b o l .L istF ield = "N O M B R E " 
D E SA C T IV A R 
E n d S u b 
In s tru c c io n e s d e l b o tó n C a n c e la r 
P rív a te S u b C o m m a n d 5 _ C lic k () 
REG. C a n cel U pdate 
D E SA C T IV A R 
E n d S u b 
In s tru c c io n e s d e l b o tó n S e le ccio n a r su F o to 
P rív a te S u b C o m m a n d ó _ C lic k () ____________ ___________ 
R em C arácter N ° A L T + 124 ▼ ▼ ▼ 
C o m m o n D ia lo g l .F i l t e r - "F otos D isp o n ib les* .b m p T o d a s (*. * j|* . * " 
C o m m o n D ia lo g l. S h o w O p e n 
Im a g e l.P ic tu r e = L o a d P ictu re( C o m m o n D ia lo g l.file n a m e ) 
E n d S u b 
In s tru c c io n e s d e l b o tó n S in F o to 
P ríva te Sub C o m m a n d 7 _ C lic k () 
Im a g e 1 .P icture = L o a d P ictu re("") 
E n d S u b 
In s tru c c io n e s d e l c o n tro l D B c o m b o l - E v e n to C hange 
P rív a te S u b D B C o m b o l_ C h a n g e () 
D im C A s String 
C = "N O M B R E L1KE + D B C o m b o l + 
R E G F in d F irst C 
I f R E G N o M a tc h Then 
F ra m e l .V isible = F alse 
E lse 
F ram e 1 .V isible = True 
E n d I f 
E n d S u b 
In s tru c c io n e s d el c o n tro l D B c o m b o l - E v e n to C lic k 
P ríva te Sub D B C o m b o l_ C lic k (A re a A s In teg er) 
D B C o m b o l J C h a n g e 
E n d Sub 
CAPÍTULO IX: Manejo de Base de Datos ^Í¡É11I^ 
G r u p o E d i t o r i a l Megabyte 401
VISUAL BASIC como debe ser... 
MANEJO DE VARIAS TABLAS 
Para m anejar dos o más tablas de una base de datos se puede u tiliz a r un 
control Data para cada una de ellas o u n ir las tablas y utiliza rla s con un solo 
control Data. Esto depende del tipo de aplicación que se desea desarrollar. 
La siguiente aplicación muestra un ejem plo de m anejar dos tablas con un 
solo co ntrol Data para cada una de ellas y tam bién un solo control Data para 
las dos. 
Se tiene una Base de Datos llam a T IE N D A que contiene dos tablas: V E N ­D 
ED O R E S y V E N T A S con la siguiente estructura: 
V E N D E D O R E S 
C odigo Text 3 
N om bre Text 30 
Telefono Text 10 
VENTAS 
Codigo Text 3 
FechaVenta Date 
M onto C urrency 
D istrito V e nta Text 20 
FechaVenta es la fecha en la cual cada vendedor re a liza la venta y 
DistritoVenta es el nom bre del d istrito donde se realiza la venta. 
La aplicación debe p e rm itir visua liza r las ventas realizadas p or cada vende­dor, 
registrar las ventas y listarlas en fo rm a general, por d is trito o por fecha. 
Para una m ayor com odidad, se debe realizar en un sólo fo rm u la rio usando el 
co ntrol SsTab, com o se muestra a continuación: 
U S O D E V A R IA S T A B L A S :TaP 
v e n t a s ! 
V E N D E D O R E S 
T R E G IS T R A R X 
JU por 
JU LIO D A V I LA 
T E R E S A U B ILLU S 
N O EM I M O N TA Ñ O 
JO RG E CASTR O 
V E R SU S V E N T A S 
D A T O S D E L V E N D E D O R 
CODIGO 
N O M B R E 
TELÉFO N O 1232426 
001 
001 
001 
V E N T A S R E A LIZ A D A S 
FE C HAI 
0 3 /0 1 /0 0 
10/0 2 /0 0 
2 2 /0 2 /0 0 
M O N T O lD IS T R IT O 
5 0 ETEN 
50 J.L.O 
600 TU M AN 
[ Mi < [v e n d e d o r e s ► T h! í h ] < [v e n t a s ► | h ) | n |< [ i n f o r m e ► [h] SA LIR 
402 G r u p o E d i t o r i a l Megabyte" 
CAPITULO IX: Manejo de Base de Datos 
„ U S O D E V A R IA S T A B L A S 
R E G IS T R A R 
VEN D ED O R ES D A T O S D E L V E N D E D O R 
CODIGO JÖÖ4 
NOMBRE 
TELÉFONO 
ÜORGE CASTRO 
|201665 
IN F O R M A C IÓ N D E L A V E N T A R E A L IZ A D A 
CODIGO 1004 ( y 
FECHA DE V E N T A 11 4 /0 2 /0 2 GRABAR 
D IS TR ITO DE V E N TA í " " X M ONTO I.. CANCELAR 
I H| < I VEN D ED O R ES ► | » i) I h I < [V E N TAS ► | H | | l < H ¡ INFORME ► | H ] SAUF! 
En las dos primeras páginas cada tabla se maneja con su respectivo control 
Data, pero en la tercera se encuentran unidas y se u tiliza un solo control Data. 
En esta aplicación se u tiliz a n 3 controles Data, el D a ta i maneja la in fo rm a ­ción 
de la tabla V E N D E D O R E S , el Data2 la in fo rm a ció n de la tabla V E N ­TAS 
y el co ntrol Data3 maneja la in fo rm a ció n de las dos tablas que se 
encuentran unidas a través de una instrucción S Q L en una consulta (Q uery) 
llam ada IN F O R M E . 
rT n ra 
U S O D E V A R IA S T A B L A S 
V E N T A S f R E G IS T R A R f L IS T A D O 
P O R : _____________________________ 
( * D IS T R IT O Ingrese el D istrito | V E r | TO D O S | 
r FE C H A 
CODIGO N O M B R E TELEFO N O FE C H A l M O N T O l D IS T R IT O 
► 001 JU L IO D A V IL A 232426 0 3 /0 1 /0 0 ! 50 ETE N 
001 JU LIO D A V IL A 232426 1 0 /0 2 /0 0 50 J.L.O . 
001 JU LIO D A V ILA 232426 2 2 /0 2 /0 0 ! 60 0 TU M A N 
002 T E R E S A U B ILLU S 362166 2 5 /1 2 /9 9 25 0 L A VIC T O R IA 
002 T E R E S A U B ILLU S 362166 0 6 /0 1 /0 0 ! 100 J .L O. 
002 T E R E S A U B ILLU S 36 2 1 6 6 0 2 /0 2 /0 0 ! 100 PO M ALCA 
002 T E R E S A U B ILLU S 36 2 1 6 6 0 5 /0 2 /0 0 50 PO M ALCA 
002 T E R E S A U B ILLU S 362166 2 2 /1 0 /9 9 100 PCI M ALCA 
004 JO R G E CASTR O 201665 1 5 /0 2 /0 0 20 0 LA V IC T O R IA 
< | --------------- — > r 
[T<| < ¡V E N D E D O R E S ► TÜTl | l < | < ¡V E N T A S » | m | I l<[ 4 IIN FO R M E ► | h ] SA LIR | 
Antes de comenzar a desarrollar la aplicación debe crear la base de datos y las 
dos tablas, luego crear una consulta donde se unan las dos tablas anteriores. 
G r u p o E d i t o r i a l Megabyte 403
.......... _ ................................ o 
éS R k > VISUAL BASIC como debe ser.. . < 
UNIENDO TABLAS DE UNA BASE DE DATOS 
Para u nir dos o más tablas se u tiliz a la instrucción S Q L llam a S E LE C T 
explicada en la página N° 343. Su sintaxis para u n ir tablas es: 
SELECT * FROM Nomb_Tablal INNER JOIN Nomb_Tabla2 ON Condición 
E l asterisco ( * ) indica que al unirse las tablas deben pasarse todos los cam ­pos 
de ambas tablas. 
Si Usted, desea ind icar sólo algunos campos debe escribirlos en lugar del 
asterisco separados por una coma. 
Por ejemplo: 
Para u n ir la tabla Vendedores con la tabla Ventas con todos sus campos se 
debe escribir lo siguiente: 
Select * From Vendedores InnerJoin Ventas On Vendedores.Codigo=Ventas.Codigo 
Para u n ir la tabla Vendedores con la tabla Ventas pero sólo los campos 
C odigo, N om bre Fecha y M on to, se debe escribir en una sola línea lo si­guiente: 
Select Vendedores.Codigo, Nombre, Fechaventa, Monto From Vendedores Inner Join 
Ventas On Vendedores.Codigo=Ventas.Codigo 
Estas instrucciones se deben escribir en la ventana de Instrucciones S Q L 
que se visualiza al crear las tablas para que al grabarla se obtenga una 
consulta, donde estén unidas las dos anteriores la cual se puede u tiliz a r casi 
com o cualquier otra tabla, pero donde no puede adicionar, m odificar, etc., 
porque es de sólo lectura. 
N O T A : 
1. C u a n d o e s p e c ifiq u e los n o m b re s a v is u a liz a r, debe e s c rib irlo s 
correctam ente, com o se encuentran en la estructura. Por ejem plo, si 
escribe N om bres en lugar de N om bre, se muestra el mensaje: 
E s c r i b a u n v a l o r p a r a e l p a r á m e t r o : | A c e p t a r 
C a n c e l a r 
2. A l u nir las tablas puede aplicar todo lo explicado en el tema de instrucciones 
SQ L (página N ° 343) como por ejem plo Where, Order By, etc. 
404 G r u p o E d i t o r i a l Megabyte 
CAPITULO IX: Manejo de Base de Datos 
V E N T A N A PARA E SC R IB IR LA S IN ST R U C C IO N E S SQ L 
iw V is D a ta :C :A ic h iv o s de pro g ra m a D e v S tu d io V B T IE N D A .m d b 
Archivo Utilidad Ventana Ayuda 
i L a j w m _ L d 
JDJXJ m e 
SI f Ü 1 Properties 
.+: 1 0 VE N D ED O R ES é 1 0 V E N TA S 
»H In s tru c c ió n SQL 
~ I 
-J 
L is to U s u a rio : a d m *n ^ 
En esta ventana debe escribir las instrucciones para u n ir las dos tablas. 
C u a n d o la in s tru c c ió n no a lc a n z a en la v e n ta n a , e l c u rs o r sa lta 
autom áticam ente a la siguiente línea (no pulse ña tecla E N T E R ). 
E l b o tó n E je c u ta r (Exécuté), perm ite ejecutar las instrucciones SQ L. Debe 
u tiliz a r este botón para probar la instrucción escrita. 
El botón B o r ra r (Clear), borra la instrucción S Q L de la ventana para escribir 
una nueva. 
El botón G u a rd a r (Save), pide el nom bre de la C onsulta a crear donde se 
almacenará el contenido de las dos tablas unidas. 
Cuando un click en el botón Guardar se muestra el siguiente mensaje, pidiendo 
el nom bre de la consulta a crear: 
VisData 
Escriba el nombre del QueryDef: Aceptar 
Cancelar 
G r u p o E d i t o r i a l Megabyte 405
^ VISUAL BASIC como debe ser... < 
Después de asignar el nombre y hacer click en A c e p ta r, V isual Basic 
le pregunta si es una consulta de p a so a través de. Haga c lic k en N o. 
Luego, se muestra el nom bre de la consulta creada ju n to a las dos tablas. En 
el ejem plo la consulta se llam a In fo rm e . 
A rc h iv o U tilid a d V e n ta n a A^ 
a l i g o l » I b 
EBS5¡mBH3ZEI 
Si 
g ; E S * P r o p e r tie s 
í+ M i V E N D E D O R E S 
l f . ( p V E N T A S 
ÉJ É P IN F O R M E _____ 
g i l I n s t r u c c i ó n S Q L 
E je c u ta r 
S E LE C T * F R O M V E N D E D O R E S IN N E R J O IN V E N T A S O N 
V E N D E D O R E S , c o d ig o — V E N T A S . C O D IG O 
: 
L is to U s u a rio : a d m in 
D E SA R R O L L O D E LA A P L IC A C IÓ N N° 60 
PASO N° 01: DIBUJAR LOS CONTROLES 
!T»i. o¡ 
Lot. olí 
(DB Coniol 
C o m m a n d l 
L a b e l2 
L a b e l J 
LaboM Labol/ 
B = 
Im I < l oXTi ► I h I I m'I « I d <»»<..? V 1 ►!] í M i « i r» v.^-) ► 1 » il Command? 
j r 
L«b«l8 
J r . ........ 
C o r n m a n d 2 
I O I.«bel1 3 
L aboli I Loboli 4 
Label I 67 
Laboll 0 
fr'^rr 
| t ««»i* 
Commands 
Ijñ L jl],. j t E a l i i l i J ' ™ ü j t f l U iL s J " * ^ ' .*J£ D ^ ” 1-’ 
406 G r u p o E d i t o r i a l Megabyte-^ 
CAPITULO IX: Manejo de Base de Datos 
fH ? IM 1 Ih ^rsrn 
F i arn e 4 
<*“■ O p tio n l C o m m a n d s j C o m m a n d C 
EF 
I h I * | p»ta1 ► I » ll | l< | 4 l oal»2 ► 1 M i | w l « Í 0ala3 ► | H l CornM nd? | 
-------------------- —--------------.--- ------- —---—...................... .... ...........................| 
PASO N° 02: ASIGNAR LAS PROPIEDADES A LOS CONTROLES 
CONTROL 
Datai 
Data2 
Data3 
CONTROL DATA 
DATABASENAME RECORDSOURCE CAPTION 
Tienda Vendedores Vendedores 
Tienda Ventas 
Tienda Informe 
DECOMBO 
CONTROL ROWSOURCE LIS T F IE LD 
DBcombol Datai Nombre 
DBcombo2 Datai Nombre 
ETIQ UETAS 
CONTROL DATASOURCE 
Label5 Datai 
Labeló Datai 
Label7 Datai 
Label 12 Datai 
Label 13 Datai 
Label 14 Datai 
Ventas 
Infome 
STYLE 
1 
1 
DATAFIELD 
Codigo 
Nombre 
Telefono 
Codigo 
Nombre 
Telefono 
El resto de Etiquetas y Comandos sólo la propiedad Caption como se muestra en 
la aplicación 
CAJAS DE T E X T O 
CONTROL DATASOURCE DATAEIELD 
Textl Data2 Codigo 
Text2 Data2 Fechaventa 
Text3 Data2 Distritoventa 
Text4 Data2 Monto 
Text5 En Blanco En Blanco 
D B G R ID 
CONTROL DATASOURCE 
DBgridl Data3 
G r u p o E d it o r i a l Megabyte 407
d S S f e VISUAL BASIC como debe ser... 
PASO N" («¡ESCRIBIR LAS INSTRUCCIONES PARA LOS CONTROLES. 
Instr.. del evento FORM ACTIVATE Instrucciones del botón SALIR 
Prívate Sub Form_Activate() Prívate Sub Command7_Chck() 
Frame3. Visible = False End 
End Sub End Sub 
PA G IN A N° 01 - VENTAS 
Instrucciones del botón VER SUS VENTAS 
Prívate Sub Commandl_Click() 
DBGridl .Visible = True 
DatcHRecoidSource = "SELECT*FROMVENIASWHERECODIGO ‘"&Label5& 
Data2.Refresh 
If Data2.Recordset.RecordCount = 0 Then 
MsgBox "El vendedor no ha realizado ninguna venta",64, "Lo siento" 
E n d lf 
DBCombol .SetFocus 
End Sub 
Instrucciones del Control DBcombol (eventos Changey Click) 
Prívate Sub DBCombol_Change() 
Dim DATOS As String 
DATOS = "NOMBRELIKE & DBCombol & 
Datal.Recordset.FindFirst DATOS 
DBGridl. Visible = False 
If D atal .Recordset.NoMatch Then 
Frame 1.Visible = False 
Else 
Framel.Visible = True 
E n d lf 
End Sub 
Prívate Sub DBCombol_Click(Area As Integer) 
DB Combo lJChange 
End Sub 
PA G IN A N° 02 - R E G IST R A R 
Instrucciones del Control Dbcombo2 (eventos Change y Click) 
Prívate Sub DBCombo2_Change() 
Dim DATOS As String 
DATOS = "NOMBRE LIKE & DBCombo2 & 
Data 1. Recordset. FindFirst DA TOS 
If Datal.Recordset.NoMatch Then 
Frame2. Visible = False : Command2.EnabIed = False 
Else 
Frame2. Visible = True : Command2.Enabled = True 
E n d lf 
End Sub 
Prívate Sub DBCombo2_Click(Area As Integer) 
DBCombo2_Change 
End Sub 
4 0 8 G r u p o E d i t o r i a l 
CAPÍTULO IX: Manejo de Base de Datos 
Instrucciones del botón REGISTRAR SU VENTA 
Prívate Sub C om m and2_C lick() 
Fram e3. Visible = True 
D B C om bo2. E nabled = False 
C o m m a n d l.E nabled = False 
D ata2.R ecordset.A ddN ew 
T extl = Label 12 : Texl2 = D ate 
Text3. SetF ocus 
E n d Sub 
Instrucciones del botón GRABAR 
P r ív a te S u b C o m m a n d 3 _ C lic k ( ) 
D a ta l.R e c o r d s e t. U p d a te 
F ra m e 3 .V isib le = F a lse 
D B C o m b o 2 . E n a b le d = T rue 
C o m m a n d 2 .E n a b le d - True 
D a ta 3 .R efre sh 
D a ta l .R e fresh 
D a ta l. R efre sh 
E n d S u b 
Instrucciones del botón CANCELAR 
Private Sub Command4_Click() 
Data2.Recordset. CancelUpdate 
Frame3. Visible = False 
DBCombo2.Enabled = True 
Command2. Enabled = True 
End Sub 
PA G IN A N° 03 - L IST A D O 
Instrucciones del botón VER 
P rivate Sub C om m and5_C lick() 
I f O ption 1 Then 
Data3.RecordSource= "SELECT*FROMINFORMEWHEREDISTRITOVENTA= ‘"&Text5& 
Else 
I f IsD ate(Text5) Then 
Data3.RecordSource= "SELECT * FROM INFORME WHERE FECHAVENTA=CDATE( Text5 &'")" 
Else 
M sgB ox "NO HA IN G R E SA D O U N FEC H A C O RRECTA", 16, "VERIFIQ U E" 
E n d l f 
E n d l f 
D ata3. Refresh 
DBGrid2.Caption=Str(Data3.Recordset.RecordCount)+" REGISTROS MOSTRADOS” 
I f D ata3.R ecordset.R ecordC ount = 0 Then 
MsgBox "NO HAY REGISTROS QUE CUMPLEN LA CONDICIÓN",64, "LO SIENTO" 
E n d I f 
E n d Sub 
Instrucciones del botón TODOS 
Private Sub C om m andó_C lick() 
D ata3.R ecordSource = "S E L E C T * F RO M IN F O R M E " 
D ata3. Refresh 
DBGrid2.Caption=Str(Data3.Recordset.RecordCount)+" REGISTROS MOSTRADOS" 
E n d Sub 
Instrucciones del control OPTION1 
Prívate Sub Optionl_Click() 
Labell9="Ingrese el Distrito" 
End Sub 
G r u p o E d i t o r i a l Megabyte 
Instrucciones del control OPTION2 
Prívate Sub Option2_Click() 
Labell9 - "Ingrese la Fecha" 
End Sub 
40 9
VISUAL BASIC como debe ser... 
ERRORES MAS COMUNES 
Microsoft Visual Basic 
Error '3131' en tiempo de ejecución : 
Error de sintaxis en la cláusula FROM. 
lerminar Depurar Ayuda 
Ha escrito en forma incorrecta 
la instrucción Select. Por ejem­plo, 
no dejó espacio después 
de la palabra WHERE. 
I Microsoft Visual Basic No ha ingresado información 
en el campo indicado antes de 
grabar. 
Por cada campo creado se pue­de 
indicar que puede quedar 
vacío o no, activando o 
desactivando la siguiente ca­silla 
del campo: 
Error '3315' en tiempo de ejecución : 
El campo 'ALUMNOS.OBSERVACIONES' no puede ser una cadena de 
longitud cero. 
’ • . . i - - i í K ’ "■ 
-jf,L -, j Terminar Depurar =J Ayuda 
P Permitir longitud cero 
Le asignó al D Blist las propie­dades 
DataSource y Datafield. 
En un programa de consulta el 
control D Blist debe tener sólo 
las propiedades Rowsource y 
Listfield. 
Microsoft Visual Basic 
Error '3426' en tiempo de ejecución : 
Esta acción fue cancelada por el objeto asociado. 
Terminar i Depurar j] Ayuda 
Microsoft Visual Basic 
Error '3020' en tiempo de ejecución : 
Update o CancelUpdate sin AddNew o Edit. 
Depurar Ayuda 
No se puede grabar o cancelar 
un nuevo registro o las m odifi­caciones 
realizadas sin antes 
usar Addnew (botón adicionar) 
o Edit (botón modificar). 
410 G r u p o E d i t o r i a l Megabyte'5 
CAPÍTULO IX: Manejo de Base de Datos 
PREGUNTAS DE REPASO N° 09 
1. E xplique los componentes de una base de datos. 
2. ¿Qué es la estructura de una tabla? 
3. ¿Qué propiedades com o m ínim o se le deben asignar a una caja de textos 
o etiquetas para m ostrar el contenido de un campo? 
4. E xp liq u e las principales propiedades del control Data. 
5. ¿Cuál es la diferencia entre los controles D B lis t y D Bcom bo? 
6 . ¿Cuáles son los métodos que perm iten m anejar registros? 
7. ¿Qué es un campo calculado?. E xp liq u e cóm o se pueden obtener 
8. E xplique todo lo referente a la instrucción S Q L Select. 
9. ¿Cuál es la ventaja de u tiliz a r variables tip o Recordset? 
10. E xplique las propiedades del objeto Field. 
11. E xplique los métodos BeginTrans, C om m itTrans y R ollbackTrans 
12. E xp liq u e cóm o se puede almacenar una foto grafía en un campo. 
13. E xplique la instrucción Inner Join. 
14. ¿Qué requisitos deben c u m p lir las tablas para que se unan? 
15. ¿Cuáles son los errores más comunes cuando trabaja con base de datos 
y cuales son las posibles causas. 
16. ¿ C u á l es la d ife r e n c ia e n tre las p ro p ie d a d e s A llo w U p d a te y 
A llo w A d d n e w del co ntrol D B g rid ? 
17. ¿Cuáles son las propiedades básicas que se le deben asignar al control 
D ata? 
18. ¿Cuál es la d iferencia entre D B com bo y el Com bo? 
19. ¿Cómo se evita que el contenido de los campos que se muestran en las 
cajas de texto se puedan m odificar. 
20. ¿Cuál es la diferencia entre los controles D B lis t y List? 
Es muy importante que usted, se form ule nuevas aplicaciones 
o intercambie aplicaciones propuestas entre sus compañeros 
de estudio y desarrollarlas con la fin alidad de enriquecer 
sus conocimientos 
G r u p o E d i t o r i a l Megabyte 411
CAPITULO X 
— Doten doi Pioducto--------- 
Nombre 
V a l e r d e C o m p r a 
uuikjjd 
F a c h a eJb V a n c r n i a n l d 
{a r r o z ” 
I.Q.V. r 
R r # o b d * C o m p r a 
U tlid n d S / T 
F ttc iü de Vento (PÚbJicol f 
10.000 
m :m s 
TTSuC 
PROGRAMACION 
DAO
CAPÍTULO X: Programación DAO 
En este capítulo se desarrollan entre otras, las siguientes a p lic a d -«es: 
%. MANTENIMIENTO DE REGISTROS OSANDO << D.A.O. >> 
Datos del Producto 
Nombre 
A 
ACEITE ALGODON -1 
ARROZ 
|ARROZ 
Valor de Compra jlOO 
Utilidad % j-jo 
Fecha de Vencimiento j 30-09-2001 
grabar 
Cancelar 
I.G.V. 
Precio de Compra 
Utilidad S/. 
Precio de Venta (Público) 
Opciones Disponibles 
Adicionar I Modificar I 
& 
d ? 
. P R O G R A M A S D E L I S T A D O V E S T A D I S T I C A 
LIS T A D O S ■rfclCMEIMtta 
T O T A L P O R V E N D E D O R 
T O T A L P O R D IS T R IT O 
T O T A L P O R V E N D E D O R V D IS T R IT O 
N V E N D E D O R E S C O N M A S V E N T A S 
D IS T R IT O C O N M A Y O R V E N T A 
M O N T O T O T A L V E N D ID O 
C A N T ID A D T O T A L DE V E N T A S 
35E 1 
LIZADAS 
I k i m i m I I I 
S E G U N E L M O N T O 
S E G U N L A C A N T ID A D 
Li_l 
002 
005 
004 001 
J5ÖÖ 
06-01 -2000 
06-01 -2000 
1 5-02-2000 
1 0 - 0 2 -2 0 0 0 
50 
100 
600 
200 
C A N T I D A D D E R E G I S T R O S M O S T R A D O S 
C A N I i b Ä b 
R E G R E S A R I 
G r u p o E d i t o r i a l Megabyte 415 4 ¡ g $
m à > VISUAL BASIC como debe ser... 
P R O G R A M A C IÓ N D A O 
La program ación D A O (Objetos de Acceso a Datos) perm ite m anejar la 
inform a ción de una base de datos sin el control D A T A . En este tipo de 
program ación la in form a ción se maneja a través de determ inados objetos 
que tiene V isual Basic. 
Los objetos de acceso a datos más utilizados son: 
DBENGINE 
E l objeto D B E ngine representa al m oto r de bases de datos M ic ro s o ft Jet. 
Es el objeto de n ive l más alto y contiene y controla todos los demás de la 
jerarquía de objetos de acceso a datos. 
WORKSPACE 
U n objeto W orkspace representa una sesión de un usuario. L a sesión de un 
usuario em pieza cuando éste se conecta a la base de datos y term ina cuando 
cierra la base de datos. 
DATABASE 
Representa a la Base de Datos que se encuentra activa. 
RECORDSET 
Representa todos los registros de una tabla o los que resultan de una consulta 
con la instrucción SE LE C T. 
FIELD 
Representa un campo de una tabla. 
FIELDS 
Es una colección de objetos F IE L D y representa a todos los campos de una 
tabla. La form a de referirnos a un solo cam po está explicado en la página 
N ° 353 (Variables tip o Recordset). 
NOTA 
C uando inicia una aplicación, Visual B asic crea en fo rm a p redeterm ina­da 
los objetos D B E N G IN E Y W O R K SP A C E (D B E ngine. W orkspaces(0)). 
E stos objetos se deben utilizar cuando necesite m anipular bases de datos 
que tengan activada la seguridad o crear un alcance distinto de transacción. 
Todos los objetos Database abiertos en un objeto W orkspace com parten un 
m ism o alcance de transacción com ún. Es decir, cuando se usa el método 
BeginTrans en una base de datos, se aplica a todas las demás bases de 
datos abiertas en el objeto W orkspace. D el m ism o m odo, el uso del método 
C om m itTrans contra una base de datos se aplica al resto de las bases de 
datos abiertas en el objeto Workspace. 
G r u p 416 o E d it o r ia l M e g a b y t e 
O 
CAPITULO X: Programación DAO 
MÉTODOS PARA MANEJAR LAS BASE DE DATOS 
OPENDATABASE 
A bre una base de datos. Su sintaxis es: 
SetVariable_BD=Opendatabase(“ Nomb_Base_Datos” ,Exclusivo,Modo,Origen) 
Variable_BD 
Es el nom bre de la variable (O bjeto) que va a representar a la Base de 
Datos en la aplicación. Se debe declarar tip o D A T A B A S E a n ive l de fo r­m 
u la rio (en la ventana de declaración del fo rm u la rio ) si sólo se va a u tiliz a r 
en un fo rm u la rio , o a n ive l de m ódulo (en la ventana de declaración del 
m ódulo) si se va a u tiliz a r en varios fo rm u la rio s de una aplicación. 
N om b_B ase_D atos 
Es el nom bre de la base de datos que desea abrir. Si esta en una carpeta 
diferente a la actual, debe especificar tam bién la ruta. 
Exclusivo 
Es un va lo r ló g ico (True o False). E l v a lo r True ind ica que la base de datos 
se abre en form a exclusiva (para un sólo usuario). E l va lo r False indica que 
la base de datos se abre en form a com partida (para varios usuarios). 
M odo 
Es un va lo r lóg ico (True o False). E l va lo r True ind ica que la base de datos 
se abre en m odo sólo de lectura, es decir, no se puede m odificar. E l valor 
False indica que la base de datos se abre en m odo de lectura y escritura, es 
decir se puede m odificar. 
Origen 
Se u tiliz a para in d icar los argum entos de conexión al m om ento de a b rir una 
base de datos. E l argum ento origen se expresa en dos partes: el tip o de la 
base de datos, seguido de un punto y coma (;) y los parámetros opcionales. 
E l tip o de la base de datos, com o por ejem plo "O D B C ;" o "FoxP ro 2.5" debe 
indicarse en p rim er lugar. Los argumentos opcionales van a continuación sin 
un orden específico y separados p or caracteres punto y coma. 
NOTA: 
Sólo e l nom bre de la b a se de da to s es obligatorio, el resto de p a rá m etro s 
es o p cio n a l. 
S i n o e sp e c ific a el v a lo r p a r a lo s p a r á m e tr o s E x c lu siv o y M odo, su 
va lo r p red e te rm in a d o es FALSE. 
G r u p o E d i t o r i a l M e g a b y t e 417
ü f r VISUAL BASIC como debe ser... 
OPENRECORDSET 
A b re una tabla de una base de datos activada previam ente. Su sintaxis es: 
Set Variable_RS = Variable_DB.OpenRecordset(“ Nomb_Tabla” ,Tipo,Restricciones) 
Variable_RS 
Es la variable que va a representar a los registros de la tabla en la aplicación. 
Se debe declarar tipo R EC O R D SET en el m ism o nivel que declaró la variable 
de tip o D A T A B A S E . 
Variable_DB 
Es la variable tip o DataBase que u tiliz ó para a brir la base de datos. 
Nomb_Tabla 
Es el nom bre de la tabla que desea abrir. Tam bién puede escribir el nom bre 
de una consulta que creó y grabó en la ventana de instrucciones SQ L, ade­más 
puede escribir tam bién directam ente una instrucción SQ L. 
Tipo 
Es opcional y se puede u tiliz a r sólo cuando abre una tabla, para indica el tipo 
de Recordset con el que desea abrirla. Estos tipos pueden ser: 
DbO penTable D bO penD ynaset D bO penSnapshot 
R estricciones 
Es opcional y consiste en una constante que asigna una restricción para el 
m anejo de la tabla que esta abriendo. 
Estas constantes son: 
DbDenyWrite: 
Los demás usuarios no pueden m o d ific a r ni agregar registros. 
DbDenyRead: 
Los demás usuarios no pueden ver los registros (sólo objetos Recordset de 
tip o tabla). 
dbReadOnly 
Sólo puede ver los registros y los demás usuarios pueden m odifica rlo s. 
DbAppendOnly 
Sólo puede agregar registros nuevos(sólo objetos Recordset de tipo hojas de 
respuestas dinám ica). 
dblnconsistent 
Se perm iten actualizaciones inconsistentes (sólo objetos Recordset de tipo 
hoja de respuestas dinám ica). 
D bC onsistent 
Sólo se perm iten actualizaciones consistentes (sólo objetos Recordset de 
tip o hoja de respuestas dinám ica). 
CAPÍTULO X: Programación BAO 4 1 1 1 1 
DbF orwardOnly 
E l objeto Recordset es una snapshot de desplazam iento hacia adelante. 
Observe que los objetos Recordset creados con esta opción no pueden 
duplicarse y que sólo adm iten el m étodo M o ve N e x t para desplazarse por 
los registros. 
DbSQLPassThrough 
Se evita el procesador de consultas del m oto r de base de datos M icro s o ft 
Jet. L a consulta especificada en el argum ento origen de OpenRecordset 
se traslada a un servidor de O D B C para su procesamiento. 
D bSeeC hanges 
Genera un error en tiem po de ejecución si otro usuario m o d ific a los datos 
que se están editando. 
CLOSE 
C ierra los objetos de acceso a datos, com o p or ejem plo la base de datos y 
tablas. Su sintaxis es : 
Variable.Close 
D onde Variable es el nom bre del objeto que desea cerrar. 
NOTA 
Las constantes d b C o n s is te n t y d b ln c o n s is te n t son m u tu a m e n te 
excluyentes. Puede u tiliz a r una o la otra, pero no ambas en la m ism a 
instancia de OpenRecordset. 
U tilic e el indicador dbSeeChanges cuando desee interceptar los cambios 
realizados p or otro usuario u otro program a de su sistema m ientras esté 
editando o elim inando el m ism o registro. 
Todos los eventos utilizados con el co ntrol D A T A , com o p or ejm plo, 
FindFirst, M oveN ext, etc., también se pueden u tiliza r en la programación 
D A O . 
G r u p o E d i t o r i a l Megabyte 419
Í Ü Ü b > VISUAL BASIC como debe ser. . . < 3 § 
ANTES DE PROGRAMAR CON PAO 
Para m anejar la in form a ción de una base de datos usando D A O , debe rea­liz 
a r los siguientes pasos: 
1. D eclarar las variables tipo DataBase y tip o RecordSet en la ventana de 
declaración del fo rm u la rio o del m ódulo. 
Por ejem plo, las siguientes instrucciones declaran la variable D B tipo 
DataBase y la variable RS tipo RecordSet para que se u tilic e n en un 
solo fo rm u la rio porque de declaran en la ventana de declaraciones del 
form ulario. 
_________ I 3 H E ! 
fP P ro y e c lo l - Form i (C ó d ig o ) 
| (G e n e ra l) -r | j (D e c la ra c io n e s ) | 
D ir a DB A s D a t a b a s e 
D im RS A s R e c o r d s e t ■TT 
h r njJJ ± r 
2. A b rir la Base de Datos y la tabla o tablas en el evento F o rm _A ctiva te 
del form ulario. 
Por ejemplo, las siguientes instrucciones abren la base de datos llamada 
VE N TA S que se encuentra en C :M IS D O C U M E N T O S y la tabla llamada 
PR O D U C TO S de tipo Dynaset. Si la base de datos se encuentra en la 
carpeta predetermina del Visual Basic, no es necesario indicar su ruta. 
jForm .............. ............d j Activate “ 3 
P rivate 
Set DB 
Sub Form A c tiv a te () 
= OpenDatabase ("C:MIS D OC UMENTOS  VENT AS" ) z l 
Set RS 
End Sub 
= DB.OpenRecordset("PRODUCTOS", dtoOpenPynaset) 
.... . -Ú 
a < I 1 . è 
3. Verificar que se encuentre activada la casilla de M icrosoft D A O 3.5 Object 
Libraiy (o similar) en la opción Proyecto/Referencias (Ver página N° 354). 
Si no se encuentra activada esta casilla se m ostrará el siguiente mensaje 
al ejecutar la aplicación: 
11 i i i i i i i — — n 
Error d e c o m p ila c ió n : 
N o se h a d e fin id o el tip o d e fin id o p o r el u s u a rio 
í A c e p ta r ] | A y u d a | 
420 G r u p o E d i t o r i a l Megabyte 
¡CAPITULO X: Programación DAO 
A P L IC A C IÓ N D E SA R R O L L A D A N° 61 
La siguiente aplicación perm ite dar m antenim iento a los registros de una 
tabla llam ada P R O D U C T O S que pertenece a una base de datos llam ada 
V E N T A S . L a estructura de la tabla es: 
C A M P O T IP O T A M A Ñ O 
N o m b re d e l P ro d u c to T e x t 25 
V a lo r de C o m p ra S in g le (S e n c illo ) 
P o rce n ta je de U tilid a d S in g le (S e n c illo ) 
F echa de V e n c im ie n to D a te /T im e (F e c h a /H o ra ) 
Por cada registro que se visualiza se debe m ostrar el IG V que se obtiene 
del V a lo r de C om pra (18% ), el Precio de C om pra (IG V más V a lo r de 
C om pra), la U tilid a d en soles y el Precio de Venta (Precio de C om pra más 
la U tilid ad ). 
M A N T E N IM IE N T O D E R E G IS T R O S U S A N D O << D A O. >> 
D a l o s d e l P r o d u c t o 
N o m b re Ja r r o z 
V a lo r d e C o m p ra {Too 
1 * 
U tilid a d % j 1 0 g r a b a r | 
[ a c e i t e 
A L G O D O N 
H e c h a d e V e n c im ie n to 13 0 -0 9 -2 0 0 1 C a n c e la r | 
( A R R O Z J ü l 
P re c io d e C o m p ra 
U tilid a d S /. 
P re c io d e V e n t a (P ú b lic o ) f 129.81X1 
r t t y •»«a 
Opciones I 
A d ic io n a r 
P A S O N ° 01: D IB U J A R L O S C O N T R O L E S 
En esta aplicación ya no se u tiliz a el co n tro l Data, entonces no se u tiliz a 
tam poco el control D bcom bo, n i D b lis t. Los nom bres de los productos se 
muestran en un control C om bo para que se puedan consultar y a las cajas 
de texto ya no se les asigna las propiedades Datasource n i D ataField. 
EB2EÜQI 
jC o m b o l I 
F re m e i 
L a b e ll 
L a b e l2 
L a b e l3 
L a be M 
JfTexH 
j T e x t2 
]T e x t3 
J T e x t4 
L a b e l5 
L a b e l6 
L a b e l7 
L a b e l8 
L a b e l9 
L a b e ll O 
L a b e ll 1 
L a b e ll 2 
F ram e3 
C om m a n d 6 I C o m m a n d 7 j 
F ram e2 
C o m m a n d 3 j C om m a n d 4 j C o m m a n d 5 j 
C o m m a n d ! O 
G r u p o E d i t o r i a l Megabyte 421
é S ñ ík ' VISUAL BASIC como debe ser... 
PASO N° 02: ASIGNAR LAS PROPIEDADESALOS CONTROLES. 
Para desarrollar esta aplicación, debe asignar la propiedad C aption a las 
etiquetas, botones de comandos y Frame com o se muestra en la aplicación 
a desarrollar y además: 
Las etiquetas N ° 9, 10, 11 y 12 deben tener en su propiedad BorderS tyle el 
va lo r 1 - F ix e d S in g le. 
Los botones de comandos N ° 6, 7, 8 y 9, deben tener en su propiedad Style 
el va lo r 1 - G ra p h ic a l y en su propiedad Picture el g rá fico indicado o 
cualquier otro que usted desee. 
E l control C o m b o l debe tener en su propiedad Style el va lo r 1 -S im p le 
C o m b o para consultar a los registros escribiendo las iniciales de su nombre 
y para visua liza r los nombres de los productos ordenados alfabéticam ente, 
debe tener en su propiedad Sort el va lo r True. 
PASON"03:ESCRIBIRLAS INSTRUCCIONES PARALOS CONTROLES. 
D e fin ir las variables tip o Database y Recordset y otras variables que se 
u tiliz a n en la aplicación en la ventana de declaración del fo rm u la rio . 
H Proyectol - Form! (Código) 1-lnH 
[(General) ▼ (Declaraciones) ▼ 
5 
Dim DB As Database * 
Dim RS As Recordset — 
Dim XNOHBRE, XVALOR, XUTILIDAD, XFECHA As String v|H| 
1 Jinn 
Crear los siguientes procedimientos: 
Sub ACTUALIZAR JJOMBOQ 
Combo l.C lear 
RS.MoveFirst 
Do While Not RS.EOF 
Combol.Addltem (RS(0)) 
RS.MoveNext 
Loop 
RS.MoveFirst 
End Sub 
SubMUESTRA() 
Textl = RS(0) 
Text2 = RS( 1) 
Text3 = RS(2) 
Text4 = RS(3) 
CALCULAR 
End Sub 
Sub DESACTIVAR() 
Combo 1.Enabled = False 
Frame ¡.Enabled - True 
Frame2.Enabled = False 
Frame 3. Enabled = False 
End Sub 
Sub ACTIVAR() 
Combo 1.Enabled = True 
Frame ¡.Enabled - False 
Frame2. Enabled = True 
Frame 3. Enabled = True 
End Sub 
El procedimiento ActualizarjCombo, borra el contenido del Combol y muestra 
nuevamente todos los nombres de los productos. El procedimiento Muestra, visualiza 
los datos del registro actual en las cajas de texto y llama al procedimiento Calcular. 
422 Grupo Editorial Megabyte-^ 
CAPÍTULO X: Programación DAO 
Sub CALCULARO 
Label9=Format(Val(Text2) *18/100, "###,##0.000") 
lflsNioneric(Text2)TheiiLabell0=Fomat{CDec{label9)+CDec(Text2), "###,##0.000") 
¡fIsNianeric(Text3)Then Labelll=Fonnat(CDec(LabeU0)*CDec(Text3yi00, “###,##0.000") 
Labell2=Fomiat(CDec(LabeU0)+CDec(labelll), “###,##0.000") 
End Sub 
NOTA : L a fu n c ió n Cdec, c o n v ie rte un v a lo r a D e c im a l. 
Instrucciones del evento Form_Load 
Prívate Sub Form_Activate() 
Set DB = OpenDatabase( “C:MIS DOCUMENTOSWENTAS ”) 
Set RS = DB.OpenRecordset( “PRODUCTOS”, dbOpenDynaset) 
ACTUALIZAR,COMBO 
Frame l.Enabled = Falsea 
MUESTRA 
End Sub 
Instrucciones del Botón Grabar 
Prívate Sub Command¡_Click() 
On Error GoTo INFORMA 
RS(0) = Textl 
RS(1) = CDec(Text2) 
RS(2) = CDec(Text3) 
RS(3) = CDate(Text4) 
RS. Update 
A CTUALIZAR JCOMBO 
ACTIVAR 
Exit Sub 
¡NFORMA: 
MsgBox “No Se Pueden Grabar”, 64, 
“Verifique” 
End Sub 
Instruc. del Botón Cancelar 
Prívate Sub Command2_Click() 
Textl = XNOMBRE 
Text2 = XVALOR 
Text3 = XUTILIDAD 
Text4 = XFECHA 
ACTIVAR 
End Sub 
Instruc. del Botón Adicionar 
Prívate Sub Command3_Click() 
RS.AddNew 
DESACTIVAR 
XNOMBRE = Textl 
XVALOR = Text2 
XUTILIDAD = Text3 
XFECHA = Text4 
DESACTIVAR 
Textl = 
Text2 - 0 
Text3 = 0 
Text4 = Date 
Textl.SetFocus 
End Sub 
Instruc. del Botón Modificar 
Prívate Sub Command4_Click() 
RS.Edit 
DESACTIVAR 
XNOMBRE = Textl 
XVALOR = Text 2 
XUTILIDAD = Text3 
XFECHA = Text4 
Textl.SetFocus 
End Sub 
Instrucciones del Botón Eliminar 
Prívate Sub CommandS_Click() 
IfMsgBox("ESTA SEGURO DE ELIMINAR ESTE PRODUCTO", 36, "CUIDADO")- 6 Tlien 
RS.Delete 
CommandSjClick 
E n d lf 
ACTUALIZARJCOMBO 
End Su 
G r u p o E d i t o r i a l Megabyte 423
VISUAL BASIC como debe ser... 
Instruc. del Botón Siguiente 
Prívate Sub Command6_Click() 
RS.MoveNext 
IfR S.E O F Then 
M sgB ox”Ultimo registro”, 64, “Cuidado’ 
RS.MovePrevious 
Else 
MUESTRA 
E n d lf 
End Sub 
Instruc. del Botón Primero 
Prívate Sub Command8_Click() 
RS.MoveFirst 
MUESTRA 
End Sub 
Instruc. del Botón Anterior 
Prívate Sub Command7_Click() 
RS.MovePrevious 
IfRS.BO F Then 
MsgBox “Primer registro ” , 64, 
“Cuidado" 
RS.MoveNext 
Else 
MUESTRA 
E n d lf 
End Sub 
Instrucciones del Botón Ultimo 
Prívate Sub Command9_Click() 
RS.MoveLast 
MUESTRA 
End Sub 
Instrucciones del Control Combol (Evento Change) 
Prívate Sub Combol_Change() 
Dim C A í String 
C = “[NOMBRE DEL PRODUCTO] LIKE “‘ + Combol + 
RS.FindFirst C 
MUESTRA 
End Sub 
Instrucciones del Control Combol (Evento Click) 
Prívate Sub Combo 1 _Click() 
C om bol jC hange 
End Sub 
Instrucciones del evento Change de Text2 y text3. 
Estas instrucciones llaman al procedimiento Calcular para que al ingresar o modificar 
el Valor de Compra y la Utilidad se muestren inmediatamente los resultado. 
Prívate Sub Text2_Change() 
CALCULAR 
End Sub 
Prívate Sub Text3_Change() 
CALCULAR 
End Sub 
Instrucciones del Botón Salir 
Prívate Sub CommandlO_Click() 
RS. Cióse 
DB. Cióse 
End 
End Sub 
424 G r u p o E d i t o r i a l Megabyte < 
CAPÍTULO X: Programación DAO * € ¡¡¡¡1 
C O N T R O L M SFL E X G R ID 
El M sF le xg rid es un co ntrol que perm ite m ostrar inform a ción de una o mas 
tablas en form a de listado sim ila r al co ntrol D B g rid . Se diferencian porque 
el M s fle x g rid perm ite trabajar usando el control Data y con la program ación 
D A O , en cam bio el D B g rid sólo trabaja con el control Data. Si va a u tiliz a r 
el M s fle x g rid con un c o n tro l Data, sólo le debe asignar la propiedad 
DataSource. O tra diferencia entre estos es que el M s fle x g rid no perm ite 
m o d ific a r los registros que muestra (sólo de lectura), pero perm ite ordenar 
y realizar cálculos con los datos. En la ventana de componentes este control 
se llam a M ic ro s o ft F le xG rid C ontrol. 
Sus principales propiedades son: 
ALLOW BIGSELECTION 
Indica si al hacer un c lic k en el encabezado de la fila o colum na se selecciona 
todo su contenido. 
ALLOWUSERRESIZING 
Indica si el usuario puede m od ifica r el tamaño de las filas y/o columnas. Los 
valores que se le puede asignar son: 
0 N o perm ite m o d ifica r 
1 Perm ite m o d ifica r el tamaño sólo de las columnas. 
2 Perm ite m o d ifica r el tamaño sólo de las filas. 
3 Perm ite m o d ifica r el tamaño de fila s y columnas. 
BACK CO LO R 
A signa el c o lo r de fondo para todas las celdas no fijas. 
BACK CO LO RBK G 
A signa el c o lo r para el fondo del control. 
BACKCOLORFIXED 
A signa el c o lo r de fondo para las filas y colum nas fijas 
BACKCOLORSEL 
A signa el c o lo r de fondo para las celdas seleccionadas. 
COL 
Selecciona la colum na de una celda. Esto se realiza dentro de un programa. 
COLALIGNM ENT 
Establece cóm o se deben alinear los datos en una colum na. Los valores que 
puede tom ar son: 
0 izquierda 1 A line a ció n derecha 2 Centrado 
Por ejem plo, la siguiente instrucción muestra en el centro los datos de la 
colum na N °2 . 
M SFlexGridl .ColAlignment(2) = 3 
G r u p o E d i t o r i a l Megabyte 425
VISUAL BASIC como debe ser. . . 
C O L W ID T H 
Asigna un ancho a una colum na. Por ejem plo la siguiente instrucción asigna 
un ancho de 500 tw ips a la colum na núm ero 1. 
MSFlexGridl. ColWidtli(1) = 2000 
C O L S 
In dica la cantidad de columnas que debe tener el control. 
D A T A S O U R C E 
Se u tiliz a cuando trabajamos con un co ntrol Data y perm ite ind icar la tabla 
cuyo contenido queremos m ostrar en este control. 
F IX E D C O L S 
índica la cantidad de columnas fija s que debe tener este co ntrol. E l valor 
que se indique debe ser m enor que la cantidad de columnas. 
F IX E D R O W S 
Indica la cantidad de fila s fijas que debe tener este control. E l v a lo r que se 
indique debe ser m enor que la cantidad de filas. 
F O R E C O L O R 
A signa el co lo r de las letras de todas las celdas no fijas. 
F O R E C O L O R F IX E D 
A signa el c o lo r de las letras para las fila s y colum nas fija s 
F O R E C O L O R S E L 
A signa el c o lo r de las letras de las celdas seleccionadas. 
F O R M A T S T R IN G 
A signa un form a to para las filas y colum nas fijas. En este form ato se puede 
in d icar el tamaño de las celdas, su alineación y el texto que deben visualizar. 
E l form a to de cada colum na se debe separar por el carácter A L T + 124 (|). 
A l in ic io de cada form a to puede e scribir los caracteres de alineación < 
(Izquierda), A (C entro) o > (Derecha). Tam bién puede escribir un punto y 
com a el cual ind ica que el texto form a to será para las filas, en éstos casos 
ya no se usan los caracteres de alineación. 
Ejemplo: 
Las siguientes instrucciones asignan un form a to para las colum nas. Los 
nombres se visualizarán alineados por la izquierda, el teléfono en el centro y 
el sueldo a la derecha. Los espacios que se dejan en blando indican el ancho 
para cada colum na. 
F = "< N O M B R E S |A T E L E F O N O > S U E L D O " 
M S F le x G rid l. F o n n a tS tñ n g = F 
G R ID C O L O R 
A signa un co lo r para las lineas no fija s del co ntrol. Por ejem plo, la siguiente 
instrucción asigna el c o lo r azul a las lineas no fija s del M s fle x g rid l. 
M S F le x G r id l .G rid C o lo r = R G B (0, 0, 255) 
G R ID C O L O R F IX E D 
A signa un co lo r para las líneas fija s del control. 
CAPÍTULO X: Programación DAO *111111^ 
M E R G E C E L L S 
Permite que las celdas con el m ism o contenido se puedan agrupar. Para ello 
debe de ordenar las fila s o columnas. Esta propiedad se u tih z a ju n to con las 
propiedades M argeC ol y M ergeRow. 
Los valores que puede tener son: 
T E X x l l ^ Y L E ^1'3re ^ Restrin2e ^ ^ as 3 Restringe las columnas 4 Restringe ambas 
Establece el estilo de las letras de las celdas no fijas. 
M E R G E C O L 
P erm ite in d ic a r qué c o lu m n a se debe agrupar. P or e je m p lo, para in d ic a r 
que se agrupen los re g istro s p or la 2do. C o lu m n a (cam po ) se escribe 
M s fle x g rid 1 .C o l(2 ) = True 
M E R G E R O W 
Permite ind icar qué fila se debe agrupar. 
R O W H E IG H T 
Establee la altura de una fila . Por ejem plo la siguiente instrucción asigna 
una altura de 500 tw ips a la fila núm ero 1 
M S F le x G r id l .R o w H e ig h t(l) = 5 0 0 
S C R O L L B A R S 
Permite asignar una barra de desplazamitno que se visualizará cuando los datos no 
alcancen en el tamaño asignado al control. Los valores que se le pueden asignar son: 
0 N inguna 1 H orizontal 2 V ertical 3 Am bas 
S O R T 
Indica la form a de ordenar los datos mostrados en el control. Para indicar la 
columna por la cual se deben ordenar, debe u tiliza r la propiedad Col. Los valo­res 
que puede tom ar son: 
0 Ninguna 
0 Genérica ascendente 
1 Genérica descendente 
3 N um érica ascendente. C onvierte las cadenas a números 
4 N um érica descendente 
5 Cadena ascendente. N o distingue mayúsculas y m inúsculas 
6 Cadena descendente. N o distingue mayúsculas y m inúsculas 
7 Cadena ascendente. D istingue mayúsculas y m inúsculas 
8 Cadena descendente. D istingue m ayúsculas y m inúsculas 
Por ejem plo, las siguientes instrucciones ordenan los datos por la segunda 
colum na en form a ascendente. 
M s F le x g r id l .C o l = 2 
M s F le x e r id l.S o r t = I 
T E X T 
Perm ite obtener el contenido de la celda activa o asignarle un valor. Por 
ejem plo, las siguientes instrucciones asignan el texto “ In fo rm a ció n ” a la 
celda de la colum na 2 y fila 1. 
M S F le x G r id l .C o l = 2 
M S F le x G r id l .R o w = 1 
M S F le x G r id l .T ext = "In fo rm a ció n " 
G r u p o E d i t o r i a l Megabyte 4 2 7 W »
||> VISUAL BASIC como debe ser... 
TEXTMATRIX 
Perm ite obtener el contenido de una celda indicada por el num ero de fila y 
columna. Por ejem plo, la siguiente instrucción muestra en Label 1 el conteni­do 
de la celda de la fila 2 y colum na 1. 
L a b e l 1 = M S F le x G r id l .T extM atrix(2, 1) 
TEXTSTYLEFIXED 
Establece el estilo de las letras de las celdas fijas. 
Los valores que se les puede asignar a las propiedades anteriores son: 0 
texto norm al, 1 R elieve, 2 In cru sta d o ,3 R elieve con som breado y 4 
In c ru sta d o c o n so m b rea d o . 
WORDWRAP 
Acepta un valor True o False que indica si el texto de una celda se puede truncar 
entre dos palabras o si una palabra se extenderá pasado el borde de la celda. 
MÉTODOS DEL CONTROL MSFLEXGRIP 
ADDITEM 
Perm ite adicionar fila s al co ntrol M sF le xgrid. 
Su sintaxis es: M s F le x g rid .A d d ite m (“T exto ", P o sició n ) 
T exto es el texto de desea alm acenar en la fila que adiciona. En form a 
predeterm inada, este texto se coloca en la prim era colum na (Izquierda). Si 
deseamos adicionar texto a diferentes colum nas al m ism o tiem po, se debe 
u tiliz a r el carácter de salto de colum na: V B T A B . 
P o sició n es un va lo r opcional que ind ica dónde se va a adicionar la nueva 
fila . N i no lo indica, la nueva fila se ubica al fin a l del control. 
CLEAR 
B orra la in form a ción m ostrada en el co ntrol, pero no el num ero de fila s y 
colum nas que contiene. Por ejem plo: M sF le x g rid .C le a r. 
M OVE 
M ueve el co ntrol a una nueva posición en la pantalla. 
Su sintaxis es: 
M sF le xg rid .M o ve C olum na, Fila, A ncho, A lto 
C olum na: es un v a lo r que ind ica la posición horizontal donde deseamos 
ubicar el control. 
F ila: es un v a lo r que indica la posición ve rtica l donde deseamos ubicar el 
control. 
A n ch o , es un v a lo r o pcional que ind ica el nuevo ancho del objeto. 
A lto , es un va lo r opcional que indica el nuevo alto del objeto. 
REM OVEITEM 
Borra toda una fila del control. 
Su Sintaxis es: 
M sF lexgrid.R em oveltem Valor 
D onde va lo r indica qué núm ero de fila desea borra. 
428 G r u p o E d i t o r i a l Megabvte 
CAPÍTULO X: Programación DAO 
A P L IC A C IÓ N D E SA R R O L L A D A N° 62 
Con la misma base de datos y tabla anterior, desarrollar el siguiente programa: 
AÑO DE VENCIMIENTO PORCENTAJE DE DESCUENTO 2 
N* PRODUCTO 1 V. COMPRAI UTILIDAD % VENCIMIENTO ll.G .V. | p COMPRA UTILIDAD SA P. VENTA 
1 TRIGO 25.00 5.00 * 12-12-2001 4 50 29.50 1.48 30.98 
2 CAFE 15.00 65.00 * 10-10-2000 2.70 17.70 11.51 29.21 
__ 3 FRIJOLES 25 00 1 0 .0 0 * 31-12-2005 4.50 29.50 2.95 32.45 
4 LECHE 8.00 2.00 X 16-09-1999 1.44 9.44 0.19 9.63 
5 ARROZ 100.00 1 0 . 0 0 * 30-09-2001 18.00 118.00 11.80 129.8 
6 AZUCAR 86 00 50.00 * 16-08-2003 15.48 101.48 50.74 152.22 
__ 7 ALGODON 260.00 15.00 % 31-12-2005 46.80 306.80 46.02 352.82 
8 ACEITE 36.00 1 0 .0 0 * 01-01-2001 6.48 42.48 4.25 46.73 
PARA ORDENAR. HAGA CLICK EN LA COLUMNA QUE DESEA 
Este programa muestra todos los campos de la tabla productos y los siguientes 
campos calculados: IG V (18% del Valor de Compra), Precio de Com pra (IG V 
+ Valor de Compra), U tilid a d en Soles (Precio de Compra por el Porcentaje de 
U tilidad entre 100) y el Precio de Venta (Precio de Compra + U tilidad en 
soles). También ordenar los registros por el campo donde se haga click, además 
debe mostrar sólo los productos que se vencen en un año ingresado o los que 
tienen un determinado porcentaje de utilidad. 
Esta aplicación está desarrollada en una nueva aplicación. Si usted, desea de­sarrollarla 
en la misma aplicación anterior (Form2), entonces debe de declarar 
las variables D B y RS en un m ódulo con la palabra P U B LIC y el evento Form 
Actívate del form ulario volver a abrir la base de datos y la tabla. 
A q u í se u tiliza el m étodo F ind N e xt que perm ite buscar el siguiente registro 
que cumpla una condición. Es algo sim ilar a Findfirst, FindLast y FindPrevious 
que buscan el prim ero, u ltim o y anterior registro que cum ple una condición 
respectivamente. Tam bién se da ejem plos de cóm o m anipular un objeto 
Recordset. 
PASO NH LDIBUJAR LOS CONTROLES. 
Jíex*1 Commendi | La b e C |Text2 Command2 | 
■ K m 
Label3 
Command4 
G r u p o E d i t o r i a l Megabyte 429
^ É iilÉ l* VISUAL BASIC como debe ser. . . < E 5 § 
PASO N° 2:ASIGNAR LAS PROPIEDADES A LOS CONTROLES 
Asígneles la propiedad C aption a las etiquetas y botones de comandos y 
F orm ulario, com o se muestra en la aplicación a desarrollar. 
PASO N°3:ESCRIBIR LAS INSTRUCCIONES PARA LOS CONTROLES 
Primero declare las variables en la ventana de declaración del formulario. Si va a 
utilizar varios formularios, declárelas en la ventana de declaración del Módulo. 
Public DB As Database 
Public RS A i Recordset 
Dim IGV, PCOMPRA, USOLES, PVENTAAs Single 
Dim E As String 
C rear el procedim iento L L E N A R . Este procedim iento muestra los registros 
de la tabla productos en el control M S F L E X G R ID 1 . 
Sub LLENARO 
M S F le x G rid l .Clear 
M S F le xG rid 1 .Cois = 1 
M S F le x G rid l.R o w s = 1 
Rem Escriba la siguiente instrucción en una sola línea. 
M S F lexG rid 1 .Form atString= “ N°J Productob V. Compra | Utilidad% | Vencimientol 
I.G.V. I P.Compra I Utilidad S/. I P. Venta” 
R S .M o veF irst 
E = vbTab ‘ A signa el carácter salto de colum na a la variable E 
D o W h ile N o t R S.EO F 
IG V = R S(1) * 1 8 / 1 0 0 
P C O M P R A = RS(1) + IG V 
U S O LE S = P C O M P R A * R S(2) / 100 
P V E N T A = P C O M P R A + U S O LE S 
IG V = F orm at(IG V , “ ###,##0.00” ) 
P C O M P R A = F orm at(P C O M P R A , “ ###,##0.00” ) 
U S O LE S = F orm at(U S O LE S , “ ###,##0.00” ) 
P V E N T A = F o rm at(P V E N T A , “ ###,##0.00” ) 
Rem Escriba la siguiente instrucción en una sola línea. 
MSFIexGridl.AddItem (MSFIexGridl.Rows & E & RS(0) & E & 
Format(RS(l), “ ###,##0.00” ) & E & Format(RS(2), “ ###,##0.00” ) & “ %” & 
E & RS(3) & E & IGV & E & PCompra & E & Usóles & E & Pventa) 
R S .M o veN ext 
L oo p 
R S .M o veF irst 
End Sub 
Instrucciones del evento Form Actívate 
P r ív a te S u b F o rm _ A c tiv a te () 
S e t D B = O p e n D a ta b a s e (“C :M IS D O C U M E N T O S W E N T A S ”) 
S e t R S = D B .O p e n R e c o rd se tf “P R O D U C T O S ”, d b O p e n D y n a se t) 
R e m M u estra n los d a to s en el M sF le x g rid 
L L E N A R 
E n d S u b 
4 3 0 G r u p o E d it o r ia l M e g a b y t e '^ j § ||f || 
CAPÍTULO X: Programación DAO i 
Instrucciones del Primer botón O K 
Private Sub Com m and l_ C lic k () 
I f Is N u m e ric (T e x tl) Then 
Set RS = DB.OpenRecordset(“ SELECT * FR O M PRODUCTOS W HERE 
Y E A R ([F E C H A D E V E N C IM IE N T O ]) = “ + T e x tl) 
I f R S.RecordCount > 0 Then 
M S F le xG rid 1 .V isib le = True 
L L E N A R 
Else 
M S F le x G rid l. V isib le = False 
End I f 
End I f 
End Sub 
Instrucciones del Segundo botón O K 
P riv a te S u b C o m m a n d 2 _ C lic k () 
I f IsN u m eric(T ext2 ) Then 
M S F le x G r id l .C le a r 
M S F le x G rid l .C o ls = 1 
M S F le x G r id l .R o w s - 1 
R em E scrib a la sig u ien te instrucción en una so la línea. 
M S F lexG rid l.F o m ia tS trin g - “N°Producto |> V.CompraUtilidad%  Vencimiento 
I.GV. | P.Compra  UtilidadS/.  P. Venta" 
R S .M o v e F irst 
E — vbTab ‘A sig n a el ca rá cter salto de co lu m n a a la variable E 
D o W hile N o t R S .E O F 
R S .F in d N ext “[P O R C E N T A JE D E U T IL ID A D ] = “ + Text2 
I f N o t R S .N o M a tc h T h e n 
IG V = R S (1 ) * 1 8 / 1 0 0 
P C O M P R A = R S (1 ) + IG V 
U SO L E S = P C O M P R A * R S(2) / 100 
P V E N TA = P C O M P R A + U SO LES 
IG V = F orm at(lG V , “# # # ,# # 0 .0 0 ") 
P C O M P R A = F orm at(P C O M P R A , “# # # ,# # 0 .0 0 ”) 
U SO L E S = F o n n a t( U SO LES, “# # # ,# # 0 .0 0 ”) 
PVE N TA = F orm atfP V E N TA , “# # # ,# # 0 .0 0 ”) 
R em E scriba la sig u ien te instrucción en una sola línea. 
MSFlexGridl.Addltem (M SFIexGridl.Rows&E& R S(0)& E & 
Fommt(RS(l), “###,##0.00”) & E& Fonnat(RS(2), “###,##0.00”)& “%"& 
E & RS(3) & E & IGV& E & PCompra & E & Usóles & E& Pventa) 
E n d l f 
R S .M o veN ext 
L oop 
R S .M o v e F irst 
E n d l f 
E n d S u b 
G r u p o E d i t o r i a l Megabyte 431 ¿ w m
^Éü^ÉÉ» VISUAL BASIC como debe ser... 
Instrucciones del botón TODOS 
P rív a te S u b C o m m a n d 3 _ C lic k () 
T extl = 
M S F le x G rid l .V isible = True 
S et R S = DB. O penR ecordset( “S E L E C T * F R O M P R O D U C T O S ”) 
L L E N A R 
E n d S u b 
Instrucciones del control M sFlexG ridl 
Estas instrucciones ordenan los registros por el campo donde el usuario hace 
C lick. Cuando se elige el campo tipo fecha se utiliza una instrucción SQL. 
P rív a te S u b M S F le x G r id l jC lic k ( ) 
I f M S F le x G rid l. C ol = 4 Then 
Sa¡^M O [xM urd^‘‘SEUrr*mOMPIUXJCWS(MmBY[FECHADEVENCMENRjr) 
L L E N A R 
E lse 
M S F le x G r íd l .S o rt = 1 
E n d I f 
E n d S u b 
Instrucciones del botón SALIR 
P rív a te S u b C o m m a n d 4 _ C lic k () 
RS. C ióse 
DB. C ióse 
E n d 
E n d S u b 
CREA TUS PROPIAS BA SE DE DATOS Y 
ESCRIBE LOS PROGRAMAS PARA 
MANEJAR SU INFORMACIÓN 
EN C O M P U T A C IÓ N , E L MEJOR 
PR O FESO R ES: 
« LA PRÁCTICA » 
432 G r u p o E d i t o r i a l Megabyte " 
CAPITULO X: Programación DAO m 
OTRAS INSTRUCCIONES SQL 
La instrucción S E LE C T tam bién puede utilizarse con las palabras G roup 
By y H aving. 
GROUP BY 
Perm ite agrupar los registros por uno a más campos de la tabla o consulta. 
Se puede u tiliz a r con las funciones: 
AVG 
SUM 
COUNT 
MAX 
M IM 
STDEV 
STDEVP 
VAR 
VARP 
O btiene la m edia aritm ética de los valores de un campo. 
O btiene la suma de los valores de un campo. 
Cuenta un conjunto de registros. 
D evuelve el valor m áxim o de un conjunto de registros. 
D evuelve el va lo r m ínim o de un conjunto de registros. 
Devuelve n estimaciones de la desviación estándar de una muestra. 
D evuelve n estimaciones de la desviación estándar de una po­blación. 
D evuelve n estimaciones de la varianza de una muestra. 
D evuelve n estimaciones de la varianza de una población. 
HAVING 
Perm ite seleccionar los registros agrupados que desea visualizar porque 
en estos casos no se puede u tiliz a r la palabra W here. 
Teniendo en cuenta la base de datos llamada TIENDA y sus tablas Vendedores y 
Ventas cuyas estructuras se indicaron en el capítulo anterior, se muestran los 
siguientes ejemplos: 
Contenido de la tabla Ventas 
Contenido de la 
tabla Vendedores 
CODIGO NOMBRE ¡TELEFONOI 
005 DANTE MILLAN ^666364 
004 JORGE CASTRO 201665 
001 JULIO DAVILA 232426 
003 NOEMI MONTANO Í242126 
002 TERESA UBILLUS 362166 
CODIGO FECHAVENTA MONTO IDISTRITOVENTA 
001 03-01-2000 50 í TEN 
001 10-02-2000 50 J.L.O. 
001 22-02-2000 600 TUMAN 
002 22-10-1999 100 POMALCA 
002 25-12-1999 250 LA VICTORIA 
002 06-01-2000 100 J.L.O. 
002 02-02-2000 100 POMALCA 
002 05-02-2000 50 POMALCA 
004 22-10-1999 200 LA VICTORIA 
004 22-10-1999 100 J.L.O. 
004 22-10-1999 20J.L.O. 
004 15-02-2000 200 LA VICTORIA 
004 22-10-1999 60 MONSEFU 
005 06-01-2000 600 REQUE 
005 01-02-2000 200 MONSEFU 
005 22-10-1999 250 REQUE 
005 04-01-2000 150 POMALCA 
G r u p o E d i t o r i a l Megabyte 433
VISUAL BASIC como debe ser... 
L a siguiente instrucción une de las dos tablas: 
Select * From Vendedores Inner Join Ventas On Vendedores.Codigo= Ventas.Codigo 
VENDED0RES.C0DIG0 1 NOMBRE 1 TELEFONO |VENTAS.C0DIG0| FE CHAVEN TA MONTOlDISTRITOVENTA | 
001 JULIO DAVILA 232426 001 03-01-2000 50ETEN 
001 JULIO DAVILA 232426 001 10-02-2000 50 J.L.O. 
001 JULIO DAVILA 232426 001 22-02-2000 600 TUMAN 
002 TERESA U6ILLUS 362166 002 05-02-2000 50 POMALCA 
002 TERESA UBILLUS 362166 002 06-01-2000 100 J.L.O. 
002 TERESA UBILLUS 362166 002 25-12-1999 250 LA VICTORIA 
002 TERESA UBILLUS 362166 002 02-02-2000 100 POMALCA 
002 TERESA UBILLUS 362166 002 22-10-1999 100 POMALCA 
004 JORGE CASTRO 201665 004 22-10-1999 100 J.L.O. 
004 JORGE CASTRO 201665 004 22-10-1999 20 J.L.O. 
004 JORGE CASTRO 201665 004 15-02-2000 200 LA VICTORIA 
004 JORGE CASTRO 201665 004 22-10-1999 60 MONSEFU 
004 JORGE CASTRO 201665 004 22-10-1999 200 LA VICTORIA 
005 DANTE MILLAN 666364 005 22-10-1999 250 REQUE 
005 DANTE MILLAN 666364 005 06-01-2000 600 REQUE 
005 DANTE MILLAN 666364 005 04-01-2000 150 POMALCA 
005 DANTE MILLAN 666364 005 01-02-2000 200 MONSEFU 
Desarrolle los siguientes ejercicios sabiendo que la consulta anterior 
se llama INFORME. 
1. M ostra r el nom bre de cada vendedor, la cantidad de ventas realizadas y 
el total vendido ordenados alfabéticam ente. 
SFli3Crl’N(3MBRfiCDUNT(NOMBRE)ASCANTTDAD,SUMfMON'ID)AS'IürALJ 
F R O M I N F O R M E G R O U P B Y N O M B R E O R D E R B Y SUM(MONTO) 
Resultado 
NOMBRE 1 CANTIDAD TOTALI 
JORGE CA5TRO „5 580 
TERESA UBILLU5 5 600; 
JULIO DAVILA 3 700 
DANTE MILLAN 4 1200 
2. M ostra r el nom bre de cada vendedor, la cantidad de ventas realizadas y 
el total vendido, ordenados alfabéticam ente, pero sólo los que vendieron 
más de 650 soles. 
SELECTNOMBRECOUNT(NOMBRE)ASCANTIDAD,SUM(MONTO)ASTOTALFROM 
INFORME G R O U P B Y N O M B R E HAVINGSUM(MONTO)>650ORDERBYSUM(MONTO) 
Resultado 
NOMBRE CANTIDAD 1 TOTAL! 
JULIO DAVILA 3 700 
DANTE MILLAN 4 1200 
434 G r u p o E d it o r i a l Megabyte 
CAPÍTULO X: Programación DAO 
3. M ostrar el número del mes, la cantidad de ventas y el total en soles 
vendidos en cada mes, pero sólo del año 2000. 
SEI^iCTMONIH(FECHAVENTA)ASMES,aDUNT(MONTH(FECmVENrrA))ASCANTIDAD, 
S U M (MONTO) AS TOTAL F R O M INFORME GROUPBYMONTH(FECHAVENTA), 
YEAR(FECHAVENTA)HAVINGYEAR(FECHAVENTA)=2(XX) 
Resultado 
MES CANTIDAD 1 TOTALI 
1 4 900 
2 6 1200; 
4. Mostrar el nombre y total vendido de los 2 vendedores que más han vendido. 
SEUEOTOPNOMBRESUM(MONTO)AS[TOIALVENDIDO] FROM INFORME 
G R O U P B Y N O M B R E O R D E R B Y SUM(MONTO)DE¡SC 
Resultado 
NOMBRE TOTAL VENDIDO 1 
DANTE MILLAN 1200 
5. 
JULIO DAVILA 700 
M ostrar el totar vendido p o r cada vendedor en cada d istrito incluyendo 
la cantidad de ventas realizadas y el prom edio de venta obtenido. 
SELECTNOMBREDISrRITOVENIA3UM(MONTO)AS [TUIALVIÍNDIDO], 
COUNT(MONTO)ASCANT[DAD,FORMAr(AVG(MONTO),"###,##0.00") 
ASPROMEDIOFROMINFORMEGROUPBYNOMBREJDISTRITOVENTA 
Resultado 
NOMBRE IDISTRITOVENTA TOTALVENDIDOl CANTIDAD 1 PROMEDIO 
► DANTE MILLAN MONSEFU 2 0 0 ] 1 200.00 
DANTE MILLAN POMALCA Í5 0 ¡ 1 150.00 
DANTE MILLAN REQUE 850 2 425.00 
JO RGE C A S TR O J .L .O . 120 2 60.00 
JO RGE C A 5 TR O L A VICTO R IA 400 2 200.00 
JO RGE CA S TR O MONSEFU 60 1 60.00 
JU LIO DAVILA ETEN 50 ; 1 50.00 
JU LIO DAVILA J .L .O . 50 1 50.00 
JU L IO DAVILA TUMAN 600 1 600.00 
TERESA UBILLUS J .L .O . 100 1 100.00 
TERESA UBILLUS LA VICTO R IA 250 1 250.00 
TERESA UBILLUS POMALCA 250 3 83.33 
6 . M o stra r el nom bre del vendedor, año de las ventas, to ta l vendido 
observación, co m isión en porcentaje y com isión en soles. Se debe 
visualizar el total vendido por cada vendedor sólo del año 2000, una 
observación que indique cum plió o no la venta m ínim a (650 soles), además 
debe, m ostrar la com isión en porcentaje y e soles que le corresponde. 
SelectNombre, Year(Fechaventa)As Año,Sum(Monlo)AsTotal,lifiTotal <650,"NoCumplio La Venia 
Minima'V’SiCumplió La Venta Minima") As Observación, Iif(Total<650,"0%"Jit(Total>=650AndTota! 
<800,"5%","10^ "))As[ComLsion %!Jif(TotaI>=652AndTotal<800,Total*5/100,Total *l(V100)As 
[ComisionEn Soles] FromInfoimeGroupByNombre,YeaitFechaventa)HavingYear(Fechaventa)=2000 
Resultado 
NOMBRE 1 AÑOl TOTALl OBSERVACION 1 COMISION X 1 COMISION EN SOLES 
DANTE MILLAN 2000 950 SI CUMPLIO LA VENTA MINIMA 10% 95 
JORGE CASTRO 2000 200 NO CUMPLIO LA VENTA MINIMA 0% 20 
JULIO DAVILA 2000 700 SI CUMPLIO LA VENTA MINIMA 5% 35 
TERESA UBILLUS 2000 250 NO CUMPLIO LA VENTA MINIMA 0% 25 
§ |§ |^ G r u p o E d it o r ia l Megabyte 435
éS S N fr VISUAL BASIC como debe ser. 
A PL IC A C IÓ N D ESA R R O LL A D A N° 63 
C o n la m i s m a base de 
datos y tabla anterior, 
desarrollar un 
programa de listado y 
estadística para los 
v e n d e d o r e s y sus 
ventas realizadas. Los 
programas se deben 
llamar mediante un 
m e n ú de opciones: 
<*, PROGRAMAS DE USTADO Y ESTADISTICA 
i 1E3 «»HE1 E S TAD ISTIC A 
VEN D ED O R ES 
VENTAS 
VEN D ED O R ES Y VEN TA S 
COMISIONES 
>E LAS VENTAS REALIZADAS 
1 FE CHAVEN T A | M O NTO | - | 
1 002 25-12-1999 250 _ J 
2 005 04-01 -2000 150 
3 001 03-01-2000 50 
4 002 06-01 -2000 100 
5 00c 06-01 -2000 600 
6 004 15-02-2000 200 
7 
L lU 
001 10-02-2000 
CANTIDAD DE REGISTROS MOSTRADOS 
fe PROGRAMAS DE USTADO Y ESTADISTICA 
LISTADOS ESTADISTICA 
TOTAL POR VENDEDOR 
TOTAL POR DISTRITO 
TOTAL POR VENDEDOR Y DISTRITO 
N VENDEDORES CON MAS VENTAS 
LIZADAS 
I I U f l M T D I . I 
— I DISTRITO CON MAYOR VENTA i n o SEGUN EL MONTO 
MONTO TOTAL VENDIDO SEGUN LA CANTIDAD 
CANTIDAD TOTAL DE VENTAS bc»o 50 
4 002 06-01-2000: 100 
5 005 06-01 -2000 600 
6 004 15-02-2000 200 
7 001 10-02-2000 y L l U 
CANTIDAD DE REGISTROS MOSTRADOS 
P A S O N ° 1: D IB U J A R L O S C O N T R O L E S . 
Sólo debe dibujar tres etiquetas y un MsFlexGrid. Sólo asigne propiedades a 
las etiquetas y diseñe un m e n ú c o m o se indica en la aplicación a desarrollar. 
436 G r u p o E d it o r ia l Megabyte 
v - C A P Í T U L O X: Programación DAO 
l’ASO N° 2: ESCRIBIR LAS INSTRUCCIONES PARA LOS CONTROLES. 
Definir las variables DataBase y Recordset en la ventana de declaración del 
formulario. 
Dim DB A í Database 
Dim RS A s Recordset 
Instrucciones deI evento Form Actívate 
Prívate Sub Form_Activate() 
Set DB=OpenDctabase( “C!sARCHIVOSDEPROGRAMADEVSTUDIOVIMENDA”) 
End Sub 
Instrucciones del procedimiento LLE N A R 
Sub LLENAR() 
Rem Este procedimiento llena el MsFlexgridl con los registros de la tabla activa 
Dim FORMATO, DATOS As String 
Dim NCAMPOS, XAs Byte 
NCAMPOS = RS. Fields. Count 
RS.MoveFirst 
MS FlexGridl.Rows = 1 
MSFlexGridl .Cois = 1 
Rem ASIGNA EL ENCABEZADO AL CONTROL MSFLEXGRID 
FORMATO = “ /W ° ” 
For X = 1 To NCAMPOS 
FORMATO = FORMATO & Space(15) & vbTab & RS(X - lj.Name 
N extX 
MSFlexGridl .FormatString = FORMATO 
Do While Not RS.EOF 
DATOS = MSFlexGrid l.Rows 
For X = 1 To NCAMPOS 
DATOS = DATOS & vbTab & RS(X - 1) 
NextX 
MSFlexGridl.Addltem (DATOS) 
RS.MoveNext 
Loop 
RS.MoveFirst 
Label3 = RS.RecordCount 
End Sub 
Instrucciones de la opción Vendedores. 
Prívate Sub VENDEDORES_Click() 
Labell = ‘LISTADO DE VENDEDORES" 
Set RS = DB. OpenRecordset( “ VENDEDORES ”) 
LLENAR 
End Sub 
Instrucciones de la opción Ventas. 
Prívate Sub VENTAS Clickf) 
Labell = “RELACIÓN DE LAS VENTAS REALIZADAS” 
Set RS = DB. OpenRecordsetf “ VENTAS ”) 
LLENAR 
End Sub 
G r u p o E d it o r ia l Megabyte 437 m m
VISUAL BASIC como debe ser... * • 
In stru c c io n e s d e la opción V endedores y Ventas. 
Prívate Sub VENDEDORES_VENTAS_Click() 
Labe 11 = "LISTADO DE VENDEDORES Y SUS VENTAS" 
Set RS = DB. OpenRecordset( "SELECT * FROM VENDEDORES INNER JOIN 
VENTAS ON VENDEDORES.CODIGO = VENTAS.CODIGO ’’) 
LLENAR 
End Sub 
In stru c c io n e s de la opción C om isiones. 
E sta o p c ió n m u e s tra a cada v e n d e d o r c o n su to ta l v e n d id o y la c o m is ió n que le 
c o rre s p o n d e s ó lo de las ventas re a liza d a s en e l año 2 0 0 0. S i el v e n d e d o r lle g a o no 
al m o n to de la v e n ta m ín im a (SI. 6 5 0 .0 0 ) se debe m o s tra r un m ensaje in d ic á n d o lo . 
E x is te n 2 c o m is io n e s : 5% p a ra q u ie n e s v e n d ie ro n e n tre 6 5 0 y 8 0 0 soles y 10% para 
q u ie n e s han lle g a d o o superado al m o n to de 8 0 0 soles. 
Prívate Sub COMISIONES_Click() 
La be 11 = “LISTADO DE VENDEDORES CON SUS COMISIONES" 
SetRS=DB.OpenRecordset(“SelectNombrv,Year(Fechaventa)AsAño, Suni Monto)As 
Total, lifiTotal <650, ’No Cumplió La VentaMinima’, ’Si Cumplió La Venta Mínima’) As 
Observación, IifiTotal<650, ’0% ’,Iij(Total >=650AndTotal< 800, '5% ’, ’10% ’))As 
[Comision %],IifiTotal<650,0JifiTotal>=652AndTotal < 800,Total *5/100,Total * 10/100)) 
As [Comision En Soles] From Informe Group ByNonére, Year(Fechaventa) Having 
Year(Fechaventa) = 2000") 
LLENAR 
End Sub 
In stru c c io n e s de la o pción Total p o r Vendedor. 
Prívate Sub TOTAL_VENDEDOR_Click() 
Lab el 1 = “TOTAL VENDIDO POR CADA VENDEDOR” 
Set RS= DB. Opa iReco>zlset(' ‘SELECTNOMBRE, COUNVDISTRÍIO VENTA JAS' 
CANTIDAD,SUM(MONTO)AST(JIALFROM1NFORMEGROUPBYNOMBRE”) 
LLENA 
End Sub 
In stru c c io n e s de la opción Total p o r D istrito. 
Prívate Sub TOTAL_DISTRITO_Click() 
Labell = “TOTAL VENDIDO POR DISTRITO” 
SetRS-DBOpa iRecoidset( ' SELFCW1SIKIIOrENIA COUNI¡DISIWIOVENIA) 
ASCANTIDAD, SUM(MONTO)ASTOIALFROM INFORMEGROUPBYD1STRTTOVENIA ’ ’) 
LLENAR 
End Sub 
In stru c c io n e s d e la o pción Total p o r Vendedor y D istrito. 
Prívate Sub VENDEDOR_DISTRITO_Click() 
LABEL1 = “ TOTAL VENDIDO POR CADA DE VENDEDOR Y DISTRITO ’’ 
SETRS=DB.OPENRECORDSEIJ“SELECTNOMBREDISTRrrOVENTASUM(MONrO)ASTOTAL 
FROM INFORME GROUPBYNOMBREDISIRirOVENTA ’’) 
LLENAR 
Erul Sub 
5 CAPÍTULO X: Programación DAO ^ ¡ ¡ ¡ ¡ 1 
In stru c c io n e s de la o pción N ven d ed o res c o n m á s ventas. 
Prívate Sub VENDEDORES_MAS_VENTAS_Click() 
Dim R As Integer 
¡Mbell = "LISTADO DE LOS VENDEDORES CON MAYOR VENTA" 
R - InputBox("Valor para N ", "Cantidad de Vendedores con mayor venta", 2) 
lfV a l( R ) > 0 T h e n 
Set RS = DB.OpenRecordset(“ SELECT TOP “ & R & “ NOMBRE, 
COUNT(NOMBRE) AS CANTIDAD,SUM(MONTO)AS [TOTAL VENDIDO] 
FROM INFORME GROUP BY NOMBRE ORDER BYSUM(MONTO) DESC’’) 
LLENAR 
E n dlf 
End Sub 
In stru c c io n e s de la o p ció n D istrito co n m a y o r Venta se g ú n e l m o n to . 
Prívate Sub SEGUNMONTO_Click() 
Labell = “DISTRITO(S) CON MAYOR VENTA SEGÚN EL MONTO VENDIDO ’’ 
SetRS = DB. OpenRecordset( “SELECTTOP1 DISTRITOVENTA, SUM(MONTO)AS 
[TOTAL VENDIDO] FROM INFORME GROUP BY DISTRITOVENTA ORDER BY 
SUM(MONTO) DESC”) 
LLENAR 
End Sub 
In stru c c io n e s d e la o p ció n D istrito c o n m a y o r Venta se g ú n la cantidad. 
Prívate Sub SEGUNCANTIDAD_Click() 
Labell = “DISTRITO(S) CON MAYOR VENTA SEGÚN LA CANTIDAD VENDIDA ” 
Set RS = DB.OpenRecordset(“SELECT TOP 1 DISTRITOVENTA, COUNT 
(DISTRITOVENTA) AS CANTIDAD FROM INFORME GROUP BY DISTRITOVEN1A 
ORDER BYCOUNT( DISTRITOVENTA) DESC”) 
LLENAR 
End Sub 
In stru c c io n e s de la o p ció n M o n to to ta l vendido 
Prívate Sub MONTOTOTAL_Click() 
SetRS = DB.OpenRecordset( “SELECT SUM(MONTO) FROM INFORME”) 
MsgBox “LA SUMA TOTAL E S: S/. ’’ & RS(0), 64, “MONTO TOTAL VENDIDO ” 
End Sub 
In stru c c io n e s de la o pción C a n tid a d to ta l d e ventas 
Prívate Sub CANTlDADTOTAL_Click() 
Set RS = DB. OpenRecordsetf “SELECT COUNTf MONTO) FROM INFORME ”) 
Msgbox “Se Han Realizado “ & Rs(0) & “ Ventas En Total”,64 “Cantidad De Ventas’’ 
End Sub 
^üjjj^ G ru p o E d i t o r i a l M egabyte 439 ^ i¡ ¡ ||¡ ¡ ||
VISUAL BASIC como debe ser... 
C O N T R O L M SC H A R T 
Este control perm ite m ostrar inform a ción a través de gráficos. Sus principa­les 
propiedades son: 
CHARTTYPE 
Indica el tipo de g ráfico para representar la inform ación. 
CO LUM N 
A c tiv a una colum na del gráfico. 
CO LUM NCO UNT 
Indica la cantidad de colum nas que debe tener el gráfico. 
CO LUM NLABEL 
A signa un títu lo para una colum na. Se muestra en la leyenda. 
DATA 
Alm acena el va lo r que se desea representar en form a gráfica. 
FOOTNOTETEXT 
A signa un texto para el pie de página del gráfico. 
RANDOM FILL 
In dica si los valores a representar se llenan al azar. 
ROW 
A c tiv a una fila del gráfico. 
ROWCOUNT 
Indica la cantidad de fila s que debe tener el gráfico. 
ROWLABEL 
Indica un títu lo para cada fila del gráfico. 
SHOWLEGEND 
Acepta un va lo r lóg ico que ind ica visua liza r o no la leyenda. 
TITLETEXT 
A signa el títu lo p rin c ip a l para el gráfico. 
A P L IC A C IÓ N D E SA R R O L L A D A N° 64 
M o d ific a r la a p lica ció n a n te rio r de tal m anera que tenga un botón de 
comandos para que cuando se muestre la cantidad vendida por Vendedor po 
por D is trito se tenga la opción de m ira r la inform a ción a través de un gráfico. 
L I S T A D O S E S T A D I S T I C A 
h r O T A L V E Ñ D I Ò Ó P O R C A D A V E N D E D O R 
N O M B R E _____________I C A N T I D A D 
D A N T E M I L L A N | 4 1 2 0 0 
J O R G E C A S T R Ó 5 5 8 0 
J U L I O D A V I L A 3 7 0 0 
T E R E S A U B I L L U S ___________________ 5 6 0 0 
C A N T ID A D DE R E G I S T R O S M O S T R A D O S 
V E R G Á F I C O I 
440 G r u p o E d i t o r i a l Megabyte' 
CAPITULO X: Programación DAO 
Para desarrollar esta aplicación adicione un nuevo formulario a la aplicación y 
dibujar en él un botón de comandos y control SSTAB con sólo dos página con un 
control Mschart cada una. 
INSTRUCCIONES DEL BOTON VER GRAFICO D EL FO R M U LAR IO Nü 1. 
Prívate Sub Commandl_Click() 
Dim X A s Integer 
With Form2 
I f L a b e ls "TOTAL VENDIDO POR CADA VENDEDOR" O rLabell= "TOTAL 
VENDIDO POR DISTRITO ” Then 
.Show 
! MSChart l.RowCount = RS.RecordCount 
! MSChart l.ColumnCount = 1 
!MSChart2.RowCount - RS.RecordCount 
!MSChart2.ColumnCount = 1 
I f Label I = “TOTAL VENDIDO POR CADA VENDEDOR ” Then 
!MSChart 1. TitleText = “CANTIDAD DE VENTAS POR VENDEDOR ” 
!MSChart2. TitleText = “ TOTAL DE VENTAS POR VENDEDOR ” 
End I f 
I f Label 1 = “TOTAL VENDIDO POR DISTRITO ” Then 
!MSChartI. TitleText = “CANTIDAD DE VENTAS POR DISTRITO ” 
!MSChart2. TitleText = “TOTAL DE VENTAS POR DISTRITO ” 
End I f 
RS.MoveFirst 
For X = 1 To Form2!MSChart 1 .RowCount 
!MSChart I. Row = X 
! MSChart 1.Column = 1 
¡MSChart I.Data = RS(1) 
!MSChart l.RowLabel = RS(O) 
!MSChart2. Row = X 
!MSChart2. Column = 1 
!MSChart2. Data = RS(2) 
! MSChart2.RowLabel = RS(O) 
RS.MoveNext 
N extX 
E ls e 
MsgBox “ELGRÁFICONOESrÁDISPONIBLEFARAESTAINFORMACIÓN”, 64, “DISCULPE’ 
End I f 
End With 
End Sub 
G r u p o E d it o r ia l Megabyte 441
a s J » VISUAL BASIC como debe ser. . 
Ejemplo de resultados de la aplicación anterior. 
ii. P R O G R A M A S D E L I S T A D O Y E S T A D I S T I C A 
L IS T A D O S E S T A D IS T IC A 
( T O T A L V E N D ID O P O R C A D A V E N D E D O R 
N 9 N O M B R E 1 C A N T ID A D T O T A L 
1 D A N T E M IL L A N ! 4 1200 
2 J O R G E C A S T R O 5 580 
3 JU LIO D A V IL A 3 700 
4 T E R E S A U B IL L U S 5 600 
C A N T I D A D D E R E G I S T R O S M O S T R A D O S 
V E R G Á F IC O I S A L IR 
OB J H lS l 
{ C A N T ID A D i I MONTOS 
C A N T ID A D D E VENTAS P O R VENDEDOR 
4 
3 - 
2 - 
1 - 
i í g l i i l iPUl - jf 
- 2 
- 1 
DA N TE MILLAN JORGE CASTRO JU LIO DAVILA TERESA UBILLUS 
I R E G R E S A R ! 
W 442 G r u p o E d i t o r i a l Megabyte 
CAPITULO X: Programación DAO 
PREGUNTAS DE REPASO N° 10 
I. ¿Cuál es la diferencia entre la program ación con D A O y con el control 
2. 
3. 
4. 
5. 
6. 
7. 
9. 
D A T A . 
¿Cuál es la característica de cada, tipo de Recordset? 
E xplique las principales propiedades del control M sFlexG rid. 
¿Cuáles son los pasos a seguir para program ar con D A O ? 
¿Qué caracteres se pueden usar y qué fu nció n cum plen cuando asignas 
la propiedad Form atS tring a un control M sF lexG rid? 
E xplique las principales propiedades del co ntrol M sChart. 
¿Qué mensaje de error se visualiza cuando ejecutas tu aplicación sin 
activar la casilla D A O ? 
¿Cuál es la diferencia entre O rder B y y G roup By? 
¿Cuál es la diferencia entre D B g rid y M sF lexG rid? 
10. E xplique e indique un ejem plo con cada función que podemos u tiliz a r en 
la instrucción S Q L Select? 
I I . ¿Con cuántos tipos de gráficos se puede representar la in form a ción con 
el control M sChart. 
12. E xplique los métodos del control M sFlexG rid. 
13. ¿Qué sig n ifica D A O ? 
14. E xplique los métodos para m anejar una base de datos con D A O . 
15. E xplique el control M sF lexG rid 
16. ¿En qué partes de la aplicación se pueden d e fin ir las variables Database 
y Recordset. 
17. Explique la propiedad Sort del control M sF lexG rid. 
18. ¿Cuál es la diferencia entre W here y H aving? 
19. E xplique las form as de a brir una tabla usando D A O . 
20. ¿Cómo se pueden u n ir tres tablas? 
- 
OO 
ío 
J 
' í 
No olvides que para pasar al siguiente capítulo, debes obtener 
un 20 en esta autoevaluación. 
G r u p o E d it o r i a l Megabyte 443
CAPITULO XI 
éJ Fie E di [nsert Foimat Dalabase Repoit Window Hdp - | f f | x| 
D e£|@ B j â f S 
Design Preview Today 0G:34 | CloseI T O l ofi [ F iT T ir ^ 
--------------------- l;, 
------ -- 
Choose an Expeil: Dr: 
' —À 
f<TTÏÏ7 
IIHUli 
r 
r r t 3 1 
.ZZJEL ! ; ! r s i E 
Standard Listino Cross-Tab Mail Label 
Reccté: 9 
Summary Graph TopN Drill Down 
CREACIÓN 
DE 
REPORTES 
Another Report 
Cancel 
Help 
Custom)» 
ma m h m
CAPÍTULO XI: Creación de Reportes € m 
Visual Basic permite diseñar reportes de una manera fácil y rápida. A con­tinuación 
se explica el programa Cristal Report que es el generador de 
reportes predeterminado de la versión 5.0 de VB. Si usted tiene la versión 
6.0 utilice el DATAREPORT que se explica a partir de la página N° 461. 
C R E A R R E P O R T E S C O N C R IS T A L R E P O R T 
Para crear reportes debe seguir los siguientes pasos: 
1. De la opción Complementos (Add-Ins) de la barra de menú elija Diseñador 
de Informes (Report Designer), observará la pantalla siguiente: 
2. 
-"JÜ i 
File Edit Insert Format Database Report Window Help 
D E? y a # f poi] & 8^ m #4 a m & 
j i n i r ZEZ 
Crystal Reports Pro 
De la pantalla anterior elija la opción File y luego New, que permite 
crear un nuevo reporte, observará la pantalla siguiente, donde tiene los 
tipos de reporte que puede crear. En cada botón que permite seleccionar 
un tipo de reporte se muestra una figura que indica la forma de visualizar 
los datos, inicialmente se recomienda seleccionar el tipo Standard. 
C hoose an Expert: 
^ I 
Or: 
S ta n da rd Listing Cross-T ah M ail L abel A n o th e r R eport 
=27—^ 
3 — 
C ancel 
H e lp 
S um m ary G raph T op N Drill D o w n Custom >>> 
G r u p o E d i t o r i a l Megabyte 4 4 7 
p m
o 
w Æ M ' VISUAL BASIC como debe ser... 
Una vez seleccionado el tipo de reporte que desea diseñar, debe elegir el 
tipo de base de datos a utilizar. Haga click en Archivo (DATA FILE). 
*1 
Step 1: Tables 12: Fields 13: Sort j 4: Total j 5: S elect 16: Style | 
Step: Choose data to report on. Y o u can choose multiple tables and add indexes. 
Luego, debe seleccionar el nombre de la base de datos que contiene la tabla 
o tablas que se van a usar en el reporte. 
File Name: 
AGENDA, mdb 
biblio.mdb 
h.rndb 
¡j.mdb 
nwind.mdb 
pasajes.mdb 
List Files of Type: 
User Default 
Directories: 
C: W c h iv o s de progra..AVB 
□ 
J 
_Jc: 
f j Archivos de progra 
DevStudio ‘— 
_ j vb 
Clisvr 
_ ! Help 
Drives: 
1 c: gogo 
Add 
Done 
SQL Table... 
R ed. 
448 G r u p o E d i t o r i a l Megabyte 
CAPÍTULO XI: Creación de Reportes 
Una vez seleccionada la base de datos haciendo doble click en su nombre o 
con el botón Agregar (Add), haga click en el botón Terminar (Done) para 
salir de la ventana. 
La siguiente ventana que se visualiza depende del tipo de reporte elegido. 
El siguiente paso consiste en indicar los campos que desea mostrar en el 
reporte, para ello haga click en el botón N ex t» o en 2. Fields. Visualizará la 
pantalla siguiente: 
ADD-> 
Permite adicionar al reporte el campo seleccionado. 
A L L - » 
Permite adicionar al reporte todos los campos. 
cR E M O V E 
Permite quitar del reporte el campo seleccionado. 
« A L L 
Permite quitar del reporte todos los campos. 
BR OW SE DATA 
Permite mostrar los datos del campo seleccionado. 
FO R M U L A 
Permite adicionar una formula al reporte; es decir un campo calculado. Por 
ejemplo si se tiene una tabla llamada amigos con el campo fecha de nacimiento 
(fecnac) y Ud. desea mostrar también la edad sin tener este campo en la 
tabla, entonces la formula será: 
G r u p o E d i t o r i a l Megabyte 449
VISUAL BASIC como debe ser... 
year( today )-year( amigos.fecnac ) 
S te p 1: T a b le s 2: Field s J3: Sort j 4: T o ta l | 5: S e le c t j 6: S tyle j 
S te p : S e le c t fields to in clu d e in report. Y o u c a n reord er th e m a n d c h a n g e h ead in g s. 
2Sl 
D a ta b a s e Fields: R e p o rt Fields: | # | ; | 
R e p o rt Fields: A 
D a ta b a s e Fields: 
- - A M I G O S ...... 
D IR E C C IO N 
D IS T R IT O 
J F l F F Íl N f l 
1 1 
B ro w s e D a ta ... iF o rm u Ía...i| 
A d d -> 
A ll - » 
< - R e m o v e 
« • A l l 
<< B a c k j N e x t >> j C a n c e l j 
N OTA: 
P rim ero el Visua B a sic le p e d irá el nom bre de la fo rm u la que d esea 
crea r (F orm ula Ñame). 
Las fu nciones y los cam pos utilizados en las form u las se pueden escri­b 
ir o seleccionar. 
Today p erm ite o b ten er la fec h a a ctu al en los reportes. 
C O LU M N H EA D IN G 
Permite indicar el encabezado de cada campo que por defecto es el nombre 
del campo. 
F E L IC IT A C IO N E S 
A l ejecu ta r los p a so s m en cion ados anteriorm en te Ucl. ya está en con ­dicion 
es ele v isu a liza r su reporte, p o rq u e los sigu ien tes p a so s son o p ­cionales, 
p a ra ello haga click en el botón PREVIEW REPORT, o b ser­vará 
la p a n ta lla siguiente, don de las o pcion es del menú y los botones 
d e la B arra E stán dar perm iten tam bién d iseñ a r y m ejorar ¡os reportes. 
CAPÍTULO XI: Creación de Reportes < € ¡ ¡ 1 1 
ÎIÜ II IS ^ M i a i l 1 H I T . i n i x| 
mJ File Edit Insert Format Database R eport W in d o w Help _ [fll x| 
D e? y m. s f s o |,£J) #4 £3 M Ü S iH ] ] f i # 
Design Preview Today 06:34 | Close | | ¡ ] 1 of 1 f ] ||| 
---------------------------- — 
! 
1 J 1 JICULJn n r  m i i u î : 
Records: 9 100% 
O RDENACIO N DE LOS REGISTROS PARA LOS REPORTES 
Después de seleccionar los campos que desea mostrar en el reporte, Ud. 
puede indicar el campo por el cual deben salir ordenados los registros, para 
ello haga click en el botón N E X T » o en 3.SORT, visualizará la pantalla 
siguiente. 
ADD-> 
Elige el campo por el cual se desea ordenar los registros en el reporte. 
< -R E M O V E x| /-v , i Step 1: Tables 12: Fields 3: Sort 14: Total 15: Select | 6: Style I Quita el campo seleccio- 1 1 1 1 1 
nado para la ordenación. 
O R D E R 
Se visualiza después de 
elegir un campo y permi­te 
indicar la forma de or­denar: 
Ascendente, Des­cendente, 
En la forma 
Origina o por grupos. 
Step: Choose fields to sort and group by, such as Country and then State. 
You can also define custom groups, such as Western Region. 
Report Fields: Group Fields a n 
Add •> 
Report Fields: 
am inns niRFrnnt'j 
<-Remove 
Browse Data... [ Group/Total Tip... | 
<< Sack j Next>> | Cancel j | Preview Report | Preview S ampi* j 
G r u p o E d it o r ia l Mega b y 1c 451
^ |§ y § |> VISUAL BASIC como debe ser... 
TOTALIZAR O CONTAR GRUPOS DE REGISTROS 
Después de indicar el campo o campos para la ordenación, Ud. puede indi­car 
que los campos sean sumados, contados, promediados u obtener el va­lor 
máximo o mínimo 
registros. Estos gru­pos 
de registros de­penden 
del campo 
por el cual los regis­tro 
están ordenados. 
Haga click en el bo­tón 
N E X T » o en 
4 . T O T A L , 
visualizará la panta­lla 
siguiente: 
ü J 
Step 1: Tables 12: Fields 13: Sort 4: Total |5: Select 16: Style | 
Step: Choose fields to subtotal, count etc. E a ch tab is a group (or subtotal break). 
A M IG O S .N O M B R E | Q ..... 
Subtotals printed on any change of A M IG O S .N O M B R E 
n , r n T otal Fields: 
Report Fields: 
Report Fields: 
A M IG O S .D IR E C C IO N — A d d ->. I 
_ J 
A M IG O S .D IS T R IT O 
A M IG O S .T E L E F O N O . I 
Browse Data... I r zl 
✓ A d d Grand Totals 
« B a ck J Next » j Cancel I I preview Report | Preview Sample | 
ADD GRAND TOTAL 
Indica si al final del reporte se debe visualizar el total general. 
SELECC IO N A R O FILTRA R REG ISTRO S A VISU ALIZA R 
Ud. puede seleccionar 
los registros que desea 
visualizar en los repor­tes. 
Para ello haga 
click en la opción 
5.SELECT, visualizará 
la pantalla siguiente: 
Slf*p I ?at>les  ¿ helrts |3 Soit |4 Total 0 Select |b S'yle J 
Step Choose fields »o selec» (or filter) records in report Important for <jp*»*>d 
[ü 3 ¡ euuaUo v I |l -T.j 
CHICLAYO 
LA VICTORIA 
LAMBAVEQUC_______________________________________ 
,*J 
Report Field«. 
AMIiiOS I'lRfc LI IUN 3 
AMIGOS DISTRITO — Add ■> I 
Drowse Data . | Speed Tip .- | 
« fciack I fW >> I C ancel | | Preview Beport | Preview Sample j 
CAPÍTULO XI: Creación de Reportes ^ 
A D D -> 
Permite indicar el campo por el cual va a seleccionar a los registros que 
desea visualizar en el reporte. 
Luego debe formar la condición que deben cumplir los registros para que se 
muestren en el reporte. La condición se forma con los operadores y con los 
valores que Ud. puede elegir. 
SELECC IO N A R EL EST ILO DEL REPO R TE 
Ud. puede mejor el aspecto del reporte, para ello haga click en la opción 
6.STYLE, observará las siguiente pantalla. Elija el estilo de reporte que 
mejor le parezca. Por cada estilo de reporte se muestra un ejemplo de cómo 
se visualiza. 
S te p 1: Ta b le s | 2: Fields j 3: Sort 14: T o ta l | 5: Select 6: Style | 
Step: G iv e a report title a nd cho ose a style, s uch as fonts, tables, a n d pictures. 
Title: I 
Style: . . _ 
Le a d in g Break 
Trailing Break 
Ta b le 
D ro p Ta b le 
E x e cu tive, Lea d in g Break 
E x e cu tive, Trailing Break 
S hading 
R e d /B lu e Border 
M a ro o n /Te a l Box 
_Ll = 
A d d picture, 
s uch as 
co m pa n y logo: 
P re vie w Tip... 
J___I Preview Report | Preview Sample j 
NOTA: 
Una vez creado el reporte debe grabarlo para que de ésta manera lo 
pueda utilizar o activar desde cualquier formulario utilizando el con­trol 
CRYSTAL REPORT. 
CRYSTAL REPORT m 
Es un control que se utiliza para activar desde un formulario cualquier re­porte 
diseñado. Lo puede dibujar en cualquier parte del formulario porque 
no se visualiza cuando se ejecuta la aplicación. En la lista de componentes 
se encuentra con el nombre: Crystal Report Control. 
Sus principales propiedades son: 
G r u p o E d i t o r i a l Megabyte 453
J VISUAL BASIC como debe ser... 
CUSTOM (Personalizado) 
Tiene las opciones que permiten personalizar el reporte. 
Páginas de propiedades 
Base de datos | Selección | Informe enlazado a datos 
General j Ventana de impresión | Impresor a | Imprimir a un archivo 
RepoitFHeNafne: |j | 
[¿estination 
(* A una ventana A una impresora C A un archivo 
r A la MAPI 
Aceptar ~] 
Páginas de piopiedadet 
General 1 Ventana de impresión | Impresora ¡ Imprimir a un archivo 
[ Base de datos ji Selección 1 Informe enlazado a datos 
yserName: J~" 
Cgnneci I 
Base de datos | Selección ] Informe enlazado a datos 
General Ventana de impresión ] impresora ] Imprimi» a un archivo 
Wl: p ---- !®W fSÓ---- 
rrsr— H ^iar- rK“' 
,-------------------- ——------- — : (• S¡rabie FixedQouble 
jEJEMPLO DE REPORTE . ” 
p MasBulton 
lo p 
Title 
P CfintroIBox P (dinButton 
I Aceptar ~| 
El 
Base de datos | Selección ¡ Informe enlazado a datos I 
General | Ventana de impresión | Impresora )• • uñ t 
Piintrtejiame: 
PrintFteTupe. I Registro 
■ J 
~3 
Cancelar I 
DATASOURCE 
Su uso en reportes es opcional y permite indicar el nombre del control data 
que está ligado a la tabla de la cual se desea obtener el reporte. 
R E P O R T F IL E N A M E 
Permite indicar el nombre del reporte que desea imprimir, además usted 
también puede seleccionar el destino del reporte que por defecto es 
WINDOWS (A una Ventana). 
Con la opción A la Ventana, el reporte se mostrará en la pantalla como una 
presentación preliminar. Si ya tiene una impresora conectada y lista para 
imprimir puede elegir la opción Printer (A un Impresora). 
General J 
fìeportFileNarne: | ] 
: destination 
C A una ventana A una impresora A un archivo 
<• A la MAPI Haga click aqui para 
buscar el archivo de 
Reporte. 
Acepta» ~| Cancela»' j Aplicar | Ayuda 
CAPÍTULO XI: Creación de Reportes 
Su desea indicar el archivo de reporte a imprimir dentro de un programa, 
entonces su nombre debe estar entre comillas e incluir la ruta del archivo. 
La opción File (A un Archivo) graba en un archivo el reporte para su uso 
posterior. La opción A MAPI envía el reporte a otra persona en un mensaje 
de correo electrónico el formato especificado por la propiedad PrintFileType. 
R E PO R T SO U R C E 
Para indicar la fuente de los registros para el reporte. 
O-CRPTREPORT: Muestra en el reporte todos los especificados al diseñar 
el reporte. 
3-CRPTDATACONTROL:Los registros que muestra dependen de los que 
contiene el control Data. Se utiliza junto con la propiedad Datasource y 
normalmente cuando se filtran registros con la instrucción SELECT. 
A C T IO N 
Activar el reporte asignándole el valor 1. Por Ejemplo, para activar el reporte 
que está ligado al control CrystalReportl se escribe: CrystalReportl. Action = I 
S E L E C T IO N FO R M U LA 
Permite escribir una condición que selecciona los registros a visualizar en el 
reporte. Los nombres de los campos deben estar entre llaves. Por ejemplo: 
Si tenemos un reporte con la tabla Amigos y queremos mostrar sólo los que 
viven en Chiclayo, entonces debemos asignar a esta propiedad la siguiente 
condición: {DISTRITO} = "CH ICLA Y O " 
Cundo hemos realizado un reporte con dos o más tablas, cada campo debe 
estar acompañado del nombre de la tabla a la que pertenece. Por ejemplo: 
Si tenemos un reporte con la base de datos Tienda (tablas Vendedores y 
Ventas) y queremos mostrar todas las ventas cuyo monto esta entre 50 y 
100, esta propiedad debe tener: {V EN TA S.M O N TO } >=50 AND 
{VENTAS.M ONTO} <=100 
PRINTFILETYPE 
Especifica el tipo de archivo va a imprimir cuando utiliza como destino del reporte un 
Archivo (File). 
Los principales valores que puede tener son: 
0 Registro: Es la propiedad predeterminada y muestra la información columnas, no 
utiliza comas ni separadores. Muestra todos los registros con una anchura fija de 
campo. 
1 Separado por tabuladores: Presenta los datos en forma tabular. Encierra los datos 
de campos alfanuméricos entre comillas y separa los campos con tabuladores. 
2 Texto: Guarda los datos en formato de texto ASCII con todos los valores separados 
por espacios. Este estilo se parece mucho a una página impresa. 
G r u p o E d it o r ia l Megabyte 455 < |§ § |¡¡||
é S S k > VISUAL BASIC como debe ser... ^ £ 5 CAPÍTULO XI: Creación de Reportes 
3 DIF: Guarda los datos en formato DIF (formato de intercambio de datos). Este 
formato se usa a menudo para transferir datos entre diferentes programas de hoja 
de cálculo. 
4 CSV: Valores separados por comas. Encierra los datos de campos alfanuméricos 
entre comillas y separa los campos con comas. 
7 RPT de Crystal Reports: Se utiliza el formato estándar RPT de Crystal Reports, la 
mayoría de las veces para mandar el informe a otro usuario mediante correo 
electrónico. 
10 XLS de Excel 4.0: Exporta el informe como una hoja de cálculo de Microsoft Excel 4.0. 
13 WKS de Lotus 123 : Exporta el informe como una hoj a de cálculo de formato WKS 
de Lotus 123. 
14 WB1 de Quattro Pro 5.0: Exporta el informe como un archivo de formato WB1 de 
Quattro Pro 5.0. 
15 RTF: Guarda los datos en Formato de texto enriquecido. 
16 Word para DOS: Usa el formato de Microsoft Word para DOS para guardar los 
datos del informe. 
17 Word para Windows: Utiliza el formato de Microsoft Word para Windows para 
guardar los datos del informe. 
18 WordPerfect: Usa el formato de WordPerfect para guardar los datos del informe. 
PRINTFILENAMF, 
Especifica el nombre del archivo donde va a guardar el reporte cuando ha seleccionado 
el destino a un archivo. Acepta también una ruta para el archivo. 
WIMX)WSiATE 
Se utiliza cuando el destino del reporte es Windows (A la ventana - Presentación 
Preliminar) para indicarci tamaño de dicha ventana: 
0=Normal 
La ventana Vista previa no aparece ni minimizada ni maximizada. Aparece con un 
tamaño y posición definidos anteriormente por su aplicación o por Windows. 
1 = Minimizada 
La ventana Vista previa aparece minimizada como un icono junto a la esquina 
inferior izquierda de la pantalla. Se puede restaurar para presentar la ventana en 
estado normal. 
2 - Maximizada 
La ventana Vista previa está maximizada si cuando está abierta ocupa toda la 
pantalla. 
WINDOWSUTLE 
Indica el título que debe tener el reporte cuando se muestre en una ventana. 
WINDO W CONTROLS 
Especifica si los controles de impresión van a aparecer o no en la ventana de Impresión 
cuando se muestre el informe en una ventana. 
A C T IV A R E L R EPO RTE 
Para activar un reporte desde una aplicación, primero debe de dibujar 
en dicha aplicación el control Crystal Report que en la ventana de 
componentes se llama: C rystal R eport C ontrol y asignarle en su 
propiedad R ep o rtF ileN a m e el nombre del archivo de reporte 
previamente creado y que usted desea imprimir. Este control tiene un 
sólo tamaño y al ejecutar la aplicación no se visualiza en el formulario. 
El resto de controles dependen de la aplicación que desea crear. 
I T E L E F O N O " 
T5T>n 
CODIGO NOMBRE TELEFONO 
005 DANTE MILLAN 666364 
010 GREGORIO DARIO 265485 ------ 
007 JORGE ARMANDO 162548 
004 JORGE CASTRO 201665 
009 JUAN ANIBAL 696963 
001 JULIO DAVI LA 232426 
006 ILUZ ANGELICA 205056 
008 MARIA JULIA 366987 
003 NOEMl MONTAÑO 242126 ^ 
«1 n : ....................................... . . ..................................... ► |— 
¿3? 
I M P R I M I R 
Si desea que al hacer un click en el botón IMPRIMIR, se active el reporte, 
entonces debe escribir en el botón las siguiente instrucción: 
CrystalReportl.Action = 1 
n EJEMPLO DE REPORTE Jn[EJ 
LISTA D O O E f*LEA D O S 
COt>l ¿OfCT1 Efll 
úú I JULIO DA V L* 
ÛÛÎ TER ES .-V fjBXl-CjS 
ÚÚ¿ MOÍ«TAfTO 
ÙÜJ JÖCÖ-E CASTRO 
úúüúüS IDHAjK'ZT AEf AtAJTELLL-K4ÍAV 
ÛÛ? JOprJE ARMANDO 
úúS MARV. JC/LV4 
ú I ú OftEOCCOCWRKi 
zJ 
y g g j l ' G r ü p o E d i t o r i a l Megabyte 4 5 7
CAPITULO XII 
ou 
I ° 
<& B< ! 
O 
O Pí 
z - 
A : - í » - **-s. . 'ü
r CAPITULO XII: Programación ADO 
PROGRAMACION ADO 
La mayoría de los nuevos controles de la versión 6.0 de Visual Basic nos 
ayudan a conectarnos a diferentes tipos de bases de datos de manera muy 
sencilla. Por ejemplo, si tiene una base de datos creada en Visual FoxPro, 
Power Builder, SQL Server, etc, usted puede manejarla en el Visual Basic 
como si la hubiese creado en este mismo programa y cualquier modificación 
que haga a estas bases de datos se visualizarán cuando las abra en su 
programa original de creación. 
Los nuevos controles se llaman Objetos de Datos ActiveX (ADO) que 
tienen además la ventaja de realizar conexiones Locales o conexiones 
Remotas muy fácilmente. 
La C onexión Local se realiza cuando la aplicación (programa) que 
desarrollas y la base de datos que maneja se encuentran en la misma 
computadora. 
La Conexión Rem ota se realiza cuando la aplicación que desarrollas y la 
base de datos se encuentran en computadoras diferentes. 
Para poder acceder a una base de datos desde el Visual Basic con los 
controles ADO, primero se debe preparar o configurar la conexión, la cual 
se puede realizar con: 
O D B C : 
Significa Conexión de Base de Datos Abierta y nos ayuda a conectarnos a 
una gran variedad de base de datos. El Windows tiene su controlador de 
Base de datos ODBC. 
A RCH IV O DE VÍNCULO DE DATOS - O LE DB: 
Permite alm acenar en un archivo con la extensión (*.UDL) toda la 
información de conexión a una base de datos. En estos archivos podemos 
crear vínculos de datos para cualquier proveedor de O LE DB. O LE 1)11 
es otra forma de conectarse a una gran variedad de base de datos. 
Estos dos tipos de conexiones para base de datos las puede realizar desde 
el escritorio de Windows o desde el mismo Visual Basic. 
G r u p o E d i t o r i a l Megabyte 461
o 
WÆ&m VISUAL BASIC como debe ser... 
CONFIGURAR LA CONEXIÓN DESDE EL WINDOWS 
O D B C 
1. Ingrese al Panel de Control (Inicio, Configuración, Panel de Control) y 
haga doble click en el icono Fuente de Datos ODBC. Se visualiza la 
ventana de Administración de Orígenes de Datos ODBC con todos los 
orígenes de datos ya creados. 
y«TI II 9 
I' I 
Ewvarfo.* Ayu<ij Mi' .~3B 
f_________ áL c í •' 
#4 ^ 1 
ÄK- * a r 'ssä * 
& tO s a 
W ’ ' « ä "i 
__i 
M J 
,£ L 
M. PC 
tí? 
'■3P 
Se puede crear tres tipos de orígenes de datos: 
O rígenes de Datos de U suarios (DSN de Usuarios) 
Los cuales se pueden ver y utilizar sólo en el equipo donde los crea y por el 
usuario que los crea. 
O rígenes de Datos de Sistem a (DSN de Sistema) 
Los cuales se pueden ver y utilizar por todos los usuarios de la computadora 
donde se crea. 
Orígenes de Datos de Archivo (DSN de Archivo) 
Los cuales permiten conectarse a un proveedor de usuarios y por lo tanto se 
pueden utilizar por todos los usuarios que tengan instalado el mismo contro­lador. 
Estos orígenes de datos no necesitan estar dedicados a un usuario ni 
ser locales en un equipo. 
2. Seleccione el tipo de origen de datos que desea crear y haga clic en 
botón Agregar. Se visualiza la ventana para seleccionar el controlador 
del origen de datos. 
L J J 
NOTA: Para empezar a trabajar con los orígenes de datos se recomienda seleccionar 
el origen de datos de Usuario. 
4 6 2 G r u p o E d i t o r i a l M e g a b y t e ^ 3 
CAPÍTULO XII: Programación ADO 
3. La elección del controlador depende del tipo de base de datos a la cual 
le desea crear el origen de datos. Por ejemplo. Si a creado la base de 
datos en Microsoft Access o en el mismo Visual Basic debe elegir 
Microsoft Access Driver (*.MDB). Si a creado la base de datos en 
Visual FoxPro debe elegir Microsoft Visual Foxpro (*.DBF). Si a creado 
la base de datos en Power Builder debe elegir Microsoft SQ1 Any Were, 
si la base de datos esta en SQL Server elija el control SQL Server, etc. 
La siguiente ventana que se visualiza, depende del tipo de base de datos 
elegido. Por ejemplo, al elegir Microsoft Access Driver (*.MDB) y hacer 
click en el botón Finalizar. Se visualiza la ventana de instalación de ODBC 
para Microsoft Access. 
Instalación de ODBC para Microsoft Access 
Nombre d<?l ¡¡rigen do dalos ¡ 
Dcíciipcióti 
Ba.odcdotu, 
Base de dalos; 
Seleccionar. I üeai... 
L ili 
Compactai 
; Bas« dç datos del sistema 
Nr>giirv=i 
C g g î c cfcs dato:: 
Ayuda I 
Avanzado.. | 
Opciones I 
Escriba el nombre que le desea asignar a su origen de datos que esta creando 
y opcionalmente una descripción. Este nombre que usted escriba, se utilizará 
en los programas que desarrolle en Visual Basic para referirse a la base de 
datos. Luego haga click en el botón Seleccionar para buscar la base de 
datos para la cual esta creando el origen de datos. 
Seleccionar base d e datos 
Nombre de base de datos 
EJ 
r.rndb 
Directorios: 
c : 
Aceptar 
n 
j 
Enumerar archivos de tipo: 
1 Bases de datos Access ^ | 
r~l Archivos de progra 
Q CO N TA B ILID A D . Ü3 DB2 
Q HH 
Q IB M V Java _^J 
Unidades: 
I Ö c: C E TD I T ] 
Cancelar | 
Ayuda 
P Sólo lectura 
I“ Exclusivo 
Red... 
G r u p o E d i t o r i a l Megabyte 4 6 3 <1m
é S t ik ' VISUAL BASIC como debe ser. . . 
Una vez que encuentra la base de datos, haga click en su nombre y luego en 
el botón Aceptar. Regresará a la ventana de Instalación donde debe hacer 
click también en el botón Aceptar para regresar a la ventada de administración 
de orígenes de datos donde visualizará el nombre de su nuevo origen de 
datos que ha creado. 
o I Conmuto de condKÍorM»t 1 • 
ÜSN de ratania ) DSN do < 
Otfgçhés de dalo^ do uiuaiio 
MS A c c e ;: Onlab. 
I Cmiliolddui 
rivci I rr»dfc»J 
Syba-^o SQL Ai iywl icio 0.0 
Svbat* SQL Arn'whei» 5 0 
SyLvj» *501 Anvwt.<;re 5 O 
Sybase SQL Anywl ieie S.O 
Svbnso SQL Anvwhere 5.0 
ItA c ie s í Olive» r.rndb) 
yl:- SQ1. Ariywt'« 
Un OIir jr - n dr> dnlm Hn Honorio ODBC alm«i*7'en.s* ¡nfoimación ncmoa Hr> 
cúniu corloctatío til piovoodoi do díalos indicado. Un Oiijjoo do dato* do 
usuario sOlo so puede ver y utilizar en el eduipo »otual. 
Aceptar ] Cancelar { 
De esta manera la base de queda lista para poder utilizarla desde Visual 
Basic. 
Le recomiendo que practique nuevamente la creación de los orígenes de 
datos ODBC. Verá que cada vez es mucho más fácil. Si desea borrar uno 
que a creado, haga un clic en su nombre y luego en el botón Quitar. 
MUY IMPORTANTE. 
No es necesario que usted cree el origen de datos cada vez que necesita manejar la 
base de datos. Estos orígenes de datos sólo se crean una vez y quedan grabados en 
su computadora. 
Para visualizar los controladores que tiene instalados en su computadora, 
seleccione la hoja Controladores: 
r w i 
DSN do usuai io I DSN do siítoina 
Controládoioi.......jj SeQuiri nenio ] Conjunto 
Los contiuladoio- QDtlC instalado s on au si*loiVia so 
SN do arcl iivo 
) Acerca de 
ola.loi ODBC de Mu io w. 
*oíi. Aece.v* Piève» I indi 
soft dB aso D.¡voi ( dL.fl 
'¡»oil dBosoVFP Diivei f 
isoft Excol Diivoi (K. xlsj 
Iftoft FoxPro VI P Driver I* 
« oft ODBC lor Oriolo 
sol» P .arado« Driver (" db 
soft Text Driver I iXI 1 c 
io ff V iiual f oxPio Driver 
1 Version 
dbf) 
dtalj 
3-/'. 
,‘i 3711. OO 
D 3711.08 
D8428.00 
13711.ÜÜ 
3.Ô42S. 00 
371 I OO 
i 3/1 I 08 
i 3/1 1 08 
) 8 4 2 8 . 0 0 
I O rgafiigaci^ri 
oíoft Corpoicilit 
où of I Cor poi<atic 
o-iofl Coi por at ic 
LJn controlador ODBC permit.© a lo." programan habilitado; de OD 13L. 
obrpner inlorrnaciôri de lo?. origenet d«=- d ^ lo î ODBC Rara infialar 
c.oritioiadnr e s ruiuvos utilice el proclama de ins!afoorih *lel conti oladoi 
I A .-~ e r'» a i I 
4 6 4 G r u p o E d i t o r i a l Megabyte 
CAPITULO XII: Programación ADO 
ARCHIVO DE VÍNCULO DE DATOS 
Para crear un archivo de vínculo de datos haga click con el botón derecho 
del mouse en cualquier parte libre del Escritorio o dentro de una carpeta en 
el Explorador de Windows. Visual Basic busca en forma predeterminada 
los archivos de vínculo de datos en la carpeta: 
C:Archivos de ProgramaArchivos ComunesSYSTEMole dbData Link 
Por lo tanto se recomienda hacer click con el botón derecho del Mouse 
dentro de esta carpeta. 
Se visualiza un menú donde debe elegir la opción Nuevo y luego la opción 
Microsoft Data Link. _J Capeta 
^ Acceso directo 
" í ] Archivo de sonido 
1 ) Documento de texto 
Documento de Microsoft Word 
Imagen de mapa de bits 
Hoja de cálculo de Microsoft Excel 
t í ] Presentación de Microsoft PowerPoint 
Microsoft Data Link 
Se creará en form a autom ática el archivo: N u evo M icro so ft Data 
Link.UDL. Usted puede asignarle otro nombre si lo desea, pero respetando 
la extensión UDL. Este nombre que usted asigne se utilizará en los 
programas que desarrolle en Visual Basic para referirse a la base de datos. 
Luego haga click con el botón derecho de Mouse en el nombre de este 
archivo y elija Propiedades para visualizar la ventana de configuración de la 
conexion. P r o p ie d a d ® * d e T ie n d a .U u L 
G e n e r a l | P ro v e e rlo » J í. < 
I iend*.UDl 
m m 
> I A voraci.. I t odo-, j 
Tipo: Microsoft Data Link 
I Ibir.-icióii C.-WINDOWSMíinÚ IrHr.ir. 
T cJinaPío: 166 bytes (166 bytes), 32,768 bytev utado:.- 
Nombre MS DOS: TIENDA UDL 
l ie->.:l.. J u i-v e s 1 d e .li ii .i.». Ic- /IJ IIII 1 ;* 31 •. I A M 
Modificado: Jueves I d© Junio do 2000 12:31:54 AM 
I $ o k > lot. tur * 
í* 7 M o d ilic jd u 
I O cu lto 
r 
I Aceptar | Cancelar j 
G r u p o E d i t o r i a l Megabyte 4 6 5 w J îi
mk.< '% VISUAL BASIC como debe ser. 
En la hoja Proveedor se debe seleccionar un proveedor para el tipo de base 
de datos que desea manejar en Visual Basic. Por ejemplo para una base de 
datos creada en Access o en el mismo Visual Basic, debe elegir M icrosoft 
Je t 3.51 ó 4.0 O LE DB Provider. Si tiene creado un ODBC, utilice la 
opción M icrosoft O LE DB Provider for ODBC Drivers. 
Una vez que ha seleccionado el proveedor, active la hoja conexión cuya 
pantalla depende del tipo de Proveedor elegido. Por ejemplo la siguiente 
pantalla se visualiza cuando se ha elegido Microsoft Jet OLE DB Provider. 
. 0«rw»¿l j Prov«orlot CotwxtóM ) Av«r>7.ado 1 Tokíos 1 
,1 infoim.-.oú'in f 
I A .' 
En esta ventana haga click en el botón Buscar (...) para seleccionar la base 
de datos que desea utilizar en el archivo de vínculo y luego haga click en el 
botón Probar Conexión. Se debe visualizar el mensaje: 
M ic ro s o ft D a ta L in k 
L a p ru e b a d e c o n e x ió n fu e sa tisfactoria. 
I ( A c e p ta r ] | 
Esto indica que el archivo se ha creado correctamente y esta listo para 
utilizarlo en Visual Basic y poder manipular la base de datos indicada. 
CAPÍTULO XII: Programación ADO 
CONTRO LADO : 
Este control es muy similar al control data y permite conectarnos a una gran 
variedad de tipos de base de datos a través de los Archivos de Vínculo de 
datos o de los ODBC. Cuando se dibuja en el formulario, tiene la misma 
apariencia que el control Data, pero su nombre predeterminado es Adodc 1, 
Adodc2, etc. dependiendo de la cantidad de controles que dibuje. 
A d o d d ► M 
Para desarrollar una aplicación que maneje una base de datos usando este 
control sólo es necesario inicialmente asignarle valores en su propiedad 
CO N N ECTIO N STRIN G donde se indica el nombre del origen de datos y 
en su propiedad RECO RD SO U RCE, donde se indica el origen de los 
registros que normalmente es el nombre de una tabla o un texto que consiste 
en una instrucción SQL. 
Para visualizar en el cuadro de herramientas el control ADO y sus controles 
compatibles, cree un nuevo proyecto en el modo “ C ontroles de VB 
Edición E m p resarial” . 
N u evo p royecto IB 
<sv S I S t Asistente para Administrador Proyecto de Aplicación US 
aplicaciones... de asistent... datos 
•SI S I Sb§ S t Addin DII de Exe de Aplicación 
O 
docume... docume... DHTML 
^ 3 
Controles de 
VB Edición... 
Aceptar 
Ayuda 
Otra forma de tenerlos en el cuadro de herramientas es, abriendo la ventana 
de componentes (Control+T) y activando la casilla respectiva. La casilla 
del control ADO es: M icrosoft ADO data control 6.0 (OLEDB). 
G r u p o E d it o r i a l Megabyte 467
é m m VISUAL BASIC como debe ser... 
USO DE LA PROPIEDAD CONNECTIONSTRING 
1. SI YA CR EÓ EL O R IG EN DE DATOS. 
1.1 A RCH IV O DE VÍNCULOS 
Si ya creaste una conexión usando un archivo de vínculos, en la 
propiedad ConnectionString debes escribir: F IL E NAME=Ruta y 
nombre del Archivo.UDL 
Por ejemplo: Si has creado un archivo de vínculos llamado VENTAS 
en la unidad C:SISTEMA, debes escribir: F IL E NAM E=C: 
SISTE M A W E N TA S. UDL 
ConnectionString I FILE NAM E=C : SISTEM AVENT AS J 
1.2 ODBC 
Si ya creaste una conexión a tu base de datos usando ODBC, en la 
propiedad ConnectionString debes escribir: DSN=Nombre del 
Origen de datos 
Por ejemplo: Si has creado un origen de datos ODBC llamado 
AGENDA, debes escribir: DSN=AGENDA 
ConnectionString IDSN=AGENDA J 
MUY IMPORTANTE: 
No debe haber espacios ni antes ni después del signo igual (=) y si utiliza archivo 
de vínculo, debe indicar también la extensión del archivo (.UDL). 
Otra forma de indicar el origen de datos es haciendo Click en el botón con 
tres puntos que tiene la propiedad ConnectionString ( ... |), se visualiza la 
siguiente ventana: 
[ GwiM'á :J 
O i ¿gen de conexión 
Usar archivo de vínculo a datos ____ 
t~ ' Usai nombre de origen de datos ORBC 
I — — 
Usar cadena de conexión ______________ 
Otros attifeutos: | 
en esta ventana indique si ha creado un archivo de vínculo o un ODBC. 
Si a creado un archivo de vínculo, haga clic en el botón Examinar para 
buscar la carpeta y el nombre del archivo. 
Si ha creado un ODBC, haga click en la flecha hacia a bajo del Combo para 
seleccionar el ODBC. 
468 G r u p o E d i t o r i a l M egabyte^ ^ 
CAPÍTULO XII: Programación ADO < € ¡ ¡ ¡ ¡ 1 
2. SI NO HA CREADO EL O R IG EN DE DATOS. 
Para crear un origen de datos usando Visual Basic, haga click en el botón 
con tres puntos que tiene la propiedad ConnectionString (... |). Se visualiza 
la ventana anterior donde debe indicar el tipo de conexión a crear. 
2.1 CR EA R UN A RCH IV O DE VÍNCULOS 
Para crear un archivo de vínculos, seleccione Usar Archivo de 
Vínculo de Datos y haga clic en el botón Examinar. Se visualiza la 
siguiente ventana: 
I ...h ~ 3 üJ M nJ Iri OJ 
tJ ombro de oí chivo f 
lipa de archivo*: ¡Archivo" de Micro*oft Data Link (' "udij" 
1 Abrir 1 
' ■ Cóncola! [ 
P«la cteai un aichivo <1« vinculo de iWos tunvu tiaga clic con H botón 
«ecuridaiio del mouse en cualquier paire de Ia lis*« de Archivo» y, despu£v. 
seleccione Microsolt Data Lmk en el menú Nuevo 
Paia modificai «I aichivo de vínculo de datos, hag$ doble clic «ri ©I archivó. 
En esta ventana haga clic con el botón derecho del Mouse, elija la opción 
Nuevo y luego la opción Microsoft Data Link y siga los mismos pasos 
indicados en la creación de un archivo de vínculos desde el Windows. 
Una vez creado el archivo, selecciónelo y haga click en el botón Abrir y 
luego en el botón Aceptar. 
2.2 CR EA R UN ODBC 
Para crear un origen de datos ODBC, seleccione Usar Nombre de 
Origen de Datos ODBC y haga click en el botón Nuevo. Se visualiza 
la ventana: 
ni i min ii n i b í — — — — i 
Sster..ckMvw un tipo d e origen d e da to s 
f* ¡Q iijjen d e d a lo s d e arch ivo (equ ipo ind epen díen le} 
Origen d e d a to * d a u su a rio (<» a p lic a « ilo a a s te equipe-) 
f " P jífl« n d e d a to s d e siyiem á (s e «p lica tú lo a e v t* equipo) 
Al «eleccionaf O ligan d e dato» d a « c h iv o c re a un exigen de d.stoi 
b asad o en un archivo q u e so com parto co n todos tos usuario? que 
liei te n a c c e s o a la b a s e «Je d a to s . 
j Siguiente > j Lancolar J 
En esta ventana seleccione el tipo de origen de datos a crear, y siga los 
mismos pasos indicado en la creación de ODBC desde el Windows. 
|Í ¡ ||i |^ G r u p o E d i t o r i a l Megabyte 4 6 9 « »
( ¡ É l % VISUAL BASIC como debe ser... 
USO DE LA PROPIEDAD RECORDSOURCE 
La propiedad RecordSource se debe utilizar después de ConnectionString y 
se utiliza para indicar el origen de los registros. Cuando se ingresa a esta 
propiedad, se visualiza la siguiente pantalla: 
GE 
( O r i g e n d ë r e g i s t r o s j | 
O r i g e n d e r e g i s t r o s 
T i p o d e c o m a n d o 
ES3 
|8 - adCmdUnknown _ 
T ábla o nombre de procedimiento alm acenado 
Texto del coniando (SQL) 
A y u d a 
En esta ventana, primero se indica el tipo de comando, es decir, cómo se 
obtendrán los registros. 
Tipo de com ando 
|S - adCrndUnknown zJ 8 - adCmdiJnknown ................................. 
1 • adCmdT ext 
2 • adCmdT able 
4 - adCrndStoredProc 
Los tipos de comandos más usados son: 
* 1 -ad C m d T ex t, 
Para que los registros se obtengan desde una instrucción SQL. 
* 2-adC m dT able 
Para que los registros se obtengan de una tabla. 
| K 
La opción 4-adC m dStoredProc se usa cuando se tiene un procedimiento 
almacenado en el servidor y 8-adCm dU nknown cuando el tipo de comando 
es desconocido. 
NOTA 
Una vez que asignó el origen de los registros; su base de datos, tablas y registros 
están listos para utilizarlos en cualquier aplicación usando los controles 
compatibles del control ADO, como por ejemplo: DataGrid, DataCombo, DataList, 
TextBox, Label, etc. 
Æ M 
4 7 0 G r u p o E d i t o r i a l Megabyte ^¡CAPITULO XII: Programación ADO 
ERRORES MÁS COMUNES 
Cuando no se a escrito o seleccionado correctamente el origen de datos o 
de los registros se visualizan varios mensajes de error, los cuales se indican 
.1 continuación con la finalidad de poder corregirlos en forma fácil y rápida. 
[Microsofl][Ádministrador de controladores ODBC] El nombre del origen de datos no se encontró y 
no se especificó ningún controlador predeterminado 
Aceptar 
lil mensaje anterior se visualiza cuando el origen de datos indicado en la 
propiedad ConnectionString no está creado, es decir, no existe en la 
computadora donde se desea manejar la base de datos o escribió en forma 
incorrecta la cadena de conexión. Por ejemplo, dejó espacio antes o de 
después del signo igual (=). 
N o se puede encontrar XA. 
c a p t a r j | 
lil mensaje anterior se visualiza cuando el nombre del archivo de vínculo 
i ndicado en la propiedad ConnectionString no existe. 
[Microsoft][Controlador ODBC Micro soit Access] Instrucción SQL no válida; se esperaba 'DELETE', 
'INSERT', 'PROCEDURE', 'SELECT' o 'UPDATE'. 
Aceptar 
l i l mensaje anterior se visualiza cuando en tipo de comando se eligió la 
opción 1-adCmdText y no se escribió correctamente la instrucción SQL. 
[ADODC]: no se ha especificado ningún RecordSource. [AD0]:No se configuró un comando para el 
objeto comando 
lil mensaje anterior se visualiza cuando no ha indicado el origen de los 
registros, es decir, no se llenó la propiedad RecordSource. 
G r u p o E d i t o r i a l Megabyte 4 7 1 
I M S
J VISUAL BASIC como debe ser... 
OTRAS PROPIEDADES DEL CONTROLADO 
El control ADO tiene muchas propiedades similares al control Data. Las 
nuevas propiedades de este control son: 
PER SO N A LIZA D O 
Esta propiedad permite también asignar todos los valores necesarios para 
que se realice la conexión a una base de datos. Se puede activar también 
haciendo un click con el botón derecho del Mouse sobre el control ADO y 
eligiendo la opción Propiedades de ADODC. La pantalla que visualiza es 
la siguiente: i-jj.im r u E s a 
A u te n tic a c ió n | O rig e n d e r e g is t r o s | C olor ] F u e n t e | 
KZ1 
Origen de conexión 
f~~ Usar archivo de vinculo a datos 
Usar nombre de origen de datos 0£>BC 1 
Usar cadena de conexión 
Otros atributos: j 
| A c e p ta r | C a n c e la r | 
La forma de realizar una conexión en esta ventana se realiza de la misma 
forma como se explicó en las propiedades ConnectionString y RecordSource. 
CU RSO RTY PE 
Indica el tipo de cursor que se usa en un objeto recordset. Un cursor, es un 
conjunto de registros que se obtienen como resultado de una consulta a una 
base de datos. Los tipos de cursores disponibles son: 
• A doO penForw areO nly: Es el tipo de cursor predeterminado y es igual 
que el cursor estático, se diferencia porque sólo permite desplazarse 
hacia delante de los registros. 
• AdoOpenKeyset: (Conjunto de claves). Es igual que un cursos dinámico, 
se diferencia porque no se pueden ver los registros que agregan otros 
usuarios. 
• A d o O p e n D y n a m ic : (D in ám ico ). Se c a ra c te riz a porque las 
incorporaciones, cambios y eliminaciones que hacen otros usuarios 
permanecen visibles y se admiten todo tipo de movimiento entre registros. 
• A doO penStatic: (Cursor Estático). Consiste en una copia estática de 
un conjunto de registros que se puede usar sólo para buscar datos o 
crear reportes. Los cambios que hacen otros usuarios no son visibles. 
4 7 2 G r u p o E d i t o r i a l M e g a b y t e “^ 
CAPÍTULO XII: Programación ADO ^ ¡ ¡ ¡ ¡ ¡ l 
C U R SO R L O C A T IO N 
Indica desde dónde se van a utilizar los cursores. Se puede elegir desde el 
cliente (computadora de trabajo) o desde el servidor. 
C O M M A N D T Y PE 
Indica el tipo de comando para acceder a los registros. Se pueden seleccionar 
las mismas opciones que se utilizan en la propiedad RecordSource. 
L O C K T Y PE 
Permite establecer el tipo de bloqueo que deben tener los registros al 
momento de acceder a ellos para modificarlos. 
• AdLockReadOnly:(Sólo de lectura). Es el predeterminado y se caracteriza 
porque no se pueden modificar los registros. 
• AdLockPessimistic: (Pesimista). Se caracteriza porque el programa hace 
lo necesario para lograr la m odificación correcta de los registros, 
generalmente bloqueando registros en el origen de datos durante el proceso 
de modificación. 
• AdLockOptimistic: (Optimista). Se caracteriza porque el bloque se realiza 
sólo cuando se graba un registro con el método Update. 
• AdLockBatchOptimistic: (Por lotes). Se caracteriza porque el bloque se 
realiza sólo cuando se graban varios registros con el m étodo 
UpdateBatch. 
U SER N A M E 
Indica el valor que representa a un usuario de un objeto recordset de Ado. 
Cuando se proporcionan valores para UserName y la propiedad Password, 
el control los utiliza para crear una cadena de conexión. 
M O D E 
Indica los permisos disponibles que se tienen cuando se realiza una conexión. 
C O M M A N D T IM E O U T 
Se utiliza para indicar el tiempo que se debe esperar como máximo para un 
comando de acceso a base de datos. Si transcurre dicho tiempo, se produce 
un error. Las demoras pueden ser en el tráfico de la red. 
C O N N E C T IO N T IM E O U T 
Indica el tiempo de espera para que se realice la conexión. El valor 
predeterminado es 15 segundo. Si transcurre el tiempo indicado, se produce 
un error. 
M A X REC O RD S 
Indica el número máximo de registros que se pueden obtener al abrir la 
conexión. El valor predeterminado es cero (0) que indica un número sin 
límite de registros. 
G r u p o E d i t o r i a l Megabyte 473 < € 1 ®
VISUAL BASIC como debe ser... 
CONTROLES COMPATIBLES CON ADO 
Los controles compatibles con el control Data: DbList, DbCombo y DbGrid 
no son compatibles con el control ADO, esto quiere decir que no se pueden 
utilizar para mostrar la información de la base de datos que el control ADO 
tiene conectada. En lugar de estos controles se utilizan DataList, DataCombo 
y Datagrid. La ventaja es que sus propiedades RowSource, ListField y 
DataSource si se utilizan y de la misma forma. También se puede utilizar el 
control TextBox, Label y otros. Cuando trates de utilizar un control 
incompatible con el control ADO, se muestra el siguiente mensaje: 
M ic ro s o ft V is u a l B a sic 
O N o se ha e n c on tra do n ing ún origen de datos com patible para este control. A g re g u e un 
control D a ta intrínsec o o u n control R e m o te D a te al formulario. 
( ” A c e p ta r j j A y u d a 
Para trabajar con estos controles, cree un nuevo proyecto en el modo de “Controles 
de VB Edición Empresarial” o abra la ventana de componentes (Control + T) y 
active la casilla del control que desea utilizar. 
CO NTROL DATAGRID 
Este control es muy similar control DbGrid y permite mostrar varios registros 
a la vez, para ello, sólo le debe asignar su propiedad DataSource donde se 
indica el nombre del control ADO. 
Si no se encuentra en el cuadro de herramientas, abra la ventana de 
componentes y active la casilla de: 
M icrosoft DataGrid Control 6.0 (OLEDB). 
CONTROLES D ATALIST y DATACOM BO 
Son similares a los control DbList y DbCombo y permiten mostrar el contenido 
de un campo de varios registros. Para ello, debe asignarles como mínimo la 
propiedad RowSource, donde se indica el nombre del control ADO y la 
propiedad ListField, donde se indica el nombre del campo cuyo contenido se 
desea visualizar. 
Si no se encuentran en el cuadro de herramientas, abra la ventana de 
componentes y active la casilla de: 
M icrosoft DataLists Control 6.0 (OLEDB). 
474 G r u p o E d i t o r i a l Megabyte« 
CAPÍTULO XII: Programación ADO 
A PLIC A C IO N DESARROLLAD A N° 65 
La siguiente aplicación es un ejemplo del manejo de una base de datos, 
tablas y registros usando la programación ADO. 
1 i i . M e n u P rin c ip a l HHHHSBHHHSLioiiü 
A rtículos 
V is u a l B a s ic . C om o d e b e s 11! ! lí 
Esta aplicación permite administrar una tabla llamada Artículos que se 
encuentra en una base de datos llamada Tienda y esta grada en la unidad 
I M enu Principal 
□ 
Artículos 
Listado Qrl+L 
Mantenimiento Ctrl+M 
Consulta Ctrl+C 
Salir Qrl+S 
1 9 /0 6 /0 0 10:18 a.m. Visual Basic. Como debe s e r. TFT! ¡I 
Las opciones se pueden elegir desde el menú principal o desde la barra de 
herramientas. 
En la barra de estado se muestra la fecha actual, hora actual, nombre del 
libro y un acceso a la calculadora. 
La estructura de la tabla Artículos es: 
Codigo Texto 5 
Nombre Texto 30 
Presentación Texto 20 
ValorCompra Currency 
Vencimiento Data/Time 
G r u p o E d i t o r i a l Megabyte 475 ^
l i l i l í * VISUAL BASIC como debe ser... 
DESARRO LLO DE L A A P LIC A C IÓ N N° 65 
Cree un nuevo proyecto en el modo Controles de VB Edición Empresa­rial 
para tener en el cuadro de herramientas los controles ADO. En este 
proyecto debe estar compuesto por cuatro (4) formularios y un módulo don­de 
se deben definir las variables que se usan en más de un formulario: 
mam 
j(General) | | (Declaraciones) 1 
Public 
Puto1ic 
Puto1ic 
■ « J l 
XCODIGO, XHOMBRE, XPRE3ENTACION A s String 
XVALOR As Currency 1 
XFECHA As Date ^ | 
FORMULARIO N s 01 
En el form ulario N° 01 debe diseñar el menú, la barra de herramientas y la 
barra de estado, como se muestra en la página anterior. La creación de 
menú se explica en la Página N° 264, las barra de herramientas en la página 
N°268 (ToolBar) y las barras de estado en la página N°181 (StatusBar). En 
las barras puede utilizar cualquier gráfico de su computadora. En la página 
N° 168 se explica cómo buscar gráficos. 
Instrucciones del Form ulario N° 01 
Rem Opción Consulta 
Rem Opción Listado 
Prívate Sub Consulta_Click() 
Prívate Sub Listado_Click() 
Form4.Show 1 ‘Consulta 
Form2.Show 1 ‘Listado 
End Sub 
End Sub 
Rem Opción M antenimiento 
Prívate Sub M antenimiento_Click() 
Form3.Show 1 ‘Mantenimiento 
End Sub 
Rem Instrucciones del control StatusBar 
Prívate Sub StatusBar 1 _PanelClick(By Val Panel As MSComctlLib.Panel) 
I f Panel.Index = 4 Then Shell “c:windowscalc.exe", 1 
End Sub 
Rem Instrucciones del control ToolBar 
Prívate Sub Toolbarl_ButtonClick(ByVal Button As MSComctlLib.Button) 
I f Button.Index — 1 Then Form2.Show 1 'Listado 
I f Button. Index = 2 Then Form3.Show 1 ‘Mantenimiento 
I f Button.Index = 3 Then Form4.Show 1 ‘Consulta 
I f Button.Index = 4 Then End ‘Salir 
End Sub 
NOTA: 
El valor 1 (uno) después de la palabra Show indica el formulario sólo debe cerrarse 
haciendo click en el botón respectivo. 
G r u p o E 476 d it o r ia l M e g a b y t e ^ ^ ^ 
CAPITULO XII: Programación ADO 
FORMULARIO N g 0 2 
En el formulario N° 02 sólo dibuje un control DataGrid, una etiqueta, un 
botón de comandos y un control ADO. 
. L is ia d o d e A r tíc u lo s m n 
Labell 
|nl -I j A d o d c l | r 1 - | 
En la propiedad ConnectionString del control ADO escriba el nombre del 
origen de datos creado para la base de datos TIENDA o cree uno nuevo y 
en su propiedad RecordSource seleccione la tabla Articulos. 
Al control DataGrid asigne en su propiedad DataSource el nombre del control 
ADO, también puede asignarle otras propiedades como si se tratará del 
control DbGrid. 
IN STR U C CIO N ES D EL FO R M U LA R IO N° 02 
Instrucciones del botón C e rra r 
Prívate Sub Com mandl_Click() 
Hide 
End Sub 
Instrucciones del Form _A ctivate 
Estas instrucciones permiten que al ingresar a este formulario el control 
ADO se actualice y visualice las modificaciones realizadas a los registros 
en otros formularios. 
También se muestra en la etiqueta N° 01 la cantidad de artículos mostrados. 
Prívate Sub Form_Activate() 
A dodcl .Refresh 
Labell = “N°de Artículo mostrados: “ & Adodcl.Recordset.RecordCount 
End Sub 
G r u p o E d i t o r i a l Megabyte 477
VISUAL BASIC como debe ser... 
F O R M U L A R IO N 2 0 3 
En este formulario dibuje un control ADO, 2 DataCombo, 3 frame, 7 Label, 
6 CommandButton y un control Calendar. Si el control Calendar no se 
encuentra en el cuadro de herramientas, active su casilla en la ventana de 
componentes cuyo nombre es: Microsoft Calendar Control y para dibujarlo 
haga click primero en cualquier parte libre del formulario. 
in l «I 
rrrr.— 
l 
L¿»b«l4 
Labél'.» 
l.abnK. 
!.. .at>ial7 
IU JloComtó 
~EÌ 12000 jtJ - C o m m a n d l 1 Cornrr>arid2 | 
Conimand3 
C ó m m a n d 4 
Commands 
0 3 Z P Commands I 
PR O PIED A D ES DE LO S CO N TR O LES 
Control 
Adodcl 
Control 
DataCombo 1 
DataCombo2 
Control 
Textl 
Text2 
Text3 
Text4 
Text5 
ConnectionString 
Nombre del Origen de Datos 
RowSource 
ListField 
Adodc1 
Nombre 
Adodcl 
Codigo 
DataSource 
Adodcl 
Adodc 1 
Adodcl 
Adodc1 
Adodc1 
RecordSource 
Artículos 
Style 
1 -dbcSimpleCombo 
1 -dbcSimpleCombo 
ListField 
Codigo 
Nombre 
Presentación 
ValorCompra 
Vencimiento 
Control 
Frame 1 
Frame2 
Frame3 
Enabled 
True 
False 
True 
Control 
Calendari 
Visible 
False 
ShowTitle 
False 
A los otros controles asígneles las propiedades como se indica en el 
formulario. 
478 G r u p o E d it o r i a l Megabyte< 
CAPITULO XII: Programación ADO 
Al ejecutar el formulario debe tener el siguiente aspecto. 
■non El Articulo 1)atoi dnl l'inducl 
N ornt'.r» OSdijjo 
Vokji -J« Con h 
J I 
I nonni ~J 
ns üiRiHmibles 
Ilnonnnoon4r. —' Ambulo,. . . . 
A'- <uali*<w k>a doto« dol Aitícuio 
C A R A C TER ÍSTIC A D EL FO R M U LA R IO . 
1. Este formulario permite dar mantenimiento a los registros, esto quiere 
decir que se puede agregar nuevos artículos, actualizar sus datos o eliminar 
cualquiera de ellos. 
2. Se puede consultar un artículo por su nombre o su código. 
3. Cuando no existen registros el botón Eliminar y Actualizar se desactivan. 
4. El control Calendar 1 se visualiza cuando se desea ingresar o modificar 
la fecha de vencimiento. 
IMPORTANTE 
Cuando se manejan base de datos con ADO, no se necesita usar el método EDIT para 
modificar registros porque un registros cambia automáticamente al modo de edición 
cuando se empieza a modificar. 
La programación con ADO ya no utiliza el método FINDFIRST. El nuevo método es FIND. 
M ÉTO D O FIND 
Este método permite buscar registros cuando se trabaja con ADO. Su sintaxis 
es la siguiente. 
Control_Ado.Recordset.Find Condición, Valor 1, Valor2, Valor3 
Valor 1: Indica el número de registros que se debe saltar antes que se inicie 
la búsqueda. Si se omite no salta ningún registro. 
Valor2: Indica la dirección de la búsqueda que puede ser hacia delante 
(adSearchForw ard) o hacia atrás (adSearchB ackw ard). Si se omite, la 
busqueda se realiza hacia delante. 
Valor3: Indica la posición inicial de la búsqueda. Escriba el número 1 (uno) 
para empezar desde el primer registo. 
Ejemplo: La siguiente instrucción busca el artículo llamado Panadol. 
A d o d cl.R eco rd set.F in d N om bre = ” PanadoI” ,„ l 
NOTA: Si el registro no se encuentra se activa el final (EOF) o inicio (BOF) de la 
tabla dependiendo de la dirección de la búsqueda. 
G r u p o E d i t o r i a l Megabyte 479
J1¡1IÉ I> VISUAL BASIC como debe ser... 
INSTRUCCIONES DEL FORMULARIO N"03 
Definición de variables en General Declaraciones 
Dim r As String 
Dim NUEVO As Boolean 
Instrucciones del Form_Activate 
Prívate Sub Form_Activate() 
‘Actualiza el control Adocdl 
A dodcl.Refresh 
‘Si no hay registros, desactiva los botones Actualizar 
‘y Eliminar y no permite seleccionar registros. 
If Adodcl. Recordset.RecordCount = 0 Then 
Command4. Enabled - False 
Commands.Enabled = False 
Framel. Enabled = False 
Else 
Command4. Enabled = True 
Commands .Enabled = True 
Framel.Enabled = True 
End If 
End Sub 
Instrucciones del DataCombol 
Private Sub DataCombol_Change() 
If DataCombol = Then Exit Sub 
r = “Nombre Like + DataCombol + 
Adodcl.Recordset.Find r ,,, 1 
If Adodcl .Recordset.EOF Then 
MsgBox “No existe el Articulo “+DataCombol + ”,16,"Puede adiciomrlo" 
A dodcl. Recordset. Move First 
End If 
End Sub 
Private Sub DataCombol_Click(Area As' Integer) 
DataCombol jChange 
End Sub 
Instrucciones del DataCombo2 
Private Sub DataCombo2_Change() 
If DataCombo2 - “ ” Then Exit Sub 
r - “Codigo Like + DataCombol + 
Adodcl .Recordset.Find r, , , 1 
If Adodcl.Recordset.EOF Then 
MsgBox “NoexisteelArticuloconelcódigo “ + DataCombo2 + ”, 16, “Puedeadiciomrlo 
Adodcl. Recordset. MoveFirst 
End If 
End Sub 
Private Sub DataCombo2_Click(Area As Integer) 
DataCombo2 JChange 
End Sub 
G r u p 4 8 0 o E d it o r ia l Megabyte 
CAPÍTULO XII: Programación ADO A 
Instrucciones del Botón Nuevo 
Private Sub Command3_Click() 
Frame ¡.Enabled = False 
Frame2. Enabled = True 
Frame 3. Enabled = False 
Adodcl.Recordset. AddNew 
‘Indica Nuevo Artículo 
NUEVO = True 
Textl .SetFocus 
End Sub 
Instrucciones del Botón Grabar 
Private Sub Command I _Click() 
Frame 1 .Enabled = True 
Frame 2. Enabled = False 
Frame 3. Enabled = True 
Adodcl.Recordset. Update 
Command4. Enabled - True 
Commands.Enabled = True 
Framel.Enabled = True 
End Sub 
Instrucciones del Botón Cancelar 
Private Sub Command2_Click() 
Frame ¡.Enabled = True 
Frame 2. Enabled = False 
Frame 3.Enabled = True 
If NUEVO Then 
Adodcl.Recordset. CancelUpdate 
Else 
‘Se devuelven los datos originales 
Textl = XCODIGO 
Text2 = XNOMBRE 
Text3 = XPRESENTACION 
Text4 = XVALOR 
TextS = XFECHA 
End If 
‘Después de cancelar se ubica en el Artículo 
‘que estaba en pantalla. 
Adodcl .Recordset. AbsolutePosition=Adodcl .Recordset.Bookmark 
End Sub 
Instrucciones del Botón Actualizar 
Prívate Sub Command4_Click() 
NUEVO = False 
Framel.Enabled = False 
Frame2. Enabled = True 
Frame 3. Enabled = False 
‘Se almacenan los valores originales en variables 
XCODIGO = Textl 
XNOMBRE = Text2 
XPRESENTACION = Text3 
XVALOR = Val(Text4) 
If IsDate(TextS) Then XFECHA = CDate(TextS) 
Textl.SetFocus 
End Sub 
§ | | | ^ G r u p o E d i t o r i a l Megabyte 481
é S B k > VISUAL BASIC como debe ser... 
Instrucciones del Botón Eliminar 
Private Sub Commands_Click() 
Dim Mensaje As String 
I f Adodcl. Recordset.RecordCount - 0 Then 
MsgBox “No hay productos", 16, “No se puede eliminar" 
Else 
Mensaje = “Está seguro de eliminar el artículo ” + Chr(13) + Textl + + Text2 
I f MsgBox(Mensaje, 36, “CUIDADO”) = 6 Then 
Adodcl. Recordset. Delete 
Adodcl.Recordset. MovePrevious 
I f Adodcl.Recordset.BOF Then 
Adodc 1. Recordset. Move Next 
End I f 
‘Pregunta si quedan registros 
I f Adodcl.Recordset.RecordCount = 0 Then 
‘Si no hay registros desactiva los botones Actualizar y Eliminar y la consulta 
Command4.Enabled = False 
Commands.Enabled = False 
Frame I. Enabled = False 
End I f 
End I f 
End I f 
End Sub 
Instrucciones del Botón Salir 
Private Sub Command6_Click() 
Hide 
End Sub 
Instrucciones de Text5 
Visualiza el calendario cuando se ubica el cursor en Text5. 
Private Sub Text5_GotFocus() 
Calendar ¡.Visible = True 
End Sub 
Oculta el formulario si se pulsa ESC 
Private Sub Text5_KeyPress( Key Ascii As Integer) 
I f Key Ascii = 27 Then 
Calendar 1 .Visible = False 
End I f 
End Sub 
Instrucciones del Control calendarl 
Cuando se selecciona una fecha se oculta el Calendario. 
Private Sub C alendarl_C lick() 
Text5 = Calendarl .Value 
Calendarl .Visible = False 
End Sub 
á p l p l > 482 G r u p o E d i t o r i a l Megabyte <1 1 1 1 1 1 
CAPITULO XII: Programación ADO 
FORMULARIO N s 04 
En este formulario dibuje un control ADO, 2 DataCombo, 2 frame, 21 
Label, 2 CommandButton y un control Calendar. 
Label! 
fil ÁtaCombol 
J un J l* uut 
£... 
3 1 2 . X A 
Z L 
■ 
" 
.■ 
- W I- K ‘ 
i r r * 
Z1Ï. 
L-aboM 
LobolS 
L aboli O 
L oboli1 
L abel 13 
L Abeti 4 
jtToxlì.. 
n~- 
L oboli 7 
L Aboil a 
Lobelia 
LoboCO 
H - lc i| x | 
Comm»Kl2 I 
PROPIEDADES DE LOS CONTROLES 
Control 
Adodcl 
Control 
DataCombo 1 
DataCombo2 
Control 
Textl 
Text2 
Text3 
Text4 
Text5 
ConnectionString 
Nombre del Origen de Datos 
RowSource 
Adodcl 
Adodc 1 
ListField 
Nombre 
Codigo 
RecordSource 
Artículos 
Style 
1 -dbcSimpleCombo 
1 -dbcSimpleCombo 
DataSource 
Adodcl 
Adodc1 
Adodc1 
Adodcl 
Adodcl 
ListField 
Codigo 
Nombre 
Presentación 
ValorCompra 
Vencimiento 
Control 
Frame 1 
Frame2 
Control 
Calendarl 
Enabled 
True 
False 
Visible 
False 
ShowTitle 
False 
A las etiquetas desde la N° 15 hasta la N° 21, asígneles en su propiedad 
BorderStyle el valor 1-Fixed Single y en su propiedad Alignment el valor 1 - 
Right Justify. 
A los otros controles asígneles las propiedades como se indica en el 
formulario. 
■ G r u p o E d i t o r i a l Megabyte 483 w M
vj^ívM ' VISUAL BASIC como debe ser... 
A l e j e c u t a r e l f o r m u l a r i o d e b e t e n e r e l s i g u i e n t e a s p e c t o : 
IOOOOJ 
00004 OOÚCPS 
Doto» dol Pioduc 
Presentación 
Val« de Compra 
l(5V (183K) 
Preoio d o Compra 
Utihd*d (29X1 
P»*cio ule Venta 
Deacumito (105;) 
Joooo.^ 
[.<!■< l AdcKioi I'VJm I tcha do Vencimiento 
Actualizar lo* Dalot 
;j|Ó 3/07/03 
CARACTERÍSTICA DEL FORMULARIO. 
1. Este formulario permite visualizar los datos de cualquier artículo in­cluyendo 
campos calculados: 
IGV: 18% del Valor de Compra. 
Precio de Compra: Valor de Compra + IGV 
Utilidad: 25% del Precio de Compra 
Precio de Venta: Precio de Compra + Utilidad 
Descuento: 10% del Precio de Venta 
Precio al Publico: Precio de Venta - Descuento 
Número de días para el artículo este vencido. 
2 Si faltan menos de 30 días para que el artículo venza, se deben visualizar 
en color rojo y si ya está vencido, debe visualizar la palabra “Venci­do” 
también con letras rojas. 
3 Este formulario permite buscar al un artículo por su código o nombre 
y tiene la posibilidad de actualizarlo. 
INSTRUCCIONES DEL FORMULARIO N° 03 
Instrucciones del Form_Activate 
Prívate Sub Form_Activate() 
A dodcl. Refresh 
I f Adodcl.Recordset.RecordCount = 0 Then 
Command3.Enabled - False 
Fram el .Enabled - False 
El seC 
ommandJ. Enabled = True 
Fram el .Enabled — True 
End I f 
CAPÍTULO XII: Programación ADO 
Instrucc. del botón Grabar 
Private Sub Command 1 _Clíck() 
Frame ¡.Enabled = True 
Frame2. Enabled = False 
Command 1 .Visible - False 
Command2. Visible = False 
Command^ .Enabled = True 
Command4. Enabled = True 
A dodcl.Recordset. Update 
calcular 
End Sub 
(nstrucc. del botón Actualizar 
Private Sub Command3_Click() 
Command 1 .Visible = True 
Command2. Visible = True 
Command3. Enabled = False 
Command4. Enabled = False 
Frame ¡.Enabled = False 
Frame2.Enabled = True 
XCOD1GO = Textl 
X,NOMBRE = Text2 
XPRESENTACION = Text 3 
XVALOR = Val(Text4) 
If Not Texl5 = “ ” Then 
XFECHA = CDate(Text5) 
End If 
Textl.Set Focus 
End Sub 
Instrucciones del botón Cancelar 
Private Sub Command2_Click() 
Framel.Enabled = True 
Frame2.Enabled = False 
Commandl .Visible = False 
Command2. Visible = False 
Command3. Enabled = True 
Command4. Enabled = True 
‘Se devuelven los datos originales 
Textl = XCODIGO 
Text2 = A’NOMBRE 
Text3 = XPRESENTACION 
Text4 = XVALOR 
Text5 = XFECHA 
Adodcl. Recordset. A bsolutePosition =A dodcl. Recordset. Bookmark 
calcular 
End Sub 
Instrucciones del DataCombol 
Private Sub DataCombol_Change() 
If DataCombol = Then Exit Sub 
r = “Nombre Like + DataCombol + 
Adodcl .Recordset.Find r,,, 1 
If Adodcl.Recordset. EOF Then 
‘ + DataCombol + 16. “Puede adicionarlo" 
MsgBox "No existe el Articulo 
Adodcl .Recordset. Move First 
End If 
calcular 
End Sub 
Private Sub DataCombol_Click(Area As Integer) 
DataCombol jChange 
End Sub 
G r u p o E d it o r ia l Megabyte 485
l l l l l » VISUAL BASIC como debe ser. . . 
Instrucciones del DataCombo2 
Private Sub DataCombo2_Change() 
If DataCombo2 = “ ” Then Exit Sub 
r = “Codigo Like + DataCombo2 + 
Adodcl. Recordset. Find r, , , 1 
If Adodc 1 .Recordset.EOF Then 
MsgBox“NoexisteelArtíci(locoiielcódigo “+DataCombo2+ ”... ’’,16, ’’Puede adicionado" 
Adodcl. Recordset. MoveFirst 
End If 
calcular 
End Sub 
Private Sub DataCombo2_Click(Area As Integer) 
DataCombo2_Change 
End Sub 
Instrucciones del procedimiento Calcular 
Sub calcular() 
Dim fA s String 
Dim dias As Long 
/ = Formatf“###.####,##0.00”, “(###,####,##0.00)") 
valor = Val(Text4) 
igv = valor * 1 8 /1 0 0 
pcompra = valor + igv 
utilidad - pcompra * 25 /1 0 0 
pventa = pcompra + utilidad 
descuento — pventa * 1 0 /1 0 0 
ppublico = pventa - descuento 
Label 15 = Formatf igv, f) 
Labelló = Formatf pcompra, f) 
Label 17 = Fo rmatfutilidad,f) 
Labell8 - Formatfpventa, f) 
Label 19 = Formatf descuento,f) 
Label20 = Format(ppublico, f) 
If IsDate(Text5) Then 
dias = CDate(Text5) - Date 
lfd ia s< = 0 Then L a b el2 1 -"Vencido” Else Label21 -CDate(Text5)- Date 
if dias< ~30 Then 
Label21.ForeColor = QBColor( 12) 
Else 
Label21.ForeColor = QBColor(O) 
End If 
Else 
NOTA 
Label21 = 
End If 
End Sub 
Instrucciones de Text4 
Private Sub Text4_Change() 
calcular 
End Sub 
Las instrucciones de text5. C alendad 
y del Botón Cerrar son iguales al 
formulario anterior. 
486 G r u p o E d i t o r i a l Megabyte 
CAPITULO XII: Programación ADO % 
A P LIC A C IÓ N DESARRO LLADA N° 66 
i*. Menú Principal 
Art í culos Configuración 
Sistema 
Presentaciones 
• Esta aplicación es simi­lar 
a la anterior. Funcio- . , . i | 21/06/00 15:58 Visual Basic, Como debe ser... ¡ü ü l na con dos tablas mas: 
Configuración y Presentaciones. 
La tabla Configuración contiene sólo un registro donde se encuentran los 
datos que la aplicación necesita para un buen funcionamiento y para un mante­nimiento 
más rápido y fácil. Los datos que contiene son los siguientes: 
ULTIMO CODIGO 
Que indica cuál es el ultimo código generado y permite asignar en forma 
automática el código que le corresponde a cada nuevo producto. La aplica 
ción anterior permite que se ingrese manualmente el codigo para cada nue­vo 
artículo lo que puede ocasionar que se ingresen código repetidos. 
IGV 
En este campo se indica cuál es el porcentaje que la aplicación debe utilizar 
para calcular el IGV. La ventaja que tiene este campo es que si algún día se 
cambia el porcentaje de IGV, sólo se tendría que escribir el nuevo valor en 
la tabla y la aplicación trabajará con este nuevo valor sin necesidad de 
modificar el programa. 
U TILID AD 
En este campo se indica con qué porcentaje de utilidad debe trabajar la 
aplicación. 
DESCUENTO 
En este campo se indica con qué porcentaje de descuento debe trabajar la 
aplicación. ________________________________ 
En este formulario se confi­gura 
los datos del sistema. 
D d l u i A c l u n l m 
Ultimo CMigo 
Im puesto G enei al a la s Venias 3í 
Utilidad A ctu a l A. 
D o s t 'ionto Actual A’ 
Aceptar los Cambios I iQnorar los Cambios 
<ctjta£iz;ar ios GOatos 
G r u p o E d i t o r i a l Megabyte 487
§ÉÉt¿ék>- VISUAL BASIC como debe ser. 
La tabla Presentaciones es muy importante porque contiene todas las 
presentaciones que se pueden asignar a los artículos. Esto permite que el 
usuario ya no las escriba sino que las pueda seleccionar en forma rápida. 
En este formulario se pueden agregar o quitar presentaciones. 
•fi¡v Presentaciones TöT^l 
P o t e 
T u b o 
B o ls a 
T a b le ta s 
A m p o lla s 
P a s tilla s 
In g r e s a r N u e v a s P r e s e n t a c io n e s 
P r e s e n t a c ió n f- 
ESTRUCTURA DE LAS TABLAS 
Configuración Presentaciones 
UltimoCodigo Long Presentación Texto 20 
Igv Single 
Utilidad Single 
Descuento Single 
MUY IMPORTANTE 
En la tabla Configuración adicione un sólo registro con los valores que desea que 
la aplicación trabaje. 
En la tabla presentaciones adicione todas las presentaciones que desea estén dis­ponibles 
para asignar a los artículos. 
OTRAS CARACTERISTICAS DE ESTA APLICACIÓN 
• Se pone a disposición del usuario un calendario, el cual se activa cuando hace click 
en la fecha de la Barra de Estado. 
• El programa de listado muestra también los campos calculado usando los valores 
de la tabla Configuración. 
• Se debe ingresar una clave para modificar los datos de la tabla configuración. 
• El ingrese de nuevos artículos es consecutivo, es decir, cuando se graba un artículo 
la computadora queda lista para ingresar uno nuevo, generándose automáticamente 
su codigo. 
• Cuando ubica el cursor en el DataCombo3 se muestra las presentaciones 
automáticamente. 
• Cuando ubica el cursor en el DTPickcr I se muestra el calendario automáticamente. 
G r u p 488 o E d it o r ia l Megabyte 
CAPÍTULO XII: Programación ADO < € ¡¡¡1 ^ 
DESARROLLO DE LA APLICACIÓN N° 66 
Agregue a la aplicación anterior el formulario N° 5 (Configuración), el formulario N°6 
(Clave para actualizar la tabla Configuración) y el formulario N° 7 (Presentaciones). 
FORMULARIO N s 01 
En el formulario N° 1 (Menú Principal) agregue la opción Configuración con dos 
subopciones: Sistema y Presentaciones. También debe dibujar en el centro de este 
formulario un control Calendar y en su propiedad Visible asígnele el valor False, 
sólo se debe visualizar cuando se haga click en la fecha. 
Instrucciones del Menú Principal 
Son similares a la aplicación anterior 
Prívate Sub Consulta_Click() 
Form4.Show 1 
End Sub 
Prívate Sub Listado_Click() 
Form2.Show 1 
End Sub 
Prívate Sub Mantenimiento_Click() 
Form3.Show 1 
End Sub 
Prívate Sub Presentaciones_Click() 
Form7.Show 1 
End Sub 
Prívate Sub Sistema_Click() 
Form5.Show 1 
End Sub 
Prívate Sub StatusBarl_PanelClíck(ByVal Panel As MSComctlLíb.Panel) 
If Panel.Index = 1 Then Calendar 1 .Visible - True 
If Panel. Index = 4 Then Shell “c:windowscalc.exe”, I 
End Sub 
Prívate Sub Toolbarl_ButtonClick(ByVal Button As MSComctlLíb.Button) 
If Button. Index = 1 Then Form2.Show 1 
If Button. Index = 2 Then Form3.Show 1 
If Button.lndex = 3 Then Form4.Show 1 
If Button. Index = 4 Then End 
End Sub 
Cuando se pulsa ESC en el calendario, este se oculta 
Prívate Sub Calendar 1 _KeyPress(KeyAscii As Integer) 
If KeyAscii - 2 7 Then Calendar ¡.Visible = False 
End Sub 
G r u p o E d i t o r i a l Megabyte 489
^ l l l í l l l * VISUAL BASIC como debe ser... 
FORMULARIO N s 02 
En el formulario N° 02, agregue un control ADO (Adodc2) y conéctelo a la tabla 
Configuración para que los datos calculados se obtengan de los valores que contie­ne 
esta tabla. 
También agregue un control Frame con 6 etiquetas. Para que en Label3 se muestre el 
Igv de la tabla Configuración, en Label5 la Utilidad y en label7 el Descuento. 
IGV p tNMad Dwcuerto pôÇ 
-------------^ ..................., ........- - 3 Tpi 
Acaricida Crema >: P0 gr i Pole 5 00 o ía 510 1.29 6.33 064: 5.7« 30/ 06/02 i 73P. ~ 
► Acancida Loción x E.0 mi fiasco 10.00 0 20 1020 2.55Í 12 75 1 23 11 4907/ 01/03 i 327 
perniili X 20 Compnmido? i Caía 13W 026 13-26! 3 32 i$.5a 1 æ 14.9219/ 01/02 i 574 
P i .a Cola'. 20 mi i Fiasco 23.00 0 4G 23.4G 5.87 2133 2 V Í 26 3$ 16/ 10/02 i 844 
Paiwdol Aritigwal x M.i tafo i Cat* 4 i ».i 0.08 4 00 1 02 510 0.51! 4.58 30/ 12/01 :*/.u , 
< ............................... i .....: .................. •r 
N* d« A ll (culo «axbadoi: 78 
[h|<|m~h ¡>|»i|u|jiJ».i.t-' [>JmJ I I 
Instrucciones del Formulario N° 02 
Prívate Sub Forrn_Activate() 
Dim texto, fA s String 
f = Formatf“###,####,##0.00”, “(###,####,##0.00)'') 
Adodc2.Refresh 
‘Cambia el tipo de Comando para poder utilizar instrucciones SQL 
Adodcl.Command.Type = adCmdText 
‘Almacena en las etiquetas los valores de configuración 
Label3 - Adodc2.Recordset!lGV& “% ” 
Labe 15 = Adodc2.Recordset!UTILIDAD & “% ” 
Label7 = Adodc2.Recordset!DESCUENTO & “%" 
‘Almacena en variables los valores de la tabla configuración para realizarlos cálculos. 
I = Adodc2.Recordset!IGV /1 0 0 
U = Adodc2. Recordset! UTILIDAD /1 0 0 
D = Adodc2. Recordset!DESCUENTO /1 0 0 
‘Instrucción SQLpara los campos calculados. Escriba todo en una sola lútea 
Adodcl.RecoidSowee= “selectCodigo,no>ribnj,pmerttacion,va¡orcompra,valoivompra* “&I& “asIGV 
vaIorconipm+igvas[PreeioCompra],[PrecioCompra]*“&U& “asUtilidad,[PrecioCompraJ+Utilkbd 
as [Precio Venta], [Precio Venta] * “ &d&“ as Descuento, [Precio Venta] - Descuento as [Piecio Publico], 
Vencimiento, vencimiento -#’’& Dale &' ‘#as Diasfrom artículos " 
Adodcl .Refresh 
‘Asigna un formato y alineación a la derecha para las columnas que contiene números 
For X = 2 To 8 
DataGridl.Columns(X).NumberFormat = f 
DataGrid1 .Colurnns(X).Alignment = dbgRight 
Next X 
DataGrid1 .Caption = “Listado de artículos al “ & Now 
Labell = “N° de Artículo mostrados: “ & Adodcl.Recordset.RecordCount 
End Sub 
Í ||¡ ||¡ ^ 490 G r u p o E d i t o r i a l Megabvte 
CAPÍTULO XII: Programación ADO ^ Í ¡ Í É Í P 
FORMULARIO N g 03 
El diseño del formulario N° 03 (Mantenimiento), es similar al de la aplica­ción 
anterior. Sólo debe cambiar en la presentación el control Text3 por el 
control DataCombo3 para que el usuario pueda seleccionar la presentación 
del artículo y en la fecha de vencimiento, debe cambiar Text5 por el control 
DTPickerl. Text3 debe usarlo para ingresar el Valor de Compra. Text4 y 
Text5 se deben borrar. Al botón Cancelar cámbiele su propiedad Caption 
por Salir. Los botones Grabar y Salir se visualizan cuando se agregan nue­vos 
artículos. Debe dibujar dos botones más: Aceptar Cambios (Command7) 
y Cancelar Cambios (Command8) los cuales se visualizarán cuando actua­lice 
los datos de un artículo. Esta parte del formulario N° 03 debe quedar de 
la siguiente manera: 
C ódigo | t eKtl 
N om bre |T ext2 
P re sen tació n 1 D a taC o m b o 3 d 
V a lo r de Com pra jT ext3 G rabar 
F e c h a de V e n c im ie n to 1 2 0 /0 6 /0 0 
d 
Salir 
A c e p ta r C am bios C a nce la r C am bios 
A los cuatro botones asígneles en su propiedad Visible el valor False porque 
sólo se deben visualizar cuando se agreguen nuevos artículo o se actualicen 
sus datos. 
CONTROL DTPICKER 
□ 
Este control permite también ingresar una fecha de manera personalizada. 
Para visualizarlo en el cuadro de herramientas debe crear un proyecto en el 
modo Controles de VB E dición E m presarial o en la ventana de Compo­nentes 
activar la casilla: M icrosoft Windows Common Controls-2 6.0. 
Cuando lo dibuja en el formulario toma la forma de un Combo y muestra la 
fecha. Si desea ingresar la hora, asígnele en su propiedad Format el valor 2- 
dtp Time. 
120/06/00 "»] j 02:35:41 p.m. - p 
G r u p o E d i t o r i a l Megabyte 491
| ® | > VISUAL BASIC como debe ser. . . 
Cuando ejecute la aplicación debe hacer un click en la flecha para m irar el 
calendario y si desea cam biar el mes, haga click sobre el nom bre del mes 
y para cam biar el año, haga click en el año. 
J u n io 2 0 0 0 - ± J 
28 23 30 31 1 2 3 
4 5 6 7 8 9 10 
11 12 13 14 15 16 17 
18 19 20 21 2 2 24 
25 26 27 28 29 30 1 
2 3 4 5 8 7 8 
D H o y 2 3 / 0 6 / 0 0 
La fecha que selecciona se muestra en el control y se almacena en su propiedad Valué. 
En este form ulario d e m antenim iento tam bién d eb e d e agregar d os con troles A D O . El control 
A d o d c2 lo d eb e conectar a la tabla P resen tacion es y el A d od c3 a la tabla C onfiguración. 
A l control D ataC om bo3 le d eb e asignar las propiedades: 
RowSource ListField DataSource DataList 
A dodc2 Presentación A d o d c l Presentación 
L as propiedades D ataSource y D ataL ist perm iten que cuando se se leccio n a una presentación, 
esta se grabe en la tabla Artículos. 
AI control D T P ick erl le d eb e asignar las propiedades: 
DataSource D ataList 
A d o d c l V encim iento 
E sto perm ite que cuando se se le c c io n e una fech a, se grabe en la tabla A rtículo. 
A l control T e x tl a síg n ele en su propiedad L ock el valor True para q u e no se perm ita ingresar 
o m odificar el có d ig o , ya que se autogenera m ediante la tabla C onfiguración. 
IN STR U C C IO N ES D EL FO R M U L A R IO N° 03 
La programación de este formulario sólo varía en los siguiente controles: 
Instrucciones del Botón Ingresar Nuevo A rtículo 
Prívate Sub Command.3_Click() 
Framel.Enabled = False 
Frame2.Enabled = True 
Frame3.Enabled = False 
Command 1 .Visible = True 
Command2. Visible = True 
Adodcl .Recordset.AddNew 
NuevoCodigo = Adodc3.Recordset!ultimocodigo + 1 
Textl = Format(NuevoCodigo, “00000”) 
Text2.SetFocus 
End Sub 
492 G r u p o E d i t o r i a l Megabvte 
CAPÍTULO XII: Programación ADO ^ ¡ ¡ ¡ I P 
Instrucciones del Botón Actualizar 
Private Sub Command4_Click() 
Framel.Enabled = False 
Frame2.Enabled = True 
Frame 3.Enabled = False 
Command7. Visible = True 
Command8. Visible = True 
'Se almacenan los valores originales en variables 
XCODIGO = Textl 
XNOMBRE = Textl 
XPRESENTACION = DataCombo3 
XVALOR = Val(Text3) 
XFECHA = DTPickerl 
Text2. Set Focus 
End Sub 
Instrucciones del Botón Grabar 
Private Sub Commandl _Click() 
‘Graba el nuevo Artículo 
A dodcl. Recordset. Update 
‘Actualiza el campo "UltimoCodigo" de la tabla Configuración 
Adodc3. Recordset!ultimocodigo = NuevoCodigo 
Adodc3.Recordset. Update 
‘Prepara un nuevo registro 
Adodcl.Recordset.AddNew 
NuevoCodigo = Adodc3. Recordset!ultimocodigo + 1 
Textl = Format(NuevoCodigo, “00000”) 
Text2. Set Focus 
End Sub 
Instrucciones del Botón Salir 
Private Sub Commcind2_Click() 
Frame 1 .Enabled = True 
Frame2. Enabled = False 
Frame3. Enabled = True 
Commandl. Visible - False 
Command2. Visible = False 
Adodcl. Recordset. Cancel Update 
If Adodcl. Recordset. RecordCount = 0 Then 
Command4. Enabled = False 
Command5. Enabled = False 
Frame 1 .Enabled = False 
Else 
Command4. Enabled = True 
Commands. Enabled = True 
Framel.Enabled = True 
End If 
End Sub 
i p ! ^ G r u p o E d i t o r i a l Megabyte 4 9 3
VISUAL BASIC como debe ser... 
Instrucciones del Botón Aceptar Cambios 
Private Sub Command7_Click() 
Frame!.Enabled - True 
Frame2. Enabled = False 
Frame3. Enabled = True 
Command7. Visible - False 
Command8. Visible - False 
Adodcl.Recordset.Absolut ePosition- Adodcl.Recordset.Bookmark 
End Sub 
Instrucciones del Botón Cancelar Cambios 
Private Sub Command8_Click{) 
‘Si cancela, se devuelven los datos originales 
Textl = XCODIGO 
Text2 = XNOMBRE 
DataCombo3 = XPRESENTACION 
Text3 = XVALOR 
DTPickerl = XFECHA 
Frame ¡.Enabled = True 
Frame2.Enabled = False 
Frame 3. Enabled = True 
Command7. Visible — False 
Command8. Visible = False 
End Sub 
Instrucciones del Control DataCombo3 
Private Sub DataCombo3_GotFocus() 
“Cucav¡ose ubica el cursor en DataConibo3 se muestran las presentaciones 
SendKeys "¡F4}" 
End Sub 
Instrucciones del Control DTPicker 
Private Sub DTPickerl_CloseUp() 
‘Despues de seleccionar la fecha seenfoca el botón Grabar 
Command¡. Set Focus 
End Sub 
Private Sub DTPickerl_GotFocus() 
‘Cuando se ubica el cursor en DTPickerl se muestra el calendario 
SendKeys “IF4¡’’ 
End Sub 
Instrucciones del Control Text3 
‘Sólo permite el ingreso de números 
Private Sub Text3_KeyPress(KeyAscii A s Integer) 
lf(Chr(KeyAscii)< “0” OrChr(KeyÁscii)> “9") And KeyAscii O 8Then KeyAscii=0 
End Sub 
N O T A 
Las instrucciones de los otros controles son iguales a los d e la aplicación anterior. 
Las instrucciones del F o rm u la rio N" 04 (Consulta) se desarrolla de la m ism a forma que el 
Formulario N°03, sólo debe de mostrar los cam pos calculados y permitir actualizar de los artículos. 
4 9 4 G r u p o E d i t o r i a l Megabyte-1 
CAPÍTULO XII: Programación ADO 4 1 1 1 1 
FORMULARIO N 2 0 5 
Este formulario permite actualizar los datos del sistema. Su diseño es muy sencillo, 
sólo debe dibujar 4 etiquetas, 4 Cajas, 4 botones de comandos, un control Frame y 
un control ADO. Al control ADO conéctelo con la tabla Configuración y a las cajas 
de texto con el campo respectivo. Asigne el valor False a la propiedad ControlBox 
del formulario y a propiedad Enabled del control Frame 1 para que no se pueda 
modificar los datos hasta que se ingresa correctamente la clave. El aspecto final del 
formulario debe ser: 
O a l o * A c t u a l e s 
Ultimo Código 
Impuesto General e les Ventas JText2 
Utilidad Actual 7¡¿ |Text3 
D escuento Actual 
Aceptar los Cambios j Ignorar los Cambios j 
I 1-^ I ^ I A d o d c l 
Instrucciones del Form Actívate 
Prívate Sub Form_Activate() 
Adodcl .Refresh 
End Sub 
Instrucciones del Botón Actualizar los Datos. 
Prívate Sub Command3_Click() 
‘Llama al formulario N°6 para ingresar primero la clave 
Formó.Show ¡ 
End Sub 
Instrucciones del Botón Aceptar Cambios 
Prívate Sub Command¡_Click() 
Adodcl .Recordset. Update 
Frame ¡.Enabled = False 
End Sub 
Instrucciones del Botón Ignorar Cambios 
Prívate Sub Command2_Click() 
Adodcl. Recordset. CancelUpdate 
Adodcl .Recordset. MoveFirst 
Frame ¡.Enabled = False 
End Sub 
Instrucciones del Botón Cerrar 
Prívate Sub Command4_Click() 
Hide 
End Sub 
G r u p o E d i t o r i a l Megabyte 4 9 5
l i l i l í VISUAL BASIC como debe ser... 
Como se indica en las instrucciones del botón Actualizar los Datos, cuando 
el usuario haga click en este botón se visualiza el formulario N° 06 para 
ingresar la clave. Su diseño consiste en un control Picture con el gráfico que 
usted desee, una etiqueta, una caja de texto y un botón de comando. Al 
formulario asígnele en su propiedad BorderStyle el valor 0-None. 
Clave de A cce so 
Ok 
Instrucciones del Botón OK (Formulario N°6) 
‘En este ejemplo la clave es VISUAL. 
Prívate Sub Commandl_Click() 
I f UCase(Textl) = “ VISUAL” Then 
Form5!Framel.Enabled = True 
ElseF 
orm5!Framel .Enabled = False 
End I f 
Textl = 
Hide 
End Sub 
FORMULARIO N g 07 
Este formulario permite ingresar o eliminar presentaciones para asignar a 
los productos. Su diseño consiste en un control DataList, un Frame, una 
etiqueta, dos botones de comandos y un control ADO. Al control ADO 
conéctelo con la tabla Presentaciones y el control DataList 1 debe tener en 
su propiedad RowSource el nombre del control ADO y en su propiedad 
ListField el cambo Presentación. 
-j.gi .sj 
DataListl 
Ingresar Nuevas Presentaciones 
Presentación j Textl 
: : : : : : : : :  < | Adodd 1 ► 1 ►» | : : : : : : : : : 
496 G r u p o E d i t o r i a l Megabyte < 
CAPITULO XII: Programación ADO n 
El control Command 1 permite borrar una presentación, tiene en su propiedad Style 
el valor 1-Graphical, en su propiedad Picture un gráfico y en su propiedad Enabled 
el valor False porque sólo se active cuando se seleccione una presentación. 
Para adicionar una nueva presentación escríbala en la caja de texto y pulse ENTER 
para que se grabe. 
Instrucciones del Form Actívate 
Private Sub Form_Actívate() 
'Si no hay nunguna presentación se desactívate DataList 1 
If A dodcl.Recordset.RecordCount = 0 Then 
DataList ¡.Enabled - False 
E n d lf 
End Sub 
Instrucciones del Control DataListl 
Busca la presentación seleccionada y activa el Commandl. 
Private Sub DataList l_Click() 
r = “Presentación = “ ‘ + DataList 1 .Text + 
Adodcl. Recordset. Find r,, , 1 
Commandl .Enabled = True 
End Sub 
Instrucciones del botón Borrar Presentación (Gráfico) 
Private Sub Commandl_CIick() 
A dodcl.Recordset.Delete 
DataListl .ListField = “presentación” 
Commandl.Enabled = False 
If Adodcl .Recordset.RecordCount = 0 Then 
DataListl .Enabled = False 
E n dlf 
End Sub 
Instrucciones del Control Textl 
Permiten grabar la presentación al presionar ENTER 
Prívate Sub Textl_KeyPress(KeyAscii As Integer) 
IfKeyAscii - 13 Then 
If Textl <> Then 
DataListl .Enabled - True 
A dodcl.Recordset. AddNew 
Adodcl .Recordsetípresentacion = Textl.Text 
Adodcl .Recordset. Update 
Textl = 
End If 
E n d lf 
End Sub 
Instrucciones del botón Salir 
Private Sub Commandl_Click() 
Hide 
End Sub 
G r u p o E d i t o r i a l Megabyte 497
f M ¡ ¡ § 
f r VISUAL BASIC como debe ser. 
EL DATAREPORT 
El Visual Basic 6.0 tiene un nuevo control para crear reportes. Este control 
se llama DataReport. 
Para trabajar con el DataReport debe de adicionarlo 
EraY0Cto a su 4proyecto, para ello, haga click en la opción 
¡ 3 Agregar formulario _ " , . * , 7 . . 
Agregar formulario m di Proyecto de la barra de menú y luego en Agregar 
Agregar módulo D c l t c l R c p O f t . 
Agregar módulo de dase 
J f Agregar control de usuario 
i a Agregar página de propiedades 
í¡i§ 
Agregar DHTML Page 
Agregar Data Report _________ 
Agregar WebClass 
Agregar Data Environment 
Agregar archivo,.. C trl+D 
Quitar Form i 
^ R e f e r e n c ia s ... 
Com ponentes... C trl+ T 
Propiedades de Proyecto 1 ... 
Si no visualiza la opción Agregar DataReport, activa la ventana 
de Componentes y en la hoja Diseñadores active la casilla del 
DataReport 
Se visualiza la ventana para crear el reporte y en el cuadro de 
herramientas se agrega una nueva sección con los controles 
que puede insertar en el reporte. 
General 
DataReport 
% 
Si activa la ventana de Proyecto se visualiza el DataReport el cual al momento 
de grabarse tiene la extensión *.DSR. 
Proyecto - Proyectol F l 
□ a 
' Proyecto 1 (Proyecto 1) 
Ü Formi (Formi) 
NOTA 
Si regresa al formulario y no visualiza los 
controles en el cuadro de Herramientas, haga 
clic en la ficha General. 
4 9 8 G r u p o E d i t o r i a l Megabyte-1 
CAPÍTULO XII: Programación ADO 
El DataReport inicialmente esta compuesto por 5 secciones que se utilizan 
para diseñar el Reporte. 
Sección N° 01 - DETALLE 
Es la sección principal porque aquí se indican los datos que se desea mostrar 
en el reporte. Estos datos normalmente se obtienen de una o mas tablas 
usando el control RptTextBox. 
Sección N° 02 - ENCABEZADO DE PAGINA 
Es la sección que contiene el texto que se imprimirá al inicio de cada página 
del reporte. La información que se muestra en esta sección es: Encabezado 
de cada campo, N° de página, etc. 
Sección N° 03 - PIE DE PÁGINA 
Es la sección que contiene el texto que se imprimirá al final de cada página 
del reporte. Aquí también se puede mostrar el número de cada página, la 
fecha y hora de impresión, etc. 
Sección N° 04 - ENCABEZADO DE INFORME 
Es la sección que contiene el texto que se imprimirá sólo al inicio del Reporte. 
Aquí puede mostrar el nombre de la empresa y comentarios sobre el reporte. 
Sección N° 05 - PIE DE INFORME 
Es la sección que contiene el texto que se imprimirá sólo al final del Reporte. 
Aquí puede mostrar por ejemplo algún resumen del reporte. 
MUY IMPORTANTE 
Al momento de crear el reporte no es obligatorio que utilice todas las secciones. 
CONFIGURAR LA VENTANA DE DISEÑO DEL REPORTE 
Cuando agrega un DataReport a su proyecto puede asignarle el tamaño 
que usted desee y configurar su 
N o-«tí - . Cl/H-H 
ventana de diseño. Para ello haga 
click con el botón derecho en 
5 Ot i’fV 
cualquier parte de la ventana. Se 
mostrará un menú contextual con 
las siguientes opciones: 
insertar control ► 
1 -.fwtifi# ti'^'tíbcfr'ído r. ‘:fí - =_.e jziupi 
Insertar e n ca b e za d o o pie de grupo 
*✓ M ostrar e n ca b e za d o o pie de inform e 
M ostrar e n ca b e za d o o pie de página 
V M ostrar cu a d ríc ula 
✓ M ostrar reglas 
>✓ Forzar a la cu a d ríc ula 
O btener estructura 
Borrar estructura 
Por ejemplo, si desactiva la opción Forzar a la cuadrícula, los controles 
se dibujarán con el tamaño que usted desee. También puede oculta o 
visualizar secciones e insertar controles. 
G r u p o E d i t o r i a l Megabyte 4 9 9
^ É IIIéI^ VISUAL BASIC como debe ser... 
CONTROLES DEL DATAREPORT 
Los controles para crear reportes son muy similares a los controles que se 
dibujan en un formulario incluyendo sus propiedades. 
RptLabel: Permite insertar mensajes en el Reporte. 
RptTextBox: Permite indicar los campos a mostrar en el reporte. 
Rptlmage: Permite insertar imágenes en el reporte. 
RptLine: Permite insertar líneas en el Reporte. 
RptShape: Permite insertar figuras geométricas en el Reporte. 
RptFunction: Permite insertar funciones en el reporte. 
Cuando dibuja en el reporte el control RptFunction en forma predetermina­da 
se muestra la función SUM que permite sumar campos numéricos den­tro 
del reporte. Si desea usar otra función active su propiedad FunctionType 
donde podrá seleccionar además las siguiente funciones: 
1-RptFuncAve.- Para obtener el Praomedio. 
2-RptFuncMin.- Para Obtener el valor Mínimo. 
3-RptFuncMax.- Para obtener el valor Máximo. 
4-RptFuncRCnt.-Para obtener la cantidad de registros. 
5-RptFuncVCnt.-Para obtener la cantidad de registros en blanco 
6-RptFuncSDEV.-Para obtener la desviación estándar. 
7-RptFuncSERR.-Para obtener el error estándar. 
NOTA 
Los controles se puede insertar en el DataReport desde el 
cuadro de Herramientas o haciendo click derecho en la 
ventana de diseño y eligiendo la opción Insertar Control. 
Los controles que estén disponibles depende de la sec­ción 
donde hizo click derecho. 
Etiqueta 
Cuadro de texto 
Im age 
L ín ea 
Forma 
Número actual de página 
Número total de páginas 
F ech a actual (formato corto) 
F ech a actual (formato largo) 
H ora actual (formato corto) 
Hora actual (formato largo) 
T ítulo del informe 
500 G r u p o E d it o r i a l Megabyte< 
CAPÍTULO XII: Programación ADO ^ ¡ ¡ ¡ ¡ ¡ ^ 
También puede insertar o escribir códigos predefinidos dentro del reporte 
usando el control RptLabel: 
%p : Muestra el número de página actual. 
%P : Muestra el número de páginas que tiene el reporte. 
%d : Muestra la fecha actual con formato corto. 
%D : Muestra la fecha actual con formato largo. 
%t : Muestra la hora actual con formato corto. 
%T : Muestra la hora actual con formato largo. 
%i : Muestra el título del informe. 
PROPIEDADES BÁSICAS PARA CREAR UN REPORTE 
Las propiedades que necesita asignar para crear el reporte depende del 
origen de los datos que quiera utilizar para el DataReport. Por ejemplo, si 
desea utilizar un control ADO para que el DataReport muestre los registros 
que contiene, sólo necesita asignarle a través una instrucción en su propiedad 
DataSource del DataReport el nombre del control ADO y en cada control 
RptTextBox que se use en la Sección de Detalle escribir (no seleccionar) 
en su propiedad DataField el nombre de cada campo cuyo contenido se 
desea mostrar en el reporte. 
Para cam biar los m árgenes del D ataReport utilice sus propiedades: 
RightMargin(Derecho) LeftMargin (Izquierdo), BottomMargin (Inferior) y 
TopMargin (Superior). 
Para indicar el tamaño inicial de la ventana del DataReport use su propiedad 
WindowState. 
MÉTODOS DEL DATAREPORT 
SHOW 
Muestra sólo en pantalla el reporte (Vista Previa), pero contiene dos botones 
en la esquina superior derecha que permiten enviar a la impresora el reporte 
o exportarlo como tipo HTML para enviarlo a través de Internet o de tipo 
texto para leerlo desde otro programa. 
PRINTREPORT 
Permite enviar el reporte directamente a la impresora. 
REFRESH 
Permite actualizar el reporte. 
EXPORTREPORT 
Permite exportar el reporte como HTTML o texto. 
HIDE 
Permite ocultar el reporte, 
l i l i l í Grupo E d ito ria l Megabyte 501
# m VISUAL BASIC como debe ser. J f l j j j H H H A 
APLICACIÓN DESARROLLADA N° 67 
A la aplicación anterior agregue un nuevo formulario. Este formulario muestra 
en un Datagrid los artículos, pudiéndolos seleccionar mediante una condi­ción 
que Ud, forme. Esta condición puede ser múltiple, es decir, el usuario 
puede hacer uso del operador AND (Y) o del operador OR (O) las veces 
que desee y al hacer click en el botón IM P R IM IR todos los artículos que 
se encuentran en el DataGrid se muestran también en el reporte. 
•ü. R e p o r te d e A r tíc u lo s - Iniisi 
I presentación 
Condición 
p r e s e n t a c i ó n = *F 
Mostrar con la Condición Mostrar Todos 
codioo ~1 valorçpmp.ra vencimiento 
► 00006 AB-Broncol 300 IM Frasco 9.5 15/06/00 
00007 01/05/02 
00002 
AB -B roncol 600 1M Frasco 12 
Acaricida Loción x 60 mi. Frasco 10 07/01/03 
00009 
00010 
00004 
Fenistü Gotas Frasco 20 mi 
Finistil Jarabe Frasco 100 mi 
Frasco 13 29/06/00 
Frasco io. 28/06/00 
Pilka Gotas 20 mi Frasco 23 16/10/02 
D e u n to ta l d e 2 8 a r t í c u l o s , s e m u e s tr a n 6 q u e r e p r e s e n ta n e l (2 1 .4 3 % ) 
IM P R IM IR I Cem» | 
•jjt DataReportl I3B 3 I 
Zoom Uoox , ~E MWB«B?aÉu 
REPORTE DE ARTÍCU LO S A L 28/06/00 
Condición : p re s e n ta ció n = 'Fra s c o ' P á g in a N° 1 d e 1 
C ó d i g o A rt íc u l o P r e s e n t a c i ó n V a lo r d e C o m p r a F e c h a d e V e n c im ie n t o 
0 0 0 0 6 A B -B ro n co l 3 0 0 IM F r a s c o 9 .5 0 1 5 jC 6 jOO 
0 0 0 0 7 A B -B ro n co l 6 0 0 IM F r a s c o 1 2 .0 0 01J05J02 
0 0 0 0 2 A ca ricid a L oción x 6 0 mi F r a s c o 1 0 .0 0 0 7 /0 1 /0 3 
0 0 0 0 9 Fenistil G o ta s F r a s c o 20 F r a s c o 1 3 .0 0 2 9 /0 6 /0 0 
0 0 0 1 0 Finistil J a r a b e F r a s c o 1 0 0 F r a s c o 1 0 .0 0 28 .0 6 /0 0 
0 0 0 0 4 Pilka G o ta s 2 0 mi F r a s c o 2 3 .0 0 16 /1 0 /0 2 
P á g in a s: Hj< fP 
D e u n t o t a l d e 28 a r t í c u l o s , s e m u e s t r a n 6 q u e r e p r e s e n t a n e l (2 1 .4 3 % ) 
±lHj 
502 G r u p o E d i t o r i a l Megabyte 
CAPÍTULO XII: Programación ADO 
OTRAS C A R A CTER ÍSTIC A DE LA A PLIC A C IÓ N : 
Los nombre de los campos se llenan automáticamente en el Combo. 
Cuando se selecciona el campo Vencimiento y ubica el cursor en 
Textl para ingresar el valor, se visualiza el calendario. 
Si elige el ValorCompra no se permite el ingreso de letras. 
Al hacer click en el botón Aceptar, la condición que el usuario forma se 
almacena en una caja de texto para que se pueda editarla si lo desea. 
Al hacer doble click en un campo los artículos se ordenan por dicho 
campo. 
Al mostrar los registros se muestra la cantidad total de artículos, la can­tidad 
de artículos mostrados y el porcentaje que representa del total. 
El contenido de algunas etiquetas del formulario se pasan al reporte 
(DataReport). 
Si no se forma una condición correcta se visualiza el respectivo mensaje. 
1. 
D ESA R RO LLO DE LA A PLIC A C IÓ N 
D ib u jar los controles EneoLJoM 
2. Asignar las propiedades. 
• Al control Adocd 1 conéctelo con la tabla artículos y al DataGrid 1 selec­cione 
el Adodcl en su propiedad DataSource. 
• Al los controles Adodcl y Calendar 1 asígneles en su propiedad Visible 
el valor False. 
• Al resto de controles asígneles sus propiedades como se indica en la 
aplicación a desarrollar. 
G r u p o E d it o r i a l Megabyte 503
VISUAL BASIC como debe ser. 
DISEÑO DEL DATAREPORT 
Agregue a la aplicación un DataReport e inserte los controles y sus 
propiedades para que tenga el siguiente aspecto: 
í|É D ataR eport! 
0- I • 1 • I • 2 • I • 3 ■ I . 4 i | • 5 > | > 6 < I i 7 • I • 8 • -1 * 9 * 1 ■ 10 ■ I ■ 11 ■ I ■ 12 ■ I ■ 13 ■ I ■ 14 ■ I ■ 15 ■ I ■ 16 ■ I .1 
■ f Encabezado de informe (Sección4) 
Encabezado de página (Sección2) 
R E P O R T E D E A R T IC U L O S A L % d 
.Condición : &¡qUetal 
Código 
4 Detalle (Sección 1) 
Presentación Valor de Compra 
ÉPÉÉÉ5ÉS 
Página N- %p de %P 
Fecha de Vencimiento 
_ 
Codigo ! Nombre 
4- Pie de página (5ección3) 
Presentación VálorCompra Vencimiento 
4 Pie de informe (Sección5) -------- 
E tiq u é ta lo í 
En la sección de encabezado de Página dibuje 9 etiquetas para los títulos del 
reporte. Por ejemplo, la Etiqueta 1 tiene en su propiedad Caption: REPORTE 
DE ARTÍCULOS AL %d para que se muestre también la fecha. La etiqueta4 
tiene en su propiedad Caption: Página N° %p de %P, para que se muestre el 
número de la página actual y la cantidad total de páginas. 
La Etiqueta3 debe estar vacía para mostrar allí el contenido de Text2 
(Condición) del formulario. 
La Etiquétalo también debe estar vacía para mostrar allí el contenido del 
Label2 del formulario. 
En la sección de Detalle dibuje 5 cajas de texto y escriba (no seleccione) el 
nombre exacto de cada campo de la tabla cuyo contenido se desea mostrar 
en el reporte. 
Al control Text4 asígnele en su propiedad Alignment el valor 1-RptJustifyRight 
porque los valores numéricos se deben alinear por la derecha. Además debe 
asignarle en su propiedad DataFormat el Formato Currency con 2 decimales 
y en Símbolo el valor None. 
NOTA 
Si desea mostrar campos calculados en el reporte, utilice el nombre que le asigna 
en la instrucción SQL después de la palabra AS. 
^ |||||¡ ^ 504 G rupo E ditorial Megahvte <l l § á l i | 
CAPÍTULO XII: Programación ADO 
INSTRUCCIONES DEL FO R M U LA R IO 
Instrucción del Forma Activate 
Prívate Sub Form_Activate() 
‘Llena el Combol con los nombre de los campos de la tabla Artículos 
C om bol.Clear 
F orX = 0 To A dodcl.Recordset.Fields.Count - 1 
Combol.Addltem Adodcl.Recordset(X).Name 
N extX 
Combol.Listlndex - -1 ‘Deja en blanco el Combol 
'LlenaelCombo2conlosoperadores lógicos. Dejeespacioantesydespuésdel Operador 
Combo2.Clear 
Combo2.Addltem “ = “ : Combo2.Addltem “ < “ 
Combol.Addltem “ > “ : Combo2.Addltem “ < = “ 
Combo2.Addltem “ > = “ : Combol.Addltem “ < > “ 
Combo2. Addltem “ like “ : Textl - : Text2 = 
Adodcl. Refresh 
TR = Adodcl. Recordset. RecordCount 
Label2=”Deu>itotalde “&TR& “ artículos, se muestran “&TR& “ que representad100.00%" 
End Sub 
Instrucción del Botón Aceptar 
Private Sub Command 1 JClickf) 
‘Pregunta si el campo seleccionado es tipo Text 
If Adodcl. Recordset(Combol.Listlndex).Type = 202 Then 
'Pregunta si se eligió el operador LIKE 
If Combo2. Listlndex = 6 Then 
condicion - Combol + Combo2 + + Textl + 
Else 
condicion - Combol + Combo2 + “ + Textl + 
End lf 
End If 
‘Pregunta si el campo seleccionado es tipo Date 
lf Adodcl. Recordsetf Combol. ListIndex).Type = 7 Then 
condicion = Combol + Combo2 + “CDATE(“' + Textl + 
End lf 
‘Pregunta si el campo seleccionado es tipo Currency (ValorCompra) 
lf Adodcl .Recordset( Combo! .Listlndex). Type = 6 Then 
‘Pregunta si el valor ingresado es un número 
IflsNumeric(Textl) Then 
condicion = Combo1 + Combo2 + Textl 
Else 
MsgBox ‘ ‘Debe ingresar sólo números ’ 16, “Ha seleccionado el campo: “& 
Adodcl.Recordsetf Combo 1. Listlndex). Name 
Textl = “ ” : Textl.SetFocus 
End If 
End If 
Text2 - Text2 + condicion 
End Sub 
s á lll* G rupo E ditorial Megabyte 505 mm
^ÉÍÍÉÉÉÍ’- VISUAL BASIC como debe ser. 
Instrucción del Botón Y 
Prívate Sub Command2_Click() 
Text2 = Text2 + " AND " ‘Espacio antes y después 
End Sub 
Instrucción del Botón O 
Prívate Sub Command3_Click() 
Text2 = Text2 + " OR " 'Espacio antes y después 
End Sub 
Instrucción del Botón Borrar 
Prívate Sub Command6_Click() 
Text2 - 
End Sub 
Instrucción del Botón Mostrar con la Condición 
Prívate Sub Command4_Click() 
On Error GoTo Mensaje 
TR = Adodcl.Recordset.RecordCount 
‘Indica que se va a utilizar una instrucción SQL 
Adodc 1 .CommandType = adCmdText 
Adodc I .RecordSource - “select * from artículos where “ + Text2 
Adodc l.Refresh 
RM — Adodcl.Recordset.RecordCount 
P = R M * 100/T R 
Label2- “Dewitotalde" &TR& “ artículos, se muestran “&RM& “ que representan el 
( “ & Round(P, 2)& “%)" 
Exit Sub 
Mensaje: 
MsgBox “No ha indica una condición correcta", 16, “Porfavor verifique” 
End Sub 
Instrucción del Botón Mostrar Todos 
Prívate Sub CommandS._Click() 
‘Indica que se va a utilizar una instrucción SQL 
Adodcl .CommandType = adCmdText 
Adodc 1 .RecordSource = “select * from artículos" 
A do de I. Refresh 
TR = Adodcl .Recordset.RecordCount 
Label2- ”Dewitotalde “&TR& “artículos, se muestran “&TR& “ que representa el100.00% 
End Sub 
Instrucción del Control Calendarl 
Prívate Sub Calendarl_Click() 
Textl - Calendarl. Valué 
Calendarl .Visible = False 
End Sub 
G r u p o E d i t o 5 0 6 r ia l M e g a b y t e < |j ¡ |¡ | 
CAPÍTULO XII: Programación ADO 
Instrucción del Control DataGrid 
Prívate Sub DataGridl_DblClick() 
‘Permite que al hacer Click en un campo se ordene por dicho campo 
Adodc 1 .CommandType = adCmdText 
IfText2 = “ ” Then 
Adodc ¡.RecordSource = “select *from artículos orderby “ & Adodcl .Recordset 
(DataGrid ¡.Col ).Name 
Else 
Adodc ¡.RecordSource = “select *from artículos where “ & Text2 & “ orderby “ & 
Adodc 1. Recordsetf DataG ríd l. Col). Ñame 
E n dlf 
A dodc 1. Refresh 
End Sub 
Instrucción del Control Textl 
Prívate Sub Text¡ jGotFocus() 
‘Pregunta si no se ha seleccionado el operador lógico 
IfCombo2 = Then 
MsgBox “Indique el operador para la condición”, ¡6, “Error” 
Text¡.Locked = True 
Exit Sub 
Else 
Textl. Locked = False 
E n dlf 
Pregiaitasi el canpo seleccionado contiaieunafeclui para mostrar el Calendario 
If ¡sDate(Adodc¡.RecordsetfCombo¡.Listlndex)) Then 
Calendar ¡ .Visible = True 
End ¡f 
End Sub 
Instrucción del Botón Im prim ir 
Prívate Sub Command7_Click() 
‘Asigna la propiedad DataSource del DataGrid a la propiedad DataSource de! 
‘DataReport para mostrar en el reporte lo que se muestra en el DataGrid 
Set DataReport¡.DataSource = DataGrid].DataSource 
DataReport 1 .Sections{2). Controlsf 3). Caption = Text2 
DataReport l.Sectionsf 5).Controlsf l).Caption = Label2 
‘Muestra el Reporte 
DataReport 1.Show 
End Sub 
N O T A 
Para referirse a un control del D ataReport d esd e un form ulario se usa la co le c c ió n S ection s 
para indicar la se cció n donde se encuentra el control y la co lecció n C ontrols para referirse 
específicam ente al control. La seccio n es se enumeran de arriba hacia abajo. El encabezado del 
Reporte es la primera secció n . 
L os con troles de cada se cció n se enum eran d e acuerdo al orden en el que se dibujan (en cada 
se cció n los con troles se enum eran a partir de 1). En el reporte de ejem plo se asum e que la 
Ltiqueta3 del la secció n E ncabezado d e Página (S e c . N ° 2 ) fu e el tercer control que se dibujó. 
Puede usar tam bién el nom bre d e cada control. 
G r u p o E d it o r ia l Megabyte 507
íZáttú VISUAL BASIC como debe ser... 
DATA ENVIRONMENT 
El Data Environment (Entorno de Datos) es otra de las nuevas formas que 
tiene Visual Basic para conectarse a una base de datos y permitir administrarla 
mediante objetos ActiveX. 
Si desea conectarse a una base de datos mediante el Data Environment, 
debe de agregarlo a su aplicación, para ello seleccione la opción Proyecto 
de la Barra de Menú y luego Agregar Data Environm ent. Si no la visualiza 
ingrese a la opción Más Diseñadores ActiveX o activa la ventana de 
Componentes y en la hoja Diseñadores active la casilla Data Environment. 
Cuando agrega el Data Environment se visualiza la siguiente ventana: 
t | ; P royectol - D ataEnvironm entl (DataEnvironm ent) H L l l E ä 
> ,ld o| 1 1 1 1 J M M flä k 
?Hy] D a ta E n v iro n m e n tl 
Connection! 
[1 ] o b je to s 
Cuando se agrega el Data Environment se mostrará también en la ventana 
del explorador de proyecto: 
%j¿ P ro yecto - P ro y e c to l m u m . □ ! x | 
m Q 
j B J2$ P ro y ec to 1 (P ro y e c to 1) 
i l I B a E m l F o > f ¡u i ó r1 
C j F o rm i (F o rm i) 
N D iseñadores 
D a ta E n v iro n m e n tl (D a ta E n v iro n m e n tl) 
Cuando graba el Data Environment utiliza la extensión *.Dsr (Diseñador). 
508 G r u p o E d i t o r i a l M eg ab y te <l¡||f|j¡j 
CAPÍTULO XII: Programación ADO ^ ¡ ¡ S 
BOTONES DEL DATA ENVIRONMENT 
2k Agrega una nueva conexión 
a Agrega un nuevo Comando. 
M. Inserta Procedimientos Almacenados 
M Agrega un Comando Secundario. 
X Elimina un Objeto de Data Environment 
m Actualiza el Data Environment 
jki Muestra la Ventana de Diseño de instrucciones SQL 
JÜ. Muestra la Ventana de Propiedades 
m Muestra las Instrucciones 
i l l Muestra la Ventana de Configuración 
Ibi Organiza por conexiones 
j k Organiza por Objetos 
La conexión se realiza mediante el objeto Connection el cual representa la 
conexión a una base de datos y se utiliza como un origen de datos. 
Un comando se representa por un objeto Command y contiene las instruc­ción 
que realizan consultas a una base de datos para obtener los registros 
que deseamos los cuales se almacenan en un objeto Recordset. 
Los Procedimiento Almacenados son un conjunto de instrucciones SQL 
precompiladas almacenadas con un nombre en una base de datos y se pue­den 
ejecutar con una llamada desde una aplicación. 
Un Comando Secundario forma Comandos Jerárquicos que consisten en 
un comando que se encuentra dentro de otro. Al comando principal se le 
llama Comando Primario y al otro Secundario y permiten mostrar conteni­dos 
de una tabla separados por grupos usando un campo determinado o 
mostrar el contenido de varias tablas relacionadas. 
NOTA: 
Otra forma de acceder a las opciones anterior es haciendo click derecho sobre 
cualquier objeto del Data Environment 
¡ l i l i l í * G r u p o E d i t o r i a l Megabyte 5 0 9
o 
WÆii Ufo VISUAL BASIC como debe ser... 
A P L I C A C I O N C O N D A T A E N V I R O N M E N T 
Para desarrollar una aplicación usando Data Environment tiene que utilizar 
y asignarle propiedades por lo menos dos objetos de este diseñador: El objeto 
Connection y el Objeto Command. 
En el objeto Connection se configura la conexión a la base de datos. Para 
ello seleccione el objeto Connection y haga click en el botón Propiedades. 
Se visualiza la siguiente ventana: 
L-m-.'-n !-¡ ¡» -.'í-rriss» »— — 
Proveedoi J Conexión } Avanmdn ) 1 odoi | 
Seteccions los dato« a Io í que des«»« c o n « e l*te 
Proveedor(esJ de OLE OB 
Microsoft Jet 3.Q1 OLE OB Provider 
Microsoft Jet 4,0 OLE OB Provider 
Microsoft OLE DB Ptovidai foi Internet Publbhhw 
Microsoft OLE DB Piovidor foi OLAP Scivicoi 
Microsoft OLE OB Provider for Oracle 
Microsoft OLE DB Provider for SQL Sorvcr 
Microsoft OLE OB Simple Provider 
MS Remoto 
M S D ataS liape 
Proveedor de Microsoft OLE DB para paquete-; DTS 
SOL Server DTS Fiat File OLE DB Provide. 
Siguiente > > ) 
[ Aceptar | Cancelar | Ayuda 
Los pasos que siguen se explicaron en la página N° 428 (Conexión mediante 
Archivos de Vínculos - OLE DB). 
Si ya tiene una conexión ODBC creada debe elegir la opción Microsoft 
OLE DB Provider For ODBC Drivers. 
Una vez que estableció la conexión a la base de datos debe agregar un 
objeto Command al objeto Connection. Para ello selecciónelo y haga click 
en el botón Agregar Comando. Visualiza la siguiente ventana: 
§g¡¡ Project! - DataEnvironmentl (D... H0E3| 
' ! □ ! I n f i n | u 1 
llü DataEnvironmentl 
- 3? Connectionl 
0 Cornmandl 
Comando: Cornmandl desde Connectionl 
510 G r u p o E d i t o r i a l Megabyte *^§§1111 
CAPÍTULO XII: Programación ADO 
En el objeto Command se configura el origen de los registros. Seleccione 
este objeto y haga click en el botón propiedades. Se visualiza la siguiente 
ventana. G r a x s s i a s m m e e e e e e e e e e e e e e e e 
General | Parámetros ] Relación ) Agrupar | Agregados ) Avanzadas j 
Hombre do comando |Commari>.Í'l Conejuói'i: j Connection I — 
OiKjen de datos 
í*' Objoto do £ase <1° datos: j PiocuUimit» ii 
Nombre de obiet«-. | 
: f Intlnicctón SOI; 
L±. Cancelar | 
Visual Basic asigna un nombre predeterm inado al objeto Command 
(Command 1) y al Connection (Connectionl), si usted desea puede cambiarles 
de nombre. 
En el cuadro Origen de Datos configure el origen de los registros. Por 
ejemplo: En objeto de base de datos elija Tabla y en Nombre de objeto 
seleccione el nombre de la tabla, o seleccione Instrucción SQ L y escriba la 
instrucción SQL correspondiente para seleccionar los registros deseados. 
Una vez que configuró el origen de los registros, el Data Environment queda 
listo para usarlo como origen de datos en cualquier objeto ActiveX incluyendo 
DataReport. 
En los co n tro les donde n ecesite in d ic a r la base de datos use 
D ataEnvironm entl y donde necesite indicar la tabla use Cornmandl. 
Por ejemplo: 
Para desarrollar el siguiente listado, dibuje un DataGrid y en su propiedad 
DataSource indique DataEnvironmentl y en DataMember indique Cornmandl. 
üu L istad o de A rtíc u lo s co n Da taE nviionment T - !□ ! X | | 
c o d iq o n o m b re 1 p re s e n ta c ió n 1 va lo rc o m p ra ve n c im ie n to ▲ 
► 00001 A c a ric id a C rem a x 6 0 gr : P o te 5 3 0 /0 6 /0 2 — 
0 0 0 0 2 A c a ric id a L o c ió n x 6 0 rrt F ra sco 10 0 7 /0 1 / 0 3 
0 0 0 0 3 Fenistil x 2 0 C om prim ido C aja 1 3 1 9 /0 1 / 0 2 
0 0 0 0 4 P ilk a G o ta s 2 0 mi F ra sco 2 3 1 6 /1 0 /0 2 
0 0 0 0 5 P a n a d o l A n tig rip a l x 6 0 i Caía 4 3 0 /1 2 /0 1 
0 0 0 0 6 A B -B ro n c o l 3 0 0 IM F ra sco 9 5 ................................ 1 5 /0 6 /0 0 
0 0 0 0 7 A B -B ro n c o l 6 0 0 1M F ra s c o 12 0 1 / 0 5 / 0 2 
0 0 0 0 8 V e n o ru to n F o rte x 1 2 Ce C aja 13 3 0 /0 6 /0 0 
0 0 0 0 9 Fenistil G o ta s F ra s c o 2 0 F ra s c o 13 2 9 /0 6 /0 0 
1« .............j ............................................................................ ± r 
G r u p o E d i t o r i a l Megabyte 511
o 
m fa VISUAL BASIC como debe ser.. 
VENTANA D E D ISE Ñ O D E IN ST R U C C IO N E S SQ L 
Si en el cuadro Origen de Datos elige la opción Instrucción SQL, puede 
escribirla en ese mismo cuadro, pero tiene la posibilidad también de hacer 
click en el botón Generador SQL para ingresar a la ventana de diseño de 
instrucciones SQL la cual permite escribir de manera personalidad las 
instrucciones que necesita. 
Área para las Tablas Ventana de Vista de Datos 
ta si 
im. 
J Vínculos d e datos 
1 Conexiones del Entorno de datos 
.Ijifül Connection 1 
Columna Alias 1 Tabla j Resul ad-l Tipo de orden 1 Orden ] Criterios 
— A 
Area para los Campos Área de Instrucciones SQL Árre^aa de Resultados 
Las tablas que va a utilizar en la consulta las puede pegar desde la ventana 
de Vista de datos. Haga clic en el signo + del objeto Connection y luego en 
tablas para visualizarlas y poder pegarlas. 
Los campos que desea mostrar los puede dibujar desde la tabla o tablas que 
pega en el área de tablas hacia el área de los campos. 
El área de los campos permite también ordenar los registros y seleccionarlos 
usando las columnas Tipo de Orden y Criterios respectivamente. 
En el área de Instrucciones SQL se va escribiendo autom áticam ente lo 
que va diseñado. Si usted desea puede m odificarla o escribir una nueva 
instrucción SQL. 
Para mirar los resultados de la instrucción SQL generada puede hacer click 
derecho y elegir la opción Ejecutar. 
Si pega varias tablas puede relacionarlas arrastrando el campo clave de una 
tabla a la otra. 
512 G r u p o E d i t o r i a l Megabyte <||§ |¡|§ 
CAPÍTULO XII: Programación ADO 
USO DEL DATA REPORT CON DATA ENVIRONMENT 
Para crear un reporte usando el Data Environment debe agregarlo a su 
aplicación junto con el Data Report. 
En el Data Environment debe de configurar la conexión a la base de datos 
que desea utilizar en el reporte. 
Después de configurar la conexión debe asignarle al Data Report dos 
propiedades : DataSource y DataMember. 
En DataSource debe seleccionar el nombre del DataEnviroment que en 
forma predeterminada es DataEnvironment 1. 
En su propiedad DataMember debe seleccionar el nombre del comando 
que en forma predeterminada es Commandl. 
Luego a cada caja de textos (RptTextBox) que dibuje en la sección de 
Detalle para mostrar el contenido de los campos debe asignarles como mínimo 
dos propiedades: DataMember y DataField. 
En su propiedad DataMember debe seleccionar el nombre del Comando y 
en su propiedad DataField debe seleccionar el nombre del campo respectivo. 
Una de las ventajas que tiene en el DataReport al usar DataEnviroment es 
que usted puede pegar los campos desde este control al DataReport. Sólo 
necesita asignar un tamaño y posición a cada ventana de tal manera que se 
puedan visualizar ambas al mismo tiempo: 
"i* "Sk % 
CS »..ini “ ¡ 1-j.laL.J —i—1-iiai i1;*) 
Cuando tenga ambas ventanas arrastre cada campo del objeto Command a la Sección 
de Detalle del DataReport. Cada campo se muestra con sus propiedades DataMember 
y DataFiel ya configuradas y acompañada de una etiqueta a su izquierda que muestra 
el título del campo. Si desea puede mover esta etiqueta a la sección Encabezado de 
Página o borrarla. 
Para ejecutar el DataReport sólo necesita escribirDATAREPORT1.SHOW. 
G r u p o E d i t o r i a l Megabyte 513
VISUAL BASIC como debe ser... 
EL CONTROL MSHFLEXGRID 
Este control se usa de manera similar al MSFlexGrid y permite mostrar el 
contenido de una o mas tablas. En la ventana de componentes se llama: 
M icrosoft Hierarchical Flexgrid. 
Para que el control MSHFlexGrid pueda mostrar información de un Data 
Environment, debe asignarle en su propiedad DataSource el nombre del 
DataEnvironment y en su propiedad DataMember el nombre del Command. 
Para que el control MSHFlexGrid pueda mostrar información de un control 
ADO, debe asignarle sólo en su propiedad DataSource el nombre del control 
ADO. 
La ventaja de este control es que permite mostrar información de una manera 
personalizada. Por ejemplo, puede mostrar el contenido de Comandos 
Jerárquicos (Pg.472) alm acenados en objetos R ecordset del Data 
Environment. 
Por ejemplo: El contenido de la tabla Artículos lo puede mostrar agrupadas por la 
presentación, el año de vencimiento, etc.: 
1 2 /3 0 /0 1 
m . L i s t a d o d e A r t í c u l o « A g r u p a d o s p o r P R E S E N T A C I O N 
00008 6 /3 0 /0 0 00011 Im portal x 6 S ha c h é is 
1/ 7 /0 3 
00004 Pilka G otas 20 mi 
00006 
00007 A B -B fo n c o l 600 IM 
00009 Fenistil G otas F rasco 20 mi. 
Finisti! Jarabe Frasco 1 00 rnl 
0 0 0 1 2 
00013 Fluidasa iny x 2 mi 9/1 6 /0 0 
00001 
Frasco 
00010 
5 /8 /0 2 
töt^ i 
ü¡. Listado de Artículos Agrupados por AÑO DE VENCIMIENTO 
AÑO CODIGO NOMBRE PRESENTACION VALO RCO M PRA VENCIM IENTO 
Q 00006 AB-Broncol 300 IM Frasco 9.5 6 /1 5 /0 0 
00008 V enoruton Forle x 12 Comp. Caja 13 6 /3 0 /0 0 
2000 00009 Fenistil Gotas Frasco 20 ml. Frasco 13 6 /2 9 /0 0 
00010 FinistilJatabe Frasco 100 mi. Frasco 10 6 /2 8 /0 0 
00013 Fluidasa iny x 2 mi Frasco 13 9 /1 6 /0 0 
B 2001 00005 Panadol Antiqripal x GO tab Caja 4 12 /3 0 /0 1 
B 00001 Acaricida Crema x 60 gr. Pote 5 6 /3 0 /0 2 
00003 Fenistil x 20 Comprimidos Caja 13 1 /1 9 /0 2 
2002 
00004 Pilka Gotas 20 mi Frasco 23 1 0 /1 6 /0 2 
00007 A B -Broncol 600 IM Frasco 12 5 /1 /0 2 
00011 Importal x 6 S hachets Caja 20 1 /1 9 /0 2 
00012 Panalgin amp. x 2 mi Frasco 54 5 /8 /0 2 
B 2003 00002 Acaricida Loción x 60 mi. Frasco 10 1 /7 /0 3 
G r u p o E d it o r i a l M e g a b y t e ^ |||¡ ¡ | 
M. 514 
CAPITULO XII: Programación ADO W J P 
USO DE COMANDOS JERÁRQUICOS EN MSHFLEXGRID 
1. Mostrar los artículos agrupados por su Presentación 
Agregue a su aplicación un DataEnvironment y a su objeto Connection 1 
conéctelo la base de datos Tienda (Pag N° 438), luego agréguele un 
objeto Command 1 y en su ventana de propiedades seleccione Instrucción 
SQL para escribir la instrucción SQL que agrupe los artículos por su 
Presentación. 
P ropiedade s de C om m andl 
G eneial j Parámetros | Relación | Agrupar | Agregados | A van zadas | 
Conexión: Nombre de comando: |Commandl | Connectionl ~*] 
Origen de datos 
f Objeto de base de datos: j 
Nom bre de objeto: [~ 
(* Instrucción SQL: 
" 3 
G enerador SQ L... 
SELE C T P R E S E N T A C IO N FR O M A R T IC U L O S G R O U P BV 
P R E S E N T A C IO N O R D E R BY P R E S E N T A C IO N 
Aceptar Cancelar Aplig® A yuda 
Luego seleccione el objeto Commandl y haga click en el botón Agregar 
Comando Secundario. Se visualiza la siguiente ventana: 
Comando: Command2 desde Connectionl 
G r u p o E d it o r ia l M e g a b y t e 515 « T O
% VISUAL BASIC como debe ser... 
Ingrese a la ventana de propiedades del Command2 y seleccione la 
tabla Artículos, luego en la hoja R elación agregue una relación entre el 
Com m andl y el Command2 por el campo Presentación y al final haga 
click en A ceptar. 
Propiedades de Command2 
General j Parámetros J Relación ] Agrupar | Agregados j Avanzadas | 
Nombre de comando: |Command2 Conexión: | — “ j 
Origen de datos 
: Objeto de base de datos: ¡Tabla 
Nombre de objeto: ¡Artículos 
C Instrucción SQL: 
í Aceptar | Ayuda 
Propiedades de Command2 
General | Parámetros Relación | A g ria r ) Agregados ] Avanzadas | 
F f jefacionat con un comando primaria 
Comando primario: | Commandl ~* 
Definición de relación 
Campos secundarios y 
Campos primarios parámetros 
Aceptar Ayuda 
De esta manera el Comando Jerárquico (Commandl) queda listo para mostrarlo en 
el control MSHFIexGrid. Para ello asigne en la propiedad DataSource del 
MSHFlexGrid el nombre del Data Environment y en su propiedad DataMember el 
nombre del comando primario (Commandl). Para ver el listado ejecute su aplicación. 
En forma predetermina los grupos de registros se muestran en forma 
Horizontal como se indica en la Página N° 477. Si desea visualizarlos en 
forma vertical, haga click derecho dentro de este control y en la hoja General 
cambie su propiedad BandDisplay a Vertical. 
Cuando utiliza el modo Vertical puede hacer uso de la propiedad Bandlndent 
para indicar a partir de qué columna se debe visualizar los registros del 
Comando Secundario. Para ello ingrese a la hoja Bandas y seleccione 
primero en Band la Banda 1 (Command2) y luego en la propiedad Bandlndex 
indique el N° de la columna. 
En la hoja Bandas también puede seleccionar los campos del Comando 
Secundario que desea visualizar: 
PHES EN TACION oorliqo J/iombre 
Fenjílil x 20 Cornpiimidoi 
I I- .1.A.,!mimi . .1 x 1.(1 i ,|. 
Ver.OHjIon Forte x 1 C o m p 
1 / I 9/02 
I . V :i jA 11 G/3Ò/00 
T / T í V /o ;?.... 
516 G r u p o E d i t o r i a l M e g a b y t e " ^ 
CAPITULO XII: Programación ADO 
2. M o strar los artículos agrupados por el Año de Vencim. 
Para que la agrupación se muestre por el año de vencimiento de cada Artículo 
debe cambiar la propiedad del comando primario y secundario: 
Propiedades de Commandl 
Genefal J Parámetros | Relación | Agrupar | Agregados | Avanzadas j 
Conexión: |Connect»n1 3 
--------------- □ 
Nombre de comando: ¡Commandl 
Origen de datos 
C Objeto de base de datos [ 
Nombre de objeto: [ 
<• Instrucción SQL: 
SELECT YEAR(VENCIMIENTO) AS AÑO FROM ARTICULOS 
GROUP BYYEAR (VENCIMIENTO) ORDER BY 
YEAR(VENQMIENTO) 
! Aceptar Aplicar Ayuda 
Propiedades de Command2 
General J Parámetros | Relación | Agupar | Agregados | Avanzadas 
Nombre de comando: |Command2 Concón: j 
: Origen de datos............. 
C Objeto de base de datos: I 
Nombre de objeto: f 
. (* Instrucción SQL 
J 
SELECT 
CODIGO.NOMBREPRESENTACION.VALORCOMPRA,VENCIMI 
ENTO,YEAR(VENÜMIENTO) AS AÑO FROM ARTICULOS 
ORDER BY VENCIMIENTO 
Aceptar Aplicar Ayuda 
INSTRUCaÓNSQLDELCOMMANDl 
SELECT YEAR(VENCIMIENTO) AS AÑO FROM ARTICULOS GROUP BY 
YEAR(VENCIMIENTO) ORDER B Y YEAR(VENCIMIENTO) 
INSTRUCCIÓN SQLDELC0MMAND2 
SELECT CODIGO, NOMBRE, PRESENTACION, VALORCOMPRA, VENCIMIENTO, 
YEAR(VENCIMIENTO) AS AÑO FROM ARTICULOS ORDER BY VENCIMIENTO 
La relación se debe realizar por el campo calculado Año: 
P ropiedades d e Com m and2 
G e n e r a l j P a r á m e t r o s R e l a c i ó n | A g r u p a r ] A g r e g a d o s | A v a n z a d a s ) 
fs? [ g e i a e i o n a r c o n u n c o m a n d o p rim a ric j 
C o m a n d o p rim a rio : j C o m m a n d l 
D e f i n i c ió n d e r e l a c i ó n 
C a m p o s s e c u n d a r i o s y 
C a m p o s p rim a r io s p a r á m e t r o s 
“3 
A c e p t a r | C a n c e l a r A y u d a 
G r u p o E d i t o r i a l Megabyte 517
Û ' VISUAL BASIC como debe ser... 
REPORTE DE COMANDOS JERÁRQUICOS 
Si usted desea mostrar en el reporte los datos que se encuentran en Comandos 
Jerárquicos, sólo tiene que agregar una nueva sección mas al DataReport. 
Esta sección se llama GRUPO y para adicionarla debe puede hacer click 
derecho en el DataReport y elegir la opción Insertar Encabezado o Pie de 
Grupo o una vez que asignó las propiedades Datasource y DataMember al 
DataReport hacer click derecho en él y elegir la opción Obtener Estructura. 
El encabezado de grupo lo debe configurar para que muestre la información 
del Comando Primario (Comandl) y la sección de detalle para que muestre 
la información del comando secundario (Command2). 
La sección Pie de Grupo la puede configurar para mostrar un resumen de 
cada grupo, por ejemplo, la cantidad de registros mostrados, la suma de 
campos numéricos, etc. 
i§fc D a t a R e p o i t l 
11 
j H _b J Zoom [‘loo* i l I ................ J 
Reporte de Artículos por Año de Vencimiento 
■ Año de Vencimiento 
2000 Código 
00006 
Artículo 
A B-Broncol 3 0 0 IM 
Valor de Compra 
9.50 
Fecha de Vencimiento 
1 5/06/00 
■a- 0 0 0 1 0 Finisti J a ra b e F ra s c o 1 0 0 mi. 1 0 00 28/06ÆI0 
0 0009 Fenistil G o ta s F r a s c o 2 0 mi. 13.00 2 9/06/00 
■ 0 0 0 0 8 V enoruton Fo rte x 1 2 Com p. 13.00 30/06/00 
00013 Fluidas« iny x 2 mi 
Cantidad de Artículos: 5 
13.00 16)09/00 
2001 Código 
0 0 0 0 5 
Artículo 
Panadol Antigripal x 6 0 ta b 
Cantidad de Artículos: 1 
Valor de Compra 
4.00 
Fecha de Vencimiento 
30/12/01 
2002 Código 
00011 
Artículo 
Importal x 6 S h a c h e ts 
Valor de Compra 
20.00 
Fecha de Vencimiento 
1 9/01/02 
0 0003 Fenistil x 20 Com prim idos 13.00 1 9/01/02 
00007 A B-Broncol 6 0 0 IM 1 2.00 0 1/05/02 
0 0 0 1 2 Panalgin am p . x 2 mi 5 4.00 0 8/05/02 
00001 A caricida Crem a x 6 0 gr. 5 .00 30/06/02 
00004 Pilka G o ta s 20 mi 2 3 .0 0 1 6/10/02 
Cantidad de Artículos: 6 
Páginas: H ¡4 |T ~ 
518 G r u p o E d i t o r i a l Megabyte •5|¡¡ 
CAPÍTULO XII: Programación ADO 
Para crear el reporte anterior, puede diseñarlo de la siguiente manera: 
% P rojecti - D ataR epoitl (DataReport) 
4 Encabezado de informe (ReportHeader? 
4 Encabezado de página (PageHeader) 
Reporte de Artículos por Año de Vencimiento 
Año de V encim iento 
4 Encabezado de grupo (Command 1 „Header) 
AHO [C o m m a n d i] Código 
4 Petate (Command2_DetaiQ________ 
Valor de Compra Fecha de Vencimiento 
CODIGO [Comrriancß] j NOMBRE [Commancß] VAl0f?C0MPRA [Commancß] VENCMENTÖ [Command2] 
4 Pie de página (PageFooterj 
Cantidad de Artículos: j RCNT ICommand21 
4 Pie de informe (ReportFooter 
Sección de Encabezado de Página 
Esta sección tiene dos Etiquetas una con el título principal y la segunda con 
el título “Año de Vencimiento”. 
Sección Encabezado de Grupo 
Esta sección tiene un control RptTextBox que m uestra cada año de 
vencimiento. En su propiedad DataMember seleccione Commandl y en su 
propiedad DataField el campo calculado AÑO. El resto de controles son 
Etiquetas con el título para cada campo del Command2. 
Sección de Detalle 
Esta sección tiene cuatro controles RptTextBox que muestran el contenido 
de los campos del Command2. En la propiedad DataMember de cada uno 
de ellos seleccione el Command2 y en DataField el campo respectivo. 
Sección Pie de Grupo 
Esta sección tiene un control (RptLabel) con el título Cantidad de Artículos 
y un control RptFunction que muestra la cantidad de productos que se vencen 
en cada año. En su propiedad FunctionType seleccione 4-rptFuncRCnt, y 
en su propiedad DataMember seleccione Command2. 
NOTA 
Usted puede cambiar el diseño de este reporte de acuerdo a lo que necesita y para 
visualizarlo puede escribir dentro de un botón de Comandos del formulario la 
siguiente instrucción: DataReportl.Show 
También puede hacer que se muestre automáticamente cuando ejecute el proyecto, 
configurándolo como objeto inicial (Proyecto/Propiedades del proyecto). 
f ^ j j ^ G r u p o E d i t o r i a l Megabyte 519
á l l í i l l * VISUAL BASIC como debe ser.. 
APLICACIÓN DESARROLLADA N° 68 
La siguiente aplicación permite mostrar en un reporte el contenido de Co­mandos 
Jerárquicos que se forman de dos tablas: Vendedores y Ventas que 
se encuentran en la base de datos llamada CONTROL y cuyas estructuras 
son: 
Vendedores 
Codigo Text 3 
Nombre Text 30 
Telefono Text 10 
Ventas 
Codigo Text 3 
Fecha Venta Date 
Monto Currency 
Distrito Ven ta Text 20 
Este reporte muestra también de cada vendedor la cantidad de ventas rea­lizadas, 
el monto total vendido y su promedio de ventas. 
t t . D a t a ñ e p o r tl 
H J e f ] Z M m J jjlO O * J 
1 ^ ^ ■;.:---------j---------------------------ÜÉ . J 
REPO RTE DE V E N TA S POR VENDEDO R 
Codigo 
003 
■ 
Codigo 
004 
Codigo 
002 
Aginas: ¡«HIT 
José Portilla 
Fecha 
15/01/00 
16/02/00 
20/02/00 
10/03/00 
22/03/00 
228844 
Monto 
200.00 
300.00 
150.00 
500.00 
450.00 
Distrito 
Ferreñafe 
La Victoria 
Chiclayo 
Zana 
Etem 
N° de Ventas 5 Total S/. 1,600.00 Promedio S/. 320.00 
Nombre Teléfono 
Liliana Carbonel 224488 
Fecha Monto Distrito 
21/01/00 600.00 Reque 
01 /01 /OO 300.00 Motupe 
N° de Ventas 2 Total S/. 900.00 Promedio S/. 450.00 
Nombre Teléfono 
Hoemi Montano 234878 
Fecha Monto Distrito 
12/01/00 50.00 Reque 
14/01 /00 150.00 La Victoria 
18/02/00 500.00 Pimentel 
20/02/00 200.00 Lambayeque 
►M 'I ......... 
G r u p o E d i t o r i a l Megabyte" 
CAPÍTULO XII: Programación ADO 
DESARROLLO DE LA APLICACIÓN 
Para desarrollar esta aplicación agregue a su formulario un DataEnvironment 
y un DataReport. 
Al objeto Connectionl del DataEnvironment conéctelo a la base de datos 
CONTROL, luego agregue un comando (Commandl) e ingrese a su ventana 
de propiedades donde se escribe una instrucción SQL que obtiene los datos 
de los vendedores ordenados por su nombre: 
SELECT Codigo,Nombre,Telefono FROM Vendedores ORDER BYNombre 
G en e ral | Parám etros ] R e la c ió n ] A g ru p a r ] A g re g a d o s j A v a n z a d a s ) 
N om b re d e c om a n d o : | Commandl C one jjió n: | Connectionl 
j O rig en d e d a to s 
1 O b je to d e fease d e datos: j 
N fim b ro d e objeto: j 
In s tiu c c ió n SQL: fie n e ra d o r SQL.. J 
A p lic a r 
Luego al C om m andl agréguele un comando secundario donde debe 
seleccionar Tabla en Objeto de base de datos y en Nombre de objeto 
seleccione la tabla Ventas 
G eneral ] P arámetros ] R e la c ió n ) A g rup a r ] A g re g a d o s ] A v a n z a d a s J 
LJ ombre d e com an d o : j C o rr.m w d 2 C onexión: }7 
C rip e n d o d a lo s [Tabla ■ 3 
N om b re d e objeto: ¡VENTAS ~ 3 
In s tru c c ió n S Q L : - J . : u f f i f c í a i . 
........— -------------------------------- 
A c e p ta r j C an ce lar | 
También puede seleccionar Instrucción SQL para obtener por ejemplo todos 
los registros de la tabla Ventas ordenados por la fecha de ventas. 
En el Comando Secundario ingrese a la página RELA CIÓ N y agregue 
una relación con el Commandl por medio del campo Código. 
Para activar el Reporte escriba en el formulario D ataReportLShow . 
G r u p o E d i t o r i a l Megabyte 5 2 1
É£: VISUAL BASIC como debe ser. 
CONEXIÓN A UNA BASE DE DATOS 
M EDÍANTE INSTRUCCIONES 
Para conectarse a una base de datos sin usar el control ADO ni el diseñador 
DataEnvironment, debe seguir los siguientes pasos: 
1. Configurar al Visual Basic para que acepte la manipulación los Objetos 
de D atos A ctiveX 
mediante instrucciones. Referencias - Proyectol 
Esto se realiza activando 
la c a silla M icrosoft Referencias disponibles: 
ActiveX Data Objects 
x .x Library en 
Proyecto/R eferencias. 
□ Intel Procedural Effect Library 
□ JET Expression Service Type Library 
□ LayoutDTC 1.0 Type Library 
□ LM Library 
Li Macromedia Shockwave Director Control — 1 
□ Microsoft Access 9.0 Object Library + 1 □ Microsoft Active Server Pages Object Librar 
□ Microsoft ActiveMovie Control 
Prioridad 
□ Microsoft ActiveX Data Objects (Multi-dimer 
B Microsoft ActiveX Data Objects 2,1 Library 
□ Microsoft ActiveX Data Objects 2.0 Library 
□ Microsoft ActiveX Data Objects Recordset ; 
□ Microsoft ActiveX Plugin . 
: p e r os oft Add-In Desianej 
+ 1 
2. Definir un objeto tipo Connection. Sintaxis: 
Ditti Nom bre del Objeto A s N ew AD O D B. Connection 
3. Definir un objeto tipo Recordset. Sintaxis: 
Dim N om bre del Objeto As New A D O D B .R ecordset 
Dependiendo de la cantidad de formularios que vas a usar en la aplicación, 
estos objetos se pueden definir también a nivel de Módulo usando la palabra 
Public. 
El objeto tipo Connection se utiliza para administrar la conexión a la base 
de datos. 
El objeto tipo Recordset almacena los registros que se obtiene de las tablas 
de la base de datos donde nos conectamos para poder manipularlos en nuestra 
aplicación. 
La palabra ADODB es un prefijo que contiene todos los objetos de datos 
ActiveX. Se debe visualizar automáticamente después de escribir la palabra 
New al definir los objetos. Si no se visualiza seguramente no activó la casilla 
M icrosoft ActiveX Data Objects x.x Library en la opción Proyecto/ 
Referencias. 
522 G r u p o E d i t o r i a l Megabvte<|f|¡^ 
CAPÍTULO X II: Programación A B O ^ ¡¡¡ ¡¡1 
R E A LIZ A R L A CONEXIÓN 
Para realizar la conexión se utiliza el objeto tipo Connection con la propiedad 
ConnectionString y la forma de conectarse depende del origen de datos que 
ha creado. 
Por ejemplo: 
1. Si tenemos un ODBC llamado Agenda y hemos definido el objeto DB tipo 
Connection, las instrucciones para conectarse son: DB.ConnectionString 
= “DSN =Agenda ” 
2. Si tenemos un Archivo de Vínculo OLEDB llamado Ventas en la carpeta 
C:Sistema, y hemos definido el objeto DB tipo Connection las instrucciones 
para conectarse son: 
DB.ConnectionString = “File Name=C:SistemaVentas.UDL” 
Si no ha creado ningún origen de datos, también puede realizar la conexión 
mediante una cadena de conexión. Por ejemplo, la siguiente instrucción se 
conecta a una base de datos Microsoft Access llamada Practica.mdb. 
DB.Conned¡onString="Provider=Microsoft.Jet.OLEDB.4.0;DataSourcc=C:I,radinuiull>" 
A B R IR UNA C O N EXIÓ N 
Después de realizar la conexión como se indicó en el paso anterior, ésta so 
mantiene cerrada, si usted trata de utilizarla se visualizará el siguiente mensaje 
Microsoft Visual Basic 
Error ‘3709’ en tiempo de ejecución : 
La aplicación solicitó una operación en un objeto con una referencia a 
un objeto Connection cerrado o no válido. 
lerm inar f ¿epurar j 
Esto significa que antes de utilizarla, la debe abrir. 
El método OPEN permite abrir una conexión. Sintaxis: 
O bjeto_T ipojC onnection. Open 
Por ejemplo para abrir la conexión almacenada en el objeto DB se debe 
escribir: DB.Open 
También se puede abrir e indicar el origen de datos o la cadena de conexión 
al mismo tiempo según el origen de datos que ha creado: 
DB.Open "DSN=Agenda" 
DB.Open “File Name=C:SistemaVentas.UDL” 
DB.Open “Providei^Microsoft.Jet.OLEDB.4.0;DataSource=C:Practica.mdb” 
1 1 1 1 ^ G r u p o E d i t o r i a l Megabyte 523
é S B lk v i s i ja B B M M W B i M M 1 
ACCEDER A LOS REGISTROS 
■ — ■—■■■■------------■ ■ ... 
Para acceder y manipular los registros se puede utilizar el objeto definido de 
tipo Recordset con sus propiedades métodos que se explican a continuación. 
Otras de sus propiedades y métodos se explicaron con el control ADO. 
A C T IV E C O N N E C T IO N 
Permite indicar al objeto Recordset la conexión desde donde se van a obtener 
los registros. Por ejemplo, la siguiente instrucción le indica al Visual Basic 
que los registros se van a obtener de la conexión configurada en el objeto 
DB: RS.ActiveConnection = DB 
SO U R C E 
Esta propiedad se utiliza en lugar de Recordsource y permite acceder a los 
registros a través de una instrucción SQL o indicando el nombre de la tabla: 
RS.Source= "select*fromartículoswhere year(vencimiento) = 2002" 
RS.Source = “ artículos” 
O PEN 
Es un método que permite abrir el acceso a los registros 
R S.O pen 
En este método también se puede indicar el origen de los registros, la 
conexión desde donde se van a obtener los registros, el tipo de cursor 
(CursorType) y el tipo de bloqueo (LockType). Por ejemplo, las instrucciones: 
RS.ActiveConnection = DB 
RS.Source = “artículos” 
RS.CursorType = adOpenKeyset 
RS.LockType = adLockOptimistic 
RS.Open 
Se pueden reemplazar por: 
RS.Open “artículos”, DB, adOpenKeyset, adLockOptimistic 
REQ U ERY 
Permite actualizar los registros de un objeto Recordset. 
C L O SE 
Permite cerrar un objeto Recordset liberando los recursos del sistema. 
Cuando usted cieña el objeto Recordset o cualquier otro objeto, no lo elimina 
de la memoria, para ello tiene que utilizar NOTHING.. 
N O T H IN G 
Es una palabra clave que borra un objeto de la memoria. Sintaxis: Set Nombre 
d el Objeto = N othing 
524 G r u p o E d i t o r i a l Megabyte^ 
CAPÍTULO XII: Programación ADO 
CLOSE 
Permite cerrar un objeto Recordset liberando los recursos del sistema. 
Cuando usted cierra el objeto Recordset o cualquier otro objeto, no lo elimina 
de la memoria, para ello tiene que utilizar NOTHING. 
Nom bre del Objeto R ecordset.Close SAVE 
Permite grabar un Recordset en el disco. Si desea abrir posteriormente el 
objeto use también el método Open. 
N om bre del Objeto Recordset.Save Nom bre 
Ejemplo: Las siguientes instrucciones muestran en un DataGrid el contenido 
de un Recordset grabado con el nombre copia. Dibuje un DataGrid en su 
formulario. 
Dim DB As New ADODB.Connection 
Dim RS As New ADODB.Recordset 
DB.Open “D SN=INFORM E” 
RS.Open “SELECT * FROM Artículos WHERE ValorCompra<50", 
DB, adOpenKeyset, adLockOptimistic 
I f Len(Dir(“COPIA”, 0)) o 0 Then 
I f M sgBox(“Desea reemplazarlo”, 36, “Ya existe el 
Recordset llamado COPIA”) = 6 Then 
Kill “COPIA” 
Else 
Exit Sub 
End I f 
End I f 
RS.Save “CO PIA” 
RS. Cióse 
Set RS = Nothing 
RS.Open “CO PIA” 
Set DataGrid 1 .DataSource = RS 
CLONE 
Permite crear copia de un Recordset. La siguiente instrucción hace una 
copia de RS en RS2: 
Set RS2= RS. Clone FILTER 
Filtar los registros de un RecordSet. La siguiente instrucción filtra sólo los 
artículos que valen menos de 50 nuevos soles: 
RS.Filter = “ValorCompra < 5 0 ” SORT 
Ordena los registros de un Recordset. Ejemplo: 
RS.CursorLocation = adUseClient 
RS.Open “Artículos”, DB, adOpenKeyset, adLockOptimistic 
RS.Sort = “ValorCompra” 
Set DataGridl.DataSource = RS 
G r u p o E d i t o r i a l Megabyte 525 wm
VISUAL BASIC como debe ser... 
APLICACIÓN DESARROLLADA N° 69 
Esta aplicación consiste en una consulta, listado y reporte para la tabla 
artículos sin usar el control ADO, ni el diseñador Data Environment. 
«¡i. Aplicación sin el contici ADO ni Data Environnent 
C Z listado 
AB-Bronci 300 !M 
AB-Bioncol 600 IM 
Acaricida Crema x 60 gi 
Acaricida Loción x 60 m£, 
FemsW Gotas Frasco 20 mi 
jFenisH x 20 Comprimidoí 
F«n*stil Jarcíbe Fiasco 1 00 mi 
Ftadasa ir$¡ x 2 mi 
Importal x$Shache*s , 
Panado! An#igrç>al k SO tab J j 
D a lo s d e l A r t ic u la 
■Código 
Nombre 
Pie:eri»ación 
V a b r de Compia 
Fecha de Venomienío 
|A B -B ío n co l3 0 0 IM 
iFfasco 
I 1 5 /0 6 /0 0 
« . Aplicación tin el control ADO ni Data Erwuonment 
C onstila 
codw o I nombre l presentación Ivatorcom ora i vencimiento 
00006 ' AB-Broncol 300 IM i Frasco 9.5 15 /0 6 /0 0 
00007 A B -Bronco! F£n IM F- : • .......12 ......... 0 1 /0 5 /0 2 __ 
001X11 l - « - ida Cremai k BOj r Pq le 5 30 /0 6 /0 2 
00002 h ; ai*: >da _oc :n • oU - s Frasco 10 07 /0 1 /0 3 
00009 I V fii." bo?a: ' i a : . 0 2 J f iz.co 13 2 8 /0 6 /0 0 
00033 f " ili ■! JJ L m| r rnid !.. : i ......13 ist/ l M 
00010 Fr¡i-I¿ 1 ih f 'f . i o l ^ r m c r in 2 8 /0 6 /0 0 ....... 
00013 F^id a sa rsy y. 2. mi Fiasco 13 16/09/00 
00011 1 mportal » 6 S hachets C sa r20 Î 9/01 /02 
l< 
nnnnS i P.« ia/ViI AnlinrmA! v (-.lì 1 (" .«*» 4 Ï1 /1 VfH 
_ J ¿ 
R e po rte 
En la primera hoja del control SsTab dibuje el control Frame, las etiquetas y 
un control DataCombo y cinco cajas de texto. Al control DataCombol sólo 
asígnele el valor 1-dbcSimpleCombo en su propiedad Style. 
En la segunda hoja del SsTab sólo dibuje un control DataGrid y no le asigne 
ninguna propiedad. 
El Reporte diséñelo como se indica en la página N° 467, pero sólo con el 
título principal y las cajas de texto donde se indican los campos a visualizar 
y sus respectivo títulos. 
CAPITULO XII: Programación ADO 
INSTRUCCIONES DE LA APLICACION 
Definir los objetos en la General Declaraciones 
Dim DB A í New ADODB. Connection 
Dim RS A s New ADODB.Recordset 
Instrucciones del Form_Activate 
Prívate Sub Form_Activate() 
‘Realiza la conexión 
DB.Open “DSN=VENTAS” 
RS.Open ‘‘select *Jmm artículos orderby nombre", DB, adOpenKeyset, adLockOptimistic 
‘Asigna las propiedades al Datacombol 
DataCombo 1. Text = 
Set DataCombol.RowSource = RS 
DataCombo LListField = RS(l).Name 
‘Asigna las propiedades a las cajas de texto 
Set Textl .DataSource = RS 
Set Text2. DataSource = RS 
Set Text3. DataSource = RS 
Set Text4. DataSource = RS 
Set Text5.DataSource = RS 
Textl.DataField = RS(0).Name 
Textl.DataField - RS( 1 ).Name 
Text3. DataField = RS(l).Name 
Text4.DataField = RS(3).Name 
TextS.DataField = RS(4).Name 
‘Asigna las propiedades al D ataGridl 
Set DataGridl. DataSource = RS 
End Sub 
Instrucciones del control DataCombol 
Prívate Sub DataCombol_Change() 
Dim R As String 
R = “NOMBRELIKE + DataCombol + • * * ’ ” 
If DataCombol < > Then 
RS.Find R ,,, 1 
IfRS.EOF Then 
Frame 1 .Visible = False 
RS.MoveFirst 
Else 
Frame 1 .Visible = True 
E n d lf 
E n d lf 
End Sub 
Instruc. botón Reporte 
Prívate Sub Commandl _Click() 
Set DataReportl.DataSource=RS 
DataReport 1 .Show 
DataReportl .Refresh 
End Sub 
Instruciones del SsTab_Click 
Prívate Sub SSTabl_Click(PreviousTab As Integer) 
If PreviousTab = 1 Then 
RS.MoveFirst 
DataCombol = 
E n dlf 
End Sub 
G r u p o E d i t o r i a l Megabyte 527
, fK W . 
É i » VISUAL BASIC como debe ser. . . 
EL METODO EXECUTE DEL OBJETO CONNECTION 
Este método permite ejecutar instrucciones SQL sobre una conexión para 
obtener y darles mantenimiento a los registros o a las tablas y crear Cursores. 
Puede ejecutar cualquiera de las instrucciones SQL ya explicadas y espe­cialmente 
instrucciones SQL para Consultas de Acción o Instrucciones DDL. 
CONSULTAS DE A CCIÓN 
La consultas de acción son un conjunto de instrucciones SQL que permiten 
dar mantenimiento a los registros de una tabla. Las principales acciones que 
se pueden realizar son: 
1. Actualizar los valores de los registros. 
2. Adicionar nuevos regi stros. 
3. Eliminar registros. 
IN STR U C C IO N ES DDL 
Son un conjunto de instrucciones del Lenguaje de Definición de Datos que 
permiten dar mantenimiento a las tablas de una base de datos. Las principa­les 
acciones que puede realizar son: 
1. Crear tablas. 
2. Modificar la estructura de las tablas. 
3. Borrar tablas. 
Si se obtienen registros con el método EXECUTE, se pueden almacenar en 
un objeto Recordset. Por ejemplo, las siguientes instrucciones muestran en 
un control MSHFlexgrid los artículos ordenados por el Valor de Compra. 
Después de cerrar el Recordset los registros se siguen visualizando. 
Dim DB As New ADODB.Connection 
Dim RS As New ADODB.Recordset 
DB.Open “D SN=INFORM E” 
RS.Open “SELECT * FROM Artículos ORDER BY ValorCompra” 
Set M SHFlexGridl.DataSource = RS 
RS. Cióse 
Set RS — Nothing ty 528 G r u p o E d i t o r i a l Megabyte^ 
CAPÍTULO XII: Programación ADO ^ ¡ ¡ ¡ ¡ ¡ 1 
INSTRUCCIONES SQL PARA CONSULTAS DE ACCIÓN 
D E L E T E F R O M 
Esta instrucción permite borrar todos o sólo un grupo de registros de una tabla. 
Sintaxis para borrar todos los registros de una tabla: 
Delete From Nombre de la Tabla 
Sintaxis para borrar sólo un grupo de registros: 
Delete From Nombre de la Tabla Where Condición 
Tenga mucho cuidado al utilizar esta instrucción porque los registros que 
borra ya no se pueden recuperar. Se recomienda hacer una copia de segu 
ridad antes usarla. 
Ejemplo: Si tenemos el objeto DB conectado a la base de datos Tienda que 
tiene la tabla Artículos, entonces: 
La siguiente instrucción borra todos los registros de la tabla artículos: 
D B .E xecu te(“D elete fro m A rtícu los”) 
La siguiente instrucción borra sólo los artículos que se vencieron en el año 
1999. 
DB.Execute(“Delete from Artículos Where Year(Vencimiento) = 1999”) 
IN S E R T IN T O 
Permite insertar registros a una tabla existente desde otra tabla. La tabla 
donde se van a adicionar los registros debe existir porque si no existe se 
produce un error con el tiene el número -2147217865. Su sintaxis es: 
Inserí luto TablaDestíno Select Campol,Campo2,...CampoN From TablaOrigen 
La sintaxis anterior adiciona todos los registros de la tabla Origen a la tabla 
Destino. Si desea adicionar sólo un grupo de registros, debe utilizar Where 
con la condición al final de la instrucción. Ejemplos: 
La siguiente instrucción adiciona todos los registros a la tabla Artículos a la 
tabla Respaldo. 
DB.Execute(“Insert Into Respaldo Select codigo,nombre, presentación,valorcompra, 
vencimiento from Artículos”) 
La siguiente instrucción adiciona los artículos que tienen presentación Caja 
de la tabla Artículos a Respaldo. 
DB.Execute(“Insert Into Respaldo Select codigo,nombre, presentación,valorcompra. 
vencimiento from Articulos Whre Presentación = ‘Caja’”) 
¡ ||||j j ^ G r u p o E d i t o r i a l Megabyte 5 2 9 - ^ |§ |¡ ¡ |l
. BASIC como debe ser... 
S E L E C T IN T O 
Esta instrucción permite crear una tabla y adicionarle registros de otra 
tabla. La tabla destino no debe existir porque de lo contrario se produce 
un error que tiene el número -2147217900. Su sintaxis es: 
Select Campo 1,Campo2,... CampoNInto TablaDestino From TablaOrigen 
Si sólo desea crear la tabla y adicionarle algunos registros, debe agregar 
Where y la condición. Ejemplos: 
La siguiente instrucción crea la tabla Seguridad y le adiciona todos los regis­tros 
de la tabla artículos. 
DB.Executef “Select codigo,nombre,presentación, valorcampra, vencimiento Into 
Seguridad From Artículos ”) 
La siguiente instrucción crea la tabla Seguridad y le adiciona sólo los artícu­los 
cuyo valor de compra es mayor que S/. 250.00 
DB. Execute( “Select codigo,nombre,presentación, valorcampra, vencimiento Into 
Seguridad From Artículos Where valorcompra > 250 ”) 
U P D A T E 
Permite reemplazar el contenido de un campo de todos o de un grupo de 
registros por uno nuevo. 
Sintaxis: 
Para todos los registros: 
Update Nombre de la Tabla Set Nombre del Campo = NuevoContenido 
Para un grupo de registros: 
Update Nombre Tabla Set Nombre Del Campo= NuevoContenido Where Condicion 
Ejemplos: 
La siguiente instrucción incrementa al valor de compra de todos los artícu­los 
el 10%. 
DB.Executef “Update Artículos Set ValorCompra = ValorCompra * 1.10”) 
La siguiente instrucción cambia a los artículos que tienen su presentación 
Caja por Cajitas. 
DB.Execute( ' ‘ Update Artículos Set Presentación= ‘Cajitas ’ Where 
Presentación = ‘Cajas') 0^4^ 530 G r u p o E d i t o r i a l Megabyte 
CAPÍTULO XII: Programación ADO 
INSTRUCCIONES DDL 
Las instrucciones DLL significan Instrucciones de Lenguaje de Definición 
de Datos y son importantes por que con ellas podemos crear tablas, modifi­car 
la estructura de una tabla o eliminar toda una tabla incluyendo los regis­tros 
que contiene y su estructura. 
C R E A T E T A B L E 
Esta instrucción, como su nombre lo indica permite crear una tabla. Su 
sintaxis es la siguiente: 
Create Table Nombre de la Tabla(Campol Tipo, Campo2 Tipo,... CampoNTipo) 
Ejemplo: 
La siguiente instrucción permite crear una tabla llamada Clientes dentro de la 
base de datos que esta conectada al objeto DB con la siguiente estructura: 
Codigo Text 5 
Nombre Text 40 
Ruc Text 8 
Credito Currency 
Feeing Date/Time 
DB.Execute (“CreateTable Clientes(Codigo Text(5), NombreText(40), 
Ruc Text(8), Crédito Currency, Feclns Date)”) 
A L T E R T A B L E 
Esta instrucción permite agregar o eliminar un campo de una tabla. 
La sintaxis para agregar un campo a una tabla es: 
Alter Table Nombre de la Tabla Add Column NombreCampo Tipo 
Ejemplo: 
La siguiente instrucción agrega a la tabla Clientes el campo Teléfono de 
tipo Texto con 10 caracteres. 
DB.Execute (“Alter Table Clientes Add Column Telefono Text( 10)”) 
G r u p o E d i t o r i a l Megabyte . : 5 3 1 < á | | | | | |
iÉiÉ¡iÉÉÉ>' VISUAL BASIC como debe ser. . . 
La sintaxis para eliminar un campo a una tabla es: 
A lter Table Nombre de la Tabla Drop Column NombreCampo 
Ejemplo: 
La siguiente instrucción elimina de la tabla Clientes el campo Teléfono. 
DB.Execute ("AlterTable Clientes Drop Column Telefono") 
D R O P TABLE 
Esta instrucción permite eliminar toda una tabla incluyendo los registros que 
contiene y su estructura. 
La sintaxis es: 
Drop Table Nombre de la Tabla 
Ejemplo: 
La siguiente instrucción elimina la tabla Clientes. 
DB.Execute ("Drop Table Clientes") 
NOTA: 
En la siguiente aplicación se muestra ejemplos mas amplios sobre el uso de las 
instrucciones SQL para consultas de Acción y sobre las instrucciones de Lenguaje 
de Definición de Datos (DLL). 
La aplicación siguiente también se encuentra en Disco de Aplicaciones que acom­paña 
a este libro para visualizar y comparar las instrucciones con mayor facilidad. 
l i l i l í ^ 5 3 2 G r u p o E d it o r i a l Megabyte 
CAPÍTULO XII: Programación ADO < € ¡¡¡1 1 
A P LIC A C IÓ N DESARRO LLADA N° 70 
La siguiente aplicación permite dar mantenimiento a los registros y a la 
tabla Artículos: 
m ora 
¡i. Mantenimiento de la labia Artículos 
Artículos 
Agregar artículos de prueba 
Cambiar una presentación por otra 
Cambiar el Valor de Compra 
Restaurar el valor de compra anterior 
Borrar artículos 
Recuperas los Ultimos Artículos Borrados 
Borrar la Copia de Seguridad de los archivos borrados 
Salir 
Relación de A rtículos 
Codigo Nombre Presentación Valor de Compra Vencimiento 
00001 Acaricida Cierna x 60 gr. Pote 5.0000 2002-06-30 00:00:0 
00002 Acaricida Loción x 60 mi. Frasco 10.0000 2003-01-07 00:00:0 
00003 Fenistil x 20 Comprimidos Caja 13.0000 2002-01-19 00:00:0 
00004 Pilka Gotas 20 mi Frasco 23.0000 2002-10-16 00:00:0 
00005 Panadol Antigripal x 60 tab Caja 4.0000 2001-12-30 00:00:0 
00006 AB-Broncol 300 IM Frasco 9.5000 2000-06-15 00:00:0 
00007 AB-Broncol 600 IM Frasco 12.0000 2002-05-01 00:00:0 
00008 Venoruton Forte x 12 Cornp. Caja 13.0000 2000-06-30 00:00:0 
00009 Fenistil Gotas Frasco 20 mi. Frasco 13.0000 2000-06-29 00:00:0 
00010 FinistilJ atabe Frasco 100 mi. Frasco 10.0000 2000-06-28 00:00:0 
00011 Importai x 6 Shachets Caja 20.0000 2002-01-19 00:00:0 
L a " " ............ 
Al ejecutar la aplicación y mientras dure la conexión a la base de datos se 
muestra una pantalla de presentación. 
Programa de ejemplo 
Visual Basic 
C o m o d e b e s e r . . . 
Un m om ento p o r fa v o r 
Una vez realizada la conexión esta pantalla se oculta automáticamente y se 
muestra el menú principal. 
G r u p o E d it o r i a l Megabyte 533
á ü l ^ VISUAL BASIC como debe ser... 
El Menú Principal esta com puesta por las siguientes opciones: 
AGREGAR ARTÍCULOS DE PRUEBA 
Con esta opción usted puede agregar la cantidad de artículos que desee a la 
tabla y de esta manera probar la velocidad de la computadora para procesar 
una gran cantidad de registros. Por ejemplo usted puede probar qué tan 
rápida es su computadora y su programa con unos cinco mil o diez mil 
artículos. Esta opción presenta el siguiente formulario. 
1 A d i c i o n a l a r t í c u l o s d e P r u e b a ■1751x1 
Actualmente hay 13 artículos. ¿Cuanto desea agregar? | Aceptar 
J 
Configuración d e los n uevos Artículos : 
Los artículos empiezan con la palabra J Producto 
La presentación de los artículos debe ser jCaja 
— 
El valor de compra debe estar entre jio.oo V jl 000 00 ~ - 
La fecha de vencimiento debe estar entre el |o i / o i/ o i J y ®1 J31n 2/01 3 ] 
Cerrar j 1 
Aquí se indica la cantidad de artículos a agregar, el nombre para los artículos. 
Al nombre que usted indique se le adiciona un número correlativo. 
También puede indicar la presentación, el rango del valor de compra y de 
las fechas de vencimiento que deben tener los artículos al momento de 
agregarse. 
Tanto el valor de compra como la fecha de vencimiento se calculan al azar 
entre el rango establecido. 
CAMBIAR UNA PRESENTACIÓN POR OTRA 
Esta opción permite cambiar la presentación de un grupo de artículos por 
una nueva. El formulario que se muestra es: 
-Tñnn 
Cambiar u n a P resentación por O tra 
S e l e c c i o n e la P r e s e n t a c ió n A c t u a l J C a j a ▼ { 
E s c r i b a la p r e s e n t a c i ó n q u e q u ie r e c a m b ia r p o r : C a j a 
C am b iar A h o ra 
534 G r u p o E d i t o r i a l Megabyte < 3 
CAPÍTULO XII: Programación ADO 4SSB & 
En el combo sólo se visualizan las presentaciones de los artículos que 
actualmente tiene la tabla. Después de elegir una presentación, el programa 
le pide que escriba la nueva presentación por la cual la desea cambiar. A 
todos los artículos que tienen la presentación seleccionada se le cambia por 
la nueva presentación al hacer click en el botón Cambiar Ahora. 
CAMBIAR EL VALOR DE COMPRA 
Esta es útil cuando desee variar el valor de Compra de los artículos. El 
formulario que se visualiza es: 
1 üü. V a r i a c i ó n d e l V a l o r d e C o m p r a m u _ I n i x l 
............. 
In g r e s e e l m o n to d e V a r ia c ió n |j 
L a V a r ia c io n e s ta e n : 
S o le s C P o r c e n t a je 
1 ip u u c v d i i a u u n 
In c r e m e n ta r C" D is m in u ir 
C a m b ia r A h o r a J 
C e r ra r j 
Primero debe ingresar el monto de variación, luego elegir si lo ha ingresado 
en soles o porcentaje y por último debe indicar si se debe aumentar o disminuir 
al valor de comprar. Si comete algún error al variar el valor de compra de 
los artículos, utilice la siguiente opción. 
RESTAURAR EL VALOR DE COMPRA ANTERIOR. 
Cuando usted varia el valor de compra, se guarda en un campo el valor de 
compra anterior y esta opción permite recuperar dicho valor de compra. 
Esta opción es muy útil cuando comete algún error en la variación de los 
valores. 
Antes de restaurar el valor de compra le pide la confirmación: 
I CONFIRME POR FAVOR i . mu n í 
- V Res 
i 
taurar el Valor de 
( S í ] 
; Compra anterior d 
No 
e los artículos 
G r u p o E d i t o r i a l Megabyte 535
VISUAL BASIC como debe ser. 
Si ingresa a la opción Restaurar El valor de Compra anterior sin haber variado 
los valores se muestra un mensaje de aviso. 
BORRAR ARTÍCULOS 
Esta opción permite borrar todos o un grupo de artículos. 
El formulario que presenta es el siguiente: 
. B o rra r A r tíc u lo s 
C a m p o O p e ra d o r 
MED 
C O D IG O *l N O M B R E wm 
P R E S E N T A C IO N > 
V A L O R C O M P R A 
| V E N C IM IE N T O 
II A 
A V 
— i 
^1 
A c e p ta r j 
C o n d ic io n 
B o „ a , lo s A r tíc u lo s q u e c u m p le n B o [|a ( T o d o s tes A r t( c u |o s 
Usted puede formar la condición que deben cumplir los artículos para 
que se puedan borrar o hacer un click en el botón respectivo para borrar 
todos los artículos. 
Cuando se elige el campo Valor de Compra no se permite el ingreso de 
letras y cuando se elige el campo Vencimiento se muestra automáticamente 
un control DTPicker. 
Este ejemplo lo puede utilizar también en la opción Cambiar el Valor de 
Compra de tal manera que sólo se pueda cambiar el Valor de algunos artículos. 
5 3 6 G r u p o E d it o r i a l M c g a b v t e ^ ^ ^ 
w m , 
CAPITULO XII: Programación ADO 
RESTAURAR LOS ÚLTIMOS ARTÍCULOS BORRADOS 
Cuando usted borra artículos en la opción anterior, estos se guardar en 
una tabla de seguridad con un campo adicional llamado Fecha el cual contiene 
la fecha que borró el artículo. Esto es importante porque puede borrar por 
accidente los artículos. Esta opción permite recuperar todos los artículos 
borrados un grupo de ellos. Los grupos de artículos se pueden recuperar la 
fecha en la que se borraron. Visualiza el siguiente formulario. 
■ ■ ■ ■ ■ ■ ■ i i M B i M i M i i i i i i i i i i i M í i i r i i i i r i n 1................m i 
Ver por fecha de borrado 115/07/00 Ver todos los borrados I 
|Estos son los artículos que ha borrado el día 15/07/00 
Codigo Nombre Presentación Valor de Compra Vencimiento Fecha que se borró 00002 Acaricida Loción x 60 mi. Frasco 49.5662 2003-01 -07 00:00:00 2000-07-15 00 00 00 0000G AB-Broncol 300 IM Frasco 49.5531 2000-06-15 00:00:00 2000-07-1 5 00 OO 00 
00007 AB-Broncol 600 IM Frasco 49.61 81 2002-05-01 00:00:00 2000 07-1 5 00 00 00 
00009 Fenistil Gotas Frasco 20 mi. Frasco 49.6442 2000 06-29 00:00:00 2000 07-1 5 00 00 00 00010 Finistil Jarabe Frasco 100 mi. Frasco 49.5662 2000-06-28 00:00:00 2000 07-15 00:00 00 00012 Panalain amp. x 2 mi Frasco 50.7079 2002-05-08 00:00 00 2000-07-15 00:00:00 
00013 Fluidasa iny x 2 mi Frasco 49.6442 2000-09-16 00:00:00 2000-07-15 00:00 OO 
00004 Pilka Gotas 20 mi Frasco 49.9035 2002-10-16 00:00:00 2000-07-15 00 00 00 
-1 1 
Recuperarlos 
Cerrar 
BORRARLACOPIADESEGURIDADDELOS ARTICULOS BORRADOS 
Si está seguro de los artículos que ha borrado, entonces esta opción 
elimina definitivamente los artículos borrados. Visualiza el mismo formulario 
anterior, pero con el botón Borrarlos Definitivamente. 
Ver pot fecha de borrado “3 Ver todos los borrados 
¡Estos son los artículos que ha borrado el día 15/07/00 
Codigo N ombre Presentación Valor de Compra Vencimiento Fecha que se borró 00002Acaricida Loción x 60 mi. Frasco 49.5662 2003-01 -07 00:00:00 2000-07-15 00:00:00 
00006 AB-Broncol 300 IM Frasco 49.5531 2000-06-15 00:00:00 2000-07-15 00:00:00 
00007 AB-Broncol 600 IM Frasco 49.6181 2002-05-01 00:00:00 2000-07-15 00:00:00 
00009 Fenistil Gotas Frasco 20 mi Frasco 49.6442 2000-06-29 00:00:00 2000-07-15 00:00 00 00010 Finistil Jarabe Frasco 100 mi Frasco 49.5662 2000-06-28 00:00:00 2000-07-15 00:00:00 00012 Panalgin amp. x 2 mi Frasco 50 7079 2002-05-08 00:00:00 2000-07-15 00:00 00 
00013 Fluidasa iny x 2 mi Frasco 49.6442 2000-09-16 00:00:00 2000-07-15 00:00:00 
00004 Pilka Gotas 20 mi Frasco 49.9035 2002-10-16 00:00:00 2000-07-15 00:00:00 
Borrarlos 
Definitivamente 
G r u p o E d i t o r i a l Megabyte 537
^ÉÍÍÉÉÉ^ VISUAL BASIC como debe ser... 
DESARROLLO DE LA APLICACIÓN N° 70 
Como esta aplicación está compuesta por varios formularios, debe agre­gar 
un módulo y definir allí los objetos Connection y Recorset y las variables 
que se necesitan en la aplicación. 
También debe crear en este módulo el procedimiento MAIN en el cual 
se realiza la conexión y se muestra la pantalla de presentación. Este proce­dimiento 
se debe ejecutar primero, para ello configure al Visual Basic en la 
opción Proyecto/Propiedades del proyecto/Objeto Inicial. 
Contenido del Módulo de la aplicación 
Public DB As New ADODB. Connection 
Public RS As New ADODB.Recordset 
Public RS2 As New ADODB.Recordset 
Public RP As Integer 
Public EXISTE As Boolean 
Sub Main() 
‘Muestra pantalla de presentación 
Form l.Show 
Form l .Refresh 
‘Realiza la conexión 
DB.Open “DSN= VENTAS ” 
RS.Open “SELECT codigo,nombre,presentación,valorcompra,vencimiento 
FROM artículos ORDER B Y nombre ”, DB, adOpenStatic, adLockOptimistic 
‘Cuando termina la conexión oculta la presentación y muestra el menú principal 
Forml. Hide 
Forml.Show 
End Sub 
FORMULARIO N 2 01 
En el formulario N° 01 debe diseñar la pantalla de Presentación. En la aplicación 
de ejemplo, este formulario está compuesto por 3 etiquetas con los mensajes: 
Visual Basic, Como debe ser... y Espere un momento Por Favor con sus 
respectivas propiedades como poR ejemplo: Font, Forecolor, etc. 
FORMULARIO N 2 02 (Menú Principal) En el formulario N° 02 diseñe el Menú Principal con las opciones indicadas. Este 
formulario debe tener un control MSHFlexGrid donde se muestran todo los artícu­los 
de la tabla. 
538 G r u p o E d i t o r i a l P 
CAPÍTULO XII: Programación ADO 
Instrucciones del Form_Activate 
Prívate Sub Form_Activate() 
MSHFlexGridl. Cois = 0 
Set MSHFlexGridl.DataSource = RS 
MSHFlexGridl.FonnatString = “Codigo Noném | Presentación V.deCompra Vencimiento“ 
End Sub 
Instrucciones de la opción Agregar Artículos de Prueba 
Prívate Sub Agregar_Click() 
Form3.Show 
End Sub , Instrucciones de la opción Cambiar una Presentación por Otra 
Prívate Sub Cambiar_Click() 
Form4.Show 1 
End Sub 
Instrucciones de la opción Cambiar el Valor de Compra 
Prívate Sub CambiarValor_Click() 
Form5.Show 1 
End Sub 
Instrucciones de la opción Restaurar el Valor de C. Anterior. 
Prívate Sub RestaurarValor_Click() 
RS. Cióse 
‘Abre la tabla artículos con todos los campos 
RS.Open ‘‘SELECT * FROM Artículos” 
'Verificasihayunacopiadebsvdomsdecompraanleriojes( Campo ValorAnterior) 
EXISTE = False 
F orX = 1 To RS.Fields.Count 
IfRS(X- l).Name = “ValorAnterior” Then EXISTE = True 
Next 
RS.Cióse 
‘Abre la tabla artículos con los campos principales 
RS. Open “SELECT codigo, nombre,presentación, valorcompra, vencimiento 
FROM artículos ORDER BY nombre”, DB, adOpenStatic, 
adLockOptimistic 
‘Si no existe el campo ValorAnterior significa que no ha variado el vabrde compra 
IfNot EXISTE Then 
MsgBox “No se ha variado el Valor de C. de los Artículos”,64, "No puedo realizarlo ” 
Else 
IfMsgBox( “Restaurar el Valorde C. anterior de losArt. ", 36, “Confirme por Favor") = 6 Then 
DB.Execute “UPDATE Artículos SET ValorCompra = ValorAnterior” 
‘Elimna el campo ValorAnterior 
RS. Cióse 
DB.Execute ( “ALTER TABLE Artículos Drop column ValorAnterior”) 
RS.Open 
‘Actualiza la Consulta 
RS.Requery 
Set MSHFlexGridl.DataSource = RS 
End If 
End If 
End Sub 
G r u p o E d i t o r i a l Megabyte 539
¡Ü- VISUAL BASIC como debe ser... 
Instrucciones de la opción Borrar Artículos 
Prívate Sub Borrar Artículos_Click() 
Formó. Show 1 
End Sub 
Instrucciones de la opción Recuperar Artículos Borrados 
Prívate Sub RecuperarArtículos_Clíck() 
Form7!Command2. Visible = True 
Form7!Command2.Enabled = True 
Form7!Command3. Visible = False 
Form7.Show 1 
End Sub 
Instrucciones de la opción Borrar Copia de Seguridad 
Private Sub BorrarCopia_Click() 
Form7!Command2.Visible = False 
Form7!Command3. Visible = True 
Form7!Command3.Enabled = True 
Form7.Sh.ow 
End Sub 
Instrucciones del MSHFlexGrid para ordenar los artículos 
Private Sub MSHFlexGridl_Click() 
MSHFlexGridl .Sort = 1 
End Sub 
Instrucciones de la opción Salir 
Private Sub Salir_Click() 
End 
End Sub 
FORMULARIO N e 03 (Agregar Artículos de Prueba) 
EKE! 
■ : Labeii ¡ 
C o n fig u ra c ió n d e lo s n u e v o s A rtíc u lo s : 
Los artículos empiezan con la palabra ÍText2 
Aceptar ; 
La presentación de los artículos debe ser 
El valor de compra debe estar entre 
La fecha de vencimiento debe estar entre el j l 4 /0 7 /0 0 y el j 14/07/00 
En este formulario debe dibujar 5 cajas de texto, 1 ProgressBar, 2 DTPickei; 2 
botones de comandos 1 Frcime y las etiquetas indicadas. Al ProgressBar asígnele 
en su propiedad Visible el valor False. 
540 G r u p o E d i t o r i a l Megabyte < 
§ ^ 5 CAPÍTULO XII: Programación ABO '‘I I É l P 
IN STR U C CIO N ES DEL FORMULARIO N e 0 3 
Instrucciones del Form_Activate 
Prívate Sub Form__Activate() 
'Valores predeterminados para agregar artículos 
Textl = " " 
Text2 = “Producto” 
Text3 = “Caja” 
Text4 = “10.00” 
Text5 = “1000.00" 
DTPickerl.Value - CDate(“01-01-2001”) 
DTPicker2.Value - CDate(“31 -12-2001") 
Labell = “Actualmente hay “ & RS.RecordCount & “ artículos. ¿Cuanto desea 
agregar?” 
Textl. Set Focus 
End Sub 
Instrucciones del Botón Aceptar 
Private Sub Command!_Click() 
Dim dias, NR As Long 
‘Si no ingresa la cantidad de artículos sale del Procedimiento 
If Val(Textl) = 0 Then Exit Sub 
Commandl .Enabled = False 
ProgressBarl. Visible = True 
ProgressBarl .Min = 1 
ProgressBarl.Max = Val(Textl) 
NR = RS.RecordCount 
dias = DTPicker2. Value - DTPickerl. Value 
Randomize 
For X = 1 To Val(Textl) 
RS.AddNew 
RSfcodigo = FormatfX + NR, “00000”) 
RSInombre = Text2 & X + NR 
RSIpresentacion = Text3 
RS.'valorcompra = Int((Val(Text5)-Val(Text4)+1 )* Rnd + Val(Text4)) 
RS¡vencimiento — DTPickerl .Value + Int((dias -1 + 1) * Rnd + 1) 
ProgressBarl. Value = X 
RS. Update 
Next X 
ProgressBarl. Visible = False 
Commandl .Enabled = True 
‘Actualiza la consulta 
RS.Requery 
Hide 
End Sub 
Instrucciones del Botón Cerrar 
Private Sub Command2_Click() 
Hide 
End Sub 
G r u p o E d i t o r i a l Megabyte 541
é l i VISUAL BASIC como debe ser... , .$<£ ; 
FORMULARIO N2 04 (Caxríbia xana Presentación por Otra) 
S . Cambiar u n a P re sen ta c ió n po i Otra r r n a r x i i 
S e le cc io n e la P re se n ta ció n A c tu a l | C om bol 
E scriba la n u e v a p resentación 
I T extl 
Cam biar A h o ra 
Cerrar 
En este formulario dibuje 2 etiquetas, 1 ComboBox, 1 Frame, y 2 botones de 
comandos. Al Frame asígnele en su propiedad Visible el Valor False. 
INSTRUCCIONES DEL FORMULARIO N 2 04 
Instrucciones del Form_Activate 
Prívate Sub Form_Activate() 
'Obtiene sólo una presentación de cada grupo 
RS2,Open "SELECTDistinct Presentación FROM Artículos", DB, 
adOpenStatic, adLockPessimistic 
‘Muestra las presentaciones en el combo 
RS2. Move First 
Combo l.C lear 
Do While Not RS2.EOF 
Combol.Addltem RS2(0) 
RS2.MoveNext 
Loop 
Combol. List Index = -1 
RS2. Cióse 
End Sub 
Instrucciones del Combol 
Prívate Sub Combol_Click() 
'Cuando se selecciona una presentación, activa el Frame 1 
Frame 1. Visible = Truc 
Label2 - “Escriba la presentación que quiere cambiar por: ” & Combol 
Textl = Combo1 
Textl.SetFocus 
End Sub 
542 G r u p o E d i t o r i a l Megabyte < |j ||||| 
CAPÍTULO XII: Programación ADO 
Instrucciones del Botón Cambiar Ahora 
Private Sub Commandl_Click() 
Form4. Enabled = False 
DB. Execute “UPDATE Artículos SET Presentación = & Textl & 
WHERE Presentación = & Combol & 
RS.Requery 
Form4. Enabled = True 
Frame ¡.Visible = False 
Hide 
End Sub 
Instrucciones de Textl 
Private Sub Textl_GotFocus() 
‘Selecciona el Texto de Textl para reemplazarlo por el que escribe 
Textl.SelStart = 0 
Textl. Sel Length = Len( Textl) 
Textl = Textl.SelText 
End Sub 
Instrucciones del Botón Cerrar 
Private Sub Command2_Click() 
Frame 1. Visible = False 
Hide 
End Sub 
FORMULARIO N 2 05 (Cambiar el Valor de Compra) 
V a r ia c ió n d e l V a lo r d e C o m p ra 
In g re s e el m o n to d e V a ria c ió n • p T e x tl 
L a V a ria c ió n e s ta e n : 
S o le s C* P o rc e n ta je 
C In c re m e n ta r D is m in u ir 
C a m b ia r A h o ra I ....................... 
C errar I . 
En este formulario dibuje 1 etiqueta, 1 caja de texto, 2 Frame y dentro de 
cada uno de ellos 2 botones de opciones y dos botones de comando. 
G r u p o E d i t o r i a l Megabvte 543
^ É ü |¡l!> VISUAL BASIC como debe ser... 
INSTRUCCIONES DEL FORMULARIO N 2 05 
Instrucciones del Form_Activate 
Prívate Sub Form_Activate() 
‘Limpia Textl y desactiva los botones de opciones 
Textl = "" 
Optionl = False 
Option2 = False 
OptionJ = False 
Option4 = False 
Textl.SetFocus 
End Sub 
Instrucciones del Procedimiento RealizarCopia 
Sub RealizaCopiaO 
Form5 .Enabled = False 
'Abre la tabla artículos con todos los campos 
RS.Open “SELECT * from Artículos”, DB 
‘Verifica si hay una copia de los valores anterior 
EXISTE = False 
For X - 1 To RS.Fields.Count 
I f RS(X - l).Name = “ValorAnterior" Then EXISTE = True 
Next 
IfN o t EXISTE Then 
‘Si no existe el campo ValorAnterior lo crea para adicionar una 
‘copia de seguridad de los valores de Compra 
RS. Cióse 
DB.Execute ( “ALTER TABLE Artículos ADD COLUMN ValorAnterior Currency") 
‘Realiza la copia de seguridad 
DB.Execute “ UPDATE Artículos SET ValorAnterior = ValorCompra ” 
Else 
‘Sólo realiza la copia de seguridad 
DB.Execute “UPDATE Artículos SET ValorAnterior = ValorCompra” 
RS. Cióse 
End I f 
End Sub 
Instrucciones del Botón Cerrar 
Prívate Sub Command2_Click() 
Hide 
End Sub 
G r u p 5 4 4 o E d it o r ia l Megabyte 
CAPITULO XII: Programación ADO 
Instrucciones del Botón Cambiar Ahora 
Private Sub Command 1 _Click() 
IfVal(Textl)=0 Then 
Msg Box “Ingrese el monto de Variación”, 64, “Error” 
Exit Sub 
E n d lf 
RS. Close 
If Optionl Then 
If Option3 Then 
lfM sgBox(“Está Incrementando el Valor de Compra en “ & Textl 
& “ Soles”, 65, “Confirme la Variación”) = 1 Then 
RealizaCopia 
DB.Execute “UPDATEArtículos SETValorCompra- ValorCompra+ VAU"& Textl A 
E n dlf 
Elself Option4 Then 
IfMsgBox( “Está Dismuyendo el Valor de Compra en “ & Textl & 
Soles ”, 65, “Confirme la Variación ’) = 1 Then 
RealizaCopia 
DB.Execute “ UPDATEAi1iculosSETValorCompra= ValorCompra- VAlf" Inil .V 
E n dlf 
Else 
MsgBox “No ha seleccionado el Tipo de Incremento", 64, "Error" 
Exit Sub 
E n dlf 
Elself Optionl Then 
If Option3 Then 
IfMsgBox(“Está Incrementando el Valor de Compra en un “ & 
Textl & 65, “Confirme la Variación’ ) = 1 Then 
RealizaCopia 
DB.Execute “UPDATE Artículos SET ValorCompra - ValorCompra t 
ValorCompra * VAL(“ & Textl & “)/IOO" 
E n dlf 
Elself Option4 Then 
IfMsgBoxt "Está Disminuyendo el Valor de Compra en un “ & 
Textl & “% ”, 65, 'Confirme la Variación ”) = 1 Then 
RealizaCopia 
DB.Execute “UPDATE Artículos SET ValorCompra - ValorCompra 
ValorCompra * VALI" & Textl & “y ! 00" 
End If 
Else 
MsgBox “No ha seleccionado el Tipo de Incremento", 64, “Error" 
Exit Sub 
End if 
Else 
MsgBox “No ha indicado la Variación en Soles o Porcentaje”, 64, "Error" 
Exit Sub 
End If 
‘Abre la tabla artículos con los campos principales 
RS.Open “SELECTcodigo,nonú)rej)resenlacioii,va¡orc(mipra,vencim¡erüo FROM Articulas 
ORDER BY nombre", DB, adOpenStatic, adLockOptimistic 
RS. Re query 
Form5.Enabled = True 
Hide 
End Sub 
G r u p o E d i t o r i a l Megabyte 5 4 5 4 K B
'/jtSi&M' VISUAL BASIC como debe ser.:’. 
FORMULARIO N e 06 (Borrar Artículos) 
C am po O perador Valor 
Li*t2 ; JT e x tl j 0 9 /0 7 /8 8 
A c e p tar 
S ' 
Borrar los A rtículos q u e cu m p len 
la c o n d ic ió n Borrar T o d o s los A rtículos 
En este formulario dibuje 2 ListBox, 2 cajas de texto, 1 DTPicker, 6 botones de 
comandos y 4 etiquetas. 
El control DTPicker dibújelo encima del control Textl y asígnele en su propiedad 
Visible el valor False porque sólo se debe visualizar cuando se seleccione la Fecha 
de Vencimiento. 
Al botón Command4 (Borrar Artículos que cumplen la condición) asígnele en su 
propiedad Enabled el valor False. 
INSTRUCCIONES DEL FORMULARIO N s 06 
Instrucciones del Form_Activate 
Private Sub Form_Activate() 
‘Limpia las cajas de texto 
Text1 = " " 
Textl = "" 
‘Muestra la fecha del sistema en el DTpicker 
DTPicker 1. Value - Date 
‘Adiciona los nombres de los campos en el Listl 
List ¡.Clear 
For X - 1 To RS. Fields. Count 
L istl.Addltem RS(X - l).Name 
Next X 
‘Adiciona los operadores en el L istl 
Listl. Clear 
Listl.Acldltem “ = “ 
Listl.Addltem “ < “ 
Listl.Addltem “ > “ 
Listl.Addltem “ < - “ 
Listl.Addltem “ > - “ 
Listl.Addltem “ <> “ 
Listl.Addltem “ Like “ 
Listl.Listlndex - 0 
Listl. List Index = 0 
End Sub 
546 G r u p o E d it o r ia l Megabyte 
CAPÍTULO XII: Programación ADO 
Instrucciones del L istl 
Private Sub Listl jClicki) 
Textl = 
‘Si se ha seleccionado el campo Vencimiento muestra el DTPicker 
tf List¡.Listlndex = 4 Then 
Text I .Visible = False 
DTPickerl. Visible = True 
Else 
Textl. Visible = True 
DTPickerl. Visible = False 
End If 
End Sub 
Instrucciones del Textl 
Private Sub Text I_KeyPress( KeyAscii As Integer) 
‘Evita el ingreso de letras cuando se ha seleccionado el ValorCompra 
/ / Listl .Listlndex = 3 Then 
If (Chr(KeyAscii)< “0 ” Or Chr(KeyAscii)> ”9") And (KeyAscii<>8) Then 
KeyAscii = 0 
Endlf 
Endlf 
End Sub 
Instrucciones del Botón Aceptar 
Private Sub Command 1 _Click() 
‘Agrega la condición fonnada a Tetxt2 
tf Listl.Listlndex < 3 Then 
If List2.Listlndex = 6 Then 
Text2 = Textl + Listl + List2 + ..... + Textl + 
Else 
Text2 = Text2 + Listl + Listl + + Textl + 
Endlf 
End ¡f 
lf List ¡.Listlndex = 3 Then 
Textl = Textl + Listl + Listl + Textl 
Endlf 
lf List ¡.Listlndex = 4 Then 
Textl = Text2+List¡ + Listl + "CDATE(“‘ & DTPickerl .Value & 
End ¡f 
Commandl. Enabled = True 
Command3. Enabled = True 
Command4. Enabled = True 
End Sub 
Instrucciones del Botón Y 
Private Sub Conunand2_Click() 
Text2 = Textl + “ AND “ 
Commandl. Enabled = False 
Command3. Enabled = False 
End Sub 
Instrucciones del Botón O 
Prívate Sub Command3_Click() 
Textl = Text2 + “ OR “ 
Command2. Enabled = False 
Command3.Enabled = False 
End Sub 
G r u p o E d it o r i a l Megabyte ;■£ 547
VISUAL BASIC como debé ser. . . í t i ® ® ! 
Instrucciones del Botón Borrar los artículos que cumplen la C. 
Prívate Sub Commcmd4_Click() 
On Error GoTo control 
Formó.Enabled = False 
RP = MsgBox(“Se borraran todos los artículos que cumplen la 
condición “ + Chr(13) + Text2, 36, CUIDADO”) 
IfRP = 6 Then 
‘Hace la copia en la tabla RESPALDO de los artículos que se borran 
DB. Execute “INSERT INTO respaldo SELECT codigo, nombre, 
presentación, valorcompra,vencimiento,#" & Date & "# 
AS fecha FROM Artículos WHERE “ & Text2 
DB.Execute “DELETE FROM Artículos WHERE “ & Text2 
RS. Re query 
En d If 
Hide : Formó.Enabled = True 
Exit Sub 
control: 
'Si no existe la tabla RESPALDO la crea con los primeros registros 
If En: Number = -2147217865 Then 
DB.Execute “select codigo,nombre,presentación, valorcompra, 
vencimiento,#” & Date & “# as fecha into respaldo from 
artículos where “ & Text2 
Resume Next 
Else 
MsgBox “Verifique las instrucciones o la C. ”,16, ’’Existe un error’’ 
Exit Sub 
End If 
End Sub 
Instrucciones del Botón Borrar Todos los Artículos. 
Private Sub Commands_Click() 
On Error GoTo control 
RP = MsgBox( “Se borraran todos los artículos ”, 36, “CUIDADO ”) 
IfRP = ÓThen 
Formó.Enabled = False 
DB. Execute “INSERT INTO respaldo SELECT codigo, nombre, 
presentación, valorcompra, vencimiento,#" & 
Date & “# AS fecha FROM Artículos" 
DB.Execute “DELETE FROM Artículos” 
RS.Requery 
Formó.Enabled = True : Command4.Enabled = False 
Hide 
End If 
Exit Sub 
control: 
If Err.Number = -2147217865 Then 
DB.Execute “SELECT codigo,nombre,presentacion, valorcompra, 
vencimiento, # ” & Date & # AS fecha INTO 
Respaldo FROM Artículos ” 
Resume Next 
Else 
MsgBox “Verifique las instrucciones”, 16, “Existe un error” 
Exit Sub 
End If 
End Sub 
548 G r u p o E d i t o r i a l Megabyte 
CAPÍTULO XII: Programación ADO 
FORMULARIO N2 07 (Recupera Artículos Borrados) 
Debe dibujar 2 etique­tas, 
un ComboBox 4 
botones de comandos 
y 1 MSHFlexGrid. Al 
Commandl (Ver Todos 
los borrados) asígnele 
en su propiedad 
Enabled el valor False. 
■ Vet pen fecha de boirado Vei todos ios bonados 
I Estos son todos los artículos que ha borrado 
B ocíalos 
DefinWvamerte 
INSTRUCCIONES DEL FORMULARIO N s 07 
Instrucciones del Form_Activate. 
Prívate Sub Form_Activate() 
On Error GoTo control 
‘Muestra los fechas en el com bol en las que borró artículos 
RS2,Open “SELECTDISTINCTfecha FROM Respaldo”, DB, adOpenStatic, 
adLockPessimistic 
RS2.MoveFirst 
Combo I.Clear 
Do While Not RS2.EOF 
Combo I.Addltem RS2(0) 
RS2.MoveNext 
Loop 
Combol .Listlndex = -1 
RS2. Cióse 
MSHFlexGrid 1.Cois = 0 
RS2.Open “SELECT * FROM Respaldo", DB 
Set MSHFlexGridl .DataSource - RS2 
RS2. Requerí 
MSHFlexGridl.FormatStríng - “ Codigo | Nombre  Presentación Valor 
de Compra Vencimiento | Fecha que se borró” 
RS2.Cióse 
Exit Sub 
G r u p o E d i t o r i a l Megabyte^ 549 « O »
control: 
If Err.Number = -2147217865 Then 
MsgBox “No hay artículos borrados e",64, ’ 'No se encontró copia de seguridad 
Command2.Enabled - False 
Command3.Enabled = False 
Hide 
E n d lf 
End Sub 
Instrucciones del Combol 
Prívate Sub Combol jClick() 
Muestra los artículos borrados en la fecha que se selecciona 
Label2 = “Estos son los artículos que ha borrado el día “ & Combol 
RSLOpen “SELECT*FROMRespaldoWHEREfecht=cdate(‘“&Comhol& “‘)",ÜB 
Set MSHFlexGridl .DataSource = RS2 
RS2.Requery 
MSHFlexGridl .FormatString = “ Codigo | Nombre | Presentación  Valor 
de Compra Vencimiento | Fecha que se borró “ 
RS2. Cióse 
Command 1. Enabled = True 
End Sub 
Instrucciones del Botón Ver Todos los Borrados 
Prívate Sub Commandl_Click() 
Combol = 
Label2 = “Estos son todos los artículos que ha borrado ” 
RS2. Open “SELECT * FROM Respaldo ” , DB 
Set MSHFlexGridl .DataSource = RS2 
RS2.Requery 
MSHFlexGridl .FormatString - “ Codigo  Nombre | Presentación | Valor 
de Compra Vencimiento | Fecha que se borró “ 
RS2. Cióse 
Command!.Enabled = False 
End Sub 
Instrucciones del Botón Recuperarlos 
Prívate Sub Command2_Click() 
‘Recupera los artículos 
« B » 5 5 0 G r u p o E d i t o r i a l Megabyte 
C A P ÍT U L O XII: P rogram ación A D O ^ ^ m 
If Combol = “ ” Then 
DB. Execute “INSERT INTO Artículos SELECT codigo,nombre, 
presentación, valorcompra, vencimiento,fecha FROM Respaldo ” 
DB.Execute ( “DROP TABLE Respaldo ") 
MSHFlexGridl .Rows - 0 
Else 
DB.Execute “INSERT INTO Artículos SELECT codigo,nombre, 
presentación, valorcompra, vencimiento,fecha FROM Respaldo WHERE 
fecha = cdate(“‘ & Combol & 
DB.Executei “DELETE FROM Respaldo WHEREfecha=cdate( ‘“&Combol&"')") 
End If 
RS.Re query 
Hide 
End Sub 
Instrucciones del Botón Borrarlos definitivamente 
Este botón se utiliza cuando se elige la opción Borrar Copia de Seguridad que se 
encuentra en el Menú Principal 
Prívate Sub Command3_Click() 
RP=MsgBox(“EstasegurDdebormrdefmitivamente",36,”Yanopodránicuperarlos’') 
IfRP = 6 Then DB.Execute “DROP TABLE Respaldo” 
MSHFlexGridl.Rows = 0 
Hide 
End Sub 
G r u p o E d i t o r i a l Megabyte 5 5 1
VI S UAL 
BASIC S.D 
C om o d e b e ser...! 
“Visual Basic, como debe ser...”, es un texto 
eminentemente práctico, quizás esto sea lo medular que 
lo hace diferente de otros libros. Aquí encontrarás 
programas desarrollados y ejercicios propuestos que te 
ayudarán a conjugar armoniosamente la teoría y la 
práctica. Es, pues, una eficiente guía didáctica para 
crear aplicaciones que te serán útiles en la realización 
de tus diversas tareas como programador en tu centro 
de estudio y trabajo. 
Este libro esta diseñado de tal manera que sirve de 
apoyo y guía de autoaprendizaje para estudiantes de 
programación de computadoras, porque el autor cuenta 
con una amplia experiencia en la docencia de este 
curso. 
Además cuenta con aplicaciones y componentes como: 
Controles ActiveX, Creación de archivos de ayuda, 
Manejo de impresoras, Base de datos, Instrucciones 
SQL, Programación ADO, Uso de DataEnvironment y 
DataReport 
$ tfisüfll % r I 
j ,¿4 
P ^ RÚtiñ(foTorncb l889HOf c^208?iCercadoJdé}Lim aW relefax: [332-4110 
Kw w w .editorialm eqabvte:conrA É ventas@ ed¡torialm eqabvté.com

Visual Basic 6.0 progarmacion

  • 3.
    % Megabyte s.a.c. G R U P O E D I T O R I A L Tercera Edición, Febrero 2006 Área : Computación e Informática Hecho el Depósito Legal en la Biblioteca Nacional del Perú N° 2006-1601 (Ley N° 26905 / D.S. N° 017-98-ED) R.U.C. N° 20507993444 ISBN: 9972 - 821-53 - 6 © Edward Aburto Correa Gerente General___________ © Juan José Castañena León Autor © Gean Cario Apolinario García Diseño de Carátula _____ Visual Basic 6.0 Como Debe Ser..... Derechos Reservados / Decreto Ley 822 Prohibido la reproducción total o parcial de este libro, su tratamiento informático la transmisión de ninguna otra forma o por cualquier otro medio ya sea electrónico, mecánico, por fotocopia, por registro u otros métodos sin permiso previo y por escrito de los titulares de Copyright. D istribu ción y Ventas Jr. Rufino Torrico 889 of. 208 - C ercado de Urna Telefax: 332-4110 ww w .e d ito ria lm e g a b y te .c o m v e n ta s @ e d ito ria lm e g a b y te .c o m Cta. B a n c o de Crédito SI. 191-12591005-0-86 $. 191-12591006-1-87 VISUAL BASIC como debe ser. Dedicatoria | A José Domingo y María Eugenia, mis Padres, por darme todo lo que estuvo a su alcance para ser un profesional. A Blanca Mírela, mi esposa y a Juan José, José María y María José, mis hijos, por el amor que nos une. G r u p o E d it o r ia l Megabyte
  • 4.
    'fo VISUAL BASICcomo debe ser.. < AGRADECIMIENTO A todas las personas e instituciones que, una vez más, hicieron posible la culminación de este segundo libro. A mis alumnos, de manera especial, por ser ellos quienes me en señ a ro n , d ia ria m en te qué y cóm o escribir este libro. El A utor. ► 6 G r u p o E d it o r ia l Megabyte •‘í VISUAL BASIC como debe ser.. . 4ÊÊÊÈb PRÓLOGO Pensando en ti, me animé por la redacción de este libro. “Visual Basic, como debe ser...”, es como tú: único; distinto de muchos otros libros de com putación, especialm ente los referentes a lenguaje de program ación. A través de mis años de experiencia como docente he notado, con asombro y pesar, que la mayoría de los estudiantes se “quejan” de los libros porque no los “entienden”, ya que sólo presentan conceptos y sintaxis que antes de responder a sus inquietudes y aclarar sus dudas, los confunden. Además, dicen, presentan una secuencia de temas que pocas veces se tratan en el desarrollo de la asignatura. “V isual B asic, com o debe s e r ...”, es un texto em inentem ente práctico, quizás esto sea lo medular que lo hace diferente de otros libros. Aquí encontrarás programas desarrollados y ejercicios propuestos que te ayudarán a conjugar armoniosamente la teoría y la práctica. Es, pues, una eficiente guía didáctica para crear aplicaciones que te serán útiles en la realización de tus diversas tarcas como programador en tu centro de trabajo. Sé, también, que como docente no sólo debo ser el “facilitador” del aprendizaje, si no que además tengo la tarea de buscar despertar en los alumnos su aletargado espíritu de investigación que le ayuden a no “contestar”, con los conocimientos, impartidos en aulas sino más bien que profundicen sus conocim ientos, los contrasten y los pongan en práctica. Para ellos y par ello presento también aplicaciones propuestas. G r u p o E d it o r ia l Megabyte 7 ^ | | ¡ ¡ | l
  • 5.
    o VISUAL BASICcomo debe ser.. . i l i l i P C O N T E N I D O Prólogo.................................................................................................................................. 7 Indice .................................................................................................................................... 9 Introducción ........................................................................................................................ 17 CAPÍTULO I : ENTORNO DEL VISUAL BASIC Acceso al visual Basic ......................................................................................................... 21 Ventana de In icio .................................................................................................................. 22 ¿Qué es un Proyecto?............................................................................................................ 23 Componentes del Visual Basic.............................................................................................. 25 Descripción de la Barra Estándar......................................................................................... 28 Ventana de Componentes..................................................................................................... 31 Salir del Visual Basic.............................................................................................................. 33 Solucionando los problemas iniciales................................................................................... 34 Filosofía de programación en Visual Basic........................................................................... 40 Preguntas de repaso N° 01.................................................................................................... 41 CAPÍTULO II : DESCRIPCIÓN DE LOS CONTROLES BÁSICOS El formulario ........................................................................................................................ 45 ¿Cómo asignar una propiedad?............................................................................................. 47 Etiqueta (Label)..................................................................................................................... 49 Aplicación desarrollada N° 0 1 .............................................................................................. 50 Seleccionar controles ............................................................................................................ 51 Modificar el tamaño de los controles................................................................................... 52 Mover el control .................................................................................................................. 52 Guardar o Grabar una aplicación.......................................................................................... 54 Ventana para grabar un formulario....................................................................................... 55 Ventana para grabar un proyecto......................................................................................... 55 Abrir o recuperar una aplicación ......................................................................................... 56 Ejecutar una aplicación ........................................................................................................ 57 Finalizar una aplicación ....................................................................................................... 58 Grabar un proyecto en un diskette....................................................................................... 58 Crear un archivo ejecutable (*.EXE).................................................................................... 59 ¿Qué es un acceso directo?.................................................................................................... 59 Crear un acceso directo........................................................................................................ 60 Caja de texto (Text) ............................................................................................................ 64 I P I ^ G r u p o E d i t o r i a l M e g a b y t e 9 m »
  • 6.
    VISUAL BASIC comodebe ser... Aplicación desarrollada N° 02 .................................................. .......................................... 65 Aplicación propuesta N° 01................................................................................................. 67 Aplicación desarrollada N° 03.............................................................................................. 67 Botones de Comandos (Command)..................................................................................... 69 Aplicación desarrollada N° 04............................................................................................. 70 Escribir instrucciones para los controles............................................................................. 71 Ventana de código o de instrucciones................................................................................... 71 Principales eventos .............................................................................................................. 72 Visual Basic le ayuda a escribir los programas..................................................................... 75 Aplicación propuesta N° 0 2 ................................................................................................. 75 Trabajando con os nombres de los controles...................................................................... 76 Aplicación desarrollada N° 05.............................................................................................. 77 Errores más com unes........................................................................................................... 80 Preguntas de repaso............................................................................................................. 81 CAPÍTULO III : ELEMENTOS DE LA PROGRAMACIÓN Procedimientos y funciones ................................................................................................ 85 Sintaxis de un procedimiento............................................................................................... 87 Sintaxis de una función......................................................................................................... 88 Parámetros por referencia .................................................................................................... 89 Parámetros por valor ............................................................................................................ 89 Creación de procedimientos a nivel de formulario ............................................................ 90 Llamar a un procedimiento................................................................................................... 91 Constantes ............................................................................................................................. 92 Variables................................................................................................................................. 92 Tipos de variables ................................................................................................................ 94 Diferencia entre Dim. y Static ............................................................................................. 95 Aplicación Desarrollada N° 0 6 ............................................................................................ 97 Ejemplo de una variable a nivel de procedimiento ............................................................. 98 Ejemplo de una variable a nivel de formulario ................................................................... 98 Operadores aritméticos ........................................................................................................ 99 Orden de ejecución de los operadores................................................................................. 99 Comentarios .......................................................................................................................... 100 Aplicación desarrollada N° 0 7 ............................................................................................. 101 IfT h e n ................................................................................................................................... 106 Operadores lógicos............................................................................................................... 107 M sgB ox.................................................................................................................................. 109 Iconos de la función M sgBox.............................................................................................. 110 Aplicación desarrollada N° 08 ............................................................................................. 112 Consistencia de datos ........................................................................................................... 116 E d it o r ia l M e g a b y t e # ^ VISUAL BASIC como debe ser... Aplicación desarrollada N° 0 9 ............................................................................................ 116 InputBox ............................................................................................................................... 122 Contadores y acumuladores ................................................................................................ 125 Aplicación desarrollada N° 1 0 ............................................................................................ 125 Aplicaciones propuestas N° 04 y 05 .................................................................................. 130 IIF ........................................................................................................................................... 131 SelectCase............................................................................................................................. 132 Aplicación desarrollada N° 11.............................................................................................. 133 Aplicación desarrollada N° 12 ........................................................................................... 137 Aplicación propuesta N° 06 ............................................................................................... 143 Choose................................................................................................................................... 143 Funciones de cadena............................................................................................................ 144 Aplicación desarrollada N° 13 ............................................................................................ 145 Funciones tipo fecha ............................................................................................................ 146 Aplicación desarrollada N° 1 4 ............................................................................................. 146 Función DateAdd .............,.................................................................................................. 148 Función DateDiff.................................................................................................................. 148 Función DateAdd ................................................................................................................. 150 Funciones tipo hora .............................................................................................................. 152 Funciones Numéricas............................................................................................................. 152 Aplicación desarrollada N° 15 ............................................................................................. 154 Función S h ell........................................................................................................................ 157 Aplicación desarrollada N° 16 ........................................................................................... 158 For Next ................................................................................................................................ 159 Do Loop ................................................................................................................................ 159 D oEvenst............................................................................................................................... 159 Aplicación desarrollada N” 17.............................................................................................. 160 A rray...................................................................................................................................... 162 Aplicación desarrollada N° 1 8 ............................................................................................. 163 Crear un array de controles ................................................................................................. 164 Aplicación desarrollada N° 19 ........................................................................................... 165 Aplicación desarrollada N° 2 0 ............................................................................................ 169 Aplicación desarrollada N° 21 ............................................................................................ 174 Errores más com unes............................................................................................................ 178 Preguntas de repaso N° 0 3 ................................................................................................... 179 CAPÍTULO IV : MEJORANDO EL ASPECTO DE LOS FORMULARIOS Control Frame (Marco) ....................................................................................................... 183 Asignando colores................................................................................................................. 184 Qbcolor ................................................................................................................................. 184 G r u p o E d i t o r i a l Megabyte H
  • 7.
    A f cVISUAL BASIC como debe ser.. . <5>§ RGB ................................................. .................................................................................... 184 Control Shape (Figuras)........................................................................................................ 185 Control Line (Línea) ............................................................................................................ 186 Control PictureBox (Caja de Imagen) ................................................................................ 187 Método gráficos ................................................................................................................... 189 Aplicación desarrollada N° 22 ............................................................................................. 190 Buscando gráficos en la computadora .............................................................................. 193 Control Image ....................................................................................................................... 195 Control Timer ....................................................................................................................... 195 Aplicación desarrollada N° 2 3 ............................................................................................ 196 Aplicación desarrollada N° 2 4 ............................................................................................ 198 Control ImageList (Lista de Im ágenes).............................................................................. 200 Manejo de las imágenes en el control ImageList............................................................... 202 Aplicación desarrollada N° 25............................................................................................. 203 Función LoadPicture............................................................................................................. 203 Control Calendar (Calendario)............................................................................................ 204 Aplicación desarrollada N° 26.............................................................................................. 205 Control StatusBar (Barra de Estado)................................................................................... 206 Ejemplo de una aplicación usando el control StatuBar ..................................................... 209 Pantallas de presentación ..................................................................................................... 211 Control O L E .......................................................................................................................... 211 Activar una presentación en Power Point ......................................................................... 212 Objetos insertables................................................................................................................ 214 Controles Hscroll y Vscroll ................................................................................................ 215 Aplicación desarrollada N° 27 ............................................................................................. 215 Control ProgressBar............................................................................................................. 218 Control Slider......................................................................................................................... 218 Preguntas de repaso N° 04 .................................................................................................. 219 CAPÍTULO V : INGRESO PERSONALIZADO DE DATOS ComboBox............................................................................................................................. 223 Aplicación desarrollada N° 28 ............................................................................................. 224 Aplicación propuesta N° 07 ................................................................................................ 225 Aplicación desarrollada N° 29.............................................................................................. 226 Aplicación propuesta N° 08 ............................................................................................... 229 Aplicación desarrollada N° 31 ............................................................................................ 230 Aplicación desarrollada N° 32 ............................................................................................ 233 OptionButton ....................................................................................................................... 236 Aplicación desarrollada N° 33 ............................................................................................. 237 Aplicación desarrollada N° 34 ............................................................................................ 239 l j § i ¡ || |> 12 G r u p o E d it o r ia l Megabyte ^ f||¡|§ VISUAL BASIC como debe ser... CheckBox.............................................................................................................................. 240 Aplicación desarrollada N° 35 ............................................................................................ 240 ListBox .................................. .............................................................................................. 243 Aplicación desarrollada N° 36 ............................................................................................ 244 Calculando los días Probables de Fertilidad....................................................................... 246 UpDown ..... ......................................................................................................................... 248 MaskEdBox ......................................................................................................................... 250 Aplicación desarrollada N° 37 .............................................. ............................................... 252 SendKeys ............................................................................................................................. 257 Aplicación desarrollada N° 38 ............................................................................................ 258 Aplicación desarrollada N° 39 ............................................................................................ 261 Instrucción With ................................................................................................................... 264 Preguntas de repaso N° 05 .................................................................................................. 265 CAPÍTULO VI : MANEJO DE VARIOS FORMULARIOS Agregar Formularios a una aplicación................................................................................. 269 Quitar formularios de una aplicación ................................................................................. 271 Seleccionar un formulario a ejecutar prim ero..................................................................... 271 Instrucciones para manejar formularios ............................................................................. 272 Aplicación desarrollada N° 40 ............................................................................................ 273 Aplicación desarrollada N° 4 1 .............................................................................................. 278 Errores más com unes............................................................................................................ 280 Preguntas de repaso N° 06 .................................................................................................. 281 CAPÍTULO VII : DISEÑO DE MENU Editar EN menú .................................................................................................................... 295 Instrucciones PopupMenú .................................................................................................. 298 Control ToolBar ................................................................................................................... 303 Aplicación desarrollada N° 43 ............................................................................................ 305 SsTab...................................................................................................................................... 309 Errores más com unes............................................................................................................ 311 Preguntas de repaso N° 07................................. .................................................................. 312 CAPÍTULO VIII : MANEJO DE ARCHIVOS DriveListBox .................................................. ..................................................................... 315 DirListBox ........................................................................................................................... 315 FileListBox ........................................................................................................................... 315 Aplicación desarrollada N° 44 ........................................................................................... 316 Aplicación desarrollada N° 45 ........................................................................................... 317 CommoDialog ...................................................................................................................... 319 l i l i l í ^ G r u p o E d i t o r i w Megabyte 13
  • 8.
    _______________ , .o ^É iÍÉ É ÍÍ’' VISUAL BASIC como debe ser... Aplicación desarrollada N° 46 ........................................................................................... 323 Uso de la im presora............................................................................................................. 325 Objeto printer ....................................................................................................................... 326 Método Print ....................................................................................................................... 327 Instrucción T a b ..................................................................................................................... 327 Instrucción S p c ..................................................................................................................... 328 Método PrintForm .............................................................................................................. 328 Aplicación desarrollada 47 ................................................................................................... 328 Comandos del D O S ............................................................................................................. 331 Control de Errores ............................................................................................................... 332 On Error ................................................................................................................................ 332 Objeto E r r ............................................................................................................................. 332 Errores interceptables más comunes ................................................................................. 333 Control RichTextBox........................................................................................................... 334 LoadFile................................................................................................................................. 335 SaveFile.................................................................................................................................. 335 Funciones A P I...................................................................................................................... 336 Apagar la computadora automáticamente ......................................................................... 337 Crear discos de instalación .................................................................................................. 338 Control ActiveMovie ........................................................................................................... 340 Crear Archivos de Ayudas................................................................................................... 341 CAPÍTULO IX : MANEJO DE BASE DE DATOS Base de d a to s......................................................................................................................... 347 Tablas...................................................................................................................................... 347 Registros y Campos ............................................................................................................. 347 Crear una Base e Datos usando Visual Basic........................... ......................................... 349 Tipos de Recordset ............................................................................................................... 351 Crear una Base de Datos usando Microsoft Access ......................................................... 354 Control Data ......................................................................................................................... 358 Objeto Recordset .................................................................................................................. 358 Aplicación desarrollada N° 48 ............................................................................................. 359 Aplicación desarrollada N° 49 ............................................................................................. 362 Control DbList ...................................................................................................................... 364 Consulta de registros ........................................................................................................... 364 Aplicación desarrollada N° 50 ............................................................................................. 365 Método MoveFirst .............................................................................................................. 365 Método Nomatch ................................................................................................................. 366 Mantenimiento de registros ............................................................................................... 367 Aplicación desarrollada N° 51 ............................................................................................ 367 G r u p o E d it o r ia l M e g a b y t é * VISUAL BASIC como debe ser... Asistente VB para base de datos ........................................................................................ 371 Control D bcom bo................................................................................................................. 372 Aplicación desarrollada N° 52 ........................................................................................... 372 Aplicación propuesta N° 09 ................................................................................................ 373 Control D bgrid...................................................................................................................... 374 Aplicación desarrollada N° 53 ............................................................................................. 376 Instrucciones S Q L ................................................................................................................ 376 Aplicación desarrollada N° 54 ............................................................................................ 379 Aplicación desarrollada N° 55 ............................................................................................. 383 Variables tipo Recordset...................................................................................................... 386 Aplicación desarrollada N° 56 ............................................................................................ 388 Aplicación desarrollada N° 57 ............................................................................................ 392 Modificar varios registro a la v e z ........................................................................................ 397 Métodos de Transacciones .................................................................................................. 397 Aplicación desarrollada N° 58 ............. ............................................................................... 397 Manejo de fo to s.................................................................................................................... 398 Aplicación desarrollada N° 59 ............................................................................................. 398 Manejo de varias tablas ....................................................................................................... 402 Uniendo tablas ..................................................................................................................... 404 Aplicación desarrollada N° 6 0 ............................................................................................. 406 Errores más com unes............................................................................................................ 410 Preguntas de repaso N° 09 .................................................................................................. 411 CAPÍTULO X : PROGRAMACIÓN DAO Objeto de acceso a datos ..................................................................................................... 416 Métodos para manejar base de datos .................................................................................... 417 Antes de programar con D A O ................................................................................................420 Control MsFlexgrid................................................................................................................. 425 Otras instrucciones SQL ....................................................................................................... 433 Control MsChart .................................................................................................................... 440 CAPÍTULO XI : CREACIÓN DE REPORTE Pasos para crear un rep o rte................................................................................................... 447 Reportes tipo Estándar .......................................................................................................... 447 Vincular Tablas....................................................................................................................... 448 Creación de índices................................................................................................................ 450 Ordenación de los registros ................................................................................................... 451 Totalizar o contar registros .................................................................................................. 452 Estilo del reporte .................................................................................................................. 453 Control Cristal Report .......................................................................................................... 453 ¡I||Íj^ G r u p o E d it o r ia l Megabyte 15 « ¡ g »
  • 9.
    VISUAL BASIC comodebe ser. CAPÍTULO XII PROGRAMACIÓN ADO Conexión L ocal..................................................................................................................... 461 Conexión Remota .................................................................. .............................................. 461 ODBC .................................................................................................................................... 461 Archivos de Vínculos OLE-DB........................................................................................... 461 Configurar una conexión ODBC......................................................................................... 462 Configurar una conexión OLE-DB...................................................................................... 466 El control A D O ..................................................................................................................... 467 Uso de la propiedad ConnectionString .............................................................................. 468 Uso de la propiedad RecordSource..................................................................................... 470 Errores más comunes ............................................................................................................. 471 Control DataGrid ................................................................................................................ 474 Control DataList ................................................................................................................. 474 Control DataCombo ...............................................................................................................474 Control DTPicker ....................................................................................................................491 EIDataReport ....................................................................................................................... 498 Controles del DataReport ................................................................................................... 500 Propiedades para un reporte ............................................................................................... 501 Métodos del DataReport ..................................................................................................... 501 DataEnvironment ................................................................................................................ 508 Objeto Connection ................................................................................................................. 510 Objeto Command ................................................................................................................. 511 Uso del Data Report con Data Enviroment ...................................................................... 513 El Control MSHFlexGrid..................................................................................................... 514 Uso de comandos Jerárquicos en MSHFIexGrid .............................................................. 515 Reporte de comandos Jerárquicos ....................................................................................... 518 Conexión de una Base de Datos mediante Instrucciones .................................................. 520 Método Execute..................................................................................................................... 528 Instrucciones SQL para consultas de Acción .................................................................... 529 Instrucciones DLL ................................................................................................................ 531 1 8 1 1 ^ 1 6 G r u p o E d i t o r i a l Megabyte VISUAL BASIC como debe ser. .. INTRODUCCIÓN Este libro esta diseñado de tal manera que sirve de apoyo y guía para estudian­tes de programación de computadoras y para un autoaprendizaje porque ha sido escrito con la experiencia que tiene el autor en el dictado del curso y sobre todo con la experiencia de alumnos en su proceso de aprendizaje, observando sus difi­cultades y escuchando sus preguntas y sugerencias. Visual Basic Como Debe Ser..., contiene: y SECUENCIA ADECUADA DE TEMAS Obtenida de los años de experiencia que tiene el autor en el dictado del curso con la finalidad que no se pierda el interés en su aprendizaje, jy DISKETTE GRATIS Que contiene los principales programas desarrollados en este libro para dar ejemplos mas rápidos y apoyar al lector para que pueda desarrollar aplica­ciones mas avanzadas, y APLICACIONES PROPUESTAS Y PREGUNTAS DE REPASO Para que el lector demuestre en forma práctica los conocimientos adquirí dos y autoevaluarse con la finalidad de ir midiendo los conocimientos adquiridos. ^ TEMAS DE IMPORTANCIA PARA UN CENTRO DE TRABAJO. Porque se prepara al lector para desarrollar por sí solo aplicaciones que se presenten en un centro de trabajo, como por ejemplo: Q J Controles ActiveX Q j Creación de archivos de ayuda Q j Manejo de impresoras y j Base de datos Q J Instrucciones SQL Q j Programación ADO QIJ Uso de DataEnvironment y DataReport ¡ Y Mucho más! ' G r u p o E d i t o r i a l Megabyte 17
  • 10.
    ^ÉÍÍÍÉÉI» VISUAL BASICcomo debe ser... ANTES DE EMPEZAR Visual Basic es un programa muy fácil de aprender y con este libro no es necesario que usted tenga conocimientos de programación, pero si es muy importante que sepa el manejo básico de cualquier versión del Windows, especialmente el manejo de Mouse. Antes de empezar usted debe saber: Manejar el Mouse. Abrir y cerrar ventanas. ^ Minimizar, maximizar y restaurar ventanas. ''b Mover y modificar el tamaño de las ventanas. Manejar el teclado. Este libro le enseña con una secuencia adecuada brindando en cada párrafo un conocimiento mas acerca de Visual Basic, por eso es muy importante que los lea sin apresuramiento y en el mismo orden en el que ha sido escrito. No olvide de desarrollar las preguntas de repaso y las aplicaciones propuestas antes de pasar al siguiente capítulo. “Un libro es el mejor aliado para la formación de un buen Profesional” G r u p o E d it o r ia l Megabyte ^ f¡||j|| CAPITULO I 9 '" i" in )■ !■ ■ — — — Mic(psoft Visual B asic fiew j L>3.u.y I I 5 l <s¡V ActiveX m A-rtiv^y r*U ArtivíX v*5 Appfcatkr. «, Control W¿ard H VB Lrierpfis« Adiri MwtX Active!-’ Etftkx» Doajmwt Cemriás OU Document V/.Î 1l I ^.Pioyectol - Micjosoft Visual Basic [diseño] H S B l Archivo Edición Ver Proyecto Rumato depuración Ejecutar Consulta Diagrama Herramientas Complementos Ventana Ayuda $ • ¡3 ' & B > ■ 0 1 D - ^ Proyectol (Proyectol) |Forml Form J : Aïabética | Por categorías j (Nombre) Formi + - Appearance 1-30 AutoRedraw False iackColor □ &H8000000F8 iorderStyle 2 • Sizable Caption Formi ClipControls True ControlBox True ENTORNO DEL VISUAL BASIC
  • 11.
    CAPITULO I: EntornoDel Visual Basic 4 Visual Basic es un sistema diseñado para crear aplicaciones gráficas de una manera rápida y sencilla las cuales se ejecutan bajo Windows. El acceso a Visual Basic es muy sencillo y depende de la carpeta donde lo instaló o de su versión. P o r ejem plo: Accesorios ► _ r) Corel5 ► _rr) Inicio ► r j 3SBEESSSB0ÉI AH T ext Viewer .rj] Microsoft Visual FoxPro ► ijjjj Application Performance Explorer . 7^ Powersoft 5.0 ► jO^ Application Setup Wizard The Hacker Anti-Virus > 0 Automation Manager ^ Cuaderno de Microsoft Books Online Explorador de Windows Crystal Reports Internet Explorer & Readme Internet Mail RemAuto Connection Manager Internet News ■fe ^ Microsoft Access ^ Microsoft Excel 'J2 Microsoft NetMeeting Microsoft Outlook Microsoft Photo Editor ■i*l Microsoft PowerPoint ß j Microsoft Word m MS-DOS jjri) A c c e îo ric î * Adobe » . - j j Adobe A r m b * 4 0 * CorelDRAW 8 » Hwiamterrfa: de M ia oso it Office » H P DeskJet S a » 840C v2 3 * »«Cb » ä « rte n rt Explore. I r j MiCttÄoft Offcce ^ » P ro fe s io n a l ► A b * f o m e n t o de Olhce . r j Microsoft Ofhce Ï o d * » 3 ] Nuevo documento de Office . r j M erosoft SQL Serve? 7.0 * < 4 l W inZip . - j M ê ro iô fr W efcPuW iîhirçj » H erram iertat errçm ariates de M ie to » » VStwIS» PLATINUM W orkf/iew h t iníeinel Explore» » . r j MicrQ:oft Visual SourceSafe , Services er. ¡inea * ' i j Microsoft Visual ßawe 6 Û _¿J Eavortos ► . r j S jfca te * 0 J M cro :oft Visual FoxPro SO j j , w * « * " • ^ ä j f i . v c . W Æ ic ^ A)uda ¿I £ ] E r — £ W - n H E , t o . £ MS-DOS S i* Apagar es iiî«n >3 O u llcx* Ewpress In ic io « Ô § ^ V - â lo flfc W « fc s E R « ¡r> E R X 3 5 » ¡ |j |¡ ||^ G r u p o E d i t o r i a l Megabyte 21 4ÊS»
  • 12.
    <Q> m Xm / VISUAL BASIC como debe ser... Según como está configurado el Visual Basic, antes de ingresar a su pantalla principal Ud. puede visualizar lo siguiente: M* H'i crosoft^ Visual Basic _Ll2<J New j Existing | Recent ) ¿á Sí Ì 7 J1t7 « V ActiveX EXE ActiveX DLL ActiveX Control VB Application Wizard ¡él SI S i [ <é l VB Enterprise Edition Controls Addin ActiveX Document DLL ActiveX Document EXE Cancelar Ayuda Don't show this dialog in the future Elija STANDARD EXE para ejecutar el Visual Basic en modo Estándar y luego haga click en el botón ABRIR. N O TA: Para visualizar o no esta ventana cada vez que Ud. ingresa al Visual Basic, debe hacer lo siguiente: Una vez que ingresó al Visual Basic haga click en la opción TOOLS (Herramientas) de la barra de menú y elija O P T IO N S ... De la v en tan a que se v isu a liz a activ e la p ág in a ENVIRONMENT (Entorno)y active el botón P ro m p t F or P roject (Pre­guntar por un Proyecto)para que se visualice esta ventana cada vez que ingresa o el botón C reate D efault P roject (Crear un proyecto predetermi­nado) para que no se visualice. m 22 G r u p o E d it o r ia l Megabyte< CAPITULO I: Entorno Del Visual Basic La pantalla tiene tres hojas: New, Existing y Recent. La hoja NEW, permite crear un formulario en blanco para empezar a diseñar una nueva aplicación (Ver la figura anterior). La hoja Existing muestra todos los proyectos creados y permite abrir cualquiera de ellos: rrrn M ic ro so ft Visual Basic New Existing | Recent | ----------------------------------------------------- Buscar en: | _ J Vb J CKsvr J Help J Nueva carpeta JO dbc J report J Repostry j samples J Setup J setupkit J T empiate J Tsql j vbonline j L I _ j Winapi u J Wizards amer.vbp ^ANA.vbp cli..vbp % |C H IQ U I.virr j J Nombre de archivo: (j Archivos de tipo: [Project Files (“ vbp;".mak;".vbg) A,brir Ayuda r Doni show tNs dialog in thè future C a silla q u e perm ite o no v isu alizar esta p an talla al ingresar al V isual B asic S e le c cio n a las h o ja s S e le c c io n a u n a c a rp e ta ___ M u e stra los p ro y e c to s q u e está n m ás a la d erecha S e le c cio n a el tip o de a rc h iv o qu e d esea ver. ¿ QUÉ ES UN PROYECTO ? Es toda aplicación que se desarrolla en Visual Basic y está compuesto por formularios, módulos, etc. Para abrir un proyecto (visualizar uno que ya existe) siga uno de los siguientes pasos: • Haga doble click en el nombre del proyecto. ■ Selecciónelo haciendo un click en él y luego haga click en el botón Abrir. • Escriba el nombre del proyecto siempre y cuando se encuentre en la carpeta activa y luego haga click en el botón Abrir. G r u p o E d it o r ia l Megabyte 23
  • 13.
    ¿ 5 9^ VISUAL BASIC como debe ser. .. La hoja Recent muestra todos los proyectos activados recientemente y nos da la posibilidad de abrirlos. New Project M ic ro s o ft ■ Visual Basic New | Existing R ecent File %¿CHIQUI garner IÜoMAR PROJECT 1 I^LEO % | tALLER~1 Folder C:Archivos de programaDev5tudioVB C:Archivos de programaDev5tudioVB C:Archivos de programaDev5tudioVB C:Archivos de programaDevStudioVB C :ARCHIV~ 1DEVSTU~ 1 VB C : ARCHI V~ 1 DEVSTU~ 1 VB C : ARCHI V~ 1 DEVSTU~ 1 VB J j T 1 Abrif Cancelar Ayuda P D on't show this dialog in the future Seleccione el nombre del proyecto y haga click en el botón Abrir. MUY IMPORTANTE Si en cualquiera de las 3 páginas Ud. selecciona la opción CANCELAR, ingresará al Visual Basic, pero no podrá ver ninguno de sus componentes. Para solucionar este problema puede seguir cualquiera de los siguientes pasos: • De la opción FILE (Archivo) elija New Project. • Pulse las teclas < CONTROL > + < N > 24 G r u p o E d it o r ia l Megabyte CAPÍTULO I: Entorno Del Visual Basic ENTORNO DEL VISUAL BASIC Al ingresar al Visual Basic se visualiza la siguiente pantalla: Barra de Titulo Barra de Menú Barra Estándar Formulario '^ r Proyecto1 - Microsoft Visual Basic [diseño] Archivo Edición Ver Provecto Formato Depuración Ejecutar Consulta ¡3 ' 3 0 ► ■ Diagrama Herramientas Component os Ventana Ayuda f l 15 * 'i A |i£ Propiedades - Formi m m m jF o rm l Form zi Alfabética | categorías )-------- 1 (Nombre) Formi Appearance 1 - 3D AutoRedraw False BackColor □ &H80G0000F8 BorderStyle 2 - Sizable Caption Formi ClipControls True ControIBox True zi Proyecto 1 (P royecto 1) 03 Formularios G Forml (Forml) Caja de Herramientas Ventana de Proyecto Ventana de Propiedades Ventana de Ubicación del Formulario G r u p o E d it o r ia l Megabyte 25
  • 14.
    é B Bb VISUAL BASIC como debe ser... BARRA DE MENU '-in>x| »ü, P royeclo! - Microsoft Visual Basic {diseño] Archivo Edición Ver Proyecto Formato Depuración Ejecutar Consulta Diagrama Herramientas Complementos Ventana Ayuda Contiene las órdenes que se utilizan para desarrollar una aplicación. Las opciones que se visualizan dependen de la versión del Visual Basic. M DESCRIPCIÓN DE LA OPCIÓN ARCHIVO Una de las opciones de la Barra de menú mas utilizada es la opción Archivo la cual contiene: N uevo Proyecto Crea un nuevo proyecto. A b rir Proyecto Abre un proyecto existente A g reg ar Proyecto Adiciona uno de los proyecto a la aplicación Q u ita r Proyecto Borra uno de los proyectos activados G u a rd a r Proyecto Graba un Proyecto diseñado G u a rd a r Proyecto Como Graba un proyecto con otro nombre G u a rd a r F o rm l Graba el formulario G u a rd a r F o rm l como Graba el formulario con otro nombre Im prim ir Imprime el proyecto o lo seleccionado G e n e ra r P ro y ecto l.ex e Crea el proyecto ejecutable Salir Sale del Visual Basic Para eleg ir cu alq u ier opción haga clic en dicha opción o utilice las teclas rápidas que algunas de ellas tienen, por ejem plo: para salir de V isual Basic puede usar A lt + Q. 2 6 G r u p o E d i t o r i a l Megabyte CAPÍTULO I: Entorno Del Visual Basic VENTANA DE UBICACIÓN DEL FORMULARIO Se activa haciendo click en: ■a Se u tiliza para in d icar la posición del formulario en la pantalla cuando no queremos que el formulario ocupe toda la pantalla. BARRA ESTANDAR ,M- • B C L! Cr>. t- !*■’ -b W * ,S. Contiene los botones que perm iten realizar las tareas m ás com unes de u n a m an era ráp id a como: grabar, ab rir, ejecu tar un program a, finalizar un program a, etc. NOTA : Si no visualiza la Barra Estándar debe hacer click en la opción VIEW (Ver) de la barra de menú, luego en ToolBars y activar Estándar. jjylgp Grupo Editorial Megabyte 27
  • 15.
    O % VISUALBASIC como debe ser... DESCRIPCION DE LA BARRA ESTANDAR Crea un Nuevo Proyecto Crea un Nuevo Formulario Activa el Editor de Menú Abre un Proyecto [O Graba un Proyecto ^ Ejecuta un Proyecto Finaliza un Programa Activa la Ventana de Proyecto tiO Activa la V. de Propiedades t í Ubicación del Formulario Activa el Examinador Browse Activa la Caja de Herramientas PRINCIPALES TECLAS RAPIDAS CTRL + N Crear un Proyecto. CTRL + O Abre un Proyecto. CTRL + S Graba un Formulario. CRTL + P Activa la Ventana para Imprimir. CTRL + R Muestra la Ventana de Proyecto. CRTL + T Activa la Ventana de Componentes. CRTL + D Agrega un Archivo. SHIFT + F7 Muestra el Formulario. ALT + Q Sale del Visual Basic. F4 Muestra de la Ventana de Propiedades. F5 Ejecuta un Proyecto. F8 Ejecuta mostrando cada instrucción. mm » G r u p o E d it o r ia l M e g a b y t e « * CAPÍTULO I: Entorno D el Visual Basic Ü IÜ P EL FORMULARIO Es la ventana principal, porque sirve de fondo para los controles que se “dibujan” en una aplicación como cajas de textos, etiquetas, etc. Se activa pulsado SHIFT + F7 o CTRL + R y luego Doble Click en el nombre del formulario que desea visualizar. CAJA DE HERRAMIENTAS General Se activa haciendo click en: * SS A [ibi " _J 17 í? [ Ü 1=1 il ^ Contiene los controles que se dibujan — zl en el form ulario para desarrollar © o _J aplicaciones. B H ü G r u p o E d it o r ia ! Megabyte 29 m m
  • 16.
    m m VISUALBASIC como debe ser,. . La caja de herramientas anterior contiene los controles básicos del Visual Basic y se visualizan cuando se ingresa en modo E stándar (icono STANDARD EXE) " ¡ New | EKisting | R e c e n t] S 3 ¿ 7 S S ActiveX EXE ActiveX DLL Iw ActiveX Control VB Application Wisard VB Enterprise Edition Controls Ad din ActiveX ActiveX Document DLL Document EXE . n M General M A lib i □ : _ l w ü m « i n i i zl © □ L J m o Q igEa 033 m m P 1 1 § s IM aA ; ~ r ni f e ôDDôO" (S tr. M % I T ÈV íh â dS 0 ÜS $2 © ##l P a ra in g re s a r al V isu al B asic y visualizar la caja de herramientas con los controles más avanzados debe elegir el icono VB E n terp rise E dition C ontrol (Visual Basic Edición Em presarial). Si Ud., ya ingreso en modo Estándar y desea utilizar los controles avanzados, debe hacer click con el botón derecho del mouse en la caja de herram ientas, elegir la o p c ió n C o m p o n e n te s y lu eg o seleccionar el nom bre del control que desea visualizar. Estos nombres se indican a m ed id a q u e los c o n tro le s se van explicando. 3 0 G r u p o E d i t o r i a l M e g a b y t e « * CAPITULO I: Entorno Del Visual Basic VENTANA DE COMPONENTES Al hacer un click con el botón derecho del mouse en cualquier parte de la caja de herramientas para llamar a controles que necesitamos y no se encuentran activos, se visualiza el siguiente menú: G eneral M A [5bi _ j 17 a-ü ü * * e| C3 g5> C o m p o n e n te s .. A g re g a r fic h a .. A coplable O culta r Al hacer click en la opción Componentes se visualiza: E S C o n tr o le s J D i s e ñ a d o r e s | O b j e t o s i n s e r t a b l e s ] : : W IN D O W 5 S Y S TEM r e f e d i t . dll l~ i C o n tro l A c tiv e M o v ie d e M ic ro so ft n C o n tro l d e a d m in is tr a c ió n d e im a g e n d e W a n g n C o n tr o l d e d ig ita liz a c ió n d e im a g e n d e W a n g n C o n tr o l d e e d ic ió n d e im a g e n d e W a n g C J C o n tr o l d e p á g in a e n m in ia tu r a d e im a g e n d e W i I C r y s ta l R e p o r t C o n tr o l 4 . 6 n c tC lip OLE C u s to m C o n tr o l m o d u le I""! c tC lo c k OLE C u s to m C o n tr o l m o d u le c t D a t e OLE C u s to m C o n tr o l m o d u le D c tG a u g e OLE C u s to m C o n tr o l m o d u le c tM e te r OLE C u s to m C o n tr o l m o d u le j... j c tS lid e OLE C u s to m C o n tr o l m o d u le J¡ J____________________1 -lT _U ^ ££ ,V"■lí xfro_- 9SBB2 <*rr. F~l [553 I E le m e n to s s e le c c io n a d o s C : W IN D O W S S Y S T E M ref e d i t . dll U b icació n : C : W IN D O W S S YST E M re f e d i t . dll Para activar o llamar a un control, busque su nombre y haga click en su casilla hasta que se muestre un Aspa y luego haga click en el botón Aceptar. S ' Casilla indicando que el control se encuentra activo. E d i t o r i a l Megabyte 31 R i
  • 17.
    VISU AL BA SIC como debe ser... VISUAL BASIC como debe ser... VENTANA DE PROPIEDADES È ¡Form i Form A Alphabetic | Categorized j (Name) Formi Appearance 1 - 3D AutoRedraw False “ ' □ _▼] BorderStyie 2 - Sizable Caption Formi ClipControls True ControlBox True DrawMode 13-Copy Pen ¡ r w -.„ .c i- . J.-. n c j-.i-.A ...J Se activa haciendo click en: C o n tien e las p ro p ied ad es o características de cada uno de los controles. Estas propiedades se pueden cambiar según lo requiera. También se activa pulsando la tecla <F4>. VENTANA DE PROYECTO Project - ProjecH É ]ÿ> Project 1 (Project 1) B -& Forms Se activa haciendo click en: Contine todos los formularios, módulos, etc. que form an una ap licació n . También se activa pulsando <CTRL> + <R>. 32 G r u p o E d it o r ia l Megabyte^ CAPÍTULO 1: Entorno Del Visual Basic SALIR DEL VISUAL BASIC Para salir del Visual Basic puede realizar cualquiera de los siguientes pasos: 1. Haga un click en el botón Cerrar de la ventana principal del Visual Basic. Botón Cerrar-------- * S 3 3 E E £ File Edit View Project Format Debug Run lo o ls Add-Ins Window Help 2. De la opción F IL E (Archivo) de la barra de menú elija E X IT (salir). 3. Pulse las teclas ALT + Q 4. Pulse las teclas ALT + F4 NOTA: Si al salir de visual Basic se muestra el siguiente mensaje: Visual Basic le pregunta si desea grabar los cambios realizados en el proyecto. Si no es im portante lo que tiene en el proyecto o en el formulario, haga un click en el botón NO. I f l E j E ' G r u p o E d it o r i a l Megabyte 3 3 ^ ¡ ¡ ¡ |¡
  • 18.
    BASIC como debeser... SOLUCIONANDO LOS PROBLEMAS INICIALES 1.- Al a c c e d e r al V isual B asic no se e n c u e n tra n to d o s los co m p o n en tes. Para solucionar éste problema debes hacer click en la opción VIEW (VER) de la barra de menú, cuyas opciones perm iten visualizar los componentes: »5, Proyectol - Microsoft Visual Basic [diseño] I—Inixi Archivo Edición Ver Proyecto Formato Depuración Ejecutar Consulta Diagrama Herramientas Complementos Ventana Ayuda $ . ¡3 . ' El Código EH Objeto Mayús+F7 - i ÿ Examinador de objetos F2 Ctri+G OrK. jp Ventana Inmediato □ Ventana Locales £ 3 Ventana Inspección <§$ Explorador de proyectos Ctrl+R Hl* Ventana Propiedades F4 . ¡Q Ventana Posición del formulario Páginas de propiedades Mayús+F4 Tabla ► Zoom ► Mostrar paneles ► Cuadro de herramientas Ventana de la vista Datos Paleta de colores Barras de herramientas m Visual Component Manager Activa el Formulario ■ Activa la Ventana de Proyecto Activa la Ventana de Propiedades Activa la Caja de ■ Herramientas Activa o desactiva la Barra Estándar Depuración Edición Editor de formularios * Estándar Activa la Ventana de ubicación de formulario » 34 Grupo Editorial Megabyte < | Í ¡ g CAPITULO I: Entorno Del Visual Basic 2 - La Ventana de Propiedades se ubicó debajo de la Barra Estándar y desea llevarla a su posición normal. Así: ,Project1 - M icrosoft Visual B asic [design] Fie Edit View Project Form at Debug Run Took Add-Ins Window Help si - a - 1 es H m, ► IF o rm i Form Alphabetic | Categorized | AutoRedraw False ..... *1 BackColor □ &H8000000F& —1 BorderStyle 2 - Sizable eSÎSSIÉBÂi 1 Formi ClipControls True ControlBox True zi » =iS|_xJ A dd [ab| *v . F Í» B m 4 ±j 0 GD _J ® ^gj B ■ « . P ro je ct! - Form i (Form ) Form ! MO Para solucionar este problema debe hacer click con el botón dere­cho del mouse dentro de cualquier parte de la ventana de propieda­des. Se visualizará cualquiera de las siguientes ventanas. Description ✓ Dockable ^ Dock—able Hide Hide Desactive la opción Dockable, haciendo click en ella. Otra form a de solucionar este problema es haciendo click en el título de la ventana de propiedades y arrastrarla a su posición nor­mal. Si la ventana de propiedades ocupa toda la pantalla, restaure la ventana del Formulario. G r u p o E d it o r ia l Megabyte 35
  • 19.
    4.- VISUAL BASICcomo debe ser... La C aja de H erram ientas se ubicó debajo de la B a rra E stán d ar y desea llevarla a su posición norm al. Para solucionar este problema debe seguir los mismos pasos que se siguen para lleva r a su p o sic ió n norm al la ventana de propiedades (caso anterior). L a C aja de H erram ientas ocupa toda la pantalla. Para solucionar este problema haga click en el botón restaurar de la caja de herramientas. Botón Restaurar d i f x l Botón Maximizar 1 -1 °« *» Botón Minimizar Botón Cerrar 5.- No puedes visualizar el form ulario y la ventana de propiedades y caja de h erram ien tas están en blanco. Para solucionar éste problema haga en la opción FILE y elige NEW PROJECT (Nuevo Proyecto). F ile £ d it y i e w E r o j e c t F ß rm a t £>et>ug g u n T o o ls & d d - I n s W in d o w H e lp s # * - . g ~ £ , ■ f e i <~vf j „ c S * - | á | j c | General j * • ¡ 36 G r u p o E d it o r ia l Megabyte 6 . - 7.- CAPITULO I: Entorno Del Visual Basic No puede m over ninguno de los controles del form ulario. Para solu cio n a r este problem a haga un click con el botón derecho del mouse en cualquier parte libre del formulario y luego desactive la opción LO CKjCO NTRO L haciendo un click en dicha opción. No encuentra un control que ha dibujado en el form ulario. Por ejemplo: al d ib u ja r una etiqueta se visualiza Label3, pero Label2 no la encuentra. Primero maxim iza la ventana del form ulario y luego elige el nombre del control que buscas de la lista de controles que se encuentran en la ventana de propiedades. Si en esta lista no existe el nombre del control que buscas significa que no existe en el formulario. L a b e l3 Label F o r m i Form L a b e ll Label L a b e l2 Label BackStyle 1 - Opaque BorderStyle 0 - None Caption Labels DataField Botón para ver ia lista de controles que se encuentran en el formulario G r u p o E d it o r ia l Megabyte 37
  • 20.
    VISUAL BASIC comodebe ser... P o r casualidad a creado varios proyectos o form ularios en su aplicación y desea borrarlos. En este ejemplo a creado en su aplicación tres proyectos y en el proyecto N° 1 tiene 3 formularios. Si hace un Click en el signo mas (+) de un proyecto, se visualizan sus componentes y en el signo + de la palabra Formularios se visualizan los formularios que contiene. Si hace un click en el signo menos (-) los oculta. Grupo de proyectos - Grupol B C3 - P r o y e c t o l ( P r o y e c t o l) - j ' > Form ularios C ] F o rm l (F o rm l) O Form 2 (Form 2) C ] Form 3 (Form 3) 0 ¡ j ? P ro yecto 2 (P ro yecto 2) B €: > I........ Form ularios ...... Q F o rm l (F o rm l) - P ro yecto 3 (P ro yecto 3) GB- l2 Form ularios Para solucionar este problem a haga un click con el botón derecho del mouse en el proyecto o formulario que desea borrar. Se visualiza el siguiente menú: M enú del Proyecto Establecer como inicial Propiedades de Proyectol... Guardar proyecto Quitar proyecto Agregar ► é=$ Imprimir... v' Acoplable Ocultar M enú del Formulario 1Ü Ver objeto CU Ver código Propiedades Agregar Guardar Forml Guardar Forml como. Quitar Forml 1 Imprimir... v' Acoplable Ocultar En cualquiera de los casos haga click en la opción Q U ITAR (Proyecto o Formulario). G r u p o E d it o r ia l Megabyte CAPÍTULO I: Entorno Del Visual Basic ^ f ¡ ¡ & Desea e v ita r que los avances realizados en su aplicación se b o rre n p o r p ro b le m a s in e s p e ra d o s com o c o rte de fluido eléctrico, etc. Para ello, puede configurar al Visual Basic para que al ejecutar su aplicación se graben en form a automática todos los cambios que le ha realizado. Haga click en la opción TOOLS (Herramientas) de la barra de menú y elija OPTIONS... De la ventana que se visualiza active la página EN VIRO NM EN T (Entorno). Se visualiza la siguiente ventana: Para que los cambios realizados a su aplicación se graban automáticamente al ejecutarse active el botón G uardar los Cambios NOTA Cada una de las páginas de esta ventana permiten configurar id Visual Basic. Es muy importante que Ud., observe cada una de estas ventanas. Editor | Formato del editor | General ] Acople Cuando se inicie Visual Basic: Entorno | Avanzado ] Mostrar plantilas para: (• preguntar por un proyectol F Eormularios C £rear un proyecto predeterminado P Formularios MDI F Módulos Cuando se inicie un programa: F Módulos de clase C guardar los cambios F Controles de usuario C Preguntar p ata guardar los cambios F Páginas de propiedades <• No guardar los cambios F Documento de usuano Directorio de plantillas: |C:ARCHIVOS DE PROGRAMAD£VSTUDIOVBTempiate j Aceptar Cancelar | Ayuda Desea que en la ventana de propiedades se m uestre una breve explicación de cada una de las propiedades. Para ello, haga click con el botón derecho del mouse en cualquier propiedad y luego active la opción Descripción. v' Descripción v" Acoplable Ocultar Descripción de las propiedades [c o m m a n d 1 CommandButton * | Alfabética j Por categorías | (Name) Appearance BackColor Cancel Default Command 1 1 - 3D □ &HSOOOOO1 False False C ap tio n Devuelve o establece el texto mostrado en la barra de título de un objeto o bajo el icono de un G r u p o E d it o r ia l Megabyte 39
  • 21.
    ^ lltÉ ll’-VISUAL BASIC como debe sen .. FILOSOFÍA DE PROGRAMACIÓN EN VISUAL BASIC Para desarrollar un programa en Visual Basic se crea un formulario y sobre él se dibujan controles tales como cajas de texto, etiquetas, listas desplegables, gráficos, botones de comandos, etc. A continuación se le asignan las propiedades y finalmente se escriben las instrucciones relacionadas a cada uno de ellos. Quiere decir esto que cada control está ligado aun conjunto de instrucciones que permanece inactivo hasta que ocurra el evento que lo activa. EVENTO: Es una acción reconocida por un control u objeto para el cual se puede escribir instrucciones de respuesta. Los eventos pueden estar generados por una acción del usuario como hacer click con el mouse, pulsar una tecla, etc. C O N TR O L: Es un objeto gráfico, como por ejemplo un cuadro de texto, un botón de comandos o un marco que se coloca en un formulario para presentar datos, realizar una acción o mejorar el aspecto de un formulario, etc. O B JE T O : Es una instancia de una clase que combina datos y procedimientos. Por ejemplo un control cuando es ejecutado en un formulario es un objeto. CLASE: Es la definición de un objeto incluyendo su nombre, sus propiedades y métodos y cualquier evento que tenga. PR O PIED A D : Es un atributo con un nombre determinado que se le asigna a un control para definir una característica del objeto como por ejemplo, el tamaño, el color, o la posición en la pantalla, o un aspecto de su comportamiento, como por ejemplo, si está oculto o no. M ÉTO D O : Es un procedimiento similar a una instrucción o función que opera sobre objetos específicos. G r u p o E d it o r ia l Megabyte" CAPÍTULO I: Entorno Del Visual Basic w m PREGUNTAS DE REPASO - N° 01 01.- La ventana principal de una aplicación se llama: 02.- El entorno de Visual Basic está compuesto por: 03.- Qué es un Proyecto? 04.- Los controles se encuentran en: 05.- Para activar la Ventana de Proyecto se debe pulsar: 06.- Dibuje el botón que sirve para ejecutar una aplicación. 07.- ¿Qué debe hacer si al activar el Visual Basic no encuentra la Barra Estándar? 08.- Dibuje el botón para grabar un proyecto. 09.- ¿Qué tecla activa la Ventana de Propiedades? 10.- Dibuje el botón que sirve para finalizar una aplicación. 11.- ¿Qué ventana contiene las características que se les puede asignar a los controles? 12.- Dibuje el botón que activa la Caja de Herramientas. 13.- ¿Qué es un método? 14.- Dibuje el botón que sirve para llamar o abrir un proyecto. 15.- ¿Qué contiene la Barra Estándar? 16.- ¿Qué teclas permiten visualizar el formulario? 17.- ¿Qué debe hacer si al ingresar al Visual Basic no se visualizan todos sus componentes? 18.- ¿Cuáles son los pasos para desarrollar una aplicación? 19.- ¿Cuándo se ejecutan las instrucciones de los controles? 20.- ¿Qué es un evento? ¡CU ID A D O ! Le recomiendo no seguir con los próximos temas mientras no obtenga un veinte en esta autoevaluación. G r u p o E d it o r ia l Megabyte 41
  • 22.
    CAPITULO II DatosPersonales G uardar com o tipc; I Form File: %T" ‘ OBSERVACIONES Nuevo Alumno Finalizar DESCRIPCION DE LOS CONTROLES BÁSICOS
  • 23.
    EL FORMULARIO: Esuna ventana muy importante porque aquí se dibujan o pegan todos los controles que necesitamos utilizar en nuestro programa o aplicación. Se pueden utilizar tantos formularios como se necesiten, y dependiendo de la utilidad que se les dé, éstos serán de diferentes tipos. Así, se puede crear un formulario que contenga un gráfico, para visualizar información o para ingresar datos. P R IN C IP A L E S P R O P IE D A D E S D E U N F O R M U L A R IO : Ñ A M E Permite asignar un nombre al formulario. Por defecto el nombre es FORM 1, FORM2, FORM3, etc. B A C K C O L O R Selecciona un color de fondo para el formulario. B O R D ER ST Y LE Selecciona el estilo de presentación y comportamiento del formulario. C A PT IO N Asigna un Título al formulario. C O N T R O L B O X Indica si se visualizan los botones de control del formulario (Maximizar, Minimizar, etc.). EN A BLED Indica si el formulario debe estar activado o no. Si no esta activado, no responde a ningún evento. FO N T Indica el tipo, tamaño y estilo de letra de los controles que se dibujen en el formulario. IC O N Selecciona un icono para el formulario. E d i t o r i a l Megabyte 45
  • 24.
    4S S S& VISUAL BASIC como debe ser... LE FT Permite indicar la posición horizontal del formulario. M A X BU TTO N Indica si se visualiza el botón Maximizar. M IN B U T T O N Indica si se visualiza el botón Minimizar. M O U SE IC O N Se utiliza para indicar un icono que debe reemplazar al puntero del Mouse cuando éste se encuentre dentro del formulario. Para que esto suceda debe asignar el valor 99-Custom a la propiedad MousePointer. M O U S E P O IN T E R Se utiliza para indicar el estilo del puntero del mouse. M O V E A B L E Indica si el usuario puede mover el formulario. P IC T U R E Para seleccionar un gráfico que sirva de fondo para el formulario. S C A L E M O D E Asigna la unidad de medida para el tamaño o ubicación del formulario o cualquier otro control. La unidad de medida que se activa en forma automática es TWIP. Un TWIP es una unidad de medida estándar para todo tipo de pantallas la cual nos permite asignar el mismo tamaño o ubicación de los controles sin importar el tipo de pantalla que utilizamos. Un TWIP es igual a 1/20 de un punto de impresora. 1440Twips equivalen a una pulgada y 567 equivalen a un centímetro. SH O W IN TA SK B A R Indica si el formulario se debe visualizar en la barra de tareas cuando se esta ejecutando. ST A R T U PPO SIT IO N Permite seleccionar la posición inicial del formulario en la pantalla. T O P Se utiliza para indicar la posición vertical del formulario en la pantalla. V ISIB LE Indica si el formulario se debe visualizar. W ID TH Permite indicar el ancho del formulario. W INDOW STATE Selecciona el modo de presentación del formulario: Normal, Minimizado o Maximizado. G r u p o E d i t o r i a l Megabyte < CAPÍTULO II:Descripción de los Controles Básicos ¿CÓMO ASIGNAR UNA PROPIEDAD? Para asignar una propiedad a un control (formulario, caja de texto, etiqueta, botón de comando, etc.), primero debe seleccionarlo, haciendo un click en él, luego pulse <F4> o el botón propiedades. BOTON DE PROPIEDADES NOMBRE DEL CONTROL AL CUAL SE LE ^ T ESTA ASIGNADO PROPIEDADES FORMAS DE VISUALIZAR LAS PROPIEDADES ES* i S S S B S OE - Ia !.*J JF o r m i Form .I.J Alphabetic ] Categorized | Aubzftëèdraw False jáckColor □ &H8000000 / BorderStyle 2 - Sizable ClipControls True ControlBox True DrawMode 13 - Copy P e n __ DrawStyle 0 - Solid DrawWidth 1 Enabled True FillColor ■ &HGÜ0Û000 FillStyle 1 - Transparen Font MS Sans Serif FontTransparenl True ForeColor ■ &H8000001 Height 3600 HelpContextID 0 ^ BOTON PARA SELECCIONAR EL CONTROL Al. CUAL LE QUEREMOS ASIGNAR PROPIEDADES BARRA DE DESPLAZAMIENTO DE PROPIEDADES NOTA: Usted, puede modificar el ancho o altura de esta ventana. G r u p o E d it o r ia l Megabyte 47 ■ w J Ü
  • 25.
    é S fÍk> VISUAL BASIC como debe ser... * Según la propiedad que ha elegido, Ud. Puede visualizar: 1 II 2 D S H j J 3 (None) ^ 1.- Para escribir el texto que se desea mostrar en la propiedad. 2.- Para que al hacer un click en la flecha hacia abajo se visualice una lista de valores que podemos asignar como propiedad. 3.- Para que al hacer un click en los tres punto se visualice una ventana de diálogo. NOTA : P uede m o d ific a r c u a lq u iera de las p ro p ie d a d e s y com probar sus efectos ejecutando el form ulario con la tecla <F5> o con el botón Ejecutar y para term inar . U ejecución pulse la tecla <ALT> + <F4> o click en el botón finalizar. * B O T O N E JE C U T A R B O TO N FIN A L IZ A R G r u p o E d i t o r i a l Megabyte-^ ETIQUETA (Label) : A Es un control que se utiliza para mostrar mensajes en una aplicación. Al dibujarlo en el formulario se visualiza: Label 1, Label2, Label3, etc. Al dibujar un control no debe preocuparle el tamaño Inicial que tome, porque se puede modificar de una manera fácil y rápida. PR IN CIPA LES PR O PIED A D ES DE UNA ETIQUETA: ÑA M E Permite asignarle un nombre. Por defecto el nombre es Label 1, Label2, Label3, etc. Según el número de Etiquetas que se dibujen en el formulario. A L IG N M E N T Alinea el texto que se encuentra en la Etiqueta: Left (Izquierda), Right (Derecha) y Center (Centro). A PPEA R A N C E Cambia la apariencia de la Etiqueta. A U T O S IZ E Para indicar si el tamaño de la Etiqueta depende del tamaño de la letra seleccionada. B A C K C O L O R Selecciona un color de fondo de la Etiqueta B A C K STY LE Asigna el estilo del fondo de la Etiqueta. B O R D ER ST Y LE Asigna el estilo del borde de la Etiqueta. C A PIT O N Para escribir el texto o información que desea visualizar. ¡ j l l l l ^ G r u p o E d i t o r i a l Megabyte 49
  • 26.
    é S Bib ' VISUAL BASIC como debe ser.. . , < $ 8 PONT Permite asignar el Tipo, Tamaño y el Estilo de la letra del texto o mensaje que desea visualizar en la Etiqueta. FORECOLOR Permite asignar el Color de la letra del texto o mensaje que desea visualizar en la Etiqueta. VISIBLE Indica si la Etiqueta se debe visualizar o no. A P L IC A C IÓ N D E S A R R O L L A D A N° 01 MI PRIM ERA APLICACION VISUAL BASIC Como debe ser... M± nombre es ; ¿fuan. José Castane<t* Leon P a ra d esarro llar una aplicación debe seguir los siguientes pasos: 1.- C rear una nueva aplicación. De la opción F IL E de la Barra de Menú elegir N E W PROJECT. 2.- Mueva y ajuste el tamaño del Formulario. 3.- Dibuje los controles. 4.- Defina las propiedades del formulario y controles. 5.- Escriba las instrucciones para los controles. 6.- Guarde la aplicación. 7.- Ejecute la aplicación. NOTA: Si durante el diseño de la aplicación desea b o rra r un control, debe seleccionarlo haciendo un click en él y luego pulsar la tecla D ELETE (SUPRIMIR). G r u p o E d it o r ia l Megabyte APÍTULO I I .-Descripción de los Controles Básicos % MUY IMPORTANTE: Para trabajar con un control, debes seleccionarlo. Siempre debes mirar la caja de propiedades para darte cuenta con qué control estas trabajando. Ejemplo: El formulario siguiente tiene una etiqueta, pero esta seleccionado el formulario. - lai *1 P / C o n tro l A ctivo Propiedades - Formi I F o r m i Form Alfabética | por categori! (Nombre) Forml Appearance 1 - 3D — 1 AutoRedraw False BackColor □ &H8000000F8 BorderStyle 2 - Sizable Caption Forml En el formulario siguiente se tiene una etiqueta, la cual está activada. , C o n tro l I□ I x || 1 A ctivo (Nombre) Label 1 jfv Alignment 0 - Left Justify Appearance 1 - 3D AutoSize False BackColor □ &H8000000F8 BackStyle 1 - Opaque BorderStyle 0 - None Caption Labell G r u p o E d it o r ia l Megabyte 51
  • 27.
    VISUAL BASIC comodebe ser.. Los puntos alrededor de un control indican que este se encuentra activado. MODIFICAR ELTAMAÑO DE LOS CONTROLES Para modificar el tamaño de un control, primero debe seleccionarlo haciendo click en él. Una vez seleccionado se visualizará los puntos que permiten modificar su tamaño, entonces lleve el puntero del mouse por uno de estos puntos hasta que visualice una flecha en doble sentido, luego arrastre el mouse ampliando o reduciendo el tamaño del control. El control esta Formi EHH1 Labell El control esta listo para modificar su— ancho listo para modificar su ancho El control esta listo para modificar su ancho MOVER UN CONTROLEN EL FORMULARIO Para mover un control haga clic dentro del control y arrastre el mouse hasta la posición donde desea moverlo. Observará la siguiente pantalla. ■ü. Formi Labell Posición del control en el formulario CAPITULO II.Descripción de los Controles Básicos DESARROLLO DE LA APLICACIÓN N° 01 Para desarrollar la aplicación N° 01 se siguen los siguientes pasos: Ajustar el tamaño del Form ulario D ibujar los Controles JSl-ül Labell Label2 Label3 3.- Asignar las propiedades a los Controles CONTROL CAPTION ALIGNMENT AUTOSIZE FONT BORDERSTYÜ F O R M I M I PR IM E R A A P L IC A C IO N — — — — LA B EL1 V IS U A L B A SIC C en ter T rue 28 0-N one L A B E L 2 C om o debe ser... C enter T rue 14 1-F ixed Single L A B E L 3 Mi nom bre es Juan José.. R ight T rue 10 0 -N one Si desea que a¡ ejecutar la aplicación el formulario ocupe toda la pantalla, su propiedad W indowstate debe tener el valor 2 fmaximized). En esta aplicación no se escriben instrucciones porque sólo permite mostrar mensajes. A.Guarde o grabe la aplicación. 5.Pulse la tecla F5 o el botón ejecutar para que el formulario se ejecute y observar los resultados de esta aplicación. G r u p o E d i t o r i a l Megabyte 53 « H »
  • 28.
    Â I lb VISUAL BASIC como debe s e r ... > GUARDAR O GRABAR UNA A PLIC A C IÓ N . Existen dos formas de guardar una aplicación: 1 Haciendo click en la figura del Disco que se encuentra en la Barra Estándar 2.- De la opción F IL E "Archivo" de la Barra de Menú, elegir Guardar Proyecto. Si desea guardarlo con un nombre diferente al asignado inicialmente, debe elegir la opción Guardar Proyecto Como. Primero le pide el nombre de cada formulario (*.FRM) que forma parte de la aplicación y al final le pide el nombre del Proyecto (*. VBP) el cual se utiliza para abrir o recuperar posteriormente la aplicación. VENTANAPARAGRABAR UN FORMULARIO Acción que está realizando S a ve File A s C arpeta Actual Selecc rna otra carpeta C arpeta A nterior C rea una N ueva C arpeta Guardai en: | M Vb + I m J J Clisvr j Help J Odbc j report J Repostry 1 samples L - Ï Setup L_J setupkit —J T empiate L J T sql __j vbonline L J Winapi L U Wizards hh ^ PROG01 Q PRO G 02 Nombre de archivo: ' |9BRr Guardar como tipo: I Form FileJ Guardar | " (x.frm) Cancelar Ayuda Formas de ver los Formularios y carpetas ^Form ularios y carpetas existentes Botón para G rabar C aja para escribir el nom bre del form ulario que T ipo de archivo que está ^ C ancela la acción desea g rab ar grabando •CAPITULO II'.Descripción de los Controles Básicos VENTANA PARA GRABAR UN FORMULARIO Acción que está realizando Q-ave Pieiect A* Carpeta Actual Selecciona otra carpeta Carpeta Anterior Crea una Nueva Carpeta j d - i i G uardar en: _já V b = 3 d ü 3 c ap t I R e p o s try __ I vb o n lin e J Clisvr I sam ples __ J W in a p i J does L J S e tu p I W iz a rd s j H elp __ 1 se tu p kit C A LE N D A R j O dbc (__J T em piate <jbf c a s e • j report — I T sql c h e c k l jlL N om bre de archivo: G uardar com o tipo: G uardar {P ro je c t Filep (x.vbp) j J □ - C ancelar Ayuc a Caja para escribir el nombre del formulario que desea grabar Tipo de archivo que está grabando Formas de ver los Formularios y carpetas _Formularios y carpetas Botón para Grabar Cancela la acción " MUCHO CUIDADO " Para cada formulario de un proyecto y para cada proyecto que usted grabe, utilice nom bres d istin to s porque de lo contrario el nuevo formulario o proyecto borrará al anterior. Por ejemplo, si ya tiene un proyecto grabado con el nom bre trabajo y graba un nuevo proyecto con el mismo nombre, entonces el primer proyecto se borrará y ya no podrá recuperarlo. Esto también sucede con los formularios. Por eso tenga M U C H O CUIDADO Antes que el proyecto o formulario se borre se muestra un mensaje de advertencia. G u a r d a i p r o y e c t o c o m o C :A rchivos de program aM icrosoft V isual S tud io V B 98 T ra ba jo .vbp va existe. ¿D esea reemplazarlo? Si usted responde SI, el nuevo proyecto o formulario reemplaza al anterior (lo borra) y si responde NO, Visual Basic le pide otro nombre. G r u p o E d it o r ia l Megabyte ss mm
  • 29.
    VISUAL BASIC comodebe ser... Para Evitar estos problemas te recom iendo que cada proyecto o aplicación que hagas lo grabas en una carp eta diferente, esto también te permite administrar mejor tus proyecto. A BRIR O R E C U PER A R UNA A PLIC A C IÓ N Existen tres formas de abrir o recuperar una aplicación: 1 Haciendo click en la figura del L ibro que se encuentra en la Barra Estándar. 2.- De la opción ARCHIVO de la Barra de Menú, elegir A b rir Proyecto. 3.- Pulsar las teclas (CTRL + O). Una vez que se visualiza la ventana para abrir un proyecto, usted puede hacer doble clic en el nombre del proyecto o escribir su nombre en la caja indicada y luego haga clic en el botón ABRIR. Si al abrir un proyecto, no se visualiza, pulse CTRL + R para activar la ventana de proyecto y luego doble clic en Forms y/o en el formulario que desea visualizar. VENTANAPARA ABRIR UN PROYECTO m Muestra todos los proyectos que tienes grabados. Muestra la acción aue esta Muestra los orovectos recién E xisten te j R e c ie n te s J fju s c a r en: [ «J V b ] D a ta e n v iro n m e n t J T em piate 1 T sql ) W iz a rd s A lu m no s B a la n c e C olegio Com pras C ontables E xam en F arm acia H orarios 3 S | H o tel Inform es J u e g o s P agos P s ic o lo g ia S is te m a s i a J a l frnr-il S ue ld os T est T ie n d a T rabajo U n iv e rs id a d U n iv e rs o d a d UL N o m b re d e a rc h iv o : I'P O d e a rch ivos: j P ro y e c to (“ . v b p ;“ .m a kj". vb g) Caja para escribir el Tipo de Abre el Muestra los Proyectos que archivo que ” ------ - están mas a la derecha & ► 56 G r u p o E d i t o r i a l M egab yte^ E JE C U T A R UNA A P L IC A C IÓ N Existen tres formas de ejecutar una aplicación: 1.- Pulsando la Tecla <F5>. 2.- De la opción E jecu tar de la Barra de Menú, elegir Iniciar. 3.- Haciendo click en el Botón E jecu tar que se encuentra en la Barra Estándar. > BOTÓN EJECUTAR NOTA: Según como esta configurado Visual Basic, cada vez que ejecuta un programa le preguntará si desea guardar los cambios realizados. Esto se puede activar o desactivar en la opción H erram ientas de la barra de menú luego en Opciones y finalmente en la hoja E ntorno E ditor | F o rm a to d el e d ito r | G en eral | Acopl< C u a n d o s e Inicie Visual B asic: C~ p r e g u n ta r p o r u n p ro y e c to C r e a r u n p ro y e c to p re d e te rm in a d o C u a n d o s e inicie u n p ro g ra m a : <*■ g u a r d a r lo s c a mbios! p r e g u n ta r si s e g u a r d a n los cam bios C f¿o g u a r d a r los cam bios D irectorio d e plantillas: , E n to rn o j A v a n z a d o | M o strar plantiB as p a ra : P7 F orm ularios W F orm ularios MDI P? M ódulos W M ódylos d e c la se f y C o n tro le s d e u su a rio W P á g in a s d e p ro p ie d a d e s W D o cu m en to d e u su ario l e ARCHI VOS DE PROGRAMAM ICROSOFT VISUAL STUDIOVB98T e m p iate Como puede observar, aquí también se puede cambiar otras configuraciones. MUY IMPORTANTE: l.S i al ejecutar una aplicación no se visualiza el form ulario, verifique que el formulario no tenga en su propiedad Visible el valor False o que en su p ro p ied ad W indow S tate no tenga el valor I-Minimized (Minimizado). 2. Si al ejecutar la aplicación el form ulario se visualiza pero no responde a ningún evento incluyendo los controles que contiene, entonces verifique que su propiedad Enabled no tenga el valor False. ¡ ||¡ ||^ G r u p o E d it o r ia l Megabyte
  • 30.
    %■ VISUAL BASICcomo debe ser... F IN A L IZ A R UNA A P L IC A C IÓ N Existen cuatro formas de Finalizar una aplicación: 1.- Pulsando las Teclas <ALT> + <F4>. 2.- De la opción Ejecutar de la Barra de Menú, elegir Term inar. 3.- Haciendo click en el botón cerrar del formulario (X). 4.- Haciendo click en el Botón Finalizar que se encuentra en la Barra Estándar. ■ BOTÓN FINALIZAR GRABAR UN PROYECTO EN UN D IS K E T T E Si desea llevar tu proyecto en un diskette, debe copiar en él no sólo el proyecto (*.VBP) si no también cada uno de los formularios (*.FRM) u otros componentes que contiene como por ejemplo una base de datos, etc. Si ya grabaste tu aplicación er, el disco de la computadora (disco duro) y te encuentras en el Visual Basic con tu aplicación en la pantalla que deseas llevar en un diskette, entonces debes activar la ventana de proyecto (CTRL+R) hacer clic con el botón derecho del mouse en cada formulario (uno por uno) y elegir G u a rd a r xxx.Frm Como. Esta opción también se encuentra en la opción Archivo de la barra de Menú donde encontrarás también la opción G ra b a r Proyecto Como la cual se utiliza para guardar el proyecto, entonces haga clic donde se selecciona las carpetas y elija Disco 3 1/2A: r ? i x i G u a rd a r e n : V b 9 8 « ■■■.. ^ , mi Ml ou immJ _ _ J D a ta e n v iri M M i P C ^ 3H ..I T e m p ia te D is c o d e (A :) ¿ a J J u a n jo s é (C .) __J T s q l 1 ... 1 A r c h iv o s d e p ro g ra m a _ J W iz a r d s C3 d d d Ö e I 1 M ic ro s o ft V is u a l S tu d io C e d ti (D :) 1....1 S e r v ic io s e n lin e a N o m b re d e a rc h iv o : {R a y a 1 g u a r d a r G u a rd a r c fim o | F o rm u la rio (x.frm ) a r c h iv o s d e tip o : T 1 C a n c e la r j A y u d a j También puede utilizar el Windows para realizar esta copia. G r u p o E d i t o r i a l Megabyte^ CREAR UN ARCHIVO EJECUTABLE (*.EXE) Un archivo ejecutable es un archivo con la extensión EXE donde se encuentran unidos todos los formularios, instrucciones y módulo de una aplicación. Tiene las siguientes ventajas: • Permite ejecutar la aplicación sin necesidad de ingresar al Visual Basic. • Evita que alguien visualice las instrucciones que hemos utilizado en nuestra aplicación. • Evita que alguien modifique las instrucciones que hemos escrito en la aplicación. Para crear un archivo ejecutable elija primero la opción ARCHIVO de la barra Estándar y luego GENERAR EXE. Visual Basic le pedirá el nombre del archivo que desea crear. El nombre por defecto que presenta es el nombre con el que Ud. a grabado la aplicación. Guardar en: p_il Vb98 M l » J f ü ml 2J Dataenvironmenl i*""1 Link * 1 T empiate feV b6 _2j T sql Ce? Visdata *"1 Wizards 3 C2 **~1 Cvpack tiombre de archivo: ITrabaio 1 Aceptar J Cancelar I Ayuda i Qpciones. . 1 Al hacer click en el botón A ceptar o pulsar ENTER después de ingresar el nombre, Visual Basic genera en forma automática el archivo ejecutable. Una vez creado el archivo ejecutable Ud. puede crearle un acceso directo para poder ejecutarlo desde el entorno del WINDOWS sin necesidad de activar el Visual Basic. ¿ QUÉ ES UN ACCESO DIRECTO ? Un Acceso Directo es una manera rápida de ejecutar una aplicación des­de el escritorio del Windows sin necesidad de activar el Visual Basic. También nos permite acceder a arribos y carpetas. G r u p o E d it o r ia l Megabyte 59 « f i f i »
  • 31.
    ^ÉiÍÉÉÉ^ VISUAL BASICcomo debe ser... CREAR UN ACCESO DIRECTO Hay tres maneras de crear un acceso directo: 1. Desde una carpeta. 2. Desde el escritorio. 3. Desde el Menú de Inicio. Para crear un acceso directo en el escritorio del Windows, primero debe salir al escritorio y luego seguir los siguientes pasos: En cualquier parte libre del escritorio haga clic con el botón derecho del mouse. Se mostrará el siguiente menú de opciones: Active Desktop ► Organizar iconos ► Alinear iconos Actualizar ' ' Éenát • Deshacer Eliminar Active Desktop ► Organiza» iconos ► AJinear iconos Actualizar Pegar f'ft3<£ á c ñjvtfpy [ Deshacer Eliminar Nuevo Propiedades Lleve el puntero del mouse a la opción Nuevo. Se mostrará la siguiente pantalla. Propiedades I _ J Carpeta ¿j Acceso directo ^ W inZp File J j] Documento de texto Documento de Microsoft Word t i l Imagen de mapa de bits A/chivo de sonido l¡P Presentación de Microsoft PowerPoint Hoja de cálculo de Microsoft Excel ir CorelDRAW 8.0 Gráfico @ Imagen Corel PHOTO-PAI NT 8.0 ^1 Corel Media Folder O Adobe Photoshop Image PowerDesigner 8 Physical Data Model File ^ Microsoft Data Link y 60 G r u p o E d it o r ia l M egab yte^ VITULO II:Descripción de los Controles Básicos 3. De la pantalla anterior haga clic en la opción Acceso Directo para visualizar la siguiente pantalla: E s c rib a el n o m b re y la u b ic a c ió n d e l e le m e n to pa ra el q u e d e s e a c re a r u n a c c e s o d ire c to , o b ie n , b u s q u e el e le m e n to h a c ie n d o c lic e n Exam inar. L ín e a de co m a n d o s : Exam inar.. C a n c e la r De la pantalla anterior haga clic en el botón Examinar para buscar el archivo Ejecutable (*.EXE) que usted ha creado E xam inar Buscar en: Vb98 Nombre de archivo: | Tipo de archivos: | Programas a i » I B a l _JÍDataenvironmen(j IZÜLink 1 T empiate Q Trabajo ZDTsql ^ VbS 1 Wizards G jiV isdala Z 3 C2 1Cvpack Abrir ~ 3 Cancelar Normalmente Visual Basic Graba el archivo ejecutable que usted crea en la carpeta: C:Archivos de programaM icrosoft Visual StudioVB98 G r u p o E d i t o r i a l Megabyte 61
  • 32.
    W VISUAL BASICcomo debe ser... Una vez que en cu en tra el archivo selecciónelo haciendo doble clic en él o un solo clic y luego en el botón A brir. Se mostrará la siguiente pantalla donde se muestra la ruta y el nombre del archivo ejecutable. En nuestro ejemplo el archivo se llama TRABA JO.EX E. C re a r a c c e s o d ire c to l i Sjy > I «fi S ~ sPB«*§> «•»»*... 1 E s c rib a e l n o m b re y la u b ic a c ió n d e l e le m e n to p a ra e l q u e d e s e a c re a r u n a c c e s o d ire c to , o b ie n , b u s q u e e l e le m e n to h a c ie n d o c lic e n E x a m in a r. L í n e a d e c o m a n d o s : | d e p ro g ra m a S M ¡c ro s o ft V is u a l S tu d io S V B 9 8 T ra b a jo . e x e f' E x a m in a r... I De la pantalla anterior seleccione el botón Siguiente. S e le c c io n e u n t ít u lo p a ra el p ro g ram a S e le c c io n e u n n o m b re p a ra e l a c c e s o d ire c to : IT ra b a jo : A tr á s ) j | C a n c e la r | La pantalla anterior le permitirá en forma opcional cambiar el nombre para el acceso directo. Según los iconos (*.ico) que tenga grabados, Windows le pedirá también elegir el icono para el acceso directo. 62 G r u p o E d it o r ia l M eg a b y te< |¡¡¡| Después de cambiar o no el nombre del acceso directo haga clic en el botón Finalizar. Observará inmediatamente en el escritorio del Windows un nuevo icono. NOTA: Para ver las otras formas de crear un Acceso Directo consulte con el Manual o Ayuda de Windows. MUY IM P O R T A N T E Si desea grabar y ejecutar el archivo *.EXE generado en una computadora que no tenga instalado el Visual Basic, debe copiar en la carpeta WINDOWSSYSTEM de dicha computadora el archivo MSVBVM60.DL1, que se encuentra en la misma carpeta de la computadora donde desarrolló la aplicación. Si la aplicación trabaja con archivos externos como base de datos también debe copiarlos en su carpeta respectiva. Si no copia el archivo *.DLL se mostrará el siguiente mensaje cuando intente ejecutar la aplicación. Error al iniciar el programa a l N o s e e n c o n tró el a rc h iv o D L L re q u e rid o , M S V B V M 6 0 .D L L . A c e p ta r j| NOTA: También puede crear los Discos de Instalación de la Aplicación como se explica en la página N° 307. G r u p o E d it o r ia l Megabyte 63 4 M i
  • 33.
    VISUAL BASIC comodebe ser... CAJA DE TEX TO (TEXT): fibj Es un control que permite al usuario el ingreso de datos por medio del teclado. Al dibujarlo se visualiza: Textl, Text2, Text3, etc. PRIN CIPA LES PRO PIED A D ES DE UNA CAJA DE TEXTO: Ñ A M E Permite asignarle un nombre. Por defecto el nombre es Textl, Text2, Text3, etc. Según el número de Cajas de Texto que se dibujen en el formulario. B A C K C O L O R Selecciona el color del fondo. EN A B L ED Activa o Desactiva la Caja de Texto. Si está desactivada se muestra en un color opaco y no responde a ningún evento ni se puede ingresar datos. FO N T Permite asignar el Tipo, Tamaño y el Estilo de la letra del texto que se escribe en este control. F O R E C O L O R Permite asignar el Color de la letra del texto que se escribe en este control. L O C K E D Permite que el usuario pueda o no ingresar o modificar el texto que se encuentra en este control. El valor FALSE permite el ingreso o modificación y el valor TRUE lo evita. M A X LEN G TH Para indicar el número máximo de caracteres que el usuario puede ingresar en una Caja de Texto. El valor cero (0) permite que el número de caracteres a ingresar sea ilimitado. Este valor es asignado por defecto. M U L T IL IN E Indica si el texto a escribir en la caja de texto puede ocupar varias líneas. Se recomienda utilizarla junto con la propiedad SCROLLBARS para poder desplazarse de una manera más rápida y fácil por el texto ingresado PA SSW O R D C H A R Para indicar el carácter que deseamos que reemplace a cada uno de los caracteres que digitamos. Se puede utilizar por ejemplo cuando queremos ingresar claves de acceso. SC R O L L B A R S Para indicar qué barras de desplazamiento queremos que tenga la caja de texto: Ninguna (None), Vertical, Horizontal o Ambas (Both). TABINDEX Indica el orden en el que el cursor debe ubicarse en las Cajas de Texto. Donde queremos que se ubique el cursor al, ejecutar la aplicación debe tener el valor cero. TA B STO P Indica si el cursor debe ubicarse o no en una Caja de Texto. TEX T Almacena el texto que el usuario escribe en este control. Por defecto su contenido es: Textl, Text2, Text3, etc. Para ingresar datos debe borrar este contenido y dejar en blanco la Caja de Texto. V ISIB L E Indica si la Caja de Texto se debe visualizar o no. APLICACIÓN DESARROLLADA N° 02 - i n l x | Datos Personales Nombre Dirección T eléfono Centro de Estudios OBSERVACIONES "1] G r u p o E d it o r ia l Megabyte 65
  • 34.
    > VISUAL BASICcomo debe ser. . . D esarrollo de la Aplicación: 1.- D ib u jar los controles. Labell Label2 |T e>:H Label3 Jfext2 Label4 ffe x t3 Label5 f f ext4 Label6 ÍText5 2.- A signar las Propiedades a los C ontroles. ETIQUETAS CONTROL CAPTION ALIGNMENT BORDERSTYE Labell Datos Personales Center 1-Fixed Single LabeI2 Nombre Left O-None Label 3 Dirección Left O-None Label4 Teléfono Left O-None Label5 Centro de Estudios Left O-None Labeló Observaciones Center O-None CAJAS DE TEXTO CONTROL TEXT MULTILINE SCROLLBARS TEXT1 En Blanco False None TEXT2 En Blanco False None TEXT3 En Blanco False None TEXT4 En Blanco False None TEXT5 En Blanco True Vertical El formulario debe tener: INGRESO DE DATOS en su Caption. 66 G r u p o E d i t o r i a l Megabyte ^¡¡¡¡¡^ APLICACIÓN PROPUESTA N° 01 <. IN G R E S O DE P R O D U C TO S m m _ |n |x | ♦ Nombre Descripción Precio Unitario Unidad de Medida Stock Fecha de Vencimiento f | Chic ¡¿yo. 2 } de Agosto de 1.998 APLICACIÓN DESARROLLADA N° 03 n O T T T r O T r r n r T a r r Nombre r~ Ciclo (del I al X) !...... Sexo [F /M ] r~ Clave r~ D irección Electrónica i .................... ...... L a d ir ec c ió n e letró n ica e s a s ig n a d a d e s p u é s d e in g r e s a r to d o s io s r e g is tr o s ; p o r lo tardo, U d. n o p o d r á in g r e s a r la CARACTERISTICAS: 1. En el ciclo sólo se debe ingresar hasta 03 caracteres. 2. En el sexo sólo un carácter. 3. En la clave hasta 05 caracteres y no se debe visualizar a medida que se ingresa. 4. No se debe permitir el ingreso de la dirección electrónica. G r u p o E d i t o r i a l Megabyte 67
  • 35.
    17.S7 l /ItASIC como debe ser. Iii nidlli) ilc l¡i Aplicación: I I Xluijiu los controles. < Labell j|T extl Label2 |T ext2 Label3 ¡Text3 » ----- Label4 [ i ext4 Label5 Label6 j í ext5 2.- Asignar las Propiedades a los Controles. E T IQ U E T A S CONTROL CAPTION ALIGNMENT BORDERSTYE Labell Nombre Left O-None LabeI2 Ciclo (del I al X) Left O-None LabeI3 Sexo (F/M) Left O-None Label4 Clave Left O-None Label5 Dirección Electrónica Left O-None Labeló La dirección elec... Center 1-Fixed S. CAJAS DE TEXTO CONTROL LOCKED m a x l e n g t h PASSWORDCHAR t e x t TEXT1 False 0 En Blanco En Blanco TEXT2 False 3 En Blanco En Blanco TEXT3 False 1 En Blanco En Blanco TEXT4 False 5 En Blanco TEXT5 True () En Blanco En Blanco Caption del formulario : INSCRIPCION DE ALUMNOS G r u p o E 68 d it o r ia l Mega byte< PÍTULO II'.Desciipción de los Controles Básicos BO TO N DE CO M A N D O S (C O M M A N D ): Es un control que contiene instrucciones que se ejecutan cuando ocurre un evento. El evento más utilizado es el evento CLICK, cuyas instrucciones se ejecutan cuando el usuario hace un click en dicho control. Cuando se dibuja se visualiza:Commandl, Command2, Command3, Etc. P R IN C IP A L E S P R O P IE D A D E S DE UN BOTON DE COMANDOS: Ñ A M E Permite asignarle un nombre. Por defecto el nombre es Com m andl, Command2, Command3, etc. Según el número de Botones de Comandos que se dibujen en el formulario. B A C K C O L O R Selecciona el color del fondo. Para que acepte el color que se le asigna la propiedad Style debe estar en modo Gráfico. C A N C EL Para indicar si las instrucciones que contiene se deben ejecutar cuando el usuario pulsa la tecla <ESC>. C A PT IO N Para indicar el título que debe tener el botón. El título que se le asigne siempre se visualiza en el centro del botón de comandos. Ud. puede subrayar una de las letras del título usando antes de dicha letra el símbolo (&), esto le permitirá ejecutar las instrucciones que contiene este control pulsando la tecla ALT y la letra subrayada. FO N T Permite asignar el Tipo, Tamaño y el Estilo de la letra del texto que se escribe como título del botón. P IC T U R E Selecciona un gráfico para que se utilice como título del botón de comandos. Ü P G r u p o E d i t o r i a l Megabyte 69
  • 36.
    ^ ¡¡¡¡fe >VISUAL BASIC como debe ser... STYLE Para seleccionar su estilo de visualización: Estándar o Gráfico. Si el estilo es gráfico, puede almacenar un gráfico como título y se le puede cambiar el color del fondo. T O O L T IPT E X T Nos permite escribir un texto que se visualizará cuando el puntero del mouse se ubique en el botón. El texto que se escriba sirve de ayuda para el usuario, porque le puede dar a entender qué tarea o /unción realiza el botón. V ISIB LE Para indicar si el botón se debe visualizar. APLICACIÓN DESARROLI ADA N° 04 (Similar a la N° 02) 1 « INGRESO DE DATOS wmm 1 Datos Personales N om bie j¡ D irección T eléf ono C entro d e E stu d io s J- — ■ OBSERVACIONES LiL li H u e v o Alumno j Finalizar J La propiedad de los controles son iguales a la Aplicación N°02. Lo que sigue son de los nuevos controles. CONTROL CAPITON CANCEL TOOLTIPTEXT Commandl &Nuevo AlumnoFalse Adiciona un nuevo alumno. Command2 &Finalizar True Finaliza la aplicación. NOTA: • El resultado de TOOLTIPTEXT, se visualiza cuando al ejecutar la aplicación se ubica el puntero del mouse por unos instantes en cualquiera de los botones. • Se debe escribir instrucciones dentro de los Botones. • El símbolo & permite que una letra esté subrayada. 7 0 G r u p o E d it o r ia l Megahyte ESCRIBIR INSTRUCCIONES PARALOS CONTROLES Para escribir instrucciones dentro de algún control se debe hacer Doble Click en dicho control o una vez seleccionado (haciendo un click en él) se debe pulsar la tecla <F7>. Ingresará a la ventana de instrucciones, llamada también ventana de código: VENTANA DE C Ó D IG O Q IN STR U C CIO N ES IM PO R T A N T E : El nombre del control depende de dónde se hizo doble click o pulsó <F7> y de la Propiedad Ñame que tiene el control. Si no ha cambiado la propiedad Ñame del control se visualiza el nombre por defecto. Cada control tiene un evento por defecto, si Ud. desea programar en un evento diferente debe hacer click en la lista de Eventos y si desea programar dentro de otro control que pertenece al mismo formulario debe hacer click en la lista de controles (Flecha hacia abajo). I p l ^ G r u p o E d i t o r i a l Megabyte m 71 w m
  • 37.
    ^Ü Íy ¡É^ VISUAL BASIC como debe ser... PRINCIPALES EVENTOS ACTIVATE Es un evento del formulario. Las instrucciones que se escriben dentro de este evento se ejecutan cuando el formulario es activado. CH A N G E Las instrucciones que se escriben dentro de este evento se ejecutan cuando se modifica el contenido del control. C L IC K Las instrucciones que se escriben dentro de este evento se ejecutan cuando se hace un click o pulsa ENTER en un control. D B L C L IC K Las instrucciones que se escriben dentro de este evento se ejecutan cuando se hace doble click control. DEA C T I VATE Es un evento del formulario. Las instrucciones que se escriben dentro de este evento se ejecutan cuando el formulario es desactivado. G O TFO C U S Las instrucciones que se escriben dentro de este evento se ejecutan cuando el cursor se posiciona en un control. IN IC IA L IZ A T E Es un evento del formulario. Las instrucciones que se escriben dentro de este evento se ejecutan cuando el formulario se inicializa. K EY PRESS Las instrucciones que se escriben dentro de este evento se ejecutan cuando se pulsa una tecla en el control. LO A D Es un evento del formulario. Las instrucciones que se escriben dentro de este evento se ejecutan cuando el formulario es cargado en memoria. LO STFO C U S Las instrucciones que se escriben dentro de este evento se ejecutan cuando el cursor sale en un control. T IM E R Es un evento del control Timer (Reloj). Las instrucciones que se escriben dentro de este evento se ejecutan cada cierta cantidad de segundos, que Ud. Deberá indicar. U N LO A D Es un evento del formulario. Las instrucciones que se escriben dentro de este evento se ejecutan cuando el formulario es descargado de la memoria. 7 2 G r u p o E d it o r ia l Megahvte EV ENTO S M OUSEDOW N Y M OUSEUP Las instrucciones que escribimos en el MouseDown se ejecuta se presiona un botón del mouse.Las instrucciones que escribimos en el evento MouseUp se ejecutan cuando se deja de presionar un botón del mouse. Estos eventos reciben cuadro (4) valores y se almacenan en la variables Button, Shift X, Y. Prívate Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) End Sub Prívate Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) End Sub La variable BUTTON recibe un valor que indica el botón del mouse que se presionó: Valor 1 Indica que se presionó el botón Primario. 2 Indica que se presionó el botón Secundario. 3 Indica que se presionó el botón Central. (No todos los mouse tiene 3 botones) La variable SH IFT recibe el valor que indica la tecla especial que se tiene presionada cuando pulsa o deja de pulsar uno de los botones del mouse: Mayús (Shift), CONTROL (Ctrl) o ALT. Valor 1 Indica que se tiene presionada MAYÚS (Shift). 2 Indica que se tiene presionada CONTROL (Ctrl). 3 Indica que se tiene presionada ALT. Las variables X, Y reciben el valor de la posición Horizontal y Vertical del mouse respectivamente. MUY IM PO RTA N TE El botón primario del Mouse es el botón principal y permite seleccionar los objetos de una manera normal y casi siempre es el botón Izquierdo. El botón secundario del Mouse permite acceder a los menú contextúales y casi siempre es el botón derecho. Los menú contextúales contienen las opciones mas utilizadas de una aplicación. Puede utilizar la configuración del Panel de Control de Windows para configurar el Mouse. l i l i l í G r u p o E d i t o r i a l Megabyte
  • 38.
    V Á VISUALBASIC como debe ser... En este libro al botón secundario se le llama “Botón Derecho” ¡ § É I ¡ I DESARROLLO DE LA APLICACIÓN N° 04 En la aplicación N° 04 sólo se necesita programar el Evento Click de cada Botón de Comandos. ELBOTÓN: NUEVO ALUMNO. Debe limpiar las cajas de texto y ubicar el cursor en Textl para ingresar un nuevo alumno. EL BOTÓN: FINALIZAR. Debe finalizar o terminar la aplicación, ^sto también debe suceder si se pulsa la tecla ESC. Entonces dentro del evento click del botón Nuevo Alumno se debe escribir: Textl = ”” Text2 = ”” Text3 = ”” Text4 = ”” Text5 = ”” Textl.Setfocus Y dentro del botón finalizar se debe escribir: End NOTA: • La instrucción END finaliza un Programa, SETFOCUS ubica el cursor en un determinado control y Textl = ”” borra el contenido de Textl. Entre las comillas no debe dejar espacios en blanco. • Después de escribir las instrucciones de un control puede cerrar la ventana haciendo clic en el botón cerra (X). • Las instrucciones quedan grabadas cuando se graba el proyecto o el formulario. ASPECTO FINAL DE LAS VENTANAS DE COMANDOS BOTONNUEVO ALUMNO BOTON FINALIZAR Private Sub Command2_Click() ¿ End End Sub G r u p o E d i t o r i a l M egabyte^ ^CAPÍTULO II:Descripción de los Controles Básicos VISUAL BASIC AYUDA A PROGRAMAR Cuando escribe el nombre de un control que tiene en el formulario y luego un punto se visualiza las propiedades o eventos que puede asignar a dicho control. Una vez que se encuentra seleccionada (Sombreada) la propiedad o evento en forma automática o en forma manual (con la flecha hacia abajo o h acia arrib a), pulse la barra e s p a d a d o ra para que se escrib a automáticamente. Esta ayuda se puede activar o desactivar en la opción: HerramientasOpcionesEditorLista de miembros automática También le ayuda cuando escribe una función visualizando los parámetros que necesita. Cuando esto ocurre quiere decir que ha escrito correctamente el nombre del control o el nombre de la función. I P P r o y e c t o l - F o im l (C ó d ig o ] I C o m m a n d l " l i J c " ck 1t Proyecto! • Form! (Código) P r i v a t e S u b C o m m a n d l _ C l i c k IT T e x t 1. E n d S [^lÁiignment eü* Appearance Ef? BackColor i**? BorderStyle nf? CausesValidation eS* Container ei? DataChanged Commandl Click Private Sub Commandl_Click() Dim R As Intger R = Right ( End S Right(SftMg,Le)i#/lsi-onfl) [ i f 1 A PLIC A C IÓ N PRO PU ESTA N° 02 Escriba la siguiente aplicación: Si se hace un click en el botón de comando N° 1 (Nombre), se debe visualizar tu nombre. Si se hace un click en el botón de comando N° 2 (Centro de Estudios), se debe visualizar el nombre del colegio, instituto, universidad, etc. donde estudias. Si se hace un click en el botón de comando N° 3 (Fecha de Nacimiento), se debe visualizar la fecha en que naciste. O - | n |_ g j N o m b re ¿I Centro de E s tu d io s F e c h a d e N a c im ie n to Salir G r u p o E d it o r ia l Megabyte 75
  • 39.
    VISUAL BASIC comodebe ser... TRABA JAN DO CON LOS NO M BRES DE LOS C O N TR O LE S Todos los controles tienen asignado un nombre automáticamente cuando son dibujados en el formulario, esto lo puede confirmar mirando la propiedad Ñame (Nombre) de cada control que dibuja en el formulario. Por ejemplo: La primera etiqueta (Label) que dibujas en el form ulario tiene automáticamente el nombre Label 1, la segunda Label2, etc. La primera caja de textos (Text) que dibujas en el formulario tiene automáticamente el nombre T extl, la segunda Text2, etc. El primer botón de comando (Command) que dibujas en el formulario tiene automáticamente el nombre Command 1, el segundo Command2, etc. Para desarrollar una aplicación puedes utilizar estos nombres que se asignan automáticamente al ser dibujados en el formulario asignarles nombres que usted cree conveniente (ESTO ES OPCIONAL). N O TA: Normalmente los controles en su propiedad Caption o Text tienen lo mismo que se asigna automáticamente en la propiedad Ñame, por eso tenga mucho cuidado de no modificar la propiedad Ñame en lugar de la propiedad Caption o Text. E jem plo: En la siguiente aplicación se les asigna a los controles nombres distintos a los que Visual Basic les asigna en forma automática. 7 6 G r u p o E d it o r ia l Megabyte“ A PLIC A C IÓ N DESARROLLAD A N° 05 Esta aplicación permite ingresar el nombre, fecha de nacimiento, DNI y domicilio actual de una persona utilizando la propiedad Ñame de los controles. . Ingreso de D a lo s ■ Nombre.................. ! Fecha de Nacimiento ! ! ■ DNI Domicilio Actual • Paso N° 01: D ib u jar los controles. Salir • Labell- : Label2 : - Label3 • Label4- • ; |Texl3 ............| Text 4 Command! : Command2 Paso N° 02: D ib u jar los controles. ETIQUETAS CONTROL L a b e 11 Label2 LabeB Label4 CAJAS DE TEXTO CONTROL TEXT Textl Text2 Text3 Text4 CAPTION Nombre Fecha de Nacimiento DNI Domicilio Actual En Blanco En Blanco En Blanco En Blanco CAJAS DE TEXTO CONTROL CAPTION Coiranandl Nuevo Command2 Salir NAME Nombre Fecha Dni Domicilio NAME Nuevo Salir ^ G r u p o E d it o r ia l Megabyte AUTOSIZE True True True True 77
  • 40.
    VISUAL BASIC comodebe ser... Paso N° 03:E scribir las instrucciones p a ra los controles. Instrucciones del botón Nuevo. Cuando haga clic o pulse la tecla F7 en el botón Nuevo, se visualiza la siguiente ventana: Observe el nombre del Control 1 IH Proyectol - Formi (Código) Huevo jtJ 1 Click Private S u b Nuevo C l i c k () T 1 t " Ü I 1 Q b U D r k u j A En esta ventana se tiene que escribir las instrucciones para limpiar el contenido de las cajas de texto y poder ingresar los datos de otra persona. Como cada caja de texto tiene un nombre asignado, entonces se tiene que escribir las siguientes instrucciones: 1 tü P royectol - Formi (Código] Llnlxl 1 Huevo 1 Click t | Private Sub Muevo Click ( ) T Nombre = Fecha = Dni = Domicilio = Nombre.SetFocus — End Sub 8 -ill ±J Instrucciones del Botón Salir Cuando haga clic o pulse F7 en el botón Salir, se visualiza la siguiente ventana donde debe escribir End. Observe el nombre del control P 78 G r u p o E d it o r ia l Megabyte PREFIJOS PARA LOS NOMBRES DE LOS CONTROLES Si tu lo deseas, puedes hacer uso de los prefijos que se recomiendan utilizar en los nombres de los controles de Visual Basic, de tal manera que con su nombre se sepa a qué tipo de control te refieres. Por ejemplo, si en una caja de textos va a ingresar la dirección de una persona, le puedes asignar el nombre de txtdireccion. Esto es opcional, incluso si tu lo deseas puedes crear tus propios prefijos para los nombre de los controles en sus aplicaciones. Control Prefijo Control Prefijo Base de datos db Line lin Campo f Id ListBox 1st CheckBox chk Menu mnu ComboBox cbo MsChar ch Command Button cmd Ole Contaiifeg-; ole Command Dialog cdl Option Button opt Data Control dat Picture Box pic DbCombo dbc ProgressBar prg DbGrid dbg Recordset Ree DbList dbl ScrollBar Horizontal hsb Directory ListBox dir Scrollbar Vertical vsb Drive ListBox drv Shape shp DTPicker dtp SsTab tab File ListBox fil Tabla tb Form f rm TextBox txt Frame f ra Timer tmr Image img UpDown upd Label lbl G r u p o E d i t o r i a l Megabyte 79
  • 41.
    é S Èk VISUAL BASIC como debe ser... ERRORES MAS COMUNES Si al ejecutar una aplicación se m uestra una ventana de m ensaje indicando un error, haga click en el botón aceptar o en el botón Debug y finalice la aplicación para corregir el error. Se espera fin del procedimiento. Posiblemente, borró End Sub por casualidad al escribir las instrucciones del control - « r - v . • _ j | j v Compile error: Expected End Sub A ceptar j j Ayuda R un-tim e e rro r '424‘: O b ject required End J { D e b u g j| Help I Se req u iere un objeto. seguramente Ud. se está refiriendo a un control que no existe en el formulario, escribió en forma incorrecta la propiedad del control o a una propiedad le está asignando un valor incorrecto. ¿ G ra b a r los cam bios? SI, NO o CA N CELA R Seguramente quiere salir del proyecto actual sin grabarlo. 80 G r u p o E d it o r ia l Megabyte PREGUNTAS DE REPASO N° 02 1. ¿Cómo se borra un control del formulario? 2. La propiedad Caption sirve para: 3. ¿Con qué propiedad se puede evitar que un control se visualice cuando se ejecute una aplicación? 4. Para que al ejecutar el formulario ocupe toda la pantalla se usa la propiedad: 5. ¿Cuál es la diferencia entre una etiqueta y una caja de textos? 6. ¿Cuál es el nombre por defecto de un formulario, caja de textos, etiqueta y botón de comandos? 7. ¿Para qué sirve la propiedad Font? 8. ¿Para qué sirve la propiedad Tooltiptext? 9. ¿Cuál es la diferencia entre la propiedad visible y la propiedad Enabled? 10. ¿Cuántas formas de ejecutar una aplicación conoces? 11. ¿Para qué sirve la propiedad Backcolor? 12. ¿Cuántas formas de finalizar una aplicación conoces? 13. ¿Para qué sirve la propiedad Forecolor? 14. Los pasos para desarrollar una aplicación son: 15. ¿Cómo se borra un control del formulario? 16. ¿Cómo se puede asignar un color a un botón de comandos? 17. ¿Qué utilidad tiene la propiedad Tabindex en las cajas de texto? 18. Para escribir instrucciones dentro de un control se debe: 19. ¿Cuál es el evento por defecto de un formulario, etiqueta, caja de texto y de un botón de comandos? 20. ¿Cuándo se ejecutan las instrucciones que se encuentran en el evento Click? ¡CUIDADO! No pase a los siguientes temas sin responder correctamente a esta autoevaluación. G r u p o E d it o r ia l Megabyte 81
  • 42.
    CAPITULO III Nombredel Trabajador David Infante Horas Trabajadas Normales 48 Horas Extras 5 Pago por Hora Normal 10 Pago por Hora Extra 20 Total por Horas Normales 480 Total por Horas Extras 100 Sub Descuento Total a ; Calcular Nuevo □ a v e Incorrecta l'XA Aceptar Cancelar Producto Precio Unitario Cantidad Comprada Subtotal S/. Calce1 Nuf ELEMENTOS D e scuentoS /. | 0 DE LA TOTAL A PAGAR $/. ===> PROGRAMACION Se
  • 43.
    I PROCEDIMIENTOS YFUNCIONES -- --------------------------------------------------------------- ;------------------------------ Un procedimiento es un conjunto de instrucciones que se le da a la computadora para que desarrolle un determinado proceso. A este conjunto de instrucciones se le asigna un nombre para poder llamarlo o ejecutarlo en cualquier momento. Toda aplicación en Visual Basic está basada en procedimientos. Según la forma como empiezan a ejecutarse los procedimientos se dividen en dos grupos: 1. Procedimientos conducidos por eventos. 2. Procedimientos generales. PROCEDIMIENTOS CONDUCIDOS POR EVENTOS Son procedimientos ligados siempre a un control y a un evento determinado y que se ejecutan cuando el control reconoce que a ocurrido dicho evento. También se puede ejecutar cuando es invocado desde cualquier otro procedimiento. Estos tipos de procedimientos se crean automáticamente cuando comenzamos a escribir instrucciones para un determinado control. Por ejemplo el siguiente procedimiento llamado Command l Click, se crea automáticamente cuando hacemos doble click o pulsamos la tecla F7 en el control COMMAND 1 para escribir las instrucciones
  • 44.
    VISUAL BASIC comodebe ser... Las instrucciones que Ud. escriba en este procedim iento llam ado C o m m an d l_ C lick se ejecutan cuando se haga CLICK en el control COMMAND1; es decir cuando ocurra el evento Click en el control Commandl. El nombre del procedimiento depende del nombre que Ud. ha asignado al control en la propiedad ÑAME y del evento elegido. Si Ud., no ha asignado un nombre al control, entonces Visual Basic utiliza el nombre que le asigna a cada control en forma automática. Así como cada control tiene un nombre que en forma automática le asigna Visual Basic, también tiene un evento predeterminado el cual se visualiza cuando empezamos a escribir las instrucciones para el control. Por ejemplo, el evento predeterminado de los botones de comandos (Command) es el evento CLICK y si queremos escribir instrucciones en otro evento, debemos elegirlo de la lista de eventos. Otros ejemplos: Prívate Sub Form_Activate() ^as instrucciones que se escriban en este procedimiento se ejecuta EndSub cuando el formulario es activado Prívate Sub Form Load() Las instrucciones que se escriban en este procedimiento se ejecuta cuando el EndSub formulario es llamado para que quede activado. Prívate Sub Textl_Change() Las instrucciones que se escriban en este procedimiento se ejecuta cuando se modifica EndSub el contenido del control Textl. Prívate Sub Textl_KeyPress(KeyAscii As Integer) EndSub Las instrucciones que Ud. escriba en este procedimiento se ejecutan cuando se presiona alguna tecla (escribe) en el control Textl y en la variable KeyAscii se almacena el valor de la tecla pulsada. Por ejemplo si pulsa la tecla ENTER se almacena el valor 13, ESC almacena el 27, la letra A el valor 65, etc. Esto quiere decir que almacena el valor ASCII. 86 G r u p o E d it o r ia l Megabyte ^ CAPÍTULO III: Elementos de la Programación P R O C E D IM IE N T O S G ENERALES Son los procedimientos que se ejecutan sólo cuando se hace una llamada explícita a dicho procedimiento. Estos tipos de procedimientos no se crean automáticamente, por eso también reciben el nombre de procedimientos o funciones definidos por el usuario. Un procedimiento general puede escribirse como procedimiento SUB o como función FUNCTION. Un procedimiento conducido por un evento siempre es un procedimiento SUB. Según el lugar de la aplicación donde los podemos llamar, los procedimientos generales pueden ser: 1. Procedimientos a nivel de formulario. 2. Procedimientos a nivel de módulo. Procedimientos a Nivel de Formulario. Los procedimientos a nivel de formulario son aquellos que se pueden llamar o ejecutar sólo desde el formulario en el cual han sido creados. Procedimientos a Nivel de Módulo. Los procedimientos a nivel de módulo son procedimientos públicos; es decir, se pueden llamar o ejecutar desde cualquier formulario de la aplicación. Sintaxis para un procedim iento: [Prívate | Public] [Static] Sub nombre [(listaDeArgs)J [instrucciones] [Exit Sub] [instrucciones] End Sub G r u p o E d it o r ia l Megabyte 87 « S i
  • 45.
    VISUAL BASIC comodebe ser. Un procedimiento tiene las siguientes partes: 1. FORM AS DE ACCESO: Prívate Indica que se puede tener acceso al procedimiento sólo desde los procedimientos del formulario donde se ha declarado o creado(Procedimiento a nivel de Formulario). Public Indica que se puede tener acceso al procedimiento desde todos los procedimientos de cualquier formulario que forma parte de la aplicación (procedimiento a nivel de módulo). Statíc Indica que se conservan los valores de las variables locales del procedimiento entre una llamada al procedimiento y otra. El atributo Static no afecta a las variables declaradas fuera de Sub, ni siquiera cuando se usa en el procedimiento. 2. N O M B R E : Nombre del procedimiento que se utiliza para poder llamarlo o ejecutarlo. 3. LISTA DE ARG U M EN TO S (LISTADEARGS): Lista de variables que almacenan los valores que se pasan al procedimiento cuando es llamado. Cuando se pasan varios valores se utilizan variables múltiples y se separan con comas. También se llaman parámetros. 4. IN STR U C C IO N ES Cualquier grupo de instrucciones que se va a ejecutar dentro del cueipo del procedimiento. Las palabras claves E x it S ub producen la salida inm ediata del procedimiento. La ejecución del programa continúa con la instrucción siguiente a la instrucción que ha llamado al procedimiento. Sintaxis pa ra una F unción: [Public|Private][Static]Function nombre [(listaDeArgs)][As tipo] [instrucciones] [nombre = expresión] [Exit Function] (instrucciones] [nombre = expresión] End Function Además de lo que contiene un procedimiento, una Función tiene las siguientes partes: ' 8 8 G r u p o E d it o r ia l M e g a b y t e ^ CAPÍTULO III: Elementos de la Programación 1. T IPO Es opcional e indica el tipo de dato del argumento que se pasa a la función. 2. EX PRESIÓ N Es el valor que retorna la función. Las palabras clave Exit Function producen la salida inmediata de la Función. La ejecución del programa continúa con la instrucción siguiente a la instrucción que ha llamado a la Función. MUY IMPORTANTE * La diferencia principal entre una Función y un Procedimiento es que un procedimiento nunca devuelve un valor mientras que la función si puede devolver un valor y además una función puede usarse en una expresión. * Al conjunto de procedimientos, funciones, declaraciones de variables y constantes se le llama M ÓDULO. Un módulo puede ser: Módulo de formulario, contiene todos los procedimientos a nivel de formulario los cuales se graban en un archivo con la extensión *.Frm. Módulo estándar, contiene todos los procedimientos y declaraciones a nivel de módulo, se graban en un archivo con la extensión *.Bas. PARÁMETROS POR REFERENCIA. Permite que el valor de un parámetro pueda cambiarse en el cuerpo de la función o procedimiento. Para pasar un parámetro por Referencia debe estar sin paréntesis. La palabra ByRef (Opcional), indica que el parámetro se pasa por referencia. ByRef es el modo predeterminado en Visual Basic. PARÁMETROS POR VALOR. Permite que el valor de un parámetro no pueda cambiarse en el cuerpo de la función o procedimiento. Para pasar un parámetro por Valor debe estar entre paréntesis. La palabra By Val (Opcional). Indica que el argumento se pasa por valor. Ejemplo: Raíz (Num), D if En la llamada a la función Raíz, el parámetro Num es pasado como por Valor y el parámetro Dif es pasado por Referencia. l i l i l í G r u p o E d i t o r i a l Megabyte 8 9
  • 46.
    ^ÉÍÍÍÉÉ^ VISUAL BASICcomo debe ser... CREACIÓN DE PROCEDIMIENTOS A NIVEL DE FORMULARIO Existen 2 formas para crear este tipo de procedimientos: Ira . Form a. Active la ventana de código o instrucciones del formulario o de cualquier control haciendo doble click en él o pulsando la tecla F7, luego elija la opción Tools (herramientas) de la Barra de Menú y luego ADD PROCEDURE (Agregar Procedimiento). Se visualiza la siguiente ventana: Agregar procedimiento m Nombre: j | Tipo (* Procedimiento Función Alcance (* Público C Propiedad í~ E vento ; f~ Todas las variables locales son estáticas A ceptar Cancelar- Una vez que Ud. llene los datos de esta ventana con la información correcta del procedimiento que desea crear, haga click en el botón Aceptar para que se muestre la plantilla del procedimiento y empezar a escribir las instrucciones que se deben ejecutar cuando el usuario llame al procedimiento. 2da. Form a. Active la ventana de código o instrucciones del formulario o de cualquier control haciendo doble click en él o pulsando la tecla F7, luego ubique el cursor después de cualquier instrucción EN D SUB y escriba la palabra SUB seguida del nombre del procedimiento que desea crear o la palabra FUNCTION y el nombre de la función y despues pulse la tecla ENTER. G r u p 90 o E d ito r ia l Mega b y te CAPÍTULO III: Elementos de la Programación < ^ ¡ ¡ ¡ || Ejemplo: Para crear un procedimiento llamado cambio, escriba la siguiente instrucción y luego pulse la tecla ENTER. SUB CAMBIO NOTA: Para crear o activar la ventana de declaración de un formulario, haga doble click en cualquier parte libre del formulario o pulse la tecla F7. Luego, de la lista de objetos elija GENERAL y de la lista de eventos DECLARACIONES. LLAMAR A PROCEDIMIENTOS Para llamar o ejecutar procedimientos sólo se necesita escribir el nombre del procedimiento con los argumentos o parámetros si es necesario y opcionalmente puede utilizar la instrucción CALL. La sintaxis para llamar o ejecutar un procedimientos es: [Cali] nombre [listaargumentos] La instrucción CALL es opcional, si Ud. la utiliza para llamar o ejecutar procedimientos que necesitan argumentos o parámetros, estos deben estar entre paréntesis. Por ejemplo la siguiente instrucción llama al procedimiento IMPRIME utilizando la instrucción CALL y le pasa 2 argumentos. Cali imprime("Hola",3) La siguiente instrucción llama al procedimiento IMPRIME sin utilizar la instrucción CALL y le pasa 2 argumentos. Imprime "Hola",3 NOTA: Para pasar una matriz completa a un procedimiento, use el nombre de la matriz seguida de paréntesis vacíos. G r u p o E d it o r ia l Megabyte 91 m m
  • 47.
    o S VISUALBASIC como debe ser... CONSTANTES Es un elemento con un nombre determinado que mantiene un valor constante durante el desarrollo de todo el programa el cual no se puede cambiar. La constantes se definen con la instrucción CONST. Por ejemplo: CONST Saludo = ’’Buenos Dias” Define la constante SALUDO que tendrá el texto Buenos Días durante la ejecución del programa. Esto quiere decir que si se desea utilizar el texto puede utilizar sólo la constante Saludo. Así, la siguiente instrucción muestra el texto Buenos Días en el control Label 1: Label 1 = Saludo La siguiente instrucciones define la constante IGV con el valor 18. Const IGV = 18 Si durante el desarrollo del programa escribimos por ejemplo IGV = 16 para cambiar de valor a la constante IGV, se visualiza un mensaje de error. M icrosoft V isu a l Basic n Error de compilación: Asignación a la constante no permitida Aceptar Ayuda NOTA: La definición de constantes puede empezar con las palabras Public o Private. Para que sean públicas o privadas. Por defecto son Privada. G r u p 92 o E d ito r ia l Megabyte CAPÍTULO III: Elementos de la Programación % VARIABLES Una variable es un elemento con un nombre determinado que contiene un valor en forma temporal hasta que la aplicación finalice. El valor puede variar en cualquier momento de la ejecución de la aplicación. Una variable, según el lugar de la aplicación donde se desea utilizarla puede ser: 1. Variables a nivel de procedim iento. -Si una variable se declara a nivel de procedimiento, significa que conserva su valor (se reconoce) sólo dentro del procedimiento donde ha sido declarado. 2. Variables a nivel de Form ulario. Si una variable se declara a nivel de formulario, significa que conserva su valor (se reconoce) en cualquier procedimiento del formulario donde ha sido declarada. 3. Variables a nivel de M ódulo. Si una variable se declara a nivel de módulo, significa que conserva su valor (se reconoce) en cualquier procedimiento de cualquier formulario de la aplicación. La sintaxis básica para declarar una variable es: Am bito Nombre As Tipo 1) A M B IT O : El ámbito indica en qué lugar de la aplicación desea utilizar la variable y puede ser una de las siguientes palabras claves: Dim, Static, Prívate o Public. Dim : Se puede utilizar a nivel de procedimiento y a nivel de formulario. Si se declara una variable a nivel de procedimiento con la palabra DIM, Visual Basic reinicializa (borra su contenido) la variable cada vez que ejecuta el procedimiento. Static : Se utiliza sólo a nivel de procedimiento. Cuando una variable se declara con la palabra STATIC, Visual Basic no reinicializa la variable cada vez que se ejecuta el procedimiento, sólo lo hace la primera vez. Esto quiere decir que la variable conserva su valor entre una llamada al procedimiento y otra. Prívate: Se utiliza sólo a nivel de módulo e indica que la variable es privada; es decir, sólo va a ser reconocida dentro del módulo donde ha sido declara. Public : Se utiliza sólo a nivel de módulo e indica que la variable es publica; es decir, va a ser reconocida en toda la aplicación. G r u p o E d it o r ia l Megabyte 93 ^ j | ¡ J | |
  • 48.
    é S Bts VISUAL BASIC como debe ser... 2) N O M B R E : Es el nombre que utilizamos para referirnos a la variable en la aplicación. El nombre de una variable tiene que comenzar con una letra y puede tener como máximo 255 caracteres. Los caracteres pueden ser letras, dígitos, el carácter subrayado y los caracteres de declaración del tipo de la variable (%,&,!,#,@ y $). El nombre de una variable no puede ser una palabra reservada porque tienen un significado especial para Visual Basic. 3) T IP O : Es opcional y determina qué clase de valores puede almacenar una variable. Si no indica el tipo no utilice la palabra AS, en este caso la variable se considera de tipo Variant. TIPOS DE VARIABLES TIPO DESCRIPCIÓN CARÁCTER RANGO Byte I Byte 0 a 2 5 5 Boolean Lógico (2 Bytes) T rue o False Integer Entero (2 bytes) % -32768 a 32767 Long Entero Largo (4 bytes) & -2147483648 a 2147483647 Single Real Simple Precisión (4 bytes.) i -3.40E+38 a 3.40E+38 Double Real Doble Precisión (8 bytes) # -1.79D+308 a 1.79D+308 Currency Número con Punto Decimal Fijo (8 bytes) @ -9.22E+14 a 9.22E+14 String Cadena de Caracteres $ (4 b.+ l b./car. hasta 64K.) 0 a 65500 car. Date 8 bytes 01/01/100 a 31/12/9999 Variant es el tipo de datos al que se convierten todas las variables si no se declaran explícitamente de algún tipo. El tipo de datos Variant no tiene carácter de declaración de tipo. Los tipos de datos Byte, Integer, Long, Single, Double y Currency indican que una variable va a almacenar sólo números, pero cada uno de estos tipos tiene sus características. Por ejemplo: Una variable definida de tipo Byte acepta números enteros (sin decimales), pero sólo entre 0 y 255. 94 G r u p o E d it o r ia l Megabyte CAPÍTULO III: Elementos de la Programación Una variable definida de tipo Integer, acepta números enteros comprendidos entre -32768 hasta 32767. Una variable definida de tipo Single, Double y Currency acepta números sin decimales y con decimales. MUY IMPORTANTE: Si a una variable la declaramos de un tipo determinado y le asignamos un valor incorrecto se visualiza un error. Ejemplo N°l: Dim A as Integer A = 50000 Se define la variable A de tipo Integer cuyo valor máximo debe ser 32767, pero le asignamos el valor 50000. En este caso se visualiza un error de overflow (desbordamiento): E rro r '6 ' e n tie m p o d e e je c u c ió n : D e s b o rd a m ie n to j T e r m in a r j 1 D e p u ra r j | A y u d a | Ejem plo N° 2: Dim A as Integer A = "Juan" Se define la variable A de tipo Integer cuyo valor máximo debe ser 32767, pero le asignamos un valor tipo Texto. En este caso se visualiza un error de Type Mismatch (tipo): E r ro r '1 3 ' e n tie m p o d e e je c u c ió n : N o c o in c id e n lo s tip o s D e p u ra r A y u d a G r u p o E d it o r ia l Megabyte 95
  • 49.
    éS K Sk VISUAL BASIC como debe ser.. . < § § ¿CÓMODECLARAR VARIABLES ANIVELDEPROCEDIMIENTO? Las variables a nivel de procedim iento se declaran dentro de cada procedimiento que Ud., crea en su aplicación. Su utilización más común es intervenir en cálculos intermedios. Por ejemplo: Prívate Sub CommandI_Click() Dim NOM As String * 30 Dim E As Integer Static C As Integer Otras instrucciones End Sub ¿CÓMO DECLARAR VARIABLES A NIVEL DE FORMULARIO? Debe activar la ventana de declaración de variables. Para ello se debe hacer doble click en cualquier control o pulsar la tecla <F7>, lueg'o de la lista de controles elegir GENERAL y de la lista de eventos elegir DECLARACIONES. Se puede visualizar ti |(General) j(Declarations) 1"m P ro je c t-! * Ft»m 1 (C ode) -J C lx jl I(General) V j |(Declarations) j r j j ; Jd iSëjj ±r [O ption E x p l i c i t ¿ : s jJ J i T Si la ventana tiene la instrucción OPTION EXPLICIT, significa que se generará un error por cada variable que utilice y no declare: V ariable not Defined (Variable no definida). Si Ud., desea puede borrar la instrucción Option Explicit y también si esta ventana no la tiene, la puede escribir. ¿CÓMO DECLARAR VARIABLES A NIVEL MÓDULO? De la opción Proyecto de la barra de menú elija la opción Adicionar Módulo. ^ P ro y e c lo l - M odule! (Código) H l i i E [ | Este tipo de variables normal­mente se utilizan |(General) jrJ j (Declaraciones) cuando nuestra 1 ^ aplicación tiene varios for­5 mularios. _1_U í j j |¡ |l § ^ 96 G r u p o E d i t o r i a l Megabyte CAPÍTULO III: Elementos de la Programación A PLIC A C IÓ N DESARROLLAD A N° 06 Esta aplicación muestra la diferencia entre una variable declarada con DIM y STATIC dentro de un procedimiento. PASO N° 01: Dibujar los controles. o Ci ■ - lo l *l Increm enta ia variable À y B PASO N° 02: Asignar las propiedades. C3 5 1 - _ l a l x | L a b e ll Labei3 Label2 Label4 ¡! - Com m andl )| CONTROL Labe11 Label2 Label3 Label4 BO R D ER STY LE 0 - None 0 - None 1 - Fixed Single 1 - Fixed Single E T IQ U E T A S (L A B E L ) C A P T IO N A U T O S IZ E Valor de A True Valor de B True En Blanco False En Blanco False BOTONES DE COMANDOS CONTROL CAPTION Coinmandl Incrementa la variable A y B Caption del Formulario: Diferencia entre Dim y Static. PASO N° 03: Escribir las instrucciones. * Sólo se programa en el commandl. Observará que al hacer click en este botón la variable A no se incrementa porque está declarada con DIM, que perm ite reinicializar una variable cada vez que ,v< ejecuta un procedim iento. En el ejem plo, el procedim iento es: COMMAND 1_CLICK(). Private Sub Commandl_Click() Dim A Ai Integer Static B Ai Integer A = A + / B = B + 1 Labe!3 = A Label4 = B End Sub G r u p o E d i t o r i a l Megabyte 97
  • 50.
    Â EJEMPLO DEUNAVARIABLEANIVELDEPROCEDIMIENTO □ S E VISUAL BASIC como debe ser. « .V A R I A B L E S A N IV E L D E P R O C E D IM IE N T O PROCEDIMIENTO "A " PROCEDIMIENTO "B " Dibuje una etiqueta y dos botones de comandos y asígneles su propiedad Caption como se muestra en la aplicación. INSTRUCCION DEL COMMAND1 Prívate Sub Commandl_Click() Dim N As Integer N = 5 INSTRUCCIONES DEL COMMAND2 Prívate Sub Command2_Click() Labell = N End Sub Labell = N N = 10 End Sub Al hacer click en el Commandl (Procedimiento "A"), se visualiza el valor 5, y luego la variable N toma el valor 10, pero al hacer click en el Command2 (Procedimiento "B") se visualiza el error "VARIABLE NO DEFINIDA" o no se muestra nada. Esto depende si existe o no la instrucción Option Explicit. Como puede observar, el valor de la variable N no es reconocida en el segundo procedimiento (Command2) porque fue declarada dentro del procedimiento commandl (Nivel de Procedimiento). EJEMPLO DE UNA VARIABLE ANIVELDE FORMULARIO. Para que la variable N sea reconocida en ambos procedimientos, debe de declararla a Nivel de Form ulario. 1 m P ro ye cto l - Form i (Código) . n l x l | (General) j(Declaraciones) -*■] D im N A s I n t e g e r ~ H ü j U J j Las instrucciones de los botones de comandos serán: Prívate Sub Command] _Clíck() N = 5 Labell = N N = 10 End Sub K A 98 Prívate Sub Command2_Clíck( ) Labell = N End Sub G r u p o E d it o r ia l Megabyte-^ CAPÍTULO III: Elementos de la Programación OPERADORES ARITMETICOS: Suma Resta Multiplicación División División Entera MOD Resto de una División A Exponenciación 0 Orden de Operación Ejemplos: OPERACION 5+13 8 0 -4 7 *6 13/2 13 2 13 MOD 2 4 A3 12+14/2 (12 +14)/2 RESULTADO 18 76 42 6.5 6 1 64 19 13 ORDEN DE EJECUCIÓN DE LOS OPERADORES (Prioridad) Cuando hay varios operadores en una misma expresión se resuelven en un orden predeterminado según la prioridad de los operadores. Así: 1. Exponenciación (A) 2. Negación (-) 3. Multiplicación y división (*, /) 4. División de enteros () 5. Resto de una División (Mod) 6. Suma y Resta (+, -) NOTA: Si los operadores de una expresión tienen la misma prioridad se ejecutan de izquierda a derecha. Los paréntesis cambian el orden de operación porque toda expresión que tenga paréntesis se ejecuta primero y si existen varios paréntesis primero se ejecutan los paréntesis más internos. Por ejemplo, si las notas de un alumno son 12 y 14, la siguiente expresión: 12 + 14/2 dará como promedio 19 y la expresión (12 + 14) / 2 dará como promedio 13. G r u p o E d it o r ia l Megabyte 99
  • 51.
    éÊ Ê Èk' VISUAL BASIC como debe ser... COMENTARIOS Los comentarios son textos que se pueden utilizar para documentar nuestra aplicación perm itiendo de esta m anera ir explicando cómo estamos desarrollando la aplicación y cómo funciona. Este texto explicativo y aclaratorio es ignorado por la computadora cuando nuestra aplicación se ejecuta. Los comentarios se pueden colocar dentro de un programa utilizando la instrucción REM o el Apostrofe ( ‘). La instrucción REM normalmente se utiliza al inicio de una línea y en forma independiente. Por ejemplo: Rem Se limpian las cajas de texto. Textl="" Text2 = "" Text3 = "" Si queremos colocar el comentario en la misma línea de instrucción, se debe separar con dos punto (:). Ejemplo: Textl = "" : Rem Limpia la caja de textos El apostrofe se puede utilizar al inicio de una línea en forma independiente o al final de una línea de instrucción. Por ejemplo: 1. ‘El valor de A se incrementa en 1 A = A + 1 2. A = A + 1 ‘El valor de A se incrementa en 1 NOTA: Cuando se insertan los comentarios se visualizan con un color diferente al de las instrucciones, este color es normalmente el verde. 100 G r u p o E d it o r ia l Megabyte ^ CAPÍTULO III: Elementos de la Programación APLICACIÓN DESARROLLADA N° 07 Ingresar el nombre de un trabajador, las horas normales que ha trabajado, las horas extras, el pago por cada hora normal y extra. Al hacer un Click en el botón Calcular se debe calcular y mostrar el total por las horas normales, el total por las horas extras, el sub total, un descuento del 10% del sub total y el total que se le debe pagar. 1 üi_ PAGOS Nombre del Ttabajadoi David Infante Horas T r abajadas Normales 48 Horas Extras 5 Pago por Hora Normal 10 Pago por Hora Extra 20 Total por Horas Normales GO O Total por Horas Extras I I 00 Sub Total |580 Descuento (10%) |58 T otal a Pagar j522 PASO N° 1: D ib u jar los controles. Form! G r u p o E d i t o r i a l Megabyte Calculai Nuevo Salir I - I □ I *1 L a b e ll ¡T e x tl L a b el2 ( i ext2 Label3 |T e x t3 L abel4 |T ext4 L abel5 |T ext5 LabeIS L a b e ll 1 Label7 L a b e ll 2 LabeIS L a b e ll 3 LabeIS L a b e ll 4 L a b e ll 0 L a b e ll 5 C om m andl C om m and2 C om m and3 101 Wm
  • 52.
    ^ÜÍÉÉÉ> VISUAL BASICcomo debe ser... PASO N° 2: A signar las propiedades a los controles. Asigne la propiedad Caption al formulario, a los botones de comandos y a la etiqueta número 1 hasta la etiqueta número 10 como se muestra en la aplicación a desarrollar. A las cajas de texto y las etiquetas desde la número 11 hasta la número 15 no les borre su contenido por se van a limpiar al ejecutar la aplicación. PASO N° 3: E scrib ir las instrucciones p a ra los controles. Para que al ejecutar la aplicación se limpie el contenido de las cajas de texto y de las etiquetas N° 11 hasta la N° 15 y además se ubique el cursor en la caja de textos N° 1 para empezar a ingresar los datos, se debe programar en el evento ACTIVATE del formulario. Para ello ingrese a la ventana de código o instrucciones haciendo doble click en el formulario o pulse la tecla F7 y de la lista de controles seleccione el control FORM y de la lista de eventos seleccione el evento ACTIVATE. Se visualizará la siguiente ventana: | m Proyectol - Formi (Código) |Form jftctiuate j r j Private S ub Form Activate () Sj| End Sub S_ÜJ Las instrucciones que debe escribir en esta ventana son: Prívate Sub Form_Activate() Textl = "" Text2 = "" Textl = "" Text4 = "" TextS = "" Labelll = Labell2 = "" Labell3 = "" Labell4 = "" Labell5 = "" Textl. SetFocus End Sub 102 G r u p o E d it o r ia l Megabyte <^¡g¡¡ CAPÍTULO III: Elementos de la Programación ^¡¡ IN STR U C C IO N ES DEL BOTÓN C A LCU LA R . Para escribir las instrucciones del botón CALCULAR, debe hacer doble click o pulsar la tecla F7 en dicho botón. Si se encuentra dentro de la ventana de código seleccione de la lista de controles el control COMMAND1 y de la lista de eventos el evento Click. Se visualizará la siguiente ventana: H Práyeclol - Foiml (Código) ^ ó í x ] Commandl — Click - Option Explicit _____ at. Private Sub Coimiandl_Clicli: ( ) I ---- I End Sub ....... » I m <l I i JÜ MUY IMPORTANTE: Si al ingresar a la ventana de código visualiza la instrucciones Option Explicit, significa que debe definir todas las variable que va a utilizar. Si Ud., no desea definir las variables puede borrar la instrucción Option Explicit. Las instrucciones del botón CALCULAR (Commandl) son: Prívate Sub Commandl_Click() Dim HNT, HET, PHN, PHE, THN, THE, ST, DES, TP As Single Const DESCUENTO = 10 HNT = Val(Text2) ‘Horas Normales Trabajadas HET = Val(Text3) ‘Horas Extras Trabajadas PHN = Val(Text4) ‘Pago por Hora Normal PHE = Val(Text5) ‘Pago por Hora Extra THN = HNT * PHN ‘Total por Horas Normales THE = HET * PHE ‘Total por Horas Extras ST = THN + THE ‘Sub Tota! DES = ST * DESCUENTO /1 0 0 ‘Descuento TP = ST - DES ‘Total a Pagar Labelll = THN Labell2 = THE Labell3 = ST Labell4 = DES LabellS = TP End Sub Ü > IÜ Ü ^ G r u p o E d i t o r i a l Megabyte 1 0 3
  • 53.
    #• VISUAL BASICcomo debe ser... NOTA: En esta aplicación se utiliza la función VAL, que permite convertir un valor tipo carácter a un valor tipo numérico. Para realizar operacio­nes aritméticas con datos almacenados en cajas de texto o etiquetas, se recomienda usar la función VAL para convertirlos a numéricos. OTRA FORMA DE PROGRAMAREN EL BOTÓN CALCULAR En el ejemplo anterior se definen y usan variables y constantes para obtener los resultados deseados, pero también se pueden obtener los resultados sin utilizarlas.Por eso dentro del botón CALCULAR (Commandl) también se puede programar lo siguiente: Prívate Sub Commandl_Click() Labelll = VaI(Text2) * Val(Text4) Labell2 = Val(Text3) * Val(Text5) Labell3 = Val( Labelll) + Val(Labell2) Labell4 = Val(Labell3) * 1 0 /1 0 0 LabelI5 = Val(Labell3) - Val(Labell4) End Sub INSTRUCCIONES DEL BOTÓN NUEVO. Cada vez que haga click en el botón NUEVO, se deben limpiar los datos ingresados y los resultados y ubicar el cursor en textl para ingresar los datos de un nuevo trabajador. Como las instrucciones que realizan este proceso se encuentran en el procedimiento Form_Activate ya no es necesario volverlas a escribir en el botón NUEVO, sólo debe llamar al procedimiento desde este botón. La instrucción que debe escribir en el botón NUEVO es: Form Actívate | t í Proyectol - Formi (Código) | _ | n | x | |com m and2 j r J | Click P r i v a t e S ub Command2 C l i c k () F o rm A c t i v a t e (End S ub —1 lililí jf1 ¿ m m G r u p o E d it o r ia l M egabyte^ MUY IMPORTANTE: Se puede desarrollar la aplicación de tal manera que los resultados se visualicen al ingresar los datos sin necesidad de hacer click en el botón CA LCU LAR. Para ello debe llam ar a las instrucciones del botón CALCULAR (procedimiento Command2_Click) desde el evento CHANGE de cada una de las cajas de textos. rm Provecto! - Form! [Código) n | x | Tenti J IChange T .................................... ........zq Private Sub Textl_Change( ) Commandl_C 1 ickj End Sub Private S u b Text2_Change() C ommand1_C1i c k End Sub Private S ub Text3_Change() Command1_Click End S ub Private S ub Text4_Change( ) Command1_C1ick End S ub Private Sub Text5_Change() Command1_Click End Sub De esta manera ya no necesita el botón CALCULAR porque los resultados se visualizan cuando se ingresa o modifica cualquier dato. Ud., puede borrar el botón CALCULAR porque las instrucciones que contiene permanecen en el formulario cuando el botón se borra. G r u p o E d it o r ia l Megabyte 105
  • 54.
    -------------------------------- ^ ^ VISUAL BASIC como debe ser... IF - THEN - ELSE Permite ejecutar una o más instrucciones dependiendo de la respuesta (verdad o Falso) de una condición dada. Su sintaxis es: 1.- If condición Then Instrucción(es) (Se ejecutan cuando es Verdad) Else Instrucción(es) (Se ejecutan cuando es Falso) Endlf 2.- If condición Then Instrucción(es) (Se ejecutan cuando es Verdad) Endlf 3.- If condición Then Instrucción(es) (Se ejecutan cuando es Verdad) Elself condición then Instrucción(es) (Se ejecutan cuando es Verdad) Else Instrucción(es) (Se ejecutan cuando es Falso) End If 4.- If condición Then Instrucción else Instrucción Esta ultima sintaxis se pude utilizar normalmente cuando en cada caso de va a ejecutar sólo una instrucción, si son dos o más instrucciones se deben separar por dos puntos, pero es recomendable utilizar la lera, o 2da. sintaxis en estos casos. 106 G r u p o E d it o r i a l CAPITULO III: Elementos de la Programación En la condición se pueden utilizar los OPERADORES DE RELACIÓN Y LÓGICOS: = Igual > Mayor Que < Menor Que >= Mayor o Igual <= Menor o Igual o Diferente AND Y Lógico OR O Lógico NOT Negación Like Comparar Cadenas Por ejemplo: Se desea mostrar en la etiqueta N° 1 (Labell) el mensaje APROBADO O DESAPROBADO, dependiendo de su promedio almacenado en la variable PROM. La instrucción será: If Prom >= 10.5 Then Label 1 = “APROBADO" Else Labell = “DESAPROBADO” End If La instrucciones anterior también se puede desarrollar de la siguiente manera: If Prom>= 10.5 Then Label 1 =“ APROBADO” Else Label 1=“DES APROBADO” La instrucción If se debe utilizar con Else normalmente cuando sólo existen dos alternativas como por ejemplo para saber si un alumno está aprobado o no, para saber si una persona es mayor de edad o no. Cuando existe sólo una o a partir de tres alternativas es mejor utilizar una instrucción If sin Else para cada alternativa. Por ejemplo: Se ha ingresado en Text3 el turno de un trabajador y de acuerdo al turno se le da un pago que debe visualizarse en Labeló. Mañana (M) ==> 300, Tarde (T) ==> 500 y Noche (N) ==> 700 G r u p o E d it o r ia l Megabyte 107 <lf¡§¡íj§|^
  • 55.
    VISUAL BASIC comodebe ser... Las instrucciones serían: Dim PAGO As Integer I f Text3 = "M" Then PAGO = 300 End I f I f Text3 = "T" Then PAGO = 500 End I f I f Text3 = "N" Then PAGO = 700 End I f Label6 = PAGO Tam bién se puede d esarro llar de la siguiente m anera: Dim PAGO As Integer I f Text3 = "M" Then PAGO = 300 I f Text3 = "T" Then PAGO = 500 I f Text3 = "N" Then PAGO = 700 Labeló = PAGO La sintaxis N” 03 (con Elself) también se puede utilizar en estos casos: Dim PAGO As Integer I f Text3 = "M" Then PAGO = 300 E lself Text3 = "T" Then PAGO = 500 E lself Text3 = "N" Then PAGO = 700 End I f Labeló = PAGO 108 G r u p o E d it o r ia l Megabyte^ CAPITULO III: Elementos de la Programación MSGBOX M uestra una ventana de m ensaje en el centro de la pantalla. Tiene dos sintaxis: 1.- Cuando no se espera la respuesta del usuario: Msgbox “Mensaje”, Valor,’’Título” 2.- Cuando se espera la respuesta del usuario: Varíable^Msgbox (“Mensaje”,Valor,’’Título”) Variable: Almacena un valor tipo entero de acuerdo a la respuesta del usuario. Mensaje: Es el mensaje que se desea mostrar. Valor : Indica qué botones van a acompañar al mensaje. Título : Es el título que desea que tenga la ventana. Valor C onstante Botón que se visualiza 0 vbOKOnly Ok (Aceptar) 1 vbOKCancel Ok y Cancelar 2 vbAbortRetrylgnore Anular,Reintentar e Ignorar 3 vbYesNoCancel Sí, No y Cancelar 4 vbYesNo Sí y No 5 vbRetryCancel Reintentar y Cancelar 16 vbCritical Icono de Error Crítico 32 vbQuestion Icono de Inten-ogación 48 vbExclamation Icono de Exclamación 64 vbínformation Icono de Información 0 vbDefaultButtonl Primer botón por defecto 256 vbDefaultButton2 Segundo botón por defecto 512 vbDefaultButton3 Tercer botón por defecto G r u p o E d it o r i a l Megabyte 109
  • 56.
    VISUAL BASIC cornodebe ser.. . ICONOS QUE SE PUEDEN MOSTRAR Icono de Error Crítico 16 Icono de Interrogación 32 Icono de Exclamación 48 Icono de Información 64 O V NOTA : Para visualizar los botones con los iconos se debe sumar los valores de cada uno de ellos. Por ejemplo para visualizar los botones Sí y No y el icono de interrogación el valor será: 4 + 32 o simplemente 36. También se puede usar las constantes en lugar de los valores. Si queremos que el mensaje ocupe varias líneas, se debe usar Chr(13) al fin a l de cada línea. Valores que reto rn a: Valor C o n sta n te R espuesta del U suí 1 vbOK OK (Aceptar) 2 vbCancel Cancelar 3 vbAbort Anular 4 vbRetry Reintentar 5 vblgnore Ignorar 6 vbYes Si 7 vbNo No G r u p o E d it o r ia l Megabyte O CAPÍTULO III: Elementos de la Programación ^ ¡¡Í^ ||P Ejem plo: 1. Dim R as Integer R=M sgbox(“Está seguro de salir”,3 6 ,”CUIDADO") Muestra la siguiente ventana: 1 Está seguro de salir Sí No Si el usuario hace un click en el botón SI, la variable R toma el valor 6 y si hace un click en el botón NO la variable R toma el valor 7. 2. Dim T as Integer T-M sgB ox("C lave Incorrecta",1 + 16, "Acceso D enegado") Muestra la siguiente ventana: ü l O Clave Incorrecta Aceptar ; Cancelar Si el usuario hace un click en el botón ACEPTAR, la variable T toma el valor 1 y si hace un click en el botón CANCELAR la variable T toma el valor 2. G r u p o E d it o r ia l Megabyte 111
  • 57.
    O B ESb VISUAL BASIC como debe ser... APLICACIÓN DESARROLLADA N° 08 D esarrollar nuevamente la siguiente aplicación (N ° 04) C on las siguientes características: 1. A l ejecutar la a p lic a c ió n el botón Nuevo Alumno debe estar desactivado. Sólo se debe activar cuando com ience a ingresar el nombre del alumno. 2. Cuando el usuario ingrese un campo y pulse E N T E R , el cursor debe pasar autom áticam ente al siguiente campo. 3. A l hacer un c lic k en el botón fin a liz a r se debe m ostrar un mensaje de advertencia. Las instrucciones de este botón se deben ejecutar tam bién cuando el usuario pulse <E S C >. P a r a d e s a r r o lla r la a p lic a c ió n d e b e d ib u ja r to d o s lo s c o n tr o le s y a sig n a rles las m ism a s p ro p ied a d es de la aplica ció n N u 02, p e ro adem ás: CAPÍTULO III: Elementos de la Programación Para desarrollar la característica N° 01 se debe: A ) El co m m an dl (N uevo alum no) debe tener en la propiedad Enabled el va lo r False. B ) Se debe program ar en el evento Change de T e x tl: I f Trim(text 1 )=’” ’ Then Command 1 ,enabled=False Else Commandl.enabled= True E n d lf NOTA: 1. C om o p u e d e observar, p a ra referirse a la p r o p ie d a d de un control dentro de un p ro g ra m a se debe resp eta r la sig u ien te sintaxis: Nombre del Control.Propiedad = Valor 2. La fu n c ió n Trim quita los espacios en blanco que se encuentran a la d erech a de una caja d e texto s o d e una cadena. 3. I f T rim (te x tl) = ” ” Then.- P reguntar si una caja de textos está va ­cía (entre las co m illa s no d ebe h a b e r esp a cio s en blanco). Si la caja de texto s está vacía el botón N u evo A lu m n o se desa ctiva y en caso c o n tra rio (si hay a lg o escrito ) se activa. Para desarrollar la característica N°02 de esta aplicación se debe: A ) Program ar en el evento Keypress de cada una de las cajas de texto. Por ejem plo haga doble C lic k en T e x tl y de la lista de eventos elija el evento Keypress. Visualizará: Prívate Sub Iext 1 KeyPress(KeyAscii As Integer) End Sub Entonces se debe program ar lo siguiente: Prívate Sub Textl_K eyP ress(K eyA scii A s Integer) Ifke ya sc ii = 13 then Text2.set focus End If E nd Sub G r u p o E d i t o r i a l Megabyte 113
  • 58.
    L a variableKeyAscii almacena el va lo r de la tecla que se ha pulsado. E jem plo: E N T E R = 13, ESC = 27, etc. Si el usuario ha pulsado la tecla E N T E R (13) el cursor pasa en form a autom ática a la segunda caja de Texto. En las siguientes cajas de texto tam bién se tiene que program ar casi lo mismo: Prívate Sub Text2_KeyPress( KeyAscii As Integer) Ifkeyascii = 13 then Text3.setfocus End If End Sub Prívate Sub Text3_KeyPress(KeyAscii As Integer) Ifkeyascii = 13 then Text4.setfocus End I f End Sub Prívate Sub Text4_KeyPress(KeyAscii As Integer) Ifkeyascii = 13 then Text5.setfocus End I f End Sub Prívate Sub Text5_KeyPress(KeyAscii As Integer) Ifkeyascii = 1 3 then Commandl.setfocus E n d lf End Sub C uando el usuario term ine de ingresar los datos (pulse E N T E R en Text5), el cursor se ubica en el botón N uevo A lu m n o. Para desarrollar la característica N ° 03 de esta aplicación se debe program ar en el evento C lic k del C om m and2 (F in alizar) lo siguiente: Prívate Sub Command2_Click() R = MsgBox( “ESTÁ SEGURO DE SALIR ” , 36, “CUIDADO ” ) IfR = 6 Then End End I f End Sub ¿m m . 114 G r u p o E d i t o r i a l M egab yte^ CAPÍTULO III: Elementos de la Programación NOTA: S i a l e je c u ta r la a p lic a c ió n se v is u a liz a u n e r r o r in d ic a n d o q u e la variable R no está definida, significa que existe la instrucción OPTION E X P L IC IT en la v e n ta n a d e d e cla ra ció n d e variables, en to n c e s debe b o r r a r e sta in stru c c ió n o d e c la r a r la v a r ia b le R d e tip o In te g e r a l inicio d e las instrucciones: Dim R as Integer La program ación del evento C lic k del C om m and 1 (N uevo A lu m n os) es: Prívate Sub Commandl_Click() Textl = Text2 = Text3 = Text4 = “ ” Text5 = Textl. SetFocus Commandl .Enabled = False End Sub A PL IC A C IÓ N PROPUESTA N 2 0 7 : D esarrolle la siguiente aplicación de la m ejor manera posible. «. Datos del Alum no Alumno Especialidad Ciclo Turno Aula Otro Alumno Salir IChiclayo, 1G de Agosto de 1998 IMPORTANTE: Ud. ta m b ié n d e b e fo r m u la r s e n u e v a s a p lic a c io n e s o in te r c a m b ia r a p lica cio n es p ro p u e sta s entre su s co m p a ñ ero s y d esa rro lla rla s con la fin a lid a d d e fo r ta le c e r su s co n o cim ien to s. G r u p o E d i t o r i a l Megabyte 115
  • 59.
    CONSISTENCIA DE DATOS La consistencia de datos consiste en controlar que el usuario ingreso sólo los datos correctos que necesita el programa, por ejem plo, si se trata de ingresar la nota de un alum no se debe controlar que sólo se ingrese un núm ero entre 0 y 20. La siguiente a p lica ció n m uestra un e je m p lo de consistencia de datos. APLICACIÓN DESARROLLADA N° 09 E l siguiente program a perm ite ingresar los apellidos y nombre, fecha de ingreso, turno y prom edio de un alum no. Este program a debe tener las siguientes características: 1. El p rim e r carácter de cada nom bre o a pe llido debe convertirse en mayúscula y el resto en m inúsculas. 2. Se debe v e rific a r que la fecha ingresada este correcta. 3. En el turno sólo se debe aceptar las letras M , T y N. 4. E l prom edio debe ser un núm ero entre 0 y 20. 5. Los botones N uevo y S alir deben permanecer desactivados hasta que se ingresen todos los datos correctos. 1 I N G R E S O D E D A T O S B H æ M - I n l x l 1 .apellidos y Nombres ¡¡ Fecha de Ingreso ----- Turno [M -T-N ] |‘ .... N u e v o Prom edio [U a 20] S_alir PASO N° 1 D IBU JAR LOS CONTROLES I ¡ü» Fo rm i ■ ■ ■ ■ ■ - Ini La bell |Text1 Label2 |Text2 — LabeIS 1 Text3 Com m andl LabeW j T ext4 Command2 116 G r u p o E d it o r ia l O CAPÍTULO III: Elementos de la Programación PASO N° 2 ESCRIBIR LAS INSTRUCCIONES Prim ero debe de escribir las siguientes funciones: Función Mayuscula Que ind ica si la letra ingresada está en mayúscula. Función M inuscula Que indica si la letra ingresada está en m inúscula. Función Numero Indica si se ha ingresado un número. Función Especial Indica si a ingresado una vocal con tilde, la letra ñ o Ñ o pulsó E N T E R , la Barra Espaciadora o de Retroceso (BackSpace). Las funciones reciben en la variable V el va lo r de la tecla que el usuario a pulsado desde la variable K E Y A S C II del procedim iento KeyPress de la Cajas de Textos y devuelven un valor verdadero (T R U E ) o falso (FA LS E). L o valores con sus respectivos caracteres son: A = 65 a = 97 á = 255 0 = 48 B = 66 b = 98 é = 233 1 = 4 9 C = 67 c = 99 f = 237 2 = 50 ó = 243 ú = 250 ñ = 241 Z = 90Z z = 122 Ñ = 209 9 = 57 La tecla E N T E R tiene el valor 13. La tecla de Retroceso (B A C K S P A C E ) tiene el valor 8. La tecla de Escape (ESC) tiene el valor 27. La Barra Espaciadora tiene el va lo r 32. Function M ayuscula(v) F unction M inuscula(v) l f (v> —65 A n d v<=90) Then V (v> = 97 A n d v< ~ 1 2 2 ) M ayuscula = True Tlien p¡se ' M inuscula = True M ayuscula = False Else £nc¡¡f Minuscula = False E nd Function E nd If E nd Function G r u p o E d it o r i a l Megabyte 117 « X
  • 60.
    ^ Íliy¡|> VISUALBASIC como debe ser... Function numero(v) I fv < 48 Or v > 57 Then numero = False Else numero = True End I f End Function Function Especial(v) I f v - 13 Or v -3 2 Or v=8 Or v=225 Or v=233 Or v=237 Or v=243 Or v=250 Or v=241 Or v = 209 Then Especial = True Else Especial - False End I f End Function Instrucciones de la Función INGRESADO: Verifican si todos los datos han sido ingresados correctamente para poder activar o no los botones Nuevo y Salir. Function ingresados() IfTrim (Textl) <> ""A nd lsDate(Text2) A nd Trim(Text3) <> "" A nd Trim(Text4) o "" Then Command 1 .Enabled = True Command2. Enabled = True Else Command ¡.Enabled = False Command2. Enabled = False E n d ¡ f End Function Instrucciones del Procedim iento F o rm _A ctiva te: Para que al ejecutar el program a se lim p ie el contenido de las cajas de texto, se desactiven los botones de comandos N uevo y S a lir y el cursor se ubique en te x tl para empezar a ingresar los datos. Private Sub Form_Activate() Text¡ - "" Text2 = "" Text 3 - "" Text4 = "" Command 1 .Enabled = False Command2. Enabled - False Textl. Set Focus End Sub l i l i l í ! ^ G r u p o E d i t o r i a l Megabyte CAPÍTULO III: Elementos de la Programación Instrucciones del Procedim iento T extl_K eypress: Verifican que los apellidos y nombres se ingresen correctam ente y que se convierte la prim era letra a m ayúscula y el resto a m inúscula. Private Sub Textl_KeyPress(KeyAscii As Integer) Static anteriorespacio As Boolean ¡f KeyAscii = 13 Then Text2.SetFocus End I f I f KeyAscii = 32 Then anteriorespacio = True Else I f May usculaf KeyAscii) Or Minuscula( KeyAscii) Or Especial(KeyAscii) Then IfTrim (Textl) = "" Or anteriorespacio Then Rem Convierte a Mayuscula. KeyAscii = Asc(UCase(Chr( KeyAscii))) Else Rem Convierte a Minuscula KeyAscii = Asc(LCase(Chr( KeyAscii))) End I f anteriorespacio = False ElseM sgBox "Debe ingresar sólo letras", 16, "Cuidado" KeyAscii = 0 ‘Ignora el carácter digitado Commandl .Enabled = False Command2. Enabled = False End I f End I f End Sub Instrucciones del Procedim iento Text2_LosFocus: V erifican que la fecha ingresada esté correcta. Esto ocurre en el m om ento que ubica el cursor en otra caja de texto u otro control. Prívate Sub Text2_LostFocus() I f lsDate(Text2) Tiren ingresados ElseM sgBox "Debe ingresar una fecha correcta", 16, "Cuidado" Text2.SelStart = 0 Text2.SelLength - Len(Text2) Text2 = Text2.Se/Text Text2.SetFocus End I f End Sub l i l i l í ^ G r u p o E d i t o r i a l Megabyte 119
  • 61.
    |S ¡ ¡Í |> VISUAL BASIC como debe ser... Instrucciones del Procedimiento Text2_KeyPress: Ubican el cursor en Text3 cuando pulse la tecla Enter siempre y cuando la fecha ingresada esté correcta. Prívate Sub Text2_KeyPress(KeyAscii As Integer) IfK eyA scii = 13 Then Text3. Set Focus End I f End Sub Instrucciones del Procedimiento Text3_Keypress: Verifican que en el tumo sólo se ingresen las letras M, T o N y si se ingresan en minúscula las convierte en mayúscula. Prívate Sub Text3_KeyPress(KeyAscii As Integer) Dim Letra A i String * 1 IfK eyA scii = 13 Then Text4.SetFocus Else Letra = UCase(Chr( KeyAscii)) lfLetra= "M" Or L etra -"T " Or Letra= "N" Or KeyAscii=8 Then Rem Convierte la letra ingresada a Mayúsculas. KeyAscii = Asc( UCasef Chr(KeyAscii))) Else M sgBox "Debe ingresar sólo las letras M ,T o N", 16, "Error" Rem Ignora el caracter ingresado. KeyAscii = 0 Command 1 .Enabled = False Command!. Enabled = False End I f End I f E nd Sub Instruccion e s del P ro ced im ien to T ext4_K eypress: C on trola n que en el p ro m e dio sólo se ingresen números. Prívate Sub Text4_KeyPress(KeyAscii As Integer) I f numerof KeyAscii) Or KeyAscii = 8 Or KeyAscii = 13 Then ingresados Else M sgBox "Debe ingresar sólo números", 64, "Cuidado" KeyAscii - 0 Command! .Enabled = False Command!.Enabled = False End I f End Sub EXPLICACION BREVE DE LAS FUNCIONES UTILIZADAS (Ver Pgs. 116,122 y 130): CH R : Convierte un valor ASCII a su respectivo carácter. UCASE: Convierte un texto a mayúscula. LCASE: Convierte un texto a minúscula. TRIM : Quita los espacios en blanco de la derecha de un texto. ^ |¡¡¡¡¡f^ 120 G r u p o E d i t o r i a l Megabyte <111111 CAPÍTULO III: Elementos de la Programación Instrucciones del Procedim iento Text4_Change: V erifican que el prom edio ingresado se encuentre entre 0 y 20. Prívate Sub Text4_Change() l f Val(Text4) < 0 Or Val(Text4) > 20 Then M sgBox "El promedio debe estar entre 0 y 20", 16, "Error" Text4.SelStart = 0 Text4.SelLength = Len(Text4) Text4 = Text4.SelText Text4.SetFocus Commandl.Enabled - False Command2.Enabled = False Else ingresados E n d lf End Sub La instrucción de los siguientes procedim ientos llam an al procedim iento IN G R E S A D O S cada vez que se m o d ifica algún dato para v e rific a r si todos los datos han sido ingresado correctam ente para poder activar o no los botones N uevo y Salir. Prívate Sub Textl_Change() ingresados End Sub Prívate Sub Text3_Change() ingresados End Sub Instrucción de botón N uevo. Llam a al procedim iento F o rm _A ctiva te para empezar a ingresar los datos de un nuevo alum no. Prívate Sub Commandl_Click() Form_Activate End Sub Instrucciones del p rocedim iento F orm _U n loa d: Piden una respuesta de co n firm a ción para fin a liz a r el program a. Prívate Sub Form_Unload(Cancel As Integer) Dim resp A í Integer resp = MsgBox("Está seguro de salir", 36, "Cuidado") I f resp = 7 Then Rem Respondió SI Cancel = True End I f End Sub ¡ § j | f | j | ^ G r u p o E d it o r i a l Megabyte 121
  • 62.
    é S /Sk í VISUAL BASIC como debe ser. . . .= < 3 § INPUTBOX M uestra una caja con un mensaje y perm ite además que el usuario pueda ingresar un dato el cual se considera de tipo String. Su sintaxis es: Variable=InputBox(mensaje,título, valor pred, co lu m n a jila ) Variable. Es la variable que almacena el va lo r que se ingresa en la caja. M ensaje. Es el mensaje que se desea m ostrar cuando se pida el dato a ingresar. Título. Es el títu lo de la caja. Valor predeterminado Es el va lo r que se m uestra en fo rm a autom ática para ser ingresado. Columna Es un va lo r que ind ica la posición h orizontal del fo rm u la rio donde se desea que se muestre la caja. Fila Es un valor que indica la posición vertical del fo rm u la rio donde se desea que se muestre la caja. Por ejem plo, la siguiente instrucción: P = IN P U T B O X ("IN G R E S E E L P R E C IO D E V E N T A ","V E N T A D E D O L A R E S ",3 .35 ,2 00 0,10 00 ) Perm ite ingresar el precio de venta del dólar, m ostrando en form a automática el precio de 3.35 para cada dólar en la posición horizontal 2000 y vertical 1000. M uestra la siguiente caja de ingreso: IV E N TA DE D O LAR ES E3 IN G R E S E E L P R E C ID D E V E N T A A c e p ta r C a n c e la r | EJES 122 G r u p o E d i t o r i a l Megabyte CAPÍTULO III: Elementos de la Programación ^¡¡111^ NOTA: La variable y el mensaje es lo único o b lig a to rio que se debe u tiliz a r en la funció n Inputbox. Por ejem plo, la instrucción: P=InputBox("INGRESE EL PRECIO DE VENTA") M uestra la siguiente caja de ingreso: Proyecto! E IN G R E S E E L PRECIO D E V E N T A C ancelar Si no desea u tiliza r alguno de los otros parámetros interm edios, debe u tiliz a r siem pre las comas. Por ejem plo, en la siguiente instrucción no se indica el precio que debe salir en fo rm a automática. P = IN P U T B O X (''IN G R E S E E L P R E C IO D E V E N T A ","V E N T A D E D O L A R E S " , ,2 0 0 0 ,1 0 0 0 ) M uestra la siguiente caja de ingreso: IN G R E S E E L P R E C IO D E V E N T A Aceptar | C a n ce la r VENTA DE DOLARES Si no desea u tiliz a r los ú ltim o s parámetros, no es necesario que u tilic e las comas. Por ejem plo, en la siguiente instrucción no se indica el precio que debe salir en form a autom ática ni la ubicación de la caja en el fo rm u la rio . G r u p o E d i t o r i a l Megabyte .23
  • 63.
    P=INPUTBOX("INGRESE EL PRECIODE VENTA","VENTA DE DOLARES") M uestra la m ism a caja de ingreso anterior en el centro de la pantalla, p or­que no se ind icó la posición: Si desea escribir el mensaje en varias líneas, u tilic e C hr(13) (R etorno de C arro) o C h r(lO ) (Avance de línea) o las dos juntas al fin a l de cada línea. Por ejem plo, en la siguiente instrucción se muestra el mensaje “ ingrese el precio de venta” acompañado de la fecha y hora actual (escríbalo es una sola línea). P=InputBox("INGRESE EL PRECIO DE VENTA"+Chr(13)+" AL ■ + Str(Now),"VENTA DE DOLARES") S ^ Ü Í l> VISUAL BASIC como debe ser... VENTA DE DOLARES INGRESE EL PRECIO DE VENTA AL 29/04/99 6:49:00 PM Aceptai NOTA: Cancela La funció n N O W , perm ite obtener la fecha y hora actual y la fu n ció n STR, convierte un dato a tip o carácter. 1 2 4 G r u p o E d i t o r i a l Megabyte <á l p l | CAPÍTULO III: Elementos de la Programación CONTADORES Y ACUMULADORES Un contador es una variable num érica que perm ite contar algún evento que ocurre durante la ejecución de un program a. Su sintaxis es: VARIABLE = VARIABLE + IN C REM EN TO . E l increm ento norm alm ente es uno. Por ejem plo: A = A + 1. Cada vez que la computadora ejecuta esta instrucción, el valor de la variable A se increm enta en 1. U n acumulador llam ado tam bién sumador es una variable que perm ite ir almacenando el contenido que va tom ando otra variable. Su sintaxis es: VARIABLE1 = VARIABLE1 + VARIABLE2 E jem plo: R = R + F. C ada vez que la c o m p u ta d o ra ejecu ta esta in stru cció n en la variable R a cum ula el valor de la variable F. L a v a ria b le ta m b ié n p u e d e s e r un c o n tro l co m o u n a c a ja d e textos, e tiq u e ta , etc. E jem plo: L a b el5 = Val(Label5) + Val(Text3) C ada vez que se ejecu ta esta in stru cció n en L a b elS a cu m u la el valor d e Text3. La siguiente aplicación muestra un ejem plo de contadores y acumuladores. APLICACION DESARROLLADA N° 10 Esta aplicación cuenta el núm ero de depósitos y retiros realizados por un cliente, además almacena el total de las m ontos tanto de retiros com o de depósitos efectuados incluyendo el saldo actual I «*.. B a n c o " E l A m i g o " M B - i n i R i i C lie n te jT it o R a m ire z V á s q u e z O k 1 M o n t o d e M o v im ie n to 15 0 D e p ó s it o j R e tiro _ l C a n tid a d T o ta l D e p ó s it o |2 |1 3 5 0 1 i N u e v o C lie n t e lj R e tir o h 150 S a lir S A L D O A C T U A L |1 300 G r u p o E d i t o r i a l Megabyte 125
  • 64.
    i ® !» VISUAL BASIC como debe ser. PASO N° 1: Dibujar los controles. L a b e ll |T e x t1 L a b e l2 j f e x f2 C o m m a n d 2 j C o m rn a n d 3 L a b e l3 L a b e l4 L a b e l5 L a b e l7 L a b e l9 L a b e l6 L a b e (8 L a b e ll 0 L a b e ll 1 L a b e ll 2 C o rn m a n d 4 C o m m a n d 5 <i> PASO N° 2: Asignar las propiedades. Asigne la propiedad Caption al formulario, etiquetas y botones de comandos como se muestra en la aplicación planteada. PASO N° 3: Escribir las instrucciones para los controles. DECLARAR LAS VARIABLES A N IV E L DE FO R M U LAR IO EN: General Declaraciones. Dim td, cd, tr, cr, saldo As Integer INSTRUCCIONES DELPROCEDIM IENTO FORM _ACIW ATE. Permiten que al ejecutar la aplicación se limpien las cajas de texto y las etiquetas, además muestran el botón O K y desactivan los botones DEPOSITO y RETIRO y no se permite el ingreso del monto. Prívate Sub Form_Activate() Textl = Texl2 = Label7 = Label8 = Label9 = LabelJO = "" Labell2 = "" Com mandl .Visible = True Command2. Enabled = False Commands. Enabled = False Text I.Locked - False Text2.Locked = True Textl.SetFocus End Sub G r u p o E d i t o r i a l M egabyte^ CAPITULO III: Elementos de la Programación INSTRUCCIONES D EL BOTÓN OK. Private Sub Commandl_Click() Textl.Locked = True Text2.Locked = False Commandl.Visible = False Command2.Enabled = True Command3.Enabled = True Rem La siguiente instrucción debe ir en una sola línea. saldo=Val (InputBox ("Monto de Apertura "+Chr (13) +Chr(13) +" La cuenta se apertura con cualquier monto ", "Nueva de Cuenta", 350)) Labell2 = saldo td = saldo cd = 1 Label7 = cd Label9 = td Text2.SetFocus End Sub INSTRUCCIONES D E L BOTÓN DEPÓSITO. Priva te Sub Command2_Click() Dim deposito As Integer deposito = Val(Text2) td = td + deposito 'Total de depósitos cd = cd + 1 'Cantidad de depósitos Label7 = cd Label9 = td saldo = Val(Labell2) Labell2 = saldo + deposito End Sub INSTRUCCIONES D E L BOTÓN RETIRO. Private Sub Command3_Click() Dim retiro As Integer retiro = Val(Text2) saldo = Val(Labell2) If saldo < retiro Then MsgBox "La cantidad que desea retirar excede su saldo actual", 64, "Disculpe" Text2 = "" Text2.SetFocus El se tr = tr + retiro 'Total de Retiros cr = cr + 1 'Cantidad de Retiros Label8 = cr Label10 = tr Label12 = saldo - retiro End If End Sub G r u p o E d i t o r i a l Megabyte 1 2 7
  • 65.
    INSTRUCCIONES D ELBOTÓN NUEVO C LIE N T E . Llama al procedimiento Form_Activate y reinicializa las variables con cero (0). P r í v a t e S u b C o m m a n d 4 _ C l i c k () F o r m _ A c t i v a t e t d = 0 ' T o t a l D e p ó s i t o s c d = 0 ' C a n t i d a d d e D e p ó s i t o s t r = 0 ' T o t a l d e R e t i r o s c r = 0 ' C a n t i d a d d e R e t i r o s E n d S u b Este program a tam bién se puede desarrollar sin usar variables. INSTRUCCIONES D E L BOTÓN OK. Private Sub Commandl_Click() Textl.Locked = True Text2.Locked = False Commandl.Visible = False Command2.Enabled = True Command3.Enabled = True Rem La siguiente instrucción debe ir en una sola línea. Label12=InputBox("Monto de Apertura "+Chr(13)+Chr(13) +" La cuenta se apertura con cualquier monto ", "Nueva de Cuenta ", 350) Label 7 = 1 Label 9 = Label12 Text2.SetFocus End Sub INSTRUCCIONES D E L BOTÓN DEPÓSITO. Prívate Sub Command2_Click() Label7 = Val(Label7) + 1 Label9 = Val(Label9) + Val(Text2) Label12 = Val(Labell2) + Val(Text2) End Sub CAPÍTULO III: Elementos de la Programación ^ INSTRUCCIONES D EL BOTÓN RETIRO. Prívate Sub Command.3_Click() lfV al(Labell2) < Val(Text2) Then MsgBox "La cantidad que desea retirar excede su saldo actual", 64, "Disculpe" Text2 = "" Text2.SetFocus Else Label8 = Val(Label8) + 1 Label 10 = Val(LabellO) + Val(Text2) Label 12 = Val(Labell2) - Val(Text2) End I f End Sub INSTRUCCIONES D EL BOTÓN NUEVO CLIENTE. Private Sub Command4_Click() Forrn_Activate End Sub INSTRUCCIONES D I I J ’ROCI.DIM IKNTO FO R M AC TIVATE. Private Sub Form_Activate() Textl = Text2 = "" Label7 = "" Label8 = Label9 = "" LabellO = "" Labell2 = "" Commandl .Visible = True Command2.Enabled = False Command3.Enabled = False Textl.Locked = False Text2.Locked = True Textl.SetFocus End Sub G r u p o E d i t o r i a l Megabyte 129
  • 66.
    A * VISUALBASIC como debe ser... DESARROLLAR LAS SIGUIENTES APLICACIONES: N 04: Ingresar el nom bre del producto, precio anterior y precio actual, luego calcular el alza en soles y el alza en porcentaje. NOTA: E l alza en porcentaje es igual al alza en Soles p or 100 / Precio A nterior. n - I n i x | Producto f............. Precio Anterior 1..................... Precio Actual 1........... ... Alza en Soles r............ Alza en Porcentaje r ~ ....... N uevo Producto Calcular Salir I N 05: Ingresar el nom bre del profesor, el núm ero de horas normales que ha trabajado y el núm ero de horas extras, luego se debe calcular el total que se le debe pagar p o r el N ° de horas norm ales, el total p or horas extras y el total a pagar. Si ha trabajo más de 48 horas su pago p or hora es de S/. 8.00 soles y SI. 7.00 en caso contrario. Por hora extra S/. 9.50. Nombre del Profesor Horas Trabajadas Horas Extras Pago por Hora Total por Hs. Normales Total por Hs.Extras T o t a l a P a g a r = = = > __________ Calcular Otro Salir P rogra m a d orJu a n J osé Castañeda León G r u p o E d i t o r i a l Megahyte<^ ||| § | CAPÍTULO III: Elementos de la Programación IIF Es una fu nció n que devuelve uno de dos valores dados dependiendo de una condición. Su sintaxis es: VARIABLE = IIF (CONDICION, VALOR 1, VALOR2) Si el resultado de la condición es verdad (si), la variable tom a el V A L O R 1 y si el resultado de la condición es falso (no), la variable tom a el V A LO R 2 . Tam bién se puede u tiliz a r un control com o una caja de textos o etiqueta para almacenar cualquiera de los valores. Si los valores son de tipo carácter deben ir entre com illas. Por ejem plo: En la siguiente instrucción, si el va lo r de la variable E D A D es m ayor o igual a 18, se almacena en la variable OBS el mensaje M A Y O R DE E D A D , y si el va lo r de la variable E D A D es m enor que 18 se almacena en la variable OBS el mensaje M E N O R D E E D A D . OBS = IIf(EDAD >= 18, "MAYOR DE EDAD", "MENOR DE EDAD") Otro ejemplo: I ,a siguiente instrucción: If pro >= 10.5 Then Label8 = "Aprobado" Else Label8 = "Desaprobado" End I f También se puede escribir de la siguiente manera: I ,abel8 = IIF(pro >= 10.5,’’Aprobado” ,’’Desaprobado” ) G r u p o E d i t o r i a l Megabyte » , w m
  • 67.
    iÉ iÉ jÉÉ ^ VISUAL BASIC como debe ser.. . < 5 ¡§ SELECT - CASE Perm ite ejecutar una o más instrucciones dependiendo del va lo r de una variable, de una expresión. Puede reemplazar a varias instrucciones IF-THEN. Su sintaxis es: Select Case VARIABLE O EXPRESIÓN Case CASO N° 1 Instrucción(es) Case CASO N°2 Instrucción(es) Case CASO N°3 Instrucción(es) Case C AS O N °4 Instrucción(es) Case CASO n Instrucción(es) Case Else Instrucción(es) End Select NOTA: Case Else e s o p c io n a l y las in stru c c io n e s qu e c o n tie n e se ejecu ta n c u a n d o n o se c u m p le n in g u n o de lo s casos. S i s e d e se a e s c r ib ir in s tr u c c io n e s en la s m ism a lín e a d e l C ase, se d eb en sep a ra r p o r d o s p u n to (:). U sando d o s p u n to s se p u e d e n escrib ir d o s o m á s in stru ccio n es en una so la línea. Los casos pueden escribirse de la siguiente manera: Case 1 Case 2 Case 1 to 10 Case 10 to 20 Case 1,2,3 Case 4,5,6 Case Is >40 Case Is <20 § j ^ 132 G r u p o E d i t o r i a l Megabyte1 <? CAPITULO III: Elementos de la Programación APLICACIÓN DESARROLLADA N° 11 f=i L’i i : i f . i «i a í:iíT!TTT37íT! WÊSÊÊÉÊÊIM - In | x | Producto Precio Unitario Cantidad Comprada I Calcular Subtotal S/. 0 Nuevo Descuento X 0 .................. «i;:!. 1 Salir Descuento S/. 0 T O T A L A P A G A R S/. ===> 1 0 CARACTERÍSTICAS: Se debe ingresar el nom bre de un producto, su precio u n ita rio y la canti­dad comprada de dicho producto, luego se debe calcular y visua liza r el subtotal, el descuento en porcentaje, el descuento en soles y el total a pagar, lil descuento en porcentaje se depende del subtotal, de acuerdo a la siguien­te tabla: SUBTOTAL DESCUENTO % 100 ó 101 2% de 101.1 a 200 4% de 200.1 a 500 6% a partir de 500 10% NOTA: lista aplicación m u estra un ejem plo del uso de S E L E C T C A S E , adem ás u tiliz a la p r o p ie d a d Ñ A M E d e a lg u n o s c o n tr o le s p a r a p o d e r m a n e ja r lo s y la f u n c i ó n F O R M A T p a r a a s ig n a r un f o r m a t o d e visu a liza ció n a los datos. G r u p o E d i t o r i a l Megabyte 133
  • 68.
    VISUAL BASIC comodebe ser... D E S A R R O L L O D E L A A P L IC A C IÓ N ° 11 P A SO N ° 01: D ib u ja r los controles. - î n l x l La bell ||T extl Label2 |Text2 Label3 | t ext3 Commaridl Label4 Label8 Command2 Label5 Label9 Command3 LabelG La b e ll 0 La bell 1 Label7 P A S O N " 02: A sig na r las propiedades. E T IQ U E T A S (L A B E L ) CONTROL NAME ALIGNMENT CAPTION BORDERSTYLE Labell Labell 0 - Left Producto 0 - None Labe12 Label2 0 - Left Precio Uni. 0 - None Label3 Label3 0 - Left Cantidad Com. 0 - None Labe14 Label4 0 - Left Subtotal 0 - None Label5 Label5 0 - Left Descuento % 0 - None Label6 Label6 0 - Left Descuento S/. 0 - None Labe17 Label7 0 - Left TOTAL A PAGAR 0 - None Labe18 SUBTOTAL 1 - Right 0 1 - Fixed S Label9 DESCPOR 1 - Right 0 1 - Fixed S. LabellO DESCSOL 1 - Right 0 1 - Fixed S. Label11 PAGO 1 - Right 0 1 - Fixed s, C A JA S D E T E X T O S CONTROL NAME TEXT Textl NOMBPRO En Blanco Text2 PRECIO En Blanco Text3 CANTIDAD En Blanco BOTONES DE COMANDOS CONTROL CAPTION Tooltiptext Coinmandl &Calcular Muestra los totales Command2 &Nuevo Para ingresar otro producto Command3 ScSalir Finaliza la aplicación E l formulario debe tener en C aption: V E N T A D E P R O D U C TO S. P A SO N ° 03: E scrib ir las instrucciones. IN S T R U C C IO N E S D E L C O M M A N D 1 , donde se u tiliz a la propiedad Ñ A M E asignada a las cajas de texto y algunas etiquetas. Private Sub Commandl_Click() Dim ST As Single ST = Val(PRECIO) * Val(CANTIDAD) SUBTOTAL = ST Select Case ST Case 100, 101 DESCPOR = 2 Case 101.1 To 200 DESCPOR = 4 Case 200.1 To 500 DESCPOR = 6 Case Is > 500 DESCPOR = 1 0 Case El se DESCPOR = 0 End Select DESCSOL = ST * Val(DESCPOR) / 100 'El Total a Pagar se visualiza con 2 decimales PAGO = Format(ST - Val(DESCSOL) , "###, ##0.00") End Sub INSTRUCCIONES DEL COMMAND2 (Nuevo). Prívate Sub Command2__Click () NOMBPRO = "" PRECIO = "" CANTIDAD = "" SUBTOTAL = 0 DESCPOR = 0 DESCSOL = 0 PAGO = 0 NOMBPRO.SetFocus End Sub sHHIb G r u p o E d i t o r i a l Megabyte 135 ^ ||||¡|¡^
  • 69.
    ^ lililí'' VISUALBASIC como debe ser,.. INSTRUCCIONES DEL COMMAND3 (Salir) Prívate Sub Command3_Click() Dim H As Integer H = MsgBoxf"ESTA SEGURO DE SALIR", 36, "CUIDA­DO") If H = 6 Then End End If End Sub MUY IMPORTANTE: S i Ud., d esea q u e el resultado ta m b ién se visu a lice cu a n d o ingrese o m o d ifiq u e el p re c io u n ita rio d e l p ro d u c to o la c a n tid a d co m p ra d a ; en to n ces, d e b e p r o g r a m a r en el ev e n to C H A N G E de ca d a una de las c a ja s d e texto. L a s in stru c c io n e s q u e ca lcu la n y v isu a liza n los resu lta d o s q u e e n ­c u en tra n en el botó n d e co m andos N ° 1 ( C O M M A N D 1), es d e c ir en el p r o c e d im ie n to lla m a d o C O M M A N D 1 _ C L IC K , e n to n c e s en e l e v e n to C H A N G E d e ca d a u n a d e las ca ja s d e texto (P R E C IO y C A N T ID A D ) só lo se d eb e lla m a r a d ich o pro ced im ien to . A sí: INSTRUCCIONES DE TEXT2, CUYO NOMBRE (ÑAME) ES PRECIO. Prívate Sub PRECIO__Change () Commandl_Clíck End Sub INSTRUCCIONES DE TEX T3, CUYO NOMBRE (ÑAME) ES CANTIDAD. Prívate Sub CANTIDAD_Change() Commandl_Clíck End Sub CAPÍTULO III: Elementos de la Programación APLICACIÓN DESARROLLADA N° 12 Se debe ingresar el nom bre del alum no, su nota N ° 1 y su nota N k z, ai hacer c lic k en el botón Obtener Prom edio se debe visualizar: el prom edio del alum no, una observación que ind ica si el alum no está aprobado o desaprobado, la cantidad de puntos que le fa lta n para aprobar, si está desaprobado o los puntos para llegar a veinte en caso que esté aprobado. Tam bién se debe visua liza r la N ota C u a lita tiva del alum no de acuerdo al promedio: Entre 0 y 5 Pésimo Entre 5.1 y 10.4 Malo Entre 10.5 y 14.4 Regular Entre 14.5 y 17.4 Bueno Entre 17.5 y 20 Excelente Se debe controlar que sólo se ingresen notas entre 0 y 20. « Información Académica B H f l W M W K - I n l x l Alumno Curso 1 .......................... r -------- Otro Alumno Nota N! 01 Nota N! 02 Promedio |o |o 1 Obtener Promedio Finalizar Observación 1 ..................... Puntos Cualidad G r u p o E d i t o r i a l Megabyte
  • 70.
    D E SA R R O L L O D E L A A P L IC A C IO N PASO N ° 01: D ib u ja r los controles L abell |fr ext1 Label2 |íe x l2 Label3 IT ext3 LabeM ¡Text4 Label5 Label8 LabelG Label9 Label7 Lab e ll 0 L abell 1 Labell 2 Commandl Command2 Command3 PA SO N ° 02:A sig n ar las propiedades. E T IQ U E T A S (L A B E L ) CONTROL CAPTION AUTOSIZE BORDERSTYLE Labell Alumno True 0 - None Label2 Curso True 0 - None Label3 Nota N 2 01 True 0 - None Labe14 Nota Ne02 True 0 - None Label5 Promedio True 0 - None Label6 Observación True 0 - None Label7 Puntos True 0 - None Labe18 En Blanco False 1 - Fixed Single Label9 En Blanco False 1 - Fixed Single Label10 En Blanco False 1 - Fixed Single Label11 Cualidad True 0 - None Label12 En Blanco False 1 - Fixed Single C A JA S DE T E X T O S CONTROL TEXT TABINDEX Textl En Blanco 0 Text2 En Blanco 1 Text3 0 2 Text4 0 3 138 G r u p o E d i t o r i a l Megabyte BOTONES DE COMANDOS CONTROL Commandl Command2 Command3 CAPTION &0tro Alumno Obtener &Promedio &Finalizar TOOLTIPTEXT Ingresar nuevo alumno Imprime el promedio Finaliza la aplicación FORMULARIO CONTROL CAPTION Forml Información Académica Ud. P u ed e c a m b ia r cu a lq u ie r otra p ro p ie d a d p a ra m ejo ra r el aspecto d e l fo rm u la rio . P A S O N ° 03: E scrib ir las instrucciones. N O T A : 1. SelStart, SelLength, y SelText son propiedades de las cajas de texto que se usan en el m odo de program ación. SelStart: Especifica la posición de in ic io del bloque de texto seleccionado. SelLength: Especifica el núm ero de caracteres seleccionados. SelText: C ontiene el texto seleccionado. 2. Para escribir comentarios dentro de un program a se u tiliza las com illas sim ples o apostrofe ( ‘ )* 3. L a fu nció n IS N U M E R IC perm ite saber si lo ingresado por un usuario se puede considerar de tip o num érico.
  • 71.
    W/ VISUAL BASICcomo debe ser. D E S A R R O L L O D E L A A P L IC A C IO N P A SO N ° 01: D ib u ja r los controles Labell IfT extl Label2 |T ext2 Label3 |T ext3 LabeW | í ext4 Label5 LabelS LabelG LabeIS Label7 L ab e ll 0 n - : Command! Command2 Command3 L abell 1 L ab e ll 2 PA SO N ° 02:A sig n ar las propiedades. E T IQ U E T A S (L A B E L ) CONTROL CAPTION AUTOSIZE BORDERSTYLE Labell Alumno True 0 - None Label2 Curso True 0 - None Labe13 Nota N s 01 True 0 - None Label4 Nota N 2 02 True 0 - None Label5 Promedio True 0 - None Labe16 Observación True 0 - None Label7 Puntos True 0 - None Labe18 En Blanco False 1 - Fixed Single Labe19 En Blanco False 1 - Fixed Single Label10 En Blanco False 1 - Fixed Single Label11 Cualidad True 0 - None Label12 En Blanco False 1 - Fixed Single C A JA S DE T E X T O S CONTROL TEXT TABINDEX Textl En Blanco 0 Text2 En Blanco 1 Text3 0 2 Text4 0 3 138 G r u p o E d i t o r i a l Megabyte <|§¡y§s; BOTONES DE COMANDOS CONTROL CAPTION Commandl &0tro Alumno Command2 Obtener &Promedio Command3 &Finalizar TOOLTIPTEXT Ingresar nuevo alumno Imprime el promedio Finaliza la aplicación FORMULARIO CONTROL CAPTION Forml Información Académica Ud. P u ed e ca m b ia r c u a lq u ier otra propiedad p a ra m ejorar el aspecto d e l fo rm u la rio . P A S O N ° 03: E scrib ir las instrucciones. N O T A : 1. SelStart, SelLength, y SelText son propiedades de las cajas de texto que se usan en el m odo de programación. SelStart: E specifica la posición de in ic io del bloque de texto seleccionado. SelLength: E specifica el núm ero de caracteres seleccionados. SelText: Contiene el texto seleccionado. 2. Para escribir comentarios dentro de un programa se u tiliza las com illas simples o apostrofe ( ‘ ). 3. L a fu nció n IS N U M E R IC perm ite saber si lo ingresado por un usuario se puede considerar de tipo numérico.
  • 72.
    ^IIÈ É ^VISUAL BASIC como debe ser... A l empezar a escribir la Nota N° 01, se selecciona el contenido de la caja de texto N ° 03 para que sea reemplazado por el valor que se ingresa. Las siguientes instrucciones se deben escribir en el evento GotFocus de Text3. Para e llo Haga doble c lic k en Text3 o un solo c lic k y pulse F7, luego en la lista de Eventos seleccione el Evento GotFocus. Text3.SelStart = 0 Text3.SelLength - Len(Text3) Text3 = Text3 .SelText A l fin a liza r observará lo siguiente: * : P fojectl - Fòrmi (Code) _ |n[ x| Text3 GotFocus Prívate Sub Text3_GotFocus() Text3.SelStart = 0 Text3.SelLength = Len(Text3) Text3 = Text3.SelText End Sub Las siguientes instrucciones perm iten que al empezar a escribir la N ota N° 02, se selecciona el contenido de la caja de texto N° 04 para que sea reemplazado por el va lo r que se ingresa. Se deben escribir en el evento GotFocus de Text4. Private Sub Text4_GotFocus() Text4. SelStart ~ 0 Text4. SelLength = Len(Text4) Text4 = Text4. SelText End Sub m m ™ G r u p o E d i t o r i a l Megabyte CAPÍTULO III: Elementos de la Programación Las siguientes instrucciones perm iten que al fin a liz a r de e scribir la N ota N° 01, se ve rifiq u e que se ha ingresado un va lo r num érico y entre 0 y 20. Se deben escribir en el evento LostFocus de Text3. Prívate Sub Text3_LostFocus() ‘Pregunta si no se ha ingresado un valor numérico o ‘la nota N°1 es menor que 0 ó es mayor que 20 I f Not IsNumeric(Text3) Or Val(Text3)<0 Or Val(Text3)>20 Then MsgBox "Sólo números entre 0 y 20", 16, "Cuidado" Text3.SetFocus E n d lf End Sub Las siguientes instrucciones perm iten que al fin a liz a r de escribir la N ota N° 02, se ve rifiqu e que se ha ingresado un v a lo r num érico y entre 0 y 20. Se deben escribir en el evento LostFocus de Text4. Prívate Sub Text4_LostFocus{) ‘Pregunta si no se ha ingresado un valor numérico o ‘la nota N°2 es menor que 0 ó es mayor que 20 I f Not lsNumeric(Text4) Or Val(Text4)<0 Or Val(Text4)>20 Then ' MsgBox "Sólo números entre 0 y 20", 16, "Cuidado" Text4.SetFocus E n d lf End Sub Las siguientes instrucciones perm iten ingresar los datos de un nuevo alumno, lim p ia n do las cajas de texto y las etiquetas y ubicando el cursor en T e xtl para empezar a ingresar el nom bre del alum no. Se deben escribir en el evento C lic k del C om m and 1. Prívate Sub Commandl_Click() Textl = "" Text2 = "" Text3 - 0 Text4 = 0 Label8 = "" Label9 = "" LabellO = "" Labell2 = "" Textl.SetFocus End Sub 141
  • 73.
    VISUAL BASIC comodebe ser... CAPÍTULO III: Elementos de la Programación Las siguientes instrucciones perm iten m ostrar los resultados del alum no (prom edio, observación, etc). Se deben e scribir en el evento C lic k del Command2. Prívate Sub Command2_Click() pro = (Val(Text3) + Val(Text4)) / 2 Label8 = pro I f pro >= 10.5 Then Label9 = "Aprobado(a)" LabellO = "Le faltan "+Str(20-pro)+" puntos para tener 20" Else Label9 = "Desaprobado(a)" LabellO - "Le faltan " + Str(ll-pro)+ " puntos para Aprobar" E n d lf Select Case pro Case OTo 5 Labell2 = "Pésimo" Case 5.1 To 10.4 Labell2 = "Malo" Case 10.5 To 14.4 Labell2 = "Regular" Case 14.5 To 17.4 Labell2 - "Bueno" Case 17. 5 To 20 Labell2 = "Excelente" End Select End Sub L a siguiente instrucción fin a liz a la aplicación. Se debe e scribir en el evento C lic k del Command3. Prívate Sub Command3jClick() End End Sub CONCATENACION Concatenar sig n ifica u n ir textos y para e llo se puede u tiliz a r el signo + o & . E l signo + sólo perm ite concatenar valores tipo texto. Si desea concatenar valores de diferente tipolos tiene que co n ve rtir a texto usando la función STR si es un núm ero o Cdate si es tip o fecha. E l signo & tiene la ventaja de poder concatenar datos de diferente tipo. Por ejem plo, la instrucción: L a b e ll = “ Le faltan “ + Str(20 - pro) + “ Puntos para llegar a 20” Se puede reem plazar por: L a b e ll = “ Le faltan “ & 20 - pro & “ puntos para llegar a 20” MUY IMPORTANTE Antes y después de estos signos debe dejar un espacio en blanco. ^ ¡¡¡¡^ ¡^ G r u p o E d i t o r i a l M e « a h v t e <^ ^ ^ APLICACION PROPUESTA N° 06 Se debe ingresar el nom bre y el año de nacim iento de una persona y se tiene que visualizar: su edad, una observación que indica si es m ayor o m enor de edad. Si m enor de edad se debe m ostrar cuántos años le faltan para ser m ayor de edad y si es m ayor de edad se debe m ostrar hace cuántos años es m ayor de edad. Tam bién se debe m ostrar la etapa de la persona teniendo en cuenta lo siguiente: 0 y 12 Niño 13 y 17 Adolescente 18 y 30 Joven 31 y 70 Adulto 70... Anciano f e - I r i f xf N o m b re jj A ñ o d e N a c im ie n to | E d a d J- □ b s e rv a c ió n j" A ñ o s R e s u lta d o s | N u e v o S alir r E ta p a FUNCIÓN CHOOSE Retorna un valor dependiendo de un índice. Su sintaxis es: Variable = CHOOSE(índice, valorl, valor2, valor3...) La siguiente instrucción almacena en la variable N O M B R E , el nombre del día de la semana dependiendo del va lo r que contiene la variable D IA . NOMBRE=Choose(DIA,” LU N ” ,” M AR” ,” M IE” ,” JUE” ,” VIE” ,” SAB” ,” DOM” ) Si D IA tiene el va lo r 1, devuelve L U N , si día tiene el va lo r 2, devuelve M A R , etc. El índice debe tener un valor entre 1 y el núm ero I M ic r o s o f t V is u a l B a s ic de valores devueltos, en Error '94' en tiempo de ejecución : caso contrario se muestra El uso de Nuil no es válido el mensaje de error: í Terminar j j Depurar j| Ayuda |
  • 74.
    VISUAL BASIC comodebe ser. ,. F U N C IO N E S D E C A D E N A U na cadena es un dato tipo S tring (carácter); es decir se refiere a letras o letras y números, com o por ejem plo: el nom bre de una persona, su dirección, etc. Si usamos al fin a l de la función el signo $ devuelve el resultado com o tip o Cadena, de lo contrario el tipo devuelto es Variant. R IG H T .- Obtiene de una cadena una cantidad de caracteres empezando por la derecha. Sintaxis Right(Cadena, N) LE FT.- Obtiene de una cadena una cantidad de caracteres empezando por la Izquierda. Sintaxis Left(Cadena, N) MXD. - Obtiene de una cadena una cantidad de caracteres a partir de una determinada posición. Sintaxis Mid(Cadena, Posición, N) Donde N indica la cantidad de caracteres que se desea obtener. L E N .- Obtiene la longitud de una cadena, es decir la cantidad de caracteres que contiene incluyendo los espacios en blanco. T R IM .- Quita los espacios en blanco que se encuentran al inicio y al fin al de una cadena. R T R IM .- Quita los espacios en blanco al fin al de una cadena. L T R IM .- Quita los espacios en blanco que se encuentran al inicio de una cadena. U C ASE.- Convierte una cadena a mayúsculas. L C A S E .- Convierte una cadena a minúsculas. La sintaxis de las funciones anteriores es: Función (Cadena) STR C O N V : Esta función permite convertir una cadena a 3 formas diferentes: STRCONV (Cadena, Valor) El valor indica el tipo de conversión y puede ser: 1. Convierte el texto a mayúscula. 2. Convierte el texto a minúscula. 3. Convierte la primera letra de cada palabra a mayúscula. IN S T R : Obtiene un número que indica la posición de una subcadena dentro de una cadena. INSTR (Valor, Cadena, Subcadena) E l v a lo r ind ica la posición de la cadena desde donde se va a buscar la subcadena. Cadena es el texto donde se desea buscar y Subcadena es el texto que desea buscar. 1 4 4 - G r u p o E d it o r ia l M e e a b v t e CAPITULO III: Elementos de la Programación APLICACIÓN DESARROLLADA N° 13 Las siguiente aplicación es un ejem plo del uso de las funciones de cadena I n g r e s e u n a F r a s e L o n g itu d d e la F r a s e P rim e r C a r á c te r U ltim o C a r á c te r D e l 2 d o a l G to C a r á c te r P o s ic ió n d e la 1 r a le tr a *A' M in ú s c u la s M a y ú s c u la s E S T U D IA N D O V ISU A L B A SIC S ó lo la p rim e ra e n M a y ú s c u la E s t u d ia n d o V is u a l B a s ic ¡ E s t u d i a n d o V I S U A L B A S I C 2 3 nr ::: M u e s tr a c N u e v o stu di S a lir i e s tu d ia n d o v is u a l b a s ic l ’A S O N° 01: D ib u ja r los controles. Labell Label2 LabeB LabeM Label5 LabeS Label? LabeB LabeIS :|Text1 Labell 0 Label! 1 Labell 2 Labell 3 Label14 Labell 5 Labell 6 Labell 7 PA SO N ° 02: A sig na r las propiedades a los controles. Ud., está en condiciones de asignar las propiedades a los controles: Asigne la propiedad C aption a las etiquetas desde L a b e ll hasta Label7 y a los botones de commandos. T e x tl y las etiquetas desde LabeI8 hasta L a b e ll3 deben estar en blanco. PASO N ° 03: E scrib ir las instrucciones para los controles. Prívate Sub Commandl_Click() LabellO = Len(Trím(Textl )) tM belll = Left(Trím( Textl ), 1) Labell2 = Right(Trim(Textl ), 1) Labell3 = Mid(Trím(Textl), 2, 5) Labell4 = lnStr(Textl, "a") Labell 5 = LCase(Textl) Label 16 = UCase(Textl) Label 17 = StrConv(Textl, 3) End Sub Prívate Sub Commandi JClick() Textl = "" LabellO = Labelll = Labell2 = Labell3 = Label 14 = Labell5 = Label 16 = L a b e l 1 7 = Textl.SetFocus End Sub
  • 75.
    como debe ser. FUNCIONES TIPO FECHA NOW.- Obtiene la fecha y hora del sistema. DATE.- O btiene la fecha del sistema. YEAR.- O btiene el año de una fecha. MONTH.- O btiene el núm ero mes de una fecha. DAY.- Obtiene el día de una fecha. W E E K D A Y .-O b tie n e el núm ero del día de la semana. D om ing o = 1 , Lunes = 2, M artes = 3, etc. CVDATE.- C onvierte una cadena en un va lo r tipo fecha. ISDATE.-V erifica si un determinado va lo r puede considerarse de tipo fecha. La fu n ció n Format perm ite asignar un form ato a las fechas: d-m-y dd/mm/yy dd-mmmm-yyyy h:m:s: AM /PM , dd/mm/yy 21-8-98 21/08/98 21-Ago-1998 20:35:20 PM, 21/08/98 APLICACION DESARROLLADA N° 14 Se debe ingresar el nom bre y la fecha de nacim iento de una persona y visualizarse p or separado: El día, mes, año, núm ero del día de la semana, la fecha en letras y la fecha y hora actual. Nombre Fecha de Nacimiento D ía Ingresado Mes Ingresado Año Ingresado D ía de la semana fjOS E MARIA 11 7-1 0-86 P7 |ïô |1986 O k Salir V'í&rsr&s-. / Z afe iHoy es 1 7 /07/1 998 11:26:58 PM PASO N° 01 D ib u ja r los controles. =asi-2l Labell Label2 Label3 Label4 Label5 LabeIS jfT extl jText2 Label7 LabeIS Label9 Labell O PASO N° 02 A sig na r las propiedades. A signe las propiedades a los controles de tal manera que se visualicen como se muestra en la aplicación a desarrollar. 1 4 6 ^ 1 G r u p o E d it o r ia l Megahyte CAPÍTULO III: Elementos de la Programación PASO N ° 03 E scrib ir las instrucciones. La siguiente instrucción muestran en la etiqueta N ° 12 la fecha y hora del sistema. Se deben e scribir en el evento Form Load. Prívate Sub Form_Load() Labell2 = "Hoy es " + Str(Now) End Sub Las siguientes instrucciones perm iten visua liza r los resultados que se de­sean. Se escriben en el evento C lic k del C om m andl (O K ). Prívate Sub Commandl_Click() Dim fecha As Date Dim ndia, nmes As String *10 Dim día, mes, año, diasemana As Integer fecha = CVdate(Text2) dia = Day (fecha) mes — Month(fecha) año = Year(fecha) diasemana - WeekDay(fecha) Label7 - dia Label8 = mes Label9 - año LabellO = diasemana ‘convierte el N° del día de la semana en letras ‘Si desea escribir dos instrucciones en una ‘línea, debe separarlas por dos puntos Select Case diasemana Case 1 : ndia = "Domingo" Case 2 : ndia = "Lunes " Case 3 : ndia = "Martes" Case 4 : ndia = "Miércoles” Case 5 : ndia = "Jueves" Case 6 : ndia = "Viernes" Case 7 : ndia - "Sábado" End Select ‘convierte el N° del mes en letras. Select Case mes Case 1: nmes = "Enero" Case 2: nmes - "Febrero" Case 3: nmes = "Marzo" Case 4: nmes - "Abril" Case 5: nmes = "Mayo" Case 6: nmes = "Junio" Case 7: nmes - "Julio" Case 8: nmes = "Agosto" Case 9: nmes - "Setiembre" Case 10: nmes = "Octubre" Case 11: nmes = "Noviembre" Case 12: nmes = "Diciembre" End Select Labell 1 = ndia+", "+Str(dia)+" de "+nmes+" de "+Str(año) End Sub 147 « ¡ s »
  • 76.
    VISUAL BASIC comodebe ser... FUNCIÓN DATEADD Permite increm entar o d is m in u ir un intervalo de tiem po a una fecha. El intervalo de tiem pos puede ser un num ero de días, semanas, meses, años, etc., retornando una nueva fecha. Su sintaxis es: D ateAdd ("Intervalo",V alor,Fecha) Intervalo Indica qué intervalo de tiem po se va a increm entar o d is m in u ir a la fecha. Los valores que puede tener son: Intervalo Descripción yyyy Año q Trimestre m Mes y Día del año d Día w Día de la semana ww Semana h Hora n Minuto s Segundo Valor Es la cantidad del intervalo de tiem po que se va a increm entar o d is m in u ir a una fecha. U n va lo r p ositivo increm enta y un va lo r negativo dism inuye. Fecha Es la fecha a la cual se va a d is m in u ir o increm entar el intervalo de tiem po Ejemplo: Las siguientes instrucciones muestran en L a b e ll la fecha actual y en Label2 la fecha anterior pero increm entada en dos semanas. Si desea d is m in u ir dos semanas, debe e scribir menos dos (-2). Label 1 = Now Label2 = DateAdd("ww", 2, Now) FUNCIÓN DATEDIFF D evuelve la d iferencia entre dos fechas en un intervalo de tiem po indicado. Por ejem plo, la diferencia de dos fechas en días, semanas, meses, etc. Su sintaxis es: DateDiff(Intervalo, Fecha I, Fecha2, Valor I,VaIor2) Intervalo Indica en qué intervalo de tiem po se va a calcular la diferencia entre las dos fechas. Los valores que puede tener son los m ism os que en la función DateAdd. Fechal y fecha2 Son las fechas entre las cuales se va a calcular la diferencia. G r u p o E d i t o r i a 148 l Megabyte<|f¡¡jj||| CAPÍTULO III: Elementos de la Programación Valorl Es opcional y perm ite in d icar cuál es el p rim e r día de la semana se usará Visual Basic. En form a predeterm inada el p rim er día de la semana es el D om ingo. Los valores que se pueden escribir son: Valor Descripción 1 Domingo (predeterminado) 2 Lunes 3 Martes 4 Miércoles 5 Jueves 6 Viernes 7 Sábado VaIor2 Es opcional y perm ite in d icar cuál es la prim era semana del año que usará Visual Basic. En form a predeterminada es la semana que contiene al prim ero de enero. Los valores que se pueden escribir son: Valor D escripción 1 E m p ie z a c o n la sem ana en la que se e n c u e n tra el 1 de E n ero (predeterm inado). 2 Empieza con la Ira. semana que tenga al menos 4 días en el nuevo año. 3 Empieza con la Ira semana que esté completamente incluida en el nuevo año. L a siguiente instrucción muestra en la etiqueta N ° 1 (L a b e ll) la diferencia en semanas que existe entre el 30 de Setiem bre del año 1999 y el 01 de M ayo del año 2000. L a b e ll = D a te D iff("w w ", C V D a te ("3 0 -0 9 -9 9 "), C V D a te fO 1-05-00")) N O T A Visual Basic devuelve cero (0) si las fechas se encuentran dentro del m ism o intervalo de tiem po indicado. Por ejem plo, si el prim er día de la semana es dom ingo, la instrucción: Labell = DateDiff("ww", C V D atef 14-07-00"), CV D atef 15-07-00")) Muestra en Labell el valor cero (0) porque el 14-07-00 es viernes y el 15-07-00es sábado (la misma semana). La instrucción: Labell = DateDiff("ww", CV D atef 15-07-00"), CVDate(" 16-07-00")) M uestra en L a b e ll el v a lo r uno (1) porque el 15 de Ju lio del año 2000 es sábado y el 16 de Ju lio del año 2000 es dom ingo (siguiente semana). 149
  • 77.
    VISUAL BASIC comodebe ser... FUNCIÓN DATEPART Perm ite obtener el intervalo de tiem po en el cual se encuentra una fecha. Por ejem plo, a qué núm ero de la semana del año corresponde a una fecha. Su sintaxis es: DatePart(Intervalo, Fecha, Valorl,VaIor2) Intervalo Indica el intervalo de tiem po en el que se encuentra la fecha. Los valores que puede tener son los m ism os que en la fu nció n DateAdd. Fecha Es la fecha que se desea evaluar. Valorl y Valor2 Son los m ism os que los de la fu nció n D a te D iff. Por ejem plo, la siguiente instrucción m uestra en Label 1 el trim estre del año al cual pertenece la fecha actual. Label 1 = DatePart("q", Now) APLICACIÓN DE EJEMPLO: Esta a p lic a c ió n p e rm ite ing re sa r una fe ch a de n a c im ie n to y m uestra inform ación utilizando las funciones anteriores: TTTc: Fecha de Nacimiento |oi -05-68 1 Nom bre de la Estación en la que nació jO toño Signo Z o d ia ca l al que p ertenece |Tauro N 9 de la S em ana del A ñ o en que nació h 8 M eses Transcurridos desde que n ació {377 Fecha A c tu a l D espués de 3 Semanas 23-10-1999 1. DIBUJAR LOS CONTROLES g n ^ — — ■ 1 □ 1 x 1 L a b e ll jl* e x t l C o m m a n d l j L a b e l2 LabeIS L a b e l3 L a b e l7 L a b e l4 L ab elQ L = b » l5 L a b ' 19 L a b e l! O L a b e ll 1 C o m m a n d ? 150 G r u p o E d i t o r i a l M egabyte^ > CAPÍTULO III: Elementos de la Programación 1. ESCRIBIR LAS INSTRUCCIONES PARA LOS CONTROLES. Instrucciones del Form_Activate Prívate Sub Form_Activate() Textl = "" Label7 = "" LabelS = "" Textl. SetFocus Fonnl.C aption = "Fecha A c tu a l: " + Str(Date) End Sub Instrucciones del del Botón Aceptar Prívate Sub Commandl _Cl¡ck() Dim Dia,Mes As Integer Dim Fecha As date IflsDate(Textl) Then Fecha = CDate(Textl) Día = Day( Fecha) Mes = Month( Fecha) Rem ESTACION DE NACIMIENTO If(Dui>=23 And Mes=12) OrMes- 10rMes=2 Or(Dia<=22 AndMes=3) Then Label6= "Verano" lf(Dia>=23AndMes=3) 0rMes=4 0rMes=5 Or (Dia<=22 And Mes=6) Then Label6= "Otoño " lf( Dia> =23 AndMe=6)0rMes=70r Mes=8 Or (Dia< =22AndMes=9) Then LabeI6= "Invierno" lf(Dia>=23AndMes=9) 0rMes=l()0rMes=II 0r(Dia< =22AndMes= 12) Then Label6= "Primav. Rem SIGNO ZODIACAL lf(Dia>=21 And Mes=3) Or (Dia <= 20 And Mes = 4) Then Label7 = "Aries" If (Dia>=21 And Mes=4) Or (Dia <= 20 And Mes = 5) Then Label7 = "Tauro" I f (Dia>=21 And Mes=5) Or (Dia<=20 And Mes = 6) Then Label7 = "Geminis" lf(Dia>=21 And Mes=6) Or (Dia<=22 And Mes = 7) Then Label7 = "Cáncer" lf(Dia>=23 And Mes = 7) Or (Dia <= 22 And Mes = 8) Then Label7 = "Leo" I f (Dia>=23 And Mes=8) Or (Dia <=22 And Mes = 9) Then Label7 = "Virgo" I f (Dia>=23 And Mes=9) Or (Dia<=22 And Mes = 10) Then Label7 = "Libra" I f (Dia>=23 And Mes=10) Or (Dia<=2l And M es= ll) Then Label7="Escorpio" lf(Dia>=22 And M es=Il) Or (Dia<=21 And Mes=12) Then Label7="Sagitario" If(Dia>=22 And Mes=12) Or (Dia< = 19 And M es=l) Then Label7="Capricorn." I f (Dia>=20 And M es=l) Or (Dia<=18 And Mes = 2) Then Label7 = "Acuario" If (Dia> = 19 And Mes=2) Or (Dia<=20 And Mes = 3) Then Label7 = "Piscis" Label8 = DatePart("ww", CDate(Textl)) Label9 = DateDiff("m", CDate(Textl), Date) Label 11 = DateAdd("ww", 3, Date) Else MsgBox "La fecha ingresada no es correcta", 64, "Verifique" Textl.SetFocus End If End Sub Instrucciones del del Botón Salir Prívate Sub Command2_Click() End End Sub
  • 78.
    m k »VISUAL B ASW co.no t e t e s e , . . F U N C I O N E S T I P O H O R A TIM E D evuelve la H ora exacta del sistema H H :M M :S S . HOUR O btiene sólo las Horas (H H ). M INUTE O btiene sólo los M in utos (M M ). SECOND O btiene sólo los Segundos (SS). F U N C I O N E S N U M E R I C A S ABS O btiene el va lo r absoluto de un núm ero. A B S (N úm ero). BVT O btiene la parte entera de un núm ero. IN T (N ú m e ro ). SQR O btiene L a raíz cuadrada de un núm ero. SQ R (N úm ero). RND Retorna un va lo r random. Para obtener números aleatorios en un intervalo dado, use esta fórm ula: Int(i(Lím._superior-Km._inferior+l)*Rnd+ lím.Jnferior) Por ejemplo, para obtener números aleatorios entre 12 y 50 u tilice la siguiente form ula: Int((50 - 12 + 1) * Rnd + 12) RANDOM IZE In ic ia liz a el generador de números aleatorios, perm itiendo que no se repita la secuencia de números aleatorios anteriores. SGN O btiene el signo de un núm ero. SGN(Número) -1 Negativo, 0 Cero, 1 Positivo HEX C onvierte un núm ero a Base H exadecim al. HEX(Número). OCT C onvierte un núm ero a Base O ctal. OCT(Número). 152 G r u p o E d it o r ia i Megabyte O CAPÍTULO III: Elementos de la Programación % VAL I .a fu nció n Val convierte una cadena de caracteres en un va lo r num érico. VAL(Cadena) STR ,u función Str convierte un valor num érico en una cadena de caracteres. STR(Valor Numérico) CHR Devuelve el carácter A S C II de un valor. C H R (V alor). ASC Devuelve el va lo r A S C II de un carácter. ASC (C arácter). FORMAT Realiza lo m ism o que STR, y además da un form ato a la salida de acuerdo con el patrón especificado. Ejemplo: Si la variable Sueldo = 635, la siguiente instrucción: Textl = Format(Sueldo,” ###,##0.00” ) Visualiza en la caja de texto el valor: 635.00 E l s ím b o lo # representa un d íg ito c u a lq u ie ra , excepto los ceros no significativos. E l sím bolo cero (0) representa un dígito cualquiera, incluyendo los ceros no sig n ifica tivo s y además redondea el resultado. E l punto indica la posición del punto decim al y la coma es el separador de m iles. Otros sím bolos que tam bién se pueden usar son: + -$ () y espacios. E l sím bolo % representa el va lo r p or ciento y añade este sím bolo al resultado. Para indicar el separador decimal (punto o coma) debe hacerlo en la configuración del Windows. ISNUM ERIC Perm ite saber si un va lo r se puede considerar com o num érico. ISNUMERIC(Valor) ISEMPTY Perm ite saber si una variable está vacía. ISEMPTY (Variable) ISNULL Permite saber si el contenido de una variable no es válido. ISNULL(Variable) 1 f c 153 ^
  • 79.
    j a m VISUAL BASIC como debe ser. APLICACIÓN DESARROLLADA N° 15 Esta aplicación es un ejem plo de la u tilid a d de las funciones tipo numéricas. Ingrese un número j[~ Parle Entera Parte Decima! Valor Absoluto R aíz cuadrada Signo del Número Valor Octal (Base 8) Valor Hexadecimal (Base 16) M U ES TRA □ x NUEVO SALIR Labell ¡(T extl Label2 LabeIS Label3 LabellO Labe!4 LabelH Label5 Labell 2 LabelB Labell 3 Label? Labell 4 Labelô Labell 5 Commandl Command? Command3 A signe la propiedad C aption al fo rm u la rio , botones de comandos y etiquetas desde L a b e ll hasta L a b e l8. E l resto debe estar en blanco. Instrucciones del botón M UESTRA: Prívate Sub Commandl_Click() Dim NUM As Double I f lsNumeric(Textl) Then NUM = Val(Textl) Label9 = Int(NUM) LabellO = NUM - Val(Label9) Labelll = Abs(NUM) ‘No se puede obtener la Raíz Cuadrada de un # Negativo IfNUM > 0 Then Lab el 12 = Sqr(NUM) Else Lab el 12 - "No Existe" End If Labell 3 = Sgn(NUM) LabelM = Oct(NUM) Labell 5 = Hex(NUM) Else MsgBox "Debe ingresar un valor numérico", 0, "Sólo números" Textl = "" Textl.SetFocus End If End Sub En el botón N uevo, lim p ie T e x tl y las etiquetas desde Label9 hasta Label5 y el botón S a lir escriba la instrucción E N D . O CAPÍTULO III: Elementos de la Programación ^ NUEVAS FUNCIONES La Versión 6.0 de Visual Basic tiene las siguientes funciones: ROUND Esta función perm ite redondear un núm ero a una determ inada cantidad de decimales. Round (Valor.; Número de Decimales) M O N T H N A M E Esta fu nció n muestra el nom bre del mes a p a rtir de un núm ero entre 1 y 12. MonthName (Numero, Valor Lógico) El núm ero debe estar entre 1 y 12 de lo contrario se muestra un mensaje de error. E l va lo r lóg ico es opcional: True indica que el nom bre se muestre en abreviatura y False com pleto. WEEKYDAYNAME M uestra el nom bre del día de la semana a p a rtir de un N ° entre 1 y 7 según el 1er. D ía de la semana configurado. WeekDayName (Número, Valor lógico,Primer Día) Núm ero debe estar entre 1 y 7, V a lor L ó g ic o in d ica si el nom bre se muestra en abreviatura. P rim er D ía co nfig ura el día que se debe considerar el que in icia la semana y puede tener uno de los siguientes valores: 1 Domingo (Predeterminado), 2 Lunes, 3 M artes,... 7 Sábado. Por ejem plo: W eekDayN am e(3,False,5) devuelve sábado porque el 1er día de la semana se ha configurado a 5 (Jueves). R EPLAC E Reemplaza una subcadena p or otra dentro de una cadena. Replace (Cadena, SubCadenal, SubCadena2, ValorI, Valor2) ( 'adena es aquella donde se desea realizar el reemplazo. SubCadenal es la subcadena que va hacer reemplazada. SubCadenal es la subcadena reemplazante. V a lo r 1 es un va lo r que in d ica la posición de la cadena desde donde se va a luiscar la subcadena que va hacer reemplazada. V a lo ré ind ica la cantidad de veces que desea buscar y reem plazar la ubcadena. El va lo r -1 (predeterm inado) indica que busque y reemplace lodas las subcadenas que se encuentren.
  • 80.
    |VISUAL BASIC comodebe ser... - "xs STRREVERSE In vierte los caracteres de una cadena. StrReverse ( Cadena) El ú ltim o carácter lo coloca prim ero, el penúltim o lo coloca segundo, etc. FORMATCURRENCY A signa un form ato m onetario a los números. El signo m onetario depende de la C onfiguración Regional. FormatCurrency (Número, Valorl, Valor2, Valor3, Valor4) V a lo rl: Indica la cantidad de decimales. Valor2: Indica si se muestra un cero en la parte entera cuando no hay decimales. Valor3: Indica si los negativos deben estar entre paréntesis. Valor4: Indica si se muestra el separador para los miles. Valor2, valor3 y Valor4 pueden ser: -1 SI, 0 N O ,-2 Según la configuración Regional NOTA Si no indica ningún valor, V isual Basic muestra los resultados según la configuración regional (Inicio/C onfiguración/P anel de C on trol) Configuración regional FORMATNUMBER Esta fu n c ió n es s im ila r a F o rm a tC u rre n cy pero no m uestra el sím bolo monetario. FORMATDATETIME A signa un form ato a datos tip o fecha y hora. Form atD ateTim e(Fecha, Valor) E l va lo r puede ser: 0: Form ato general (Fecha u Hora). 1: Form ato de fecha largo. 2: Form ato de fecha corto. 3: Form ato de hora según la config uració n regional. 4: M uestra la hora en form ato de 24 hora. 156 G r u p o E d i t o r i a l Meeabvte CAPITULO III: Elementos de la Programación FUNCIÓN SHELL La fu nció n S H E L L se u tiliz a para ejecutar programas (archivos ejecutables com o *.E X E , *.C O M , etc.) desde el V isual Basic. Su sintaxis es: SHELL “RUTA Y NOMBRE DEL PROGRAMA”, La ruta es la dirección exacta de la carpeta donde se encuentra el program a que se desea ejecutar. El va lo r indica el estilo de la ventana donde se va a ejecutar el programa: 0 : O culta la ventana donde se ejecuta el archivo. 1 : E jecuta el p ro g ra m a en su ven ta n a de tam año norm al. 2 : Ejecuta el program a con su ventana m inim izada. 3 : Ejecuta el program a con su ventana m axim izada. 4 : Ejecuta el program a con el tamaño y posición mas reciente de su ventana. L a ventana actual continua activa. 6 : Ejecuta el program a con su ventana m in im iza da y la ventana actual continua activa. Si no escribe el va lo r el program a se visualiza con la ventana m inim izada. Por ejem plo, la siguiente instrucción ejecuta la calculadora del w indow s. Shell "c:windowscalc.exe", 1 D e sp u é s d e e je c u ta r el p ro g ra m a , V isual B a sic c o n tin u a e je c u ta n d o la s s ig u ie n te s in s tr u c c io n e s q u e s ig u e n a l S H E L L . E sto n o s d á la p o s ib ilid a d de e je c u ta r varios p ro g ra m a s. P o r ejem p lo las sig u ien tes in stru c c io n e s ejecu ta n la ca lcu la d o ra y el p a n e l de control. Shell "c:windowscalc.exe", 1 Shell "c:windowscontrol.exe", 1 L a fu n c ió n S h e ll d e v u e lv e un v a lo r tip o D o u b le q u e in d ic a s i el p ro g ra m a se ha ejecu ta d o con éxito, ca so co n tra rio devu elve cero (0). P ara o b te n e r este va lo r utilice la sig u ien te sintaxis: V A R IAB LE= SHELL(“ RUTAY NOMBRE D EL PROGRAMA” , VALOR)
  • 81.
    |¡ I ¡¡ i> VISUAL BASIC como debe ser... APLICACIÓN DESARROLLADA N° 16 L a siguiente aplicación perm ite ejecutar desde el V isual Basic algunos programas. ¡a. u s o d e l s h e l l _________________________ M | P r o g r a m a a E / e c u t a r : CALCULADORA ELECTRONICA MICROSOFT W O R D MICROSOFT EXCEL EXPLO RADOR DE W IN D O W S SALIR A L D .O .S. í...... FIN A LIZA R .......]} Si sale al D.O.S., escriba EXIT para regresar al Windows. La instrucción de cada Botón de Comando es: Private Sub Command 1 JClickf) Shell "C:WlNDOWSCALC.EXE", 1 End Sub Prívate Sub Command2_Click() Shell "C:Archivos deprogramaMicrosoft OfftceOfficeWINWORD.EXE", 1 End Sub Prívate Sub Commands_Click() Shell "C:Archivos de programaMicrosoft OjficeOfficeEXCEL.EXE", I End Sub Prívate Sub Command4_Click() Shell "C:WINDOWSEXPLORER.EXE", I End Sub Prívate Sub Command5_Click() Shell "C:WINDOWSCOMMAND.COM", 1 End Sub Prívate Sub Commandó_Click() End End Sub 'mm ™ G r u p o E d i t o r i a l Megabyte CAPÍTULO III: Elementos de la Programación % FOR-NEXT Permite crear bucles. Un bucle es la repetición de una o más instrucciones. Su sintaxis es: F O R variable = v.inicial T O v.final S T E P incremento Instrucción(es) N EX T variable STEP: Sólo es necesario cuando el incremento es diferente de 1. EXIT FORM: Permite salir del bucle. DO-LOOP Permite ejecutar una o más instrucciones mientras una condición se cumpla (W H IL E ) o hasta que se cum pla una condición (U N T IL ). Tiene cuatro sintaxis: Do W hile Condición Instrucción(es) Loop Do Instrucción(es) Loop W hile Condición Do Until Condición Instrucción(es) Loop Do Instrucción(es) L oop Until Condición MUY IMPORTANTE M ientras Visual Basic está ejecutando un bucle, no reconoce ningún evento. Esto lo puede evitar con la instrucción DoEvents. DOEVENTS D oE vents p a sa el control a l sistem a o p era tivo y verifica si a ocurrido alg ú n evento. S i a o c u rrid o un e v e n to o e v e n to s los e je c u ta y lu eg o con tin u a con el even to inicial. E jem p lo s: Dim x Integer E stas instrucciones m ueven la etiqueta N° 1 de For x = 1 To 10000 izq u ierd a a d erecha y no se reconoce ningún Lab ell .Left = x evento hasta que termine. Next Dim x As Integer For x = / To 10000 Labe 11. Left = x Doevents Next Estas instrucciones m ueven la etiqueta N° 1 de izquierda a derecha, p ero cada vez que ejecuta el bucle verifica si ha ocurrido algún evento para ejecutarlo.
  • 82.
    m s* VISUALBASIC como debe ser. APLICACION DESARROLLADA N° 17 Se debe ingresar un texto y luego se debe m ostrar letra por letra del texto ju n to con su va lo r A S C II y su valor B in ario; además, el valor binario se debe desplazar de izquierda a derecha por el form u la rio . Ö E JE M P L O S D E B U C LES IN G R E S E UN TE XTO LE T R A V A L O R ASCII • . |n| x| V A L O R B IN AR IO O K P A S O N ° 01: D ib u ja r los controles I ^ Form » - . I n i x | L a b e ll IfT e x tl Label2 LabeIS Label3 LabelB Label4 Label? C om m andl I LabelQ P A S O N ° 02: A sig na r las propiedades a los controles. A signe la propiedad C aption a los controles según el ejem plo. 160 G r u p o E d it o r i a l Megabyte < CAPÍTULO III: Elementos de la Programación PASO N ° 03:E scrib ir las instrucciones para los controles. Instrucciones del botón OK: Prívate Sub Commandl_C!ick() TEXTO = Trim(Textl) For X - 1 To Len( TEXTO) Label7 = " " LETRA = Mid(TEXTO, X, 1) Label5 = LETRA VALOR = Asc( LETRA) Labeló = VALOR La be 17 = BlNARIO( VALOR) Label8 = Label7 ‘Mvimiento del valor Binario For T = 1 Tó 5000 Step 0.1 Label8.Left - T Next T N extX End End Sub Instrucciones de la función BINARIO: Prívate Function BINARIO(NUM) Dim VALORBIN As String Do While NUM > 1 RESTO = NUM Mod 2 NUM = N U M 2 VALORBIN = Trim(Str( RESTO)) + Trim( VALORBIN) Loop VALORBIN = Trím( Str( NUM)) + VALORBIN BINARIO = VALORBIN End Function 16, 4 ¡ £ »
  • 83.
    i l li ^ VISUAL BASIC como debe ser... i ARRAYS U n array perm ite almacenar en una sola variable, varios elementos del m ism o tip o utiliza nd o un índice. El prim er elemento de un array se almacena en fo rm a predeterminada en el índice 0, pero con la instrucción OPTIO N B A SE 7, le indica al Visual Basic que el p rim er elemento de un array se almacene en el índice 1. C on la palabra P U B L IC se declaran arrays globales y lo debe hacer en la sección de declaraciones de un m ódulo. Con la palabra D IM se declaran arrays a nive l del m ódulo o del fo rm u la rio . C on la palabra STATIC se declaran arrays locales a un procedim iento. A r r a y s E stá tico s. Se caracterizan porque tienen un núm ero fijo de elementos. Ejem plos: Dim Nom (19) As String D eclara la variable Nom de tip o cadena que perm ite alm acenar veinte elementos (de 0 a 19). Dim A (1 to 15) As Integer D eclara la variable A de tipo integer que perm ite almacenar 15 elementos (de 1 a 15). Static N um (1 to 4, 1 to 4) A s Integer D eclara la variable Num de dos dim ensiones (4 * 4) de tipo Entero. A r r a y s D in á m ico s. Se caracterizan porque sus dim ensiones no son fijas. E l espacio para un array dinám ico será asignado durante la ejecución del program a. Un array dinám ico, puede ser redim ensionado en cualquier m om ento de la ejecución del program a. R E D IM Es una instrucción que permite cam biar el núm ero de elementos de un array, se debe escribir solamente en un procedim iento. Ejem plo: Dim Num () As Integer D eclaración dinám ica de la variable N u m de tip o Entero. En el m om ento que necesite asignarle espacio puede escribir: Redim N um (N ) Donde N contiene el valor con el que desea redim ensionar la variable Num . íljllllll^ 162 G r u p o E d i t o r i a l Megabvte ( CAPÍTULO III: Elementos de la Programación ^ ¡ ¡ ¡ ¡ ¡ 1 APLICACIÓN DESARROLLADA N° 18 Se debe ingresar un núm ero del 1 al 7 y visua liza r el nom bre del día de la semana. -----I1-n---|1-x--|-1 Ingrese un número (1-7] GK Salir 1. D ib u ja r los controles y asignarle sus propiedades. 2. D eclarar en la sección de declaración del fo rm u la rio . Dim D (1 To 7) As String * 9 3. A sig na r los elementos al array en F O R M L O A D . Prívate Sub Form_Load() 'Almacena los elementos en el Array D (1) = "Lunes" D(2) = "Martes" D(3) = "Mi ércoles" D(4) = "Jueves" D(5) = "Viernes" D(6) = "Sábado" D (7) = "Domingo" End Sub 4. Escribrir las instrucciones del Botón OK. Prívate Sub Commandl_Click() Dim N As Integer N = Val(Textl) If N >= 1 And N <= 7 Then L ubel2- "El número ingresado representa el día "+D(N) El se MsgBox "Sólo números del 1 al 7", 0, "Por favor" Textl = "" Textl.SetFocus End If End Sub El botón S A L IR debe tener la instrucción E N D .
  • 84.
    VISUAL BASIC comodebe ser... CREAR UN ARRAYDE CONTROLES Existen dos form as de crear un array de controles: l.Cuando los controles ya están dibujados en el formulario. Si los controles ya están dibujados en el fo rm u la rio y desea crear con ellos un array de controles, asígneles el m ism o nom bre (propiedad Ñ A M E ) a cada uno de ellos. A l escribir el m ism o nombre al segundo control se visualiza el siguiente mensaje: M icrosoft V isual Basic Y a existe un control llam ado 'N'. ¿D esea crear una matriz de con troles? Sí N o Haga c lic k en el botón SI y continúe asignado el m ism o nom bre a los si­guientes controles. Cuando todos los controles tienen un m ism o nom bre se tiene un array con una sola dim ensión cuyos elementos se diferencian por el va lo r de su propiedad IN D E X de cada control, por ejem plo: E l p rim er con­tro l tendrá en su propiedad Index el va lo r 0, el segundo control tendrá el va lo r 1, etc. 2. Cuando los controles todavía no están dibujados en el formulario. Si los controles todavía no los ha dibujado en el form ulario, entonces d ibu­je sólo el p rim er control y asígnele, si lo desea, un nom bre diferente al que tiene en form a predeterminada, luego selecciónelo haciendo un C lic k en dicho co ntrol y pulse las teclas CTRL+C, para copiarlo en la m em oria de la com putadora y después pulse las teclas CTRL+V, para pegarlo en el form ulario. L a prim era vez que Ud. pulsa CRTL+V, se visualiza el mensaje anterior, haga C lic k en el botón SI y continúe pulsando CTRL+V hasta que tenga la cantidad de controles deseadas. Cada control que pega se ubica en la parte superior izquierda del form ulario uno sobre otro, con el m ism o nombre, pero con la propiedad IN D E X diferente. Cuando term ine ubíquelos en su respectivo lugar y en el orden correcto. Las teclas C T R L + C equivalen a la opción C o p ia r (C o p y) de la opción E D ITA R (E D IT ) d e la Barra de M en ú y C T R L + V equ iva le a la opción P e g a r (P aste). 164 G r u p o E d i t o r i a l Mega bvte CAPÍTULO III: Elementos de la Programación APLICACIÓN DESARROLLADA N° 19 La siguiente aplicación perm ite ingresar valores en un array de 4 llen arlo con valores al azar entre 1 y 50, luego se pueden ordenar en ascendente y restaurar los valores iniciales. PASO N° 1: D ib u ja r los controles X 4 ó form a t i, F o tm l ¡U s TE l Fram el |[T e x tl |T e xt2 I T ext3 j | t ext5 JT extG |Tex<7 I 1T ext9 I T e x tl 0 |Text11 T ext4 T e xt8 T e x tl 2 T e x tl 6 |T e xt1 3 |T e x tl 4 | t e x tl 5 1 C om m a n d l C om m and2 C om m and3 C om m and4 C om m and5 PASO N° 2: Convertir las Cajas de Texto en un array. Cree un array de controles con las cajas de texto usando cualquiera de los dos form as indicas y asígnele el nom bre N en la propiedad Ñame a cada una de ellas. NUEVO [' O R D EÑ AR '] RESTAURAR I LLENAR SALIR ¡i,. ORDENACION DE UN ARRAY Valores del Array I2 1Í3 I4 II5 I8 1I12 !|23 28 I43 144 |S3 |54 j GG I76 leo 1154
  • 85.
    áüÉyÉÍ!' VISUAL BASICcomo debe ser... PASO N° 3: Escribir las instrucciones para los controles. En el objeto G E N E R A L y en el evento D E S C R IP C IO N E S del fo rm u la rio declare las siguientes variables: Se declara la variable O R IG E N tipo array a nive l de fo rm u la rio para poder llam ar a los datos desde cualquier procedim iento. La variable Y A se u tiliz a para saber si ya se alm acenaron los valores originales en el array O R IG E N Dim ORIGEN( 16) As Integer Dim YA As Boolean Instrucciones del Evento FORM ACTIVATE A l activarse el fo rm u la rio se llam an a las instrucciones del C o m m a n d l para lim p ia r el contenido de las cajas de texto. Prívate Sub Form_Activate() ‘Al activarse el formulario se llaman a las instrucciones del 'Commandl para limpiar el contenido de las cajas de texto Commandl jC lick End Sub Instrucciones del Botón NUEVO Estas instrucciones perm iten lim p ia r el contenido de las cajas de texto para ingresar nuevos valores. Prívate Sub Commandl_Click() Dim X A i Integer ForX = OTo 15 N(X) = " " N extX N(0).SetFocus ‘Activa el botón ORDENAR Command2.Enabled = True ‘Inicializa la variable Ya YA = False End Sub G r u p 166 o E d i t o r i a l Megabyte CAPÍTULO III: Elementos de la Programación ^|ÉfeiÍP Instrucciones del Botón LLENAR Estas instrucciones llenan las cajas de texto con valores al azar entre 1 y 50. La fu nció n R N D , perm ite obtener valores al azar y para obtener valores al azar entre un rango determ inado se u tiliz a la siguiente form ula: Int((límitesup - límiteinf + 1) * Rnd + límiteinf) Límitesup: Es el v a lo r m áxim o que deseamos obtener. Límiteinf: Es el va lo r m ínim o que se deseamos obtener. Por ejem plo para obtener valores al azar sólo entre 7 y 36 se escribe: lnt( (3 6 - 7 + 1 ) * Rnd + 7). Int: Es una función que perm ite obtener sólo la parte entera (sin decim ales) de un valor. Prívate Sub Command4_Clíck() ‘Almacena en las cajas de texto ‘valor al azar entre 1 y 50 ForX = OTo 15 N(X) = lnt((50 -1 + 1)* Rnd + I) Next X Activa el botón ORDENAR Command2.Enabled = True ‘Desactiva el botón RESTAURAR Command3.Enabled = False ‘Inicializa la variable Ya YA = False End Sub
  • 86.
    VISUAL BASIC comodebe. ser. _. Instrucciones del Botón ORDENAR Prívate Sub C om m andl _Click() Dim A R ( 16) A i Integer ‘Copia los valores de las cajas de texto en las ‘variables tipo array A R y O RIG EN F o r X = 0 T o l 5 IfN o t YA Then ORIG EN(X) = Val(N(X)) E n d l f A R(X) = Val(N(X)) N ext ‘O rdena los valores que se encuentran en la variable A R Do sw - 0 F or X = 0 7o 14 IfO p tio n l Then IfA R (X ) > A R (X + 1) Then A X - AR(X) AR(X) = A R (X + 1) A R (X + 1) = A X sw - 1 E n d lf Else IfA R (X ) < A R (X + 1) Then A X = AR(X) A R (X )= A R (X + 1) A R (X + 1) - A X sw = 1 E n d lf E n d lf N e x tX Loop Until sw = O ‘M uestra los valores ordenados en las cajas de textos F o r X - O To 15 N (X) = AR(X) N e x tX YA - True ‘Activa el botón restaurar C om m and3.E nabled - True E nd Sub Instrucciones del Botón RESTAURAR E sta s in stru c c io n e s m u e stra n en la s ca ja s ele te x to lo s va lo res en la p o sic ió n o rig in a l (a n te s ele o rd en a rse). Prívate Sub Command3_Click() For X = O To 15 N(X) = ORICEN(X) NextX End Sub 168 G r u p o E d i t o r i a l Megabyte CAPÍTULO III: Elementos de la Programación APLICACIÓN DESARROLLADA N° 20 La siguiente aplicación perm ite m anejar los elementos de array de 4 x 4. Estos elementos son valores num éricos de tip o entero con los cuales se realiza los siguientes procesos: 1.- Suma las filas. 2.- Suma las colum nas 3.- Sum ar las diagonales, etc. a. MANEJO DE ARRAYS ■ ■ ■ - ! n | x ¡ C0L1 COL 2 COL 3 COLI FILA 1 [i [2 [6 p p - LIMPIAR EL ARRAY i F IU 2 |Í2 |— - p------- f -------- |20 LIMPIA LOS BESULTADOsj FIL43 p [5 [3 jÍ3 SUMA U S COLUMNAS | n w . p ------- [ío — p ----------p — p - SUMA LAS El LAS | [ _ _ | SUMAS INDEPENDIENTES ----- COLUMNA 1 | COLUMNA 2 | COLUMNA 3 | COLUMNA 4 | FILAI 1 FILA 2 | FILA3 1 FILM 1 1 DIAGONAL Ni 1 | ) | j DIAGONALN12 [ / ) ! |25 |15 SAUR 1 1 PASO N° 1: Dibujar los controles. Labell Label2 Label3 LabeM ......................... ■ |7^r fr¿r [ f ür l*™ ; Label5 Labelß ; 1 Text5 ¡Text6 |Text7 jíexl8 Label14 • - Command2 | • f r ^ T fie x iTö f í ^ ñ T f r 3 r t 2 Command3 | : Labd7 • Label8 |TexH3 ¡Text14 |TexH5 fTextlG L-abel16 : LabeB LabellO Labdl.1 Label12 : : : : : : : Command4 | Comrr¡aiid9 I Commandl 0 I Command'll I Commandl 2 I ; Commandl 3 Commandl 4 Labell 8 Labell 9 Commandl 5
  • 87.
    álll^ É I’'VISUAL BASIC como debe ser... PASO N° 2: Convertir las Cajas de Texto en un array. U tilic e cualquiera de las dos formas explicadas. Asigne el nom bre N a cada una de las cajas de Texto. PASO N" 3: Convertir las Etiquetas desde Label9 hasta Labell2 en un array de controles. Asigne a cada una de estas etiquetas el nom bre SC empezando por Label9 en form a ordenada hasta label 12, pero al fin al cambie el valor de la propiedad IN D E X de cada etiqueta de tal manera que Label9 se llam e SC, pero que su propiedad IN D E X tenga el va lo r 1, L ab ellO tenga en su propiedad IN D E X el valor 2, Label 11 tenga en su propiedad IN D E X el va lo r 3, Label 12 tenga en su propiedad IN D E X el valor 4. Para cambiar el va lo r de la propiedad IN D E X de cada control debe empezar por el ultimo (en el ejem plo em piece por Label 12). Esto nos perm ite program ar de una form a más cóm oda por que el array de controles empieza con el Indice uno (1) y no con el cero (0). PASO N° 4: Convertir las Etiquetas desde Labell3 hasta Labelló en un nuevo array de controles. Asigne a cada una de estas etiquetas el nom bre SF empezando p or Label 13 en form a ordenada hasta label 16, pero al fin al cambie el valor de la propiedad IN D E X de cada etiqueta de tal manera que Label 13 se llam e SF, pero que su propiedad IN D E X tenga el valor 1, Label 14 tenga en su propiedad IN D E X el valor 2, Label 15 tenga en su propiedad ÍN D E X el valor 3 y Label 16 tenga en su propiedad IN D E X el valor 4. MUY IMPORTANTE N o se olvide empezar por el ú ltim o co ntrol (en el ejem plo empiece por L a b e lló ) para cam biar el valor de la propiedad IN D E X . PASO N° 5: Asignar a los otros controles sus propiedades. La propiedad p rin c ip a l a m o d ific a r es C A P T IO N para los botones de comandos como para las etiquetas, algunas etiquetas tienen además en la propiedad B O R D E R S T Y L E el va lo r 1 -Single Fixed. 170 ^ G r u p o E d i t o r i a l Megabyte < ^ ¡||¡|| ¡ > CAPÍTULO III: Elementos de la Programación PASO N° 6: Escribir las instrucciones para los controles. En la ventana de declaración del fo rm u la rio defina las siguientes variables: Dim COL, F1L, X, ST As Integer Dim A(1 To 4, 1 To 4), SUMA(1 To 4) As Integer Crear el siguiente procedim iento en el fo rm u la rio . E ste p ro ced im ien to p erm ite p a sa r los valores alm a cen a d o s en las cajas d e texto a l a rra y d efin id o en la variable A. N O T A : E l ín d ice d el a rra y d o n d e se p a sa n los va lo res d e las ca ja s d e texto em p ieza n con el va lo r 1. Sub PASAR() X = 0 For COL = lT o 4 For FIL = lT o 4 A(COL, FIL) = Val(N(X)) X = X + 1 Next FIL Next COL End Sub Instrucciones para el evento FORM_ACTIVATE. Prívate Sub Form_Activate() ‘Al activarse el formulario llama al procedimiento ‘COMMAND1JCLICK (Limpia los valores) y al 'procedimiento COMMAND2_CLICK (Limpia los resultados) Commandl jC lick Command2_Cl ick End Sub Botón LIMPIAR EL ARRAY Private Sub Commandl_Click() 'Limpia los valores del array ForX - OTo 15 N(X) = "" Next X N(0).SetFocus End Sub Botón L IM P IA LOS RESULTADOS Prívate Sub Command2_Click() 'Limpia los resultados ForX - 1 To 4 SF(X) = "" SC(X) = "" Next X End Sub 171
  • 88.
    VISUAL BASIC comodebe ser.. In s tru c c io n e s d e l B o tó n S U M A L A S C O L U M N A S Private Sub C om m and3_C lick() ‘Llama al procedim iento "PASAR" PASAR ‘SUMA L AS CO LU M NAS D EL ARRAY F or COL = 1 To 4 SU M A(CO L) = 0 For FIL = 1 To 4 SU M A(CO L) = SU M A(CO L) + A(FIL, COL) N ext FIL N ext COL F o r X = 1 To 4 SC(X) = SU M A(X) N e x tX E nd Sub In s tru c c io n e s del B o tó n S U M A L A S F IL A S Prívate Sub C om m and4_C lick() ‘Llama al procedim iento "PASAR" PASAR ‘SUMA L AS FILAS D E L A R R AY F or FIL = I To 4 SU M A(FIL) = 0 For COL = 1 To 4 SU M A(FIL) = SU M A(FIL) + A(FIL, COL) N ext COL N ext FIL F or X = 1 To 4 SF(X) = SU M A(X) N e x tX End Sub Instrucciones: Botón COLUMNA 1 Instrucciones: Botón COLUMNA 2 Prívate Sub Command5_Click() Prívate Sub Command6_Click() ‘Suma sólo la columna 1 ‘Suma sólo la columna 2 ST = 0 PASAR PASAR ST = 0 Command2_Click Command2_Click ForX = 1 To 4 F orX = 1 To 4 ST = ST + A(X, 1) ST = ST + A(X, 2) NextX NextX S C (1 ) = ST SC(2) = ST End Sub End Sub G r u p o E d i t o r i a l M egabyte^ / CAPITULO III: Elementos de la Instrucciones: Botón COLUMNA 3 Prívate Sub Command7_Click() ‘Suma sólo la columna 3 S T - 0 PASAR Command2_Click For X = lT o 4 S T = S T + A(X, 3) NextX SC(3) = ST End Sub Instrucciones del Botón FILA 1 Prívate Sub Command9_Click() ‘Suma sólo la fila 1 ST = 0 PASAR Command2_Click F orX = I To 4 S T = S T + A(l, X) NextX SF( 1) = ST End Sub Instrucciones del Botón FILA 3 Prívate Sub Commandl 1 _Click() ‘Suma sólo la fila 3 ST = 0 PASAR Commcind2 _Click For X = IT o 4 ST = ST + A(3, X) NextX SF(3) = ST End Sub Instruc.:Botón DIAGONAL 1() Prívate Sub Commandl 3_Click() ‘Suma la diagonal 1 ( ) PASAR ST = 0 ForX = 1 To 4 ST = ST + A(X, X) NextX Labe! 18 = ST Eiul Sub Instrucciones:Botón COLUMNA 4 Prívate Sub Command8_Click() ‘Suma sólo la columna 4 S T = 0 PASAR Command2_Click ForX = lT o 4 ST = ST + A(X, 4) NextX SC(4) = ST End Sub Instrucciones del Botón FILA 2 Prívate Sub Commandl 0_Click() ‘Suma sólo la fila 2 ST = 0 PASAR Command2_Click For X = 1 To 4 ST = ST + A(2, X) NextX SF(2) = ST End Sub Instrucciones del Botón FILA 4 Prívate Sub Commandl 2_Clíck() ‘Suma sólo la fila 4 ST = 0 PASAR Command2_Clíck For X = 1 To 4 ST = ST + A(4, X) NextX SF(4) = ST End Sub Instruc.: Botón DIAGONAL 2 (/) Prívate Sub Commandl4_Click() ‘Suma la diagonal 2 ( / ) PASAR ST = 0 For X = 1 To 4 ST = ST + A(X, 5 - X) NextX Lab el 19 = ST End Sub 173
  • 89.
    VISUAL BASIC comodebe ser... APLICACIÓN DESARROLLADA N° 21 La siguiente aplicación perm ite realizar operaciones con arrays com o sumar dos arrays, restar, m ultip lica r, etc. m. O P E R A C IO N E S C O N A R R A Y S ARRAY "A " ARRAY "B " [a p¡ Í5 [5 [9 pr I3 |7 |-4 |7 1 10 Io |-5 |-1 I9 3 1 T r a n s p u e s t a | Transpuesta | RESULTADO I 13 I 8 1 4 Borrar | I 10 1 8 1 6 Llenar j 1 9 1 -2 i ° Salir j OPERACIONES : i ¿ urna i| R esta J M ultiplica [ divide | 2A * 3B PASO N° 1: Dibujar los controles D ib u je los controles com o de m uestran en el ejemplo. Para el 1er. Array, dibuje la lera., caja de texto y asígnele el nombre (Ñame) A, luego cópiela hasta tener 9 (desde A (0 ) hasta A ( 8)). A l 2do. Array, asígnele el nom bre B y al 3er.array (etiquetas) asígnele el nom bre R. Labell jTextl T extl Textl |T extl T extl Textl JT extl Textl Textl Commandl • ■ • Label2 |T e x t l J T extl |Text1 jTextl |Text1~ |T extl J Textl jT extl jTextl - • Command2 I • Label3 Label4 Label4 Label4 Label4 Label4 Label4 Label4 Label4 Label4 Command8 Commarid9 j Commandl 0 Framel Commands Command4 Commands Commands Command7 174 G r u p o E d it o r ia l M egab yte^ CAPÍTULO III: Elementos de la Programación PASO N° 2: Asignar las propiedades a los controles. A las etiquetas N° 1, 2 y 3, al Frame y a los C om m ands, asígneles en su C aption los mensajes com o en el ejem plo. PASO N° 3: Escribir las instrucciones para los controles. D efinir las variables a nivel de Formulario Dim X, F, C A s Byte Dim AA( 1 To 3, 1 To 3) A s Inte ge r Dim AB( ¡T o 3, 1 To 3) As Integer Dim AR( I To 3, ¡ To 3) As Single Instrucciones del Form_Activate. Prívate Sub Form_Activate() Rem Limpian el contenido de los arrays For X = OTo 8 A(X) = »" B(X) = "" R(X) = "" N extX A(0).SetFocus End Sub Instrucciones del Botón LLEN AR. Prívate Sub Command9_Click() • Rem Llenan los dos Arrays con valores entre -5 y ¡0. Randomize F o rX = OTo 8 A(X) = Int((10 - (-5) + l ) * R n d + (-5)) B(X) = Int((10 - (-5) + ¡) * Rnd + (-5)) N extX End Sub Instrucciones del Botón BO RRAR. Prívate Sub Command8_Click() Form_Activate End Sub Transpuesta para el Array A. Private Sub Command¡_Click() Rem Traspuesta del array A PASAR For F - ¡T o 3 For C = 1 To 3 AR(C, F) = AA(F, C) Next C Next F MOSTRAR End Sub Transpuesta para el Array B. Prívate Sub Commandl_Click() Rem Traspuesta del array B PASAR For F = 1 To 3 For C - ¡ To 3 AR(C, F) = AB(F, C) Next C Next F MOSTRAR End Sub
  • 90.
    Ufo VISUAL BASICcomo debe ser... Instrucciones del Botón SUMAR. Prívate Sub Command3_Click() Rem Suma los valores. PASAR For F ■= 1 To3 For C = 1 To 3 AR(F,C)=AA(F,C)+AB(F,C) Next C Next F MOSTRAR End Sub Instrucciones del Botón RESTAR. Prívate Sub CommandA_Click() Rem Resta los valores. PASAR For F - 1 To 3 For C = 1 To 3 AR(F,C)=AA(F,C)-AB(F,C) Next C Next F MOSTRAR End Sub Instrucciones del Botón MULTIPLICAR. Prívate Sub Command5_Click() Rem Multiplicación los valores de los Arrays Dim Y As Byte PASAR For F - 1 To 3 For C - 1 To 3 AR(F, C) = 0 For Y = 1 To 3 AR(F, C) = AR(F, C) + (AA(F Y) * AB( Y, C)) Next Y Next C Next F MOSTRAR End Sub Instrucciones del Botón 2A + 3B (Multiplicación Escalar). Prívate Sub Command7_Click() Rem Multiplicación Escalar 2A.3B PASAR For F = 1 To 3 F orC = 1 To 3 AR(F, C) = AA(F, C )* 2 + AB(F, C) * 3 Next C Next F MOSTRAR End Sub 176 G r u p o E d i t o r i a l Megabyte CAPITULO III: Elementos de la Programación Instrucciones del Botón DIVIDIR. Prívate Sub Command6_Click() Rem Divide los valores de los Arrays PASAR For F = 1 To 3 For C = 1 To 3 I f AB(F, C) o O Then AR(F, C) = AA(F, C)/AB(F, C) End If Next C Next F Rem Muestra los resultados con 2 decimales Dim N As Byte For F = 1 To 3 For C = 1 To 3 R(N) = Format(AR(F, C), "##0.00") N = N + 1 Next C ■ Next F End Sub Instrucciones del PROCEDIMIENTO PASAR. Sub PASAR() 'Pasan los elementos desde los Text al Array Bidimesional. Dim N As Byte For F = 1 To 3 ForC = 1 To 3 AA(F, C) = A(N) AB(F, O = B(N) N = N + 1 Next C Next F End Sub Instrucciones del Botón MOSTRAR. 'Muestran los resultados en el array R (etiquetas). Sub MOSTRARO Dim N As Byte For F = 1 To 3 For C = 1 To 3 R(N) = AR(F, C) N = N + I Next C Next F End Sub 177 «
  • 91.
    A S ifr VISUAL BASIC como debe ser... ERRORES MAS COMUNES S i a l ejecu ta r o d esa rro lla r una a p lica ció n se m u estra un m en sa je de error, trate d e so lu cio n a rlo Ud., m ism o, d e esa m anera es p o c o pro b a b le c¡ue lo vuelva a com eter. Microsoft Visual Basic Compile error: Variable not defined Aceptar Ayuda Variable no definida. Está usando una variable sin definirla. Defina la variable o borre OPTION E X P LIC IT del objeto GENERAL. Microsoft Visual Basic Compile error: * Expected: list separator o r) [ Aceptar ] Ayuda Se esperaba separador de lista o paréntesis. Verifique que ha cerrado paréntesis. Microsoft Visual Basic Compile error: Expected: Then or GoTo Aceptar j l Avuda Run-time error '13': Type mismatch End Debug 178 Se esperaba THEN. Probablemente se o lvid o de escribir T H E N después de la condición en la instrucción IF. — I Help Error de Tipo Los Datos o variables son de diferente tipo. G r u p o E d i t o r i a l Megabyte CAPÍTULO III: Elementos de la Programación P R E G U N T A S D E R E P A S O N g 0 3 1. Por defecto una variable es de tipo: 2. Escriba la sintaxis de la función M sgbox. 3. Por qué es im portante Setfocus. 4. ¿Qué debe hacer para que no se produzca un error cuando se quiere u tiliz a r una variable no declarada o definida? 5. E xplique los atributos de una variable. 6. Explique las características de una variable, Local, a N iv e l de Form ulario y Global. 7. ¿Cómo se activa la ventana para declarar variables a N ivel de M ódulo? 8. ¿Cómo se declara la variable A de tip o Integer y de ám bito G lobal. 9. Una variable num érica por defecto tiene el v a lo r .....y la de tipo cadena 10. ¿Cómo se borra el contenido de una caja de textos? 11. ¿ Q ué v e n ta n a se v is u a liz a co n la s ig u ie n te in s tru c c ió n ? R = M S G B O X (“ A C C E S O D E N E G A D O ” ,2 l , ” L O S IE N T O ” ) 12. De la pregunta anterior ¿Qué v a lo r tom a la variable R si el usuario hace c lic k en Cancelar? 13. ¿ Q ué v e n ta n a se v is u a liz a c o n la s ig u ie n te in s tru c c ió n ? T = M S G B O X (“ F IN A L IZ A L A A P L IC A C IO N ” ,36,’’R E S P O N D A ” ) 14. ¿Qué ventana se visua liza con la siguiente instrucción? M S G B O X “ Bienvenido al Sistema” . 15. Escriba los Iconos y Botones con su respectivo va lo r que podemos visualizar en el M sgbox. 16. ¿Qué valores puede devolver el M sgb ox y a qué botón pertenece? 17. ¿Qué función cum ple: C H R (13)? 18. ¿Qué es una palabra reservada y con qué palabra reservada se define una variable y qué fu nció n cumple? 19. ¿Si en la ventana de declaración de variables se tiene la instrucción O P T IO N E X P L IC IT qué significa? 20 ¿Cuantos tipos de procedim ientos existente? IM P O R T A N T E Con los conocim ientos adquiridos hasta ahora ya está en condiciones de desarrollar m uchas Aplicaciones. 1 7 9
  • 92.
    CAPITULO IV SISTEMA DE VENTAS Castañeda O 5 4:42 AM H O R A mm : |11:18:25 PM 'v'rSrarl-ir—•• I MEJORANDO EL ASPECTO DE LOS FORMULARIOS
  • 93.
    f I MA R C O ( F R A M E ) : IIB p Es un control que se u tiliz a para m ejorar el aspecto de un fo rm u la rio y para agrupar controles de tal manera que se puedan m anejar como un sólo co n tro l. Se puede d ib u ja r sobre controles que están en el fo rm u la rio , los cuales quedarán ocultos. Pulse las teclas < C T R L > + < K > para restaurar o visua liza r los controles ocultados. Esto no sucede con las etiquetas, por lo que se recomienda d ib uja r prim ero el F R A M E y luego las etiquetas (Label). PRIN C IPALES PRO PIEDAD ES D E UN FRAM E: Ñ A M E Perm ite asignarle un nom bre. Por defecto el nom bre es F ra m e l, Frame2, Frame3 etc. Según el núm ero de marcos que se dibujen en el form u la rio . B A C K C O L O R Selecciona un c o lo r de fondo para el marco. B O R D E R S T Y L E Selecciona el estilo del borde. C A P T IO N A signa un T ítu lo al marco. E N A B L E D Perm ite que el m arco se encuentre activo o no. F O N T Para cam biar el tipo, tamaño y estilo de letra. F O R E C O L O R A signa un co lo r de las letra. M O U S E P O IN T E R Para seleccionar el tipo de puntero de mouse. V IS IB L E Para indicar si se debe m ostrar el marco. N O T A : Para agrupar varios controles en un m arco, prim ero dibuje el m arco y encim a los controles. C ualquier p ro piedad que le cam bia al m arco será también para los controles que se encuentran dentro de él. w m ■ « m m
  • 94.
    VISUAL BASIC comodebe ser.. . - E je m p lo : U d. puede desarrollar la siguiente aplicación usando marcos. a .. M A T R I C U L A D E A L U M N O S - D A T O S P E R S O N A L E S Nombre Dirección T eléfono j" A SIG N A N D O COLORES Q B C O L O R : Es una fu nció n que perm ite asignar colores. Su sintaxis es QBCOLOR(Valor). E l va lo r es un num ero entre 0 y 15 que representa el va lo r a asignar: COLOR OSCURO CLARO Negro 0 8 Azul 1 9 Verde 2 10 Aguamarina 3 11 Ro j o 4 12 Fucsia 5 13 Amarillo 6 14 Blanco 7 15 La siguiente in stru cció n asigna el c o lo r azul claro al fo rm u la rio N° 1: Form l.B ackC olor = QBColor(9) R G B : Es una fu nció n que perm ite asignar un c o lo r que se obtiene de los colores R ojo, Verde y A zu l. Su sintaxis es: RG B (Valorl, Valor2, Valor3). Los tres valores pueden ser un núm ero entre 0 y 255 que representan la intensidad asignada a los colores Rojo, Verde y A z u l para obtener el c o lo r deseado. El V a lo rl representa la intensidad asignada al co lo r Rojo, el Valor2 representa la intensidad asignada al co lo r Verde y el valor3 la intensidad para el c o lo r A zu l. L a sig u ie n te in s tru c c ió n asigna un c o lo r rosado al fo rm u la rio N ° l: F orm l.B ackC olor = RGB(255, 0, 190) G r u p 184 o E d i t o r i a l Megabyte F IG U R A S (S H A P E ): 0 Es un control que se utiliza para mejorar el aspecto de un form ulario dibujando figuras de diferente form a. P R IN C IP A L E S P R O P IE D A D E S D E U N S H A P E : Ñ A M E Perm ite asignarle un nom bre. Por defecto el nom bre es S hapel, Shape2, Shape3 etc. Según el núm ero de figuras que se dibujen en el fo rm u la rio . B A C K S T Y L E Selecciona el estilo del fondo para la figura. B O R D E R C O L O R A signa un co lo r para el borde de la figura. B O R D E R S T Y L E A signa el estilo del borde. B O R D E R W ID T H Para cam biar el ancho del borde. F IL L C O L O R A sig na el co lo r que rellena la figura. F IL L S T Y L E Para ind icar el estilo del llenado de la figura. S H A P E Para seleccionar el tip o de la fig u ra que deseamos I Shape lo - RectanaleHfföSS*‘ 0 - Rectangle 1 - Square 2 - Oval 3 - Circle 4 - Rounded Rectangle 5 - Rounded Square
  • 95.
    M ___________________ ____o W t&Im VISUAL BASIC como debe ser.. . LINEA (LINE): Es un control que se utiliza para m ejorar el aspecto de un form ulario dibujando líneas. PRIN C IPALES PRO PIED AD ES D E L CONTROL LIN E: ÑAME Perm ite asignarle un nom bre. Por defecto el nom bre es L in e l, Line2, Line3 etc. Según el núm ero de líneas que se dib uje n en el fo rm ulario. BORDERCOLOR A signa un co lo r para el borde de la línea. BORDERSTYLE A signa el estilo del borde. BORDERWIDTH Para cam biar el ancho del borde. DRAWMODE A signa el m odo de la línea. VISIBLE Para in d icar si se desea visua liza r la figura. Ejemplo : El siguiente fo rm u la rio presenta algunos ejem plos de figuras y líneas que se pueden d ib u ja r en una aplicación. O Y ¡¡Etiqueta d en tro de la Ftguid • ....... 1 8 6 G r u p o E d i t o r i a l M egab yte^ P IC T U R E B O X (C A J A D E IM A G E N ): Es un control que se u tiliza para m ejorar el aspecto de un form ulario insertando dibujos o gráficos. Estos gráficos pueden ser M ap a de B its, Iconos o M e ta rc h ivo s. Los g rá fico s que se m uestran en este c o n tro l tom an automáticamente el mismo tamaño del control. Los archivos m apa de bits, son imágenes representadas por pixeles. Normalmente estos archivos tienen la extensión *.BMP. Los Iconos son gráficos que se utilizan normalmente para representar aplicaciones minimizadas en M icrosoft W indows. Estos archivos tienen la extensión *.IC O . Los M eta rchivos representan gráficos como líneas, círculos, etc., como pixeles. Estos archivos normalmente tienen la extensión *.W M F. El este control también puede mostrar archivos Metarchivos mejorados con la extensión *.JPG y *.GIF. Ud., p u ed e utilizar cualquiera de los gráficos que estén instalados en su com putadora o crear sus propios gráficos utilizando p o r ejem plo el Paintbrush. PRINCIPALES PROPIEDADES DE UN PICTURE BOX: ÑAME Perm ite asignarle un nombre. Por defecto el nom bre es P ic tu re l, Picture2, Picture3, etc. APPEARANCE Para seleccionar la apariencia del control. AUTOSIZE Para ind icar si el g ráfico debe visualizarse con su tamaño o rigin al o según el tamaño del PictureBox. BACKCOLOR Selecciona un co lo r para el fondo. BORDERSTYLE A signa el estilo del borde. DRAWSTYLE Asigna el estilo de línea de los círculos y cuadros creados con los métodos gráficos. DRAWW IDTH Asigna el ancho de línea de los círculos y cuadros creados con los métodos gráficos. E N A B L E D A c tiv a o desactiva el control.
  • 96.
    Ufo VISUAL BASICcomo debe ser. FILLCOLOR A sig n a el co lo r que se usado para llenar formas, también se usa para llenar círculo s y cuadros creados con los métodos gráficos C ircle y Line. FILLSTYLE A sig na el estilo de relleno para los controles Shape, así com o los círculos y los cuadros creados con los métodos gráficos C ircle y Line. FONTTRANSPARENT In dica si el texto y los gráficos de fondo de un objeto Form o Printer, o de un c o n tro l P ictureB ox, se muestran en el espacio situado entre los caracteres. FORECOLOR A sig n a el co lo r para los círculos y los cuadros creados con los métodos g rá fico s C ircle y Line. Para que se active el co lo r asignado, la propiedad D ra w m o de debe tener el va lo r 13 - C opy Pen PICTURE Selecciona el g ráfico o d ib u jo que se desea insertar en el fo rm u la rio . Ud. debe buscar el d ire cto rio donde se encuentran estos gráficos. SCALEMODE In dica m ediante un va lo r la unidad de medida de las coordenadas del control. l= T w ip , 2 = P u n to s, 3 = P ix e l, 4 = C a rá c te r, 5 = P u lg a d a , 6= M ilím e tr o , 7=centím etro. SCALEWIDTH Indica el valor m áxim o del ancho de un control cuando se u tiliza instrucciones para gráficos. SCALEHEIGHT Indica el valor m áxim o de la altura de un control cuando se utiliza instrucciones para gráficos. VISIBLE Para in d ic a r si se desea visualizar el d ib u jo o gráfico. Ejemplo de una aplicación con el control PictureBox. n r m — n i mi 11« ■ miman m in in a ........... i- Información dei A lum no...... -................................... Alumno j I Curso ! Nota N* 01 | Nota N 9 02 I Promedio Observación Opc/ones Dispan/bfes : N uevo Calcular el Promedio Salir 188 G r u p o E d i t o r i a l M egabyte^ METODOS GRÁFICOS ■ Son instrucciones que operan sobre un objeto com o un Form , PictureBox, P rinter y efectúa operaciones de d ib u jo en tiem po de ejecución com o una anim ación o sim ulación. Los métodos gráficos son: CIRCLE Perm ite d ibujar círculos, una elipses o arcos. Sintaxis: C ircle (x,y), radio, co lo r Si se om ite el co lo r se tom a el de la propiedad Forecolor. Los argumentos X ,Y es el punto central del círculo. Por ejem plo, la siguiente instrucción d ib uja un círculo en un control P ictu reB o x de c o lo r rojo. P ic tu re l.C irc le (1 0 00 ,4 00 ), 250, R G B (2 5 5 ,0 ,0 ) Las características del círculo dependen de los valores asignados a las pro­piedades: D raw style, F illco lo r, etc. Para crear elipses o arcos u tilic e la sintaxis: C ircle (x,y), radio, color, in icio , fin , aspecto In ic io y Fin, se u tiliza n para especificar en radianes las posiciones de in ic io y de fin del arco. El intervalo para ambos es de -2 p i radianes a 2 p i radianes. El v a lo r predeterm inado para in ic io es 0 radianes; el va lo r predeterm inado para fin es 2 * pi radianes. Aspecto, es un va lo r de precisión sim ple que ind ica la relación de aspecto del círculo. E l valor predeterminado es 1.0, lo que produce un círculo perfecto. LINE Perm ite d ibujar líneas o rectángulos. Sintaxis: Line (xl, yl) - (x2, y2), [color], [B][F] X I y Y l , es el punto in ic ia l de la línea o rectángulo. X 2 y Y 2 , es el punto fin a l de la línea o rectángulo. B Es opcional. Si se incluye, hace que se dibuje un cuadro usando las coordenadas para especificar las esquinas opuestas del cuadro. F Es opcional. Si se utiliza la opción B, la opción F especifica que el cuadro se llena con el m ism o color utilizado para dibujar el cuadro. No puede utilizar F sin B. Si se utiliza B sin F, el cuadro se llena con los valores actuales de F illC o lo r y FillStyle. El valor predeterminado para F illS tyle es transparente.
  • 97.
    é B Bfa - VISUAL BASIC como debe ser... La siguiente instrucción dibuja una línea en el control P ictureB ox. P ic tu r e l.L in e (100, I0 0 )-(8 0 0 , 1000) L a siguiente instrucción d ibuja un rectángulo en el co ntrol PictureB ox. P ic tu r e l.L in e (100, 100)-(800, 1000), , B E l co lo r de los gráficos que se dibujan en el ejem plo, depende de la p ro pie ­dad Forecolor porque no se a especificado el color. C L S B o rra el texto o los gráficos d ibujado en el fo rm u la rio o en el co ntrol P ictureBox. Por ejem plo la siguiente instrucción borra lo dibujado en el p rim e r control P ictureBox. P ic tu r e l. cls P R IN T M uestra un texto en un fo rm u la rio o en el co ntrol PictureBox. Por ejem plo la siguiente instrucción muestra el texto “ D IB U J A N D O ” en el p rim er control PictureBox. P ic tu r e l.P r in t " D IB U J A N D O ” APLICACIÓN DESARROLLADA N° 22 En la siguiente aplicación se muestra dentro de tres controles Picturebox círculos, líneas y rectángulos con un tamaño, co lo r y posición al azar. Finalizar G r u p o E d i t o r i a l Megabyte ~4l p l i | Métodos Gráficos P A S O N ° 1: D ib u ja r los co n tro le s: D ib u je 3 P ictureB ox, un botón de comandos y un Tim er. ¡i. Formi Command! P A S O N ° 2: E scrib ir las instrucciones para los controles. Debe crear 3 procedim ientos para que cada uno de ellos dib uje círculos, líneas y rectángulos. Rem Definición de las variables Public maxcolumna, maxfila, color As Integer Public coll, col2, fill, fil2 As Integer Sub lineas() maxcolumna = Picture2.ScaleWidth maxfila = Picture2.ScaleHeight coll = Int((maxcolumna - 1 + 1 ) * Rnd + 1) fill = Int((maxfila - 1 + 1 ) * Rnd + 1) col2 = Int((maxcolumna - 1 + 1 ) * Rnd + 1) fil2 = Int((maxfila - 1 + 1 ) * Rnd + 1) color = I nt((14 - 1 + 1) * Rnd + 1) Picture2.ForeColor = QBColor(color) Picture2.Line (coll, fill)-(col2, fil2) End Sub P r i v a t e S u b T i m e r l _ T i m e r () c í r c u l o s l i n e a s r e c t á n g u l o s E n d S u b P r i v a t e S u b F o r m _ L o a d ( ) R a n d o m i z e T i m e r l . I n t e r v a l = 1 0 0 E n d S u b 191
  • 98.
    éS iñ k> VISUAL BASIC como debe ser... Sub círculos() Dim columna, fila, margder, margsup, margderm As Integer Dim margsupm, maxradioder, maxradiosup, radio As Integer maxcolumna = Picturel.ScaleWidth maxfila = Picturel.ScaleHeight columna = Int((maxcolumna - 1 + 1 ) * Rnd + 1) fila = Int((maxfila - 1 + 1 ) * Rnd + 1) margder = Picturel.ScaleWidth 'máximo ancho margsup = Picturel.ScaleHeight ' máxima altura Reí7i Obtiene el punto central del. control picture margderm = Picturel.ScaleWidth / 2 margsupm = Picturel.ScaleHeight / 2 color = Int((14 - 1 + 1 ) * Rnd + 1) 'Color al azar If columna>margderm Then maxradioder=margder-columna El se maxradioder = columna End If If fila > margsupm Then maxradiosup = margsup - fila El se maxradiosup = fila End If If maxradioder > maxradiosup Then radio = maxradiosup El se radio = maxradioder End If Picturel.ForeColor = QBColor(color) Picturel.Circle (columna, fila), radio If (Int(Timer) Mod 10) = O Then Picturel.Cls Picture2.Cls Picture3.Cls Randomize End If End Sub Sub rectángulos() maxcolumna - Picture3.ScaleWidth maxfila = Picture3.ScaleHeight coll = Int((maxcolumna - 1 + 1 ) * Rnd + 1) fill = Int((maxfila - 1 + 1 ) * Rnd + 1) col2 = Int((maxcolumna - 1 + 1 ) * Rnd + 1) fil2 = Int((maxfila - 1 + 1 ) * Rnd + 1) color = I nt((14 - 1 + 1) * Rnd + 1) Picture3.ForeColor = QBColor(color) Picture3.Line (coll, fill)- (col2, fil2), , B End Sub 192 G r u p o E d i t o r i a l Megabyte < BUSCANDO GRAFICOS EN LA COMPUTADORA N orm alm ente los gráficos que Ud. puede insertar se encuentran en la carpeta G raphics que se encuentra dentro de Vb. Tam bién puede insertar gráficos del M ic ro s o ft O ffic e que norm alm ente se encuentran en la siguiente ruta: C :A rch ivo d e P m g rg m a sM ic ro so ft O ffic e C lip a rtP o p u la r Si desea buscar en el disco de su com putadora todos los gráficos que puede insertar, siga los siguientes pasos: Haga un C lic k en el Botón In ic io de la barra de tareas del W indow s y e lija la opción Buscar y luego A rch ivo s o Carpetas. Archivos o carpetas... PC... ^ Mediante Miciosoft Outlook... á l ~É1 Programas ► ----- 3 Documentos ► m Configuración ► Buscar ► | 1 ^ Ayuda Ejecutar... í y j Suspender ^ j j Apagar el sistema... |i;ÍH jn iciq i 2. Visualizará la siguiente ventana: m Buscai: todos los archivos A rch ivo E dición V e r O pciones A yu d a Nom bre y ubica ción | F e ch a de m odificación ] A va n zad a s j Nombre: Buscar en: |M i PC -w j Examinar., in clu ir subcarpetas Buscar ahora | N u e va búsqueda A En la caja de textos N O M B R E : escriba un asterisco (* ) y luego un punto seguido de la extensión del tipo de a rchivo g ráfico que desea buscar.
  • 99.
    H- VISUAL BASICcomo debe ser.. Por ejem plo: Para buscar todos los archivos gráficos que tengan la extensión BM P, se debe escribir: *.B M P Si desea buscar varios tipos de archivos gráficos a la vez, indíquelos separados por un espacio en blanco. Por ejem plo: para buscar todos los gráficos con la extensión BM P, IC O y W M F , debe escribir: *.B M P *.IC O * .W M F En la caja de textos B U S C A R EN: seleccione M I PC para que los archivos gráficos se busquen en todos los discos de su computadora. Así: A rc h iv o E dición V e r O p cio n e s A y ü d a N om bre y u b ic a c ió n j F e c h a de m o d ific a c ió n | A v a n z a d a s j --------------- 3 Nom bre: |*.B M P " ICO X.W M P B uscar en: |M i PC Exam inar.. W in c lu ir subcarpetasj B uscar a hora I N u e v a b ú sq ue d a A 3. Haga c lic k en el botón B U S C A R A H O R A para que empiece la bús­queda de todos los archivos que tienen las extensiones indicadas (ar­chivos gráficos). Por cada a rchivo que se encuentra se visualiza la ruta exacta donde está ubicado para que al u tiliz a r la propiedad P IC T U R E U d., pueda buscar la carpeta y ubicarlos rápidamente. H Buscar: archivos co n nombre “ .BMP “ .ICO " W M P ¿Archivo Edición Ver Qpciones Ay¿jd» Nombre y ubicación j Fecha de modificación ] Avanzadas j |q»x i Nombre |- BMP “ ICG “ WMP Buscar jMiPC fv? incluir subcarpetas ~Ei I Buscar ahora I ¿•Jueva búsqueda I I En carpeta | Tama... | Tipo Modificado ■*- I Notel 6. ico Notel 7.ico Notel 8.ico PenOI .ico Pen02.ico ^*Pen03.ico « í C:Archivos de prograrrtaSDevStudioWBSGraphi... C:Archivos de programaSDevStudioWBSGraphi... C:Archivos de prograrnaDevStud¡oVBGraphi... C:Archivos de programaDevStudioVBGraphi... C:Archivos de programaDevStudioW/B.Graphi .. C:VArchivos de programaDevStudioVBGraphi 2KB Icono 2KB Icono 2KB Icono 2KB Icono 2KB Icono 2KB Icono 20/02/97 12:00 AM 20/02/97 12:00 AM 20/02/97 12:00 AM -----1 20/02/97 12:00 AM 20/02/97 12:00 AM 20/02/97 12:00 AM — | 1 61 6 archivo(s) encontrado(s) NOTA: • Para visualizar la ruta com pleta de cada archivo am plíe la colum na En Carpeta. • A rchivos que se muestren depende de los que tenga instalados en su com putadora. 1, n94, G r u p o E d i t o r i a l Megabyte^ IM A G E ( IM A G E N ) : Este control perm ite m ostrar gráficos en un fo rm u la rio , sim ila r al control P ictureBox. Se diferencian porque el co ntrol Im agen no tiene ninguno de los métodos gráficos ni todas las propiedades y otros métodos que el control P ictureBox tiene. E l tamaño del g rá fico que se alm acena en este control no depende del tamaño del control, si no que u tiliz a su propio tamaño. La propiedad Stretch determ ina si el tamaño del g ráfico depende del tamaño del control. T IM E R ( R E L O J ): Es un control que se u tiliz a para poder ejecutar instrucciones cada cierta cantidad de segundos. Puede ayudar a m ejorar el aspecto de un form u la rio . PRINC IPALES PRO PIED AD ES D E UN TIM ER: Ñ A M E Perm ite asignarle un nombre. Por defecto el nom bre es T im e rl, Tim er2, Tim er3 etc. Según el núm ero de controles que se dibujen en el form u la rio . E N A B L E D Permite que el co n tro l se encuentre activo o no. IN T E R V A L Indica el tiem po en que se deben ejecutar las instrucciones. El va lo r 1000 indica cada segundo. Las instrucciones que queremos que se ejecuten cada cierto tiem po se deben escribir en el E v e n to T im e r de este control.
  • 100.
    VISUAL BASIC comodebe ser.. < APLICACIÓN DESARROLLADA N° 23 En la siguiente aplicación se u tiliza n funciones tratadas anteriorm ente y ejem plos de cóm o m ejorar el aspecto del fo rm u la rio : FECHA : J21 -07-1S - V e n ia d e P ro d u c to s : Nombre del Producto JJ-Precio Unitario Cantidad T I.G.V. J” Total I-L o q u e p u e d e h a c e r : — ^ I J j u e v o ] f í e s u l t a d o s PASO N° 1: DIBUJAR LOS CONTROLES: Labell Label2 ■ Framel---------------- Label5 (Textl Label6 |jext2 Label7 |t ext3 Label3 Label4 Label8 Labell 1 Label9 Labell 2 Labell 0 Labell 3 © -Frame2------------ Command! Command2 Command3 PASO N° 02: ASIGNAR LAS PROPIEDADES. Asígnele las propiedades a cada uno de los controles que se muestran en el form ulario, de tal manera que tenga un aspecto sim ilar a la aplicación planteada. NOTA: Los botones de comandos deben tener en su propiedad S Y T LE el valor 1 Gráfico y en su propiedad PICTURE asígnele los gráficos indicados. Los nombres de los gráficos en el orden que se muestran en la aplicación a desarrollar son: PAINT.BMP, PREVIEW.BMP, POINT4.1CO, que normalmente se encuentran en la siguiente carpeta: Archivos de ProgramaDevStudioVbGraphics ^ |||jj|Íf^ 196 G r u p o E d i t o r i a l Megabyte T > CAPITULO IV: Mejorando el Aspecto de los Formularios ^ El g rá fic o del control PICTUREBOX se llam a DINERO.WMF, que norm alm ente se encuentra en la carpeta: A rch ivo s de P rogram aSM icrosoft O ffic e C lip a r tP o p u la r Búsquelos, y si no los encuentra practique insertando otros gráficos. A las etiquetas donde se muestran la fecha y hora no les asigne ninguna propiedad, porque se visualizan cuando se ejecuta el programa. E l control Timer lo puede d ib u ja r en cualquier parte del fo rm u la rio porque cuando ejecuta la aplicación no se visua liza y tiene un solo tamaño. PASO N° 03: E scrib ir las instrucciones de cada control. Instrucciones del B. Calcular Prívate Sub Command2_Click() Instrucciones Form Activate Prívate Sub Form_Acüvate() Textl = "" Text2 = "" Text3 = "" L a b elll = "" Labell2 = "" Labell3 = "" Textl.SetFocus End Sub Instrucciones del botón Nuevo. Dim ST, IGV, TPAs Single ST = Val(Text2) * Val(Text3) IGV= S T * 18/100 TP = ST+ IG V Labell 1 =Format(ST, "###,##0.00") Labell2=Format(IGV, "###,##0.00") Labell3=Format(TP, "###,##0.00") End Sub Private Sub Commandl_Click() Form_Activa te End Sub Instrucciones del botón Salir Prívate Sub Command3_Click() Dim R As Integer R = MsgBox("Está seguro de salir", 36, "Cuidado") If R = 6 Then End End Sub Instrucciones del Evento L O A D : Visualizan la fecha del sistema en la etiqueta 2, y la palabra VENTAS en el Caption del formulario y activan las instrucciones del control TIMER. P r í v a t e S u b F o r m _ L o a d ( ) L a b e l 2 = F o r m a t ( D a t e , " d d - m m - y y y y " ) F o r m l . C a p t i o n = "VENTAS" + S p a c e (5 0 ) T i m e r 1 . I n t e r v a l = 1 0 0 E n d S u b Instrucciones del control T IM E R : Visualizan la hora en la etiqueta 4 y mueven la palabra VENTAS en el título del formulario. P r i v a t e S u b T i m e r l _ T i m e r () L a b e l 4 = F o r m a t ( T i m e , " h h :mm: s s AMPM") Forml.Caption = Mid(Forml.Caption, 2) + LeftfForml.Caption, 1) E n d S u b 1 9 7 i n *
  • 101.
    áülÉÉ^ VISUAL BASICcomo debe ser... APLICACIÓN DESARROLLADA N° 24 En esta aplicación se u tiliz a la instrucción P R IN T que perm ite escribir mensajes directam ente en el fo rm u la rio y T A B para dejar espacios antes de im prim ir. Esta aplicación es una pantalla de presentación con un texto de fondo, una etiqueta cuyo contenido va m odificando su tamaño y un gráfico que se mueve de derecha a izquierda. « PANTALLA DE PRESENTACION Visual Basic como debe ser... Visual Basic como debe ser... Visual Basic como debe ser... Visual Basic como debe ser... Visual Basic como debe ser.. Visual Basic como debe ser. V IS U A L IA % I4 H SI3E3 Juan José Castañeda León Juan José Castañeda León Juan José Castañeda León Juan José Castañeda León Juan José Castañeda León Visual Basic como debe ser... Visual Basic como debe ser... Visual Basic como debe ser... Visual Basic como debe ser.. Visual Basic como debe ser. OK Visual Basic como debe ser... Juan José Castañeda León Juan José Castañeda León Juan José Castañeda León Juan José Castañeda León Juan José Castañeda León j Juan José Castañeda León Juan José Castañeda León Juan José Castañeda León Juan José Castañeda León Visual Basic como debe ser... Visual Basic como debe ser... Visual Basic como debe ser... Juan José Castañeda León Visual Basic como debe ser... Juan José Castañeda León P A S O N ° 0 1 : Debe d ib u ja r en el fo rm u la rio una e tiq u e ta (L a b e l), un gráfico(picturebox), un reloj (tim e r) y un botón de comandos (com m and). A la etiqueta, al botón de com ando y al fo rm u la rio , m odifíqueles su propiedad C aption com o se muestra en la fig u ra anterior: «i. Form! Labell a m G rupo E ditorial M t « PASO N 2 02: Escribir las instrucciones. D e fin ir las variables a u tiliz a r en la sección de declaración del fo rm u la rio . 1 01 Project! - Formi (Code) r ° M |(General) jrJ 1 (Declarations) Dirn T, N As Irxteger ▼ : ■-ill jlP E s c rib ir las instrucciones en el evento A C T IV A T E del fo rm u la rio para que se ejecutan cuando el fo rm u la rio se activa. Estas instrucciones muestran un texto de fondo en el fo rm u la rio . Prívate Sub Form_Activate() Dím X As Integer 'Ancho del Formulario Forml.Wídth - 6400 'Altura del Formulario Forml.Height = 3330 Labell.AutoSíze = True For X = 1 To 35 Print T a b ( X) "V is u al Basic como debe ser. . . Print Tab(60 - X); "Juan José Castañeda León" Next X 'Posición inicial del Gráfico T = 6000 'Puesta en marcha del Reloj Timerl.Interval = 1 0 End Sub Instrucciones del Evento T IM E R Prívate Sub Timerl_Timer () N = N + 1 If N > 30 Then N = 1 End If T = T - 50 If T < -600 Then T = 6000 End If Picturel.Left = T Labell.FontSize = N End Sub El botón O K debe tener la instrucción E N D .
  • 102.
    |¡ ! ¡l i > VISUAL BASIC como debe ser... IMAGELIST (LISTA DE IMAGENES): S 1 Este co ntrol perm ite almacenar imágenes o gráficos con la extensión IC O (*.IC O ) y con la extensión B M P (*.B M P ) en la m em oria de la com putadora para poder m anipularlos en nuestro program a. Si no se encuentra en la caja de herram ientas debe seguir cualquiera de los siguientes pasos: 1. En la caja de herramientas haga c lic k con el botón derecho y e lija la opción C O M P O N E N T E S . 2. De la opción P roject e lija C O M P O N E N T E S . 3. Pulse las teclas < C R T L > + <T >. De la lista de componentes haga c lic k en la casilla del co ntrol llam ada: Microsoft Windows Common Controls 5.0. Tam bién se puede llam ar este co ntrol, si elegim os la opción C O N T R O L E S D E VB E D IC IO N E M P R E SA R IA L , en el m om ento de ingresar a V isual Basic o crear un nuevo proyecto. PRINCIPALES PROPIEDADES DE UN IMAGELIST: Las propiedades principales del control se obtiene con sólo elegir la propiedad C ustum ize (personalizado). Se visua liza la siguiente ventana con tres hojas o fichas: General, Imágenes y color. P á g in a s d e p r o p ie d a d e s í j « n * r . * ! j ] Im á g e n e s J C o lo r H e ig h t: | W id th : f r - 1 6 X 1 6 3 2 x 32 r - 4 8 X 4 8 C u s to m 1 ^ J U s e M a s k C o lo r t m A c e p ta r | C a n c e la r | A y u d a La hoja General, perm ite asignar la altura y el ancho para los gráficos que se van a alm acenar en este c o n tro l. Estos valores se pueden cam biar solamente cuando el control no tenga ningún g rá fico almacenado. 200 G r u p o E d i t o r i a l Megabyte El contenido de la Hoja Im ágenes es: w n G e n e r a l [ i m á g e n e s |) C o l o r Im agen actual Index: h &ey: 1 lag: 1 Imágenes: U Insertar imagen.. ! Quitar imagen I Núm ero de imágenes: A c e p ta r j C ancelar En esta hoja podemos adicionar o e lim inar más gráficos del control imagelist. E l botón Insertar Imagen perm ite buscar y seleccionar una im agen para adicionarla. El botón Quitar Imagen perm ite borrar una imagen. En la caja de textos Key, se puede asignar uno o más caracteres que van a id e n tific a r a cada im agen almacena en el control. En la caja de textos Tag se puede e scribir un texto el cual queda almacena­do para poder u tiliz a rlo en cualquier m om ento si lo deseamos. En la caja de textos Index se visualiza el núm ero de im agen activa y p e rm i­te activar a cualquier otra imagen. En la etiqueta N úm ero de Imágenes se visualiza la cantidad de imágenes que tiene el control Im agelist. Ejemplo de algunos gráficos que puede insertar en el control Imagelist: Páginas de propiedades G eneral Im á g e n e s | c o lo r Im ag en a c tu a l in d e x: [ g Key: p lag: r Im ágenes: LE] [ in sertar im agen... | Q uitar im agen | N úm ero de im ágenes: J? A c e p t a r j C a n c e la r j A p lica r A y u d a 201
  • 103.
    £ 3 ^VISUAL BASIC como debe ser. El contenido de la Hoja C olor es: P á g in a s d e p r o p ie d a d e s G e n e ral ) Im á g e n e s C olo r j P ro pie d ad e s: C on ju nto d e colores: r - T ■laskColor j C olores e stá n d a r P a le ta d e colores: | C ara d e l b o tó n g ] - i E scritorio m E s p a c io d e tra b a jo de la a p lica ció n F o n d o d e la v e n ta n a j l J E d ita r co n tro l p ersonalizado... A c e p ta r ~| C a n c e la r A p lic a r B a ckC olo r perm ite asignar un c o lo r de fondo y M askC oIor asigna un co lo r para la mascara del control. E l control también tiene la propiedad U sem askC olor para establecer un valor que determ ina si el co lo r asignado en la propiedad M askC oIor es utiliza do com o una máscara. M A N E T O D E L A S IM Á G E N E S D E L C O N T R O L IM A G E L IS T Para obtener cualquiera de las imágenes que se encuentran almacenas en el control Im agelist se u tiliza la siguiente sintaxis: Control_ImageList.Listlmages(índice).picture E l índice es un va lo r que indica el núm ero de la imagen que se quiere obtener.Por ejem plo, para m ostrar en el co ntrol Picture 1 la imagen N° 3 del co ntrol Im agelist N ° 1 se escribe. Picturel = ImageListl.Listlmages(3).Picture Para saber cuantas imágenes tiene el control Im ageList u tilice la propiedad C ount. Por ejem plo, la siguiente instru cció n almacena en la variable N, la cantidad de imágenes del control Im ag elist 1. N = ImageListl.Listlmages.Count G r u p o E d i t o r 2 0 2 i a l Megabyte <||§ § f | > CAPÍTULO IV: Mejorando el Aspecto de los Formularios APLICACIÓN DESARROLLADA N° 25 Inserte en el control Im agelist una cantidad determ inada de imágenes para que luego se muestren una a continuación de otra al hacer c lic k en el botón M O S T R A R S IG U IE N T E . D ibu je en un fo rm u la rio un co ntrol Im agelist, un Picture y dos comm and. « . MU ESTRA DE IMAGENES E H J Mostrar Siguiente SALIR Una vez que insertó imágenes en el control Im a g e L is tl, use la propiedad Personalizado, escriba las siguientes instrucciones en el botón M o stra r Siguiente: Prívate Sub Commandl_Click() S t a t i c P A s I n t e g e r P = P + 1 I f P > I m a g e L i s t l . L i s t l m a g e s . C o u n t T h e n P = 1 E n d I f P i c t u r e l = I m a g e L i s t l . L i s t l m a g e s ( P ) . P i c t u r e End Sub Las instrucciones anteriores permiten mostrar las imágenes una a continuación de otra y cuando se llega a la ultim a muestra nuevamente la primera. FUNC IO N LOADPICTURE Es una función que perm ite colocar en un co ntrol Image o PictureB ox un gráfico. Su sintaxis es: Nombre_del_Control=loadpicture (ruta y nombre de gráfico) Ej empl os: P ictu rel = L oadP icture( "graphicsiconscom puterkey04. ico ") Im age 1 = L oadP icture("graphicsiconscom puterkey04.ico") P ictu rel = LoadPicture( "c:vbm etafilescom puter.wm f") M U Y IMPORTANTE Ud., debe escribir correctamente la ruta de donde se encuentra el gráfico que desea colocar en el control PictureBox o en el control Image. 203
  • 104.
    VISUAL BASIC comodebe ser... CALENDAR: (CALENDARIO) Es un control que se utiliza para manejar la fecha del sistema de una manera personalizada. Este control muestra en el formulario un calendario con la fecha actual seleccionada y nos permite buscar otra fecha en cualquier mes o año. De la lista de componentes haga click en la casilla del control llamado: Microsoft ca­lendar Control. PRIN C IPALES PRO PIED AD ES D E UN CALEND AR: CUSTOM Permite personalizar el control Calendar. DAY Obtiene el día de la fecha seleccionada y permite seleccionar un nuevo día. DAYFONTCOLOR Asigna el color para los nombres de los días. DAYLENGTH Indica la forma de visualizar el nombre de los días de la semana. FIRSTDAY Permite indicar el primer día de la semana a visualizar en el calendario. GRIDCELLEFFECT Cambia el estilo de las líneas del calendario. GRIDFONTCOLOR Asigna un color para los días del mes. MONTH Obtiene el número del mes seleccionado y permite seleccionar un nuevo mes. MONTHLENGTH Indica la forma de visualizar el nombre de los meses. SHOWDATESELECT Permite que se muestren los botones para seleccionar una nueva fecha del calendario. SHOWDAY Permite que se muestren los nombres de los días de la semana en el calendario. SHOWVERTICALGRID Permite visualizar las líneas verticales del calendario. VALUE Permite obtener la fecha seleccionada del calendario. YEAR Obtiene el año de la fecha seleccionada y permite seleccionar un nuevo año. 2 0 4 G r u p o E d it o r ia l M e g a b y t e ^ ”^ ' CAPITULO IV: Mejorando el Aspecto de los Formularios APLICACIÓN DESARROLLADA N° 26 La aplicación muestra la fecha seleccionada en una etiqueta, pero en letras. ig g ig w a g ta i'gi'ai» «í ¿y; i is tii ¡ggggj O c tu b re 1998|octubre ~£ j-ms _-J Dom L u n Mar Mié Ju e Vie Sáb 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 .............i 18 19 20 21 22 23 24 25 26 27 28 29 30 31 4 6 DESARROLLO DE LA APLICACIÓN Para desarrollar esta aplicación dibuje en el formulario el control Calendar y dos etiquetas. Luego se debe programar en el evento C lick del control Calendar. El signo dólar ($) al final de una variable indica que la variable es de tipo String. INSTRUCCIONES DEL CONTROL CALENDAR. Prívate Sub Calendarl_Click() Labell = Calendar1.Valué diasemana = WeekDay(Labell) dia$ = Day(Labell) mes = Month(LabellJ año$ = Year(Labell) Select Case diasemana Case Case Case Case 1 : 2 : 3 : 4 : diasem diasem diasem diasem "Domingo" "Lunes" "Martes" "Mi ércol es " Case 5: diasem = "Jueves" Case 6: diasem = "Viernes" Case 7: diasem = "Sábado" End Select Select Case mes Case 1: nmes = "Enero" Case 2: nmes = "Febrero" Case 3: nmes = "Marzo" Case 4: nmes = "Abril" Case 5: nmes = "Mayo" Case 6: nmes = "Junio" Case 7: nmes = "Julio" Case 8: nmes = "Agosto" Case 9: nmes = "Setiembre" Case 10 : nmes = "Octubre" Case 11 : nmes = "Noviembre Case 12 : nmes = "Diciembre End Select Label2 = diasem End Sub + dia$ + " de " + tunes + " de " + año$
  • 105.
    VISUAL BASIC cornodebe ser... STATUSBAR (BARRA DE ESTADO) ' ts;;:: r ~ r Este control se u tiliz a para m ostrar una barra de estado en un fo rm u la rio norm alm ente en la parte in fe rio r en la cual se puede m ostrar inform ación com o por ejem plo la fecha y hora del sistema, el estado del teclado, o cualquier otro tip o de mensaje. Esta inform a ción se visualiza en determ inados espacios dentro de la barra de estado llam ados paneles los cuales pueden ser hasta 16. Si no se visualiza en la caja de herram ientas, haga c lic k en la casilla del c o ntrol llam ado: Microsoft Windows Common Controls 5.0 de la lista de componentes. P RIN C IPALES PRO PIED AD ES D E U N STATU SBARS: Las propiedades principales del control se obtiene con sólo elegir la propiedad Custum ize (personalizado). Se visualiza la siguiente ventana con cuatro hojas o fichas: General, Paneles, Fuente e Im agen. E l contenido de la hoja General es: a m a r G e n e ra l j Paneles ] F u e n te | Im a g e n j Style: H f W BfflllTO M o useP ointer: j o - c c D e ía u lt G imple T ext. Q L E D ro p M o d e : j o - c c O L E D ro p N o n e E n a b le d fs? S h o w T ip s A c e p ta r j C a n c e la r | Aplicar, A y u d a 206 G r u p o E d i t o r i a l Mega CAPITULO IV: Mejorando el Aspecto de los Formularios STYLE Permite indicar el estilo de la barra de estado. El estilo 0-strN orm al, muestra la barra de estado con todos los paneles asignados y el estilo 1-sbrSim ple muestra sólo el texto escrito en la propiedad S im ple Text. MOUSEPOINTER Se u tiliz a para in d icar la form a que tendrá el puntero del mouse cada vez que éste pase por la barra de estado. Si desea com o puntero del mouse un g rá fico seleccionado por U d. Debe elegir la ú ltim a opción (99-ccC ustom ). La selección del g rá fico los puede hacer en la página Imagen com o se verá más adelante. SIMPLE TEXT Perm ite escribir un texto el cual se visualiza en la barra de estado cuando en la propiedad Style se elige el estilo 1-sbrSim ple. OLEDDROPMODE D evuelve o establece el m odo en que un com ponente de destino realiza las operaciones de colocación. ENABLED Indica si la barra de estado debe estar activada o desactivada. SHOWTIPS In dica si la barra de estado debe m ostrar el texto de ayuda que se escribe en la propiedad T o o ltip te x t de la hoja Paneles. E l contenido de la hoja Paneles es: G e n e r a l P a n e le s j F u e n t e ) I m a g e n ] Incjex: T e x t : T o o lT i p T ext: K e y : T a a A lig n m e n t: Sfttle: B e v e l: A u t o S ize: f p a n e l j Q u it a r p a n e l M ín im u m W id t h : A c t u a l W id t h : Im a g e n 11 4 4 0 .0 0 11 4 4 0 00 0 - s b r T e x t 1 - s b rln s e t 'W I E x a m in a r... O - s b r N o A u t c ^ ~ | E n a b l e d Jv' J J A y u d a INDEX Visualiza o selecciona cualquiera de los paneles creados en la barra de estado.
  • 106.
    ¿ S St t VISUAL BASIC como debe ser... TKXT Permite escribir un texto el cual se va a visualizar en el panel siempre y cuando la propiedad Style de esta hoja tenga el valor 0-sbrText. TOOLTIPTEXT Permite escribir un texto de ayuda que se visualiza cuando el puntero del mouse se encuentre en el panel siempre y cuando la propiedad Show Tips de la hoja General se encuentre activada. KEY Permite asignar uno o más caracteres que van a identificar a cada panel. No acepta números. TAG Permite escribir un texto el cual queda almacenado para poder utilizarlo en cualquier momento si lo deseamos. ALIGNMENT Alinea el texto o el gráfico dentro del panel a la izquierda, centro o derecha. STYLE Permite seleccionar el tipo de información que desea mostrar en el panel. Si desea visualizar el texto escrito en la propiedad Text, debe elegir el estilo 0-sbrText. Aquí puede elegir que se muestre la fecha u hora del sistema, el estado del teclado, etc. BEVEL Selecciona el tipo de borde del panel (sin relieve, bajo relieve o en alto relieve). A ITO SIZE Para indicar si el tamaño del panel debe estar de acuerdo al tamaño de lo que contiene o no. M IN IM U M WIDTH Para indicar el ancho mínimo que puede tener el panel. EXAMINAR Permite seleccionar un gráfico que va a acompañar a la información que mostramos en el panel. Ud., debe conocer previamente la ruta de la carpeta donde se encuen­tran los archivos de gráficos en su computadora. Una de las rutas donde puede encontrar archivos de gráficos es: C:Archivos de ProgramaDevStudioVbGraphics'Sicons Y luego en cualquiera de las carpetas que contiene. SIN IMAGEN Borra el gráfico asignado al panel ENABLED Para indicar si el panel debe estar activado o no. VISIBLE Para indicar si el panel debe estar visualizar o no. 208 G r u p o E d i t o r i a l Megabyte < CAPITULO IV: Mejorando el Aspecto de los F orm ularios^ E l contenido de la h o ja F ue nte es: - G e n e ra l ] P a neles F u e n te Im a g e n ) P ro p ie d a d e s: Fuente: X a m a ñ o : ¡M S S a n s S erif z ] I8 2 6 J Ü E fe cto s r N e g rita r S u b ra y a d o 1 C u rsiva r T a c h a d o T e x to d e ejem plo: M S S a n s S erif A c e p t a r | Permite cambiar el tipo de letra, tam año y asignar efectos al texto que se muestra en la barra de estado. E l contenido de la h o ja Im a g e n es: G e n e r a l | P a n e le s j F u e n t e I m a g e n j Prop. ie_d_a_d__e_s: Vista previa: Exam inar... VJMzi — i A c e p ta r I C a n c e la r J ____ I -------- Esta hoja permite seleccionar un gráfico el cual va a reemplazar al puntero del mouse cuándo lo ubiquemos en cualquier parte de la barra de estado. El gráfico que Ud. elija se visualiza siempre y cuando se halla seleccionado la opción 99-ccCustom de la propiedad MousePointer de la hoja General.. EJEMPLO DE UNAAPLICAGON USANDO ELCONTROLSTATUSBAR tm iS M m m n ™ i ^ 'm rr— — T - idi *i S I S T E M A D E 1 V E N T A S ? / X 8 /0 5 /9 9 José Castañeda 4 42 AM I 209
  • 107.
    ^ Íllíl¡|> VISUALBASIC como debe ser.. . Asigne las propiedades al control Toolsbar de tal manera que tenga el m ism o aspecto de la aplicación mostrada. Tam bién se puede program ar dentro de este control, p or ejem plo: Se desea que al hacer c lic k en la calculadora, se active la calculadora del w indow s. L a propiedad INDEX del PANEL nos perm ite saber en cuál de ellos el usuario hizo click. A l hacer c lic k en el p rim er panel la propiedad Index toma el va lo r 1, al hacer c lic k en el segundo panel, la propiedad Index toma el va lo r 2, etc. Entonces las siguientes instrucciones para el control son: Prívate Sub StatusBarl _PanelClick(ByVal Panel As ComctlLib. Panel) If Panel.Index = 4 Then Shell "c:windowscalc.exe", 1 End If End Sub Si U d., ha asignado uno o más caracteres en la propiedad K E Y , entonces tam bién puede id e n tific a r el panel donde se h iz o C lic k , m ediante esta propiedad. Por ejem plo: Si ha asignado las letras CAL en la propiedad K E Y del panel núm ero 4 (calculadora), entonces puede e s c rib ir tam bién las siguientes instrucciones en el control: Prívate Sub StatusBar l_PanelClick(By Val Panel As ComctlLib.Panel) I f P a n e l . K e y = "CAL" T h e n S h e l l " c : w i n d o w s c a l c . e x e “, 1 E n d I f End Sub NOTA SHELL perm ite ejecutar program as (*.exe) desde el V isual Basic y el valor l le indica que el program a se debe ejecutar con e l tam año d e ventana normal. Debe especificar correctam ente la ruta y el nom bre del archivo. CALCULADORA DEL WINDOWS 3* Edición Ver Ayuda ¡ r ~ B a c k 1 C E 1 C 1 M C 8 9 / s q r t M R 4 5 6 % M S 1 2 3 1 /x M + 0 +h f G r u p 210 o E d i t o r i a l Megabyte > CAPITULO IV: Mejorando el Aspecto de los Formularios ^ PANTALLAS DE PRESENTACIÓN 1. Pantalla desarrollada en Power Point. •' rm * o t t j R a n r r j i t T R A N S P O R T S . A f; sai is ¡1 U d., puede diseñar su pantalla en Power P oint y pegarla en su fo rm u la rio o activarla. Si usted pega la pantalla, ésta se visualizará estática (sin los m ovim ientos o efectos asignados) Para ello una vez que term inó de diseñarla, preséntela (C lic k en el Botón P R E S E N T A C IO N C O N D IA P O S IT IV A ) y pulse IMPR PANT (Print Screen), luego vaya al V isual Basic y,haga c lic k en cualquier parte del fo rm u la rio y pulse CTRL+V. Si desea borrar la pantalla, borre el contenido de la propiedad P icture del form u la rio . Para activar una pantalla en Pow er P oint desde V isual Basic y visualizar los m ovim ientos y efectos que le asignó, puede u tiliz a r el co ntrol O LE . EL CONTROL OLE Permite insertar objetos. A l dibujarlos se visualiza una caja de diálogo donde se puede e le gir el objeto a insertar. Si pulsó C A N C E L A R y salió de la caja de dialogo, para regresar haga un c lic k con el botón derecho del mouse en el control O L E y e lija la opción INSERTAR OBJETO. E l I Insellai o b j e t o ... . ........ « . S I Tips de objeto: I Aceptar <• Crear Quevo Adobe«-Table 2.5 Clip de multimedia Corel PHOTO-PAINT 5.0 Imagen CorelCHART! 5.0 Chart CorelDRAW! 5.0 Gráfico CorelDRAW! 5.0 Presentation Exchar , CorelEquation! 1.0 Equation .T I Cancelar f " Crear desde archivo I postrar como icono Resultado Inserta un nuevo objeto de Adobe Photoshop Image en el documento. La opción C rear d esd e A rc h iv o perm ite seleccionar el archivo previam ente creado
  • 108.
    VISUAL BASIC comodebe ser... ACTIVAR UNA PRESENTACIÓN EN POWER POINT Una vez creada y grabada la presentación en Power Point, active el Visual Basic y en un form ulario en blanco pegue el control O LE y en la ventana que se visualiza elija la opción C rear desde A rch ivo , luego haga clic en el botón E x a ­m in a r para buscar y seleccionar la presentación creada en Power Point ha­ciendo clic en el botón Insertar y luego en Aceptar. En el evento Form Load del form ulario debe escribir: P r i v a t e Su b F o rm _ L o a d () O l e l . V i s i b l e = F a l s e O l e l . A c t i n o = 7 End Sub 2. Muestra la palabra SISTEMA letra por letra. SISTEMA ic s ^ 'l o * ..j En un form ulario debe crear un array de 7 etiquetas. Para ello, Dibuje la etiqueta N° 01, luego pulse C TR L+C y luego C T R L + V hasta completar las siete (desde Labell(O ) hasta L abell(6)). También debe dibujar un control T IM E R y un botón de comandos el cual tiene el gráfico llamado: PO IN T4.IC O (opcional). A cada etiqueta debe asignarle una letra de la palabra S IS T E M A . Labe] 1 (0) debe tener en su propiedad C aption la letra S, L a b e ll( l) la letra I, etc. INSTRUCCIONES: Definir las variable en la sección de declaración del formulario P u b l i c P As I n t e g e r P u b l i c F I N A s I n t e g e r In stru ccion es del procedim iento FORM ACTIVATE Prívate Sub Form_Activate() Dim X As Byte Formt. WindowState = 2 ‘Maximiza el Formulario For X = OTo 6 Labell(X).FontName = "Couríer New" ‘Tipo de letra Labell(X).FontSize = 72 'Tamaño de letra Labell(X). Visible = False ‘Oculto Labell(X).BackStyle = 0 ‘Transparente Labell(X).AutoSize = True Next X FIN = 2500 ‘Ubicación de la primera letra Commandl. Visible = False ‘Oculta el Botón OK Timerl Anterval = 100 End Sub - * - Grupo Editorial Megabyte 7 CAPÍTULO IV: Mejorando el Aspecto de los Formularios Instrucciones del control TIMER Private Sub TimerI JTimer() Static N As Byte Labell(N). Visible = True ‘Muestra de la letra Labell(N).Top = 2000 'Ubicación vertical Labell(N ).Left = P ‘Ubicación horizontal P = P + 500 ‘Velocidad de movimiento de las letras IfP > FIN Then FIN = FIN + Label 1(N). Width + 200 P = 0 N = N + 1 End I f I fN > 6 Then Tim erl.Inten’al = 0 Commandl .Visible - True End I f End Sub 3. Mueve las palabras y oscurece y aclara el formulario . P R E S E N T A C IO N 1-ñJSlJü' BIENVENIDOS AL SISTEMA D ibuje en el form ulario dos etiquetas, dos control Tirner, un P ic tu re B o x y un botó n de com andos. A las etiquetas, P ic tu re B o x y botó n de co m a n d o a síg n e le s las propiedades como se muestran en la figura anterior. Labell Label2 Comm andl Definir las variable en la sección de declaración del formulario P u b l i c N, I A s I n t e g e r Public sw, CLARO As Boolean m m
  • 109.
    VISUAL BASIC comodebe ser... Instrucciones del procedimiento Form Activate P r í v a t e S u b F o r m _ A c t i v a t e () F o r m l . W i n d o w S t a t e = 2 T i m e r l . I n t e r v a l = 1 0 0 T i m e r 2 . I n t e r v a l = 1 0 0 End Sub Instrucciones del TIM ER1 Suben y bajan las palabras Prívate Sub Timerl_Timer() Ifsw Then Instrucciones del T IM E R 2 Aclaran y oscurecen el formulario. Prívate SubTimer2_Timer() If CLARO Then 1 = 1-5 If 1 = 0 Then N = N - 200 IfN < 0 Then sw = False E n d lf C LARO = False Else End If N = N + 200 Else 1 = 1 + 5 IfN > 7000 Then sw True If I = 255 Then = E n d lf CLARO = True E n d lf End If End Labell.Top If = N Label2. Top = 7000 N Form 1 .BackColor=RGB(0,1,0) - End Sub End Sub Practique cam biando la p osición del de la variable I en R G B. E xisten muchas otras form as de crear pantallas de presentación y muchas veces depende de la creatividad de cada uno. Tam bién puede inse rtar otros objetos com o p or ejem plo: imágenes de M icro so ft, galería de imágenes, Hojas y gráficos de Excel etc. Para ello, haga c lic k con el botón derecho del mouse en cualquier parte de la caja de herramientas y e lija la opción componentes y de la pantalla que se visua liza e lija la hoja O B J E T O S IN S E R T A B L E S . Selected Items Only Adobe Phiotoshop Imaj- Location: COM 1 3DADOBEPHOTOSHP.EXE =J 214 G r u p o E d i t o r i a l Megabyte'1 HSCROLL Y VSCROLL (Barras de Desplazamiento) j j i l i l i l Las barras de desplazam iento son controles que se pueden u tiliz a r para varias aplicaciones com o por ejem plo para visua liza r in form a ción cuando se encuentra en un co ntrol donde no se puede visualizar toda al m ism o tiem po, para incrementar o d ism inuir el valor de una variable, etc. Sus p rin c ip a le s p ro p ie d a d e s son: L A R G E C H A N G E Para in d icar el increm ento o decremento de la propiedad Valué cada vez que el usuario haga c lic k en el área de desplazamiento. S M A L L C H A N G E Para in d icar el increm ento o decremento de la propiedad Valué cada vez que el usuario haga c lic k en la flecha de desplazamiento. M A X Para in d icar el v a lo r m áxim o que puede tom ar el va lo r de la propiedad Valué. E l va lo r predeterm inado es 32767. M I N Para indicar el va lo r m ínim o que puede tom ar el valor de la propiedad Valué. E l va lo r predeterm inado es 0. V A L U E Indica la posición actual del cuadro de desplazamiento. Esta propiedad es la predeterm inada de las barras de desplazamiento, esto quiere d ecir que para referirm os a esta propiedad sólo se necesita escribir el nom bre del control Por ejem plo: las dos instrucciones realizan lo m ism o: R = H sc ro lll. Valué y R = H s c r o lll APLICACIÓN DESARROLLADA N° 27 Esta aplicación perm ite m o d ific a r el co lo r del fondo del fo rm u la rio con diferentes tonalidades, y m over un gráfico. M 3 M u e ve el Gráfico « USO DE SC R O LLB A R S Intensidad R O JO j J M 1255 V E R D E j J 1 » 1 1255 A Z U L j J M 1255 Empezar 1 Salir 1 A. j d 215
  • 110.
    S l bVISUAL BASIC como debe ser. ., P A S O N ° 01: D IB U J A R L O S C O N T R O L E S . D ib u je los controles com o se muestra a continuación: I t i Form l i m i — — .Inlxl Labell jlU Label4 Labe!5 LabeIS Label2 Label6 ±1 Label3 <1 1 jü Label7 Command! | Command2 | PA SO N ° 02: A S IG N A R L A S P R O P IE D A D E S . A signe las propiedades a las etiquetas y botones de comandos com o de muestra en la aplicación a desarrollar. Instrucciones del F orm _Lo ad para que al ejecutar la aplicación se asignen las propiedades a las barras de desplazamiento. Prívate Sub Form_Load() HScrolll.Min = 0 HScrolll.Max = 255 HScrolll.LargeChange = 5 HScrolll .SmallChange = 5 HScroll2.Min = 0 HScrolll.Max = 255 HScroll2.LargeCh.ange - 5 HScroll2.SmallChange - 5 HScroll3.Min = 0 HScroll3.Max = 255 HScroll3.LargeChange - 5 HScrollJ. SmallChange = 5 VScrolll.Min = 0 VScrolll.Max = Forml .ScaleHeight VScrolll .LargeChange = 100 VScrolll.SmallChange = 25 End Sub - l í * G r u p o E d it o r ia l M e g a b y t e < |f ¡ ||¡ |j j f Instrucciones del F o rm _A ctiva te para que al activarse el fo rm u la rio las barras de desplazam iento y las etiquetas N ° 5 ,6 y 7 tengan el v a lo r cero (0). Priv a t e S u b F o r m _ A c t i v a t e () H S c r o l l l . V a l u é = 0 H S c r o l l 2 . V a l u é = 0 H S c r o l l 3 . V a l u é = 0 V S c r o l l l . V a l u é = 0 P i c t u r e l . T o p = 0 L a b e l 5 = 0 L a b e 1 6 = 0 L a b e l 7 = 0 E n d S u b Instrucciones del procedim iento C A M B IO , que perm iten cam biar el color del fondo del fo rm u la rio de acuerdo al va lo r de la propiedad Valué de cada una de las barras de desplazam iento. S u b CAMBIO() D im ROJO, VERDE, AZUL A s B y t e ROJO = H S c r o l l l VERDE = H S c r o l l 2 AZUL = H S c r o l l 3 F o r m l . B a c k C o l o r = RGB(ROJO, VERDE, AZUL) L a b e l 5 = H S c r o l l l L a b e l 6 = H S c r o l l 2 L a b e l 7 = H S c r o l l 3 E n d S u b Instrucciones del Botón E M P E Z A R . P r í v a t e S u b C o m m a n d l _ C l i c k () F o r m _ A c t i v a t e E n d S u b D entro de cada Barra se llam a al procedim iento C A M B IO . Prívate Sub HScrolll_Change() CAMBIO End Sub Prívate Sub HScroll2_Change() CAMBIO End Sub Prívate Sub HScroll3_Change() CAMBIO End Sub Instrucciones del control V S C R O L L 1 . P r í v a t e S u b V S c r o l l l _ C h a n g e () P i c t u r e l . T o p = V S c r o l l l E n d S u b
  • 111.
    ^ ¡llíiil? 'VISUAL BASIC como debe ser. . PROGRESSBAR (Barra de Progreso) m M uestra una barra que refle ja la ejecución de un proceso en la com putado­ra. En la ventana de componentes se llam a: M icrosoft W indow s C om m on C ontrols 6.0. Sus principales propiedades son: M A X Indica el va lo r m áxim o que puede tom ar el control. M I N Indica el valor m ínim o que puede tom ar el control. V A L U E índica el v a lo r del co ntrol en un determ inado m omento. P ara d e s a rr o lla r un e je m p lo , pegue en un fo rm u la rio en blanco el c o n tro l P rogressB ar y en su p ro c e d im ie n to F orm A ctívate escriba: C O N T R O L S L ID E R m P ro y e c to l - F orm l (C ódigo) | _ | a | x | jF o r m jrj j A c tív a te + j P r í v a t e Sub F o r m_Act i v at e () D i m x A s I n t e g e r P r o g r e s s B a r 1.M a x = 1000 F o r x = 1 To 1000 N e xt x E n d Sub £ < 1 1 Jlfl tr. P r o g r e s s B a r 1.V a l u é = x Es un control que perm ite desplazar una barra a través de una marca que tiene el control. Se puede m anejar de manera casi igu al a los controles H s c ro ll y V s c ro ll. En la ventana de com ponentes se lla m a : M icro so ft W indow s C o m m o n C ontrols 6.0. Sus principales propiedades son: L A R G E C H A N G E Indica el núm ero de marcas que se desplazará la barra al presionar las teclas R E P Á G o A V P Á G o al hacer clic en el control. S M A L L C H A N G E Indica el núm ero de marcas que se desplazará la barra al presionar las teclas Flecha Izquierda o Flecha Derecha. M A X y M IN Son sim ilares a las del control ProgressBar. O R IE N T A T IO N Indica la posición del control (H o rizo n ta l o Vertical) V A L U E Indica el va lo r del co ntrol en un determ inado m omento. N O T A : D e s a rro lle la a p lic a c ió n N ° 27 usando este c o n tro l. jfjjj l l p l » 218 G r u p o E d i t o r i a l Megabyte * |¡ ¡ íj |¡ |¡ C A P ÍT U L O IV : M ejorando el A specto ác los F orm ularios PREGUNTAS DE REPASO N 2 04 1. ¿Qué casilla debe activar en las lista de componentes si en la caja de herramientas no encuentra el control ImageList? 2. Explique los métodos gráficos. 3. ¿Con qué propiedad se puede saber el panel donde el usuario hizo click en el control StatusBar? 4. ¿Cuál es la diferencia entre Qbcolor y RGB? 5. ¿Cuál es la utilidad del control Calendar? 6. Explique cómo se pueden buscar los gráficos que tenemos disponibles en nuestra computadora. 7. ¿Qué significa el signo de dólar ($) al final de una variable? 8. ¿Qué valor debe tener el control Timer en su propiedad Interval para que las instrucciones que contiene se ejecuten cada segundo? 9. ¿Qué diferencia encuentra entre el control Hscroll y Vscroll? 10. ¿Qué es un método gráfico? 11. ¿Cómo podemos saber la ruta exacta de un archivo gráfico? 12 . ¿Cuál es el valor predeterminado de la propiedad Max y Min di> los controles Hscroll y Vscroll? 13. ¿Cuál es la diferencia entre los controles Image y PictureBox? 14. ¿Cuántos tipos de figuras se pueden dibujar con el control Shape? 15. ¿Cuál es la ventaja de usar el control Frame? 16. ¿Cuál es la utilidad del control ImageList? 17. ¿Cuales son los tipo de gráficos que se pueden insertar en el control PictureBox? 18. ¿Con qué función se puede colocar un gráfico en un control PictureBox o Image? 19. ¿Cómo le indicamos a Visual Basic que deje de ejecutar las instrucciones que se encuentran en el control Timer.? 20. ¿Qué función cumple las pulsación de las tecla CTRL+K cuando trabajamos con el control Frame? Es muy importante que Ud., se formule nuevas aplicaciones o intercambie aplicaciones propuestas entre sus compañeros de estudio y desarrollarlas con la finalidad de enriquecer sus conocimientos. r
  • 112.
    CAPITULO V TADE PASAJES Agencia de Transporte "EL PROVINCIANO S., Pasajero |H T 0 RAMIREZ D.N.I. |1 6895654 Hora de Salida C 8 :0 0 pm. (* 9:00 prn. Destino : Lima annan O B S ER V A C r ffiLSoft D a tò S .A n i s i E a g 1 PROFORM A •' ............ Precio p 1 p e s c u t ¡ Fecha Ö7/Z3/9B .Wc |XIM E NA TORREE le c c ió n 1 CAS TI LLA 2565 î^omputadaroa |p æ ker Bell - | 7DOLOO y re s o ia s |D a s k e t 40a - ] 270.00 í ^ u b Total 970.00 I.G.V. 174.G0 Total 1 1 44. EO _ Q tra F W q r n a - j „ INGRESO PERSONALIZADO DE DATOS V-lA
  • 113.
    < X ¿> CAPÍTULO V: Ingreso Personalizado de Datos C O M B O (LISTA D E S P L E G A B L E ): Es un control que combina una caja de textos con una lista y se utiliza para ingresar datos de una manera muy sencilla para el usuario. PR IN C IPA LES PR O PIED A D ES DE UN CO M BO: Ñ A M E Permite asignarle un nombre. Por defecto el nombre es Com bol, Combo2, Combo3 etc. Según el número de controles que se dibujen en el formulario. EN A B L ED Para indicar si debe estar activo o no. FO N T P erm ite seleccionar el tipo, tam año y estilo de letra. LIST Permite ingresar los valores o datos que el usuario puede elegir de este control. Por cada elemento que se ingrese se debe pulsar <CTRL> + <ENTER>. Para insertar un elemento, ubique el cursor al inicio de donde lo desea insertar y pulse <CTRL> + <ENTER>. LISTIN D EX Obtiene el numero del elemento seleccionado. Si se elige el 1er elemento devuelve cero(O), el segundo uno(l), etc. L O C K E D Para indicar si se puede cambiar el contenido del control. SO RTED t Para indicar si los elementos deben salir ordenados. STYLE Selecciona el modo de elegir los elementos del control. TEXT Para indicar lo que se va a mostrar automáticamente en el control y almacena el texto seleccionado. V ISIB LE Para indicar si se debe visualizar el combo.
  • 114.
    VISUAL BASIC comodebe ser.. APLICACION DESARROLLADA N 28 Esta aplicación debe permitir al usuario ingresar el nombre del alumno, su especialidad y tumo. Al hacer click en cualquiera de los Combo se debe desplegar las opciones posibles a elegir. J n J x j Especialidad JComputación j r ] ^ U!ri° ¡Mañana j - ] Otro Alumno Finalizar Alumno Daniel Riveía Especialidad ^ « 3 T urno Arquitectura Secretariado Sistemas Olio Alumno Finaliza! PASO N° 01: Dibujar los controles. Labell Label2 jcombol Label3 |Combo2 Command! 3 Command2 PASO N° 02: Asignar las propiedades. EOQUEIA CAPTION Label 1 Alumno Label2 Especialidad Label3 Turno COMANDO CAPTION Command I &Otro Alumno Command2 &Finalizar 1EXTO Textl TEXT En Blanco 224 : COMBO TEXT Combol Computación Combo2 Mañana G r u p o E d it o r ia l LIST Computación Arquitectura Secretariado Sistemas Mañana Tarde Noche CAPÍTULO V: Ingreso Personalizado de Datos ;l l ¡ | ¡ | | PASO N° 03: Escribir las instrucciones para los controles. Instrucciones del botón O T R O A LUM NO Prívate Sub Com mandl_Click() ‘Borra el contenido de Textl Textl = ‘Muestra el elemento predeterminado del Combol (Computación) Combol. Listlndex = 0 'Muestra el elemento predeterminado del Combo2 (M añana) Combo2.Listlndex - 0 ‘Ubica el cursor en Textl para ingresar un nuevo alumno Textl. SetFocus End Sub El botón FINALIZAR debe tener la instrucción END. A PLIC A C IO N PROPU ESTA N° 07 e . 4 V i Nombre 1 Tipo [Permanente z Estado Civil 1Casado Z Ï Categoria |a -i Ingresar Otro Salir I Tipo : Permanente, Contratado, Eventual. Estado Civil : Casado, Soltero, Viudo, Divorciado. Categoría : A -l, A-2, A-3 B -l, B-2, B-3.
  • 115.
    VISUAL BASIC comodebe ser... APLICACION DESARROLLADA N° 29 P a g o p o r H o r a [1 5 .0 0 H o ra s T ra b a ja d a s | ■ T 0 T A L A P A G A R f p | N u e v o S a lir La aplicación debe tener las siguientes características: 1. Al ejecutar la aplicación, el gráfico debe estar oculto y el botón Nuevo desactivado hasta que se comience a ingresar el nombre del trabajador. 2. El pago por hora se visualiza en forma automática y depende del tipo de empleado: Permanente S/.15.00, Contratado S/.10.00 y Eventual SI. 5.00. 3. No existe el botón Calcular, entonces el total a pagar debe visualizarse automáticamente cuando el usuario ingrese el N° de horas trabajadas o cuando cambie el tipo de empleado. 4. En el número de horas trabajadas no se permite el ingreso de letras (no se activa el botón Nuevo). PASO N° 1: Dibujar los controles. L a b e l l jlT e x t l L a b e l2 jC o m b o l ^ | L a b e l3 L a b e lG ---------- L a b e M | T e x t2 L a b e l5 L a b e l7 C o m m a n d l C o m m a n d 2 CAPÍTULO V: Ingreso Personalizado de Datos PASO N° 02: Asignar las propiedades. EITQUETA CAPITON BORDERSTYLE Labell Nombre 0 - None Label2 Tipo 0 - None Label 3 Pago por Hora 0 - None Label4 Horas Trabajadas 0 - None Label5 TOTALA PAGAR 0 - None Labeló En Blanco 1 - Fixed Single Label7 En Blanco 2 - Fixed Single COMANDO CAPTION ENABLED Commandl &Nuevo False Command2 &Salir True FIGURA VISIBLE PICTURE Picture 1 False Gráfico que se indica COMBO TEXT LIST Combo 1 Permanente Permanente Contratado Eventual Ud. Puede cambiar otras propiedades que crea conveniente. PASO N° 03: Escribir las instrucciones de los controles. M UY IM PO RTA N TE: El valor cero (0) puede reemplazar al valor False y el valor uno (1) puede reemplazar al valor True. Ejemplo: Commandl.Visible=True es igual a Commandl.Visible=l Commandl.Visible=False es igual a Commandl.Visible=0 Instrucciones del botón Nuevo: limpia las cajas de texto y las etiquetas, además muestra el tipo de empleado por defecto y oculta el gráfico. Prívate Sub CommandI_Click() Textl = Com bol .Listlndex = 0 Labeló = Text2 = Label7 — Picture! .Visible = 0 End Sub
  • 116.
    Í Ü ÜÍ > VISUAL BASIC como debe ser... Instrucciones del C om bol: permiten visualizar en forma automática el pago por hora, según el tipo de empleado que se elija y si ya se ingresó las horas trabajas visualiza el total a pagar. Prívate Sub Com bol_Click() N = Combol .Listlndex Select Case N ‘Si N vale 0 a elegido la primera opción Case 0 Labeló = "15.00” Case 1 ‘Si N vale 1 a elegido la segunda opción Labeló = "10.00” Case 2 ‘Si N vale 2 a elegido la tercera opción Labeló = “5.00” End Select ‘Pregunta si no se ha ingresado el pagos por hora I f Trim(Text2) = Then ‘Si no ha sido ingresado pide N" de horas trabajadas Text2.SetFocus Else ‘Si se ha ingresado calcula el total a pagar Label7 = Format(Val(Labeló) * Val(Text2), "###,##0.00”) End I f End Sub Instrucciones de Textl: Verifica si se ha comenzado a ingresar el nombre. Si es verdad activa el botón Nuevo y visualiza el gráfico. Prívate Sub Textl_Change() I f Trim( Textl) = Then Command2.Enabled = 0 Pie ture 1.Visible - 0 ElseC ommand2.Enabled = 1 Picturel.Visible = 1 End I f CAPÍTULO V: Ingreso Personalizado de Datos Instrucciones de Text2: Verifica que se ingrese sólo números en las horas trabajas y calcula en forma automática el total a pagar. Se puede realizar la misma operación usando la función ISNUMERIC. Prívate Sub Textl_Cliange() I f Trim(Text2) = Or Val(Text2) = 0 Then Command 1 .Enabled = 0 ElseC ommand 1 .Enabled = 1 Label?-Format(Val(Labeló) * Val(Text2), "###,##0.00”) End I f E nd Sub A P L IC A C IÓ N P R O P U E S T A N° 08 Si es Soltero debe pedir la edad y el N° de hermanos y si es casado debe pedir el tiempo de casado y el N° de hijos. Nombre Estado Civil |Soltero Edad | N 5 de hermanos | N uevo J Sal» J Nombre Estado Civil [Casado Tiem po de Casado j N s de hijos j N uevo j Salir M U Y IM P O R T A N T E Ud., fo rm ú le se nuevas aplicaciones o intercam bie aplicaciones propuestas entre sus com pañeros y desarróllelas con la fin a lid a d de enriquecer sus conocim ientos. “ E l q u e a p re n d e y a p re n d e y n o p ra c tic a , es com o el q u e a r a y a r a y n u n c a s ie m b ra ”
  • 117.
    o # •V ISl’AL BASIC como debe ser.. APLICACION DESARROLLADA N° 31 JQI-xJ Tipo de Curso |a p u w TIVÖS ^ Nombre del Curso |W IN D O W S 95 j r ] Nuevo Salir Esta aplicación permite asignar un curso a cada profesor. Primero se debe ingresar su nombre y luego seleccionar el tipo de curso: Aplicativos, Programación, Otros. Según el tipo de curso, se mostrará una lista de cursos: APLIC A TIV O S Windows 95 Word Excel Power Point P R O G R A M A C IO N Foxpro Visual Basic Visual Foxpro Power Builder OTROS Internet Correo Electrónico Inglés Técnico IM PO R T A N T E : C LE A R : Permite limpiar el contenido de un combo. Nombre del Control. Clear AD D 1TEM : Permite adicionar un elemento a un combo. Nombre del Control. Additem “Elemento ” En está aplicación de ejem plo, las propiedades de cada combo se asignan en el Evento Form_Load. PASO N° 1: Dibujar los controles. a ; .=..l.s l->d L a b e ll jfT e x t l L a b e l2 [C o m b o l zJ L a b e l3 |C o m b o 2 .... -1 C o m m a n d l | C o m rn a n d 2 I 230 G r u p o E d it o r ia l Megabyte-^ CAPITULO V: Ingreso Personalizado de Datos PASO N° 02: Asignar las propiedades. EITQUEIÄ Labell Label2 Label3 COMANDO Command 1 Command2 TEXTO Textl COMBO Combol Combo2 CAPTION Profesor Tipo de Curso Nombre del Curso CAPTION &Nuevo &Salir TEXT En Blanco BORDERSTYLE 0 - None 0 - None 0 - None ENABLED True True TEXT En Blanco En Blanco LIST En Blanco En Blanco Ud. Puede cambiar otras propiedades que crea conveniente. PASO N° 03: Escribir las instrucciones de los controles. Instrucciones del Form JL oad para asignar las propiedades o valores iniciales de cada Combo. Prívate Sub Form_Load() ‘Limpia el contenido del combol Com bol.Clear 'Adiciona elementos al combol Combol.Additem “APLICATIVOS” Combol.Additem “PROGRAMACIÓN” Combo 1 .Additem “OTROS” ‘Limpia el contenido del combo2 Combo2.Clear ‘Adiciona elementos al combo2 Combo2.Additem “WINDOWS 9 5 ” Combo2.Additem “WORD” Combo2.Additem “EXCEL” Combo2.Additem “PO IN T” ‘Permite que se visualice el ler. elemento de cada combo Combo l.Listlndex = 0 Combo2.Listlndex - 0 End Sub
  • 118.
    ¿ S üt VISUAL BASIC como debe ser... Instrucciones del Combol para que de acuerdo al tipo de curso que se seleccione, se muestre en el combo2 los nombres de los cursos. P r í v a t e S u b C o m b o l _ C l í c k () n = C o m b o l . L í s t l n d e x S e l e c t C a s e n C a s e 0 C o m b o 2 . C 1 e a r C o m b o 2 . A d d l t e m "WINDOWS 9 5 " Combo2 . A d d l t e m "WORD" C o m b o 2 . A d d l t e m "EXCEL" C o m b o 2 . A d d l t e m "POINT" m C o m b o 2 . L í s t l n d e x = 0 C a s e 1 C o m b o 2 . C 1 e a r C o m b o 2 . A d d l t e m "FOXPRO" C o m b o 2 . A d d l t e m "VISUAL B A S IC " C o m b o 2 . A d d l t e m "VISUAL FOXPRO" C o m b o 2 . A d d l t e m ”POWER BUILDER" C o m b o 2 . L í s t l n d e x = 0 C a s e 2 C o m b o 2 . C 1 e a r Combo2 . A d d l t e m "IN TER N ET " C o m b o 2 . A d d l t e m "CORREO ELECTRÓNICO" Combo2 . A d d l t e m "INGLÉS TÉCNICO" C o m b o 2 . L í s t l n d e x = 0 E n d S e l e c t E n d S u b Instrucciones del Commandl (Nuevo), para ingresar un nuevo profesor. A signa los valores por defecto a cada com bo y para ello, llam a el procedimiento Form_Load que contiene dichas instrucciones. P r í v a t e S u b C o m m a n d l _ C l í c k () ' L i m p i a y u b i c a e l c u r s o r e n T e x t l T e x t l = T e x t l . S e t F o c u s 'L la m a a l p r o c e d i m i e n t o F o r m _ L o a d F o r m _ L o a d E n d S u b En e l com m and2 s e e s c r i b e l a i n s t r u c c i ó n E N D . 232 G r u p o E d it o r ia l Megabvte CAPITULO V: Ingreso Personalizado de Datos " llliJ S P ' A P L IC A C IÓ N D E S A R R O L L A D A N° 32 Una empresa de venta de computadoras necesita un formulario que permita realizar su proforma. Dicha empresa tiene los siguientes productos: Computadoras Precio IBM 850.00 Packer Bell 700.00 Acer 600.00 Impresoras Epson LX-300 Deskject 400 IBM graphics Precio 180.00' 270.00 380.00 « t S o it D a ta S .A P R O F O R M A C lien te |X IM E N A T O R R E S D ire c c ió n n s ix i F e c h a 0 7 /2 3 /9 8 (C A S T IL L A 2 5 6 5 C o m p u ta d o ra s | p a c k e r B ell [ 7 0 0 .0 0 Im p re s o ra s |D e s k je t4 0 0 -■ | 2 7 0 .0 0 S u b T o ta l 9 7 0 .0 0 I.G .V . 1 7 4 .6 0 T o ta l 1 1 4 4 .6 0 C a lc u la r j O tra P ro fo rm a | _______ S alir | • El botón Calcular permitirá obtener el Sub Total, IGV (18%) y el Total. • El botón O tra Proform a permitirá limpiar los datos y pedir otros. • El botón Salir finalizará el programa. PASO N° 01: Dibujar los controles. I in. Formi m é m LabeH Label2 Labe!3 ¡T extl — Label4 |ïe x t2 Label5 I Com bol Label7 LabelB |Com bo2 Labe!8 Label9 L ab e ll 0 Labell 1 Com m andl Command2 Comm and3 | 1
  • 119.
    | ¡ SS ¡ ^ VISUAL BASIC como debe ser... PASO N° 02: Asignar las propiedades. A las etiquetas y botones de comandos, asígneles la propiedad Caption, como se muestra en la aplicación. TEXTO TEXT Textl En Blanco Text2 En Blanco LINEA BORDEWIDTH Linei 4 Line2 4 LIST IBM Packer Bell Acer c o m b o t e x t Combol IBM Combo2 Epson LX-300 Epson LX-300 Deskject 400 IBM graphics Ud. Puede cambiar otras propiedades que crea conveniente. PASO N° 03: Escribir las instrucciones de los controles. Instrucciones del C o m b o l. Estas instrucciones permiten visualizar el precio de la computadora cuando el usuario la selecciona en el combo N°1 haciendo click. P r í v a t e S u b C o m b o l _ C l i c k () Dim n A s I n t e g e r n = Combo1 . L i s t i n d e x Select Case n C a s e 0 L a b e l 7 = " 8 5 0 . 0 0 " C a s e 1 L a b e l 7 = " 7 0 0 . 0 0 " C a s e 2 L a b e l 7 = " 6 0 0 . 0 0 " E n d S e l e c t E n d S u b w 234 G r u p o E d it o r ia l Megabyte'^¡| CAPÍTULO V: Ingreso Personalizado de Datos In stru cc io n es del-C om bo2. Estas instrucciones permiten visualizar el precio de la impresora cuando el usuario la selecciona. P r i v a t e S u b C o m b o 2 _ C l i c k ( ) Dim n A s I n t e g e r n = C o m b o 2 . L i s t l n d e x . S e l e c t C a s e n C a s e 0 : L a b e l 8 = " 1 8 0 . 0 0 " C a s e 1 : L a b e l 8 = " 2 7 0 . 0 0 " C a s e 2 : L a b e l 8 = " 3 8 0 . 0 0 " E n d S e l e c t E n d S u b Instrucciones del Botón CALCULAR. P r í v a t e S u b C o m m a n d l _ C l i c k () D im s t , i g v , t t A s S i n g l e s t = V a l ( L a b e l 7 ) + V a l ( L a b e l 8 ) i g v = s t * 1 8 / 1 0 0 t t = s t + i g v L a b e 1 9 = " S u b T o t a l " + F o r m a t $ ( s t , " # # # , # # 0 . 0 0 " ) L a b e l l O = " I . G . V . " + F o r m a t $ ( i g v , " # # # , # # 0 . 0 0 " ) L a b e l l l = " T o t a l " + F o r m a t $ ( t t , " # # # , # # 0 . 0 0 " ) E n d S u b Instrucciones del Botón OTRA PROFORMA. P r í v a t e S u b C o m m a n d 2 _ C l i c k () T e x t l = " ” T e x t 2 = "" ' M u e s t r a e n l o s c o m b o s e l p r i m e r e l e m e n t o C o m b o l . L i s t l n d e x = 0 C o m b o 2 . L i s t l n d e x = 0 L a b e l 9 = ”" L a b e l l O = "" L a b e l l l = "" T e x t l . S e t F o c u s E n d S u b El botón SALIR debe tener la instrucción END.
  • 120.
    VISUAL BASIC comodebe ser... OPTION BUTTON (BOTON DE OPCION): £ Es un control que permite ingresar datos por selección. De esta forma sólo se puede seleccionar una opción de un grupo de ellas. PR IN CIPA LES PR O PIED A D ES DE UN O PTIO N BUTTON: ÑAME Permite asignarle un nombre. Por defecto el nombre es Optionl, 0ption2, 0ption3 etc. A IJ G N M E N T Para indicar la ubicación del texto y del botón. CAPTION Para escribir el texto que acompaña al botón. ENABLED Para indicar si debe estar activo o no. FONT Permite seleccionar el tipo, tamaño y estilo de letra. FORECOLOR Selecciona un color de la letra. VALUE Permite saber si un botón ha sido elegido o seleccionado. VISIBLE Para indicar si se debe visualizar. M UY IM PO RTA N TE Para preguntar si un botón de opción está seleccionado se utiliza la propiedad Valué. Por ejem plo, para preguntar si el botón N°1 está seleccionado se escribe: I f O p t i o n l . V a l u é = T r u e t h e n También se puede preguntar asi: I f O p t i o n l t h e n P a r a s e l e c c i o n a r u n b o t ó n m e d i a n t e un c o m a n d o s e l e a s i g n a e l v a l o r TRUE y p a r a q u i t a r l a s e l e c c i ó n s e l e a s i g n a e l v a l o r FALSE, E j e m p l o : O p t i o n l . v a l u e = T r u e o O p t i o n l = T r u e Lo s e l e c c i o n a . O p t i o n l , v a l u e = F a l s e o O p t i o n l = F a l s e Q u i t a l a s e l e c c i ó n . ÉÉÉ^ 236 G r u p o E d it o r ia l Megabyte CAPÍTULO V: Ingreso Personalizado de Datos A P L IC A C IO N D E S A R R O L L A D A N° 33 Si es Soltero debe pedir la edad y el N- de hermanos y su sueldo debe ser S/. 200.00. Si es Casado debe pedir el tiempo de casado y el N- de hijos, su sueldo debe ser S/. 250.00. Nombre Estado Civil : <• Soltero (a) C Casado [a) Sueldo Edad N! de hermanos n s i r Nuevo Salir í:i J n jx j Nombre | - Estado Civil:-....... r Soltero [a) (• Casado [a] Nuevo Salir Sueldo (250.00 Tiempo de Servicio | N! de Hijos I PASO N ’ 1: Dibujar los controles. Labell |Texti Framel Commandl I C Optionl f ' 0ption2 Command2 Label2 LabeB Label3 |Texl2 LabeW |Text3 PASO N° 02: Asignar las propiedades. Asigne las propiedades como se muestra en la aplicación planteada.
  • 121.
    PASO N° 03:Escribir las instrucciones de los controles. P r í v a t e S u b C o n u n an dl_ _ C líck () T e x t l = "" T e x t 2 = "" T e x t 3 = "" O p t i o n l . V a l u é = 1 L a b e 13 = " E d a d " L a b e l 4 = "Ns d e H e r m a n o s " L a b e 1 5 = " 2 0 0 . 0 0 " T e x t l . S e t F o c u s E n d S u b Si el usuario hace un click en el botón N° 1, se cambia el contenido de las etiquetas N° 1, N° 2 y N° 3 por: Edad, N” de hermanos y 200.00 respectivamente. P r í v a t e S u b O p t i o n l _ C l i c k () L a b e l 3 = " E d a d " L a b e l 4 = "Ng d e H e r m a n o s " L a b e l 5 = " 2 0 0 . 0 0 " T e x t 2 . S e t F o c u s E n d S u b Si el usuario hace un click en el botón N° 2, se cambia el contenido de las etiquetas N° 1, N° 2 y N° 3 por: Tiempo de Servicio, N° de hijos y 250.00 P r í v a t e S u b O p t i o n 2 _ C l i c k () L a b e 13 = " T ie m p o d e S e r v i c i o " L a b e l 4 = "NB d e H i j o s " L a b e l 5 = " 2 5 0 . 0 0 " T e x t 2 . S e t F o c u s E n d S u b Si no desea escribir las instrucciones en el evento Click de los botones de opciones, puede agregar un botón de comandos (Command3) que realiza lo mismo: P r i v a t e S u b C o m m a n d 3 _ C lic k () I f O p t i o n l T h e n L a b e 13 = "E d a d " L a b e l 4 = "N e d e H e r m a n o s " L a b e l 5 = " 2 0 0 .0 0 " Text2.SetFocus E n d I f I f O p tio n 2 T h e n L a b e 1 3 = "T ie m p o d e S e r v i c i o " L a b e l 4 = "N B d e H i j o s " L a b e l 5 = " 2 5 0 .0 0 " T e x t 2 . S e t F o c u s E n d I f End Sub VISUAL BASIC como debe ser. . . G r u p o E d it o r ia l Megabyte( O CAPÍTULO V: Ingreso Personalizado de Datos A P L IC A C IÓ N D E S A R R O L L A D A N° 34 Esta aplicación permite ingresar dos valores numéricos y según el botón de opción que se elija, se mostrará el resultado. Labell Label2 ( i exl1 (• 0 phon1 C 0pl¡on2 C 0ption3 r 0ption4 |Text2 Label3 Label4 Commandl Command2 PASO N’ 01: Dibujar los controles. OPERACIONES ARITMETICAS P its] Valor N * 01 Valor NS 02 C Suma ( " Resta r * M ultiplica r Divide j R E SU LT AD O OK SALIR PASO N° 02: Asignar las propiedades. PASO N° 03: Escribir las instrucciones de los controles. Instrucciones de Commandl (OK): P r i v a t e S u b C o m m a n d l _ C l i c k ( ) I f O p t i o n l T h e n L a b e l 4 = V a l ( T e x t l ) + V a l ( T e x t 2 ) I f O p t i o n 2 T h e n L a b e l 4 = V a l ( T e x t l ) - V a l ( T e x t 2 ) I f O p t i o n 3 T h e n L a b e l 4 = V a l ( T e x t l ) * V a l ( T e x t 2 ) I f O p t i o n 4 T h e n L a b e l 4 = V a l ( T e x t l ) / V a l ( T e x t 2 ) E n d S u b
  • 122.
    VISUAL BASIC comodebe ser. . . C H E C K BOX (CAJA DE V ER IFIC A C IO N ): P Es un control que permite seleccionar una opción. Se diferencia de los botones de opciones porque se puede seleccionar varias opciones de un grupo. PR IN C IPA LES PR O PIED A D ES DE UN C H EC K BOX: Ñ A M E Permite asignarle un nombre. Por defecto el nombre es Checkl, Check2, Check3 etc. AUGNMENT Para indicar la ubicación del texto y de la caja. CAPTION Para escribir el texto que acompaña a la caja. ENABLED Para indicar si debe estar activo o no. P O N T’ Permite seleccionar el tipo, tamaño y estilo de letra. FORECOLOR Selecciona un color de la letra. VALUE Permite saber si una caja ha sido elegida o seleccionada. VISIBLE Para indicar si se debe visualizar. A P L IC A C IÓ N D E S A R R O L L A D A N° 35 Esta aplicación es un ejemplo de cómo se puede usar las cajas de verificación. Para preguntar si una caja de verificación está seleccionada se utiliza la propiedad Valué. Para preguntar si la caja de verificación N° 1 está seleccionada se escribe: If Checkl. Valué = 1 Then También se puede preguntar de la siguiente manera: If Checkl Then A l i g u a l q u e l o s O p t i o n B u t t o n s e p u e d e n s e l e c c i o n a r o q u i t a r l a s e l e c c i ó n c o n l o s v a l o r e s TR U E o F A L S E : C h e c k l . v a l u e = T r u e o C h e c k l = T r u e Lo selecciona. C h e c k l . v a l u e = F a l s e o C h e c k l = F a l s e Le quita la selección. ® ¡ f ^ 2 4 0 G r u p o E d it o r ia l Megabyte | > CAPITULO V: Ingreso Personalizado de Datos L A A P L IC A C IO N A D E S A R R O L L A R E S: tí V I S U A L B A S I C 1 [Negritai f " Subrayado T~ Cursiva Salir PASO N° 01: Dibujar los controles. Ê3 L a b e l ! iCheckl r Check2 Commandl PASO N° 02: Asignar las propiedades. ETIQUETA Labell CAJA DE VERIF. Checkl Check2 Check3 COMANDOS Commandl CAPTION Visual Basic CAPTION Negrita Subrayado Cursiva CAPTION &Salir J— Check3 BORDERSTYLE 1 - Fixed Single VALUE 0 - Unchecked 0 - Unchecked 0 - Unchecked FORMULARIO Formi CAPTION Estilos de Letra
  • 123.
    |¡ l lt y ¡ |> VISUAL BASIC como debe ser. . . PASO N° 03: Escribir las instrucciones de los controles. Si el usuario hace un click en la caja N° 1, se verifica sí está seleccionada. Para activar la letra negrita, a la propiedad FontBold de la etiqueta se le asigna el valor True. P r í v a t e S u b C h e c k l _ C l i c k () l ' f C h e c k l . V a l u é = 1 T h e n L a b e 1 1 . F o n t B o l d = T r u e E l s e L a b e l l . F o n t B o l d = F a l s e E n d I f E n d S u b Si el usuario hace un click en la caja N° 2, se verifica sí está seleccionada. Para activar la letra subrayada, a la propiedad FontUnderline de la etiqueta se le asigna el valor True. P r í v a t e S u b C h e c k 2 _ C l í c k () I f C h e c k 2 . V a l u é = 1 T h e n L a b e l l . F o n t U n d e r l i n e = T r u e E l s e L a b e l l . F o n t U n d e r l i n e = F a l s e E n d I f E n d S u b Si el usuario hace un click en la caja N° 3, se verifica sí está seleccionada. Para activar la letra cursiva, a la propiedad Fontltalic de la etiqueta se le asigna el valor True. P r í v a t e S u b C h e c k 3 _ C l i c k () I f C h e c k 3 . V a l u é = 1 T h e n L a b e l l . F o n t l t a l i c = T r u e E l s e L a b e l l . F o n t l t a l i c = F a l s e E n d I f E n d S u b G r u p o E d it o r ia l Megabyte^ CAPITULO V: Ingreso ¡ LISTBOX (CAJA DE LISTA) Es un control que permite mostrar en una lista un conjunto de elementos o alternativas que el usuario puede seleccionar. PR IN CIPA LES PR O PIED A D ES DE UN LISTBOX: ÑAM E Permite asignarle un nombre. Por defecto el nombre es Listl, List2, List3 etc. ENABLED Para indicar si debe estar activo o no. FONT Permite seleccionar el tipo, tamaño y estilo de letra. FO REC O LO R Selecciona un color de la letra. LIST Permite ingresar los elementos o alternativas que el usuario puede elegir de este control. Por cada elemento que se ingrese se debe pulsar <CTRL> + <ENTER>. Para insertar un elemento, ubique el cursor al inicio de donde lo desea insertar y pulse <CTRL> + <ENTER>. LISTCOUNT Permite obteneí el número de elementos de la lista. LISTINDEX Para saber el elemento que el usuario ha elegido. El valor -1 indica que no se ha seleccionado ningún elemento, 0 indica el primer elemento, 1 el segundo,etc. SORTED Para indicar si los elementos deben salir ordenador. STYLE Para indicar la forma de seleccionar un elemento: O-Standard ó 1-Checkbox. La opción 1-Checkbox permite que cada elemento funcione como una casilla de verificación. T O O L T IPT E X T Para mostrar un mensaje de ayuda cuando el puntero del mouse se encuentre sobre el control. V ISIB LE Para indicar si el control se debe visualizar.
  • 124.
    A P LIC A C IO N D E S A R R O L L A D A N° 36 t * V E N T A D E P A S A J E * « 5 3 * 3 1 A g e n c ia d e T r a n s p o r t e " S I N R E T O R N O S . A . " P a s a je r o ( R u b é n C a s tillo D . N .I. | l 6 3 7 4 6 5 7 D e s t in o : L im a ^ ¡ s e r a s * » — P r e c io 1 5 0 .0 0 P ? [D e s c u e n to ! js.O O T ru jillo ----- P iu ra T O T A L S / . 4 5 . 0 0 N u e v o j S a lir D.N.I, y el lugar de destino que se debe seleccionar de una lista, luego debe mostrar en forma automática su precio y opcionalmente un descuento del 10%. Los lugares de destino y su precio son: Lima S/. 60.00, Chimbóte S/. 50.00, Trujillo S/. 30.00, Piura S/. 30.00 y Tumbes S/. 50.00. El precio debe estar almacenado en un array. PASO N° 1 : D ib u jar los controles. L a h > a t 3 ----------------------- Lat»ol3 j T e x t2 L a b e l5 L o b o l7 ----- I C h e c k l Lo b o ie L a b e l B L a b e I S C o m m a n d l | C o m m a n d 2 1 N O TA : La barra de desplazamiento vertical del control List se muestra en forma automática cuando no se puede visualizar todos los elementos que contiene. PASO N° 02: A signar las propiedades a los controles. Ud., está en condiciones de asignar las propiedades a los controles como se muestra en la aplicación a desarrollar. Los elementos se ingresan a la lista de la misma forma que en un Combo. Las cajas de texto deben estar en blanco. PASO N° 03: E scrib ir las instrucciones de los controles. Definir la variable PRECIO de tipo Array para cinco elementos en la ventana de declaración del formulario (General - Declarations). ‘CINCO ELEMENTO (DE 0 A 4) Dim PREClO(5) As Single FnrrnRiAr M e g a b y , e « S CAPÍTULO V: Ingreso Personalizado de Datos Asignar los valores al array; es decir los precios de los pasajes. Se ejecutan cuando se activa el formulario. Al hacer Doble Click o pulsar F7 en cualquier parte libre del formulario elija el evento ACTIVATE. Prívate Sub Form_Activate() P R E C IO (0 ) 60 P R E C IO (1 ) 5 0 P R E C IO (2 ) 3 0 P R E C IO (3 ) 3 0 P R E C IO (4 ) 5 0 End Sub Instrucciones del Botón Nuevo. P r í v a t e S u b C o m m a n d l_ C lic k () L i s t l . L i s t l n d e x = 0 C h e c k l . V a l u é = 0 T e x t l = "" T e x t2 = ” L a b e l 7 = L a b e l8 = L a b e l 9 = T e x t l . S e tF o c u s End Sub Instrucciones de la Casilla de Verificación (CHECK1), para que al activar o desactivar el descuento se visualicen los resultados. P r í v a t e S u b C h e c k l _ C l i c k () D im D e s , T o t A s S i n g l e 'P r e g u n t a s i t i e n e d e s c u e n t o I f C h e c k l T h e n D e s = V a l ( L a b e l 7 ) * 1 0 / 1 0 0 L a b e l 8 = F o r m a t( D e s , " # # 0 .0 0 " ) E l seL a b e l 8 = 0 E n d I f T o t = V a l ( L a b e l 7 ) - V a l ( L a b e l 8 ) L a b e l 9 = F o r m a t ( T o t , " # # 0 .0 0 " ) E n d S u b ? Instrucciones del Control LIST1, para que al seleccionar un elemento (destino), se visualicen los resultados. P r í v a t e S u b L i s t l _ C l i c k ( ) ' D im N A s I n t e g e r D im D e s , T o t A s S i n g l e N = L i s t l . L i s t l n d e x L a b e l 7 = F o r m a t( P R E C I O (N ) , " # # 0 . 0 0 ”) I f C h e c k l T h e n D e s = V a l ( L a b e l 7 ) * 1 0 / 1 0 0 L a b e l 8 = F o r m a t( D e s , " # # 0 .0 0 " ) E l seL a b e l 8 = 0 E n d I f T o t = V a l ( L a b e l 7 ) + V a l ( L a b e l 8 ) L a b e l 9 - F o r m a t ( T o t , " # # 0 .0 0 " ) E n d S u b
  • 125.
    wæÆ ï VISUA L BASIC como debe ser... CALCULWiWSDÍAS DE FERTILIDAD SEGÚN ELMÉTODODELRITMO G C liíS MENSTRUALES REGULARES Si una mujer tiene ciclos Menstruales Regulares, sus días probables de fertilidad empiezan a losódíasde su primer día de menstruación y duran 13 días. Por ejemplo: Si su primer día de menstruación fue el 01 de Oct, sus días fértiles empiezan el 7 de Oct y terminan en 19deOct. OCLQ8 MENSTRUALES IRREGULARES Para determinar los días probables de fertilidad en mujeres con ciclos Menstruales Irregulares, se tiene que saber cuál es el período de días mas largo y mas corto en los últimos 6 (seis) ciclos menstruales. A la cantidad de días mas corto se le resta 18 (dieciocho) para obtener a los cuantos días de su primer día de menstruación empieza sus días fértiles y al periodo de días mas largo se le resta 11 (once) para obtener a los cuantos días de su primer día de menstruación terminan sus días fértiles. Por ejemplo, si el periodo de días mas corto fue de 24 días y el ciclo mas largo fue de 32 días, entonces, sus días fértiles empiezan a los seis días de su primer día de menstruación (contando uno el primer día de su menstruación) y terminan a los 21 días de iniciado su periodo menstrual. ■». M t T O D O " D E L R I T M O " O M E T O D O " N A T U R A L " D I A i» P R O B A R L E S D E E E R T I I ID A D E N M i t r . * li u « c ió n l l r g u l . « I M c n i l i u o c i ó n l i i a g u l a i r D Ía d o M e n stru ació n : D o m in g o , 2 3 ck» E n e ro d e 2 0 0 0 •A S P R O B A B L E S E N C IC NO FERTILIDAD L O M E N S T R U A L R E G F E R T IL I D A D J L A R D E : .............................. NO FERTILIDAD 2 3 / 0 1 /0 0 2 9 /0 1 /OU 1 1 /0 2 /0 0 2 4 /0 1 / 0 0 3 0 / 0 1 /0 0 1 2 /0 2 /0 0 2 5 /0 1 / 0 0 3 1 / 0 1 /0 0 1 3 /0 2 /0 0 2 6 /0 1 / 0 0 0 1 / 0 2 /0 0 1 4 /0 2 /0 0 2 7 /0 1 / 0 0 0 2 / 0 2 /0 0 1 5 / 0 2 /0 0 2 8 / 0 1 /0 0 0 3 / 0 2 / 0 0 — 1 6 /0 2 /0 0 0 4 / 0 2 /0 0 1 7 /0 2 /0 0 0 5 / 0 2 /0 0 1 0 /0 2 /0 0 0 6 / 0 2 /0 0 J T J 1 9 /0 2 /0 0 FU EN TE O B S T E T R IZ M at a llan a H u rtad o - Cop. 7 5 9 7 S e i v icio d e C o n se je ría IN N P A R E S * C hiciayo D IA S P R O B A B L E S D E F E R T IL I D A D E N M e n s t r u a c i ó n R é g u l a i M e n s t r u a c i ó n li r é g u l a i 1 et. D í a d e M e n stru ació n : M a lte s , 0 4 d e E n e ro d e 2 0 0 0 P e ó o d o m a s c o ito : 2 6 d í a s y p e í io d o m a s largo: 31 d ía s D IA S P R O B A B L E S E N C IC L O M E N S T R U A L I R E G U L A R D E . N O FERTILID AD F E R T IL I D A D N O FERTILIDAD 0 4 /0 1 /0 0 0 5 /0 1 /0 0 0 6 /0 1 /0 0 0 7 /0 1 /0 0 0 8 /0 1 / 0 0 0190//0011//0000 1112//0011//0000 1 3 / 0 1 /0 0 1 4 / 0 1 /0 0 1 5 / 0 1 /0 0 1 6 /0 1 / 0 0 1 7 /0 1 / 0 0 1 8 /0 1 / 0 0 1 9 /0 1 / 0 0 2 5 /0 1 /0 0 2 6 / 0 1 /0 0 2 7 /0 1 /0 0 2 8 /0 1 /0 0 2 9 /0 1 /0 0 3 0 /0 1 /0 0 3 1 / 0 1 /0 0 01/0 2 /0 0 02/02/00 FU EN TE O B S T E T R IZ : S u s a n a M a ta la n a H u rlad o - C o p 7 5 9 7 S e iv ic io d e C o n se je ría IN N P A R E S - C N d a y o Para desarrollar esta aplicación, dibuje en un formulario 2 controles Frame, 2 boto­nes de comandos, 4 etiquetas y 3 ListBox. ► 246 G rupo E ditorial Megabyte^ CAPÍTULO V: Ingreso Personalizado de Datos i n s t r u c c i o n e s d e l o s b o t o n e s B O T Ó N P E R IO D O M E N S T R U A L R E G U L A R Prívate Sub Commandl_Click() Dim fecha As String Dim R, X As Integer Listl.Clear : ListíClear : List3.Clear fecha = InputBox(“Ingrese la Fecha del Primer Día” + Chr(13) + “ de la última menstruación”, “MENSTRUACION REGULAR”) If Not IsDate(fecha) Then MsgBox “HA INGRESADO UNA FECHA INCORRECTA”, 16, “CUIDADO” Else R = MsgBox(“ ler. Día de Menstruación + Format(CDate(fecha), “Long Date”), 36, “ES LA FECHA CORRECTA”) If R = 6 Then Labell=” ler. Día de Menstruación:”+Format(CDate(fecha),”Long Date”) Frame2 = “DIAS PROBABLES EN CICLO MENSTRUAL REGULAR DE: “ For X = 0 To 5 Listl.Addltem (CDate(fecha) + X) 'DIAS PROBABLES DE NO FERTILIDAD Next X For X = 6 To 18 List2.AddItem (CDate(fecha) + X) ‘DIAS PROBABLES DE FERTILIDAD Next X For X = 19 To 27 List3.AddItem (CDate(fecha) + X) ‘DIAS PROBABLES DE FERTILIDAD Next X End If E ndlf End Sub BOTÓN PERIODO MENSTRUAL REGULAR Prívate Sub Command2_Click() Dim fecha As String Dim L, C, INICIO, FINAL, R, x As Integer C = Val(InputBox(“Número de días más corto”,"DE LOS ULTIMOS 6 CICLOS MENSTRUALES")) L = Val(InputBox(“Número de días más largo “, “DE LOS ULTIMOS 6 CICLOS MENSTRUALES')) INICIO = C - 18 FINAL = L - 11 MsgBox “El período fértil empieza a los “ & INICIO & “ días de la menstruación” & Chr(13) & “ y termina después de “ & FINAL & “ dias de tu mestruación”, 64, “CUlDAIX V’ fecha=InputBox(“ingresa ek día de tu última menstruación”,’’MENSTRUACION IREGULAR”) If Not IsDate(fecha) Then MsgBox “HA INGRESADO UNA FECHA INCORRECTA ”, 16, “CUIDADO” Else If R = 6 Then Labell = “ 1er. Día de Menstruación: “ + Format(CDate(fecha), “Long Date”) Labell = Labell & Chr(13) & “Periodo mas corto: “ & C & " días y periodo mas largo: “ & L & “ días” Frame2 = “DIAS PROBABLES EN CICLO MENSTRUAL IREGULAR DE: “ For x = 0 To INICIO - 2 Listl.Addltem (CDate(fecha) + x) ‘DIAS PROBABLES DE NO FERTILIDAD Next x For x = INICIO - 1 To FINAL List2.AddItem (CDate(fecha) + x) ‘DIAS PROBABLES DE FERTILIDAD Next x For x = FINAL + 1 To 30 List3.AddItem (CDate(fecha) + x) ‘DIAS PROBABLES DE FERTILIDAD Next x End If End If End Sub
  • 126.
    iÉÉÉÍÉÍ» VISUAL BASICcomo debe ser... UPDOW N 1: Este control muestra dos botones con flechas que nos permiten incrementar o disminuir un valor. Se puede relacionar o no con otro control como por ejemplo con una caja de textos para que funcionen como un solo control. PR IN C IPA LES PR O PIED A D ES D E C O N TR O L UPDOW N: Las propiedades principales del control se obtiene con sólo elegir la propiedad Custumize (personalizado). Se visualiza una ventana con tres hojas o fichas: General, Relaciones y Desplazamiento. la^TTiT-Tl-'MdJ I II I I I I I ■ ■ ■ ■ ■ ■ ■ ■ ■ E l General | Relaciones | Desplazamiento j Qriontntíon |0 c-c20r¡©n»«t¡onV©r»icoil _~] OLEDrouMode jü - cc20LEDropNone j - ] _J C a n c e la r j ______________| A y u d a A L IG M E N T Coloca el control UpDown a la derecha o izquierda del control con el que se ha relacionado. O R IE N T A T IO N Coloca el control en forma vertical o en forma horizontal O L E D R O P M O D E Devuelve o establece el modo en que un componente de destino realiza las operaciones de colocación. E l contenido de la hoja Relaciones es: G e n e ra l R e la c io n e s J D e s p la za m ie n to j B u d d y C o n t r o l | f~ ÍAutoBu¿cíyj í~ I □ I A c e p ta r | C a n c e la r | A p liç a r j A y u d a 248 G r u p o E d it o r ia l Megab CAPÍTULO V: Ingreso Personalizado de Datos B U D D Y C O N TRO L Se utiliza para escribir el nombre de un control que se encuentre dibujado en el formulario y con el cual desea relacionar el control UpDown. Por ejemplo, si tiene dibujado 5 cajas de texto y desea relacionar el control con Text3, entonces debe escribir Text3 o el nombre que le a asignado en Ñame. AUTOBUDDY Permite que el control UpDown se relacione automáticamente con el control que usted ha dibujado inmediatamente antes o despues de dibujar del control UpDown. SYNCBUDDY Se utiliza para indicar si la propiedad Valué del control UpDown debe estai sincronizada con la propiedad predeterminada o seleccionada del control con el que se encuentra relacionado. Si se relaciona con una caja de textos, la propiedad predeterminada es Text, esto quiere decir que en la propiedad Text de la caja de texto se muestra el valor la propiedad Valué del control UpDown. BU DD YPROPERTY Se utiliza para seleccionar una propiedad para la relación diferente a la predeterminada. El contenido de la hoja Desplazamiento es: r-j'.i.mi'. f 'i'i'.mumiii.Kiii.i-'— m ^ — í^ n — a— ■ i G enera! | R elaciones D e s pla za m ien to | In te iva lo d e d e s p la z a m ie n to , y e lu e M in: M a x B fó fu l r Wmp T a s a d e d e s p la z a m ie n to In c re m e n t j ! ir' | A ceptar j Cancetai' J Aphj. y | A y ix l . VALUE Contiene un valor que depende de los botones donde se hizo clíck. Este valor se visualiza en el control relacionado. M IN Se utiliza para indicar el valor mínimo para el control UpDown. M AX Se utiliza para indicar el valor máximo para el control UpDown. WRAP Esta propiedad permite establecer si el valor regresa al valor mínimo cada vez que se llegue al valor máximo o viceversa. IN C R E M E N T Esta propiedad permite establecer el valor del incremento o decremento para cada vez que se haga clik en los botones del control UpDown.
  • 127.
    íM B á? VISUAL BASIC como debe ser... M A SK ED B O X ##| Este control permite ingresar y visualizar datos con un formato determinado. Si no le asignamos ningún formato de ingreso o visualización se comporta de una manera similar al de una caja de textos. PR IN C IPA LES PR O PIED A D ES D EL C O N TR O L M ASKEDBOX: FORMAT Sirve para seleccionar el formado de visualización de los datos. Estos datos pueden ser de tipo numérico, fecha, hora y texto. Por ejemplo: Formato monetario $#,##0.00; ($#,##0.00) Utiliza separador de miles; presenta los números negativos entre paréntesis. Formato de porcentaje. 0% Multiplica el valor por 100 y agrega un signo de porcentaje. Formato de fecha largo, dddddd Ejemplo: Domingo 13 de Junio de 1999 Formato de fecha medio, dd-mrm-yy Ejemplo: 13-Jun-99. Formato de fecha corto, ddddd Ejemplo: 13/06/99. Formato de hora largo, tttt Ejemplo: 1:30:42 A.M. Formato de hora medio. hh:mm AM/PM Ejemplo: 1:30 A.M. Formato de hora corto. hh:mm Ejemplo: 1:30. MASK Sirve para asignar un formado para ingresar datos. Los caracteres más utilizados son: # .- Indica que sólo se deben ingresar dígitos. ? .- Indica que sólo se deben ingresar letras. . .-Se utiliza para separar decimales. , .- Se utiliza para separar miles. : .-Se utiliza para separar en las horas. / .-Se utiliza para separar en las fechas. En los cuatro caracteres anteriores verifique la configuración de su computadora (Configuración regional). A . -- Indica que sólo se deben ingresar letras o números. > .- Convierte las siguientes letras a mayúsculas. < .- Convierte las siguientes letras a minúsculas. C .- Indica que sólo debe aceptar espacios. .- Permite incluir cualquier carácter anterior dentro de la máscara. 2 5 0 G rupo E ditorial M e g a b y t e < | ¡ ¡ ¡ ^ > CAPÍTULO V: Ingreso Personalizado de Datos Í s S S Í Í P Ejemplo: Si en la propiedad Mask Ud., escribe: #### .- Permite ingresar cuatro dígitos. ???? .- Permite ingresar cuatro letras. ##??## .- Permite ingresar dos dígitos, luego dos letras y luego dos dígitos mas. ##/##/## o ##-##-## .- Facilita el ingreso de un fecha, pero no controla si la fecha ingresada es correcta. ##:##.## .- Facilita el ingreso de las horas, minutos y segundos, pero no controla si se ingresada correctamente. ###,###.## .- Facilita el ingreso de cantidades utilizando miles y dos decimales. >?<??????? .- Permite ingresar ocho letras, la primera la convierte a mayúscula y el resto en minúsculas. <####> .- Permite ingresar cuatro dígitos entre los signos mayor y menor. ##CAAAAA .- Permite ingresar dos dígitos, -un espacio (opcional) y luego cinco valores alfanuméricos (letras o números). NOTA: Para borrar dentro de un programa el contenido de este control, primero debe borrar lo que contiene en la propiedad Mask y luego se borra lo que contiene la propiedad Text. MaskedBox 1 .Mask ="" MaskedBox 1 .Text="" A L L O W P R O M P T Se utiliza para indicar el carácter de petición se puede considerar como un ingreso válido. P R O M P T C H A R Se utiliza para indicar el carácter de petición de los datos. El carácter predeterminado es el subrayado (_), pero Ud., puede utilizar cualquier otro carácter. MUY IM PO RTA N TE Si no desea visualizar ningún carácter de petición de datos, borre el carácter que se encuentra en la propiedad PromptChar y luego pulse la tecla ALT y el número 255. P R O M P T IN C L U D E Se utiliza para indicar si al referirnos al contenido de la propiedad Text se va a tomar en cuenta el carácter de petición. NOTA: ( uando se ingresa un valor incorrecto; es decir, no cumple el formato establecido, entonces se ejecutan las instrucciones del evento ValidationError.
  • 128.
    como debe ser... APLICACION DESARROLLADA N° 37 iü, IN G R E S O DE P A C IE N T E S E s ì z i N o m b re d e l P a c ie n te jjO R G E R IO S F e c h a d e In g re s o | 0 4 / 0 8 / 1 9 9 9 - H o ra d e In g re s o (2 4 H s .) 1 6 : 2 0 : 1 5 - I 3 S a la N s [ I - 1 2 ) A s e g u ra d o (S /N ) ? D a lo s d e l S iste m a : F e c h a j M ié rc o le s 4 d e A g o s to d e 1 9 9 9 A c tu a liz a r e l S is te m a j] A c tu a liz a r e l S is te m a N u e v o Salir H o ra 1 6 :2 0 :3 0 Debe tener las siguientes características: 1. La Fecha y la hora de ingreso se pueden modificar con el control UpDown. 2. Para actualizar la hora el usuario debe ubicar primero el cursor en las horas, minutos o segundos. En forma predeterminada se modifican los segundos. 3. Para ingresar la sala se deben utilizar un caja de textos y un control UpDown. 4. En Asegurado sólo se debe aceptar las letras S(si) o N(no). 5. Los botones Actualizar el Sistema, deben actualizar la fecha y hora del sistema. 6. Se deben visualizar la fecha y hora del sistema. PASO N° 1: Dibujar los controles. NOTA: Cuando dibuje los controles MaskedBox, no se visualizaran los nombres (salen en blanco). S i G rupo E ditorial M e g a b y t e « * CAPITULO V: Ingreso Personalizado de Datos ^ ¡ ¡ PASO N° 2: Asignar las propiedades a los controles. AL formulado, frame, etiquetas y botones de comandos asígneles la propiedad Caption como se muestra en la aplicación a desarrollar. Las cajas de texto: Text2, Text4 y Textó deben tener en su propiedad BorderStyle el valor 0-None y en su propiedad Width el valor 200. Las cajas de texto: Text3 y Text5 deben tener en su propiedad BorderStyle el valor 0-None, en su propiedad Width el valor 90 y en su propiedad Texl dos punto (:). Las cajas de texto desde Text2 hasta Textó, deben estar lo mas juntas posibles. Esto lo puede lograr usando la propiedad Left. Los controles UpDown 1 y UpDown2 no deben tener ninguna propiedad porque no están ligados a ningún control, trabajan en forma independiente. El control UpDown3 está ligado al control Text7, por lo tanto, debe tener las siguientes propiedades: UPDOWN BUDDYCONTROL SYNCBUDDY BUDDYPROPERTY MIN MAX WRAP UpDown3 Text7 True Predeterminado 1 12 True Las propiedades de los controles MASKEDBOX son: MASKEDBOX FORMAT MASK ENABLED MaskedBoxl En Blanco #/##/#### True MaskedBox2 En Blanco >? True MaskedBox3 dddddd En Blanco False Maskedbox4 ttttt En Blanco False PASO N° 3: Escribir las instrucciones para los controles. Definir las variables a nivel de formulario: jjl Proyeclol - Form! (Código) m u (General) (Declaraciones) O ption E x p lic it Dim CAJA, HORAS, MINUTOS, SEGUNDOS As Byte Dim FECHA As Date
  • 129.
    Instrucciones del ProcedimientoM UESTRATIEM PO S u b MUESTRATIEMPO () T e x t 2 = F o rm a t(H O R A S , " 0 0 " ) T e x t 4 = F o rm a t(M IN U T O S , " 0 0 " ) T e x t 6 = Form at(SEG U ND O S, " 0 0 " ) E n d S u b Instrucciones del evento Form_activate P r í v a t e S u b F o r m _ A c t i v a t e () T i m e r l . I n t e r v a l = 1 000 ' A c t i v a l a s i n s t r u c c i o n e s d e l T im e r CAJA = 6 'L o s s e g u n d o s d e m o d i f i c a n e n fo rm a p r e d e t e r m i n a d a FECHA = D a te M a s k E d B o x l. T e x t = Format(FECHA, " d d /m m / y y y y " ) M a skE d B ox2. T e x t = "N" M askE dB o x3 . T e x t = D a te 'M u e s t r a l a F e cha d e l S i s t e m a M a skE dB o x4 . T e x t = T im e 'M u e s tr a l a Hora d e l S i s t e m a HORAS = H o u r (T im e ) MINUTOS = M i n u t e ( T i m e ) SEGUNDOS = S e c o n d ( T im e ) MUESTRATIEMPO T e x t l = "" T e x t 7 = 1 T e x t l . S e t F o c u s E nd S u b Instrucciones del Control Timer 'Muestra la hora del sistema P r í v a t e S u b T i m e r l _ T i m e r () M a s k E d B o x 4 . T e x t = T im e E n d S u b Instrucciones del Control UpDownl 'A l h a c e r c l i c k e n l a f l e c h a h a c i a a b a j o d i s m i n u y e l a f e c h a . P r í v a t e S u b U p D o w nl_D o w nC lick() FECHA = C V D a te ( M a s k E d B o x l.T e x t) - 1 M a s k E d B o x l. T e x t = Format(FECHA, " d d /m m /y y y y " ) E nd S u b 'A l h a c e r c l i c k e n l a f l e c h a h a c i a a r r i b a a u m e n ta l a f e c h a . P r í v a t e S u b U p D o w n l_ U p C lic k () FECHA = C V D a te ( M a s k E d B o x l .T e x t) + 1 M a s k E d B o x l. T e x t - Format(FECHA, " d d / m m / y y y y " ) E nd S u b 2 5 4 G rupo .............R,al M e g a b y t e # * CAPÍTULO V: Ingreso Personalizado de Datos Instrucciones del Control UpDown2 Al hacer click en la flecha hacia abajo disminuye las horas, los minutos o segundos, dependiendo de donde se encuentre el cursor. En forma predetermina disminuyen los segundos. P r í v a t e S u b U p D o w n 2 _ D o w n C lic k () S e l e c t C a s e CAJA C a s e 2 HORAS = HORAS - 1 I f HORAS = - 1 T h e n HORAS = 23 C a s e 4 MINUTOS = MINUTOS - 1 I f MINUTOS = - 1 T h e n MINUTOS = 59 C a s e 6 SEGUNDOS = SEGUNDOS - 1 I f SEGUNDOS = - 1 T h e n SEGUNDOS = 5 9 E n d S e l e c t MUESTRATIEMPO E n d S u b Al hacer click en la flecha hacia arriba aumentan las horas, los minutos o segundos, dependiendo de donde se encuentre el cursor. En forma predetermina aumentan los segundos. P r í v a t e S u b U pD ow n2_U pC lick() S e l e c t C a se CAJA C a se 2 HORAS = HORAS + 1 I f HORAS = 24 T hen HORAS = 0 C a se 4 MINUTOS = MINUTOS + 1 I f MINUTOS = 6 0 Then MINUTOS = 0 C a se 6 SEGUNDOS = SEGUNDOS + 1 I f SEGUNDOS = 6 0 Then SEGUNDOS = 0 E nd S e l e c t MUESTRATIEMPO End S u b Instrucciones del Botón Actualizar el Sistema (Fecha) P r í v a t e S u b C o m m a n d l_ C lic k () D a t e = C V D a te (M a s k E d B o x l.T e x t) M a skE d B ox3. T e x t = D a te End S u b I nstrucciones del Botón Actualizar el Sistema (Hora) P r í v a t e S u b C o m m a n d 2 _ C lic k () HORAS = V a l ( T e x t 2 ) MINUTOS = V a l ( T e x t 4 ) SEGUNDOS = V a l ( T e x t 2) Time = CVDate ( S t r (HORAS) + ": "+Str (MINUTOS) + *: "+Str (SEGUNDOS)) M askE d B ox4. T e x t = Tim e End S u b
  • 130.
    Í ¡ fÍ ^ VISUAL BASIC como debe ser. . . < 3§ Instrucciones del Control M askEdBoxl Al dejar de ingresar la fecha de ingreso, verifica que la fecha es correcta. P r í v a t e S u b M a s k E d B o x l_ L o s tF o c u s () I f N o t ( I s D a t e ( M a s k E d B o x l . T e x t ) ) Then M sgBox "No e s una f e c h a C o r r e c t a " , 1 6, " R e c t i f i q u e " M a s k E d B o x l. S e t F o c u s End I f Erid S u b Instrucciones del Control M askEdBox2 Permiten que sólo se ingresen las letras N o S. P r í v a t e S u b M a s k E d B o x 2 _ K e y P r e s s ( K e y A s c ii A s I n t e g e r ) Dim K A s I n t e g e r K = A s e (U C a se(C h r (K e y A s c i i ) ) ) I f N o t (K = 83 Or K = 78 Or K = 2 7 Or K = 13 Or K = 8) Then K e y A s c i i = 0 'I n g n o r a e l c a r a c t e r i n g r e s a d o E nd I f End S u b Instrucciones de las Cajas de Texto Al ubicar el cursor en una caja de textos la variable Caja indica dónde de hizo Click y selecciona lo que contienen. P r i v a t e S u b T e x t2 _ G o tF o c u s () CAJA=2 'H i z o c l i c k e n T e x t 2 T e x t 2 . S e l S t a r t = 0 T e x t 2 . S e l L e n g t h = L e n ( T e x t 2) T e x t 2 = T e x t 2 . S e l T e x c E nd S u b P r i v a t e S u b T e x t 4 _ G o t F o c u s () CAJA=4 'H i z o c l i c k e n T e x t 4 T e x t 4 . S e l S t a r t = 0 T e x t 4 . S e l L e n g t h = L e n ( T e x t 4 ) T e x t 4 = T e x t 4 . S e i T e x t End S u b P r i v a t e S u b T e x t 6 _ G o t F o c u s () CAJA=6 'H i z o c l i c k e n T e x t 6 T e x t 6 . S e l S t a r t - 0 T e x t 6 . S e l L e n g t h = L e n ( T e x t ß ) T e x t 6 = T e x t 6 . S e i T e x t E nd S u b P r i v a t e S u b T e x t7 _ G o tF o c u s () T e x t 7 . S e l S t a r t = 0 T e x t 7 . S e l L e n g t h = L e n ( T e x t 7 ) T e x t 7 = T e x t 7 . S e i T e x t E n d S u b I n s t r u c c i o n e s d e l B o t ó n Nuevo P r i v a t e S u b C o n m a n d 3 _ C l i c k () F o r m _ A c t i v a t e E n d S u b E l Botón salir debe tener la instrucción END. 2 5 6 G r u p o E d i t o r i a l Megabyte CAPÍTULO V: Ingreso Personalizado de Datos '% INSTRUCCIÓN SENDKEYS Hace que Visual Basic considera que se han pulsado teclas como si hubiésemos utilizado el teclado. Esto quiere decir que con esta instrucción podem os presionar autom áticam ente las teclas ENTER, ESCAPE, BACKSPACE, TAB, etc., o escribir algún texto sin que el usuario, es decir, la persona que esta usando la computadora lo haga. Por ejemplo, para enviar el texto Visual, se escribe: SendKeys "Visual” Los signos más(+), intercalación(A), porcentaje(%), tilde(~), los paréntesisO y las teclas especiales deben de estar entre llaves ({}). Debe utilizar el nombre correcto de las teclas especiales en mayúsculas o minúsculas. TECLA NOMBRE TECLA NOMBRE RETROCESO {BACKSPACE}, {BSJ INSERT {INSERT} o {INS} INTER (BREAK) FLECHA IZQ {LEFT} BLOQMAYÚS ¡CAPSLOCKj BLOQ NÚM {NUMLOCK} SUPR (DELETE} o (DEL) RE PAG {PGDN} FLECHA ABAJO (DOWN} AVPÁG {PGUP} FIN (END) IMPR PANT {PRTSC} ENTRAR {ENTER}o ~ FLECHA DER {RIGHT} ESC {ESC} BLOQ DESPL {SCROLLLOCK} AYUDA {HELP} TAB {TAB} INICIO (HOME) FLECHA ARRIBA {UP} Las teclas de función Fl, F2, etc., tienen el mismo nombre. Ejemplos: Las siguientes instrucciones ubican el cursor en Textl y pulsan en forma automática la tecla TAB. Textl.setfocus Sendkeys "{TAB}" Las siguientes instrucciones ubican el cursor en el Command2 y pulsan en forma automática la tecla ENTER que equivale a hacer click, por lo tanto ejecutarán las instrucciones que se encuentran en dicho botón de comandos. Command2.SetFocus SendKeys ''{enter}" La siguiente instrucción pulsa en forma automáticas las teclas 'Í’AB y ENTER: SendKeys "{tab}{enter}" Para combinar las teclas con CTRL, MAYÚS (SHIFT) y ALT, debe escribir primero el código de la tecla: CTRL (CONTROL) A MAYÚS (SHIFT) + ALT %. Y luego el nombre de la tecla que desea entre paréntesis. Por ejemplo, La siguiente instrucción pulsa en forma automática F4, manteniendo presionada la tecla ALT. S e n d K e y s "% ({F 4}) “ La siguiente instrucción mantiene presionada la tecla Shift, mientras escribe la palabra trabajo. S e n d K e y s "+ ( t r a b a j o ) " Se puede indicar también la cantidad de veces que desea que se pulse la tecla. Por ejemplo, la siguiente instrucción pulsa 6 veces la tecla BACKSPACE: S e n d K e y s " (B S 6} "
  • 131.
    i y,SY. VILBA SIC como debe ser. A P L IC A C IO N D E SA R R O L L A D A N° 38 Esta aplicación permite ingresar datos, pero tiene un botón que hace una demostración de cómo ingresarlos. Nombre E d ad D irección T eléfoho r (Demostración Estudios j Primaria N u evo S a lir PASO N° 1: Dibujar los controles. -IPI *1 Labell Label2 Label3 Labe!4 LabeIS ¡T extl |T e xt2 |T e xt3 | f ext4 Command3 Com bol Comm and! " 3 : : Comm and2 PASO N° 2: Asignar las propiedades a los controles. A las etiquetas y botones de comandos asígneles su propiedad Caption como se muestra en la aplicación a desarrollar. El Com bol debe tener en su propiedad List, los valores: Prim aria, Secundaria y Superior. PASO N" 3: Escribir las instrucciones para los controles. Definir las variables a nivel de formulario. P u b l i c DATO, Y, N A s B y t e P u b l i c NOMBRE, EDAD, D IRECCIO N, TELEFONO A s S t r i n g Procedimiento Cambio S u b CAMBIO () DATO = DATO + 1 Y = 0 S e n d K e y s " { TAB}' E n d S u b 258 Instrucciones del botón Nuevo P r í v a t e S u b C o m m a n d l _ C l í c k () F o r m _ A c t i v a t e E n d S u b G r u p o E d it o r ia l Megabyte* Instrucciones del procedimiento Form_Activate P r i v a t e S u b F o r m _ A c tiv a te () Rem D a to s a v i s u a l i z a r en l a d e m o s tr a c ió n NOMBRE = "OLGA UBILLUS D. " EDAD = "25 ANOS" DIRECCION = "A v. IMELDA LOPEZ 2 8 5 " TELEFONO = "2 2 2 3 2 4 " DATO = 1 Y = 0 T e x t l = : T e x t2 = "" : T e x t3 = "" : T e x t4 = C o m b o l. L i s t l n d e x = 0 : T e x t l . S e tF o c u s E nd S u b Instrucciones del botón Demostración. P r i v a t e S u b C o m m a n d 3 _ C lic k () F o r m _ A c tiv a t e C om m andl. E n a b le d = F a ls e Command2. E n a b le d = F a ls e Command3. E n a b le d = F a ls e T im e r 1 . I n t e r v a l = 10 0 E nd S u b Instrucciones del-control Tim erl P r i v a t e S u b T im e r l_ T im e r () Y = Y + 1 S e l e c t C a se DATO C a se 1 S e n d K e y s M id (NOMBRE, Y, 1) I f Y = L e n (NOMBRE) T hen CAMBIO C a se 2 S e n d K e y s M id (EDAD, Y, 1) I f Y = L e n (EDAD) T h en CAMBIO C a se 3 S e n d K e y s M id (DIRECCION, Y, 1) I f Y = L en (DIRECCION) T hen CAMBIO C a se 4 S e n d K e y s M id (TELEFONO, Y, 1) I f Y = L en (TELEFONO) T hen CAMBIO C a se 5 T i m e r l . I n t e r v a l = 700 'A m p lia e l i n t e r v a l o d e tie m p o S e n d K e y s " ( { f 4 } ) " 'M u e s tr a l o s e le m e n t o s d e l Combol DATO = DATO + 1 C a se 6 S e n d K e y s " ( { dow n})" DATO = DATO + 1 C a se 7 S e n d K e y s " ( {dow n})" DATO = DATO + 1 C a se E l s e T i m e r l . I n t e r v a l = 0 C om m andl. E n a b le d = T r u e Command2. E n a b le d = T r u e Command3.E n a b le d = T r u e C om m andl. S e tF o c u s E nd S e l e c t E nd Su b 2 5 9 « ¡ g »
  • 132.
    VISUAL BASIC comodebe ser.. ARRASTRAR Y COLOCAR Para que usted pueda desarrollar programas donde se permita Arrastrar y Colocar Objetos, primero debe saber siguiente: EVENTO DRAGDROP Es un evento cuyas instrucciones que contiene se ejecutan cuando se termina el proceso de Arrastrar y Colocar. Recibe normalmente tres valores en las siguientes variables: SOURCE: Es una variable que representa al control que se esta arrastrando. Puede utilizar esta variable para asignar valores a las propiedades de dicho control. X: Es una variable que representa la posición Horizontal del puntero del mouse. Y: Es una variable que representa la posición Vertical del puntero del mouse. Si trabajamos con array de controles también devuelve un valor en la variable INDEX que representa al N° del control del array que se está utilizando. EVENTO DRAGOVER Es un evento cuyas instrucciones que contiene se ejecutan cuando el proceso de Arrastrar y Colocar se esta realizando. Recibe los mismos valores que el evento DragDrop, pero además: STATE: Es una variable que representa cuál es la situación del control que se esta arrastrando en el control de destino. Devuelve los valores 1, 2 ó 3. 0 : El control que se está arrastrando entra al control destino. 1 : El control que se está arrastrando sale del control destino. 2: El control que se está arrastrando se ha movido sobre el control destino. PROPIEDAD DRAGMODE Cuando un control tiene esta propiedad se utiliza para indicar cómo se debe iniciar el proceso Arrastrar y Colocar. Si se le asigna el valor 0 (Manual) se necesita utilizar el método Drag para iniciar el proceso. Si se le asigna el valor 1 (Automático) el proceso se inicia automáticamente cuando usted lo requiera. MÉTODO DRAG Este método se utiliza para iniciar, terminar o cancelar un proceso de Arrastrar y Colocar. Su sintaxis es: Nombre del Control.Drag Valor El valor puede ser: 0 : Cancela el proceso de Arrastrar y Colocar. 1 : Inicia el proceso de Arrastrar y Colocar. 2 : Termina el proceso de Arrastrar y Colocar. La siguiente aplicación muestra un ejemplo de Arrastrar y Colocar: 260 G r u p o E d it o r ia l Megabyte ^ ||i ||| O CAPÍTULO V: Ingreso Personalizado de Datos A P L IC A C IO N D E SA R R O L L A D A N° 39 Esta aplicación consiste en el juego “TRES EN RAYA” para lo cual se utiliza el proceso de Arrastrar y Colocar. yjS*í ür~? mr r ■**f*e« ix : r p ^ ■ ... ..... . p B t m & x W 01 corneto j& lí ix a Muela PASO N° 1: Dibujar los controles. Picturel Picture2 Array de Pictureó Picture3 Picture4 (de0a8) Hcture5 ■ Labell Label3 jT ex tl mm Labe(2 LabeM IT ext2 Frame4 r Check! -Picture7 PASO N° 2: Asignar las propiedades. Coloque el Picture2 sobre el Picturel y el Picture4 sobre el Picture3. Sólo al Picture5 y Picture7 asigneles en su propiedad DragMode el valor I (Automático). Los gráficos utilizados en la propiedad picture de algunos controles son: Face03.ico (Alegre), Face04.ico (Triste), House.ico (Casa), Match.ico (Fuego), TrffclOa.ico (Semáforo), EraseOl .ico (Borrador). Si no los tiene utilice cualquier otro. A los otros controles asigneles las propiedades como se indica en la aplicación.
  • 133.
    Í S Í¡ ^ VISUAL BASIC como debe ser. . . PASO N° 3: Escribir las instrucciones para los controles Instrucciones del botón Nuevo Juego. Private Sub Commandl_C lick() Dim x As Byte Rem Oculta las figuras alegre y triste Picture 1. Visible = False Picture2.Visible = False Picture3.Visible = False Picture4.Visible = False Rem Limpia el tablero del tres en raya For x = 0 To 8 Pictureófx) = LoadPicture("") Next x Rem Pregunta quién juega primero I f Check2 Then Frame ¡.Enabled = True Frame 3. Enabled = False ElseF rame 1. Enabled = False Frame3. Enabled - True End I f Rem Activa el tablero del tres en raya Frame2. Enabled = True End Sub Instrucciones del botón Inicializar el Puntaje. Private Sub Com mand!_Click() Labell = 0 Label2 = 0 End Sub Instrucciones del C heckl Private Sub C heckl jC lic k () I f Checkl Then Labell .Visible = True Label2.Visible = True Else Label ¡.Visible = False luibel2.Visible = False End I f End Sub Instrucciones del Form_Activate Prívate Sub Form_Activatef) Checkl. Valué = 1 Check2. Valué - 1 Com mandl _Click End Sub 262 G r u p o E d it o r ia l Megabyte CAPÍTULO V: Ingreso Personalizado de Datos Instrucciones del Array Pictureó (Programa en cualquiera de ellos) Private Sub Picture6_DragDrop(Index As Integer, Source As Control, xA s Single, Y As Single) Rem Coloca la figura Pictureóf Index) = Source Rem Activa el jugador de turno If Source = Picture5 Then Frame ¡.Enabled = False Frame 3. Enabled = True Else Frame 1. Enabled - True Frame 3. Enabled = False End If Rem Pregunta si hubo un ganador (Tres en raya horizontal) IfPictureó(O) = Pictureóf 1) And Picture6( 1) = Pictureóf2) Then Call ganadorfO) If Pictureóf 3) = Pictureóf4) And Pictureóf 4) = Pictureóf 5) Then Call ganado rf3) IfPictureófó) = Pictureóf 7) And Pictureó(7) - Pictureó(8) Then Call ganadorfó) Rem Pregunta si hubo un ganador f Tres en raya vertical) If Pictureóf 0) = Pictureóf 3) And Pictureó(3) - Pictureóf ó) Then Call ganadorfO) If Pictureóf 1) = Pictureóf4) And Pictureóf 4) = Pictureóf 7) Then Call ganado rf I) If Pictureóf 2) = Pictureóf 5) And Pictureóf5) = Pictureóf 8) Then Call ganado rf 2) Rem Pregunta si hubo un ganador (Tres en raya diagonal) IfPictureó(O) = Pictureó(4) And Pictureó(4) = Pictureó(8) Then Call ganadorfO) If Pictureóf 2) = Pictureóf4) And Pictureóf4) = Pictureóf 6) Then Call ganado rf 2) End Sub Instrucciones del Procedim iento GANADOR. Sub ganadorfcarta) Rem Pregunta si ganó el jugar N° 01 If Pictureóf carta) - Picture5 Then Picturel. Visible = True Picture4. Visible = True MsgBox “Ganó el Jugador N° 01 “+Chr(13)+Chr(34)+Textl+Chr(34),ó4, “Felicitaciones ” Labell = Labell + 10 Frame2. Enabled = False End If Rem Pregunta si ganó el jugar N° 02 If Pictureóf carta) = Picture7 Then Picture2. Visible = True Picture3. Visible = True MsgBox “Ganó el Jugador N° 02 “+Chr(13)+Chr(34)+Text2+Chr(34), ó4, “Felicitaciones ” Label2 = Label2 + 10 Frame2.Enabled = False End If End Sub
  • 134.
    à I ÌVISUAL BASIC como debe ser... AHORRE TIEMPO AL PROGRAMAR IN STR U C CIÓ N W IT H Esta instrucción permite ahorrar tiempo al momento de programar, porque evita referirnos varias veces al nombre de un control. Su sintaxis en la siguiente: With Nombre del Control Instrucción (es) End With Dentro del bloque de instrucciones, usted puede referirse a cualquier propiedad o método del control indicado con sólo escribir un punto (.) antes de la propiedad o método. Ejemplo: Las siguientes instrucciones: C o m b o l . A d d l t e m " A p i i c a t i v o s " C o m b o l . A d d l t e m " P r o g r a m a d ón " C o m b o l . A d d l t e m " O t r o s " C o m b o l . L i s t l n d e x = 0 Se pueden escribir de la siguiente manera Wi t h Combo1 . A d d l t e m " A p l i c a t i v o s " . A d d l t e m " P r o g r a m a c i ó n " . A d d l t e m " O t r o s " . L i s t l n d e x = 0 E n d Wi t h IM PO R T A N T E : Cuando tengas que repetir instrucciones similares es un programa, utiliza las herramientas de Copiar y Pegar, la cuales también permiten ahorrar tiempo durante la programación. COPIAR -> Ctrl + C o Edición/Copiar PEGAR -> Ctrl + V o Edición/Pegar 264 G r u p o E d it o r ia l Megabyte PREGUNTAS DE REPASO N° 05 1. ¿Cómo se pregunta si un control OptionButton está activado? 2. ¿Qué instrucción o método permite quitar un elemento del control ComboBox y ListBox? 3. ¿Cuál es la diferencia entre las propiedades Format y Mask del control MaskEdBox? 4. ¿Cómo sabemos el elemento que el usuario a elegido de un control, ComboBox o ListBox? 5. ¿Cóm o se puede verificar que la fecha ingresada en el control MaskEdBox es correcta? 6. ¿Cuál es la diferencia entre en un OptionButton y CheckBox? 7. ¿Qué ventaja tiene el control MaskEdBox sobre un TextBox? 8. ¿Qué utilidad tiene la propiedad Warp en el control UpDown? 9. ¿Qué teclas se deben pulsar por cada elemento que desea adicionar al control ListBox o ComboBox? 10. ¿Cómo se pregunta si un control Checkbox está activado? 11. ¿Qué debe hacer si no desea visualizar el caracter de petición en el control MaskEdBox? 12. El Valor True se puede reemplazar por el núm ero____ y el valor False por el núm ero____ . 13. ¿Cuál es la propiedad que permite saber si un control OptionButton o CheckBox se encuentran activados o no? 14. ¿Qué utilidad tiene la instrucción Sendkeys? 15. ¿Cuál sería el formato de la propiedad Mask del MaskEdBox para ingresar una fecha apartir del año 2000 (4 digitos)? 16. ¿Con qué instrucción o método se puede agregar elementos al control ComboBox y ListBox? 17. ¿Cómo se borra el contenido de un control MaskEdBox? 18. ¿Qué utilidad tiene la propiedad Buddycontrol de un UpDown? 19. ¿Qué evento se ejecuta en el control MaskEdBox cuando se ingresan los que se cumple el formato establecido? 20. ¿Cómo podemos hacer que se muestren los elementos de un ComboBox en forma automatica con la instrucción SendKeys? Es m uy importante que usted, se form ule nuevas aplicaciones o intercambie aplicaciones propuestas entre sus compañeros de estudio y desarrollarlas con la finalidad de enriquecer sus conocimientos.
  • 135.
    BASIC como debeser.. . PREGUNTAS DE REPASO N° 06 1. ¿Cómo quita un formulario de sus aplicación? 2. ¿Qué debe hacer si desea evitar que se muestre la ventana de diálogo cada vez que agrega un formulario a su aplicación? 3. ¿Se puede grabar dos formularios con el mismo nombre? 4. ¿Cuáles son los pasos para agregar la calculadora de Visual Basic a una aplicación? 5. ¿Es obligatorio ocultar un formulario para visualizar otro durante la ejecución de una aplicación? 6. ¿Se puede agregar a una aplicación un formulario que en su propiedad Ñame tenga el mismo nombre de uno de los formularios de dicha aplicación? 7. ¿Cuál es la diferencia entre Hide y Unload? 8. ¿Qué debe hacer si en una aplicación tiene varios formularios y desea visualiza o modifcar uno de ellos? 9. Explique cómo se adiciona un formulario ya creado a una nueva aplicación. 10. Cuando se ejecuta una aplicación, Visual Basic en forma predeterminada ejecuta el formulario N °___ . 11. ¿Qué m ensajes de error se visualizan cuando no puede agregar formularios existentes a su aplicación y a qué se deben? 12. ¿Cómo nos podemos referir a la propiedad de un control que se encuentra en otro formulario? 13. ¿Cuál es la diferencia entre Show y Load? 14. Explique la palabra clave Me. 15. Explique cómo se adiciona un formulario en blanco a una aplicación. 16. Si tiene una aplicación con 5 formularios. Cuando grabe la aplicación cuántos nombres debe ingresar. 17. ¿Qué debe hacer para que Visual Basic ejecute primero un formulario diferente al que ejecuta en forma predeterminada? 18. ¿Cómo se declara una variable o procedimiento para poder usarlo en cualquier formulario de una aplicación? 19. ¿Cuál es la diferencia entre la calculadora del Visual Basic y la calculadora del Windows? 20. ¿Cuando quita un formulario de su aplicación, se borra físicamente del disco de su computadora? La creatividad es muy importante, form úlese nuevas aplicaciones o intercambie aplicaciones propuestas entre sus compañeros de estudio y desarrollarlas con la finalidad de enriquecer sus conocimientos. 266 G r u p o E d it o r ia l Megabyte CAPITULO VI Aqirfior Inrmulino N u o t o I E ü is te n ltí I E M t M M t V B D a t a / W fitfin t A b o u t Log In O p t io n s S p la s h T ip O f F a r m e p a r a O a io g D ia lo g D ld a q S c r e e n T h e Dew ¥ f-rwfrvii J b.i< W2ard f o m id a r i a s d e datas . . . Q- en a o. a o. en. & A d d in O D B C Efr’o w s e r CvstaG rid Q u e r y s A c e rc a Entelo d e ü p e t o ... Loa In de sesión A b rir L -e n e e le i ¡ Ájiuda -08-98 BIENVENIDOS AL SISTEMA "lü D K lD l Cancelar MANEJO DE VARIOS FORMULARIOS
  • 136.
    CAPÍTULO VI: Manejode Varios Formularios MANEJO DE VARIOS FORMULARRIIOOSS r- — — Cada vez que ingresa al Visual Basic, muestra una aplicación que tiene en forma predeterminada un formulario (Form l). Pero puede agregar más formularios. AGREGAR FORMULARIOS A UNA APLICACIÓN: Existen 3 formas de agregar formularios: 1. De la opción Project (Proyecto) de la Barra de Menú elija Add Form (Agregar Formulario). 2. Haga Click en el botón Add Form de la barra de Herramientas. 3. En la ventana de proyecto haga click con el botón derecho del Mouse y elija la opción Agregar, luego formulario. Í3 - BOTON ADD FORM Según como está configurado el Visual Basic puede visualizar la siguiente ventana: í?|x| A gregar form ulario Nuevo | Existente | a ¿ V ¿ V Q D Q D Q . 2 2 2 2 3 8 1 VB D a ta A s is te n t A b o u t Log In O p tio n s S p la sh Tip Of F orm e p a r a D ialog D ialog D ialog S c re e n T h e D ay W iz a rd fo rm u la n o s d e d a t o s ... O O O O O Q O CJ ' Addiri ODBC B ro w se r D ataG rid Q u e r y s A c e rc a Inicio d e O p c io ... f Log In d e se s ió n Abtir Cancelar | Ayyda | > f” Nfi mostrar esfe cuadro de diálogo en el futuro Si no desea visualizar esta ventana active la casilla: No mostrar este cuadro de diálogo en el futuro. Si desea visualizarla: Active la opción Tools (Herramientas), luego Options (Opciones) y de la hoja Environment (Entorno) active la casilla Foms (Formularios). En la hoja Nuevo, se muestra el icono formulario (Form), que permite agregar un nuevo formulario en blanco a nuestra aplicación. Para ello, selecciónelo y haga click en el botón Abrir.
  • 137.
    á U lÉ l b - VISUAL BASIC como debe ser: . . En la hoja Existente, se muestran los formularios que Ud., a diseño y permite agregarlos a su nueva aplicación. Para que esto tenga éxito debe de tener cuidado que los nuevos formularios existentes que desea agregar no tengan el mismo nombre (propiedad Ñame) de los formularios que tiene en su aplicación actual. Por ejemplo, se desea agregar a la aplicación actual un formulario que tiene en su propiedad Ñame el nombre Forml, pero en la aplicación actual ya existe un formulario que en sus propiedad Ñame tiene dicho nombre. Entonces se visualizan los siguientes mensajes de error: Microsoft Visual Basic & Errores de carga. Consulte 'C:Archivos de programaDevStudioVBForm1 log' para obtener más detalles Aceptar j| Ayuda M icroso ft V isual Basic f N o se cargará 'F o rm l* El nom bre y a está e n uso. I r ^ A c j ^ c i r )| A y u d a j Para solucionar este problema cambie el nombre de la propiedad Ñame a cualquiera de los formularios. Para visualizar todos los formularios que tienen nuestra aplicación podemos acticar la ventana de proyectos. Por ejemplo, la siguiente ventana indica que tenemos 4 formularios: ' CD C 3 F o r m l ( F o r m i ) a F o rm 2 (F o r m 2 ) a F o rm 3 (F o r m 3 ) a Fo rrn 4 (F o r m 4 ) Haga click en el signo más (+) si no se visualizan los formularios. Los nombres de los formularios que se visualizan dependen del asignado en su propiedad Ñame. Para visualizar o modificar cualquier formulario, haga doble click en su nombre o pulse SHIFT+F7. p 270 Grupo Editorial Megabyte CAPÍTULO VI: Manejo de Varios Formularios < 1 1 1 1 1 QUITAR FORMULARIOS DE UNA APLICACIÓN: Para quitar un formulario de su aplicación pude seguir cualquiera de los siguientes pasos: 1. De la opción Project (Proyecto) de la Barra de Menú elija Remove Form (Quitar Formulario). 2. En la ventana de proyecto haga click con el botón derecho del Mouse en el nombre del formulario que desea quitar y elija la opción Remove Form. NOTA: Cuando Ud., quita formularios de su aplicación que previamente a grabado, Visual Basic no los borra de su computadora, sólo los quita de la aplicación actual. Esto quiere decir que Ud., puede volver a agregar dicho formulario a su aplicación o en cualquier otra. SELECCIONAR EL FORMULARIO A EJECUTARSE PRIMERO: Visual Basic en forma predeterminada ejecuta el formulario N° 1 cuando Ud., ejecuta su aplicación. Si desea indicarle que ejecute otro formulario puede seguir cualquiera de los siguientes pasos: 1. De la opción Project (Proyecto) de la Barra de Menú elija Properties Project (Propiedades del Proyecto) 2. En la ventana de proyecto haga click con el botón derecho del Mouse en el nombre del proyecto y elija la opción Propiedades del Proyecto. Se visualiza la siguiente ventana: G e n e r a l j G e n e r a r j C o m p i l a r | C o m p o n e n t e | T ip o d e p r o y e c t o : O b j e t o in ic ia l: No£nt>f© d « p r o y e c t o : j P r o y e c t o 1 I d . d e c o n t e x t o , d e l a A y u d a d e l h o m b r e d e l a r c h i v o d e A y u d a : p r o y e c t o : i----------------------------------------- n¡— '— d e s c r i p c i ó n d e l p r o y e c t o : I----------------------------------------------------------------- r~ A c t u a l i z a r c o n t r o l e s A c t i v e X C r I 3 A c e p t a r } C a n c e l a r __ | A y u d a Haga click en la flecha hacia ahajo de Startup Object (Objeto Inicial) y seleccione el formulario que desea que se ejecute primero.
  • 138.
    íÉ Ü ^I é ¡- VISUAL BASIC como debe ser. . . M U Y IM PORTANTE Si desea referirse a la propiedad de un control que se encuentra en otro formulario, debe utiliza el signo de admiración: Nombre del Formulario!Control. Propiedad = Valor Ejemplo: La siguiente instrucción muestra en la etiqueta N° 2 del form ulario Form3 la palabra HOLA. Esto se puede realizar desde cualquier fo r­mulario. Form3!Label2 = "Hola" Los nombres de los formularios en forma predeterminada son: Form 1, Form2, Form3, etc. según la cantidad de formularios que adicione a su aplicación. INSTRUCCIONES PARA MANEJAR FORMULARIOS LOAD : Permite cargar un formulario en la memoria, pero no lo visualiza. Para tener acceso a los controles y propiedades de un formulario, éste debe estar car­gado en memoria. LOAD Nombre del Formulario UNLOAD : Permite descargar (cierra) un formulario de la memoria independientemen­te de que se esté o no visualizando. UNLOAD Nombre del Formulario HIDE : Permite ocultar un formulario. Nombre del Formulario.HIDE SHOW : Permite visualizar un formulario. Nombre del Formulario.SHOW Ejemplos: FORM2.SHOW Muestra el formulario N° 2. UNLOAD FORM2 Descarga el form ulario N° 2. La palabra clave M E puede reemplazar al nombre del formulario actual. UNLOAD ME Descarga el form ulario activo. 272 G rupo E ditorial Megabvte CAPITULO VI: io de Varios Formularios 'M, A PL IC A C IO N D E SA R R O L L A D A N H 40 Esta aplicación es un ejemplo de cómo se manejan varios formulario en una aplicación. PASO N° 01 Agregue y dibuje los formularios siguientes: FO R M I FORM 2 IN G R ES O LE DA Centro de Estudios Especialidad Ciclo Turno Aula [“ MUEVO I SAUR I FORM 3 INGRESO DE DATOS: DATOS EERSONALES | DATOS ACADEMICOS j DATO FAMILIARES I IÂÏÏR ”]| X.■ Apodeiado(a) J¡~ N* de Hermanos | Lugar de Origen j Tipo de Vivienda | NUEVO { FO RM 4 * Nombre J[~ Dirección f “ T eléfono |~ Fecha de Nac. |~ Sexo | MUEVO I SALIR FORM 5 Sjxl Hora: 4;30pm. Fecha: 21-08-98 B IE N V E N ID O S AL S IS T E M A I Cancelar I FO RM 6 Ingiese los Datos Correctos : Usuario Jj P a s s w o r d i—
  • 139.
    PASO N° 02 INSTRUCCIONES DEL FORM1 Las instrucciones del Commandl (OK) permiten ocultar el formulario N° 1 y visualizar el formulario N° 2 . P r í v a t e S u b C o m m a n d l _ C l i c k () F o r m l . H í d e F o r m 2 . S h o w E n d S u b Las instrucciones del Command2 (Cancelar) permiten finalizar la aplicación. P r í v a t e S u b C om m and2__C lick () Dím R A s I n t e g e r R = M s g B o x ( " E s t a s e g u r o " , 3 6 , " C u i d a d o " ) I f R = 6 T h e n E n d E n d S u b INSTRUCCIONES DEL FORM2 Las instrucciones del Com m andl (OK) verifica que se ha ingresado correctamente el nombre del usuario y su password. El nombre del usuario es JUAN JOSE y su password VISUAL. La caja dE textos N° 2 (Text2) debe tener en la propiedad Passwordchar el asterisco (*) para que no se vea el password cuando es ingresado. P r í v a t e S u b C o m m a n d l_ C lic k () I f U C a s e ( T r i m ( T e x t l ) ) = "JUAN JOSE" A n d UCase ( T r i m ( T e x t 2 ) ) = "VISUAL" Then F o rm 2 .H íd e F o rm 3. Show E l s e MsgBox "DATOS INCORRECTOS", 1 6 , "ACCESO DENEGADO" T e x t l = "" T e x t 2 = "" T e x t l . S e t F o c u s End I f End S u b Las instrucciones del Command2 (Cancelar) permiten finalizar la aplicación. P r í v a t e S u b C o m m a n d 2 _ C lic k () Dim R A s I n t e g e r R = M s g B o x ( " E s ta s e g u r o " , 3 6 , " C u id a d o " ) I f R = 6 T h en End CAPÍTULO VI: Manejo de Varios Formularios ^ ¡ § | f | | INSTRUCCIONES DEL FORM3 Las instrucciones del Commandl (Datos Personales) oculta el Form3 (Menú Principal) y visualiza el Form4 (Ingreso de datos Personales). P r í v a t e S u b C o m m a n d i t a i c k ( ) F o r m 3 . H í d e F o r m 4 . S h o w E n d S u b Las instrucciones del Command2 (Datos Académicos) oculta ei Form3 (Menú Principal) y visualiza el Form5 (Ingreso de datos Académicos). P r i v a t e S u b C o m m a n d 2 _ C l i c k ( ) F o r m 3 . H í d e F o r m 5 . S h o w E n d S u b Las instrucciones del Command3 (Datos Familiares) oculta el Form3 (Menú Principal) y visualiza el Formó (Ingreso de datos Personales). P r í v a t e S u b C o m m a n d 3 _ C l i c k () F o r m 3 . H í d e F o r m 6 . S h o w E n d S u b Las instrucciones del Command4 (Salir) permiten finalizar la aplicación. P r í v a t e S u b C o m m a n d 4 _ C l i c k () R = M s g B o x ( " E s t a s e g u r o " , 3 6 , " C u i d a d o " ) I f R = 6 T h e n E n d E n d S u b INSTRUCCIONES DEL FORM4 Instrucciones del botón Nuevo. ^ P r í v a t e S u b C o m m a n d l _ C l i c k () T e x t l _ » » T e x t 2 _ n » T e x t 3 _ il n T e x t 4 = " " T e x t 5 = " " T e x t l S e t F o c u s E n d S u b Instrucciones del botón Salir. P r í v a t e S u b C o m m a n d 2 _ C l i c k () F o r m 4 . H í d e F o r m 3 . S h o w E n d S u b 275
  • 140.
    w X ÉÍfoVISUAL BASIC como debe ser.. INSTRUCCIONES DEL FORM5 Instrucciones del botón Nuevo. P r í v a t e S u b C o m m a n d l _ C l í c k () T e x t l = T e x t 2 = T e x t 3 = T e x t é = T e x t 5 = T e x t l . S e t F o c u s E n d S u b Instrucciones del botón Salir. P r í v a t e S u b C o m m a n d 2 _ C lic k () F o r m 5 .H id e F o r m 3 . S h o w E n d S u b INSTRUCCIONES DEL FORMÓ Instrucciones del botón Nuevo. P r i v a t e S u b C o m m a n d l_ C lic k () T e x t l = "" T e x t 2 = "" T e x t 3 = "" T e x t 4 = "" T e x t l . S e t F o c u s E n d S u b Instrucciones del botón Salir. P r í v a t e S u b C o m m a n d 2 _ C lic k () F o r m ó . H id e F o r m 3 . S h o w End Sub ¿Qué instrucciones debe tener el botón OK si se quiere desarrollar la aplicac. anterior con botones de opciones? f . _ | □ | x | In g ie r o d e D ato .- ( • .D a to s P e rs o n a le s C ' D a to s A c a d é m ic o s D a to s Fam ilia re s r Salir O K | 276 G r u p o E d it o r ia l Megabyte < CAPÍTULO VI: Manejo de Varios Formularios TIPO S D E FO R M U L A R IO S Formulario Modal: Consiste en un formulario que NO permite continuar ejecutando la aplicación o pasar a otro formulario sin que se cierre correctamente. Para mostrar un formulario y que funcione de tipo Modal sólo debe escribir del método Show el número 1 o la palabra vbModal. Ejempo: FormS.Show 1 Formulario No Modal Consiste en un formulario que SI permite continuar con la ejecución de la aplicación o pasar a otro formulario sin necesidad que el formulario se cierre. Para mostrar un formulario y que funcione de tipo No Modal se debe escribir del método Show sin ningún parámetro. Ejempo: Form3.Show TIPO DE INTERFAZ SDI (Interfaz de Documentos Simples) Permiten crear aplicaciones con los formularios estándar o normales como los utilizados en los ejemplos anteriores. MDI (Interfaz de Documentos Múltiples) Permiten crear aplicaciones que mantienen varios formularios (secundarios) dentro de un formulario principal llamado MDI. Los MDI sólo aceptan controles que tengan la propiedad Align como StatusBar, ToolBar y Picture (puede dibujar otros sobre este control) o aquellos que no se visualicen al momento de ejecutarse el formulario como el control Timer. DESARROLLAR UNA APLICACIÓN CON UN FORMULARIO MDI Para desarrollar la aplicación anterior con formularios MDI y secundarios siga los siguientes pasos: Elija la opción Proyecto y luego Agregar Formulario MDI. En este formulario MDI diseñe el Menú Principal y al resto de formularios asígneles en su propiedad MDIChild el valor TRUE. PR O C E D IM IE N T O M A IN Si desea que su aplicación ejecute primero un procedimiento, entonces en la opción Proyecto/Propiedades del Proyecto/Objeto Inicial, elija Sub Main. El procedimiento Sub Main lo debe crear en un módulo. Por ejemplo, en la aplicación anterior agregue un módulo y un formulario (Form7) y diseñe en él una pantalla de presentación la cual se visualizará por 3 segundos antes de mostrar el formulario N° 1 (Bienvenida). En este formulario debe dibujar un control Timer. Instrucciones del Timer Instrucciones del procedimiento Main Prívate Sub Timerl_Timer() Prívate Sub Main () £ n Form7.Show Timer 1. Inten’al = 0 Fonn 7¡Timer. Interval = 3000 Forml.Show End Suh End Sub IMPORTANTE: Cada aplicación Sólo acepta un formulario MDI y los formularios secundarios no se pueden llamar de tipo Modal. I p f i ^ G r u p o E d it o r ia l Megabyte 277 « 9
  • 141.
    VISUAL BASIC comodebe ser.. . APLICACION DESARROLLADA N° 41 Desarrolle una aplicación que permita manejar y compartir información de tres formularios. El primer formulario debe permitir el ingreso o adición de registros como se muestra en la figura siguiente: o N O M B R E E D A D D IS T R IT O S E X O (M /F ) A D IC IO N A R V E R R E G IS T R O S S A L IR El ingreso de datos debe tener las siguientes características: 1. El nombre, distrito y sexo se deben convertir automáticamente a mayúsculas. 2. En la edad sólo se debe permitir el ingreso de números y con un máximo de dos dígitos. 3. En el sexo sólo se debe ingresar la letra M o la letra F. 4. Sólo de debe activar el botón adicionar cuando se hallan ingresado los cuatro datos. 5. Al hacer click en el botón AD ICIO NA R, los registros ingresados se deben almacenar en la lista que se encuentran en el formulario N° 2. 6. El botón VER REG ISTR O S, debe mostrar el formulario N°2 para visualizar los registros adicionados. El segundo formulario debe permitir visualizar y manipular los registros que se adicionaron en el formulario N° 1. N O M B R E J U A N : ^ R O D O L F O M A R IA L U IS K A R IN A L U K Y A D R I A N A - Ini xj D I S T R I T O S E X O 12 5 6 2 3 22 1 4 9 0 1 A D IC I O N A R V E R E S T A D I S T I C A L A M B A Y E Q U E C H IC L A Y O R E Q U E M O N S E F U F E R R E Ñ A F E C H IC L A Y O O L M O S M O D IF IC A R M - MF MF MF j d E L I M I N A R 278 G r u p o E d it o r ia l Megabyte" CAPÍTULO VI: Manejo de Varios Formularios Los botones MODIFICAR y ELIMINAR sólo se deben activarse cuando el usuario selecciona un registro. El botón ADICIONAR debe permitir regresar al formulario N° 1 para seguir adicionando registros. El botón VER ESTADISTICA debe permitir pasar al siguiente formulario (N° 3) para visualizar una estadística de los registros que se van adicionando. El botón MODIFICAR debe llevar los datos del registro seleccionado al formularios N° 1 y eliminarlo del formulario actual para poder modificarlos y si después de modificarlo se hace un click en el botón adicionar se vuelve a adicionar el registro, con los datos ya modificados. El botón ELIMINAR debe permitir eliminar el registro que el usuario a seleccionado. Antes de eliminar el registro se debe pedir una confirmación. El formulario N° 3 debe mostrar la estadística de los registros adicionales como se muestra en la siguiente figura. - E S T A D I S T I C A D E L O S R E G I S T R O S I N G R E S A D O S M C T E 3 M A Y O R E S D E E D A D [ 5 ( 6 2 . 5 * ) M E N O R E S D E E D A D I 3 ( 3 7 . 5 * ) H O M B R E S |~4 ( 5 0 . 0 * ) M U J E R E S [ 4 ( 5 0 . 0 * ) |{ V E R R E G I S T R O S ]| _ A D I C I O N A R H O M B R E S M A Y O R E S I 3 ( 3 7 . 5 * ) T O T A L D E R E G I S T R O S H O M B R E S M E N O R E S | l ( 1 2 5 * ) 1 8 ( 1 0 0 5 * ) M U J E R E S M A Y O R E S | 2 ( 2 5 . 0 * ) M U J E R E S M E N O R E S f T ~ ( 2 5 T o * r El botón VER REGISTROS de mostrar el formulario N° 2 para visualizar­los registros adicionados. El botón ADICIONAR debe mostrar el formularios N° 1 para poder ingresar nuevos registros. G rupo E ditorial Megabyte , 279 á m m
  • 142.
    VISUAL BASIC comodebe ser... DESARROLLO DE LA APLICACIÓN PASO NH 01: Debe adicionar a su proyecto 3 formularios y luego a cada uno de ellos le debe dibujar sus controles y propiedades. Así: FORMULARIO N 2 01 L a b e ll Label2 Label3 Label4 |T e x t2 ]T e x t3 G om m andl Command2 Command3 Asigne la propiedad Caption a los controles, como se muestra en la aplicación a desarrollar. El botón adicionar debe tener el valor False en su propiedad Enabled y las etiquetes el valor True en su propiedad Autosize. F O R M U L A R I O N 2 0 2 AL formulario, etiquetas y botones de comandos asígneles su propiedad Caption como se muestra en la aplicación. Los botones Adicionar y Eliminar debe estar desactivados. Los List deben estar en blanco. Las propiedades de las cajas de texto son: CONTROL TEXT MAXLENGTH Textl En Blanco 0 Text2 En Blanco 2 Text3 En Blanco 0 Text4 En Blanco 1 2 8 0 G r u p o E d i t o r i a l M e g a b y t e < CAPÍTULO VI: Manejo de Varios Formularios .o FORMULARIO N e 03 L a b e l l Label2 Labe)4 Label5 LabelS Label7 Lat>el8 LabeIS • Labell O Labell 1 Labell 2 Labell 3 Labell 4 Labell 5 Labell 6 Commandl Command2 Labell 7 Labell 8 Las etiquetas desde la N° 9 hasta la N° 16 y la N° 18 deben quedar en blanco y en su propiedad BorderStyle deben tener el valor 1 - Fixed Single. PASO N" 02:Escribir las instrucciones para los controles. Instrucciones de los controles del FO RM U LARIO N° 1. Debajo de cualquier instrucción END SUB escriba: SUB VERIFICA. j F o rm Load »j Private Sub Form L o a d () a. End Sub SUB v e r i f i c a | s j l LI ▼ ± r Y luego pulse la tecla ENTER para crear el procedimiento a nivel de form ulario llamado VERIFICA: j(General) | VERIFICA d Private Sub Form L o a d () — End Sub Sub VERIFICA() I1E n d S u b m < 1 1 Este procedimiento permite controlar que se halla escrito información en las cuatro cajas de texto para poder activar el botón ADICIONAR, de lo contrario lo desactiva. Ü iiíÉIÜ ^ G r u p o E d it o r ia l Megabyte 281
  • 143.
    Las instrucciones quese deben escribir en este procedimiento Son: S u b v e r i f i c a () I f T r i m ( T e x t l ) <> "" A n d T r i m ( T e x t 2 ) <> "" A n d T r i m ( T e x t 3 ) o "" A n d T rim ( T e x t 4) <> "" Then Commandl. E n a b le d = T r u e E l s e Commandl. E n a b l e d = F a l s e End I f End S u b VISUAL BASIC corno debe ser... En el evento CHANGE de cada Caja de Textos se debe llamar a este procedimiento. Así: P r i v a t e S u b T e x t l _ C h a n g e () P r i v a t e S u b T e x t 3 _ C h a n g e () V e r i f i c a v e r i f i c a End S u b End Su b P r i v a t e S u b T e x t2 _ C h a n g e () P r í v a t e S u b T e x t 4 _ C h a n g e () v e r i f i c a v e r i f i ca End S u b End S u b Instrucciones del botón ADICIONAR Permite pasar los datos ingresados en las cajas de texto a sus respectivas listas que se encuentran en el formularios N° 02. P r i v a t e S u b C o m m a n d l _ C l i c k () F o r m 2 ! L i s t i . A d d l t e m T e x 1 1 F o r m 2 ! L i s t 2 . A d d l t e m T e x t 2 F o r m 2 ! L i s t 3 . A d d l t e m T e x t 3 F o r m 2 ! L i s t 4 . A d d l t e m T e x t 4 T e x t l = " " T e x t 2 = "" T e x t 3 = "" T e x t 4 = "" T e x t l . S e t F o c u s E n d S u b Instrucciones del botón VER REGISTROS Permite activar el formulario N° 02 para visualizar los registros adicionados. P r í v a t e S u b C o m m a n d 2 _ C l i c k () F o r m 2 . S h ow F o r m l . H i d e E n d S u b E l botón SA LIR debe tener la instrucción END 2 8 2 G r u p o E d it o r ia l Megabyte< CAPÍTULO VI: Manejo de Varios Formularios Las instrucciones de la caja de texto N° 1 que permiten convertir a mayúsculas el texto que se ingresa, se deben escribir en el evento Keypress el cual almacena en la variable Keyascii el valor ASCII de cada carácter que se escribe en la caja de textos. Las letras minúsculas en el código ASCII comienzan a partir del numero 97 hasta el 122 (a=97, b=98, etc.). Las letras mayúsculas en el código ASCII comienzan a partir del numero 65 hasta el 90 (A=65, B=66, etc.), por lo tanto, la diferencia entre mayúsculas y minúsculas es 32. Si se quiere convertir una letra minúscula a mayúscula, entonces a su valor ASCII de dicha letra se le debe restar 32. Otra forma de convertir cada carácter a mayúsculas es usando la siguiente instrucción: KeyAscii = A s e (UCase(Chr(KeyAscii))) Instrucciones del evento Keypress de TEXTL P r í v a t e S u b T e x t l _ K e y P r e s s ( K e y A s c i i A s I n t e g e r ) ' P r e g u n t a s i l a l e t r a p u l s a d a e s t a e n m i n ú s c u l a . I f K e y A s c i i >= 9 7 A n d K e y A s c i i <= 1 2 2 T h e n ' S i e s m i n ú s c u l a l e r e s t a 3 2 . K e y A s c i i = K e y A s c i i - 3 2 E n d I f E n d S u b Para que una caja de textos acepte sólo valores numéricos también se le debe programa en el evento Keyascii. El Valor ASCII de la tecla pulsada se convierte en el carácter ASCII correspondiente y se pregunta si es menor a cero (0) o mayor a nueve (9), si la respuesta es verdad significa que no se ingreso un numero, entonces hacemos que Visual Basic ignore el carácter ingresado asignándole el valor cero a la variable Keyascii. También se debe ignorar la tecla pulsada cuando el valor ASCII sea diferente de 8 que pertenece a la tecla de Retroceso para que se pueda borrar lo que se escribe. G r u p o E d it o r ia l Megabyte 2 8 3
  • 144.
    |¡ llllÉ I> VISUAL BASIC como debe ser... Instrucciones del evento Keypress de TEXT2. P r i v a t e S u b T e x t 2 _ K e y P r e s s ( K e y A s c i i A s I n t e g e r ) Dim TECLA A s S t r i n g * 1 TECLA = C h r ( K e y A s c i i ) I f (TECLA < "0" Or TECLA > "9") A n d K e y A s c i i <> 8 Then K e y A s c i i = 0 End I f End S u b Las instrucciones de la caja de textos N° 3 son similares a las de la caja de textos N° 1. Instrucciones del evento Keypress de TEXT3. P r í v a t e S u b T e x t 3 _ K e y P r e s s ( K e y A s c i i A s I n t e g e r ) ' S I SE INGRESA EN MINUSCULAS LO CONVIERTE A MAYUSCULAS I f K e y A s c i i >= 9 7 A n d K e y A s c i i <= 1 2 2 T h e n K e y A s c i i = K e y A s c i i - 32 E n d I f E n d S u b Las instrucciones de la caja de texto N° 4. Permiten aceptar sólo las letras F o M y si se ingresan en minúsculas se deben convertir a mayúsculas. Primero se pregunta si el valor ASCII del carácter pulsado es 102 ó 109 que corresponden a las letras <f> o <m> en minúsculas. Si la respuesta es verdad se le resta 32 y si el valor ASCII es diferente de 70, 77 y 8 que corresponden a las letras <F>, <M> en mayúsculas y a la tecla de Retroceso (BackSpace <-), el carácter es ignorado, es decir no se visualiza, porque le asignamos el valor cero (0) a la variable Keyascii. Instrucciones del evento Keypress de TEXT4. P r i v a t e S u b Text4_ _ K eyP ress ( K e y A s c i i A s I n t e g e r ) 'SOLO ACEPTA LAS LETRA "F" o "M" Y S I SE INGRESAN 'EN MINUSCULAS LAS CONVIERTE A MAYUSCULAS I f ( K e y A s c i i = 102 Or K e y A s c i i = 1 09) Then K e y A s c i i = K e y A s c i i - 32 E l s e l f K e y A s c ii< > 7 0 A n d K e y A s c ii< > 7 7 A nd K e y A s c ii< > 8 Then K e y A s c i i = 0 End I f End Sub l |¡ ¡ ! § ^ 2 8 4 G r u p o E d i t o r i a l Megabyte CAPÍTULO VI: Manejo de Varios Formularios Instrucciones de los controles del FORMULARIO N° 2. Definir la variable NUM de tipo entero a nivel del formulario. Esto se hace en el Objeto GENERAL y el Evento DECLARATIONS. Dim NU M As Integer (General) -r (Declarations) Dira MUM As Integer < 11 Crear un nuevo procedimiento llamado SELECCIONA, que permite seleccionar todo el registro cuando el usuario hace click en cualquiera de las listas además permite activar los botones de comandos Command3 y Command4. Para ello en cualquier parte libre de la ventana de código escriba: SUB SELECCIONA y luego pulse la tecla EN TER. 1 tW P r o i e c ll - F o r m 3 (C o d e ) ¡F o r m [L o a d P r i v a t e S u b C o rra n e in c i2 _ C 1 i c k ( ) “¡H F o r m l . S h o w — ^ F o r r n 3 . H i c i e E n d S u b P r i v a t e S u b F o r m A c t í v a t e ( ) y E n d S u b S U B S E L E C C I O N A . m 1 1 i ► n Se visualizará la siguiente pantalla: * G r u p o E d i t o r i a l Megabyte 2 8 5
  • 145.
    ^ f |¡ | | | » VISUAL BASIC como debe ser... Luego escriba dentro del procedimiento las instrucciones. Estas instrucciones permiten seleccionar todo un registro cuando el usuario hace click en cualquiera de las listas. L i s t l . L i s t l n d e x = NUM L i s t 2 . L i s t l n d e x = NUM L i s t 3 . L i s t l n d e x = NUM L i s t 4 . L i s t l n d e x = NUM Com m and3. E n a b l e d = T r u e C om m and4. E n a b l e d = T r u e La ventana de código tendrá el siguiente aspecto: (General) -*• SELECCIONA zl Suta SELECCIONA() List1.L istIndex = NUM i List2.Listlndex = NUM List3 . Listlndex = NU11 List4.Listlndex = NUM Conmand3.Enabled = True Command4.Enabled = True End Sub kh j l L! Este procedimiento es invocado cuando el usuario hace click en cualquiera de la lista, para ello se tiene que programar en el evento Click de cada Lista. P r í v a t e S u b L i s t l _ C l i c k () NUM = L i s t l . L i s t l n d e x SELECCIONA E n d S u b P r í v a t e S u b L i s t 2 _ C l i c k () NUM = L i s t 2 . L i s t l n d e x SELECCIONA E n d S u b P r í v a t e S u b L i s t 3 _ C l i c k () NUM = L i s t 3 . L i s t l n d e x SELECCIONA E n d S u b P r í v a t e S u b L i s t 4 _ C l i c k ( ) NUM = L i s t 4 . L i s t l n d e x SELECCIONA E n d S u b Instrucciones del Botón ADICIONAR. Permiten mostrar el formulario N° 1 para poder adicionar más registros. P r í v a t e S u b C o m m a n d l _ C l i c k () F o r m l . S h o w F o r m 2 . H i d e E n d S u b 2 8 6 G r u p o E d it o r ia l Megabyte^ m CAPÍTULO VI: Manejo de Varios Formularios Instrucciones del Botón VER ESTADISTICA. Permiten pasar al Formulario N° 3 para visualizar la estadística de los regis­tros que se van adicionando. Prívate Sub Command2_Click() Dim N, EDAD, MAYORES, MENORES, HOMBRES As Inte ge r Dim MUJERES,HOMMAY, HOMMEN, MUJMAY, MUJMENAs Integer Dim SEXO Aó' String * 1 ‘Cuenta la cantidad de registros adicionados. N = Listl.ListCount For X = 1 ToN ‘Activa en forma secuencial una edad ingresada. List2. Listlndex = X - 1 ‘Almacena en la variable EDAD, la edad activa. EDAD = Val(List2.Text) ‘Activa en forma secuencial un sexo ingresado. List4. Listlndex - X - 1 ‘Almacena en la variable SEXO, el sexo activado. SEXO - Trim( List4. Text) ‘Cuenta los mayores y menores de edad. IfEDAD > = 18 Then MAYORES = MAYORES + 1 Else MENORES = MENORES + 1 E n dlf ‘Cuenta los hombres y las mujeres. IfSEXO = "M" Then HOMBRES = HOMBRES + 1 Else MUJERES = MUJERES + 1 E n dlf ‘Cuenta los hombres mayores y menores de edad. IfSEXO="M"AndEDAD>=18 Then HOMMAY = HOMMAY + 1 IfSEXO- "M " And EDAD< 18 Then HOMMEN = HOMMEN + 1 ‘Cuenta las mujeres mayores y menores de edad. IfSEXO= "F" And EDAD>=18 Then MUJMAY - MUJMAY + 1 IfSEXO= "F" And EDAD<18 Then MUJMEN = MUJMEN + 1 NextX ‘Obtiene los respectivos porcentajes. PORCMAY = MAYORES * 100/ N PORCMEN = MENORES * 100/ N PORCHOM = HOMBRES * 100/N PORCMUJ = MUJERES * 1 0 0 /N PORCHOMMAY = HOMMAY * 1 0 0/N PORCHOMMEN = HOMMEN * 1 0 0 /N PORCMUJMAY = MUJMAY * 1 0 0 /N PORCMUJMEN = MUJMEN * 1 0 0 /N G r u p o E d it o r ia l Megabyte 2 8 7
  • 146.
    J Ü ÜÉ ^ VISUAL BASIC como debe ser... 'Muestra los resultados en el formulario N° 03 Form3!Label9=Str(MAYORES)+"("+Format(PORCMAY, "##0.0")+ "%)" Form3!Label 10-Str(MENORES) + "("+Format(PORCMEN, "##0.0”)+ "%)" Form3!Labelll=Str(HOMBRES)+ "("+Format(PORCHOM, "##0.0")+ "%)" Form3!Labell2=Str(MUJERES)+ "("+Format(PORCMUJ, "##0.0")+ "%)" Form3!Labell3-Str(HOMMAY)+ "("+Format(PORCHOMMAY, "##0.0")+ "%)" Form3!Label 14=StríHOMMEN)+ "("+Format(PORCHOMMEN, "##0.0")+ "%)" Form3!Label 1 5 -Str(MUJMAY)+ "("+Format(PORCMUJMAY, "##0.0")+ "%)" Form3!Labell6=Str(MUJMEN)+ "("+Fonnat(PORCMUJMEN, ”##0.0")+ "%)" Form3!Label 18 = Str(N) + " (100%)" 'Muestra el formulario N° 3 Form3.Show Form2.Hide End Sub Instrucciones del Botón MODIFICAR. Permiten pasar al Formulario N° 1 los datos del registro seleccionado para poder modificarlos y borra estos datos originales de las listas. Prívate Sub Command3_Click() Dim E A í Integer Forml ITextl = Listl.Text Forml !Text2 = List2.Text Forml !Text3 = List3.Text Forml!Text4 - List4.Text E - Listl.Listlndex Listl.Removeltem (E) List2.RemoveItem (E) List3.RemoveItem (E) List4.RemoveItem (E) Forml .Show Form2.Hide End Sub Instrucciones del Botón ELIMINAR. Borra de las listas el registro seleccionado, pidiendo una respuesta de con­firmación. Prívate Sub Command4_Click() Dim E, RAs Integer R-MsgBox( "ESTA SEGURO DE ELIMINAR EL REGISTRO",36,"CUIDADO") IfR = 6 Then E = Listl.Listlndex Listl.Removeltem (E) List2.Removeltem (E) List3.Removeltem (E) List4.Removeltem (E) End If Command3. Enabled = False Command4.Enabled = False End Sub 2 8 8 G r u p o E d it o r ia l Megabyte < ® g CAPITULO VI: Manejo de Varios Formularios Instrucciones del Evento ACTIVATE del Formulario. Estas instrucciones se ejecutan cuando el formulario es activado y permiten que no se encuentre seleccionado ningún registro y a demás desactiva los botones MODIFICAR y ELIMINAR. P r í v a t e S u b F o r m _ A c t í v a t e () L i s t l . L i s t l n d e x = -1 L i s t 2 . L í s t l n d e x = -1 L i s t 3 . L i s t l n d e x = - 1 L i s t 4 . L í s t l n d e x = -1 C o m m a n d 3 .E n a b l e d = F a l s e C om m and4. E n a b l e d = F a l s e E n d S u b Instrucciones de los controles del F O R M U L A R IO N° 3 Instrucciones del Botón VER REGISTROS. Permiten visualizar el formulario N° 2 donde se encuentran todos los registros adicionados. P r í v a t e S u b C o m m a n d l _ C l í c k () F o r m 2 . S h o w F o r m 3 . H í d e E n d S u b Instrucciones del Botón ADICIONAR. Permiten visualizar el formulario N° 1 para poder adicionar más registros. P r i v a t e S u b C o m m a n d 2 _ C lic k () F o r m l. S h o w F o r w 3 . H id e E n d S u b G r u p o E d it o r ia l Megabyte 289 ^
  • 147.
    VK vk/ VISUALBASIC como debe ser. . . ERRORES MAS COMUNES Microsoft Visual Basic Debe haber un formulario de inicio o un procedimiento Sub Ma¡n[) Aceptar Ayuda Su aplicación no tiene especificado un formulario para ejecutar primero. Haga clic en el botón Aceptar y seleccione un formulario en Objeto Inicial. Microsoft Visual Basic Error '424' en tiernpo de ejecución : Se requiere un objeto Terminar A yuda Está tratando de utilizar un formulario que no tiene en su aplicación o escribió en forma incorrecta su nombre. AI ejecutar el programa finaliza inmediatamente. S eg u ram en te por casualidad escribió la instrucción END en el evento Form Load o en A ctivate del fo rm u lario que se ejecuta primero. 10 Proyecto! - Fornii (Código) F o rm L o a d Private Sub Form_Load() End End Sub Al llamar a un formulario, no se muestra ninguno. S e g u r a m e n t e m P ro ye cto l - F o im l (C ó d ig o ) escribió Hide en jc o m m a n d l C lic k lugar de Show. Private Sub Commandl_Click( ) Tj Fo rml.Hide — Fo rm2.Hide End Sub J É ■ ill _l T 290 G r u p o E d it o r ia l Megabyte" CAPÍTULO VI: Manejo de Varios Formularios PREGUNTAS DE REPASO N° 06 1. ¿Cómo quita un formulario de sus aplicación? 2. ¿Qué debe hacer si desea evitar que se muestre la ventana de diálogo cada vez que agrega un formulario a su aplicación? 3. ¿Se puede grabar dos formularios con el mismo nombre? , 4. ¿Cuáles son los pasos para agregar la calculadora de Visual Basic a una aplicación? 5. ¿Es obligatorio ocultar un formulario para visualizar otro durante la ejecución de una aplicación? 6. ¿Se puede agregar a una aplicación un formulario que en su propiedad Ñame tenga el mismo nombre de uno de los formularios de dicha aplicación? 7. ¿Cuál es la diferencia entre Hide y Unload? 8. ¿Qué debe hacer si en una aplicación tiene varios formularios y desea visualiza o modificar uno de ellos? 9. Explique cómo se adiciona un formulario ya creado a una nueva aplicación. 10. Cuando se ejecuta una aplicación, Visual Basic en forma predeterminada ejecuta el formulario N °___. 11. ¿Qué m ensajes de error se visualizan cuando no puede agregar formularios existentes a su aplicación y a qué se deben? 12. ¿Cómo nos podemos referir a la propiedad de un control que se encuentra en otro formulario? 13. ¿Cuál es la diferencia entre Show y Load? 14. Explique la palabra clave Me. 15. Explique cómo se adiciona un formulario en blanco a una aplicación. 16. Si tiene una aplicación con 5 formularios. Cuando grabe la aplicación cuántos nombres debe ingresar. 17. ¿Qué debe hacer para que Visual Basic ejecute primero un formulario diferente al que ejecuta en forma predeterminada? 18. ¿Cómo se declara una variable o procedimiento para poder usarlo en cualquier formulario de una aplicación? 19. ¿Cuál es la diferencia entre la calculadora del Visual Basic y la calculadora del Windows? 20. ¿Cuando quita un formulario de su aplicación, se borra físicamente del disco de su computadora? La creatividad es muy importante, form úlese nuevas aplicaciones o intercambie aplicaciones propuestas entre sus compañeros de estudio y desarrollarlas con la finalidad de enriquecer sus conocimientos. I p l l ^ G r u p o E d it o r ia l Megabyte 291 é m m
  • 148.
    CAPITULO VII Cacílen;CONGRESO Na me : "IñgrescT Indes.: tlPlPí-CintextlD : J o Ch© cke>d T ? ELnabl&d NeaotlatePccsIbciri R? risible SISTEMA DISEÑO DE MENÚ
  • 149.
    C A PIT U L O V II: D iseño de M en ú D I S E Ñ O D E M E N Ú Para activar el editor de menú puede seguir uno de los siguientes pasos: 1. De la barra de menú elegir la opción Tools (Herramientas) y luego Menú Editor. 2. Presionar las tecla <CRTL> + E. 3. Hacer un click en el botón de Diseño de Menú. H BOTÓN DE DISEÑO DE MENÚ El editor de menú es: CAPTION Permite escribir la opción que deseamos visualizar en el menú. Puede usar el & para subrayar una letra de una opción. ÑAME Permite asignarle un nombre a cada opción. Es obligatorio que toda opción tenga un nombre. Este nombre debe ser único, es decir, no deben, existir dos opciones con el mismo nombre y además los nombres no pueden tener espacios en blanco. INDEX Se utiliza en caso que queremos usar un array de opciones. SHORTCUT Permite asignar teclas de acceso rápido a cada opción. No puede usarse para las opciones principales. CHECKED Sirve para indicar con un aspa si una opción está activa. I p f l ^ G r u p o E d it o r ia l Megabyte 295 a »
  • 150.
    V4s?0¡k ', VISUALBASIC como debe ser. EN A BLED Permite desactivar una opción para que no se pueda elegir. V ISIB LE Permite que una opción se pueda visualizar o no. W IN D O W LIST Permite especificar si un menú mantiene una lista de las ventanas abiertas usando un aspa a la izquierda del elemento de la lista que representa la ventana activa. FLEC H A IZQU IERDA Permite mover una opción más a la izquierda dentro del menú con la finali­dad que se ubique en un nivel más alto. FLE C H A DERECHA Mueve una opción más a la derecha con la finalidad que sea una subopción de la que se encuentra en la parte superior. Las opciones principales deben estar bien a la izquierda y las subopciones más a la derecha según el nivel que le corresponde. . . . permjte mover una opción hacia arriba. FLE C H A ARRIBA FL E C H A ABAJO : Permite mover una opción hacia abajo. NEXT (Siguiente) : Permite ir a la opción siguiente. INSERT (Insertar) : Permite insertar una nueva opción. D ELETE (Elim inar) : Permite borrar una nueva opción. NOTA Para crear una línea de separación entre grupos de opciones, escriba sólo un guión en el CAPTION y especificar cualquier nombre en ÑAME. La aplicación desarrollada anterior puede tener también un menú de opcio­nes. Por ejemplo en el formulario N° 03 se puede escribir el menú siguiente menu. C a Q t i o n : ] S J N G R E S O N a m e : j IN G R E S O | I n d e & : |~ C a n c e l H e l p C o n t e x t I D : j o r ~ C h e c k e d í*7 E n a b l e d Next Shortcut: [(None) NegotiatePosition : fP Risible f 1 insert j 3 Jo - N o n e T 1 W in d o W L is t D e l e t e I ■D A TO S & P E R S O N A L E S C t r l + P ■D A TO S & A C A D E M IC O S C trl-t-A ■D A TO S & F A M IL IA R E S C t r l + F F I& N A L IZ A R ■NO ■SI C t r l + Q 2 9 6 G r u p o E d it o r ia l Megabyte < CAPITULO VII: Diseño de Menú Al ejecutar la aplicación se visualiza las ventanas siguientes. El gráfico es opcional y está diseñado con un Picture Box. IN G R E S O FIN A LIZ A R IN G R E S O NOTA: Cada opción se considera un botón de comandos, esto quiere decir que Ud. puede escribir instrucciones dentro de cada una de ellas, las cuales se ejecutan cuando el usuario elige dicha opción. Las instrucciones de cada opción en esta aplicación son las mismas de los botones de comandos del formulario N° 03 de la aplicación N° 30. Si no desea ocultar el formulario del menú principal cuando se llame a un formulario, no escriba la instrucción FORM3.HIDE Privale Sub DA TOSPER_Click() Fomú.Hide Fonn4.Show End Sub Private SiéDATOSACA_Qkk() Fomú.Hide Fomó.Sliow EjtdSub Private Sub DATOSFAR__Qi<M) Forrn3.Hide FomúSIiow EtidSub La opción Salir debe tener la instrucción END. G r u p o E d it o r ia l Megabyte 2 9 7
  • 151.
    l i li l í VISUAL BASIC como debe ser... INSTRUCCIÓN PQPUPMENU Detiene la ejecución del programa y activa el menú en el formulario. El programa continua su ejecución cuando deja de utilizar el menú. Su sintaxis es: PopupM enu Nombre, Ubicación,X, Y,Opción,Negrita Nombre Es el nombre del menú que desea activar. Ubicación Para indicar en qué parte de la pantalla se va a ubicar el menú en relación a la posición del formulario donde hizo clic y qué comportamiento debe tener. Sus valores pueden ser: Para Ubicación 0 (Predeterminado). El menú a la derecha de donde hizo clic. 4 El menú se muestra en el centro de donde hizo clic. 6 El menú se muestra a la izquierda de donde hizo clic. Para Comportamiento 0 Ignora la pulsación del botón derecho del Mouse. 2 El menú reconoce la pulsación del botón derecho del Mouse. Para cambiar la Ubicación y el Comportamiento se utiliza la palabra OR. Por ejemplo, la siguiente instrucción activa el menú Ingreso en el centro de donde hace Clic y reconoce el botón derecho del Mouse. PopupMenu In­greso 4 Or 3. X, Y Es la posición horizontal (X) y vertical (Y) del formulario donde desea mos­trar el menú. Opción_Negrita Sirve para indicar el nombre de una de las opciones del menú que desea visualizar en negrita cuando se muestra el menú. Por ejemplo, La siguiente instrucción activa el menú INGRESO en las co­ordenadas 5000, 6000 y pone en negrita la opción DATOSPER. No reconoce la pulsación del botón derecho del Mouse (si un valor no se indica, se deja una coma). PopupM enu Ingreso„5000.6000,DatosPer NOTA: Sólo el nombre del menú es obligatorio. Esta instrucción normalmente se escribe en el evento MouseDown o MouseUp explicado en la página N° 52. Por ejemplo, la instrucción anterior se ejecua cuando el usuario hace clic con el botón Derecho del Mouse en cualquier parte libre del formulario. 2 9 8 G r u p o E d it o r i a l Megabyte ^ ¡ |||¡ |f CAPITULO Vil: Diseño de Menú mm CONTROL TOOLBAR ^¿J Permite crear junto con el control Imagelist, barras de herramientas para que acompañen a un menú de opciones. La barra de herramientas son un conjunto de botones con un texto y/o gráfico que se utilizan para acceder de una manera rápida a las opciones más utilizadas de un menú. Como por ejemplo: D & s ü zl X f Nuevo Abrir Grabar Imprimir Ordenar Eliminar Ayuda Salir Estos gráficos Ud. los puede colocar en la barra de herramientas de cual quier menú, siempre y cuando existan en su computadora. Los nombres de cada uno de ellos en el orden en que se visualizan son: New.bmp, Open.bmp, Save.bmp, Print.bmo, Sortasc.bmp, Delete.bmp, Help.bmp. y Trffc 14.ico Puede utilizar en la barra de herramientas cualquier otro gráfico con la ex tensión *.BMP o *.ICO. Si este control no se encuentra en la caja de herramientas debe seguir cual­quiera de los siguientes pasos: 1. En la caja de herramientas haga click con el botón derecho y elija la opción COMPONENTES. 2. De la opción Project de la barra de menú elija COMPONENTES. 3. Pulse las teclas <CRTL> + <T>. De la lista de componentes haga click en la casilla del control llamada: Microsoft Windows Common Controls. También se puede llamar este control, si elegimos la opción CONTROLAS DE VB EDICION EMPRESARIAL, en el momento de ingresar a Visual Basic o crear un nuevo proyecto. G r u p o E d it o r i a l Megabyte 2 9 9
  • 152.
    VISUAL BASIC comodebe ser... PRINCIPALES PROPIEDADES DEL CONTROL TOOLBAR: Las propiedades principales del control se obtiene con sólo elegir la propiedad Custumize (personalizado). Se visualiza una ventana con tres hojas o fichas: General, Botones e Imagen. El contenido de la hoja General es: v :■ ' ' -v m • <- - ■; ; . . .w >,? . ■ ■ •" - jü G o n o r a l J Botones» | I m a g e n J fc íjo u s e P o inter: ................ : - i im o ig e L is t j < N in g u n o > -J B o r d e irS ly l® ] ti - c c N o n a rJ A ja p ta o ra n c ra : j 1 -c c 3 D .zJ Q L E P r o p M o c l o : Jü c c O LEI D r o p 1' J o ñ o j d 1 le J p C o n t e x t lD 1" M é lp ¿ íle : | D u tto n tJ o ig h t. J2 6 4 H r ? A llo w C u s t a t r iiz e W W r o p p a b l e B u tto n W id th : j ? 8 8 .0 0 S h o w T i p s Fs E n a b l e d L A c e p te « ¡ C a n c e la r A y u d e MOUSEPOINTER Se utiliza para indicar la forma que tendrá el puntero del mouse cada vez que lo ubiquemos dentro de la barra de herramientas. Si desea como puntero del mouse un gráfico seleccionado por Ud. Debe elegir la última opción (99-ccCustom). La selección del gráfico los puede hacer en la página Imagen como se verá más adelante. IMAGELIST Se utiliza para seleccionar el control ImageList desde donde queremos obtener los gráficos para la barra de herramientas. Ud., debe dibujar primero el control ImageList en el formulario y asignar los gráficos antes de comenzar a darle las propiedades al control ToolsBar (Capitulo IV). BORDERSTYLE Selecciona el estilo del borde de la barra de herramientas. APPEARANCE Selecciona la apariencia de la barra de herramientas. OLEDROPMODE Establece el modo en que un componente de destino realiza las operaciones de colocación. HELPCONTEXTID Permite indicar un número de contexto asociado a un objeto. Se utiliza para proporciona Ayuda interactiva para la aplicación. BUTTONHEIGHT Permite indicar la altura de los botones. 300 G r u p o E d it o r ia l Megabyte ^ §¡j|f|f CAPITULO Vil: Diseño de Menú BUTTONWIDTH Permite indicar el ancho de los botones. HELPFILE Aquí se indica la ruta de acceso y el nombre de un archivo de Ayuda de Microsoft Windows usado por la aplicación para presentar Ayuda o documentación en pantalla. ALLOWCOSTOMIZE Se utiliza para indicar si el usuario final puede personalizar un control Tool bar con el cuadro de diálogo Personalizar barra de herramientas. SHOWTIPS Se utiliza para indicar si se debe visualizar el texto de ayuda asignado a cada botón. WRAPPABLE Se utiliza para indicar si el tamaño de los botones de la barra de herramientas depende del tamaño del formulario. ENABLED Permite activar o desactivar la barra de herramientas. El contenido de la hoja Botones es: G e n e ra l B otone# j im a g e n j In d ex : - J T * | »1 | In s e rta r b o tó n | Q uito/ b o tó n C o p tiQ n | d e s c r ip tio n : | ' ¥«>lue [o tb r U n p r e s s e d ' ~^| S M ® jo tb rO e fe u lt V^idth (P la c e h o ld e r ) | lag | T o o lT t p T e g t J~ 1 1 Im a g e . F? V is ib le & fc n e b le d f~ h jix e d S ta ie INDEX Visualiza o selecciona cualquiera de los paneles creados en la barra de estado. También sirve para identificar a cada uno de los botones. CAPTION Permite escribir un texto el cual se va a visualizar en el botón de la barra de herramientas. KEY Permite asignar uno o más caracteres que van a identificar a cada panel. No acepta números. STYLE Permite seleccionar estilo de cada botón. G r u p o E d it o r ia l Megabyte 301 ^
  • 153.
    VISUAL BASIC comodebe ser... «il Ejemplo de una aplicación utilizando Menú, ToolBar y StatusBar. Sub M enú de Ventas: BIENVE Calculadora Actualizar la Fecha y Hora Copia de Seguridad D.Û.S. AL SISTEMA 2 9 / 0 5 / 9 9 C h ic la y o - P e r ú ' I 6 :4 4 A M Nuevos Usuarios Borrar Usuarios Cambiar Clave Sub M enú de Utilitarios: PRODUCTOS CUENTES UTILITARIOS SALIR Realizar Ctil+R I m ili 1,1') 'U .’I.IMUMMWI Presupuestos Registro de Ventas AL SISTEMA Por Vendedor Qrl+V Por Linea Ctrl+L Por Producto Ctrl+P Por Fecha Ctil+F Por T urno Ctrl+T A . 2 9 / 0 5 / 9 9 C h ic la y o - P e r ú 6 :4 4 A M 3 0 2 G r u p o E d it o r ia l Megabyte .^ .5 CAPÍTULO VII: Diseño de Menú < € ¡¡¡¡1 Si la opción VENTAS es la más utilizada, podemos programar de tal mane­ra que el usuario la active haciendo un Click con el botón derecho del Mouse en cualquier parte del formulario. P R O D U C T O S C L I E N T E S V E N T A S U T I L I T A R I O S S A L I R M W a BIENVENIDOS AL S I S T E M I Realizar Qrl+R ------------- Consultar Ventas ► Presupuestos Registro de Ventas f 2 9 / 0 5 / 9 9 C h i c l a y o - P e r ú Í > 1 3:1 4 A M ...... » Para esto, debe programar en el evento MouseDown del formulario: Private Sub FonnMouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then PopupMenu Ventas End If End Sub PROGRAMAR DENTRO DEL TOOLBAR Suponiendo que el primer botón está ligado a la opción Nuevos Clientes (Form7), el 2do a Realizar Ventas (Form 19), el 3ro al Cuentas Corrientes (Form 13) y el 4to a la Calculadora. Entonces debe hacer doble clic en cualquiera de los botones y programar: Private Sub Toolbarl JButtonClick(ByVal Button As MSComctlLib.Button) If Button.Index = 1 Then Form7.Show If Button. Index = 2 Then Forml9.Show If Button.Index = 3 Then Forml3.Show If Button.Index = 4 Then Shell “C:WindowsCalc.exe", 1 End Sub ¡ ||¡ |j ¡ ^ G r u p o E d i t o r i a l Megabyte 3 0 3 ^ § ¡ |¡ ||l
  • 154.
    é S Stè ' VISUAL BASIC como debe ser... Dentro de las propiedades de la Barra de Herramientas, en la hoja Botones también se muestra el siguiente marco: ButtonMenus Index: [1 Insertar ButtonMenu | Quitar ButtonMenu | Text: | Keji: | Tag: | l>7 Enabled 17 Visible Esto permite agregar Sub Opciones a cualquier botón de la Barra de Herramientas, como por ejemplo: Para realizar esto, debe seleccionar en la hoja botones (Propiedad Index) el botón al cual desea asignarles sub opciones y en su propiedad Style asignar el valor 5 - tbrDropDown, luego dentro del marco ButtonMenus insertarle (Insert ButtonMenu) las sub opciones que desea, usando la propiedad Text para escribir el título de cada opción. Para saber qué sub opción ha elegido el usuario se debe programar en el evento ButtonMenuClick usando la propiedad Text. Prívate Sub Toolbarl_ButtonM enuClick(ByVal ButtonMenu As ...) I f ButtonMenu.Text = “Ordenado ” Then ‘Escriba aquí las instrucciones para la opción Ordenados MsgBox “Ordenado”, 64, “Bienvenido” End I f I f ButtonMenu.Text = “Sin Ordenar” Then ‘Escriba aquí las instrucciones para la opción Sin Ordenar MsgBox “Sin Ordenado”, 64, “Bienvenido” End I f End Sub | | | | | | ^ 3 0 4 G r u p o E d it o r ia l M e g a b y t e ^ j j j ^ l CAPITULO Vil: Diseño de Menú APLICACIÓN DESARROLLADA N° 43 Esta aplicación consiste en adicionar dos formularios más al menú anterior (form2 y form3). En el formulario N° 2 se debe ingresar el nombre de un usuario y su respectiva clave de acceso (password). Son 3 usuarios los que acepta el sistema: USUARIO PASSWORD JULIO XYZ PEDRO ABCD ANA 1234 El programa debe dar hasta tres oportunidades para ingresar. Si se termina las oportunidades, se activa el formulario N° 03 donde se muestra un mensaje para cerrar la aplicación llenándose de puntos de color negros el formulario. Para salir de la aplicación se debe presionar CTRL + ALT + SUPR o apagar la computadora. El usuario JULIO es el dueño de la empresa, por lo tanto debe tener acceso a todas las opciones del menú. El usuario PEDRO no debe ingresar a las opciones Actualizar los Precios ni a Cuentas Corrientes (deben estar desactivadas), además no debe visualizar la opción Usuarios. El usuario ANA debe tener desactivadas las opciones M antenimiento que se encuentra dentro de Productos e Internet que se encuentra dentro de Utilitarios. Además no debe visualizar la opción VENTAS. Grupo Editorial Megabyte 305 « ¡ K
  • 155.
    <í> | BASICcomo debe ser. PASO N° 01: Agregar dos formularios más a la aplicación anterior que contiene el menú. El formulario N° 02 debe tener dos etiquetas, dos cajas de texto y dos botones de comandos. El formulario N° 03 no debe tener ningún control. ¡¡.ACCESO AL SISTEMA USUARIO CLAVE OK CANCELAR íi, Form3 NOTA; Para llenar un formulario con puntos se debe utilizar la instrucción PSET, cuya sintaxis es: Nom brejControl.Pset (x,y), (color) Donde X, Y son las coordenadas del control donde desea escribir el punto y COLOR, es un valor que indica el color del punto, puede utilizar la función RGB o QBCOLOR. Si no se especifica el nombre del control, el punto se dibuja en el formulario activo. Las propiedades DrawWidth se utiliza para indicar el grosor del punto. Por ejemplo, las siguientes instrucciones muestran un punto de color celeste en el formulario activo. D raw W idth - 0 P set (2 0 0 0 ,6 0 0 0 ), Q b c o lo r (11) PASO N° 02: Asignar las propiedades a los controles Al formulario N° 02, a las etiquetas y botones de comandos asígneles la propiedad Caption como se indica. El formulario N° 03 debe tener el valor FALSE en sus propiedades ControlBox y ShowinTaskbar y en su propiedad WindowState el valor 2 (Maximizado). @¡¡¡¡!¡¡¡{§¡j¡í? 306 G r u p o E d it o r ia l Megabyte CAPÍTULO VII: Diseño de Menú PASO N° 03: Escribir las instrucciones para los controles. Declarar la variable US en un módulo para poder compartirla entre los lormularios de la aplicación. Para ello, de la opción Proyecto elija Agregar Módulo. ____________ Proyectol - Modulel (Código) ¡aa (General) (Declaraciones) Public US As String Instrucciones del procedimiento Form_Activate del Formulario N° 01, para que al activarse este formulario que contiene el menú, se asignen las restricciones de acuerdo al usuario que se ingresó en el formulario N° 02. P r i v a t e S u b F o r m _ A c t i v a t e () S e l e c t C a s e US C a s e "JU LIO " Rem NO TIEN E NINGUNA RE STR ICC IÓ N C a s e "PEDRO" A c t u a l i z a r _ P r e c i o s . E n a b l e d = F a l s e C u e n t a _ C o r r i e n t e . E n a b l e d = F a l s e U s u a r i o s . V i s i b l e = F a l s e C a s e "ANA" M a n t e m i e n t o . E n a b l e d = F a l s e I n t e r n e t . E n a b l e d = F a l s e V e n t a s . V i s i b l e = F a l s e E n d S e l e c t E n d S u b NOTA: No olvide de utilizar el nombre correcto que asignó en la propiedad ÑAME a cada opción. Cuando grabe el módulo creado obtiene la extensión *.BAS. INSTRUCCIONES DEL FORMULARIO N° 02 Instrucciones del Procedimiento Form_Activate. P r í v a t e S u b F o r m _ _ A c t i v a t e () T e x t l = ”" T e x t 2 = "" T e x t l . S e t F o c u s E n d S u b
  • 156.
    i l ll É l * VISUAL BASIC como debe ser... CAPITULO VII: Diseño de Menú Instrucciones del Botón OK. Verifican si se ingreso el usuario y su password correcto y brindar hasta tres opor­tunidades para ingresar. Prívate Sub Command 1 _Click() Static OP As Byte Dim PW As String US = UCasefTextl) P W — T J C n sp( T e x t2 ) lf U S - “JULIO ” And PW = “XYZ” O rU S = “PEDRO" And PW = “ABCD ” Or US = “ANA ” And PW = “1234 ” Then Unload Form2 Forml.Show ElseO P = OP + 1 IfO P = 3 Then MsgBox “Datos Incorrectos" + Chr(13) + Chr(13) + “ Tiene “ _ + Str(3 - OP) + “ oportunidades”, 16, “ACCESO DENEGADO’ Form3.Show Else MsgBox “Datos Incorrectos” + Chr(13) + Chr(13) + “ Tiene “ _ + Str(3 - OP) + “ oportunidades", 16, “ACCESO DENEGADO” Form_Activate End If End If End Sub INSTRUCCIONES DEL FORMULARIO N° 03 instrucciones del procedimiento Form_Activate Prívate Sub Form_Activate() Form3.Caption - “Cierre la aplicación, no tiene acceso” + Space(135) Mensaje End Sub instrucciones del Procedimiento MENSAJE Sub Mensaje() Dim x, y As Integer DrawWidth = 10 ‘Establece el grosor de los puntos a Imprimir Do Form3.Caption Mid(Form3.Caption, 2) + Left(Form3.Caption, 1) F orx - lT o 35000 Ncxt x PSet (Rnd * ScaleWidth, Rnd * SaleHeight), QBColor(O) Loop End Sub IMPORTANTE Configure el Visual Basic de tal manera que ejecute primero el formulario N° 02. |¡ j § ¡ |^ 308 Grupo E ditorial M egabyte ^ § ¡¡1 C O N T R O L SSTAB fSS, Permite diseñar varias páginas en un solo formulario con lo cual podemos también crear menús. Si este control no se encuentra en la caja de herramientas active la lista de componentes y haga clic en la casilla de Microsoft: M icrosoft Tabbed Dialog Control PRINCIPALES PROPIEDADES DE UN CONTROL SSTAB: ÑAM E Permite asignarle un nombre. Por default el nombre es Sstabl, Sstab2, Sstab3, etc. CAPTION Para escribir el título de la página que está seleccionada. ENABLED Para indicar si el control debe estar activado o no. FONT Para indicar el tipo, tamaño y estilo de letra. FORECOLOR Para seleccionar el color de las letras. TAB Para indicar la página que debe estar activa. TABORIENTATION Para indicar la posición del título de las páginas.. TABS Para indicar el número de páginas que debe tener el control. TABSPERROW Para indicar el número de páginas por fila. VISIBLE Para indicar si el control se del?e visualizar. * G r u p o E d i t o r i a l Megabyte 309 ^
  • 157.
    VISUAL BASIC comodebe ser... EJEMPLO: ■ ■ ■ Usando SSTAB, los formularios 03, 04, 05 y 06 de la aplicación N° 30 se pueden desarrollar en un solo, como se puede observar a continuación. Las propiedades que debe asignar al control SSTAB es CAPTION: PERSONALES ACADÉMICOS FAMILIARES Dentro de cada hoja se deben dibujar las etiquetas, cajas de texto y botones de comandos correspondiente. fid isi Labell JSL5I INGRESO DE DATOS PERSÖHÄL|s|T ACADEMICOS J FAMILIARES Nombre Dirección Teléfono Fecha de Nac. Sexo NUEVO SALIR f f l I l l l l i i f a i M — T M | ING RESO DE DATOS PERSONALES ; ACADEMICÓSfl FAMILIARES Centro de Esludios [" Especialidad p Gclo | Turno | Aula | ” NUEVO | SALIR [ I INGRESO DE DATOS ' PERSONALES 7 ACADEMICOS | f M ÜARÉsT Apoderado(a) |~ N! de hermanos ["" Lugar de Origen |~ Tipo de Vivienda | NUEVO [ SALIR [ 3 1 0 G ru po E d ito r ia l Megabyte CAPITULO VII: Diseño de Menú ERRO RES MAS COMUNES Microsoft Visual Basic El control M enu debe tener un nom bre Aceptar j | Ayuda Se olvido de asignarle el nombre (Ñame) a la opción que Visual Basic tiene seleccionada. Toda opción debe tener un nombre. Microsoft Visual Basic No se puede colocar aquí una marca de verificación Aceptar ; Ayuda Microsoft Visual Basic O El elemento de menú ha saltado un nivel A ce p ta r J j | Ayuda Microsoft Visual Basic 0 No se puede asignar una tecla de método abreviado a un menú de nivel superior Aceptar i Ayuda Microsoft Visual Basic C 0 El elemento de la matriz de controles de menú debe tener un índice i Aceptar j Ayuda A las opciones principales no se les puede asignar Checked, entonces desactive esta casilla a la opción que Visual Basic tie­ne seleccionada. Pulsó dos o más veces la fle­cha a la derecha saltando uno o más niveles. Pulse la flecha a la izquierda en la opción seleccionada para corregir este error. A asignado una tecla rápida (Shortcut) a una opción prin­cipal. Las opciones que tiene sub opciones no pueden tener Shortcut. Escribió dos opciones con el mismo nombre (Ñame). Dos opciones pueden tener el mismo Caption, pero noel mismo nombre. G r u p o E d it o r ia l Megabyte 311
  • 158.
    l S ll ! > VISUAL BASIC como debe ser... PREGUNTAS DE REPASO N° 07 1. ¿Con qué finalidad se puede crear utilizar un menú? 2. ¿Cuántas y cuáles con las formas de ingresar al Editor de Menú? 3. ¿A qué opciones de un menú se les puede asignar la propiedad Shortcut? 4. ¿Cuál es la diferencia entre la propiedad Caption y Ñame? 5. ¿Qué requisitos debe cumplir la propiedad Ñame de una opción? 6. ¿Cómo se programa dentro de una opción? 7. ¿Cuál es la importancia de un control ToolBar? 8. ¿Con qué otros controles se puede crear un menú? 9. ¿Cómo se sabe la opción que el usuario a elegido de un control ToolBar? 10. ¿Para qué sirve y cómo funciona PopupMenu? 11. ¿Cuál es la ventaja y cómo funciona el control SSTAB? 12. ¿Qué control permite asignar gráficos al ToolBar? 13. ¿Qué debe hacer si la opción para ingresar al Editor de Menú (Herramientas/Editor de Menú) se encuentra desactivado? 14. ¿Se puede asignar propiedades a las opciones de un menú dentro de un programa? 15. ¿Para qué sirve la flecha hacia abajo y hacia arriba dentro del Editor de Menú? 16. ¿Cuál es la ventaja de usar un menú en un aplicación? 17. ¿Dos opciones pueden tener el mismo nombre (Ñame)? 18. ¿Se puede dejar espacios en blanco en la propiedad Caption y Ñame de una opción? 19. ¿Qué propiedades de un control Tovar se consideran más importantes? 20. ¿Cuál es la diferencia entre las propiedades Tabs y TabsPerRow del control SSTAB? La CREATIVID AD es m uy importante, form úlese nuevas aplicaciones o intercambie aplicaciones propuestas entre sus compañeros de estudio y desarróllelas con la finalidad de enriquecer sus conocimientos. G r u p o E d it W 3 1 2 o r ia l Megabyte ^ |§ |¡ |j j i CAPITULO VIII C h l o l a y o -*• P u * r t D E la in L â r f i b r a q u a 3 USp 3 R E S I S T R D A C T U A L | T O P O S | 5A U R | MANEJO DE ARCHIVOS
  • 159.
    > CAPÍTULO VIII:Manejo de Archivos < € ¡ 8 ¡ 1 ^ DRTVELISTBOX O Muestra las unidades de disco permitiendo seleccionar cualquiera de ellas. Su principal propiedad es DRIVE que indica la unidad que se encuentra ac tiva o que se desea activar. Sólo se puede cambiar de unidad durante la ejecución del programa. Su nombre predeterminado es Drivel, Drive2, etc. Al dibujarlo se visualiza j — i c: [CETDI] DIR LISTBO X Muestra las carpetas, llamadas también directorios, de la unidad de disco que se encuentra activa. Su principal propiedad es PATH que indica la ruta que se encuentra activa o que se desea activar. Sólo se puede cambiar de unidad durante la ejecución del programa. Su nombre predeterminado es D irl, Dir2, etc. y cuando se dibuja se visualiza: FILELISTBOX Q l Archivos de programa — : i DevStudio Muestra los archivo que pertenecen a la carpeta que se encuentra activa o a la establecida en su propiedad PATH durante la ejecución del programa. Su nombre predeterminado es F ilel, File2, etc. y cuando se dibuja se visualiza: ADDSCCES.DLL ADDSCCUS.DLL ! aplicación sueldo neto, ene aplicación sueldo neto.vbp H G r u p o E d it o r ia l Megabyte 3 1 5
  • 160.
    VISUAL BASIC comodebe ser... Las principales propiedades del control FileListBox son: ARCHIVE Para indicar si muestra los archivos con atributo de modificado. FTLENAME Obtiene el nombre del archivo seleccionado. fflDDEN Para indicar si muestra los archivos ocultos. NORMAL Para indicar si muestra los archivos con atributo de normal. PATH Indica la ruta del archivo seleccionado. PATTERN Acepta caracteres comodines (* y ?) para seleccionar los archivos que se desean visualizar. El signo de interrogación (?) reemplaza a un carácter y el asterisco (*) a dos o mas. READONLY Para indicar si muestra los archivos de solo lectura. SYSTEM Para indicar si muestra los archivos de sistema. A P L IC A C IÓ N D E SA R R O L L A D A N° 44 La siguiente aplicación muestra las carpetas de la unidad selecciona y los archivos de cada carpeta que se selecciona. Para seleccionar una carpeta haga Doble Click en ella. MIRANDO ARCHIVOS le : [CETDI] â _ J C : Archivos de prograr- ADDSCCES.DLL ADDSCCUS.DLL aplicación sueldo neto.exe aplicación sueldo neto.vbp aplicación sueldo neto.vbw I Para desarrollar esta aplicación sólo se debe programaren el evento Change de los controles DriveListBox y DirListBox. Instrucciones del control DriveListBox: Prívate Sub Drivel_Change() Dirl.Path = Drivel.Drive End Sub Instrucciones del control DirListBox: Prívate Sub Dirl_Change() Filel.Path = Dirl.Path CAPITULO VIII: Manejo de Archivos A PLIC A C IO N D E SA R R O L L A D A N° 45 La siguiente aplicación muestra las carpetas de la unidad selecciona y los archivos de la carpeta que se selecciona, además permite establecer el tipo de archivos a visualizar (ingresando la extensión) y cuando se muestran archivos *.EXE, los podemos ejecutar. U N I D A D C A R P E T A I — l e : |C. ] - I 1 — S l c A ■*. 1 • W I N D O W S ■ ■ í""1 A rc h iv o s recibidos — ------1 _ J C O M M A N D _ J C O N F I G r ~ l C o o k ie s i i Crystal A R C H I V O E x t e n s i ó n j ” E X E A C C S T A T .E X E A R P .E X E S i C O N T R O L E X E C S 3 K I T .E X E - r J Unidad |c: [CUCHO] Carpata |c:WINDOWS Archivo |CA4_C EXE Ejecutar el programa | £»alir j PASO N° 01: DIBUJAR LOS CONTROLES. PASO N° 02: ASIGNAR LAS PROPIEDADES. Asigne las propiedades sólo a las etiquetas y a los botones de comandos como se indica en la aplicación a desarrollar. La caja de texto Textl, debe estar en blanco. G r u p o E d it o r ia l Megabyte 317 w m
  • 161.
    VISUAL BASIC comodebe ser. PASO N° 03: ESCRIBIRLAS INSTRUCCIONES PARALOS CONTROLES. Instrucciones evento Form_Load Prívate Sub Form_Load() D rivel jC hange End Sub Instrucciones del control DriveListBox: Prívate Sub D rivel_C hange() D irl.Path = Drivel.Drive Label7 = Drivel.Drive End Sub Instrucciones del control DirListBox: Prívate Sub D irl_C hange() F ilel = Dirl.Path Label8 = D irl.Path Commandl .Enabled = False End Sub Instrucciones del control FileListBox: Prívate Sub Filel_C lick() Label9 = Filel.filename I f Right(UCase(Label9), 3) = "EXE" Then Commandl .Enabled = True Else Commandl .Enabled - False End I f End Sub Instrucciones del control Textl: Prívate Sub Textl_Change() Filel. Pattern = Textl End Sub Prívate Sub Textl _KeyPress(KeyAscii As Integer) c = Chr(KeyAscii) I f c = "*" O r c = "." O r e = "?" Then Textl JChange End I f End Sub Instrucciones del botón Ejecutar el Programa. Prívate Sub Com m andl _Click() Dim N n v JntPQpr N = Shell( D irl.Path + V + F ilel filenam e, 1) End Sub w 3 1 8 G r u p o E d it o r ia l Megabyte ^ CAPÍTULO VIII: Manejo de Archivos C O NM O N D IA LO G Presenta los cuadros de diálogo más comunes del Windows. Su nombre predeterminado es CommonDialogl, CommonDialog2, etc. Sus principales propiedades son: ACTION Se utiliza para indicar el cuadro de diálogo que deseamos activar. Los valores que puede tener son: 0 Ningún cuadro 1 Activa el cuadro de diálogo Abrir. 2 Activa el cuadro de diálogo Guardar como. 3 Activa el cuadro de diálogo Color. 4 Activa el cuadro de diálogo Fuente. 5 Activa el cuadro de diálogo Imprimir. 6 Activa la ayuda del Windows. También se puede utilizar los métodos para activar el cuadro de diálogo que desea: ShowOpen (Abrir), ShowSave (Guardar como), ShowColor (Color), ShowFont (Fuente), ShowPrinter (Imprimir) y ShowHelp (Ayuda) EJEMPLO DE CUADROS DE DIALOGO _________lue Colores básicos: i r r r r r i r r ■ r r r r i a s s ■ r i ï E i i a i ■ ■ ■ ■ ■ ■ ■ ■ ■ r r R i i r i r Colores personalizados: r r r r~ r r r m m ® b Definir colores personalizados» Aceptar Cancelar . tr«pn©»«r* ' E 'la d o p«ecM<iro«rvidA. Liil« T *k > Arr*o La«»W iíI«i UOoadör)' LPT 1: r «nmnlqrio ■ 3 I Imprimir en un archivo Imprima - r»- T odo Comas Número de £«p¡«s; I Aceptar. I Cancelar | Fijante: I A n al N <m lo w "■i’ À badi M T C o n d e m S d rÄ l »r Aiiäi '•t1 Ai liti B lack — * 1 T a c t y r t o I £ u l> ia y a d o ; AaBbY yZ z f ~ ...— ------- A lfa b e to : jKassiHiMasw»«*wa -i G r u p o E d it o r ia l Megabyte 3 1 9
  • 162.
    s , VISUALBASIC como debe ser... PR O PIE D A D ES PARA EL CU A D R O FU EN T ES Antes de usar el método ShowFont tiene que asignar a la propiedad Flags una de tres valores: &H3 Muestra los tipos de letra que acepta el monitor y la impresora. &H2 Muestra sólo los tipos de letra que acepta la impresora. &H 1 Muestra sólo los tipos de letra que acepta el monitor. Si no establece Flags, aparecerá el siguiente mensaje de error: N o h a y fu e n te s ins ta la d a s . P a ra instalarla s, a b r a la c a r p e t a F u e n t e s e n el P a n e l d e co n tro l. También puede asignar a la propiedad Flags, entre otros, los siguientes valores: &H200 Activa el botón Aplicar en el cuadro de diálogo. &H 100 Especifica que el cuadro de diálogo permite los efectos de tachado, subrayado y color. &H2000 Especifica que el cuadro de diálogo selecciona sólo tamaños de fuente dentro del intervalo especificado por las propiedades Min y Max. NOTA: Utilice el operador OR para asignar dos valores a la propiedad Flags, por ejemplo, se puede escribir en un botón de comandos: CommonDialogl.Flags = &H2 Or &H100 C om m onD ialogl. ShowFont COLOR Obtiene el color seleccionado para la letra. FO NTBO LD Indica si ha seleccionado negrita. FONTITALIC Indica si ha seleccionado cursiva. FONTSTRIKETHRU Indica si ha seleccionado tachado. FONTUNDERLINE Indica si ha seleccionado subrayado. FONTNAM E Obtiene el nombre del tipo de letra seleccionada. FONTSIZE Obtiene el tamaño de letra seleccionada. ^ 320 G r u p o E d it o r ia l M egabyte^ CAPITULO VIII: Manejo de Archivos % PR O PIE D A D E S PARA EL C U A D R O C O LO R COLOR ( )btiene el color seleccionado. I'LAGS So utiliza para configurar el cuadro de diálogo Color. I .os valor que puede tener son: &H2 Presenta el cuadro con los colores personalizados. & 114 Desactiva el botón de comando Definir colores personalizado. PR O PIE D A D E S PA RA E L C U A D R O A B R IR Y G U A R D A R DEFAULTEXT Indica la extensión predeterminada de los archivos. KILENAME Obtiene el nombre del archivo seleccionado. FILTER I establece los filtros para los tipos de archivos a visualizar. La sintaxis apara establecer un filtro es: Filter = descripciónl filtrol descripción2 filtro2... Para separar cada descripción y filtro debe utilizar el carácter N° 124 (|). Ejemplo, las instrucciones: C'onimonDialogl.Fílter = “Documentos(*.Doc)|*.Doc|Gráficos(*.Bmp)|*.Bmp|Todos|*.*” CommonDialogl.ShowOpen Muestran la siguiente ventana de Abrir: Abrir 1 Buscar en | _ j| Vfb z J £ j f t j f ü ü j _ j Clisvr _ J samples L_j Winapi _ ] Graphics _ J Setup _ j Wizards _ J Help __1 setupkit _J0 db c _ J T empiate _ j report C_1 Tsql _ j Repostry __1 vbortline Nombre de archivo: 1 | £ btlf J Archivos de tipo: j Documentos^. Doc) _LÍ Cancelar I !Documenios(*.Doc1 ■JMNIrilrittflHpMU .......... . ■ Gráficos(“ Bmp) Todos 1-------------------------- NOTA: Si no especifica la propiedad Filter, el combo de Archivos de Tipo se muestra en blanco, permitiendo ver todos los archivos. G r u p o E d it o r ia l Megabyte 321
  • 163.
    VISUAL BASIC comodebe ser... IIITERIMMX Para indicar el filtro predeterminado de los que se ha colocado en la propiedad Filter. Por ejemplo, la siguiente instrucción hace que se muestre el segundo filtro de los establecidos: CbmnlmDial(^lEltel•=',DocuI^xa^tos(*I)c)c)(*.Doc|Graficos(*.Bn^p)|*.Brnpf^odos(*.*,' CbmrnonDialogLFilterindex=2 CommonDialog LShowOpen FLAGS Se utiliza para configurar el cuadro de diálogo Abrir o Guardar. Los valor que puede tener son: &H1000 Especifica que el usuario sólo puede introducir nombres de archivos existentes en el cuadro de texto Nombre de archivo. Si este indicador está activado y el usuario escribe un nombre de archivo no válido, se mostrará una advertencia. &H4 Oculta la casilla de verificación Sólo lectura. &H8 Hace que el cuadro de diálogo restablezca como directorio actual el que lo era en el momento de abrirse el cuadro de diálogo. &H8000 Especifica que el archivo devuelto no tendrá establecido el atributo de Sólo lectura y no estará en un directorio protegido contra escritura. &H2 Hace que el cuadro de diálogo Guardar como genere un cuadro de mensajes si el archivo seleccionado ya existe. El usuario tiene que confirmar si desea sobrescribiré! archivo. IMTDIK Establece la ruta de la carpeta predetermina al para Abrir o Grabar un archivo. Por ejemplo, la siguiente instrucción hace que se muestre la carpeta del Windows en forma predeterminada. CommonDialogl.InitDir - "c:windows" CommonDialog l.ShowOpen PROPIEDADES PARA EL CUADRO IMPRIMIR COPIES El número de copias que se van a imprimir. FROMPAGE La página en la que se inicia la impresión. TOPAGE La página en la que se detiene la impresión. Los principales valores de la propiedad Flags &H80000 Desactiva la casilla para Imprimir en un archivo. &H 100000 Oculta la casilla para Imprimir en un archivo. &H40 Hace que el sistema presente el cuadro de diálogo Configurar impresora en vez del cuadro de diálogo Imprimir. &H20 Devuelve o establece el estado de la casilla de verificación Imprimir en un archivo. &H400 Devuelve el nombre de la impresora predeterminada. € ¡ S ¡ I 5' 3 2 2 G r u p o E d i t o r i a l M e g a b y te < | § | g CAPITULO VIII: Manejo de Archivos A P LIC A C IÓ N D E SA R R O L L A D A N° 46 La siguiente aplicación permite asignar un gráfico, un color de fondo, un tipo y color de letra utilizando las cajas de diálogo. CUADROS OE DIÁLOGO azi VISUAL BASIC FUENTE GRÁFICO FONDO LETRAS PASO N° 01: DIBUJAR LOS CONTROLES. Dibuje una etiqueta, un PictureBox, cuatro botones de comandos y un control CommonDialog como se muestra a continuación: m u üi. Formi LabeH Commandl Command2 UommandS Command4 PASO N° 02: ASIGNAR LAS PROPIEDADES A LOS CONTROLES. Asigna la propiedad Caption a la etiqueta y a los botones de comandos. Al control PictureBox asígnele el gráfico indicado o cualquier otro. El control CommonDialog no tiene ninguna propiedad. ¡ § |¡ ||1 ^ G r u p o E d it o r ia l Megabyte 323
  • 164.
    ¡¡B B kVISUAL BASIC como debe ser... PASO N° 03: ESCRIBIR LAS INSTRUCCIONES PARA LOS CONTROLES. Instrucciones del botón FUENTE Prívate Sub Commandl_Click() CommonDialogl.FontName = "ARIAL" ‘Tipo de letra predeterminada CommonDialogl.Flags = &H3 Or &H100 CommonDialog 1 .ShowFont Labell. FontName = CommonDialogl .FontName Labell .FontSize = CommonDialogl .FontSize Labell. Fontltalic = CommonDialogl .Fontltalic Labell. FontUnderline = CommonDialogl.FontUnderline Labell.ForeColor = CommonDialogl .Color End Sub Instrucciones del botón GRÁFICO Prívate Sub Command2_Click() CommonDialogl.Filter = "WMF*.wmfICO*.icoBMP*.bmpTodos*. *" CommonDialogl. ShowOpen Picturel.Picture - LoadPicture(CommonDialogl.filename) End Sub Instrucciones del botón FONDO Prívate Sub Command3_Click() CommonDialogl.Flags - &H2 CommonDialogl. ShowColor Picturel.BackColor - CommonDialogl.Color Labell. BackColor = CommonDialogl .Color End Sub Instrucciones del botón LETRAS Prívate Sub Command4_Click() CommonDialogl .Flags - &H2 CommonDialogl.ShowColor Labell.ForeColor = CommonDialogl.Color End Sub l i l i l í 324 G r u p o E d it o r ia l Megabyte <IÉp l l CAPÍTULO VIII: Manejo de Archivos % USO DE LA IM PRESORA Para manejar la impresora dentro de un programa se debe utilizar el objeto PRINTER. PRINCIPALES PROPIEDADES DELOBJETO PRINTER: COLORMODE Se utiliza sólo para impresoras a color para indicar si va a imprimir en color o negro (escala de grises). Si le asigna el valor uno (1) imprimir en negro y dos (2) imprime en color. COPIES Indica el número de copias a imprimir. CURRENTX Establece la posición Horizontal donde deseamos imprimir. CURRENTY Establece la posición Vertical donde deseamos imprimir. DEVTCENAME Obtiene el nombre del dispositivo. DRIYERNAME Obtiene el nombre del controlador. FONTBOLD Permite indicar si se imprime en negrita. PONTITALIC Permite indicar si se imprime en cursiva. FONTSTTRIKErHRU Permite indicar si se imprime con letras tachadas. FONTUNDERLINE Permite indicar si se imprime con subrayado. FONTNAME Permite establecer el tipo de letra para la impresión. FONTSIZE Permite establecer el tamaño de letra para la impresión. HEJGHT Para indicar la altura del papel donde desea imprimir. WIDTH Para indicar el ancho del papel donde desea imprimir ORIENTARON Permite establecer si se imprime en forma horizontal o vertical. Asignándole el valor I se imprime vertical y 0 Horizontal. PAGE Devuelve el número de la página que se esta imprimiendo. PAPERBPM Establece la forma de introducir el papel a la impresora. Los principales valores que puede tener son: 1 Utilizar papel de la bandeja superior. 4 Esperar a la inserción manual de cada hoja. 7 (Predeterminado) Utilizar papel de la bandeja activa. 8 Utilizar papel del alimentador por tracción. G r u p o E d it o r ia l Megabyte 325 m m
  • 165.
    Ü ! Ü| > VISUAL BASIC como debe ser... „ PAPERSIZE Establece el tamaño del papel donde desea imprimir. Los valores principales son: I Carta, 216 x 279 mm 8 A3,297 x 420mm 9 A4,210 x 297mm II A5,148x210mm 12 B4,250 x 354mm 13 B5,182x257 mm 14 Folio, 216x330 mm 39 Continuo USA estándar, 310 x 280 mm 40 Continuo alemán estándar, 216 x 305 mm 41 Continuo alemán oficio, 216 x 330 mm 256 Definido por el usuario Cuando le asigna el valor 256 el tamaño del papel será el indicado por la propiedades Height y Width. PORT Devuelve el nombre del puerto por el que se envía los documentos a la impresora. PRINTQIAI.ITY Establece la calidad de impresión. Sus valores pueden ser: CONTANTE VALOR CALIDAD vbPRPQDraft -1 Resolución borrador vbPRPQLow -2 Resolución baja vbPRPQMedium -3 Resolución media vbPRPQHigh -4 Resolución alta SCALEMODE Establecen la unidad de medida para el objeto Printer. Los valores que puede tener son: 1 (Predeterminado). Establece la unidad de medida Twip. 2 Punto (72 puntos por pulgada lógica). 3 Píxel (resolución del monitor o la impresora). 4 Carácter (horizontal= 120 twips por unidad; vertical=240 twips por unidad). 5 Pulgada. 6 Milímetro. 7 Centímetro. ZOOM Indica el porcentaje en que se amplia o reduce el resultado impreso. PRINCIPALES MÉTODOS DEL OBJETO PRINTER: ENDDOC Inicia el envía la información a la impresora. K IL L I X X Finaliza el trabajo de impresión en ejecución. NEWPAGE Avanza a la siguiente página e incrementa el valor de la propiedad Page en 1 (uno). 326 G r u p o E d it o r ia l Megabyte CAPÍTULO VIII: Manejo de Archivos ^ ¡ ¡ B M E T O D O PR IN T Es un método que usado con el objeto Printer, permite imprimir información en la impresora. Su sintaxis para imprimir en la impresora es: PRINTER.PRINT Expresión Donde expresión es lo que deseamos imprimir. Si es un mensaje debe ir entre comillas (") o apostrofes (‘). Ejemplos: La siguiente instrucción imprime VISUAL BASIC en la impresora. Printer.Print "VISUALBASIC” Las siguientes instrucciones imprimen el texto VISUAL BASIC y el texto COMO DEBE SER..., pero en dos líneas diferentes. Printer.Print "VISUALBASIC" Printer.Print "COMO DEBE SER... " Después de la expresión puede utilizar una coma (,) que permite imprimir el siguiente mensaje en la misma línea pero después de ocho (8) espacios o puede utilizar un punto y coma (;) que permite imprimiré! siguiente mensaje en la misma línea pero junto a la anterior. Las siguientes instrucciones imprimen el texto VISUAL BASIC y el texto COMO DEBE SER..., en la misma línea pero separados por 8 espacios (hay una coma después de imprimir VISUAL BASIC). Printer.Print "VISUALBASIC", Printer.Print "COMO DEBE SER... " Las siguientes instrucciones imprimen el texto VISUAL BASIC y el texto COMO DEBE SER..., en la misma línea pero juntos (hay un punto y coma después de imprimir VISUAL BASIC). Printer.Print "VISUAL BASIC"; Printer.Print "COMO DEBE SER... " Las siguientes instrucciones imprimen: SU EDAD ES: 31 AÑOS. Dim E As Integer E = 31 Print "SU EDAD ES: Str(E); " AÑOS" La instrucción Printer.Print sin ningún parámetro deja una linea en blanco. IN ST R U C C IÓ N TAB La instrucción Tab se utiliza junto con Print para indicar el número de la columna de la línea actual donde desea imprimir la siguiente expresión. Por ejemplo: I .a instrucción imprime en la columna 20 la palabra COMPUTACION. Printer.Print Tab(20); "Computación" La siguiente instrucción imprime en la columna 10 el texto VISUAL BASIC y en la columna 30 el texto COMO DEBE SER... Print Tab(10); "VISUALBASIC"; Tab(30); "COMO DEBE SER.." G r u p o E d it o r ia l Megabyte 327 m m
  • 166.
    VISUAL BASIC 'íZtS&m'como debe ser. IN ST R U C C IÓ N SPC Esta instrucción permite dejar espacios en blanco antes de imprimir. La siguiente instrucción imprime los textos VISUAL BASIC y COMO DEBE SER..., separados por 5 espacios en blanco. Print "VISUAL BASIC"; Spc(5); "COMO DEBE SER..." NOTA: • Es opcional escribir los punto y coma en las instrucciones TAB y SPC, porque se escriben automáticamente. • Cuando la columna donde trata de imprimir con la instrucción TAB está ocupada por la expresión anterior, entonces se imprime en la columna indica pero en la siguiente línea. PR IN T FO R M Es un método que pertenece a los formularios y permite imprimirlo incluyendo todos los controles que contiene incluyendo gráficos. Para ello asigne el valor TRUE a la propiedad AUTOREDRAW del formulario que desea imprimir. Su sintaxis es: Nombre_Del_Fonnulario.PRINTFORM A P L IC A C IO N D E SA R R O L L A D A N° 47 La siguiente aplicación es un ejemplo del uso de laimpresora imprimiendo los datos de una sola persona o un listado general. USO DE LA IMPRESORA -mixi D a lo s P e r s o n a le s : Nombre ¡Cesar Almacenar j Distrito ||_a Victoria Edad f 35 Cancelar Anaximandro -1 Ana María lie 7 Fi't1 'Jifflffli'‘wWnffT Karina j d IM P R IM IR REGISTRO ACTUAL Labell ] Textl Label2 (7ext2 Label3 I™ 3 Frame2 Command3 | Command4 PASO N" 01: DIBUJAR LOS CONTROLES. Dibuje los controles y asígnele las propiedades como se muestra a continuación. Las listas deben quedar en blanco: PASO N° 02: ESCRIBIR LAS INSTRUCCIONES PARA LOS CONTROLES. Definir las variables a nivel de formulario. Dim N As Byte Instrucciones del botón Salir. Prívate Sub CommandS_Click() IfMsgBox("ESTA SEGURO DE SALIR", 36, "CUIDADO") = 6 Then End End Sub 328 G r u p o E d it o r ia l Megabyte^ CAPÍTULO VIII: Manejo de Archivos Instrucciones del botón Nuevo o Almacenar. P r i v a t e S u b C o m m a n d l _ C l i c k () I f C o m m a n d l . C a p t i o n = "& Nuevo" T h e n C o m m a n d l . C a p t i o n = " ¿ A l m a c e n a r " Conunand2. E n a b l e d = T r u e F r a m e 1 . E n a b l e d = T r u e l i m p i a T e x t l . S e t F o c u s E l s e C o m m a n d l. C a p t i o n = "& N uevo" C om m and2. E n a b l e d = F a l s e F r a m e 1 . E n a b l e d = F a l s e Rem p a s a l o s d a t o s d e l a s C a j a s d e T e x t o a l o s L i s t L i s t l . A d d l t e m T e x t l L i s t 2 . A d d l t e m T e x t 2 vL i s t 3 . A d d l t e m T e x t 3 E n d I f E n d S u b Inst, del FormActivate. P r i v a t e S u b F o r m _ A c t i v a t e () C o m m a n d l. C a p t i o n = "&Nuevo C om m and2. E n a b l e d = F a l s e F r a m e 1 . E n a b l e d = F a l s e l i m p i a E n d S u b PROCEDIMIENTO LIMPIA S u b l i m p i a () T e x t l = " " T e x t 2 = "" T e x t J = " " E n d S u b Inst, del botón Cancelar. P r i v a t e S u b C o m m a n d 2 _ C l i c k ( ) F o r m _ A c t i v a t e E n d S u b PROCEDIMIENTO MUESTRA S u b MUESTRA () T e x t l = L i s t l T e x t 2 = L i s t 2 T e x t 3 = L i s t 3 E n d S u b INSTRUCCIONES DE LOS CONTROLES LIST Private Sub Ustl_CUck( ) N = Listl. Listindex List2.ListIndex - N List3.ListIndex = N End Sub Private Sub lJst2_Click() N = List2.ListIndex List 1 .List Index=N List 3. List Index = N MUESTRA End Sub Private Sub List3_Click() N = List3.ListIndex Listi. Ustlndex = N List2.UstIndex = N MUESTRA End Sub E d it o r ia l Megabyte 329
  • 167.
    VISUAL BASIC comodebe ser. . . •■ ■■■.■*,•• Instrucciones del procedim iento EN C A BEZ A D O Sub ENCABEZADOO Printer.FontName = "Arial" Printer.FontSize - 8 Printer.Print Tab(33);"PáGINA N°" + Str(Printer.Page);Tab(80); "Fecha y H o r a + Str(CVDate(Now)) Printer.CurrentY - 1 0 Printer.Print Printer.FontName = "courier new" Printer.FontSize = 22 Printer.Print Tab(12); "LISTADO DE REGISTROS" Printer.FontSize = 10 Printer.Print Printer.Print Tab(20);"NOMBRE"; Tab(40); "DISTRITO"; Tab(70); "EDAD" Printer.Print Tab(20); String(55, "*") End Sub Instrucciones del B otón R egistro A ctual. Prívate Sub Command3jClick() Printer.PrintQuality = -4 Printer.ScaleMode = 6 Printer.PaperSize = 9 Printer.CurrentY = 10 Printer.FontName = "courier new" Printer.FontSize = 20 Printer.Print Tab(17); "DATOS PERSONALES" Printer.FontSize - 14 Printer.Print Printer.Print Tab(20); "Nombre................: " + Textl Printer.Print Tab(20); "Distrito...............: " + Text2 Printer.Print Tab(20); "Edad....................: " + Text3 Printer.EndDoc End Sub Instrucciones del procedim iento Todos. Prívate Sub Command4_Click() Printer.PrintQuality = -4 Printer.ScaleMode = 6:Printer.PaperSize=9:Printer.CurrentY = 10 ENCABEZADO F orX - 1 To Listl.ListCount Printer.FontName = "courier new" Printer.FontSize - 1 0 Listl.Listlndex = X - 1:List2.Listlitdex = X - 1: List3.ListIndex = X - 1 Printer.Print Tab(20);Listl; Tab(40); List2; Tab(72); List3 IfX Mod 3 - 0 Then Printer.NewPage ENCABEZADO E n d lf Next X Printer.EndDoc End Sub 330 G r u p o E d it o r ia l Megabyte CAPITULO VIII: Manejo de Archivos ^ COMANDOS DEL D.O.S. Todas las tareas para manejar archivos o carpetas, se pueden realizar a través del Windows y con las cajas de diálogo (CommonDialog), pero Visual Basic también acepta instrucciones que se usan en el D.O.S: niR Permite obtener el nombre de un archivo, el nombre de la carpeta actual o el nombre de la etiqueta del disco. Su sintaxis es: DIR (RUTA, VALOR) Ruta es el ubicación y el nombre del archivo que desea obtener. Se pueden utilizar los caracteres comodín: * Que representa dos o más caracteres. ? Que representa un solo carácter. Es un valor que indica el atributo del archivo. Los valores pueden ser: vbNormal 0 Normal vbHidden 2 Oculto vbSystem 4 Archivo de sistema vbVolume 8 Etiqueta de volumen; si se especifica se ignoran todos los atributos. vbDirectory 16 Directorio o carpeta. FTLECOPY Copia un archivo. Por ejemplo, la siguiente instrucción copia el archivo INFORME.DOC AL DISCO A: FileCopy "INFORME.DOC ", "A:" KIIJ. Borra un archivo. Por ejemplo, la siguiente instrucción borra el archivo INFORME.DOC: KILL “INFORME.DOC ÑAME Cambia el nombre de un archivo, directorio o carpeta. Por ejemplo, las instrucción cambia el nombre DATOS.DOC por HOY.DOC Ñame “DATOS.DOC”As “HOY.DOC” (URDIR Devuelve la unidad y ruta actual. La siguiente instrucción almacena en Label 1, la unidad y ruta actual: Labell=CURDIR CHDIR Cambia la unidad y ruta actual. Por ejemplo, la instrucción cambia a una nueva ruta: C:Windows. MKDIR Crea una nueva carpeta. Por ejemplo la siguiente instrucción crea la carpeta Agenda: MKDIR “C:AGENDA” RMDIR Borra una carpeta, siempre y cuando se encuentre vacía. Por ejemplo: RMDIR “C:AGENDDA”. Boira la carpeta AGENDA. CHDRIVE Cambia de unidad de disco. Por ejemplo, la siguiente instrucción cambia a la unidad A:. CHDRIVE “A:”. G r u p o E d it o r ia l Megabyte 331
  • 168.
    VISUAL BASIC comodebe ser... CONTROL DE ERRORES La instrucción ON ERROR Esta instrucción permite detectar errores durante la ejecución de los programas. Cada vez que hay un error se puede llamar a un grupo de instrucción para poder controlarlo y evitar que nuestro programa deje de funcionar en un momento inesperado. Tiene 3 sintaxis: On Error GoTo Nombre_deIaIínea Con esta sintaxis, cada vez que se produce un error se ejecutan las instrucciones que están después del nombre de la línea. El nombre de la línea debe terminar con dos puntos (:). Antes del nombre de la línea debe escribir la instrucción EXIT SUB On Error Resume Next Con esta sintaxis, cada vez que se produce un error la computadora ejecuta la siguiente instrucción después de la línea de ocurrió el error. On Error GoToO Con esta sintaxis, se desactiva el control de errores. EL OBJETO ERR El objeto ERR contiene información acerca del error que se a producido. Su propiedades más importantes son: DESCRIPTION.- Devuelve el mensaje que muestra el sistema por el error producido. NUMBER.- Devuelve el número del error. SOURCE.- Devuelve el nombre del objeto donde ocurrió el error. EJEMPLO DE CÓMO CONTROLAR LOS ERRORES Prívate Sub Command l_Click() Dim NUMERR, R As Integer Rem ACTIVA EL CONTROL DE ERRORES On Error GoTo VERIFICA Instrucciones ExitSub VERIFICA: NUMERR = Err.Number Select Case NUMERR Case 6: MsgBox "DEFINE CORRECTAMENTE TU VARIABLE", 16, "ERROR" Case 11: MsgBox "NO SE PUEDE DIVIDIR ENTRE CERO", 16, "ERROR" Case 61: MsgBox "EL DISCO NO TIENE ESPACIO LIBRE", 16. "ERROR" Case 71: MsgBox "INSERTE CORRECTAMENTE EL DISCO", 16, "ERROR" Case Else MsgBox "HA OCURRIDO UN ERROR NO CONTROLADO EN:" _ + Err.Source+Chr( 13)+"Número de Error:"+Str(Err.Number) _ + Chr(I3)+"Descripción :"+Err.Description + Chr(13) End Select End Sub 3 3 2 G r u p o E d i t o r i a l M e g a b v t e < ||¡ |¡ | CAPÍTULO VIII: Manejo de Archivos % ALGUNOS ER R O R ES IN TER CEPTA B LES Número Descripción 5 El argumento o la llamada al procedimiento no son válidos 6 Desbordamiento 7 Sin memoria 9 El subíndice está fuera del intervalo 11 División por cero 13 No coinciden los tipos 20 Resume sin Error 35 No se ha definido Sub, Function o Property 47 Hay demasiados clientes de la aplicación DLL 52 Nombre o número de archivo incorrecto 53 Imposible encontrar el archivo especificado 54 Modo de archivo incorrecto 55 El archivo ya está abierto 57 Error de E/S de dispositivo 58 El archivo ya existe 61 Disco lleno 62 La entrada de datos ha sobrepasado el final del archivo 63 El número de registro es incorrecto 67 Hay demasiados archivos 71 El disco no está listo 74 Imposible cambiar el nombre con una unidad de disco diferente 75 Error de acceso a la ruta o al archivo 92 El bucle For no está inicializado 94 El uso de Nuil no es válido 321 Formato de archivo no válido 380 Valor de propiedad no válido 381 El índice de la matriz de propiedades no es válido 382 Set no se admite en tiempo ae ejecución 383 Set no se admite (propiedad de sólo lectura) 385 Se necesita un índice de matriz de propiedad 387 Set no está permitido 393 La propiedad no se puede leer en tiempo de ejecución 400 El formulario ya está mostrado. Imposible mostrar en forma modal 402 Primero debe cerrar u ocultar el formulario modal superior 422 No se encontró la propiedad 423 No se ha encontrado la propiedad o el método 424 Se requiere un objeto 438 El objeto no acepta esta propiedad o método 449 El argumento no es opcional 450 Número de argumentos erróneo o asignación de propiedad no valida 451 El objeto no es una colección 459 Este componente no acepta eventos 482 Error de impresora 483 El controlador de impresora no admite la propiedad especificada 484 Problemas al obtener información de la impresora desde el sistema; asegúrese de que la impresora está configurada correctamente 485 El tipo de imagen no es válido 485 No se puede imprimir la imagen de formulario en este tipo de impresora 520 No se puede vaciar el Portapapeles 521 No se puede abrir el Portapapeles 735 Imposible guardar el archivo en TEMP 744 No se encontró el texto de búsqueda 31001 Sin memoria 31027 Imposible activar el objeto G r u p o E d it o r ia l Megabyte 3 3 3
  • 169.
    A t VISUALBASIC como debe ser... RICHTEXBOX Es sim ila r a una caja de textos. Se diferencia porque este control perm ite asignar un form ato a todo o parte del texto y tiene otras características más avanzadas como por ejem plo, perm ite a brir y grabar archivos con form ato R TF y texto A S C II norm al usando los métodos LoadF ile y SaveFile. A parte de las propiedades de la caja de texto, tiene las siguientes: BULLETINDENT Indica la sangría con la que debe trabajar. DISABLENOSCROLL Acepta un valor lógico que indica si están activadas las barras de desplazamiento. RIGHTMARGIN Perm ite in d icar el margen derecho. SCROLLBARS Indica si el control debe tener las barras de desplazamiento. SELALIGNMENT A line a el texto asignándole los valores N u il (ninguna), 0 (izquierda), 1 ((derecha) y 3 (centro). SELBOLD A c tiv a o desactiva el estilo N egrita al texto seleccionado. SELITALIC A c tiv a o desactiva el estilo C ursiva al texto seleccionado. SELSTRIKETHRU A c tiv a o desactiva el estilo Tachado al texto seleccionado. SELUNDERLINE A c tiv a o desactiva el estilo Subrayado texto seleccionado. SELBULLET A c tiv a o desactiva el estilo con V iñeta texto seleccionado. SELCOLOR A signa un co lo r al texto seleccionado. SELFONTNAM E A signa un tipo de letra al texto seleccionado. SELFONTSIZE A signa un tamaño de letra al texto seleccionado. SELPROTECTED Acepta un va lo r lóg ico que indica si el texto seleccionado esta protegido, es decir, no puede m odificarse. 334 G r u p o E d it o r ia l Megabyte CAPÍTULO VIII: Manejo de Archivos MÉTODO LOADFILE Abre un archivo con form ato RTF o de tip o texto. Su sintaxis: R ic h T e x tB o x .L o a d F ile “ru ta y n o m b r e ”, Valor. El va lo r indica el tip o de archivo: 0 RTF y 1 Texto. MÉTODO SAVEFILE Graba un archivo R TF o texto. Su sintaxis es s im ila r a LoadFile. Aplicación de Ejemplo La siguiente aplicación que perm ita a brir y grabar archivos. ^ ^ rchÍ vo s H 0 E 3 I |j ÁBRÍR j | GRABAR | CONTENIDO DEL ARCHIVO EL SID A SID A significa Síndrome de Inmuno Deficiencia Adquirida y es una enfermnedad que hasta ahora no tie n e cura, por lo tanto, trae como consecuencia la muerte sin tomar en cuenta la edad, el color, la raza, el sexo ni el nivel económico de una persona. El SIDA es la etapa mas avanzada de la infección producida por el Virus de Inmunodeficiencia Hum ana (VIH). Esto quiere decir que antes que una persona tenga S ID A primero tiene el virus VIH y este virus se contagia principalmente por tener rela c io n e s se x u a le s sin p ro te c c ió n con una persona infectada con este virus del VIH. La protección mas usada es el CONDÓN. La persona que tiene el virus VIH que es el principio del SIDA no tiene ningún síntoma ni ninguna forma de saber a simple vista (sólo a través de la prueba de Elisa) que tiene el virus, por eso es muy importante, si vas a tener relaciones sexuales, el u so d e l C o n d ó n el cual también te protege de las enfermedades de transmisión sexual (ETS) como Sífilis, Gonorrea, Herpes, Chancro Blando, Candidiasis, Verruga, etc. Muchas personas dicen que hacerlo con condón "no es igual”, pero tu tienes que saber que una v id a con SID A tam poco e s igual y es preferible, si no tienes un condón " p e r d e r " una relación sexual o una noche de placer, que perder la salud y sobre todo la VIDA. "N o olvides que tu familia te q u iere y te necesita'* DESARROLLO D ibu je en un fo rm u la rio dos botones de comandos, una etiqueta, un control R ichTextBox y un control Com m ondialog INSTRUCCIONES DEL BOTÓN ABRIR. Pri vate Sub Command l_Click() On Error GoTo PRUEBA CommonDialogl .Filter="RTF (*.RTF)|*.RTF |TEXTO (*.TXT)|*.TXT" CommonDialogl .ShowOpen RichTextBox 1 .LoadFile CommonDialog 1 .filename, CommonDialog 1 .FilterI ndex-1 Exit Sub PRUEBA: MsgBox "NO SE PUEDE TENER ACCESO A L ARCHIVO", 64, "ERROR" End Sub Las instrucciones del botón Grabar son similares a la de Abrir, sólo cambie la propiedad ShowOpen por ShowSavey el método LoadFilepor SaveFile. H ü j ¡ ^ G r u p o E d it o r ia l Megabyte 335
  • 170.
    VISUAL BASIC comodebe ser. . . FUNCIONES API A P I sign ifica Interfaz de Program ación de Aplicaciones y son un conjunto de funciones que tiene el W indow s que nos ayudan a desarrollar aplicaciones o tareas de una más rápida y sencilla. Para u tiliz a r una funció n A P I de W indow s debe agregarla al m ódulo de su aplicación. Para e llo siga los siguientes pasos: 1. De la opción Com plem entos e lija V iso r A P I. Si no encuentra la o p ció n V is o r A P I, ingrese a A d m in is tra d o r de Com plem entos y active la casilla de V B A P I Viewer. 2. De la ventana que se visualiza al ingresar a la opción V is o r A P I e lija A rc h iv o y luego Cargar A rc h iv o de Texto. Complementos Adm inistrador visual de d a to s ... Diseñador de in form es... Adm inistrador de com plem entos., Visor API Comptern e n t os disp on ibles : : M ic ro s o ft D o la T o o li : VB A ctiv e X C o n tro l In te rfa c e W iza rd 1 VB A ctiv e X D ocu m e nt Mwji a tio n W iza rd I VB A d d In Toolbar • tT-7.r i VB A p p lica tio n W iza rd j VB C lass Bui!d«»t U tility ; v o D a ta F orm W iza rd j VB P ro p e rty P age W iza rd ) vm T-SQt. D eb ug ge r : VB W iza i d M anager f A c e p ta r | 3. Ingrese a la carpeta W inapi y seleccione el archivo W in32api. Seleccione un archivo de texto API ßuscaren: | _ j Vb __i Clisvr C J samples _ ] Graphics i_ J Setup _ J Help __1 setupkit _ )0 d b c C_] Template _ J report -J T s q l _ j Repostry __1 vbonline Nombre de archivo: ¡f" Archivos de tipo: ¡Texto TXT) “ 3 _ 1 Winapi _ f J Wizards License Redist m a l Seleccione un archivo de texlo API hombre de archivo: |f Archivos de tipo: [Texto (‘ TX T) Se muestra una ventana con 5 botones de comandos: BUSCAR : Perm ite buscar a una función. AGREGAR : Agrega a la lista la fu n c ió n seleccionada. QUITAR : Q uita una fu nció n de la lista de funciones seleccionadas. COPIAR : C opia la fu nció n seleccionada en el portapapeles. INSERTAR : Inserta la fu nció n o funciones seleccionadas en la ventana de declaraciones el form u la rio activo o del m ódulo. MUY IMPORTANTE Estas funciones deben estar en el m ódulo de la aplicación. Para e llo adicione un m ódulo antes de realizar los pasos indicados. w 336 G r u p o E d it o r ia l Megabyte < CAPÍTULO VIII: Manejo de Archivos APAGAR LA COMPUTADORA AUTOMATICAMENTE ......... Función ExitWindowsEx Es una función A P I que perm ite apagar en fo rm a automática la computadora a través de una aplicación. Su sintaxis es: E xitW in d o w sE x (V A L O R 1 ,V A L O R 2) E l valor2 siempre es cero (0). Los principales valores que puede tener V a lor I son 1,2,5 y 6 : 1 Apaga la com putadora pero si tenemos un archivo sin grabar, pregunta si deseamos grabarlo. 2 R ein icia liza la com putadora pero si tenemos un a rchivo sin grabar, pregunta si deseamos grabarlo. 5 Apaga la com putadora sin preguntar si deseamos grabar un archivo que tenemos sin grabar. 6 R einicializa la computadora sin preguntar si deseamos grabar un archivo que tenemos sin grabar. APLICACION DE EJEMPLO i,. F U N C IO N A P I MZi REINICIALIZAR LA COMPUTADORA APAGAR LA C OM PUTADORA C rear una nueva aplicación y adicionarle un m ódulo (Proyecto Agregar M ó d u lo ), luego inserte en dicho m ódulo la fu nció n A P I E xitW in d o w sE x y escriba en los botones de comandos las instrucciones correspondientes. Botón Reinicializar la Computadora Prívate Sub C o m m a n d l_ C lic k () D im N As Integer N = E xitW in d o w s E x (6, 0) End Sub Botón Apagar la Computadora Prívate Sub C om m an d2 _C lick() D im N As Integer N = E xitW ind ow sE x(5 , 0) End Sub NOTA: Estas in stru ccio n e s se pueden u tiliz a r cuando el u suario no ingresa correctam ente el Password o Clave. G r u p o E d it o r ia l Megabyte
  • 171.
    f a VISUALBASIC como debe ser... C R EA R D ISC O S DE INSTALACIO N Visual Basic crea de una manera m uy fá cil y rápida los discos de instalación de cualquier aplicación que usted desarrolle con la finalidad que la aplicación la instale y ejecute en cualquier com putadora sin necesidad que ésta tenga el V isual Basic. Para crear los discos de instalación grabe correctamente su aplicación y salga del V isual Basic, luego de su ventana de acceso e lija: H erra m ien ta s de M icrosoft Visual B asic 6.0A sistente p a ra E m paquetado y D istribución. _ jj favoritos l_ j documentos Configuración ^ fiuscar & Ayuda J 3 Ejecutar.. JT J Internet txptorer * Microsoft Ollice 2000 Profesional ► j r j Microsoft Office Took ► ^ Microsoft Visual Studio SO Herramientas de Microsoft Visual Studio S O L ÍJ Herramientas empresariales - ä Microsoft Web Pubfcshing ► de Microsoft Visual SL.. ■ _Tj PLATINUM WotkView fot Internet Explorer ► Microsoft Visual SourceSafe *J* Apagar el sistema. |§É!"í£!í?r V ™ - 3 Power 8 0 ^ > .3 Servicios en línea > - i j Sybase . T j The Hacker Antivirus - i j WinZip j j Explotador de Wndows '¿ i- Internet Explorer MS-OOS Outlook Express ► Microsoft Visual Basic S O ► Microsoft Visual FoxPro 6.0 Se visualiza la ventana de Asistente de Empaquetado y D istrib u ció n donde se debe hacer C lic en el botón E xam inar para buscar y seleccionar el proyecto al cual le va a crear los discos de insta­lación. El proceso de instalación consiste en: ■3 ■-J M OM'*»» .’-áJ 1. Empaquetar la aplicación. Para ello haga clic en el botón Empaquetar. Si no ha creado el ejecutable (*.E X E ) para la aplicación se visualiza el siguiente mensaje: Asistente de empaquetado y d is trib u c ió n f) Para poder continuar, el Asistente requiere el archivo ejecutable 'Horarios.EXE' para este proyecto. Haga clic en Examinar para buscar el archivo o en Compilar para compilar el proyecto. ! Compilar | Cancelar Haga c lic k Compilar y siga las instrucciones del Asistente. 338 Grupo E ditorial M egabyte^ CAPÍTULO VIII: Manejo de Archivos En tipo de Empaquetado e lija Paquete de Instalación Estándar y en opcio­nes de Cab. E lija M ú ltip le s A rch ivo s Cab. , Ot>í el t*« ie paquete ** desea c*ear ‘ - > 4 ’ J ! ® A ’’’ ' ■ Î Jifa de empèqüRôdo: 4 Amtente de empaquetado y «Sstrfcuctán - Opciones de cab pars el paquee. Si va a á ñ itu k su apicación en dwjjetes «b e oea» múltiples «c b vw ,:ab y especftcsr un tamaño oe Paiola cpqón apropíadí. Opdones de .cab Ur único archivo .cab (* archvcs .cat< lanario de ardv/o .cab: fTíre 3 Ayjda { Cancefcr | <Antcror | Squgte > | 1. Distribuir la Aplicación Para ello, haga c lic k en el botón Distribuir y siga las instrucciones del Asistente. En M étodos de D istrib u c ió n E lija Disquetes y en Unidades de Disco e lija la unidad donde va a crear los discos de instalación. Asistente de empaquetado y distribución - Método de distribución ; Eifa el tpe de dístróución qjc desea reafc». , Métode de dstrouoór : Pufcäcaöcn en Web Qwscipdóf.: a J f ír b j un paquete er varios d»»jetes. I J Ayuda i Cancela- | < Açÿerer j rí<giighte > j { | •jp Asiitente de empaquetado y distribución • Unidad de duquete a?a una uneW de cüsruete er, la bta de abafe ” Fcmatear antes óe coear Obelar j <Antero- iOjjjrte > | A l finalizar, Visual Basic le pedirá que inserte los discos de usará com o instaladores. A siste n te de em paquetado y d istrib u ció n E l 1 J In s e rte el d is c o 1 de 2 p a ra in icia r la c re a c ió n de disqu etes. A c e p ta r j j C a n ce la r j G r u p o E d it o r ia l Megabyte 339
  • 172.
    v É tam VISUAL BASIC como debe ser. CONTROLACTIVEMOVIE <> Permite ejecutar archivos de m ultim edia, como por ejemplo los archivo *.A V I que son archivos que tienen videos grabados. Un ejem plo de archivo * .A V I es el que usted visualiza cuando copia un archivo u tilizando W indow s: m * n i 3 4 m m i m Sus principales propiedades son: AUTOREWIND Indica si después de term inar el vídeo retrocede al in icio . AUTOSTART Indica si se visualiza automáticamente el vídeo cuando le asignamos el nom bre del archivo. FILENAME Acepta la ruta y el nom bre del archivo de vídeo que deseamos visualizar. FULLSCREENMODE Indica si el archivo debe ocupar toda la pantalla al ejecutarse. PLAYCOUNT Indica la cantidad de veces que se debe visualizar el archivo. APLICACIÓN DE EJEMPLO: La siguiente aplicación perm ite seleccionar un vídeo y visualizarlos. Para e llo dibuje en un fo rm u la rio en blanco; un control A c tive M o v ie , un botón de comandos y con control C om m onD ialog. En el botón Seleccionar un archivo, escriba lo siguiente: % VISUALIZAR VIDEOS Hü SELECCIONAR UN ARCHIVO Private Sub Commandl_Click() C om m onD ialogl.Filter = “Videos (*.Avi)|*.avi|Todos (*.*)|*.*” CommonDialog 1 .ShowOpen Acti veMoviel .filename=CommonDialog 1. Filename End Sub 340 G r u p o E d it o r ia l Megabyte< CREACION DE ARCHIVOS DE AYUDA L xisten básicamente dos tipos de archivos de ayuda. Los archivos simples, que sólo muestran el texto de ayuda en una sola ventana y los archivos con ventanas vinculadas que consisten en llam ar a una ventana desde otra ventana. i w. Si«» _" __ __ ...I ... '.....I':}'"“: ......... O P C IO N E S O K I. M I.N l’ P R IN C IP A !. - i I l'UODl'CTOS CAPÍTULO VIII: Manejo de Archivos ^ ¡ ¡ ¡ ¡ ¡ ¡ 1 M ‘ > v iM tf:r.rú im« . -í (« s s j - . í k ti; í t s • I •» yj". a* I.-, -i.il- y Vi i-í v r - : - : ¿.r.v.vitt »ri-krt-: y Mi ItlH ÍK S >” • 5 »• tpcifn«.# »<;•= Mir¡ r...v ,r.ívm,ji¿n «t-i V , I ¡.i :.a «i i.: i.u,- j .s . 21 (■ r.. 2u'-t •: I l 11 ITARIOS W Miciosoít Woid - TUTO R rtf ^ àrchiv»} cckión ¥er Asertar Eproiaío He/r«nfeTtas tabla Ventana 1 - Iffl X| : & y 4 ? ® 4 * ffl E ® * 12 * H X g ÜË s 31 * 1= O PCIO N E S DEL M E N I PR IN CIPA L PR9PVÇT9S MOVIMIENTOS BEBBm UTILIIASIoa p|3 al « I ____________________ I lT G I Sfc. 1 1(5 fi :.9 on i r . 6 C d 12 Para el primer caso sólo necesita crear un documento en Word con el texto que c lesea mostrar en la ayuda y guardarlo con un formato RTF (Archivo/Guardar Come >) y luego compilar este documento con el programa M icrosoft H elp WorkSItop que es un utilitario del Visual Basic que debe instalar en su computadora. En segundo caso, debe realizar lo siguiente: Las opciones que va a e xp lica r y que van a lla m a r a las otras ventanas de ayuda se deben de separar del resto del texto de ayuda por S a lto d e P ágina M a n u a l (Pulsando C O N T R O L + EN TER ). Cada tema a e xplicar también debe de estar en una página diferente. OPCIONES DEL MENU PRINCIPAL PRODUCTOS MOVIMIENTOS REPORTES UTILITARIOS PRODUCTOS Esta opción permit« nininitrar toda la infamación de lo; productos que fe ccttnercialmn en la empresa. Permite por ejemplo, ingresar productos nuevos, linar proiictos por laboratorio, cambiar precios, etc. MOVIMIENTOS Esta opciói permite regiarar las carçras que se realisan por cada producto,registrar sus veitas, devoluciones, controlar y visualuar el stock inventariado y valoreado, etc. REPORTES Provee de la opciones que brindan iifonmcion útil y oportuna al usuario como por ejemplo D producto más vendido, el producto menos venduto, el total de ventas diarias, semanales,mensuales, etc. UTILITARIO Brinda al usuario las herramientas mas H itadas como por ejempb : Calculadora, Configuraciones (Panel de Ccntrol), maitenimiento de usuarios, es decir, eliminarlos, cambiar su clave, etc. G r u p o E d it o r ia l Megabyte m i
  • 173.
    VISUAL BASIC comodebe ser. . . Para crear el vínculo entre la opción elegida y el texto de ayuda a visualizar, p rim e ro debe separarlas p or cam bio de página m anual (C O N T R O L + E N T E R ), com o se muestra en la fig u ra anterior, luego a cada tema de ayuda debe insertar una nota al pie de página con un carácter y un nom bre de enlace para que pueda vincularse con las opciones de la prim era página. Por ejemplo: ENLAZAR LA OPCIÓN PRODUCTOS CON EL TEMA PRODUCTOS 1. U b ica r el cursor inm ediatam ente después del títu lo del tema (segunda página) y e le gir In se rta r/N o ta a l P ie. Se muestra una ventana donde debe escribir el sím bolo #. Luego Aceptar. En la ventana que visualiza escriba el nom bre que va a tener tema para que se pueda vincu lar con la opción (Ira . página) y luego haga clic en cualquier parte del documento para cerrar la ventana de N ota al Pie. En el ejem plo el nom bre es PR O D U C TO S (Ud. puede poner el nombre que desea) Ñ olas al pie y ñolas al lin a l Insertar <• {¡iptaafpie Nota al final Final de página Final del documento Numeración á.utoriumeración 1, 2, 3, . Marca personal: |* •producto) Pag. 2 Sec. 1 2/5 A2Scn Ih Pág. 2 5«, 1 Z|5 A 25cm l Haga el m ism o procedim iento para el resto de temas de ayuda. 2. Inm ediatam ente después de cada opción de la prim era página asígnele el m ism o nom bre asignado a cada tema de N ota al Pie de Página (paso anterior), luego asígneles el form ato de doble subrayado, y sólo al nombre asignado a cada opción, asígneles el form ato oculto. Îÿ ê tW ÿn jiwft« twmata «its YeQiana t - Ui,*! üaPH Äay- ©,<*'«>- & a s :® -rg n * . - • h X s W S * SÉ JE • •••■: ~ 1-7 7 : OPCIONES DEL M E N T PRINC IPAL REPQRXfiSRErOKTfS I II I IIARK>SUTI Ll.TABIQS ______________ ] f .g 1 Ayuda de Windows ■ ■ ■ H B T Í dTxI Archivo Edición Marcador Opciones Ayuda Contenido] , j | Imprimir | O P C IO N E S D EL M EN U PR IN C IPA L PRODUCTOS MOVIMIENTOS REPORTES UTILITARIOS NO TA : • El nombre de cada opción usted lo elige, pero sólo utilice letras y sin espacios blanco. • Después de estos pasos, grabe el documento con formato RTF y compílelo. 342 G r u p o E d it o r ia l Megabyte" CAPITULO VIII: Manejo de Archivos % Verifique que tenga instalado en su computadora el u tilita rio W ork Shop del V isual Basic. Cuando usted activa este program a se visualiza la siguiente ventana in icia l. De la opción F ile de esta ventana , e lija N ew y luego H elp Project y pulse el botón O K . Visualizará una ventana de diálogo donde debe escribir el nombre de su archivo de ayuda a crear. Después de ind icar el nom bre del archivo a crear, se visualiza una nueva ventana: I ?,• M ic ro to f! H e lp W o rk s h o p P i f i l E 3 I Tilo Y « w J e * Tycrfs tJd p j ^1 1 l_ J « ix J Ready CAP NUM <5, M ic ro s o ft H e lp W o ik s h o p - (h o la h p i) % g i ¿Je Y¡cv* V/ítkJow Tost Tyorfs Help 'çg |q |> i _ J a r m Help Fio: j hola hip IO P T IO N S 1 LCIÜ-0x80<s 0x0 0x0 Esporto! ÍM*x¡c.sno) FiCPORT «Y#« S ave and ConipJe I Por ejem plo, en la siguiente ventana se ha adicionado un docum ento *.R T F llam ado T U T O R .R T F en un archivo de ayuda llam ado también T U T O R . H L P De esa ventana haga c lic k en el botón 5 a ve a n d C o m p ile para grabar y co m p ila r el archivo de ayuda. Si no ha com etido ningún error se visualiza una pantalla sim ila r a la sigu ien te:------ T * TUTO R.hpi Help File: |TU T0 R .h lp LCID«0x280a 0x0 0x0 ; Español (Perú) R E P O R T -Y e s Save and Compile I £*e fcá» yw ^¿Klaw J«:' T¡yo*» *i a « i y iti CreaU»0 me b n ip Ute i u H W .M p . ~ Processing C:JJVrUTOH.rtl Hr.unh/iiiij keywords... Addjni) bitmaps... Topics .lump« Keywords Created C:JJtUTOH.hlp. l . O l ì bylcs Compile time: 0 minute«. 0 seconds 0 note a. II wairriflgii De esta manera se ha creado un archivo de ayuda el cual se puede llam ar desde c u a lq u ie r p a rte de n u e s tra a p lic a c ió n u sa n d o el a rc h iv o W IN H E LP .E X E . Por ejem plo, la siguiente instrucción ejecuta el archivo de ayuda llamado T U T O R .H L P que se encuentra en C:JJ y archivo W IN H E L P se encuentra en C :W IN D O W S . S h e ll "C :W IIW D O W S W IN H E L P C :J J T U T O R " , 1 N O T A : Después de ejecutar el archivo de ayuda, cambie el formato de Doble Subrayado por Subrayado Simple a las opciones, luego vuelva a compilar y ejecutar el archivo de ayuda para observar el nuevo comportamiento de este archivo. G r u p o E d it o r ia l Megabyte 343
  • 174.
    CAPITULO IX viV iiD a ta :¡ Ventana Ayyda Abrir baso de dato:,.. 1 C:AfdNvos de pfogramaND ev5tudioWBHAGENDA.mdb 2 C VArchivos de prograrnaSDevStudioWBMI rutto 3 CAAichivos de progr amaVD e vS tudioWB B tblio mdb FERNANDEZ' FERREYROS GRANADOS INOÑAN LIMO . LINARES _ZJ sSituación <• Regular r 1/2 Beca C Beca C Otro Pensión filó 2 j Fecha de Inscripción 116/08/1999 -i-j Otros V Traslado Observaciones A mejorado notablem ente en los últimos tie s meses de estudio. Nuevo Modificar Eliminar Grabar Cancelar Salir MANEJO DE BASE DE DATOS
  • 175.
    I Ina BASEDE DATOS es un conjunto de inform a ción ú til organizada de iiiki form a específica referente a un tema o propósito concreto. Por ejem plo: l.i inform ación que se maneja en un In stitu to, en una farm acia, etc. La 11111 il inación almacenada en una base de datos se organizada principalm ente mediante tablas. TABLA I la unidad básica de alm acenam iento de una base de datos y perm ite tener la inform ación organizada. Ejem plo: I a base de datos Institu to se puede organizar en las tablas: A lum nos, Pagos, Notas, Profesores, Cursos, etc. t Ina tabla almacena los datos en registros (fila s ) y campos (colum nas). Los ■ impos son los datos que deseamos alm acenar en una tabla. E je m p lo de una Tabla: ALUMNOS. N 2 NOMBRE CICLO TURNO 01 Cdll idles :: ,: M '2 Karina Rioia v _______ T 03 Liliana Alarcón V M 04 Jorqe Ríos IV N 05 Tito Ramírez II T REGISTRO DE DATOS 11ii registro contiene in fo rm a ció n que pertenece a cada entrada de la base <lo datos. E jem plo de un R egistro 1 03 | Liliana Alarcón 1 V 1 M ~ CAMPO DE DATOS l iii campo es una unidad de alm acenam iento para guardar un elem ento de «latos sim ple en un registro. Ejem plo: NOMBRE____________ Carlos Morales Karina Rio-ja___ Liliana Alarcón Jorge Ríos_____ Tito Ramírez ESTRUCURA DE UNA TABLA I i estructura de una tabla consiste en los campos que contiene, su tipo y l< ilicitu d de cada uno de ellos. I I Tipo de Campo indica qué tipo de inform ación se va a almacenar en cada ■ impo, por ejemplo: textos, números, fechas, etc. La longitud se utilizan para indicar cuántos caracteres se pueden ingresar como m áxim o en cada campo. IN ti ejemplo el campo nombre de un alumno se define de tipo Texto y su longitud I m i. ■< le ser 30 de caracteres. Algunos tipos de campos ya tienen una longitud definida. G r u p o E d it o r ia l Megabyte 347
  • 176.
    v i su a L BASIC como debe ser... M U Y IM PO R TA NTE £ n un centro de estudios norm alm ente se indican las tablas estándares o b á sic a s que d eb en ir en una b a se de da to s p o rq u e la b a se de d a to s c a si siem p re va ría n de una institución a otra. Si U d., es estudiante es m uy im portante que se organice solo o con sus compañeros de estudios para visita r a empresas o entrevistar a diferentes profesionales para saber exactamente la inform a ción que manejan y así diseñar correctam ente las bases de datos y tablas. Por ejem plo: Para saber la inform ación que maneja un colegio se debe hacer una entrevista al director. Para saber la in fo rm a ció n que maneja una d istribu ido ra u otra empresa se debe hacer una entrevista a su adm inistrador o persona responsable. Para saber los campos que se deben in c lu ir en una tabla pacientes es m ejor hacer una entrevistas a una enferm era o m édico. Para saber los campos que se deben in c lu ir en una tabla medicam entos es m e jo r hacer una entrevista a un Q u ím ico Farm acéutico, etc. En las entrevistas sólo se debe investigar los campos porque el tip o de cada cam po y su lon gitu d lo debe hacer U d., de acuerdo a su experiencia y a los tipos de campos que conoce. “ E L EXITO D E L SISTEMA QUE DESARROLLES DEPENDE D E L DISEÑO CORRECTO D E LA BASE DE DATOS ” C R E A C IÓ N D E U N A B A SE D E DA TO S V isu al Basic puede m anejar base de datos de diferentes form atos como F oxpro, E xcel, etc. Si desea crear base de datos del m ism o form a to de V isual Basic lo puede hacer usando el m ism o V isual Basic o el Access porque tienen el m ism o form ato (* .M D B ): ápHpl> 348 G r u p o E d it o r ia l Megabyte f i l i l i CAPITULO IX: Manejo de Base de Datos % CREAR BASE DE DATOS USANDO VISUAL BASIC De la opción A dd-Ins (C om plem entos) de la Barra de M enú, e lija Visual Data M anager (A d m in istra d o r V isual de Datos). Observará la siguiente pantalla: Aiehivo i Ventana Ayuda S p i B j [ i f j g l l l J - I ~ De la opción F IL E (A rc h iv o ) de la pantalla anterior elija N E W (Nueva), luego M IC R O S O F T AC C ESS y al fin a l V E R S IO N 7.0 B M D . V e n ta n a A y y d a ► I M 'c ío s o N Ace«® « * I M D B V e rs ió n ¿¡-O... M D B V e is ió rt 2 0... | im p a c io d e trabajo, . f- rrQíes . EoxP ío ► * P a ra d o x ► Q D B C A rc h iv o s d * te xto C om pa cta r M D B . Fkíparar H D D .. IC .S A r c h iv o s d & p io gram a S D e v S tu d io W B SAG E N D A. h id b j j C. Sài c h iv o s d e proç»amaSD é vS túdióS V B MI. m db 3 C A A ic h iv o s d e p to g ia m ^ S D e v S tu d ío S V B ih h o m db Jjalir U s to U s u a rio : ad m ln Le pedirá el nom bre de la base de datos que desea crear. Escriba el nombre de la base de datos a crear y luego haga c lic k en G U A R D A R . l i l i l í * G r u p o E d it o r ia l Megabyte 349
  • 177.
    Ä H %VISUAL BASIC como debe ser... Después de ingresar el nom bre de la base de datos que desea crear se visualiza la pantalla siguiente, (en el ejem plo la Base de datos de llam a Agenda). A rchivo Utilidad V e n ta n a Ayyd a <3*1 1 1 MU Borrar J ________g u a rd a r________I jü *» * "i* _ _ _ _ _ _ _ Usuario: admin En la ventana Properties, haga c lic k con el botón derecho y e lija la opción N ew Table (nueva tabla), se visua liza la pantalla: Esliuctura de la tabla fjo m b re de la ta b la : li ¡ " i , ñ ¡j ' r ’ ; V - y s ta de cam pos: Nom bre: Tipo: r . Tamaño: r O rden: r 1 Perm itir lo ngitud cero Posición: I N ecesario T e x to de validación: 1 Regla de validación: 1 A gregar campo | Eljminar campo 1 Valor p re d e te rm in a d o : I Lista de índices: A g re g a r índice r Campos: | C errar Escriba el nom bre de la tabla (Table Ñ am e) que desea crear dentro de la base de datos y para empezar a ingresar los campos haga c lic k en A dd Field (A gregar Cam po), se visualiza la pantalla siguiente: G r u p o E d it 350 o r ial Megabyte ,|l¡§¡í>f|| Por cada campo d e fin id o haga c lic k en el botón O k (A ceptar) y al fin a li­zar liaga c lic k en el botón Cióse (Cerrar) para cerrar la ventana. Puede configurar a cada campo para que V isual Basic perm ita o no aceptar campos con lon gitu d cero, es decir que se ingresen valores o no en el campo al adicionar registros. M U Y IM P O R T A N T E D espués de h a cer click en el botón C ióse debe tam bién de h a cer click ' n el botón B U IL D T H E T A B L E (G en era r la Tabla) p a ra que la tabla t/uede co n stru id a . I Ina vez construida la tabla, haga c lic k con el botón derecho en el nombre ilc la labia construida y e lija la opción O P EN (A b rir) para ingresar o dar m .m tenim iento a los registros. La pantalla que visualiza depende de los bo iones de la barra Estándar (Debajo del M enú) que tenga activados. I I I er. Botón abre la tabla com o Recordset tip o Tabla. I I 2do. Botón abre la tabla com o Recordset tip o Dynaset. I I 3er. Botón abre la tabla com o Recordset tipo Snapshot. OH, 11' IX) RECORDSET DE TIPO HOJADE REPUESTADINAMICA I ii objeto Recordset de tipo hoja de respuestas dinám ica es una variedad 11> i ib jeto Recordset que puede utilizarse para m anipular datos de una o más i ililas subyacentes. E l objeto consiste en un conjunto dinám ico de registros iiiic puede contener campos 7de una o más tablas o consultas de una base di' datos y que puede ser actualizable. < m il lO R E C O R D S E T D E T IP O D E RESPUESTA IN S T A N T A N E A I ii i ibjeto Recordset de tip o instantánea es un conjunto estático de registros • |in* puede u tiliz a r para exam inar datos de una o más tablas subyacentes. I ii objeto Recordset de tipo instantánea puede contener campos de una o m i. labias de una base de datos, pero no puede actualizarse. < M tJK T O R E C O R D S E T T IP O T A B L A l ii objeto Recordset de tipo tabla es una representación en el código de una i ilila base que puede utilizarse para agregar, m o d ific a r o e lim in a r registros <l< una labia. En la m em oria sólo se carga el registro actual en cada momento. I’.u.i determ inar el orden de los registros del objeto Recordset se u tiliza un im lii c predefinido. Grupo Editorial Megabyte 351
  • 178.
    yam Él> VISUALBASIC como debe ser. fîîlïï Por ejem plo al activar (haciendo C lic k ) el 1er. botón (Recordset tipo Tabla) y el 5to., botón se muestra la siguiente pantalla. I m Tabla AMIGOS _ | 0| x | Agregar | Editar | Eliminar | Buscar J Filtrar Cerrar índice: | “ 3 Nombre del campo: Valor (F4=Zoom) NOMBRE: | DIRECCION: DISTRITO: ! TELEFONO: EDAD: 1 k 1 < |CBOF)/'l ' > 1 >i AGREGAR (ADD) Perm ite ingresar registros a la tabla. Debe hacer c lic k en esta opción por cada registro que desea adicionar. A l ingresar un registro se visualizan dos opciones U P D A T E , que perm ite grabar el registro y C A N C E L , que perm ite cancelar la adición del nuevo registro. EDITAR (EDIT) Permite m o d ific a r los datos de un registro. ELIMINAR (DELETE) P erm ite e lim in a r el reg istro actual. Se visu a liza el mensaje: D E L E T E C U R R E N T R E C O R D ?. Responda S I o N O . BUSCAR (SEEK) Perm ite buscar un determ inado registro mediante un campo por el cual la tabla debe estar indexada. Se visualiza la pan­talla: KñS Parámetros do S e e k Operador : <ï- [..] r~ > - r- <~ > r- < *r¿_alor : Aceptar i Cancelar ; 1 Para indexar una tabla, haga c lic k con el botón derecho en el nom bre de la tabla y e lija la opción Desing (Diseñar). De esta manera Ud puede m o d ifi­car la estructura de la tabla e indexarla. Para indexar haga c lic k en el botón ADD INDEX (A gregar Indice), se visualiza la pantalla siguiente, escriba el nom bre del indexado y seleccione el campo o campos que desea usar en el indexado. O-arhpoS India-sido»' r.. iTït T í h n i IC» Primai io $ 7 Ú n ic o r * ' I o r imi a i n u lo s CAPÍTULO IX: Manejo de Base de Datos I ILTRAR (FILTER) Permite filtra r (seleccionar) registros de la tabla. CERRAR (CLOSE) Permite cerrar la ventana. A l activar el 2do. bo­lón (R ecordset tip o D yna set) y el 4 to ., botón se muestra la siguiente pantalla: DynasetiAM IG O S Agregar Actualizar Eliminar r r ñ n n Campo I Renovar [[.C e rra r Nombre del campo: Valor: NOMBRE: | DIRECCION: | DISTRITO: | TELEFONO: | EDAD: I í i< N lm TTïïl i'-l botón Agregar perm ite ingresar un nuevo registro y el botón A ctualizar, graba el nuevo registro. Cada vez que hace c lic k en el botón Agregar, éste se convierte en Cancelar A l activar el 2do. botón (Recordset tip o Dynaset) y el 6to „ botón se mues­tra la siguiente pantalla: HÜ! DynaseLAMIGOS Actualizar Ordenar * L o s botones perm iten G ra­bar, O rdenar, Seleccionar re­gistros y cerrar la ventana. filtrar NOMBRE I DIRECCION Ceirai [DISTRITO ITELEFONO EDAD | H H i Haga clic con el botón secundario del mouse para ver las propiedades del control Dat. H E BARRA DE DESPLAZAMIENTO h R | i / i V W i lis ta barra p e rm ite desplazarnos p o r los re g istro s a d icion ad os para visualizarlos o editarlos. Tam bién indica el registro actual y la cantidad de registros que tenemos. G r u p o E d it o r ia l Megabyte
  • 179.
    VISUAL BASIC comodebe ser. CREAR BASE DE DATOS USANDO MICROSOFT ACCESS Haga c lic k en el botón IN IC IO del W indow s y luego en Programas, luego busque y haga c lic k el archivo M ic ro s o ft Access que norm alm ente se en­cuentra en la carpeta M ic ro so ft O ffice . £ 4 Microsoft Access A l ingresar al Access se visualiza la siguiente ventana: Microsoft Access C rear una nueva base de d a to s usando Base de datos en blanco A sistente p ara bases de datos ¿ b rir una base d e d a to s existente! Más a rc h iv o s ... C :A R C H IV ~lD E V 5T U ~lV B 5Y S TE M C om pra y Venta CREDITOS C A R C H IV -1 DEVSTU~ 1 VBGOHAN A ceptar Cancelar ESTA V E N T A N A T IE N E 3 O P C IO N E S : 1. B A S E D E D A T O S E N B L A N C O . P E R M IT E C R E A R U N A N U E V A B A S E D E D ATO S. 2 . A S IS T E N T E P A R A B A S E D E D A T O S . P E R M IT E C R E A R U N A N U E V A B A S E D E D ATO S U S A N D O U N A S IS T E N T E (A Y U D A ) 3 . A B R IR B A S E D E D A T O S E X IS T E N T E . P E R M IT E A B R IR O V IS U A L IZ A R U N A B A S E D E D A T O S Y A C R E A D A . Entonces haga c lic k en el prim er botón de opción para crear una nueva base de datos y luego haga c lic k en el botón aceptar. N O T A : si se encuentra en el m enú p rin c ip a l d e l A c c e ss h aga click en la o p ­ción archivo y lu eg o en la o pción n u e v a b a se de datos. 354 Grupo Editorial Megabvte > CAPITULO IX: Manejo de Base de Datos Luego se visualiza la siguiente pantalla: m i Archivo nueva base de datos Guardar en: | _J Mis documentos Vjadrrun.rridb yalumnos.mdb yBASEBIBLIO.nidb yBDALUMNOS.mdb ybdentdmdb 06CH.IBROS.mdb Q BIBU0TECA.mdb yCREDIT0S.mdb DB5ISTEDU.mdb ^edwin.mdb INFORME.mdb ywjPP.mdb yproductos.mdb yTAREA.mdb Crear Cancelar ^ ¡control de créditos y cobranzas educativas.mdb Ç Ì ventas.mdb Nombre de archivo: ▼] Guardar como tpo: | Bases de datos de Microsoft Access (*.mdb) j* ] En esta pantalla seleccione la carpeta donde desea crear la nueva base de datos (opcional). La carpeta predeterm inada es M I S D O C U M E N T O S y escriba el nom bre de la nueva base de datos luego haga c lic k en el botón crear. Se visualizará la siguiente ventana: (en el ejem plo la base de datos se llam a A G E N D A ). ÓAGENDA : Base de datos Esta pantalla tiene 6 hojas o fichas. Haga c lic k en la hoja T A B L A S y luego en el botón N U E V O para crear cada tabla de la base de datos. G r u p o E d it o r ia l Megabyte 355
  • 180.
    VISUAL BASIC comodebe ser. Se visualiza la siguiente ventana. Nueva tabla Crear una nueva tabla en vista Hoja de datos. Vista Diseño Asistente para tablas Importar tabla [Vincular tabla Aceptar Cancelar D e esta ventana e lija V IS T A D E D IS E Ñ O y haga c lic k en el botón A C E P T A R para empezar a e scribir la estructura de la tabla. Tabla! : Tabla Nombre del campo I Tipo de datos 1 Descripción]E Propiedades del campo General j Búsqueda | jd Tablai : Tabla i - ~ lx Nombre del campo I Tipo de dattooss j Descripción |j Propiedades del campo General J Búsqueda | Tamaño del campo Formato Máscara de entrada Título Valor predeterminado Regla de validación Texto de validación Requerido Permitir longitud cero Indexado No No No En la colum na N O M B R E D E L C A M P O escriba el nom bre de cada campo que desea crear dentro de la tabla. En la colum na T IP O D E D A T O S indique el tipo, tamaño y otras característica de cada campo. En la colum na D E S C R IP C IO N puede e s c rib ir en fo rm a opcional un texto que perm ita dar una explicación acerca de cada campo. CAPÍTULO IX: Manejo de Base de Datos Cuando term ine de escribir toda la estructura de la tabla haga un c lic k en hi figura del disco o pulse C T R L + G para grabar la estructura. Una vez ingresado el nombre de la tabla se visualiza la siguiente ventana: CE3 M icrosoft Access No hay ninguna clave principal definida. Aunque no es necesaria una clave principal, es recomendable que exista. Una tabla debe tener una clave principal para que pueda definir una relación entre esta tabla y otras tablas de la base de datos. ¿Desea crear una clave principal? Sí No Cancelar Si U d., desea haga c lic k en el botón SI para que la tabla tenga un campo clave. Estos campos se emplean más adelante. Una vez que grabó la tabla cierre la ventana para regresar a la ventana in ic ia l donde debe hacer c lic k en el botón A B R IR para ingresar los registros o en el botón D IS E Ñ O para m o d ific a r la estructura de la tabla. MUY BIEN U na vez in g resa d o los registros, g rá b e lo s y cierre el A ccess. D e esta m anera la base de datos ya está lista p a ra m anejarla con Visual Basic. U na vez creada la base de datos usando Visual B asic o M icrosoft A ccess c o n su s r e s p e c tiv a s ta b la s Ud. p u e d e m a n e ja r la in fo r m a c ió n en c u a lq u ie r fo r m u la r io . C uando necesite ca m b ia r la estructura de la tabla se recom ienda utilizar el M ic r o s o ft A c c e s s (o p c ió n D is e ñ o ), p o r q u e p e r m ite h a c e r esta s m o d ific a c io n e s una m a n e ra m á s fá c il. A n te s de ello d eb e c e r r a r la a p lic a c ió n d o n d e este u tiliza n d o d ich a tabla. Las tablas creadas en Visual B asic y M icrosoft A ccess con com patibles, p o r lo tanto si la creó en A ccess la p u ed e lla m a r desde Visual B asic y vic e v ersa . f l l f l j f t ^ G r u p o E d it o r ia l Megabyte 357
  • 181.
    ílÉllÉifl» VISUAL BASICcomo debe ser... CONTROL DATA: E l control Data permite manejar los registros de una o más tablas en un form u­lario. Ud. puede acceder a los registros para actualizarlos, im prim irlos, etc. E l control Data nos ayuda a crear de una form a m uy sencilla aplicaciones para poder acceder y adm inistrar bases de datos sin escribir casi ninguna instrucción. Cuando se manejan bases de datos se u tiliz a siempre el objeto R ecordset. OBJETO RECORDSET U n objeto Recordset representa registros de una tabla. Están form ados por registros (fila s) y campos (colum nas). E xisten tres tip o s de ob jeto s R ecordset: M arcador no d efinido.O bjeto Recordset de tipo hoja de repuesta D inám ica O bjeto Recordset de tip o de respuesta Instantánea O bjeto Recordset tipo Tabla P R IN C IP A L E S P R O P IE D A D E S D E L C O N T R O L D A T A : Ñ A M E Perm ite asignarle un nombre. Por defecto el nombre es D a ta l, Data2, Data3 etc. Según el núm ero de controles que se dibujen en el fo rm u la rio . B O F A C T IO N Perm ite ind icar la acción que se debe realizar cuando se encuentre al in icio de la tabla. L a acción puede ser: 0 M O V E F IR S T : se ubica en el p rim e r registro. 1 B O F : se ubica antes del p rim e r registro. C A P T IO N Para in d ica r el texto a visualizar en el co ntrol Data. C O N N E C T Para in d ica r el tipo de base de datos que se desea manejar. Por defecto es A r r F s s D A T A B A S E N A M E Para in d icar el nom bre de la base de datos a manejar. E N A B L E D Para in d ica r si el control Data debe estar activo o no. E O F A C T IO N Perm ite in d icar la acción que se debe realizar cuando se encuentre al final de la tabla. La acción puede ser: 0 M O V E L A S T : se ubica después del ú ltim o registro. 1 EO F : se ubica en el ú ltim o registro. 2 A D D N E W : adiciona un nuevo registro. CAPÍTULO IX: Manejo de Base de Datos E X C L U S IV E Permite indicar si la base de datos puede trabajar en un sistema m ultiusuario (Red). E l valor False indica que el sistema es de tipo m ultiusuario, es decir los registros pueden ser accedidos p o r varios usuarios al m ism o tiem po y el va lo r True indica que es de tip o personal. K E A D O N L Y Permite indicar si la base de datos es de sólo lectura. Si es de sólo lectura las modificaciones que se le haga a un registro no son reconocidas o grabadas. K E C O R D S O U R C E Permite in d icar el nom bre de la tabla que se desea manejar. V IS IB L E Para indicar si el co ntrol se debe visualizar. APLICACIÓN DESARROLLADA N° 48 Siguiendo los pasos mencionados al in ic io de este capítulo, crear una base de datos llam ada A G E N D A que tenga una tabla llam ada A M IG O S y adi­cione algunos registros. I .a tabla debe tener la siguiente estructura: C A M P O T IP O T / Nom bre Texto 25 Dirección Texto 20 D istrito Texto 20 Teléfono Texto 10 Fecnac Fecha/Hora Sexo Texto 1 Peso Sencillo I I lo rm ulario debe funcionar de la siguiente manera: ■ S u A C C E S O A U N A B A S E D E D A T O S Nombre ¡TITO RAM IREZ Dirección ¡EL DORADO 456 Distrito |j.L.O . — T eléfono (236975 Fecha de Nac. 107/1V I 970 Sexo | m Peso |S7 W ) D a tai ► 1 1 SALIR 1 I .os botones del control Data permiten ir al registro Primero, Anterior, Siguiente y Último. G r u p o E d it o r ia l Megabyte 359
  • 182.
    VISUAL BASIC comodebe ser... DESARROLLO El fo rm u la rio debe tener 07 Etiquetas, 07 Cajas de Texto, un control Data y un botón de Comandos. U n i x ] Si* Formi L ab e ll |T e *t1 Label2 ¡Text2 Label3 |Text3 LabeW |Text4 Label5 |Text5 LabelG |Tex(G Label7 | Tex(7 | H | ^ | Pa>a1 ► | ►! | Com m andl | lro . A l control Data se le debe asignar 02 propiedades: PROPIEDAD DATABASENAME, donde se selecciona el nom bre de la base de datos con la que desea trabajar. En la aplicación a desarrollar la base de datos se llam a AGENDA. A Haga c lic k en los tres puntos que se muestran en esta propiedad para acti­var la ventana y seleccionar la base de datos. La ventana que se visualiza es la siguiente: B u s c a re n : | _>l V b ~ T ] f i n | gj<-| j i 3 : f f | f | — J Clisvr ;_ J Repostry _ _ | vbonline — I G raphics ___ I samples __J W inapi — I H elp — I Setup _J W izards — I N u e va carpeta _ J setupkit *^ 1 AG EN DA 1 O dbc | T empiate Biblio — I report £ □ T sql N w ind Nom bre de archivo: | | Abrir A rchivos de tipo: fBases de datos (“ mdb) ]▼] Cancelar j A yuda j Es recomendable seleccionar el nom bre de la base de datos, porque sí Ud. lo escribe debe in d icar también con m ucho cuidado la ruta exacta donde está ubicada. CAPÍTULO IX: Manejo de Base de Datos NOI A: < nando crea una base de datos en V isual Basic, ésta se graba en form a I»'(‘determ ina la carpeta: C:Archivos de ProgramaDevStudioVB » uando crea una base de datos en Access, ésta se graba en form a prede-i. i m ina la carpeta: C:Mis Documentos. Si no recuerda en qué carpeta se i abó la base de datos, búsquela haciendo c lic k en: Botón Inicio, Buscar; 1/ chivos o carpetas. PROPIEDAD RECORDSOURCE, donde se selecciona el nombre de la labia que contiene los registros. En nuestro ejemplo la tabla se llam a Am igos. RecordSource J d I I nombre de la tabla debe salir en fo rm a autom ática cuando haga c lic k en la Hecha hacia debajo de esta propiedad. MUY IMPORTANTE Si no se muestra el nom bre de la tabla o tablas, sig n ifica que no grabó la labia dentro de la base de datos o no a asignado prim ero la propiedad I )A IA B A S E N A M E . En este ú ltim o caso se muestra el siguiente mensaje de error: Microsoft Visual Basic O Para llevar a ca bo esta operación, debe rellenar las propiedades D atabaseN arne y C onnect del control Data. A cep tar A yuda 2do. A cada caja de texto se le debe asignar 02 propiedades: DATASOURCE, donde se selecciona el nombre del control Data que se está usando. En form a predeterm inada es D A T A 1. DATAFIELD, donde se selecciona el cam po que desea v is u a liza r en cada caja de texto. CONTROL DATASOURCE DATAFIELD T e x tl D atai Nom bre Text2 D a ta i D irección Text3 D a ta i D istrito Text4 D atai Teléfono Text5 D atai Fecnac Textó D atai Sexo Text7 D atai Peso I 11 botón S alir debe tener la instrucción EN D . G r u p o E d it o r i a l Megabyte 361
  • 183.
    é ü ü^ VISUAL BASIC como debe se r... , '■ v a i A P LIC A C IO N D E SA R R O L L A D A N° 49 D esarrollar la aplicación anterior usando botones de comandos. Reg N» 1 0 0 3 N o m b r e | L I L I A N A A L A R C O N D i r e c c i ó n j M A R I A I Z A G A D i s t r i t o Jc H I C L A V O T e l é f o n o | 2 2 7 1 9 1 F e c h a d e N a c . J 20/ I 0 / 1 9 7 0 S e x o J p P e s o f 5 3 ¡ Ir a l R e g i s t r o : S i g u i e n t e f ¿ i n t e r i o r | U l t i m o | J g r im e r o | £ a l i r 1.- DIBUJAR LOS CONTROLES. D ib u je los controles com o se muestran en la aplicación. 2.- ASIGNAR LAS PROPIEDADES. Las cajas de texto y el co ntrol Data deben tener las mismas propiedades de la aplicación anterior. Label7 debe tener en su propiedad C aption: Reg. N°. LabelS debe tener en su propiedad C aption: 0001. E l control data debe tener en su propiedad visible el va lo r False para que no se visualice. NOTA: C u a n d o e l u su a rio visu a liza los reg istro s en las ca ja s de texto p u e d e ta m b ié n m o d ific a r lo s lo s d a to s, p a r a e v ita rlo , a sig n e a la s c a ja s de texto e l va lo r T R U E en su p ro p ie d a d L O C K E D . 3.- PROGRAMACIÓN DE LOS CONTROLES. Se utilizan los siguientes métodos: M O V E F IR S T : M uestra el p rim e r registros. M O V E N E X T : M uestra el siguiente registro. M O V E L A S T : M uestra el ú ltim o registro. M O V E P R E V IO U S : M uestra el registro anterior. Y las siguientes propiedades: E O F : Indica si estamos al fin a l de la tabla. B O F : Indica si estamos al in ic io de la tabla. R E C O R D C O U N T : Cuenta la cantidad de registros. La sintaxis de cada uno es: C ontrol_D ata.R ecordset.M étodo Ejem plo, para ir al ú ltim o registro de la tabla que está ligada al control D ATA 1 se escribe: D a ta l.R e c o r d s e t.M o v e la s t 362 - G r u p o E d it o r ia l Megabyte^ K CAPÍTULO IX: Manejo de Base de Datos % m U nio n P R IM E R O : I'riva le Sub C o m m a n d 4 _ C lick() I )ata I . R ecordset. M o ve F irst ( o m m a n d l. E n a b led = True ( om m and3. E n a b led = True ( <nnmand2. E n a b led = F alse C om m a n d 4 .E n a b led = F alse NR = / l.abelS = F orm at$(N R , ”0000") I n d Sub Botón ÚLTIM O: Private Sub Command3_Click() Data 1 .Recordset.Mo veLast Command I.Enabled = False Command3. Enabled = False Command2. Enabled = True Command4. Enabled = True NR = Datal. Recordset. RecordCount Label8 = Format$(NR, “0000") End Sub Instrucciones del botón SIGUIENTE: P rivate Sub C o m m a n d 1 _ C lic k () D a ta l .R ecordset. M o ve N e x t I f D ata 1. R ecordset. E O F Then M sgB ox “U ltim o reg istro ”, 16, “L o s ie n to ” C o m m a n d l.E n a b le d = F alse C om m and^. E n a b led = False D a ta l.R eco rd set. M o veP revio u s ElseC o m m a n d l .E n a b led = True C o m m a n d s.E n a b led = True C om m and2. E n a b led — True C om m a n d 4 .E n a b led = True N R = Val(Label8) + 1 L abel8 = F orm at$(N R , “0 0 0 0 ”) E nd I f l.n d Sub Instrucciones del botón ANTERIOR: P rivate S u b C o m m a n d 2 _ C lic k () D a ta l. R eco rd set. M o v e P re v io u s I f D a ta l.R e c o rd se t.B O F Then M sgB ox “P rim er re g istro ”, 16, “Lo s ie n to ” C o m m a n d l.E n a b le d - F alse C om m and4. E n a b led = F alse D ata 1. R ecordset. M o veN ext E lseC o m m a n d l .E n a b led = True C om m and3. E n a b led = True N R = Val(Label8) - 1 L abel8 = F o rm a t$ (N R , “0 0 0 0 ”) E n d I f E n d S u b El botón S A L I R d ebe ten er la instrucción E N D . G r u p o E d it o r ia l Megabyte 363
  • 184.
    é 3 ñk > VISUAL BASIC como debe ser... CONTROL DBLIST E l control D b list perm ite m ostrar el contenido de un campo de los registros de una tabla. En la lista de componentes, este control se llama: M ic ro s o ft Data Bound L is t C ontrol. PRINCIPALES PROPIEDADES DEL CONTROL DBLIST: LISTFIELD Permite indicar el campo cuyo contenido se debe visualizar en el control. Prim ero se debe in d icar en la propiedad RowSource el nombre del control Data que está ligado la tabla donde se encuentra el campo. MATCHENTRY Selecciona la form a de acceder a los elementos la lista. 0. D B L B A S IC M A T C H IN G : Selecciona a un elem ento por el p rim e r carácter que se digiten. 1. D B L E X T E N D E D M A T C H IN G : Selecciona a un elem ento por los prim eros caracteres que se digiten. ROWSOURCE Perm ite indicar el nom bre del co ntrol data que está ligado a la tabla con la que queremos trabajar con el co ntrol D b lis t. Esta propiedad se debe asignar antes de L IS T F IE L D . CONSULTA DE REGISTROS Existen dos form as básicas de consultar registros de una tabla. 1. Ingresando el campo clave del registro que desea consultar. Por ejemplo el código, nombre o cualquier dato que puede identificar a un solo registro dentro de la tabla. 2. Seleccionando el campo del registro a consultar desde un control D B list o desde un control D Bcom bo. M U Y IM PO R TA NTE Cuando en la estructura de una tabla, Ud., ha creado un campo cuyo nombre está compuesto con espacios en blanco o caracteres especiales como por ejemplo el guión(-), el signo número (s), etc., entonces, cada vez que ; se refiera a ellos dentro de un programa, los debe colocar dentro de corchetes ([ ]). Por ejemplo: [FECHA DE INGRESO] [APELLIDO-PATERNO] [e RECIBO] CAPITULO IX: Manejo de Base de Datos A PLIC A C IÓ N D E SA R R O L L A D A N° 50 - ta lx i Doto* Personales : N o m b r o | M A N U E L C A R B A JA L D i r e c c i ó n D is J rito T e l é f o n o F e c h a d e N a c S e x o P o s o | S A L A V E R R Y 9 8 7 |C H I C L A V O 12 0 9 8 7 5 11 8 / 06 /1 9 6 0 ÍM Í70 | M i •« | P -a ta l ASIGNAR LAS PROPIEDADES. I a caja de texto N ° 1 (donde se ingresa el nom bre a consultar) NO debe Icner ninguna propiedad. Las cajas de texto desde la N°2 hasta la N °8 y el control Data deben tener las mismas propiedades de la aplicación anterior. I •'.! control D blist 1 debe tener en su propiedad R O W S O U R C E el valor D a ta l, i*n su propiedad L IS T F IE L D debe seleccionar el campo N om bre y en la propiedad M A T C H E N T R Y el valor N°1 -D B L E X T E N D E D M A T H IN G para poder seleccionar un registro digitando sus prim eros caracteres. NOTA Para que los nombres se visualicen ordenados cree un índice para el campo nombre. MÉTODOS UTILIZADOS: FINDFIRST: Husca el prim er registro de la tabla que cum pla la condición. Su sintaxis es: < o n tro l D ata. R eco rd set. F in d fir s t C o n d ició n . Se recomienda que la condición se almacena en una variable. Por ejem plo se tiene una tabla con el campo N O M C L I y se desea buscar el u-gistro cuyo nom bre es: J U L IO D E L G A D O . I as instrucciones seráp: C = "N O M C L I = ‘J U L IO D E L G A D O ’ " D a ta l.Recordset.F ind first C Si el nombre se encuentra p o r ejem plo en T e x tl, las instrucciones serán: C = " N O M C L I = ‘ " + T e x tl + D atal .R ecordset.Findfirst C NOTA: t os apostrofes sólo se utilizan para buscar campos de tipo Texto y entre ellas y las i lunillas NO debe dejar espacios en blanco. Si el registro es encontrado, sus datos son mostrados automáticamente en las cajas ¡le texto o etiquetas que se les a asignado la propiedad Datasource y Datafield. G r u p o E d it o r ia l Megabyte 365
  • 185.
    |fllllll> VISUAL BASICcomo debe ser... CAPÍTULO IX: Manejo de Base de Datos NOM ATCH: Se u tiliz a para preguntar si un registro fue encontrado. D evuelve el valor Falso si el registro fue encontrado y Verdadero en caso contrario. S intaxis para preguntar si el registro fue encontrado: I f N ot C o n tro l D ata. R eco rd set.N o m a tch then Sintaxis para preguntar si el regist. no fue encontrado: I f C o n tro l D a ta .R e c o rd se t.N o m a tc h then Ejemplo: D im R A s String R = “N O M C L I = ‘ “ + T extl + D ata 1.R eco rd set.F indF irst R I f D a ta l.R ecordset.N oM atch Then M sg B o x "E L N O M B R E N O E X IS T E " ,1 6 ,”Lo s ie n to " E n d if P R O G R A M A C IÓ N D E L O S C O N T R O L E S In s tru c c io n e s d e l b o tó n O K . P riv a te S u b C o m m a n d 1 _ C lick() D im R A s String I f Trim ( T e x tl) = Then MsgBox “DEBEINGRESARELNOM BREA CONSULTAR”,48, "LOSIENTO" T extl = T extl. S e t F ocus E lse R = “N O M B R E = *“ + T extl + D a ta l . R ecordset. F in d F irst R I f D a ta l .R eco rd set.N o M a tch T hen M sg B o x “E L N O M B R E IN G R E S A D O N O E X IS T E ",16, "Ingrese el nom bre exacto a co n su lta r ” E lse T extl = “ ” T extl. S etF o cu s E n d I f E n d I f E n d S u b Instrucciones del D b lis tl para que al e le gir un registro se visualicen todos sus datos. P riva te S u b D B L is tl _ C lic k () D im R A s String R = “N O M B R E = + D B L is tl.Text + D ata I . R ecordset. F in d F irst R E n d S u b El botón S A L IR debe tener la instrucción E N D . MANTENIMIENTO DE REGISTROS I I m antenim iento de registros consiste en realizar program as para: A d ic io ­nar, M o d ific a r y E lim in a r registros. Métodos U tilizados: A D D N E W : Permite adicionar un registro a una tabla. I I ) IT : Perm ite m o d ific a r los datos de un registro de una tabla. M L L E T E : Permite e lim in a r el registro actual de una tabla. < A N C E L U P D A T E : Perm ite cancelar las m odificaciones realizadas a un icgistro o la ejecución de A D D N E W m ientras el registro no este grabado. I a sintaxis de estos métodos es: Control_Data.Recordset.Nombre_Método A PLIC A C IÓ N D E SA R R O L L A D A N° 51 MANTENIMIENTO DE RESGISTROS A m ig o s CARINA RIOJA j CARLOS M ORALE íDANIEL ALARCO I M AN UEL C A RB A JJ Nombre Dirección Distrito T eléfono Fecha de Nac. 115/10/1966 Sexo Peso [S8 |WIRACHORA315 ILA VICTORIA I232689 ....... M C D a to s P e rs o n a le s : IDANIEL ALARCON Cancelar O p c io n e s d e M a n te n im ie n to Adicionar Modificar Cerrar M M Datai ► H l 'ste p ro g ra m a p e rm ite d a r m a n te n im ie n to a los re g istro s de una labia, com o p o r e je m p lo , c o n su lta rlo s, m o d ific a r sus datos, elim inarlos y a d ic io n a r nuevos re g is tro s . M U Y IM PO R TA NTE i slos son los programas básicos para m anejar registros, por lo tanto es muy im portante que Ud., los practique varias veces con diferentes tablas. m G r u p o E d i t o r i a l Megabyte
  • 186.
    1. Dibujar loscontroles. I □ I x | VISUAL BASIC como debe ser. . . ¡a§„ Forn ii ............................................ F r a m e l L a b e l 2 | T e n t 1 !*". Labo13 [Tr-TT ' - L a b e l 4 | T e x t 3 isll L a b e l 5 | T e x t 4 L a b e lG j T e x t S L a b e l 7 f f e x Í 6 ’ : : : : : : : : : : : : L a b e l s j T e x t 7 F r a m e 2 ............................................... C o m m a n d l C o m m a n d 2 C o m m a n d 3 I C o m m a n d 4 | C o m m a n d 5 | C o m m a n d 6 j : : : : : : : : 1n | ^ ]Da>ai ► 1 m| : NOTA: D ibuje p rim ero los F ram e y encim a los b o tones de com andos. 2. Asignar las propiedades. CONTROL DATA CONTROL DATABASENAME RECORDSOURCE Datal Agenda Amigos CAJAS DE TEX TO CONTROL DATASOURCE DATAFIELD Textl Datal Nombre Text2 Datal Dirección Text3 Datal Distrito Text4 Datal Telefono Text5 Datal Fecnac Text6 Datal Sexo Text7 Datal Peso D B LIS T CONTROL ROWSOURCE LISTFIELD Dblistl Datal Nombre A los botones de comandos y fram es, asígneles su propiedad C aption, como se muestra en la aplicación a desarrollar. I ||¡ ||¡ ^ 3 6 8 G r u p o E d i t o r i a l M e g a b y t e <^ ^ ^ CAPÍTULO IX: Manejo de Base de Datos ^ Escribir las instrucciones de los controles. C rear dos procedim ientos (A c tiv a r y Desactivar) y escribir las siguien- tes instrucciones: SubACTIVAR() F ram el.Enabled = True Frame2. Enabled = False D BListl. Enabled = False End Sub Botón ADICIONAR Private Sub Command3_Click() ACTIVAR Data 1 .Recordset. AddNew Textl.SetFocus End Sub Botón MODIFICAR Private Sub Command4_Click() ACTIVAR D atal .Recordset.Edit Textl.SetFocus End Sub Sub DESACTIVARO F ra m el. E nabled = False Frame2. E nabled = True D B L istl .E nabled = True End Sub Botón GRABAR P rivate Sub C o m m a n d l _ C lick() D ESACTIVAR D a ta l.R eco rd set. U pdate R em Actualiza el D B listl D B L istl.L istF ie ld - ’’nom bre ” E n d Sub Botón CANCELAR P rivate Sub C om m and2_C lick() D E SA C TIV A R D a ta l. R eco rd set.C a n celU p d a te E n d Sub Instrucciones del botón ELIMINAR Private Sub Command5_Click() Dim R As Byte R=MsgBox(“Estásegurodeeláninaresteregistro”,36, “CUIDADO”) IfR = 6 Then D atal. Recordset. Delete D atal.Refresh End I f End Sub CONTROL DBLIST1 Private Sub D BListl_Click() Dim C A? String C= "NOMBRE= “‘+DBListl+ Datal.Recordset.FindFirst C End Sub Instrucciones del Form_Load Prívate Sub Form_Load() Framel.Enabled - False Datal. Visible - False End Sub Instrucciones del botón SALIR Prívate Sub Command6_Click() I f M sgBox(“Está seguro de Sari ir”,36, ’’CERRAR”) = 6 Then End End Sub G r u p o E d it o r ia l Megabyte 3 6 9
  • 187.
    M. % VISUALBASIC como debe ser... A S IS T E N T E D E L V IS U A L B A S IC P A R A B A S E D E D A T O S Visual Basic tiene un asistente que permite desarrollar en forma automática un for­mulario con los programas básicos para manejar y dar mantenimiento a las tablas y registros de una base de datos. Para ello, de la opción Complementos de la Barra de M e n ú elija Asistente para Formulario de Datos. NOTA: , Si no tiene la opción Asistente para Formularios de Datos, ingrese a la opcion Administrador de Complementos y active VB Data Form Wizard. Cuando elige la opción Asistente para Formularios de Datos, se puede visualizar una ventana de introducción y cuando hace Click en Siguiente se muestra la ventana donde se elige el tipo de Base de Datos. El tipo predeterminado en V. Basic es Access. nanaas ddBMAó'iEf I:V¡; ¡JBfíSE 5 0 Fo >Pro ?■<< < if'fr págmjyte > | Después de hacer click en el botón Siguiente de la ventana anterior, Visual Basic le pide el nombre de la Base de Datos con la que desea trabajar y en la siguiente ventana le pide la forma de visualizar los registros. La primera y segunda forma se utilizan para una sola tabla y la tercera forma para dos tablas. |||||||> 370 G r u p o E d i t o r i a l Megabyte CAPÍTULO IX: Manejo de Base de Datos I n la siguiente ventana debe seleccionar en Origen de Datos el n o mbre de la tabla y en Campos Disponibles puede seleccionar los campos que desea visualizar. También puede seleccionar una columna (Campo) por el cual quiere ordenar los registros. C ada uno de los botones de esta ventana muestra un mensaje indicando su función con sólo llevar el puntero del M o u s e hasta él. I.n la siguiente ventana, Visual Basic le pide seleccionar los botones que i lesea tener en el formulario. pe £>r*jen de registros: Campes jesjcdcnaoos: ; _íJ Orden* cok*iwaD«: j* ] Ayuda I CnccSy j : <&trfe. ;| f | j g ü g l 3 l : ’ GsrírcéK caponóles ■ p Botan Agregar FBotonEbró» ; 17 ÉotónEenovar • F Bótóntetuslíjai ■ 15 Botóte Cerrar J ÍCÍÍ^?T3] lermna- | I in la última ventana, le pide el nombre del formulario. E n forma predetermina le asigna el n o mbre F R M seguido del n o m b r e de la tabla. Para ver su ejecución, puede hacer que este formulario se ejecute primero (Proyecto/ Propiedades del Proyecto). El formulario que se crea en forma automática depende el tipo que eligió. Por ejemplo, si ha elegido Un único Registro, se visualiza: ■¡.AMIGOS NOMBRE: DIRECCIÓN:' DISTRITO: TELEFONO: FÈCNÀC: SEXO: PESO: Agregar j lIT fti M 3 Eliminar Renovar Actualizar Cerrar T T m I M U Y IM P O R T A N T E Ud., puede mirar las instrucciones de cada uno de los botones de comandos del formulario creado. ¡lililí»* Grupo Editorial Megabyte 37, « £ »
  • 188.
    éS B k> VISUAL BASIC como debe ser... CONTROL DBCOMBO: Es un control sim ila r al D B lis t, es decir perm ite m ostrar el contenido de un campo, pero además puede m ostrar una caja de texto. En la lista de com po­nentes, este control tam bién se llam a: M ic ro so ft Data Bound L is t C ontrol. Tiene las mismas propiedades del control D B list, pero además se le puede asignar la propiedad S T Y LE . L a propiedad Style, indica la form a cóm o debe trabajar el D B com bo. Los valores que se le puede asignar son: Style fc) - dbcDroDdownComboH 0 - dbcDroodownCombo 1 - dbcSimpleCombo 2 - dbcDropdownList 0 : El D B com bo se muestra con una caja de texto y una lista desplegable, pudiendo seleccionar a un registro en cualquiera de ellas. 1 : M uestra una caja de texto y una lista que no se despliega, pudiendo seleccionar a un registro en cualquiera de ellas. 2 : Sólo muestra y perm ite seleccionar cualquier registro de la lista des­plegable. A P L IC A C IÓ N D E SA R R O L L A D A N° 52 D esarrollar el program a de consulta anterior, usando un D B com bo, de tal manera que a m edida que se va escribiendo el nom bre de una persona, se visualicen sus datos en las cajas de texto. TñTSl H a g a c l i c k e n e l N o m b r e o d í g i t e la s i n ic i a le s D A D A N IE L A L A R C O N - I L IL IA N A A L A R C O r M A N U E L C A R B A J ^— T IT O R A M IR E Z _ Z J N o m b r e a C o n s u l t a r D a l o s P e r s o n a l e s N o m b re D ir e c c ió n D is trito T e lé fo n o F e c h a d e N a c . S e x o P e s o | D A N IE L A L A R C O N IW IR A C O C H A 3 1 5 |L A V IC T O R IA | 2 3 2 6 8 9 | 1 5 / 1 0 /1 9 6 6 M 68 m. FORMAS DE CONSULTAR REGISTROS I H| < |Datai ► l'nj 372 G r u p o E d it o r ia l M e g a b y t e ^ |> CAPÍTULO IX: Manejo de Base de Datos DESARROLLO: D ibuje todos los controles de la aplicación de consulta anterior y asígneles las propiedades respectivas. Sólo debe cam biar el control D B lis t p or el con­trol D Bcom bo. A l control D bcom bo asígnele las propiedades R owSource Y L is tfie ld como se hizo para el D B list. Adem ás debe asignar sus propiedades Text y Style. lil contenido de la propiedad Text b órrelo para que quede en blanco y en su propiedad Style, asígnele el valor 2. Debe program ar en los eventos Change y C lic k del D B C om bo: Instrucciones del evento Change P ríva te S u b D B C o m b o l_ C h a n g e () D im C A s String D im L A s In teg er L = L e n (D B C o m b o l) C = "L E F T(N O M B R E ," + Str(L) + + D B C o m b o l + D a ta l.R e c o rd se t.F in d F irst C I f D a ta l.R e c o rd se t.N o M a tc h Then F ra m e l. Visible = F alse E lse F ram e 1 .V isible = True E n d I f lu id S u b Instrucciones del evento Click P rívate Sub D B C o m b o l_ C lic k (A re a A s In teg er) D B C o m b o l jC h a n g e E n d Sub APLICACIÓN PROPUESTA M o d ifiq u e la aplicación anterior de tal manera que perm ita consultar un registro por el nom bre o teléfono. IH á'l ii; FiYi <1 =»1'1 ¡i ¡143EDSIíBMMMMBZ[bISI S E L E C C I O N E E L D A T O D E L R E G I S T R O N o m b re T e lé f o n o | ' 3 1 2 2 7 1 3 1 3 D a lo s P e rs o n a le s N o m b r e | L I L I A N A A L A R C O N D ir e c c ió n | M A R I A I Z A G A D is t r it o jC H I C L A V O T e lé f o n o | 2 2 7 1 9 1 F e c h a d e N a c f 2 0 T T 0 T l9 7 0 S e x o | p P e s o [ 5 3 I l < | 4 | D a t a l ► | M i ||||¡ |§ * G r u p o E d i t o r i a l Megabyte 373
  • 189.
    l i li l í , VISUAL BASIC como debe ser... C O N T R O L D BG R ID: ü E l co ntrol D B g rid perm ite listar los registros de una tabla en un form ulario. A l listar los registros Ud. puede actualizarlos, y adicionar nuevos registros. En la lista de componentes, este control se llam a: M ic ro s o ft Data Bound G rid Control. PRINCIPALES PROPIEDADES DEL CONTROL DBGRID: ÑAM E Perm ite asignarle un nombre. Por defecto el nom bre es D b g rid l, D bgrid2, D bg rid 3 etc. Según el núm ero de controles que se dibujen en el form u la rio . ALLOWADDNEW Perm ite ind icar que si al llegar al ú ltim o registro se puede adicionar nuevos registros. ALLOWARROWS Perm ite usar las teclas de m o vim ie n to del cursor para moverse por los registros. ALLOWDELETE Perm ite ind icar si se puede e lim in a r registros. ALLOWUPDATE Perm ite in d icar se pueden m o d ific a r los registros. CAPTION Perm ite escribir el títu lo para el control COLUM NHEADERS Para in d icar si desea visualizar los encabezados de cada campo. DATASOURCE Para ind icar el nom bre del co ntrol Data que contiene la tabla donde se encuentran los registros que se desea visualizar. ENABLED Para in d icar si el control debe estar activado. HEADFONT Para seleccionar el tipo, tamaño y estilo de letra para el encabezado de cada campo. HEADLINES Perm ite ind icar el núm ero de líneas que desea tener com o encabezado de cada campo. ROWDIVIDERSTYLE Perm ite indicar el estilo de la línea que d ivid e cada registro VISIBLE Para in d icar si el co ntrol se debe visualizar. G r u p o E 374 d it o r ia l M e g a b y t e « * CAPITULO IX: Manejo de Base de Datos ^ A PLIC A C IÓ N D E SA R R O L L A D A N° 53 Con la tabla A m igos desarrolle la siguiente aplicación que perm ite listar todos los registros: jjn lí HOMBRE [d i r e c c i o h RELACION DE AMIGOS [d i s t r i t o It e l e f o n c I feciiac [sexc r {Ta RINA RIOJA ¡PRINCIPAL 34S LAMBAYBQUB 227191 20/10/1970 F CARLOS LA H ADRIE j LOS INCAS N" 1020 LA VICTORIA : 202020 20/10/1970 H CARLOS MORALES ;AREQUIPA N* 364 CHICLAYÛ 2738S8 18/07/1969 H DANIEL INFANTE :AV. LOS LAURES 234 iFERREÑAFE ^203347 16/12/1970 H » j______________________ _______ _______ ,_____ _ t a iHNIOa'al TTTlI Sala Para diseñar esta aplicación debe dibujar en un form ulario un control D Bgrid, un control Data y un botón de comandos. 1ro. A l control Data se le debe asignar 02 propiedades: DATABASENAME, donde se selecciona el nombre cíela base de datos ( "Agenda"). RECORDSOURCE, donde se selecciona de la tabla que contiene los registros ( "Amigos"). 2do. El control D B grid debe tener en su propiedad DataSource el nombre del control Data (D a ta l) y en su propiedad Caption el texto: R E L A C IÓ N DE A M IG O S . El botón SALIR debe tener la instrucción END. RECUPERAR LOS CAMPOS Una vez que asignó las propiedades al control Data y al D Bgrid, haga C lick con el botón derecho en el D B g rid y seleccione R EC U PER AR C AM PO S. ASIGNAR UN ANCHO ADECUADO A CADA CAMPO. Una vez que recuperó los campos en el D bgrid, haga C lick con el botón derecho en éste y elija E D IC IÓ N , luego, lleve el puntero a la línea que divide cada campo y asígnele el ancho que desea. QUITAR UN CAMPO DEL DBGRID Siga los pasos anteriores hasta elegir E D IC IÓ N , luego haga click en el título del campo a quitar, botón cjerecho y elija D ELETE. MODIFICAR EL TITULO (ENCABEZADO)A LOS CAMPOS. Para ello seleccione la propiedad PERSONALIDADO del D B grid y active la hoja C O L U M N A S . Seleccione colum na por colum na (campos) y en la propiedad C A P T IO N asígnele el título que desea. Además puede asignarle un formato a cada campo. En la hoja D ISEÑ O puede activar la propiedad L O C K E D de las columnas que desea para que no se pueda m odificar su contenido, además puede alinear el contenido del campo. ADICIONAR REGISTROS. Para adicionar registros en el D BG R ID asigne a su propiedad A LLO W A D D N E W el valor TRUE. La propiedad A LLO W U P D A T E que permite modificar o no los datos debe tener también el valor verdadero. EVITAR QUE SE MODIFIQUE LOS DATOS EN EL DBGRID. Para ello asigne a su propiedad A L L O W U P D A T E el valor FALSE. G r u p o E d i t o r i a l Megabyte 375
  • 190.
    i S ÌÉ > VISUAL BASIC como debe ser... IN S T R U C C IO N E S S Q L SQL significa Structured Query Language, es decir, Lenguaje Estructurado de Consulta. Es un lenguaje orientado a Base de Datos que permite administrar y manipular sus componentes (tablas, registros, etc.) de una manera fácil y rápida. INSTRUCCIÓN SELECT Selecciona los registros con los que deseamos trabajar o ver en un momento determinado. También los ordenarlos, une tablas, etc. Esta instrucción se debe asignar a la propiedad RECORDSOURCE del control D ATA cuando la utilizamos en un formulario. LASINTAXISPARASELECaONARTODOS LOS REGISTROS ES: S E L E C T * FR O M NO M BRE_D E_LA_TABLA El asterisco (*) indica que se deben seleccionar todos los campos. Si desea seleccionar sólo algunos campos debe escribirlos separados por una coma (,). Ejemplo: La siguiente instrucción selecciona todos los campos y todos los registros de la tabla amigos: SE L E C T * F R O M AM IG O S La siguiente instrucción selecciona sólo el Nombre y Teléfono de todos los regis­tros: S E L E C T N O M BRE, TELEFO NO F R O M AM IG O S Para que funcione en un formulario, primero debe de darle las propiedades corres­pondientes al control Data y al Dbgrid, luego en un botón de comandos se debe escribir por ejemplo: Datal.RecordSource = "Select nombre,telefono from amigos" D atal .Refresh CAMPOS CALCULADOS Son campos que no se encuentran en una tabla, pero que se pueden obtener con los campo que tiene la tabla. Por ejemplo, en la tabla Amigos, el campo EDAD se puede considerar como campo calculado, porque se puede obtener con la fecha de naci­miento. La sintaxis para obtener un campo calculado es: Expresión As Nombre Donde Expresión, es la operación que se necesita realizar para obtener el campo calculado y Nombre, es el nombre que le desea asignar al campo calculado. Ejemplo, la siguiente instrucción muestra el nombre y la edad de todos los registros: Datal .RecordSource = "Select nombre, year(now)-year(fecnac) as edad from amigos" Datal.Refresh M UY IMPORTANTE Cuando desee visualizar sólo algunos campos o los campos calculados en el DBgrid, no debe haber recuperado los campos. (Botón Derecho, Recuperar Campos). Si ha recuperado los campos, haga click con el botón derecho del Mouse en cualquier parte del DBgrid y elija B o rra r Campos. ' < 5 CAPÍTULO IX: Manejo de Base de Datos ^ IIÉ IP SELECCIONAR SÓLO ALGUNOS REGISTROS. Con la instrucción WHERE del SELECT, se pueden seleccionar los registros con los cuales deseamos trabajar o visualizar. Su sintaxis es: SE L E C T * FR O M Nom bre_deJa_Tabla W H ERE Condición Ejemplo: Seleccionar los que viven en el distrito La Victoria: SF1ECT * FROM AMK ¡OS WHERE DISTRITO = ”LA VICTORIA” Seleccionar las mujeres que pesan más de 60 kilos: SELECT*FROMAMIGOSWHERESEXO-”F ’ANDPESO>60 BE TW EE N : Se puede utilizar junto con W HERE para seleccionar registros que tienen un campo cuyo valor en encuentra entre dos valores dados W H ERE NO M BJCAM PO B E T W E E N VALOR1 A N D VALOR2 Ejemplo: Seleccionar las personas que pesan entre 60 y 73 Kilos. SELECT* FROMAMIGOSWHEREPESOBETWEEN60AND 73 IN : Se puede utilizar junto con WHERE para seleccionar registros que tienen un campo cuyo valor es uno de los indicados. WHERENOmjMIPOIN(VAWRl,VAWR2,VAWR3r VAWRii) Ejemplo: Seleccionar las personas nacieron en el mes de Febrero, Abril, Agosto o Diciembre. SELECT*FR0MAMIG0SWHEREM0N1H(FECNAC)1N(24,8,12) ORDENAR LOS REGISTROS. Con la instrucción ORDER B Y del SELECT, se pueden ordenar los registros de una tabla. Su sintaxis es: SELECT * FROM Nombre_deJa_Tabia ORDER BY Nombre_del_Campo Se puede utilizar el número del campo en lugar del nombre. Si se quiere ordenar por varios campos, se deben separar por una coma sin importar el tipo de cada campo. Si se desea ordenar en forma descendente escriba la palabra DESC, después del nombre del campo. La palabra ASC, ordena en forma ascendente, pero es opcional utilizarla. Ejemplos: Para ordenar los registros por el distrito: SELECT*FROMAMlGOSORDERBYDlSTRnD Para ordenar por el campo sexo en forma descendente y por el nombre en forma ascendente: SELECT* FROMAM1GOS ORDERBYSEXO DESC, N O M B R E SELECCIONAR REGISTROS Y ORDENARLOS. Utilizando las instrucciones WHERE y ORDER B Y dentro de una instrucciones SELECT, podemos seleccionar y ordenar registros. Su sintaxis es: SELECr*FROMNoné_TablaWHEREConckiónORDERBYNoinb Caii¡X) Ejemplo: para seleccionar los que tiene sexo masculino y ordenarlos por su nombre: SELECT* FROM AMIGOS WHERESEXO=' M ’ORDER B Y N O M B R H G r u p o E d i t o r i a l Megabyte 377
  • 191.
    s , '%VISUAL BASIC como debe ser... T O P Es una palabra que se puede e scribir después de S E LE C T que perm ite m ostrar los N prim eros registros ordenados. Ejemplos: L a siguiente instrucción muestra las 3 prim eras personas más delgadas (de m enor peso). S E L E C T TO P 3 * F R O M A M IG O S O R D E R B Y P E SO Si se desea las tres prim eras personas más gordas, sólo debe realizar la ordenación en form a descendente. S E L E C T TO P 3 * F R O M A M IG O S O R D E R B Y P E SO D E SC NOTA: Las siguientes personas que tiene el mismo peso de la tercera también se visualizan. Después del valor puede utilizar la palabra PERCENT para mostrar un porcentaje determinado de registros. L a siguiente instrucción muestra el 10% de las personas más delgadas (de m enor peso). S E L E C T T O P 10 P E R C E N T * F R O M A M IG O S O R D E R B Y PE SO D IS T IN C T Se puede u tiliza r después de S E LE C T y perm ite que no se visualicen registros que están duplicados en uno o más campos determinados. La siguiente instrucción muestra la relación de distritos sin duplicación, donde vive n las personas. Si dos o más personas viven en un m ism o distrito , el nom bre de dicho d is trito sólo se visua liza una vez. S E L E C T D IS T IN C T D IS T R IT O F R O M A M IG O S D IS T IN C T R O W Se puede u tiliza r después de S E LE C T y perm ite que no se visualicen registros que están duplicados en todos sus campos. Se u tiliz a cuando se trabaja con dos o más tablas. NOTA Existen otras instrucciones SQL, las cuales se explican más adelante. p 378 G r u p o E d i t o r i a l Megabyte^ CAPÍTULO IX: Manejo de Base de Datos ¿ D O NDE P R A C TIC A R O U T IL IZ A R LAS IN STR U C CIO N ES SQL? I as instrucciones S Q L vistas anteriormente se pueden utilizar o practicarlas en un formulario con el control D A T A o en la ventana de administración visual de datos (VISDATA). 1. EN UN FO RM ULARIO CON E L CONTRO L DATA. Cuando quiera practicar o utilizar las instrucciones S Q L en un formulario, debe asignar toda la instrucción S Q L a la propiedad R E C O R D S O U R C E del control D A T A y luego actualizarlo (Refresh). I’or ejemplo, para visualizar todas las personas que viven en el distrito La Victoria y ordenadas por su nombre, se escribe: I )cital.ReconEoutce-”Select *fivmcunigoswheivdisnito = ‘La Victoria’orderbynombre” Datal.Refresh A PL IC A C IÓ N D E SA R R O L A D A N° 54 I .a siguiente aplicación permite seleccionar registros, ordenarlos y seleccionar c a m ­pos a visualizar utilizando instrucciones S Q L dentro de un formulario con el control DATA. i» . IN S T R U C C IO N E S S Q L E N F O R M U L A R IO S NOMBRE D IRECCION D IS T R IT O TELEFONO I CARLOS MORALES AREQUIPA 365 p e s g T T CHI CLAVO 20 20 20 1 8 /0 7 /1 9 8 9 ;M 60; DA N IE L ÄLAR C Ö N W IR A C O C M A 3 1B L A VIC TORIA 23P689 Ï5 /1 Q /1 % 6 ‘ m 80 i LILIA N A ALAR C O N M A R IA IZAG A CHI CLAVO 227131 2 0 /1 2 /1 9 9 0 : F 50: M A N U E L CARBAJAL SAI A V I H R Y a t )/ CHICLAYO 2 0 98 70 Ï8 /0 6 /1 3 6 0 !M ÍJSi T lf lb R A M IR E Z L L D O RADO 46 6 J .L 0 . 23G976 i 0 7 /1 Ï / I 3 / Ù 1 , S E L E C C IO N A R . La V icto ria ) M enores | Hom bres | M m etes | O ctu b re j P e so entre 5 0 y 73 ¡ Serie Telét 22 | : V I S U A L IZ A R S O L U : N om bre y A ñ o d e N a cim iento j Nom bre. F ech a de Nacim iento y E dad O R D E N A R P O R : N om bn- | F frc li* | P oso Pete j Sexo y P »so j V I S U A L IZ A R IO D O S | üiLii Ü üjT DESARROLLO: Dibuje los controles como se muestra en la aplicación a desarrollar y asígnele las propiedades correspondientes al control DBgrid y al Data. Las instrucciones de cada botón de comandos en el orden que están dibujados son: Prívate Sub Com m andl_Click() Datal.RecordSouice- “SELECT* FROMAMIGOSWHEREDISIRITO= ’LA VICTORIA”' Datal.Refresh End Sub Prívate Sub Command2_Click() Datal.RecordSowte = “SELECT* FROMAMIGOSWHEREYEAR(NOW)- YEAR(FECNAC)<17" D atal .Refresh End Sub Ü » G r u p o E d i t o r i a l Megabyte 379
  • 192.
    VISUAL BASIC comodebe ser. CAPITULO IX: Manejo de Base de Datos PtwateSióConmmd3_Clkk() DataLRecordSource = "SELECT* FROMAMGOSWHERESEXO=’M’ ” DataLRefresh EndSub Prh>ateSubComnand4_QicH) DataLRecordSource = "SELECT* FROM AMIGOS WHERESEXO= ’F ’ ' Datal.Refresh E/idSub Private Sub Command5_Click() Datal.RecordSowce= "SELECT* FROM.AMIGOSWHEREMONIH(FECNAC)=10" DataLRefresh EidSub Prh’ateSub Convtiand6_Qick( ) DataLRecordSource = ' ‘SELECT* FROMAMIGOS WHERE PESO BETWEEN50AND 73 ’ ’ DataLRefresh EtdSub Private Sub Convnand7_Qick() Datal.RecoidSowve= “SELECT* FROMAMLGOSWHERETELEFONOUKE‘22*”’ DataLRefresh EndSub Private SubConvmÆjOlickO DataLRecordSource- ”SELECrNOMBRE,YER(FECNAC)AS[AÑODENACIMIENTOI FROM AMIGOS” DataLRefresh EndSub Private Siè Comnand9jOltk() Datal.RecordSowce= "SELECTNOMBRE,FECNAC,YEAR(NOW)-YEAR(FECNAC)AS EDAD FROM AMIGOS” Datai.Refresh EidSub Private Sub ConviiandlO_Click() Datal.RecordSowve- “SELECT* FROM AMIGOS ORDER BYNOMBRE” DataLRefresh BidSiè PmateSiè Command!l_Gick() DataLRecordSource - “SELECT* FROMAMIGOS ORDER BYFECNAC" DataLRefresh EndSub Private Sub Commandl2_Click( ) DataLRecordSource - “SELECT* FROM AMIGOS ORDERBYPESO DESC” DataLRefresh EìdSiò PriwtteSié Convnandl3_Click() DataLRecordSource= “SELECT* FROMAMIGOSORDERBYSEXO,PESO” DataLRefresh EjidSub PrivateSubConmiandl4_CUck() DataLRecordSoi uve=‘ ‘SELECT* FROMAMIGOS DataLRefresh FjxlSub ||||¡ ||¡ ^ 380 G r u p o E d i t o r i a l Megabyte EN L A V E N T A N A D E A D M IN IS T R A C IO N V IS U A L D E D A T O S (V IS D A T A ). C ua nd o e lig e la o p c ió n C o m p le m e n to s , A d m i n i s t r a d o r V is u a l d e D a to s y abre una ta b la , se v is u a liz a ta m b ié n una ve n ta n a de in s ­tru c c io n e s S Q L. v g V isD ata:C :A »ch¡vos d e p ro g ra m a D e v S tu d io V B A G E N D A .m d A f ch iv o Utilidad V e ntan a A yu da a l f i l B al B l l eáHl -- ($} [fff* Properties •+ E 3 AMIGOS Listo “ 3 U suario: admin En esta ventana puede escribir las instrucciones S Q L (a p a rtir de S E LE C T). Para ver los resultados haga c lic k en el botón E JE C U T A R . De esta mane­ra se crean consultas (Q uery), las cuales las puede grabar haciendo c lic k en el botón G U A R D A R y u tiliz a rla en cualquier fo rm u la rio asignándole su nombre a la propiedad R E C O R D S O U R C E del control D A T A com o lo hace con cualquier tabla. Ejem plo, en la fig ura siguiente se ha creado una consulta que consiste en la ordenación de los registros por el Peso y ha sido grabada con el nom bre IN F O R M E . VisD ata:C :A rchivos de piogiam aVDevSludioV BAG ENDA.m db I.P.|X| Archivo Utilidad Ventana Ayuda O F Ü & I S H O f f i l & i ■ i S3 .•=JJ3J.2Sl _ li l i x ¡ •* fft?' Properties Ejecutar j gorrar | |; guardar it; m a m ig o s :+! @ INFORME SELECT * FROM AMIGOS ORDER 8Y PESO j _J Listo Usuario; adirar, Pruebe que esta consulta creada se puede u tiliz a r com o cualquier tabla haciendo un programa de listado. Para ello, dibuje en un fo rm u la rio un con­trol D bgrid y un control Data y asígneles las propiedades correspondientes. Grupo Editorial Megabyte 381
  • 193.
    VISUAL BASIC comodebe ser... >r f i K - m z ú Dentro de la opción U T IL ID A D , esta ventana tiene las opciones: 1. Generador de Consultas: Que consisten en un asistente para crear las consultas con instrucciones SQ L. [E l 131 F Ê g r e g a r a l c r it e r io j Q . p o r c r it e r io T a b la s : C a m p o s a m o s tr a r : r L is ta d© p o s ib le s v a lo r e s A g r u p a d o p o r : P r im e r o s N v a lo r e s : r O r d e n a d o p o r' • A s e f~ " P e s e | J E s t a b le c e r c o m b in a c io n e s d e la t a b la | 1 " P o r c e n t a je s u p e r io r G u a r d a r j B o rr a r 2 D iseñador de Form ularios: Que consiste en un asistente para crear fo r­m ularios que adm inistren las tablas y registros. II III D i s e ñ a d o r d e f o r m u la r i o s d e d a t o s N o m b r e d e l f o r m u la r io ( c / s e x t e n s ió n ) : R e c o r d S o u r c e : |I----------------------------------------------------------------3 S e l e c c i o n e u n a l a b l a o c o n s u l t a d e la lis ta o e s e n b a u n a i m t r u c c i o n C a m p o s d is p o n ib le s : C a m p o s in c lu id o s : G e n e r a r e l fo r m u la r io 3. Sustitución G lobal: Que perm ite reemplazar el contenido de un campo por un nuevo contenido. Eüü S u s t it u c ió n g lo b a l M " 1111 ■ 1 1 — — DIRECCION ■ D IS T R IT O FECNAC NO M BRE PESO SEXO TELEFONO R eem plazar con: 382 Cancelar G r u p o E d it o r i a l Megabyte- CAPÍTULO IX: Manejo de Base de Datos LISTADOS ORDENADOS YPOR CONDICION (FILTRADOS) Consiste en crear programas que perm itan listar los registros en form a orde­nada y por una condición; es decir, mostrar sólo un grupo de registros, aquellos que tienen una determinada característica, por ejemplo: M ostrar sólo los que viven en Lambayeque, los que nacieron en un año determinado, etc. A PLIC A C IÓ N D E SA R R O L L A D A N° 55 La siguiente aplicación perm ite que el usuario escriba una condición y al hacer c lic k en el botón O K , se deben visua liza r los registros que cum plen dicha condición, además se deben ordenar de acuerdo al botón de com an­dos donde se haga C lick. C O N D IC IO N •••> ' |f O K 1 TO D O S 1 SALIR | RELACION DE AMIGOS HOMBRE IDIRECCION DISTRITO TELEFONO FECNAC - ► CARLOS LA MADRID LOS INCAS N* 1020 LA VICTORIA 202020 20/10/1970 CARLOS MORALES AREQUIPA N* 364 CHICLAYO 273858 18/07/1969 DANIEL INFANTE !AV. LOS LAURES 234 CHICLAYO 203347 16/12/1970 DORIS PERALES Av. BALTA 345 CHICLAYO 232224 01/05/1970 JORGE RIOS LA LIBERTAD 123 CHICLAYO 237143 18/09/1976 JUAN JOSE WIRACOCHA 335 LA VICTORIA 205048 01/05/1968 LILIANA CAMPOS MARIA IZAGA 564 CHICLAYO 237890 10/10/1972 «1LUIS BALAREZO 1 I TACNA 765 LAMBAYEQUE 287678 05/03/1958 T _. ......_lT O R D E N A D O P O R: N om bre | D ire cció n | D istrito | T e lé fo n o | F e cha de N ac. | Distrito y N om bre j IJd. debe ingresar las condiciones en form a correcta. Por ejem plo, para mostrar: Los que viven en C h ic la y o : D IST R IT O = "C H IC LAYO " Los que su serie de teléfono es 20: T E L E F O N O L IK E "20*" Los que nacieron en 1970: YEAR (F E C N AC ) - 1970 I .os que su nombre empieza con la letra C: N O M B R E L IK E "C*" Los que viven en la V ic to ria y nacieron en el mes de A b ril: D ISTR IT O = "IA V IC TO RIA" A N D M O N T H (F E C N A C ) = 4 M ostrar los que tienen sexo masculino: SE X O = "M" NOTA: Tara indicar los campos a visualizar en el listado y para asignarle un ancho determinado a cada campo, debe hacer click con el botón derecho en el control / 'ibgrid, mientras lo está diseñando y elegir la opción editar. Í P G r u p o E d it o r i a l Megabyte 383
  • 194.
    | S ¡1 ¡ | ^ VISUAL BASIC como debe ser... INSTRUCCIONES DE LOS CONTROLES: MUY IMPORTANTE R esp ete los e sp a c io s en b la n co q u e se d eja n en los ejem plos. E n tre la s c o m illa s y la p a la b r a O R D E R y en tre la p a la b r a W H E R E y la s c o m illa s d e b e d e ja r sie m p re un e sp a c io en b la n co . ‘ ’ S E LE C T * F R O M A M IG O S W H E R E ” Instrucciones del botón OK. Private Sub Commandl_Click() On Error GoTo MIRA Datal.ReconlSource-“SELECT*FROMAMlGOSWHERE “+Textl D atal.Refresh If D atal.Recordset.RecordCount = 0 Then MsgBox “No existen registros con la condición ingresada ”,16, “Lo siento ” End If Exit Sub MIRA: MsgBox “LA CONDICIONINGRESADAESINCORRECIA ”, 64, “VERIFIQUE" Textl .SetFocus End Sub Instrucciones de botón TODOS. P riv a te S u b C o m m a n d 2 _ C lic k () T extl = D a ta l.R e c o rd S o u rc e - “S E L E C T * F R O M A M IG O S ” D a ta l.R e fr e s h E n d Sub Instrucciones de botón NOMBRE. P riv a te S u b C o m m a n d 4 _ C lic k () I f T rim (T extl) = Then Datal.RecordSource = “SELECT* FROM AMIGOS ORDER BY NOMBRE" E lse Datal.RecordSource^ "SELECT* FROMAM1GOSWHERE “+Textl+ "ORDER BY NOMBRE" E n d I f D a ta ! .R efresh E n d Sub Instrucciones de botón DIRECCION. P riv a te S u b C o m m a n d 5 _ C lic k () IfT r im (T e x tl) = Then „ „ Datal.RecordSource = “SELECT * FROM AMIGOS ORDER BY DIRECCION E lse Datal RecoidSource= "SELECT* FROM AMIGOS WHERE “+Textl+” ORDER BY DIRECCION" E n d I f D a ta l .R efresh E n d Sub 384 G r u p o E d i t o r i a l Megabyte“ CAPÍTULO IX: Manejo de Base de Datos Instrucciones de botón DISTRITO. P riva te S u b C o m m a n d 6 _ C lick() I f T rim (T extl) - "" Then Datal. RecordSource= ’’SELECT * FROM AMIGOS ORDER BY DISTRITO ” E lse Datal. ReconlSoi we - ' SELECT * FROM AMIGOS WHERE ‘' + Textl + ' ‘ ORDER BYDISTRI10 ' ’ E n d I f D a ta l .R efresh E n d S u b Instrucciones de botón TELEFONO. P riva te Sub C o m m a n d ? _ C lick() I f T rim (T extl) = Then Datal.RecordSource- "SELECT * FROM AMIGOS ORDER BY TELEFONO ” E lse Datal.ReconISowve= "SELECT* FROMAMIGOSWHERE “+Textl+ “ ORDER BYTELEFONO” E n d I f D a ta l.R e fre sh E n d S u b Instrucciones de botón FECHA DE NACIMIENTO. P ríva te Sub C o m m a n d 8 _ C lick() IfT r ím (T e x tl) = Then Datal.RecordSource = “SELECT * FROM AMIGOS ORDER BY FECNAC” E lse Datal.RecordSource^ “SELECT* FROMAMIGOSWHERE“+Textl + “ORDER BY FECNAC” E n d I f D a ta l.R efresh E n d Sub Instrucciones de botón DISTRITO Y NOMBRE. P ríva te S u b C o m m a n d 9 _ C lick() IfT r im (T e x tl) = Then Datal.ReconlSowre-“SELECT*FROMAMIGOSORDERBY DISTRITO,NOMBRE" E lse D a ta l .R e c o rd S o u rc e - "S E L E C T * F R O M A M IG O S W H E R E “+ T extl + ” O R D E R B Y D IS T R IT O ,N O M B R E ” E n d I f D a ta l.R efresh E n d S u b G r u p o E d it o r ia l Megabyte 385
  • 195.
    o H> VISUALBASIC como debe ser.. V A R IA B L E S T IP O R E C O R D SE T P odem os crear y u tiliza r en nuestros p ro g ra m a s variables tipo R ecordSet con la fin a lid a d de escrib irlo s con m a y o r fa cilid a d . Una va ria b le tipo R e c o rd se t es un o b je to que representa a to d o s los registros de la tabla que se tiene activada. H asta hora cada vez que nos q uerem os referir a la tabla dentro de un p ro g ra m a se ha u tiliza d o la in stru c c ió n Datal.Recordset, p e ro esta instrucción la p o d e m o s a sig n a r a una variable R ecordset y sólo tra b a ­j a r co n esta variable. Por ejemplo, suponiendo que hemos d efin id o la variable R de tipo Recordset a la cual le hemos asignado Datal.Recordset, entonces si queremos ir al siguiente registros sólo bastará con escribir R.MoveNext. En lugar de es­c rib ir Datal.Recordset.FindFirst C, sólo se escribiría R.FindFirst C. Para referirnos a un solo campo se puede u tiliz a r F IE L D S que representa a todos los campos de una tabla. Se puede u tiliz a r de las siguientes maneras: R.Fields(“Nombre”) R.Fields![nombre] R.Fields(Número) Donde Nombre, es el nom bre del cam po al cual se desea re fe rir y Núm ero es la posición del campo en la estructura de la tabla (el prim er campo tiene el núm ero cero). Para u tiliz a r la variable tip o Recordset, debe c u m p lir tres (3) aspectos importantes. 1. Declarar la variable en la ventana de declaración del form u la rio o módulo. ü Proyeclol - Form! (Código) HHE2I |(General) |(Declaraciones) jrJ g Dim R As Recordset SjjJ 2. A signar D a ta l .Recordset a la variable en el evento Form Actívate usando la instrucción SET. M Pioyecto1 - F ofm l (Código) l - IO|x| " 3 P r iv a t e Sub F o r m _ A c tiv a te () ~T¡ Set R = D a ta l.R e c o rd s e t _ j End Sub f c j ä i i j 386 G r u p o E d i t o r i a l M e g a b y t e ^ CAPÍTULO IX: Manejo de Base de Datos A c tiv a r la c a s illa de M ic ro s o ft D A O 3.51 O b je c t L ib ra ry que se encuentra en la opción Proyecto/Referencias: ( R e f e r e n c ia s d is p o n ib le s : M ic r o s o ft A g e n t S e r v e r 2 .0 M ic r o s o ft A g e n t S e r v e r E x te n s i o n s 2 .0 — M ic r o s o ft C o n n e c t io n D e s i g n e r I n s t a n c e 1 .C ; M ic r o s o ft C o n n e c t io n D e s i g n e r v 6 .0 M ic r o s o ft D A O 2 .5 / 3 .5 1 C o m p a tib ility L ib ra r— M ic r o s o ft D A O 3 .6 O b j e c t L ib ra ry M ic r o s o ft D a t a A d a p t e r L ib ra ry M ic r o s o ft D a t a B i n d in g C o lle c tio n M ic r o s o ft D a t a E n v ir o n m e n t 1.0 M ic r o s o ft D a t a E n v ir o n m e n t E x te n s ib ili ty O t M ic r o s o ft D a t a E n v i r o n m e n t I n s t a n c e 1 .0 M ic r o s o ft D a t a F o r m a tt i n g O b je c t L ib r a r y M ic r o s o ft D a t a R e D o rt D e ^ io n e r v 6 .C J A y y d a ,L0ib ry , M ic ro s o ft D A O 3 .5 1 O b je c t L ib ra ry U b ic a c ió n : C :A R C H IV O S D E P R O G R A M A A R C H IV O S C O M U N E S M IC R O S t I d io m a : E s t á n d a r Si no se activa esta casilla, se visualiza el siguiente mensaje de error al ejecutar la aplicación: Microsoft Visual Basic Error de compilación: N o se ha definido el tipo definido por el usuario Ayuda Cada campo se considera com o un objeto F IE L D que contiene propiedades como por ejemplo: PROPIEDAD VALUE Devuelve el contenido del campo, Por ejem plo, para m ostrar el número telefónico del registro activo de la tabla A m igos en L a b e ll se puede escribir: L a b e ll = R .Fields! [telefono]. Valué Label 1 = R .F ields(“ telefono” ). Valué L a b e ll = R .Fields(3). Valué N O T A : La colección FIELDS y la propiedad V A L U E , Visual Basic las asume en forma predeterminada, esto quiere decir que es opcional escribirlas. Por ejemplo, las instrucciones anteriores también se pueden escribir de la siguiente manera: Label 1 = R ! [telefono] Label 1 = R(“telefono”) Label 1 = R(3) G r u p o E d it o r i a l Megabyte 387
  • 196.
    dV,ÆA % VISUALBASIC corno debe ser.. PROPIEDAD TYPE Devuelve un número que representa el tipo de campo como se ha definido en la estructura de la tabla. Los valores devueltos son: TIPO DE C A M P O (Lógico Si/No) (Entero) (Entero Largo) (M onetario) (Sencillo) (doble) (Fecha) (Texto) O R 1 Boolean 2 Byte 3 Integer 4 Long 5 Currency 6 Single 7 Double 8 Date 10 Text 11 Binario 12 Memo PROPIEDAD ÑAME D evuelve el nombre del campo exactamente com o esta en la estructura de la tabla. „ PROPIEDAD COUNT DEL OBJETO FIELDS D evuelve el número de campos que tiene la tabla. A PLIC A C IÓ N DESARROLLADA N° 56 M o d ific a r el program a anterior de tal manera que el usuario pueda form ar la condición que desea que cumplan los registros para poder visualizarse. Para desarrollar éste programa s e deben mostrar en un L istB o x los nom ­bres de los campos y en otro los operadores para que el usuario pueda seleccionarlos y luego en una cajade textos ingresar el valor. A s í : l° l * l P O N P T if lN : S EX O .. — M --------------------------— ---------------------------------------------------------- N O M B R E 1 D I R E C C I O N [ñ iR T R IT O L U I S B A L A R E Z O P U M A C A H U A 122 C A R L O S M O R A L E S A R E Q U I P A 2 5 6 J O R G E R I O S L A L I B E R T A D 123 J O S E C A S T A Ñ E D A W Í R Á C O C H A 335 T I T n R A M I R F 7 1 f i n n R A n n 4 F¡r M A N U E L C A R B A J A L S A L A V E R R Y 3 4 5 CHI C LA V O CHI C L A V O 2 7 3 8 5 8 2 3 7 1 4 3 1 8 / 0 7 / 6 9 M 1 8 / 0 9 / 7 6 M 6 0 7 0 -------- 2 0 5 0 4 8 5 / 0 1 / 6 8 M 6 5 -------- .1 i n ? ^ R S 7 «S 2 0 5 8 9 7 7 /1 1 / 7 fl M 1 8 / 0 6 / 6 0 M F¡7 6 6 R E G I S T R O S MOSTRADOS > S A L I R I NOTA: En la p ro p ie d a d CAPTION d e l DBgridsedebe m o s trar la c o n d ic ió n q u e e l u s u a rio a fo r m a d o y en u n a e tiq u e ta se debe mostrar la c a n tid a d d e re g is tro s m o s tra d o s . CAPÍTULO IX: Manejo de Base de Datos PASO N° 01: Dibujar los Controles. PASO N° 02: Asignar las propiedades. ETIQUETA Labell Label2. Label3 Label4 TEXTO Textl CAPTION Campo Operador Valor En Blanco TEXT En Blanco C O M A N D O Command 1 Command2 Command3 C AP TIO N Ok Todos &S alir ENABLED False True True C O N TRO L Datai CONTROLDATA DATABASENAM E RECORDSOURCE V ISIB LE Agenda Amigos False C O N T R O L D BG R ID C O N T R O L Dbgri 1 DATASOURCE Datai PASO N° 03: Escribir las instrucciones de los controles. Primero debe activar la casilla de M icrosoft D AO 3.51 Object Library luego definir la variable R de tipo Recordset. J® Proyectol - Formi (Código) E Ja p a I (General) T J f(Declaraciones) Dim R As Recordset a ï a i G r u p o E d i t o r i a l Megabyte 389
  • 197.
    |¡1 ¡¡É »VISUAL BASIC como debe ser... Instrucciones del Evento Forni Actívate. Estas instrucciones muestran en L is t l los nombres de los campos y en L ist2 los operadores lógicos, además asigna a la variable R el D atal.R ecordset. D im N, X A s In teg er S e t R = D a ta l.R e c o rd se t N = R .F ields.C ount R em M uestra los n om bre de los cam pos en L is tl F o r X = 1 To N L is tl .A d d ltem (R (X ).N am e) N e x t X R em M uestra los o p era d o res lógicos en L is tl L ist2 .A d d ltem “= ” L ist2.A ddItem “> ” L istl.A d d lte m “< “ L istl.A d d lte m L istl.A d d lte m “< = ” L istl.A d d lte m “< > ” L is tl.A d d lte m “L ike ” T extl = E n d S u b Instrucciones de la Cajas de Texto. Estas instrucciones perm iten activar el botón O K cuando el usuario ingresa el valor que form a la condición. Se debe program ar en el Evento Change. P rív a te S u b T e x tl_ C h a n g e () I f T rim (T extl) = Then C o m m a n d l .E n a b led = F alse E lseC o m m a n d l .E n a b led = True E n d I f E n d Sub Instrucciones del Botón TODOS. Estas instrucciones visualizan todos los registros. P rív a te S u b C o m m a n d l _ C lick() D a ta l.R e c o rd S o u rc e = “S E L E C T * F R O M A M IG O S " D a ta l .R efresh T extl - E n d Sub 390 G r u p o E d it o r ia l Megabyte ^ CAPÍTULO IX: Manejo de Base de Datos Instrucciones del Botón OK. listas instrucciones permite visualizar los registros que cum plen la condi­ción que el usuario a form ado. I’rivate S u b C o m m a n d l_ C lic k () D im TIP O A i Byte D im C A s String On E rror GoTo M IRA TIPO - R (L istl.L istIn d ex).T yp e S elect Case TIPO C ase 1 C = L is tl + S p a c e (l) + L is tl + S p a c e (l) + T extl C ase 2 To 7 C = L is tl + Space( 1) + L is tl + Space( 1) + T extl C ase 8 C = L istl+ S p a ce( 1 )+ L istl+ S p a c e ( 1)+ ”C V D A TE ( ‘ “+ T extl + “ ') ” C ase 10 C - L is tl+ S p a c e ( l) + L is tl + S p a c e (l) + + T extl + E nd Select D B G r id l. C aption = “ C O N D IC IÓ N : “ + C Datal.RecordSource = "SELECT* FROM AMIGOS WHERE" + Space(I )+C D a ta l.R e fre sh N R = D a ta l .R eco rd set.R eco rd C o u n t I f N R = 0 Then MsgBox “NO HAY REGISTROS CON LA CONDICIÓN”, 16, “VERIFIQUE" E lse Label4 = “R E G IS T R O S M O S T R A D O S — > ” + Str(N R ) E n d I f E xit Sub M IR A : M sg B o x “N o fo r m ó la condición c o rre c ta m e n te ”, 64, “V E R IF IQ U E ” E n d Sub El botón S a lir d ebe ten er la in stru cció n E N D . NOTA Para que la condición se forme correctamente tenga cuidado al escribir los espacios en blanco y los apostrofes ( ‘) que se utilizan en el botón de OK (Commandl). En algunos casos se utiliza la función Space(l) para asegurar que se escriba im espacio en blanco y la función Cdate, similar a CvDate para convertir un dato tipo texto a fecha. G r u p o E d i t o r i i . Megabyte 391
  • 198.
    VISUAL BASIC comodebe ser. A PLIC A C IÓ N D E SA R R O LL A D A N°57 La siguiente aplicación permite ingresar datos utilizando diversos controles de en­trada como Option Buttom, Check, etc. Además se muestra el ejemplo de c ómo utilizar una variable tipo Recordset para programar de una manera más fácil y rápida. M A N I I N IM II ; d»i a m « » Apellidos jfx N o m b res f u u JO ■ <*' M ar'iaria C ' V arde Cicto jl “ El .P5T I «cha .«te lr.»tstipoi<í«i .(Î G /Ü 8/1 a a y -g-j I roslado U b40IVOCIOI'«5 • m (><) m Cancelo» ► I » i l Base de Datos: Instituto. Apellidos Nombres Tumo Ciclo Aula Situación Pensión Traslado Trabaja Fecha Observaciones Tabla: Alumnos. Text 25 Text 25 Text 1 Integer Text 3 Text 1 Single Boolean (Si/No) Boolean (Si/No) Date/Time Memo DESARROLLO: En la ventana de declaraciones del formulario, declare la variable R E G de tipo Recordset y en Form Actívate asigne Datal.Recordset a la variable REG. Esto permite reemplazar durante todo el programa Datal.Recordset por REG. Puede utilizar cualquier otra variable y si desea utilizarla en varios formularios de una aplicación, debe declarar la variable en un módulo. n g m 1 392 G r u p o E d it o r i a l Megabyte CAPITULO IX: Manejo de Base de Datos D IB U J A R L O S C O N T R O L E S IgE TI Z L f l e x i l Label2 Frame2 ¡Text2 ' f“* Q ption2 ; ; í"~ OplionS Frame3 f~~ Option4 I ; r - o p tio n s i : <" Option6 : <" Option? Frame4 I C h e c k 1 Labels jCombol _ d Label4 ¡Combo2 LabeIS (î ext3 Label6 1T exl4 ; | t ex(5 j H | 4 I D a ta i NOTA En la segunda ventana sólo debe dibujar un Dbgridl. ASIGNAR LAS PROPIEDADES El control Datal, Dblistl y Dbgrid (página N° 2), deben tener las propiedades que los ligan con la base de datos. C O N TRO LD ATA C O N T R O L DATABASENAME RECORDSOURCE Datal Agenda Amigos CO N TRO L D BLIST C O N TR O L ROW SOURCE L IS T F IE L D Dblistl Datal Apellidos CONTROL DBGRID C O N T R O L DATASOURCE Dbgril Datal El resto de controles deben tener las propiedades como se muestra en la aplicación a desarrollar. El Combol debe tener en su propiedad LIST las palabras desde Primero hasta Décimo. El C o m b o 2 debe tener en su propiedad LIST los números desde 101 hasta 108. El control U p D o w n 1 debe tener: Propiedad Valor Buddy Control Text4 Increment 1 Max 160 Min 1 Value 50 Wrap True ¡y g |¡r Grupo Editorial Megabyte 393
  • 199.
    i S Sl ^ VISUAL BASIC como debe ser... INSTRUCCIONES DE LOS CONTROLES Crear los procedimientos: Activar, Desactivar y Pregunta. Sub Activar() Frame 1. Enabled = False D BListl .Enabled — True Command ¡.Enabled = True Command!.Enabled = True Commands.Enabled = True Command4.Enabled = False Command5. Enabled = False End Sub Sub Desactivar() Frame 1.Enabled = True DBListl.Enabled = False Commandl. Enabled — False Command2. Enabled = False Commands .Enabled = False Command4. Enabled = True Command5.Enabled = True End Sub Sub Pregunta() Rem Pregunta si no hay registros I f REG.RecordCount = 0 Then D BListl.Enabled — False Command2. Enabled = False Command3. Enabled = False End I f End Sub Instrucciones del Form Activate Private Sub Form_Activate() Set REG = D atal.Recordset Textl = Text2 = “ ” Text3 = “160" Text4 - Date Text5 = Combo 1 .Listlndex = 0 Combo2.ListIndex = 0 Option 1. Value = True Option4. Value - True Check 1.Value = False Check2. Value = False UpDownl. Visible - False Frame 1 .Enabled = False Command4. Enabled = False Commands.Enabled = False Pregunta End Sub Instrucciones del Botón Nuevo Private Sub Command!_Click() REGAddNew Form_Activate Desactivar Textl.SetFocus End Sub 394 Instrucciones del Botón Modificar Private Sub Command!_Click() REG Edit Desactivar Textl.SetFocus End Sub G r u p o E d i t o r i a l Megabyte CAPÍTULO IX: Manejo de Base de Dalos Instrucciones del Botón Eliminar Private Sub Command3_Click() Dim RESP As Byte KESP=MsgBax(“ESlASEGURODEELIMINARESrEREGISrRO”}36,"CUIDADO”) I f RESP = 6 Then REG. Delete REGM oveFirst Form_Activate DBListl.ListField = “APELLID O S” End I f Pregunta End Sub Instrucciones del Botón Grabar Private Sub Command4_Click() REG(O) = Textl ‘APELLIDOS REG( 1) = Text2 ‘NOMBRES Rem TURNO IfO p tio n l Then REG(2) - “M ” I f Opt ion2 Then REG(2) = “T" I f Option3 Then REG(2) = “N ” REG(3) - Combo 1.Listlndex + 1 ‘CICLO REG(4) = Combo2. Text ‘AULA Rem SITUACION lfO ption4 Then REG(5) = "R " ‘REGULAR I f OptionS Then REG(5) = “M ” ‘1/2 BECHA I f Optionó Then REG(S) = “B " ‘BECA I f Option7 Then REG(S) = “O " ‘OTRO REG(6) = Val(Text3) ‘PENSION I f Check 1 Then REG(7) = True Else REG(7) = False IfC heck2 Then REG(8) = True Else REG(8) = False REG(9) = CVDate(Text4) ‘FECHA DE INGRESO Rem SI NOMBRE OBSERVACIONES SE GRABA UN ESPACIO EN BLANCO I f Text5 = Then REG(IO) = “ “ Else REG(IO) = TextS End I f REG Update DBListl .ListField = “APELLIDOS" Activar End Sub Instrucciones del Botón Cancelar Private Sub Command5_Click() REG CancelUpdate D atal.Refresh ‘Primer Registro DBListl jC lick Activar End Sub G r u p o E d i t o r i a l Megabyte 395
  • 200.
    ¿ 9 3^ VISUAL BASIC como debe s e r.. Instrucciones del Control Dblistl Private Sub DBListl_Click() Dim C As String C = “APELLIDOS = + DBListl + D atal.Recordset.FindFirst C Textl = REG(O) ‘APELLIDOS Text2 = REG( 1) ‘NOMBRES Rem TURNO IfREG(2) = “M ” Then Optionl = True IfREG(2) = “T" Then Option2 = True IfREG(2) = “N ” Then Option3 = True Combol.Listlndex = REG(3) -1 ‘CICLO Combo2.Text = REG(4) AULA Rem SITUACION IfREG(5) = “R ” Then Option4 = True ‘REGULAR IfREG(5) = “M ” Then Option5 = True ‘1/2 BECA IfREG(5) = “B " Then Optionó - True ‘BECA IfREG(5) = “O" Then Option7 = True ‘OTRO Text3 = REG(6) ‘PENSION lfREG(7) Then Checkl = 1 Else Checkl ~ 0 IfREG(8) Then Check2 = 1 Else Check2 = 0 Text4 = REG(9) ‘FECHA DE INGRESO TextS = REG(IO) End Sub Instrucciones de los Option Button (Muestran la Pension) Private Sub Option4_Click() Text3 = 160 UpDownl. Visible = False End Sub Prívate Sub Option5_Click() Text3 = 80 UpDownl.Visible = False End Sub Prívate Sub Optionó_Click() Text3 = 0 UpDownl.Visible = False End Sub Prívate Sub Option7_Click() Text3 = 50 UpDownl.Visible = True End Sub Instrucciones del Control UpDown2 (Fechla de Inscripción) Prívate Sub UpDown2_DownClick() Prívate Sub UpDown2_UpClick() Text4 = CVDate(Text4) - 1 Text4 = CVDate(Text4) + 1 End Sub End Sub Instrucciones del Botón Salir Prívate Sub Commandó_Click() I f MsgBox( “ESTA SEGURO DE SALIR ” , 36, “CUIDADO ") = 6 Then End End Sub CAPÍTULO IX: Manejo de Base de Datos j MODIFICAR VARIOS REGISTROS A LA VEZ Se puede hacer un program a para m o d ific a r o adicionar varios registros al m ism o tiem po usando el control D B g rid y los métodos de transacciones: BeginTrans, C om m itTrans y RollbackTrans. BEGINTRANS Com ienza una nueva transacción. COM M ITTRANS F inaliza la transacción actual y guarda los cambios. ROLLBACKTRANS F inaliza la transacción actual e ignora las m odificaciones realizadas. Res­taura las bases de datos al estado en que estaban cuando comenzó la tran­sacción actual. A P L IC A C IO N D E SA R R O L L A D A N° 58 s¡. MODIFICACION DE REGISTROS N O M B R E D IR EC C IO N D IS T R IT O TELEFO N O FEC N AC C AR LO S M O R A LE S A R E Q U IP A 365 CHICLAYO 202 0 2 0 1 8 /0 7 /1 9 6 9 D A N IE L ALA R C O N W IR A C O C H A 315 LA V IC T O R IA 232G89 1 5 /1 0 /1 9 6 6 L IL IA N A A L A R C O N M A R IA IZA G A CHICLAYO 227191 2 0 /1 2 /1 9 9 0 M A N U E L C AR B A JA L S A L A V E R R Y 987 CHICLAYO 209 8 7 5 1 8 /0 6 /1 9 6 0 M A R IA C A S T A Ñ E D A W IR A C O C H A 32 5 LA V IC T O R IA 205048 2 3 /1 2 /1 9 9 8 T IT O R A M IR E Z EL D O R A D O 45G J.L.O . 236975 0 7 /1 1 /1 9 7 0 1 ....... ► i Ë m pezaf tas M o d ifica cio n e s~ ij G rabar todas lass M o d ifica cio n e s i Ignorar todas las M o d ifica cio n e s ►M 1 D ib u je los controles y asígneles sus propiedades respectivas. 2 Escriba las siguientes instrucciones: Instrucciones del Form^Load Prívate Sub Form_Load() Command! .Enabled = True Command2.Enabled = False Command3. Enabled = False DBGridl .AllowUpdate = False DBGridl .AllowAddNew = False Datal.Refresh End Sub Instrucciones Botón Grabar Private Sub Command2_Click() CommitTrans Form_Load End Sub Instrucciones Botón Empezar Private Sub Commandl_Click() BeginTrans DBGridl .AllowUpdate = True DBGridl .AllowAddNew = True Commandl .Enabled = False Command2. Enabled = True Command3. Enabled = True End Sub Instrucciones Botón Ignorar Private Sub Command3_Click() Rollback FormJLoad End Sub G r u p o E d i t o r i a l Megabyte 397
  • 201.
    Â VISUAL BASICcomo debe ser... ■'"¿■-.y MANEJO DE FOTOS Usando V isual Basic usted puede grabar fotos en sus tablas. Para e llo, debe d e fin ir el campo tipo B in ario si la tabla la crea con V isual Basic o de tipo O bjeto O L E si la crea con Access. Para m ostrar la fo to grabada en un registro puede u tiliz a r el co ntrol Image. Este control tiene las propiedades DataSource y D ataField igu al que las cajas de texto para poder conectarse con el campo que tiene la foto. Las fotos a u tiliz a r deben estar escaneadas y almacenas en una carpeta deter­minada. En esta aplicación la base de datos se llam a P erso n a l y la tabla E m p lea d o s cuya estructura tiene cuatro campos es: N o m b re Text 3 0 D irección Text 2 5 Telefono Text 10 F oto B inario A P L IC A C IÓ N D E SA R R O L L A D A N° 59 L a siguiente aplicación perm ite consultar, adicionar, m o d ific a r y e lim in a r registros incluyendo la foto de cada uno de ellos. -|Pl*l I ALARCON GARCIA LILIANA CASTAÑEDA PACHECO JUAN MEDINA CHISCUL CESAR PORRO CHILLI MARCO RAMIREZ VASQUEZ TITO TERRONES PALACIOS LOURDES d Opciones Disponibles ADICIONAR I MODIFICAR I ELIMINAR Inform ación de los Empleados FOTO NOMBRE |ALARC0N GARCIA LILIANA f e * « - V - DIRECCION |SANJ0SE 6786 W — W . . TELEFONO |a2124 t i Ê L Â k Cuando se elige la opción A d ic io n a r o M o d ific a r se m uestran otros botones para poder c u m p lir con dicha opción: PO [ALARCON GARCIA LILIANA CASTAÑEDA PACHECO JUAN MEDINA CHISCUL CESAR PORRO INFANTES OSCAR RAMIREZ VASQUEZ TITO TERRONES PALACIOS LOURDES Opciones Disponibles .ADICIONAR I MODIFICAR I ELIk Inform ación de los Empleados NOMBRE P ° ÍIRRO INFANTES OSCAR DIRECCION 456 TELEFONO 666968 .S in fo te ___ J CAPITULO IX: Manejo de Base de Datos ^ Ü H C ua nd o se elige la opción elim inai; se muestra una ventana de advertencia: % EMPLEADOS NO M BRES TE ALARCON GARCIA LILIANA CASTAÑEDA PACHECrg ri ij i .t MEDINA CHISCUL CE! PORRO INFANTES OS RAMIREZ VASQUEZ T JJ TERRONES PALACIOS ™ O pciones D isponibles ADICIONAR I MODIFIc w i i n Info rm a ció n de los Em pleados NOMBRE FOTO [TERRONES PALACIOS LOURDES ESTA SEGURO DE ELIMINAR A ESTE EMPLEADO GRABAR CANCELAR Seleccionar su Foto — Siojffto 1 C uando hace c lic k en el botón S eleccio n a r su F oto debe buscar la carpeta donde grabó las fotos escaneadas. En el ejem plo, las fotos han sido graba­das com o *.B M P : B u sca r en. f E M P L E A D O S Jgaj e » | HST m l ^ C A S T A Ñ E D A P A C H E C O J U A N .b m p j S j C H I R I N O S P A S T O R O S C A R .b m p j g f C O R O N A D O V E N T U R A H E C T O R .b m p J P f F E R N A N D E Z G U E R R E R O A N A X IM A N D R O .b m p 45% L I Z A A R A U J O C A R L O S .b m p ggf M E D I N A C H I S C U L C E S A R .b m p JLl_________________________________1 ^ M O R A L E S J U L I A N C A R L ^ ■ P A C H E C O R O Q U E M IR E l ^ r P O R R O C H U L L I M A R C O P O R T A L E S G R A N A D O S d S R A M I R E Z S U A R E Z LILI/ R A M I R E Z V A S Q U E Z T IT -îJ .N o m b r e d e a r c h iv o : A b r ir A r c h i v o s d e tip o : ¡ F o t o s D is p o n ib le s I A b r ir c o m o 3 ÓI0 le c t u r a " 3 DESARROLLO DE LA APLICACIÓN P A S O N ° 01: D IB U J A R L O S C O N T R O L E S . Labell Frame2 LabeC Í t S J T R a m e l Com mand! ! Command2 1 Com mand31 Label3 ( f ex(2 LabeM (r^T Command4 I | n | •< |Pa(a1 T jÑ I Command5 G r u p o E d i t o r i a l Megabyte Label5 CommandG Command? 399
  • 202.
    |111¡¡1|> VISUAL BASICcomo debe ser... PASO N° 02: A S IG N A R L A S P R O P IE D A D E S A LO S C O N T R O LE S . Al control Datal asígnele las propiedades D a t a B a s e N a m e y RecordSource, al D b c o m b o l las propiedades RowSource, Listfield y en su propiedad Style asígnele el valor 1 y estire el control para visualizar varios registros. A las cajas de texto y al control Image 1 asígneles en su propiedad DataSource y DataField los campos correspondientes. A los botones de comandos, asíg­neles en su propiedad Caption el texto c o m o se muestra en la aplicación a desarrollar. P A S O N ° 03: E S C R IB IR L A S IN S T R U C C IO N E S . D e fin ir las va ria b le s a n iv e l de fo rm u la rio . O ption E xp licit D im R E G A s R ecordset Instrucciones de los procedimientos a crear Sub DESACTIVARO F ra m e 1.E n a b led = F alse C om m and4.V isible = F alse C om m ands.V isible = F alse C o m m a n d ó .Visible = F alse C om m and7.V isible = F alse Im age 1.Stretch = True Im a g e 1 .B orderStyle = 1 End Sub Instrucciones del Evento Form_Activate P riv a te Sub F o rm _ A c tiv a te () D E SA C T IV A R D a ta l.V isib le = F alse S e t R E G = D a ta l.R e c o rd se t E n d S u b In s tru c c io n e s d e l b o tó n A d ic io n a r P riv a te S u b C o m m a n d 1 _ C lic k () A C T IV A R R E G A d d N e w T extl .S et F ocus E n d S u b In s tru c c io n e s d e l b o tó n M o d ific a r P riv a te S u b C o m m a n d 2 _ C lic k () A C T IV A R REG. E d it T extl. S et F ocus E n d S u b Sub ACTIVARQ F ram e 1.E n a b le d = True C om m and4. Visible = True C om m and5. Visible = True C o m m a n d ô .Visible = True C om m and7. Visible = True Im age 1.Stretch = True End Sub 400 G r u p o E d it o r ia l Megabyte In s tru c c io n e s d el b o tó n E lim in a r P rív a te S u b C o m m a n d 3 _ C lic k () IfMsgBox( "ESTA SEGURO DE ELIMINARA ESTE EMPLEADO",36, "CUIDADO ")=6 Then R E G D e le te D a ta l.R e fre sh E n d I f E n d S u b In s tru c c io n e s del b o tó n G ra b a r P rív a te S u b C o m m a n d 4 _ C lick() REG. U pdate D B C o m b o l .L istF ield = "N O M B R E " D E SA C T IV A R E n d S u b In s tru c c io n e s d e l b o tó n C a n c e la r P rív a te S u b C o m m a n d 5 _ C lic k () REG. C a n cel U pdate D E SA C T IV A R E n d S u b In s tru c c io n e s d e l b o tó n S e le ccio n a r su F o to P rív a te S u b C o m m a n d ó _ C lic k () ____________ ___________ R em C arácter N ° A L T + 124 ▼ ▼ ▼ C o m m o n D ia lo g l .F i l t e r - "F otos D isp o n ib les* .b m p T o d a s (*. * j|* . * " C o m m o n D ia lo g l. S h o w O p e n Im a g e l.P ic tu r e = L o a d P ictu re( C o m m o n D ia lo g l.file n a m e ) E n d S u b In s tru c c io n e s d e l b o tó n S in F o to P ríva te Sub C o m m a n d 7 _ C lic k () Im a g e 1 .P icture = L o a d P ictu re("") E n d S u b In s tru c c io n e s d e l c o n tro l D B c o m b o l - E v e n to C hange P rív a te S u b D B C o m b o l_ C h a n g e () D im C A s String C = "N O M B R E L1KE + D B C o m b o l + R E G F in d F irst C I f R E G N o M a tc h Then F ra m e l .V isible = F alse E lse F ram e 1 .V isible = True E n d I f E n d S u b In s tru c c io n e s d el c o n tro l D B c o m b o l - E v e n to C lic k P ríva te Sub D B C o m b o l_ C lic k (A re a A s In teg er) D B C o m b o l J C h a n g e E n d Sub CAPÍTULO IX: Manejo de Base de Datos ^Í¡É11I^ G r u p o E d i t o r i a l Megabyte 401
  • 203.
    VISUAL BASIC comodebe ser... MANEJO DE VARIAS TABLAS Para m anejar dos o más tablas de una base de datos se puede u tiliz a r un control Data para cada una de ellas o u n ir las tablas y utiliza rla s con un solo control Data. Esto depende del tipo de aplicación que se desea desarrollar. La siguiente aplicación muestra un ejem plo de m anejar dos tablas con un solo co ntrol Data para cada una de ellas y tam bién un solo control Data para las dos. Se tiene una Base de Datos llam a T IE N D A que contiene dos tablas: V E N ­D ED O R E S y V E N T A S con la siguiente estructura: V E N D E D O R E S C odigo Text 3 N om bre Text 30 Telefono Text 10 VENTAS Codigo Text 3 FechaVenta Date M onto C urrency D istrito V e nta Text 20 FechaVenta es la fecha en la cual cada vendedor re a liza la venta y DistritoVenta es el nom bre del d istrito donde se realiza la venta. La aplicación debe p e rm itir visua liza r las ventas realizadas p or cada vende­dor, registrar las ventas y listarlas en fo rm a general, por d is trito o por fecha. Para una m ayor com odidad, se debe realizar en un sólo fo rm u la rio usando el co ntrol SsTab, com o se muestra a continuación: U S O D E V A R IA S T A B L A S :TaP v e n t a s ! V E N D E D O R E S T R E G IS T R A R X JU por JU LIO D A V I LA T E R E S A U B ILLU S N O EM I M O N TA Ñ O JO RG E CASTR O V E R SU S V E N T A S D A T O S D E L V E N D E D O R CODIGO N O M B R E TELÉFO N O 1232426 001 001 001 V E N T A S R E A LIZ A D A S FE C HAI 0 3 /0 1 /0 0 10/0 2 /0 0 2 2 /0 2 /0 0 M O N T O lD IS T R IT O 5 0 ETEN 50 J.L.O 600 TU M AN [ Mi < [v e n d e d o r e s ► T h! í h ] < [v e n t a s ► | h ) | n |< [ i n f o r m e ► [h] SA LIR 402 G r u p o E d i t o r i a l Megabyte" CAPITULO IX: Manejo de Base de Datos „ U S O D E V A R IA S T A B L A S R E G IS T R A R VEN D ED O R ES D A T O S D E L V E N D E D O R CODIGO JÖÖ4 NOMBRE TELÉFONO ÜORGE CASTRO |201665 IN F O R M A C IÓ N D E L A V E N T A R E A L IZ A D A CODIGO 1004 ( y FECHA DE V E N T A 11 4 /0 2 /0 2 GRABAR D IS TR ITO DE V E N TA í " " X M ONTO I.. CANCELAR I H| < I VEN D ED O R ES ► | » i) I h I < [V E N TAS ► | H | | l < H ¡ INFORME ► | H ] SAUF! En las dos primeras páginas cada tabla se maneja con su respectivo control Data, pero en la tercera se encuentran unidas y se u tiliza un solo control Data. En esta aplicación se u tiliz a n 3 controles Data, el D a ta i maneja la in fo rm a ­ción de la tabla V E N D E D O R E S , el Data2 la in fo rm a ció n de la tabla V E N ­TAS y el co ntrol Data3 maneja la in fo rm a ció n de las dos tablas que se encuentran unidas a través de una instrucción S Q L en una consulta (Q uery) llam ada IN F O R M E . rT n ra U S O D E V A R IA S T A B L A S V E N T A S f R E G IS T R A R f L IS T A D O P O R : _____________________________ ( * D IS T R IT O Ingrese el D istrito | V E r | TO D O S | r FE C H A CODIGO N O M B R E TELEFO N O FE C H A l M O N T O l D IS T R IT O ► 001 JU L IO D A V IL A 232426 0 3 /0 1 /0 0 ! 50 ETE N 001 JU LIO D A V IL A 232426 1 0 /0 2 /0 0 50 J.L.O . 001 JU LIO D A V ILA 232426 2 2 /0 2 /0 0 ! 60 0 TU M A N 002 T E R E S A U B ILLU S 362166 2 5 /1 2 /9 9 25 0 L A VIC T O R IA 002 T E R E S A U B ILLU S 362166 0 6 /0 1 /0 0 ! 100 J .L O. 002 T E R E S A U B ILLU S 36 2 1 6 6 0 2 /0 2 /0 0 ! 100 PO M ALCA 002 T E R E S A U B ILLU S 36 2 1 6 6 0 5 /0 2 /0 0 50 PO M ALCA 002 T E R E S A U B ILLU S 362166 2 2 /1 0 /9 9 100 PCI M ALCA 004 JO R G E CASTR O 201665 1 5 /0 2 /0 0 20 0 LA V IC T O R IA < | --------------- — > r [T<| < ¡V E N D E D O R E S ► TÜTl | l < | < ¡V E N T A S » | m | I l<[ 4 IIN FO R M E ► | h ] SA LIR | Antes de comenzar a desarrollar la aplicación debe crear la base de datos y las dos tablas, luego crear una consulta donde se unan las dos tablas anteriores. G r u p o E d i t o r i a l Megabyte 403
  • 204.
    .......... _ ................................o éS R k > VISUAL BASIC como debe ser.. . < UNIENDO TABLAS DE UNA BASE DE DATOS Para u nir dos o más tablas se u tiliz a la instrucción S Q L llam a S E LE C T explicada en la página N° 343. Su sintaxis para u n ir tablas es: SELECT * FROM Nomb_Tablal INNER JOIN Nomb_Tabla2 ON Condición E l asterisco ( * ) indica que al unirse las tablas deben pasarse todos los cam ­pos de ambas tablas. Si Usted, desea ind icar sólo algunos campos debe escribirlos en lugar del asterisco separados por una coma. Por ejemplo: Para u n ir la tabla Vendedores con la tabla Ventas con todos sus campos se debe escribir lo siguiente: Select * From Vendedores InnerJoin Ventas On Vendedores.Codigo=Ventas.Codigo Para u n ir la tabla Vendedores con la tabla Ventas pero sólo los campos C odigo, N om bre Fecha y M on to, se debe escribir en una sola línea lo si­guiente: Select Vendedores.Codigo, Nombre, Fechaventa, Monto From Vendedores Inner Join Ventas On Vendedores.Codigo=Ventas.Codigo Estas instrucciones se deben escribir en la ventana de Instrucciones S Q L que se visualiza al crear las tablas para que al grabarla se obtenga una consulta, donde estén unidas las dos anteriores la cual se puede u tiliz a r casi com o cualquier otra tabla, pero donde no puede adicionar, m odificar, etc., porque es de sólo lectura. N O T A : 1. C u a n d o e s p e c ifiq u e los n o m b re s a v is u a liz a r, debe e s c rib irlo s correctam ente, com o se encuentran en la estructura. Por ejem plo, si escribe N om bres en lugar de N om bre, se muestra el mensaje: E s c r i b a u n v a l o r p a r a e l p a r á m e t r o : | A c e p t a r C a n c e l a r 2. A l u nir las tablas puede aplicar todo lo explicado en el tema de instrucciones SQ L (página N ° 343) como por ejem plo Where, Order By, etc. 404 G r u p o E d i t o r i a l Megabyte CAPITULO IX: Manejo de Base de Datos V E N T A N A PARA E SC R IB IR LA S IN ST R U C C IO N E S SQ L iw V is D a ta :C :A ic h iv o s de pro g ra m a D e v S tu d io V B T IE N D A .m d b Archivo Utilidad Ventana Ayuda i L a j w m _ L d JDJXJ m e SI f Ü 1 Properties .+: 1 0 VE N D ED O R ES é 1 0 V E N TA S »H In s tru c c ió n SQL ~ I -J L is to U s u a rio : a d m *n ^ En esta ventana debe escribir las instrucciones para u n ir las dos tablas. C u a n d o la in s tru c c ió n no a lc a n z a en la v e n ta n a , e l c u rs o r sa lta autom áticam ente a la siguiente línea (no pulse ña tecla E N T E R ). E l b o tó n E je c u ta r (Exécuté), perm ite ejecutar las instrucciones SQ L. Debe u tiliz a r este botón para probar la instrucción escrita. El botón B o r ra r (Clear), borra la instrucción S Q L de la ventana para escribir una nueva. El botón G u a rd a r (Save), pide el nom bre de la C onsulta a crear donde se almacenará el contenido de las dos tablas unidas. Cuando un click en el botón Guardar se muestra el siguiente mensaje, pidiendo el nom bre de la consulta a crear: VisData Escriba el nombre del QueryDef: Aceptar Cancelar G r u p o E d i t o r i a l Megabyte 405
  • 205.
    ^ VISUAL BASICcomo debe ser... < Después de asignar el nombre y hacer click en A c e p ta r, V isual Basic le pregunta si es una consulta de p a so a través de. Haga c lic k en N o. Luego, se muestra el nom bre de la consulta creada ju n to a las dos tablas. En el ejem plo la consulta se llam a In fo rm e . A rc h iv o U tilid a d V e n ta n a A^ a l i g o l » I b EBS5¡mBH3ZEI Si g ; E S * P r o p e r tie s í+ M i V E N D E D O R E S l f . ( p V E N T A S ÉJ É P IN F O R M E _____ g i l I n s t r u c c i ó n S Q L E je c u ta r S E LE C T * F R O M V E N D E D O R E S IN N E R J O IN V E N T A S O N V E N D E D O R E S , c o d ig o — V E N T A S . C O D IG O : L is to U s u a rio : a d m in D E SA R R O L L O D E LA A P L IC A C IÓ N N° 60 PASO N° 01: DIBUJAR LOS CONTROLES !T»i. o¡ Lot. olí (DB Coniol C o m m a n d l L a b e l2 L a b e l J LaboM Labol/ B = Im I < l oXTi ► I h I I m'I « I d <»»<..? V 1 ►!] í M i « i r» v.^-) ► 1 » il Command? j r L«b«l8 J r . ........ C o r n m a n d 2 I O I.«bel1 3 L aboli I Loboli 4 Label I 67 Laboll 0 fr'^rr | t ««»i* Commands Ijñ L jl],. j t E a l i i l i J ' ™ ü j t f l U iL s J " * ^ ' .*J£ D ^ ” 1-’ 406 G r u p o E d i t o r i a l Megabyte-^ CAPITULO IX: Manejo de Base de Datos fH ? IM 1 Ih ^rsrn F i arn e 4 <*“■ O p tio n l C o m m a n d s j C o m m a n d C EF I h I * | p»ta1 ► I » ll | l< | 4 l oal»2 ► 1 M i | w l « Í 0ala3 ► | H l CornM nd? | -------------------- —--------------.--- ------- —---—...................... .... ...........................| PASO N° 02: ASIGNAR LAS PROPIEDADES A LOS CONTROLES CONTROL Datai Data2 Data3 CONTROL DATA DATABASENAME RECORDSOURCE CAPTION Tienda Vendedores Vendedores Tienda Ventas Tienda Informe DECOMBO CONTROL ROWSOURCE LIS T F IE LD DBcombol Datai Nombre DBcombo2 Datai Nombre ETIQ UETAS CONTROL DATASOURCE Label5 Datai Labeló Datai Label7 Datai Label 12 Datai Label 13 Datai Label 14 Datai Ventas Infome STYLE 1 1 DATAFIELD Codigo Nombre Telefono Codigo Nombre Telefono El resto de Etiquetas y Comandos sólo la propiedad Caption como se muestra en la aplicación CAJAS DE T E X T O CONTROL DATASOURCE DATAEIELD Textl Data2 Codigo Text2 Data2 Fechaventa Text3 Data2 Distritoventa Text4 Data2 Monto Text5 En Blanco En Blanco D B G R ID CONTROL DATASOURCE DBgridl Data3 G r u p o E d it o r i a l Megabyte 407
  • 206.
    d S Sf e VISUAL BASIC como debe ser... PASO N" («¡ESCRIBIR LAS INSTRUCCIONES PARA LOS CONTROLES. Instr.. del evento FORM ACTIVATE Instrucciones del botón SALIR Prívate Sub Form_Activate() Prívate Sub Command7_Chck() Frame3. Visible = False End End Sub End Sub PA G IN A N° 01 - VENTAS Instrucciones del botón VER SUS VENTAS Prívate Sub Commandl_Click() DBGridl .Visible = True DatcHRecoidSource = "SELECT*FROMVENIASWHERECODIGO ‘"&Label5& Data2.Refresh If Data2.Recordset.RecordCount = 0 Then MsgBox "El vendedor no ha realizado ninguna venta",64, "Lo siento" E n d lf DBCombol .SetFocus End Sub Instrucciones del Control DBcombol (eventos Changey Click) Prívate Sub DBCombol_Change() Dim DATOS As String DATOS = "NOMBRELIKE & DBCombol & Datal.Recordset.FindFirst DATOS DBGridl. Visible = False If D atal .Recordset.NoMatch Then Frame 1.Visible = False Else Framel.Visible = True E n d lf End Sub Prívate Sub DBCombol_Click(Area As Integer) DB Combo lJChange End Sub PA G IN A N° 02 - R E G IST R A R Instrucciones del Control Dbcombo2 (eventos Change y Click) Prívate Sub DBCombo2_Change() Dim DATOS As String DATOS = "NOMBRE LIKE & DBCombo2 & Data 1. Recordset. FindFirst DA TOS If Datal.Recordset.NoMatch Then Frame2. Visible = False : Command2.EnabIed = False Else Frame2. Visible = True : Command2.Enabled = True E n d lf End Sub Prívate Sub DBCombo2_Click(Area As Integer) DBCombo2_Change End Sub 4 0 8 G r u p o E d i t o r i a l CAPÍTULO IX: Manejo de Base de Datos Instrucciones del botón REGISTRAR SU VENTA Prívate Sub C om m and2_C lick() Fram e3. Visible = True D B C om bo2. E nabled = False C o m m a n d l.E nabled = False D ata2.R ecordset.A ddN ew T extl = Label 12 : Texl2 = D ate Text3. SetF ocus E n d Sub Instrucciones del botón GRABAR P r ív a te S u b C o m m a n d 3 _ C lic k ( ) D a ta l.R e c o r d s e t. U p d a te F ra m e 3 .V isib le = F a lse D B C o m b o 2 . E n a b le d = T rue C o m m a n d 2 .E n a b le d - True D a ta 3 .R efre sh D a ta l .R e fresh D a ta l. R efre sh E n d S u b Instrucciones del botón CANCELAR Private Sub Command4_Click() Data2.Recordset. CancelUpdate Frame3. Visible = False DBCombo2.Enabled = True Command2. Enabled = True End Sub PA G IN A N° 03 - L IST A D O Instrucciones del botón VER P rivate Sub C om m and5_C lick() I f O ption 1 Then Data3.RecordSource= "SELECT*FROMINFORMEWHEREDISTRITOVENTA= ‘"&Text5& Else I f IsD ate(Text5) Then Data3.RecordSource= "SELECT * FROM INFORME WHERE FECHAVENTA=CDATE( Text5 &'")" Else M sgB ox "NO HA IN G R E SA D O U N FEC H A C O RRECTA", 16, "VERIFIQ U E" E n d l f E n d l f D ata3. Refresh DBGrid2.Caption=Str(Data3.Recordset.RecordCount)+" REGISTROS MOSTRADOS” I f D ata3.R ecordset.R ecordC ount = 0 Then MsgBox "NO HAY REGISTROS QUE CUMPLEN LA CONDICIÓN",64, "LO SIENTO" E n d I f E n d Sub Instrucciones del botón TODOS Private Sub C om m andó_C lick() D ata3.R ecordSource = "S E L E C T * F RO M IN F O R M E " D ata3. Refresh DBGrid2.Caption=Str(Data3.Recordset.RecordCount)+" REGISTROS MOSTRADOS" E n d Sub Instrucciones del control OPTION1 Prívate Sub Optionl_Click() Labell9="Ingrese el Distrito" End Sub G r u p o E d i t o r i a l Megabyte Instrucciones del control OPTION2 Prívate Sub Option2_Click() Labell9 - "Ingrese la Fecha" End Sub 40 9
  • 207.
    VISUAL BASIC comodebe ser... ERRORES MAS COMUNES Microsoft Visual Basic Error '3131' en tiempo de ejecución : Error de sintaxis en la cláusula FROM. lerminar Depurar Ayuda Ha escrito en forma incorrecta la instrucción Select. Por ejem­plo, no dejó espacio después de la palabra WHERE. I Microsoft Visual Basic No ha ingresado información en el campo indicado antes de grabar. Por cada campo creado se pue­de indicar que puede quedar vacío o no, activando o desactivando la siguiente ca­silla del campo: Error '3315' en tiempo de ejecución : El campo 'ALUMNOS.OBSERVACIONES' no puede ser una cadena de longitud cero. ’ • . . i - - i í K ’ "■ -jf,L -, j Terminar Depurar =J Ayuda P Permitir longitud cero Le asignó al D Blist las propie­dades DataSource y Datafield. En un programa de consulta el control D Blist debe tener sólo las propiedades Rowsource y Listfield. Microsoft Visual Basic Error '3426' en tiempo de ejecución : Esta acción fue cancelada por el objeto asociado. Terminar i Depurar j] Ayuda Microsoft Visual Basic Error '3020' en tiempo de ejecución : Update o CancelUpdate sin AddNew o Edit. Depurar Ayuda No se puede grabar o cancelar un nuevo registro o las m odifi­caciones realizadas sin antes usar Addnew (botón adicionar) o Edit (botón modificar). 410 G r u p o E d i t o r i a l Megabyte'5 CAPÍTULO IX: Manejo de Base de Datos PREGUNTAS DE REPASO N° 09 1. E xplique los componentes de una base de datos. 2. ¿Qué es la estructura de una tabla? 3. ¿Qué propiedades com o m ínim o se le deben asignar a una caja de textos o etiquetas para m ostrar el contenido de un campo? 4. E xp liq u e las principales propiedades del control Data. 5. ¿Cuál es la diferencia entre los controles D B lis t y D Bcom bo? 6 . ¿Cuáles son los métodos que perm iten m anejar registros? 7. ¿Qué es un campo calculado?. E xp liq u e cóm o se pueden obtener 8. E xplique todo lo referente a la instrucción S Q L Select. 9. ¿Cuál es la ventaja de u tiliz a r variables tip o Recordset? 10. E xplique las propiedades del objeto Field. 11. E xplique los métodos BeginTrans, C om m itTrans y R ollbackTrans 12. E xp liq u e cóm o se puede almacenar una foto grafía en un campo. 13. E xplique la instrucción Inner Join. 14. ¿Qué requisitos deben c u m p lir las tablas para que se unan? 15. ¿Cuáles son los errores más comunes cuando trabaja con base de datos y cuales son las posibles causas. 16. ¿ C u á l es la d ife r e n c ia e n tre las p ro p ie d a d e s A llo w U p d a te y A llo w A d d n e w del co ntrol D B g rid ? 17. ¿Cuáles son las propiedades básicas que se le deben asignar al control D ata? 18. ¿Cuál es la d iferencia entre D B com bo y el Com bo? 19. ¿Cómo se evita que el contenido de los campos que se muestran en las cajas de texto se puedan m odificar. 20. ¿Cuál es la diferencia entre los controles D B lis t y List? Es muy importante que usted, se form ule nuevas aplicaciones o intercambie aplicaciones propuestas entre sus compañeros de estudio y desarrollarlas con la fin alidad de enriquecer sus conocimientos G r u p o E d i t o r i a l Megabyte 411
  • 208.
    CAPITULO X —Doten doi Pioducto--------- Nombre V a l e r d e C o m p r a uuikjjd F a c h a eJb V a n c r n i a n l d {a r r o z ” I.Q.V. r R r # o b d * C o m p r a U tlid n d S / T F ttc iü de Vento (PÚbJicol f 10.000 m :m s TTSuC PROGRAMACION DAO
  • 209.
    CAPÍTULO X: ProgramaciónDAO En este capítulo se desarrollan entre otras, las siguientes a p lic a d -«es: %. MANTENIMIENTO DE REGISTROS OSANDO << D.A.O. >> Datos del Producto Nombre A ACEITE ALGODON -1 ARROZ |ARROZ Valor de Compra jlOO Utilidad % j-jo Fecha de Vencimiento j 30-09-2001 grabar Cancelar I.G.V. Precio de Compra Utilidad S/. Precio de Venta (Público) Opciones Disponibles Adicionar I Modificar I & d ? . P R O G R A M A S D E L I S T A D O V E S T A D I S T I C A LIS T A D O S ■rfclCMEIMtta T O T A L P O R V E N D E D O R T O T A L P O R D IS T R IT O T O T A L P O R V E N D E D O R V D IS T R IT O N V E N D E D O R E S C O N M A S V E N T A S D IS T R IT O C O N M A Y O R V E N T A M O N T O T O T A L V E N D ID O C A N T ID A D T O T A L DE V E N T A S 35E 1 LIZADAS I k i m i m I I I S E G U N E L M O N T O S E G U N L A C A N T ID A D Li_l 002 005 004 001 J5ÖÖ 06-01 -2000 06-01 -2000 1 5-02-2000 1 0 - 0 2 -2 0 0 0 50 100 600 200 C A N T I D A D D E R E G I S T R O S M O S T R A D O S C A N I i b Ä b R E G R E S A R I G r u p o E d i t o r i a l Megabyte 415 4 ¡ g $
  • 210.
    m à >VISUAL BASIC como debe ser... P R O G R A M A C IÓ N D A O La program ación D A O (Objetos de Acceso a Datos) perm ite m anejar la inform a ción de una base de datos sin el control D A T A . En este tipo de program ación la in form a ción se maneja a través de determ inados objetos que tiene V isual Basic. Los objetos de acceso a datos más utilizados son: DBENGINE E l objeto D B E ngine representa al m oto r de bases de datos M ic ro s o ft Jet. Es el objeto de n ive l más alto y contiene y controla todos los demás de la jerarquía de objetos de acceso a datos. WORKSPACE U n objeto W orkspace representa una sesión de un usuario. L a sesión de un usuario em pieza cuando éste se conecta a la base de datos y term ina cuando cierra la base de datos. DATABASE Representa a la Base de Datos que se encuentra activa. RECORDSET Representa todos los registros de una tabla o los que resultan de una consulta con la instrucción SE LE C T. FIELD Representa un campo de una tabla. FIELDS Es una colección de objetos F IE L D y representa a todos los campos de una tabla. La form a de referirnos a un solo cam po está explicado en la página N ° 353 (Variables tip o Recordset). NOTA C uando inicia una aplicación, Visual B asic crea en fo rm a p redeterm ina­da los objetos D B E N G IN E Y W O R K SP A C E (D B E ngine. W orkspaces(0)). E stos objetos se deben utilizar cuando necesite m anipular bases de datos que tengan activada la seguridad o crear un alcance distinto de transacción. Todos los objetos Database abiertos en un objeto W orkspace com parten un m ism o alcance de transacción com ún. Es decir, cuando se usa el método BeginTrans en una base de datos, se aplica a todas las demás bases de datos abiertas en el objeto W orkspace. D el m ism o m odo, el uso del método C om m itTrans contra una base de datos se aplica al resto de las bases de datos abiertas en el objeto Workspace. G r u p 416 o E d it o r ia l M e g a b y t e O CAPITULO X: Programación DAO MÉTODOS PARA MANEJAR LAS BASE DE DATOS OPENDATABASE A bre una base de datos. Su sintaxis es: SetVariable_BD=Opendatabase(“ Nomb_Base_Datos” ,Exclusivo,Modo,Origen) Variable_BD Es el nom bre de la variable (O bjeto) que va a representar a la Base de Datos en la aplicación. Se debe declarar tip o D A T A B A S E a n ive l de fo r­m u la rio (en la ventana de declaración del fo rm u la rio ) si sólo se va a u tiliz a r en un fo rm u la rio , o a n ive l de m ódulo (en la ventana de declaración del m ódulo) si se va a u tiliz a r en varios fo rm u la rio s de una aplicación. N om b_B ase_D atos Es el nom bre de la base de datos que desea abrir. Si esta en una carpeta diferente a la actual, debe especificar tam bién la ruta. Exclusivo Es un va lo r ló g ico (True o False). E l v a lo r True ind ica que la base de datos se abre en form a exclusiva (para un sólo usuario). E l va lo r False indica que la base de datos se abre en form a com partida (para varios usuarios). M odo Es un va lo r lóg ico (True o False). E l va lo r True ind ica que la base de datos se abre en m odo sólo de lectura, es decir, no se puede m odificar. E l valor False indica que la base de datos se abre en m odo de lectura y escritura, es decir se puede m odificar. Origen Se u tiliz a para in d icar los argum entos de conexión al m om ento de a b rir una base de datos. E l argum ento origen se expresa en dos partes: el tip o de la base de datos, seguido de un punto y coma (;) y los parámetros opcionales. E l tip o de la base de datos, com o por ejem plo "O D B C ;" o "FoxP ro 2.5" debe indicarse en p rim er lugar. Los argumentos opcionales van a continuación sin un orden específico y separados p or caracteres punto y coma. NOTA: Sólo e l nom bre de la b a se de da to s es obligatorio, el resto de p a rá m etro s es o p cio n a l. S i n o e sp e c ific a el v a lo r p a r a lo s p a r á m e tr o s E x c lu siv o y M odo, su va lo r p red e te rm in a d o es FALSE. G r u p o E d i t o r i a l M e g a b y t e 417
  • 211.
    ü f rVISUAL BASIC como debe ser... OPENRECORDSET A b re una tabla de una base de datos activada previam ente. Su sintaxis es: Set Variable_RS = Variable_DB.OpenRecordset(“ Nomb_Tabla” ,Tipo,Restricciones) Variable_RS Es la variable que va a representar a los registros de la tabla en la aplicación. Se debe declarar tipo R EC O R D SET en el m ism o nivel que declaró la variable de tip o D A T A B A S E . Variable_DB Es la variable tip o DataBase que u tiliz ó para a brir la base de datos. Nomb_Tabla Es el nom bre de la tabla que desea abrir. Tam bién puede escribir el nom bre de una consulta que creó y grabó en la ventana de instrucciones SQ L, ade­más puede escribir tam bién directam ente una instrucción SQ L. Tipo Es opcional y se puede u tiliz a r sólo cuando abre una tabla, para indica el tipo de Recordset con el que desea abrirla. Estos tipos pueden ser: DbO penTable D bO penD ynaset D bO penSnapshot R estricciones Es opcional y consiste en una constante que asigna una restricción para el m anejo de la tabla que esta abriendo. Estas constantes son: DbDenyWrite: Los demás usuarios no pueden m o d ific a r ni agregar registros. DbDenyRead: Los demás usuarios no pueden ver los registros (sólo objetos Recordset de tip o tabla). dbReadOnly Sólo puede ver los registros y los demás usuarios pueden m odifica rlo s. DbAppendOnly Sólo puede agregar registros nuevos(sólo objetos Recordset de tipo hojas de respuestas dinám ica). dblnconsistent Se perm iten actualizaciones inconsistentes (sólo objetos Recordset de tipo hoja de respuestas dinám ica). D bC onsistent Sólo se perm iten actualizaciones consistentes (sólo objetos Recordset de tip o hoja de respuestas dinám ica). CAPÍTULO X: Programación BAO 4 1 1 1 1 DbF orwardOnly E l objeto Recordset es una snapshot de desplazam iento hacia adelante. Observe que los objetos Recordset creados con esta opción no pueden duplicarse y que sólo adm iten el m étodo M o ve N e x t para desplazarse por los registros. DbSQLPassThrough Se evita el procesador de consultas del m oto r de base de datos M icro s o ft Jet. L a consulta especificada en el argum ento origen de OpenRecordset se traslada a un servidor de O D B C para su procesamiento. D bSeeC hanges Genera un error en tiem po de ejecución si otro usuario m o d ific a los datos que se están editando. CLOSE C ierra los objetos de acceso a datos, com o p or ejem plo la base de datos y tablas. Su sintaxis es : Variable.Close D onde Variable es el nom bre del objeto que desea cerrar. NOTA Las constantes d b C o n s is te n t y d b ln c o n s is te n t son m u tu a m e n te excluyentes. Puede u tiliz a r una o la otra, pero no ambas en la m ism a instancia de OpenRecordset. U tilic e el indicador dbSeeChanges cuando desee interceptar los cambios realizados p or otro usuario u otro program a de su sistema m ientras esté editando o elim inando el m ism o registro. Todos los eventos utilizados con el co ntrol D A T A , com o p or ejm plo, FindFirst, M oveN ext, etc., también se pueden u tiliza r en la programación D A O . G r u p o E d i t o r i a l Megabyte 419
  • 212.
    Í Ü Üb > VISUAL BASIC como debe ser. . . < 3 § ANTES DE PROGRAMAR CON PAO Para m anejar la in form a ción de una base de datos usando D A O , debe rea­liz a r los siguientes pasos: 1. D eclarar las variables tipo DataBase y tip o RecordSet en la ventana de declaración del fo rm u la rio o del m ódulo. Por ejem plo, las siguientes instrucciones declaran la variable D B tipo DataBase y la variable RS tipo RecordSet para que se u tilic e n en un solo fo rm u la rio porque de declaran en la ventana de declaraciones del form ulario. _________ I 3 H E ! fP P ro y e c lo l - Form i (C ó d ig o ) | (G e n e ra l) -r | j (D e c la ra c io n e s ) | D ir a DB A s D a t a b a s e D im RS A s R e c o r d s e t ■TT h r njJJ ± r 2. A b rir la Base de Datos y la tabla o tablas en el evento F o rm _A ctiva te del form ulario. Por ejemplo, las siguientes instrucciones abren la base de datos llamada VE N TA S que se encuentra en C :M IS D O C U M E N T O S y la tabla llamada PR O D U C TO S de tipo Dynaset. Si la base de datos se encuentra en la carpeta predetermina del Visual Basic, no es necesario indicar su ruta. jForm .............. ............d j Activate “ 3 P rivate Set DB Sub Form A c tiv a te () = OpenDatabase ("C:MIS D OC UMENTOS VENT AS" ) z l Set RS End Sub = DB.OpenRecordset("PRODUCTOS", dtoOpenPynaset) .... . -Ú a < I 1 . è 3. Verificar que se encuentre activada la casilla de M icrosoft D A O 3.5 Object Libraiy (o similar) en la opción Proyecto/Referencias (Ver página N° 354). Si no se encuentra activada esta casilla se m ostrará el siguiente mensaje al ejecutar la aplicación: 11 i i i i i i i — — n Error d e c o m p ila c ió n : N o se h a d e fin id o el tip o d e fin id o p o r el u s u a rio í A c e p ta r ] | A y u d a | 420 G r u p o E d i t o r i a l Megabyte ¡CAPITULO X: Programación DAO A P L IC A C IÓ N D E SA R R O L L A D A N° 61 La siguiente aplicación perm ite dar m antenim iento a los registros de una tabla llam ada P R O D U C T O S que pertenece a una base de datos llam ada V E N T A S . L a estructura de la tabla es: C A M P O T IP O T A M A Ñ O N o m b re d e l P ro d u c to T e x t 25 V a lo r de C o m p ra S in g le (S e n c illo ) P o rce n ta je de U tilid a d S in g le (S e n c illo ) F echa de V e n c im ie n to D a te /T im e (F e c h a /H o ra ) Por cada registro que se visualiza se debe m ostrar el IG V que se obtiene del V a lo r de C om pra (18% ), el Precio de C om pra (IG V más V a lo r de C om pra), la U tilid a d en soles y el Precio de Venta (Precio de C om pra más la U tilid ad ). M A N T E N IM IE N T O D E R E G IS T R O S U S A N D O << D A O. >> D a l o s d e l P r o d u c t o N o m b re Ja r r o z V a lo r d e C o m p ra {Too 1 * U tilid a d % j 1 0 g r a b a r | [ a c e i t e A L G O D O N H e c h a d e V e n c im ie n to 13 0 -0 9 -2 0 0 1 C a n c e la r | ( A R R O Z J ü l P re c io d e C o m p ra U tilid a d S /. P re c io d e V e n t a (P ú b lic o ) f 129.81X1 r t t y •»«a Opciones I A d ic io n a r P A S O N ° 01: D IB U J A R L O S C O N T R O L E S En esta aplicación ya no se u tiliz a el co n tro l Data, entonces no se u tiliz a tam poco el control D bcom bo, n i D b lis t. Los nom bres de los productos se muestran en un control C om bo para que se puedan consultar y a las cajas de texto ya no se les asigna las propiedades Datasource n i D ataField. EB2EÜQI jC o m b o l I F re m e i L a b e ll L a b e l2 L a b e l3 L a be M JfTexH j T e x t2 ]T e x t3 J T e x t4 L a b e l5 L a b e l6 L a b e l7 L a b e l8 L a b e l9 L a b e ll O L a b e ll 1 L a b e ll 2 F ram e3 C om m a n d 6 I C o m m a n d 7 j F ram e2 C o m m a n d 3 j C om m a n d 4 j C o m m a n d 5 j C o m m a n d ! O G r u p o E d i t o r i a l Megabyte 421
  • 213.
    é S ñík ' VISUAL BASIC como debe ser... PASO N° 02: ASIGNAR LAS PROPIEDADESALOS CONTROLES. Para desarrollar esta aplicación, debe asignar la propiedad C aption a las etiquetas, botones de comandos y Frame com o se muestra en la aplicación a desarrollar y además: Las etiquetas N ° 9, 10, 11 y 12 deben tener en su propiedad BorderS tyle el va lo r 1 - F ix e d S in g le. Los botones de comandos N ° 6, 7, 8 y 9, deben tener en su propiedad Style el va lo r 1 - G ra p h ic a l y en su propiedad Picture el g rá fico indicado o cualquier otro que usted desee. E l control C o m b o l debe tener en su propiedad Style el va lo r 1 -S im p le C o m b o para consultar a los registros escribiendo las iniciales de su nombre y para visua liza r los nombres de los productos ordenados alfabéticam ente, debe tener en su propiedad Sort el va lo r True. PASON"03:ESCRIBIRLAS INSTRUCCIONES PARALOS CONTROLES. D e fin ir las variables tip o Database y Recordset y otras variables que se u tiliz a n en la aplicación en la ventana de declaración del fo rm u la rio . H Proyectol - Form! (Código) 1-lnH [(General) ▼ (Declaraciones) ▼ 5 Dim DB As Database * Dim RS As Recordset — Dim XNOHBRE, XVALOR, XUTILIDAD, XFECHA As String v|H| 1 Jinn Crear los siguientes procedimientos: Sub ACTUALIZAR JJOMBOQ Combo l.C lear RS.MoveFirst Do While Not RS.EOF Combol.Addltem (RS(0)) RS.MoveNext Loop RS.MoveFirst End Sub SubMUESTRA() Textl = RS(0) Text2 = RS( 1) Text3 = RS(2) Text4 = RS(3) CALCULAR End Sub Sub DESACTIVAR() Combo 1.Enabled = False Frame ¡.Enabled - True Frame2.Enabled = False Frame 3. Enabled = False End Sub Sub ACTIVAR() Combo 1.Enabled = True Frame ¡.Enabled - False Frame2. Enabled = True Frame 3. Enabled = True End Sub El procedimiento ActualizarjCombo, borra el contenido del Combol y muestra nuevamente todos los nombres de los productos. El procedimiento Muestra, visualiza los datos del registro actual en las cajas de texto y llama al procedimiento Calcular. 422 Grupo Editorial Megabyte-^ CAPÍTULO X: Programación DAO Sub CALCULARO Label9=Format(Val(Text2) *18/100, "###,##0.000") lflsNioneric(Text2)TheiiLabell0=Fomat{CDec{label9)+CDec(Text2), "###,##0.000") ¡fIsNianeric(Text3)Then Labelll=Fonnat(CDec(LabeU0)*CDec(Text3yi00, “###,##0.000") Labell2=Fomiat(CDec(LabeU0)+CDec(labelll), “###,##0.000") End Sub NOTA : L a fu n c ió n Cdec, c o n v ie rte un v a lo r a D e c im a l. Instrucciones del evento Form_Load Prívate Sub Form_Activate() Set DB = OpenDatabase( “C:MIS DOCUMENTOSWENTAS ”) Set RS = DB.OpenRecordset( “PRODUCTOS”, dbOpenDynaset) ACTUALIZAR,COMBO Frame l.Enabled = Falsea MUESTRA End Sub Instrucciones del Botón Grabar Prívate Sub Command¡_Click() On Error GoTo INFORMA RS(0) = Textl RS(1) = CDec(Text2) RS(2) = CDec(Text3) RS(3) = CDate(Text4) RS. Update A CTUALIZAR JCOMBO ACTIVAR Exit Sub ¡NFORMA: MsgBox “No Se Pueden Grabar”, 64, “Verifique” End Sub Instruc. del Botón Cancelar Prívate Sub Command2_Click() Textl = XNOMBRE Text2 = XVALOR Text3 = XUTILIDAD Text4 = XFECHA ACTIVAR End Sub Instruc. del Botón Adicionar Prívate Sub Command3_Click() RS.AddNew DESACTIVAR XNOMBRE = Textl XVALOR = Text2 XUTILIDAD = Text3 XFECHA = Text4 DESACTIVAR Textl = Text2 - 0 Text3 = 0 Text4 = Date Textl.SetFocus End Sub Instruc. del Botón Modificar Prívate Sub Command4_Click() RS.Edit DESACTIVAR XNOMBRE = Textl XVALOR = Text 2 XUTILIDAD = Text3 XFECHA = Text4 Textl.SetFocus End Sub Instrucciones del Botón Eliminar Prívate Sub CommandS_Click() IfMsgBox("ESTA SEGURO DE ELIMINAR ESTE PRODUCTO", 36, "CUIDADO")- 6 Tlien RS.Delete CommandSjClick E n d lf ACTUALIZARJCOMBO End Su G r u p o E d i t o r i a l Megabyte 423
  • 214.
    VISUAL BASIC comodebe ser... Instruc. del Botón Siguiente Prívate Sub Command6_Click() RS.MoveNext IfR S.E O F Then M sgB ox”Ultimo registro”, 64, “Cuidado’ RS.MovePrevious Else MUESTRA E n d lf End Sub Instruc. del Botón Primero Prívate Sub Command8_Click() RS.MoveFirst MUESTRA End Sub Instruc. del Botón Anterior Prívate Sub Command7_Click() RS.MovePrevious IfRS.BO F Then MsgBox “Primer registro ” , 64, “Cuidado" RS.MoveNext Else MUESTRA E n d lf End Sub Instrucciones del Botón Ultimo Prívate Sub Command9_Click() RS.MoveLast MUESTRA End Sub Instrucciones del Control Combol (Evento Change) Prívate Sub Combol_Change() Dim C A í String C = “[NOMBRE DEL PRODUCTO] LIKE “‘ + Combol + RS.FindFirst C MUESTRA End Sub Instrucciones del Control Combol (Evento Click) Prívate Sub Combo 1 _Click() C om bol jC hange End Sub Instrucciones del evento Change de Text2 y text3. Estas instrucciones llaman al procedimiento Calcular para que al ingresar o modificar el Valor de Compra y la Utilidad se muestren inmediatamente los resultado. Prívate Sub Text2_Change() CALCULAR End Sub Prívate Sub Text3_Change() CALCULAR End Sub Instrucciones del Botón Salir Prívate Sub CommandlO_Click() RS. Cióse DB. Cióse End End Sub 424 G r u p o E d i t o r i a l Megabyte < CAPÍTULO X: Programación DAO * € ¡¡¡¡1 C O N T R O L M SFL E X G R ID El M sF le xg rid es un co ntrol que perm ite m ostrar inform a ción de una o mas tablas en form a de listado sim ila r al co ntrol D B g rid . Se diferencian porque el M s fle x g rid perm ite trabajar usando el control Data y con la program ación D A O , en cam bio el D B g rid sólo trabaja con el control Data. Si va a u tiliz a r el M s fle x g rid con un c o n tro l Data, sólo le debe asignar la propiedad DataSource. O tra diferencia entre estos es que el M s fle x g rid no perm ite m o d ific a r los registros que muestra (sólo de lectura), pero perm ite ordenar y realizar cálculos con los datos. En la ventana de componentes este control se llam a M ic ro s o ft F le xG rid C ontrol. Sus principales propiedades son: ALLOW BIGSELECTION Indica si al hacer un c lic k en el encabezado de la fila o colum na se selecciona todo su contenido. ALLOWUSERRESIZING Indica si el usuario puede m od ifica r el tamaño de las filas y/o columnas. Los valores que se le puede asignar son: 0 N o perm ite m o d ifica r 1 Perm ite m o d ifica r el tamaño sólo de las columnas. 2 Perm ite m o d ifica r el tamaño sólo de las filas. 3 Perm ite m o d ifica r el tamaño de fila s y columnas. BACK CO LO R A signa el c o lo r de fondo para todas las celdas no fijas. BACK CO LO RBK G A signa el c o lo r para el fondo del control. BACKCOLORFIXED A signa el c o lo r de fondo para las filas y colum nas fijas BACKCOLORSEL A signa el c o lo r de fondo para las celdas seleccionadas. COL Selecciona la colum na de una celda. Esto se realiza dentro de un programa. COLALIGNM ENT Establece cóm o se deben alinear los datos en una colum na. Los valores que puede tom ar son: 0 izquierda 1 A line a ció n derecha 2 Centrado Por ejem plo, la siguiente instrucción muestra en el centro los datos de la colum na N °2 . M SFlexGridl .ColAlignment(2) = 3 G r u p o E d i t o r i a l Megabyte 425
  • 215.
    VISUAL BASIC comodebe ser. . . C O L W ID T H Asigna un ancho a una colum na. Por ejem plo la siguiente instrucción asigna un ancho de 500 tw ips a la colum na núm ero 1. MSFlexGridl. ColWidtli(1) = 2000 C O L S In dica la cantidad de columnas que debe tener el control. D A T A S O U R C E Se u tiliz a cuando trabajamos con un co ntrol Data y perm ite ind icar la tabla cuyo contenido queremos m ostrar en este control. F IX E D C O L S índica la cantidad de columnas fija s que debe tener este co ntrol. E l valor que se indique debe ser m enor que la cantidad de columnas. F IX E D R O W S Indica la cantidad de fila s fijas que debe tener este control. E l v a lo r que se indique debe ser m enor que la cantidad de filas. F O R E C O L O R A signa el co lo r de las letras de todas las celdas no fijas. F O R E C O L O R F IX E D A signa el c o lo r de las letras para las fila s y colum nas fija s F O R E C O L O R S E L A signa el c o lo r de las letras de las celdas seleccionadas. F O R M A T S T R IN G A signa un form a to para las filas y colum nas fijas. En este form ato se puede in d icar el tamaño de las celdas, su alineación y el texto que deben visualizar. E l form a to de cada colum na se debe separar por el carácter A L T + 124 (|). A l in ic io de cada form a to puede e scribir los caracteres de alineación < (Izquierda), A (C entro) o > (Derecha). Tam bién puede escribir un punto y com a el cual ind ica que el texto form a to será para las filas, en éstos casos ya no se usan los caracteres de alineación. Ejemplo: Las siguientes instrucciones asignan un form a to para las colum nas. Los nombres se visualizarán alineados por la izquierda, el teléfono en el centro y el sueldo a la derecha. Los espacios que se dejan en blando indican el ancho para cada colum na. F = "< N O M B R E S |A T E L E F O N O > S U E L D O " M S F le x G rid l. F o n n a tS tñ n g = F G R ID C O L O R A signa un co lo r para las lineas no fija s del co ntrol. Por ejem plo, la siguiente instrucción asigna el c o lo r azul a las lineas no fija s del M s fle x g rid l. M S F le x G r id l .G rid C o lo r = R G B (0, 0, 255) G R ID C O L O R F IX E D A signa un co lo r para las líneas fija s del control. CAPÍTULO X: Programación DAO *111111^ M E R G E C E L L S Permite que las celdas con el m ism o contenido se puedan agrupar. Para ello debe de ordenar las fila s o columnas. Esta propiedad se u tih z a ju n to con las propiedades M argeC ol y M ergeRow. Los valores que puede tener son: T E X x l l ^ Y L E ^1'3re ^ Restrin2e ^ ^ as 3 Restringe las columnas 4 Restringe ambas Establece el estilo de las letras de las celdas no fijas. M E R G E C O L P erm ite in d ic a r qué c o lu m n a se debe agrupar. P or e je m p lo, para in d ic a r que se agrupen los re g istro s p or la 2do. C o lu m n a (cam po ) se escribe M s fle x g rid 1 .C o l(2 ) = True M E R G E R O W Permite ind icar qué fila se debe agrupar. R O W H E IG H T Establee la altura de una fila . Por ejem plo la siguiente instrucción asigna una altura de 500 tw ips a la fila núm ero 1 M S F le x G r id l .R o w H e ig h t(l) = 5 0 0 S C R O L L B A R S Permite asignar una barra de desplazamitno que se visualizará cuando los datos no alcancen en el tamaño asignado al control. Los valores que se le pueden asignar son: 0 N inguna 1 H orizontal 2 V ertical 3 Am bas S O R T Indica la form a de ordenar los datos mostrados en el control. Para indicar la columna por la cual se deben ordenar, debe u tiliza r la propiedad Col. Los valo­res que puede tom ar son: 0 Ninguna 0 Genérica ascendente 1 Genérica descendente 3 N um érica ascendente. C onvierte las cadenas a números 4 N um érica descendente 5 Cadena ascendente. N o distingue mayúsculas y m inúsculas 6 Cadena descendente. N o distingue mayúsculas y m inúsculas 7 Cadena ascendente. D istingue mayúsculas y m inúsculas 8 Cadena descendente. D istingue m ayúsculas y m inúsculas Por ejem plo, las siguientes instrucciones ordenan los datos por la segunda colum na en form a ascendente. M s F le x g r id l .C o l = 2 M s F le x e r id l.S o r t = I T E X T Perm ite obtener el contenido de la celda activa o asignarle un valor. Por ejem plo, las siguientes instrucciones asignan el texto “ In fo rm a ció n ” a la celda de la colum na 2 y fila 1. M S F le x G r id l .C o l = 2 M S F le x G r id l .R o w = 1 M S F le x G r id l .T ext = "In fo rm a ció n " G r u p o E d i t o r i a l Megabyte 4 2 7 W »
  • 216.
    ||> VISUAL BASICcomo debe ser... TEXTMATRIX Perm ite obtener el contenido de una celda indicada por el num ero de fila y columna. Por ejem plo, la siguiente instrucción muestra en Label 1 el conteni­do de la celda de la fila 2 y colum na 1. L a b e l 1 = M S F le x G r id l .T extM atrix(2, 1) TEXTSTYLEFIXED Establece el estilo de las letras de las celdas fijas. Los valores que se les puede asignar a las propiedades anteriores son: 0 texto norm al, 1 R elieve, 2 In cru sta d o ,3 R elieve con som breado y 4 In c ru sta d o c o n so m b rea d o . WORDWRAP Acepta un valor True o False que indica si el texto de una celda se puede truncar entre dos palabras o si una palabra se extenderá pasado el borde de la celda. MÉTODOS DEL CONTROL MSFLEXGRIP ADDITEM Perm ite adicionar fila s al co ntrol M sF le xgrid. Su sintaxis es: M s F le x g rid .A d d ite m (“T exto ", P o sició n ) T exto es el texto de desea alm acenar en la fila que adiciona. En form a predeterm inada, este texto se coloca en la prim era colum na (Izquierda). Si deseamos adicionar texto a diferentes colum nas al m ism o tiem po, se debe u tiliz a r el carácter de salto de colum na: V B T A B . P o sició n es un va lo r opcional que ind ica dónde se va a adicionar la nueva fila . N i no lo indica, la nueva fila se ubica al fin a l del control. CLEAR B orra la in form a ción m ostrada en el co ntrol, pero no el num ero de fila s y colum nas que contiene. Por ejem plo: M sF le x g rid .C le a r. M OVE M ueve el co ntrol a una nueva posición en la pantalla. Su sintaxis es: M sF le xg rid .M o ve C olum na, Fila, A ncho, A lto C olum na: es un v a lo r que ind ica la posición horizontal donde deseamos ubicar el control. F ila: es un v a lo r que indica la posición ve rtica l donde deseamos ubicar el control. A n ch o , es un v a lo r o pcional que ind ica el nuevo ancho del objeto. A lto , es un va lo r opcional que indica el nuevo alto del objeto. REM OVEITEM Borra toda una fila del control. Su Sintaxis es: M sF lexgrid.R em oveltem Valor D onde va lo r indica qué núm ero de fila desea borra. 428 G r u p o E d i t o r i a l Megabvte CAPÍTULO X: Programación DAO A P L IC A C IÓ N D E SA R R O L L A D A N° 62 Con la misma base de datos y tabla anterior, desarrollar el siguiente programa: AÑO DE VENCIMIENTO PORCENTAJE DE DESCUENTO 2 N* PRODUCTO 1 V. COMPRAI UTILIDAD % VENCIMIENTO ll.G .V. | p COMPRA UTILIDAD SA P. VENTA 1 TRIGO 25.00 5.00 * 12-12-2001 4 50 29.50 1.48 30.98 2 CAFE 15.00 65.00 * 10-10-2000 2.70 17.70 11.51 29.21 __ 3 FRIJOLES 25 00 1 0 .0 0 * 31-12-2005 4.50 29.50 2.95 32.45 4 LECHE 8.00 2.00 X 16-09-1999 1.44 9.44 0.19 9.63 5 ARROZ 100.00 1 0 . 0 0 * 30-09-2001 18.00 118.00 11.80 129.8 6 AZUCAR 86 00 50.00 * 16-08-2003 15.48 101.48 50.74 152.22 __ 7 ALGODON 260.00 15.00 % 31-12-2005 46.80 306.80 46.02 352.82 8 ACEITE 36.00 1 0 .0 0 * 01-01-2001 6.48 42.48 4.25 46.73 PARA ORDENAR. HAGA CLICK EN LA COLUMNA QUE DESEA Este programa muestra todos los campos de la tabla productos y los siguientes campos calculados: IG V (18% del Valor de Compra), Precio de Com pra (IG V + Valor de Compra), U tilid a d en Soles (Precio de Compra por el Porcentaje de U tilidad entre 100) y el Precio de Venta (Precio de Compra + U tilidad en soles). También ordenar los registros por el campo donde se haga click, además debe mostrar sólo los productos que se vencen en un año ingresado o los que tienen un determinado porcentaje de utilidad. Esta aplicación está desarrollada en una nueva aplicación. Si usted, desea de­sarrollarla en la misma aplicación anterior (Form2), entonces debe de declarar las variables D B y RS en un m ódulo con la palabra P U B LIC y el evento Form Actívate del form ulario volver a abrir la base de datos y la tabla. A q u í se u tiliza el m étodo F ind N e xt que perm ite buscar el siguiente registro que cumpla una condición. Es algo sim ilar a Findfirst, FindLast y FindPrevious que buscan el prim ero, u ltim o y anterior registro que cum ple una condición respectivamente. Tam bién se da ejem plos de cóm o m anipular un objeto Recordset. PASO NH LDIBUJAR LOS CONTROLES. Jíex*1 Commendi | La b e C |Text2 Command2 | ■ K m Label3 Command4 G r u p o E d i t o r i a l Megabyte 429
  • 217.
    ^ É iilÉl* VISUAL BASIC como debe ser. . . < E 5 § PASO N° 2:ASIGNAR LAS PROPIEDADES A LOS CONTROLES Asígneles la propiedad C aption a las etiquetas y botones de comandos y F orm ulario, com o se muestra en la aplicación a desarrollar. PASO N°3:ESCRIBIR LAS INSTRUCCIONES PARA LOS CONTROLES Primero declare las variables en la ventana de declaración del formulario. Si va a utilizar varios formularios, declárelas en la ventana de declaración del Módulo. Public DB As Database Public RS A i Recordset Dim IGV, PCOMPRA, USOLES, PVENTAAs Single Dim E As String C rear el procedim iento L L E N A R . Este procedim iento muestra los registros de la tabla productos en el control M S F L E X G R ID 1 . Sub LLENARO M S F le x G rid l .Clear M S F le xG rid 1 .Cois = 1 M S F le x G rid l.R o w s = 1 Rem Escriba la siguiente instrucción en una sola línea. M S F lexG rid 1 .Form atString= “ N°J Productob V. Compra | Utilidad% | Vencimientol I.G.V. I P.Compra I Utilidad S/. I P. Venta” R S .M o veF irst E = vbTab ‘ A signa el carácter salto de colum na a la variable E D o W h ile N o t R S.EO F IG V = R S(1) * 1 8 / 1 0 0 P C O M P R A = RS(1) + IG V U S O LE S = P C O M P R A * R S(2) / 100 P V E N T A = P C O M P R A + U S O LE S IG V = F orm at(IG V , “ ###,##0.00” ) P C O M P R A = F orm at(P C O M P R A , “ ###,##0.00” ) U S O LE S = F orm at(U S O LE S , “ ###,##0.00” ) P V E N T A = F o rm at(P V E N T A , “ ###,##0.00” ) Rem Escriba la siguiente instrucción en una sola línea. MSFIexGridl.AddItem (MSFIexGridl.Rows & E & RS(0) & E & Format(RS(l), “ ###,##0.00” ) & E & Format(RS(2), “ ###,##0.00” ) & “ %” & E & RS(3) & E & IGV & E & PCompra & E & Usóles & E & Pventa) R S .M o veN ext L oo p R S .M o veF irst End Sub Instrucciones del evento Form Actívate P r ív a te S u b F o rm _ A c tiv a te () S e t D B = O p e n D a ta b a s e (“C :M IS D O C U M E N T O S W E N T A S ”) S e t R S = D B .O p e n R e c o rd se tf “P R O D U C T O S ”, d b O p e n D y n a se t) R e m M u estra n los d a to s en el M sF le x g rid L L E N A R E n d S u b 4 3 0 G r u p o E d it o r ia l M e g a b y t e '^ j § ||f || CAPÍTULO X: Programación DAO i Instrucciones del Primer botón O K Private Sub Com m and l_ C lic k () I f Is N u m e ric (T e x tl) Then Set RS = DB.OpenRecordset(“ SELECT * FR O M PRODUCTOS W HERE Y E A R ([F E C H A D E V E N C IM IE N T O ]) = “ + T e x tl) I f R S.RecordCount > 0 Then M S F le xG rid 1 .V isib le = True L L E N A R Else M S F le x G rid l. V isib le = False End I f End I f End Sub Instrucciones del Segundo botón O K P riv a te S u b C o m m a n d 2 _ C lic k () I f IsN u m eric(T ext2 ) Then M S F le x G r id l .C le a r M S F le x G rid l .C o ls = 1 M S F le x G r id l .R o w s - 1 R em E scrib a la sig u ien te instrucción en una so la línea. M S F lexG rid l.F o m ia tS trin g - “N°Producto |> V.CompraUtilidad% Vencimiento I.GV. | P.Compra UtilidadS/. P. Venta" R S .M o v e F irst E — vbTab ‘A sig n a el ca rá cter salto de co lu m n a a la variable E D o W hile N o t R S .E O F R S .F in d N ext “[P O R C E N T A JE D E U T IL ID A D ] = “ + Text2 I f N o t R S .N o M a tc h T h e n IG V = R S (1 ) * 1 8 / 1 0 0 P C O M P R A = R S (1 ) + IG V U SO L E S = P C O M P R A * R S(2) / 100 P V E N TA = P C O M P R A + U SO LES IG V = F orm at(lG V , “# # # ,# # 0 .0 0 ") P C O M P R A = F orm at(P C O M P R A , “# # # ,# # 0 .0 0 ”) U SO L E S = F o n n a t( U SO LES, “# # # ,# # 0 .0 0 ”) PVE N TA = F orm atfP V E N TA , “# # # ,# # 0 .0 0 ”) R em E scriba la sig u ien te instrucción en una sola línea. MSFlexGridl.Addltem (M SFIexGridl.Rows&E& R S(0)& E & Fommt(RS(l), “###,##0.00”) & E& Fonnat(RS(2), “###,##0.00”)& “%"& E & RS(3) & E & IGV& E & PCompra & E & Usóles & E& Pventa) E n d l f R S .M o veN ext L oop R S .M o v e F irst E n d l f E n d S u b G r u p o E d i t o r i a l Megabyte 431 ¿ w m
  • 218.
    ^Éü^ÉÉ» VISUAL BASICcomo debe ser... Instrucciones del botón TODOS P rív a te S u b C o m m a n d 3 _ C lic k () T extl = M S F le x G rid l .V isible = True S et R S = DB. O penR ecordset( “S E L E C T * F R O M P R O D U C T O S ”) L L E N A R E n d S u b Instrucciones del control M sFlexG ridl Estas instrucciones ordenan los registros por el campo donde el usuario hace C lick. Cuando se elige el campo tipo fecha se utiliza una instrucción SQL. P rív a te S u b M S F le x G r id l jC lic k ( ) I f M S F le x G rid l. C ol = 4 Then Sa¡^M O [xM urd^‘‘SEUrr*mOMPIUXJCWS(MmBY[FECHADEVENCMENRjr) L L E N A R E lse M S F le x G r íd l .S o rt = 1 E n d I f E n d S u b Instrucciones del botón SALIR P rív a te S u b C o m m a n d 4 _ C lic k () RS. C ióse DB. C ióse E n d E n d S u b CREA TUS PROPIAS BA SE DE DATOS Y ESCRIBE LOS PROGRAMAS PARA MANEJAR SU INFORMACIÓN EN C O M P U T A C IÓ N , E L MEJOR PR O FESO R ES: « LA PRÁCTICA » 432 G r u p o E d i t o r i a l Megabyte " CAPITULO X: Programación DAO m OTRAS INSTRUCCIONES SQL La instrucción S E LE C T tam bién puede utilizarse con las palabras G roup By y H aving. GROUP BY Perm ite agrupar los registros por uno a más campos de la tabla o consulta. Se puede u tiliz a r con las funciones: AVG SUM COUNT MAX M IM STDEV STDEVP VAR VARP O btiene la m edia aritm ética de los valores de un campo. O btiene la suma de los valores de un campo. Cuenta un conjunto de registros. D evuelve el valor m áxim o de un conjunto de registros. D evuelve el va lo r m ínim o de un conjunto de registros. Devuelve n estimaciones de la desviación estándar de una muestra. D evuelve n estimaciones de la desviación estándar de una po­blación. D evuelve n estimaciones de la varianza de una muestra. D evuelve n estimaciones de la varianza de una población. HAVING Perm ite seleccionar los registros agrupados que desea visualizar porque en estos casos no se puede u tiliz a r la palabra W here. Teniendo en cuenta la base de datos llamada TIENDA y sus tablas Vendedores y Ventas cuyas estructuras se indicaron en el capítulo anterior, se muestran los siguientes ejemplos: Contenido de la tabla Ventas Contenido de la tabla Vendedores CODIGO NOMBRE ¡TELEFONOI 005 DANTE MILLAN ^666364 004 JORGE CASTRO 201665 001 JULIO DAVILA 232426 003 NOEMI MONTANO Í242126 002 TERESA UBILLUS 362166 CODIGO FECHAVENTA MONTO IDISTRITOVENTA 001 03-01-2000 50 í TEN 001 10-02-2000 50 J.L.O. 001 22-02-2000 600 TUMAN 002 22-10-1999 100 POMALCA 002 25-12-1999 250 LA VICTORIA 002 06-01-2000 100 J.L.O. 002 02-02-2000 100 POMALCA 002 05-02-2000 50 POMALCA 004 22-10-1999 200 LA VICTORIA 004 22-10-1999 100 J.L.O. 004 22-10-1999 20J.L.O. 004 15-02-2000 200 LA VICTORIA 004 22-10-1999 60 MONSEFU 005 06-01-2000 600 REQUE 005 01-02-2000 200 MONSEFU 005 22-10-1999 250 REQUE 005 04-01-2000 150 POMALCA G r u p o E d i t o r i a l Megabyte 433
  • 219.
    VISUAL BASIC comodebe ser... L a siguiente instrucción une de las dos tablas: Select * From Vendedores Inner Join Ventas On Vendedores.Codigo= Ventas.Codigo VENDED0RES.C0DIG0 1 NOMBRE 1 TELEFONO |VENTAS.C0DIG0| FE CHAVEN TA MONTOlDISTRITOVENTA | 001 JULIO DAVILA 232426 001 03-01-2000 50ETEN 001 JULIO DAVILA 232426 001 10-02-2000 50 J.L.O. 001 JULIO DAVILA 232426 001 22-02-2000 600 TUMAN 002 TERESA U6ILLUS 362166 002 05-02-2000 50 POMALCA 002 TERESA UBILLUS 362166 002 06-01-2000 100 J.L.O. 002 TERESA UBILLUS 362166 002 25-12-1999 250 LA VICTORIA 002 TERESA UBILLUS 362166 002 02-02-2000 100 POMALCA 002 TERESA UBILLUS 362166 002 22-10-1999 100 POMALCA 004 JORGE CASTRO 201665 004 22-10-1999 100 J.L.O. 004 JORGE CASTRO 201665 004 22-10-1999 20 J.L.O. 004 JORGE CASTRO 201665 004 15-02-2000 200 LA VICTORIA 004 JORGE CASTRO 201665 004 22-10-1999 60 MONSEFU 004 JORGE CASTRO 201665 004 22-10-1999 200 LA VICTORIA 005 DANTE MILLAN 666364 005 22-10-1999 250 REQUE 005 DANTE MILLAN 666364 005 06-01-2000 600 REQUE 005 DANTE MILLAN 666364 005 04-01-2000 150 POMALCA 005 DANTE MILLAN 666364 005 01-02-2000 200 MONSEFU Desarrolle los siguientes ejercicios sabiendo que la consulta anterior se llama INFORME. 1. M ostra r el nom bre de cada vendedor, la cantidad de ventas realizadas y el total vendido ordenados alfabéticam ente. SFli3Crl’N(3MBRfiCDUNT(NOMBRE)ASCANTTDAD,SUMfMON'ID)AS'IürALJ F R O M I N F O R M E G R O U P B Y N O M B R E O R D E R B Y SUM(MONTO) Resultado NOMBRE 1 CANTIDAD TOTALI JORGE CA5TRO „5 580 TERESA UBILLU5 5 600; JULIO DAVILA 3 700 DANTE MILLAN 4 1200 2. M ostra r el nom bre de cada vendedor, la cantidad de ventas realizadas y el total vendido, ordenados alfabéticam ente, pero sólo los que vendieron más de 650 soles. SELECTNOMBRECOUNT(NOMBRE)ASCANTIDAD,SUM(MONTO)ASTOTALFROM INFORME G R O U P B Y N O M B R E HAVINGSUM(MONTO)>650ORDERBYSUM(MONTO) Resultado NOMBRE CANTIDAD 1 TOTAL! JULIO DAVILA 3 700 DANTE MILLAN 4 1200 434 G r u p o E d it o r i a l Megabyte CAPÍTULO X: Programación DAO 3. M ostrar el número del mes, la cantidad de ventas y el total en soles vendidos en cada mes, pero sólo del año 2000. SEI^iCTMONIH(FECHAVENTA)ASMES,aDUNT(MONTH(FECmVENrrA))ASCANTIDAD, S U M (MONTO) AS TOTAL F R O M INFORME GROUPBYMONTH(FECHAVENTA), YEAR(FECHAVENTA)HAVINGYEAR(FECHAVENTA)=2(XX) Resultado MES CANTIDAD 1 TOTALI 1 4 900 2 6 1200; 4. Mostrar el nombre y total vendido de los 2 vendedores que más han vendido. SEUEOTOPNOMBRESUM(MONTO)AS[TOIALVENDIDO] FROM INFORME G R O U P B Y N O M B R E O R D E R B Y SUM(MONTO)DE¡SC Resultado NOMBRE TOTAL VENDIDO 1 DANTE MILLAN 1200 5. JULIO DAVILA 700 M ostrar el totar vendido p o r cada vendedor en cada d istrito incluyendo la cantidad de ventas realizadas y el prom edio de venta obtenido. SELECTNOMBREDISrRITOVENIA3UM(MONTO)AS [TUIALVIÍNDIDO], COUNT(MONTO)ASCANT[DAD,FORMAr(AVG(MONTO),"###,##0.00") ASPROMEDIOFROMINFORMEGROUPBYNOMBREJDISTRITOVENTA Resultado NOMBRE IDISTRITOVENTA TOTALVENDIDOl CANTIDAD 1 PROMEDIO ► DANTE MILLAN MONSEFU 2 0 0 ] 1 200.00 DANTE MILLAN POMALCA Í5 0 ¡ 1 150.00 DANTE MILLAN REQUE 850 2 425.00 JO RGE C A S TR O J .L .O . 120 2 60.00 JO RGE C A 5 TR O L A VICTO R IA 400 2 200.00 JO RGE CA S TR O MONSEFU 60 1 60.00 JU LIO DAVILA ETEN 50 ; 1 50.00 JU LIO DAVILA J .L .O . 50 1 50.00 JU L IO DAVILA TUMAN 600 1 600.00 TERESA UBILLUS J .L .O . 100 1 100.00 TERESA UBILLUS LA VICTO R IA 250 1 250.00 TERESA UBILLUS POMALCA 250 3 83.33 6 . M o stra r el nom bre del vendedor, año de las ventas, to ta l vendido observación, co m isión en porcentaje y com isión en soles. Se debe visualizar el total vendido por cada vendedor sólo del año 2000, una observación que indique cum plió o no la venta m ínim a (650 soles), además debe, m ostrar la com isión en porcentaje y e soles que le corresponde. SelectNombre, Year(Fechaventa)As Año,Sum(Monlo)AsTotal,lifiTotal <650,"NoCumplio La Venia Minima'V’SiCumplió La Venta Minima") As Observación, Iif(Total<650,"0%"Jit(Total>=650AndTota! <800,"5%","10^ "))As[ComLsion %!Jif(TotaI>=652AndTotal<800,Total*5/100,Total *l(V100)As [ComisionEn Soles] FromInfoimeGroupByNombre,YeaitFechaventa)HavingYear(Fechaventa)=2000 Resultado NOMBRE 1 AÑOl TOTALl OBSERVACION 1 COMISION X 1 COMISION EN SOLES DANTE MILLAN 2000 950 SI CUMPLIO LA VENTA MINIMA 10% 95 JORGE CASTRO 2000 200 NO CUMPLIO LA VENTA MINIMA 0% 20 JULIO DAVILA 2000 700 SI CUMPLIO LA VENTA MINIMA 5% 35 TERESA UBILLUS 2000 250 NO CUMPLIO LA VENTA MINIMA 0% 25 § |§ |^ G r u p o E d it o r ia l Megabyte 435
  • 220.
    éS S Nfr VISUAL BASIC como debe ser. A PL IC A C IÓ N D ESA R R O LL A D A N° 63 C o n la m i s m a base de datos y tabla anterior, desarrollar un programa de listado y estadística para los v e n d e d o r e s y sus ventas realizadas. Los programas se deben llamar mediante un m e n ú de opciones: <*, PROGRAMAS DE USTADO Y ESTADISTICA i 1E3 «»HE1 E S TAD ISTIC A VEN D ED O R ES VENTAS VEN D ED O R ES Y VEN TA S COMISIONES >E LAS VENTAS REALIZADAS 1 FE CHAVEN T A | M O NTO | - | 1 002 25-12-1999 250 _ J 2 005 04-01 -2000 150 3 001 03-01-2000 50 4 002 06-01 -2000 100 5 00c 06-01 -2000 600 6 004 15-02-2000 200 7 L lU 001 10-02-2000 CANTIDAD DE REGISTROS MOSTRADOS fe PROGRAMAS DE USTADO Y ESTADISTICA LISTADOS ESTADISTICA TOTAL POR VENDEDOR TOTAL POR DISTRITO TOTAL POR VENDEDOR Y DISTRITO N VENDEDORES CON MAS VENTAS LIZADAS I I U f l M T D I . I — I DISTRITO CON MAYOR VENTA i n o SEGUN EL MONTO MONTO TOTAL VENDIDO SEGUN LA CANTIDAD CANTIDAD TOTAL DE VENTAS bc»o 50 4 002 06-01-2000: 100 5 005 06-01 -2000 600 6 004 15-02-2000 200 7 001 10-02-2000 y L l U CANTIDAD DE REGISTROS MOSTRADOS P A S O N ° 1: D IB U J A R L O S C O N T R O L E S . Sólo debe dibujar tres etiquetas y un MsFlexGrid. Sólo asigne propiedades a las etiquetas y diseñe un m e n ú c o m o se indica en la aplicación a desarrollar. 436 G r u p o E d it o r ia l Megabyte v - C A P Í T U L O X: Programación DAO l’ASO N° 2: ESCRIBIR LAS INSTRUCCIONES PARA LOS CONTROLES. Definir las variables DataBase y Recordset en la ventana de declaración del formulario. Dim DB A í Database Dim RS A s Recordset Instrucciones deI evento Form Actívate Prívate Sub Form_Activate() Set DB=OpenDctabase( “C!sARCHIVOSDEPROGRAMADEVSTUDIOVIMENDA”) End Sub Instrucciones del procedimiento LLE N A R Sub LLENAR() Rem Este procedimiento llena el MsFlexgridl con los registros de la tabla activa Dim FORMATO, DATOS As String Dim NCAMPOS, XAs Byte NCAMPOS = RS. Fields. Count RS.MoveFirst MS FlexGridl.Rows = 1 MSFlexGridl .Cois = 1 Rem ASIGNA EL ENCABEZADO AL CONTROL MSFLEXGRID FORMATO = “ /W ° ” For X = 1 To NCAMPOS FORMATO = FORMATO & Space(15) & vbTab & RS(X - lj.Name N extX MSFlexGridl .FormatString = FORMATO Do While Not RS.EOF DATOS = MSFlexGrid l.Rows For X = 1 To NCAMPOS DATOS = DATOS & vbTab & RS(X - 1) NextX MSFlexGridl.Addltem (DATOS) RS.MoveNext Loop RS.MoveFirst Label3 = RS.RecordCount End Sub Instrucciones de la opción Vendedores. Prívate Sub VENDEDORES_Click() Labell = ‘LISTADO DE VENDEDORES" Set RS = DB. OpenRecordset( “ VENDEDORES ”) LLENAR End Sub Instrucciones de la opción Ventas. Prívate Sub VENTAS Clickf) Labell = “RELACIÓN DE LAS VENTAS REALIZADAS” Set RS = DB. OpenRecordsetf “ VENTAS ”) LLENAR End Sub G r u p o E d it o r ia l Megabyte 437 m m
  • 221.
    VISUAL BASIC comodebe ser... * • In stru c c io n e s d e la opción V endedores y Ventas. Prívate Sub VENDEDORES_VENTAS_Click() Labe 11 = "LISTADO DE VENDEDORES Y SUS VENTAS" Set RS = DB. OpenRecordset( "SELECT * FROM VENDEDORES INNER JOIN VENTAS ON VENDEDORES.CODIGO = VENTAS.CODIGO ’’) LLENAR End Sub In stru c c io n e s de la opción C om isiones. E sta o p c ió n m u e s tra a cada v e n d e d o r c o n su to ta l v e n d id o y la c o m is ió n que le c o rre s p o n d e s ó lo de las ventas re a liza d a s en e l año 2 0 0 0. S i el v e n d e d o r lle g a o no al m o n to de la v e n ta m ín im a (SI. 6 5 0 .0 0 ) se debe m o s tra r un m ensaje in d ic á n d o lo . E x is te n 2 c o m is io n e s : 5% p a ra q u ie n e s v e n d ie ro n e n tre 6 5 0 y 8 0 0 soles y 10% para q u ie n e s han lle g a d o o superado al m o n to de 8 0 0 soles. Prívate Sub COMISIONES_Click() La be 11 = “LISTADO DE VENDEDORES CON SUS COMISIONES" SetRS=DB.OpenRecordset(“SelectNombrv,Year(Fechaventa)AsAño, Suni Monto)As Total, lifiTotal <650, ’No Cumplió La VentaMinima’, ’Si Cumplió La Venta Mínima’) As Observación, IifiTotal<650, ’0% ’,Iij(Total >=650AndTotal< 800, '5% ’, ’10% ’))As [Comision %],IifiTotal<650,0JifiTotal>=652AndTotal < 800,Total *5/100,Total * 10/100)) As [Comision En Soles] From Informe Group ByNonére, Year(Fechaventa) Having Year(Fechaventa) = 2000") LLENAR End Sub In stru c c io n e s de la o pción Total p o r Vendedor. Prívate Sub TOTAL_VENDEDOR_Click() Lab el 1 = “TOTAL VENDIDO POR CADA VENDEDOR” Set RS= DB. Opa iReco>zlset(' ‘SELECTNOMBRE, COUNVDISTRÍIO VENTA JAS' CANTIDAD,SUM(MONTO)AST(JIALFROM1NFORMEGROUPBYNOMBRE”) LLENA End Sub In stru c c io n e s de la opción Total p o r D istrito. Prívate Sub TOTAL_DISTRITO_Click() Labell = “TOTAL VENDIDO POR DISTRITO” SetRS-DBOpa iRecoidset( ' SELFCW1SIKIIOrENIA COUNI¡DISIWIOVENIA) ASCANTIDAD, SUM(MONTO)ASTOIALFROM INFORMEGROUPBYD1STRTTOVENIA ’ ’) LLENAR End Sub In stru c c io n e s d e la o pción Total p o r Vendedor y D istrito. Prívate Sub VENDEDOR_DISTRITO_Click() LABEL1 = “ TOTAL VENDIDO POR CADA DE VENDEDOR Y DISTRITO ’’ SETRS=DB.OPENRECORDSEIJ“SELECTNOMBREDISTRrrOVENTASUM(MONrO)ASTOTAL FROM INFORME GROUPBYNOMBREDISIRirOVENTA ’’) LLENAR Erul Sub 5 CAPÍTULO X: Programación DAO ^ ¡ ¡ ¡ ¡ 1 In stru c c io n e s de la o pción N ven d ed o res c o n m á s ventas. Prívate Sub VENDEDORES_MAS_VENTAS_Click() Dim R As Integer ¡Mbell = "LISTADO DE LOS VENDEDORES CON MAYOR VENTA" R - InputBox("Valor para N ", "Cantidad de Vendedores con mayor venta", 2) lfV a l( R ) > 0 T h e n Set RS = DB.OpenRecordset(“ SELECT TOP “ & R & “ NOMBRE, COUNT(NOMBRE) AS CANTIDAD,SUM(MONTO)AS [TOTAL VENDIDO] FROM INFORME GROUP BY NOMBRE ORDER BYSUM(MONTO) DESC’’) LLENAR E n dlf End Sub In stru c c io n e s de la o p ció n D istrito co n m a y o r Venta se g ú n e l m o n to . Prívate Sub SEGUNMONTO_Click() Labell = “DISTRITO(S) CON MAYOR VENTA SEGÚN EL MONTO VENDIDO ’’ SetRS = DB. OpenRecordset( “SELECTTOP1 DISTRITOVENTA, SUM(MONTO)AS [TOTAL VENDIDO] FROM INFORME GROUP BY DISTRITOVENTA ORDER BY SUM(MONTO) DESC”) LLENAR End Sub In stru c c io n e s d e la o p ció n D istrito c o n m a y o r Venta se g ú n la cantidad. Prívate Sub SEGUNCANTIDAD_Click() Labell = “DISTRITO(S) CON MAYOR VENTA SEGÚN LA CANTIDAD VENDIDA ” Set RS = DB.OpenRecordset(“SELECT TOP 1 DISTRITOVENTA, COUNT (DISTRITOVENTA) AS CANTIDAD FROM INFORME GROUP BY DISTRITOVEN1A ORDER BYCOUNT( DISTRITOVENTA) DESC”) LLENAR End Sub In stru c c io n e s de la o p ció n M o n to to ta l vendido Prívate Sub MONTOTOTAL_Click() SetRS = DB.OpenRecordset( “SELECT SUM(MONTO) FROM INFORME”) MsgBox “LA SUMA TOTAL E S: S/. ’’ & RS(0), 64, “MONTO TOTAL VENDIDO ” End Sub In stru c c io n e s de la o pción C a n tid a d to ta l d e ventas Prívate Sub CANTlDADTOTAL_Click() Set RS = DB. OpenRecordsetf “SELECT COUNTf MONTO) FROM INFORME ”) Msgbox “Se Han Realizado “ & Rs(0) & “ Ventas En Total”,64 “Cantidad De Ventas’’ End Sub ^üjjj^ G ru p o E d i t o r i a l M egabyte 439 ^ i¡ ¡ ||¡ ¡ ||
  • 222.
    VISUAL BASIC comodebe ser... C O N T R O L M SC H A R T Este control perm ite m ostrar inform a ción a través de gráficos. Sus principa­les propiedades son: CHARTTYPE Indica el tipo de g ráfico para representar la inform ación. CO LUM N A c tiv a una colum na del gráfico. CO LUM NCO UNT Indica la cantidad de colum nas que debe tener el gráfico. CO LUM NLABEL A signa un títu lo para una colum na. Se muestra en la leyenda. DATA Alm acena el va lo r que se desea representar en form a gráfica. FOOTNOTETEXT A signa un texto para el pie de página del gráfico. RANDOM FILL In dica si los valores a representar se llenan al azar. ROW A c tiv a una fila del gráfico. ROWCOUNT Indica la cantidad de fila s que debe tener el gráfico. ROWLABEL Indica un títu lo para cada fila del gráfico. SHOWLEGEND Acepta un va lo r lóg ico que ind ica visua liza r o no la leyenda. TITLETEXT A signa el títu lo p rin c ip a l para el gráfico. A P L IC A C IÓ N D E SA R R O L L A D A N° 64 M o d ific a r la a p lica ció n a n te rio r de tal m anera que tenga un botón de comandos para que cuando se muestre la cantidad vendida por Vendedor po por D is trito se tenga la opción de m ira r la inform a ción a través de un gráfico. L I S T A D O S E S T A D I S T I C A h r O T A L V E Ñ D I Ò Ó P O R C A D A V E N D E D O R N O M B R E _____________I C A N T I D A D D A N T E M I L L A N | 4 1 2 0 0 J O R G E C A S T R Ó 5 5 8 0 J U L I O D A V I L A 3 7 0 0 T E R E S A U B I L L U S ___________________ 5 6 0 0 C A N T ID A D DE R E G I S T R O S M O S T R A D O S V E R G Á F I C O I 440 G r u p o E d i t o r i a l Megabyte' CAPITULO X: Programación DAO Para desarrollar esta aplicación adicione un nuevo formulario a la aplicación y dibujar en él un botón de comandos y control SSTAB con sólo dos página con un control Mschart cada una. INSTRUCCIONES DEL BOTON VER GRAFICO D EL FO R M U LAR IO Nü 1. Prívate Sub Commandl_Click() Dim X A s Integer With Form2 I f L a b e ls "TOTAL VENDIDO POR CADA VENDEDOR" O rLabell= "TOTAL VENDIDO POR DISTRITO ” Then .Show ! MSChart l.RowCount = RS.RecordCount ! MSChart l.ColumnCount = 1 !MSChart2.RowCount - RS.RecordCount !MSChart2.ColumnCount = 1 I f Label I = “TOTAL VENDIDO POR CADA VENDEDOR ” Then !MSChart 1. TitleText = “CANTIDAD DE VENTAS POR VENDEDOR ” !MSChart2. TitleText = “ TOTAL DE VENTAS POR VENDEDOR ” End I f I f Label 1 = “TOTAL VENDIDO POR DISTRITO ” Then !MSChartI. TitleText = “CANTIDAD DE VENTAS POR DISTRITO ” !MSChart2. TitleText = “TOTAL DE VENTAS POR DISTRITO ” End I f RS.MoveFirst For X = 1 To Form2!MSChart 1 .RowCount !MSChart I. Row = X ! MSChart 1.Column = 1 ¡MSChart I.Data = RS(1) !MSChart l.RowLabel = RS(O) !MSChart2. Row = X !MSChart2. Column = 1 !MSChart2. Data = RS(2) ! MSChart2.RowLabel = RS(O) RS.MoveNext N extX E ls e MsgBox “ELGRÁFICONOESrÁDISPONIBLEFARAESTAINFORMACIÓN”, 64, “DISCULPE’ End I f End With End Sub G r u p o E d it o r ia l Megabyte 441
  • 223.
    a s J» VISUAL BASIC como debe ser. . Ejemplo de resultados de la aplicación anterior. ii. P R O G R A M A S D E L I S T A D O Y E S T A D I S T I C A L IS T A D O S E S T A D IS T IC A ( T O T A L V E N D ID O P O R C A D A V E N D E D O R N 9 N O M B R E 1 C A N T ID A D T O T A L 1 D A N T E M IL L A N ! 4 1200 2 J O R G E C A S T R O 5 580 3 JU LIO D A V IL A 3 700 4 T E R E S A U B IL L U S 5 600 C A N T I D A D D E R E G I S T R O S M O S T R A D O S V E R G Á F IC O I S A L IR OB J H lS l { C A N T ID A D i I MONTOS C A N T ID A D D E VENTAS P O R VENDEDOR 4 3 - 2 - 1 - i í g l i i l iPUl - jf - 2 - 1 DA N TE MILLAN JORGE CASTRO JU LIO DAVILA TERESA UBILLUS I R E G R E S A R ! W 442 G r u p o E d i t o r i a l Megabyte CAPITULO X: Programación DAO PREGUNTAS DE REPASO N° 10 I. ¿Cuál es la diferencia entre la program ación con D A O y con el control 2. 3. 4. 5. 6. 7. 9. D A T A . ¿Cuál es la característica de cada, tipo de Recordset? E xplique las principales propiedades del control M sFlexG rid. ¿Cuáles son los pasos a seguir para program ar con D A O ? ¿Qué caracteres se pueden usar y qué fu nció n cum plen cuando asignas la propiedad Form atS tring a un control M sF lexG rid? E xplique las principales propiedades del co ntrol M sChart. ¿Qué mensaje de error se visualiza cuando ejecutas tu aplicación sin activar la casilla D A O ? ¿Cuál es la diferencia entre O rder B y y G roup By? ¿Cuál es la diferencia entre D B g rid y M sF lexG rid? 10. E xplique e indique un ejem plo con cada función que podemos u tiliz a r en la instrucción S Q L Select? I I . ¿Con cuántos tipos de gráficos se puede representar la in form a ción con el control M sChart. 12. E xplique los métodos del control M sFlexG rid. 13. ¿Qué sig n ifica D A O ? 14. E xplique los métodos para m anejar una base de datos con D A O . 15. E xplique el control M sF lexG rid 16. ¿En qué partes de la aplicación se pueden d e fin ir las variables Database y Recordset. 17. Explique la propiedad Sort del control M sF lexG rid. 18. ¿Cuál es la diferencia entre W here y H aving? 19. E xplique las form as de a brir una tabla usando D A O . 20. ¿Cómo se pueden u n ir tres tablas? - OO ío J ' í No olvides que para pasar al siguiente capítulo, debes obtener un 20 en esta autoevaluación. G r u p o E d it o r i a l Megabyte 443
  • 224.
    CAPITULO XI éJFie E di [nsert Foimat Dalabase Repoit Window Hdp - | f f | x| D e£|@ B j â f S Design Preview Today 0G:34 | CloseI T O l ofi [ F iT T ir ^ --------------------- l;, ------ -- Choose an Expeil: Dr: ' —À f<TTÏÏ7 IIHUli r r r t 3 1 .ZZJEL ! ; ! r s i E Standard Listino Cross-Tab Mail Label Reccté: 9 Summary Graph TopN Drill Down CREACIÓN DE REPORTES Another Report Cancel Help Custom)» ma m h m
  • 225.
    CAPÍTULO XI: Creaciónde Reportes € m Visual Basic permite diseñar reportes de una manera fácil y rápida. A con­tinuación se explica el programa Cristal Report que es el generador de reportes predeterminado de la versión 5.0 de VB. Si usted tiene la versión 6.0 utilice el DATAREPORT que se explica a partir de la página N° 461. C R E A R R E P O R T E S C O N C R IS T A L R E P O R T Para crear reportes debe seguir los siguientes pasos: 1. De la opción Complementos (Add-Ins) de la barra de menú elija Diseñador de Informes (Report Designer), observará la pantalla siguiente: 2. -"JÜ i File Edit Insert Format Database Report Window Help D E? y a # f poi] & 8^ m #4 a m & j i n i r ZEZ Crystal Reports Pro De la pantalla anterior elija la opción File y luego New, que permite crear un nuevo reporte, observará la pantalla siguiente, donde tiene los tipos de reporte que puede crear. En cada botón que permite seleccionar un tipo de reporte se muestra una figura que indica la forma de visualizar los datos, inicialmente se recomienda seleccionar el tipo Standard. C hoose an Expert: ^ I Or: S ta n da rd Listing Cross-T ah M ail L abel A n o th e r R eport =27—^ 3 — C ancel H e lp S um m ary G raph T op N Drill D o w n Custom >>> G r u p o E d i t o r i a l Megabyte 4 4 7 p m
  • 226.
    o w ÆM ' VISUAL BASIC como debe ser... Una vez seleccionado el tipo de reporte que desea diseñar, debe elegir el tipo de base de datos a utilizar. Haga click en Archivo (DATA FILE). *1 Step 1: Tables 12: Fields 13: Sort j 4: Total j 5: S elect 16: Style | Step: Choose data to report on. Y o u can choose multiple tables and add indexes. Luego, debe seleccionar el nombre de la base de datos que contiene la tabla o tablas que se van a usar en el reporte. File Name: AGENDA, mdb biblio.mdb h.rndb ¡j.mdb nwind.mdb pasajes.mdb List Files of Type: User Default Directories: C: W c h iv o s de progra..AVB □ J _Jc: f j Archivos de progra DevStudio ‘— _ j vb Clisvr _ ! Help Drives: 1 c: gogo Add Done SQL Table... R ed. 448 G r u p o E d i t o r i a l Megabyte CAPÍTULO XI: Creación de Reportes Una vez seleccionada la base de datos haciendo doble click en su nombre o con el botón Agregar (Add), haga click en el botón Terminar (Done) para salir de la ventana. La siguiente ventana que se visualiza depende del tipo de reporte elegido. El siguiente paso consiste en indicar los campos que desea mostrar en el reporte, para ello haga click en el botón N ex t» o en 2. Fields. Visualizará la pantalla siguiente: ADD-> Permite adicionar al reporte el campo seleccionado. A L L - » Permite adicionar al reporte todos los campos. cR E M O V E Permite quitar del reporte el campo seleccionado. « A L L Permite quitar del reporte todos los campos. BR OW SE DATA Permite mostrar los datos del campo seleccionado. FO R M U L A Permite adicionar una formula al reporte; es decir un campo calculado. Por ejemplo si se tiene una tabla llamada amigos con el campo fecha de nacimiento (fecnac) y Ud. desea mostrar también la edad sin tener este campo en la tabla, entonces la formula será: G r u p o E d i t o r i a l Megabyte 449
  • 227.
    VISUAL BASIC comodebe ser... year( today )-year( amigos.fecnac ) S te p 1: T a b le s 2: Field s J3: Sort j 4: T o ta l | 5: S e le c t j 6: S tyle j S te p : S e le c t fields to in clu d e in report. Y o u c a n reord er th e m a n d c h a n g e h ead in g s. 2Sl D a ta b a s e Fields: R e p o rt Fields: | # | ; | R e p o rt Fields: A D a ta b a s e Fields: - - A M I G O S ...... D IR E C C IO N D IS T R IT O J F l F F Íl N f l 1 1 B ro w s e D a ta ... iF o rm u Ía...i| A d d -> A ll - » < - R e m o v e « • A l l << B a c k j N e x t >> j C a n c e l j N OTA: P rim ero el Visua B a sic le p e d irá el nom bre de la fo rm u la que d esea crea r (F orm ula Ñame). Las fu nciones y los cam pos utilizados en las form u las se pueden escri­b ir o seleccionar. Today p erm ite o b ten er la fec h a a ctu al en los reportes. C O LU M N H EA D IN G Permite indicar el encabezado de cada campo que por defecto es el nombre del campo. F E L IC IT A C IO N E S A l ejecu ta r los p a so s m en cion ados anteriorm en te Ucl. ya está en con ­dicion es ele v isu a liza r su reporte, p o rq u e los sigu ien tes p a so s son o p ­cionales, p a ra ello haga click en el botón PREVIEW REPORT, o b ser­vará la p a n ta lla siguiente, don de las o pcion es del menú y los botones d e la B arra E stán dar perm iten tam bién d iseñ a r y m ejorar ¡os reportes. CAPÍTULO XI: Creación de Reportes < € ¡ ¡ 1 1 ÎIÜ II IS ^ M i a i l 1 H I T . i n i x| mJ File Edit Insert Format Database R eport W in d o w Help _ [fll x| D e? y m. s f s o |,£J) #4 £3 M Ü S iH ] ] f i # Design Preview Today 06:34 | Close | | ¡ ] 1 of 1 f ] ||| ---------------------------- — ! 1 J 1 JICULJn n r m i i u î : Records: 9 100% O RDENACIO N DE LOS REGISTROS PARA LOS REPORTES Después de seleccionar los campos que desea mostrar en el reporte, Ud. puede indicar el campo por el cual deben salir ordenados los registros, para ello haga click en el botón N E X T » o en 3.SORT, visualizará la pantalla siguiente. ADD-> Elige el campo por el cual se desea ordenar los registros en el reporte. < -R E M O V E x| /-v , i Step 1: Tables 12: Fields 3: Sort 14: Total 15: Select | 6: Style I Quita el campo seleccio- 1 1 1 1 1 nado para la ordenación. O R D E R Se visualiza después de elegir un campo y permi­te indicar la forma de or­denar: Ascendente, Des­cendente, En la forma Origina o por grupos. Step: Choose fields to sort and group by, such as Country and then State. You can also define custom groups, such as Western Region. Report Fields: Group Fields a n Add •> Report Fields: am inns niRFrnnt'j <-Remove Browse Data... [ Group/Total Tip... | << Sack j Next>> | Cancel j | Preview Report | Preview S ampi* j G r u p o E d it o r ia l Mega b y 1c 451
  • 228.
    ^ |§ y§ |> VISUAL BASIC como debe ser... TOTALIZAR O CONTAR GRUPOS DE REGISTROS Después de indicar el campo o campos para la ordenación, Ud. puede indi­car que los campos sean sumados, contados, promediados u obtener el va­lor máximo o mínimo registros. Estos gru­pos de registros de­penden del campo por el cual los regis­tro están ordenados. Haga click en el bo­tón N E X T » o en 4 . T O T A L , visualizará la panta­lla siguiente: ü J Step 1: Tables 12: Fields 13: Sort 4: Total |5: Select 16: Style | Step: Choose fields to subtotal, count etc. E a ch tab is a group (or subtotal break). A M IG O S .N O M B R E | Q ..... Subtotals printed on any change of A M IG O S .N O M B R E n , r n T otal Fields: Report Fields: Report Fields: A M IG O S .D IR E C C IO N — A d d ->. I _ J A M IG O S .D IS T R IT O A M IG O S .T E L E F O N O . I Browse Data... I r zl ✓ A d d Grand Totals « B a ck J Next » j Cancel I I preview Report | Preview Sample | ADD GRAND TOTAL Indica si al final del reporte se debe visualizar el total general. SELECC IO N A R O FILTRA R REG ISTRO S A VISU ALIZA R Ud. puede seleccionar los registros que desea visualizar en los repor­tes. Para ello haga click en la opción 5.SELECT, visualizará la pantalla siguiente: Slf*p I ?at>les ¿ helrts |3 Soit |4 Total 0 Select |b S'yle J Step Choose fields »o selec» (or filter) records in report Important for <jp*»*>d [ü 3 ¡ euuaUo v I |l -T.j CHICLAYO LA VICTORIA LAMBAVEQUC_______________________________________ ,*J Report Field«. AMIiiOS I'lRfc LI IUN 3 AMIGOS DISTRITO — Add ■> I Drowse Data . | Speed Tip .- | « fciack I fW >> I C ancel | | Preview Beport | Preview Sample j CAPÍTULO XI: Creación de Reportes ^ A D D -> Permite indicar el campo por el cual va a seleccionar a los registros que desea visualizar en el reporte. Luego debe formar la condición que deben cumplir los registros para que se muestren en el reporte. La condición se forma con los operadores y con los valores que Ud. puede elegir. SELECC IO N A R EL EST ILO DEL REPO R TE Ud. puede mejor el aspecto del reporte, para ello haga click en la opción 6.STYLE, observará las siguiente pantalla. Elija el estilo de reporte que mejor le parezca. Por cada estilo de reporte se muestra un ejemplo de cómo se visualiza. S te p 1: Ta b le s | 2: Fields j 3: Sort 14: T o ta l | 5: Select 6: Style | Step: G iv e a report title a nd cho ose a style, s uch as fonts, tables, a n d pictures. Title: I Style: . . _ Le a d in g Break Trailing Break Ta b le D ro p Ta b le E x e cu tive, Lea d in g Break E x e cu tive, Trailing Break S hading R e d /B lu e Border M a ro o n /Te a l Box _Ll = A d d picture, s uch as co m pa n y logo: P re vie w Tip... J___I Preview Report | Preview Sample j NOTA: Una vez creado el reporte debe grabarlo para que de ésta manera lo pueda utilizar o activar desde cualquier formulario utilizando el con­trol CRYSTAL REPORT. CRYSTAL REPORT m Es un control que se utiliza para activar desde un formulario cualquier re­porte diseñado. Lo puede dibujar en cualquier parte del formulario porque no se visualiza cuando se ejecuta la aplicación. En la lista de componentes se encuentra con el nombre: Crystal Report Control. Sus principales propiedades son: G r u p o E d i t o r i a l Megabyte 453
  • 229.
    J VISUAL BASICcomo debe ser... CUSTOM (Personalizado) Tiene las opciones que permiten personalizar el reporte. Páginas de propiedades Base de datos | Selección | Informe enlazado a datos General j Ventana de impresión | Impresor a | Imprimir a un archivo RepoitFHeNafne: |j | [¿estination (* A una ventana A una impresora C A un archivo r A la MAPI Aceptar ~] Páginas de piopiedadet General 1 Ventana de impresión | Impresora ¡ Imprimir a un archivo [ Base de datos ji Selección 1 Informe enlazado a datos yserName: J~" Cgnneci I Base de datos | Selección ] Informe enlazado a datos General Ventana de impresión ] impresora ] Imprimi» a un archivo Wl: p ---- !®W fSÓ---- rrsr— H ^iar- rK“' ,-------------------- ——------- — : (• S¡rabie FixedQouble jEJEMPLO DE REPORTE . ” p MasBulton lo p Title P CfintroIBox P (dinButton I Aceptar ~| El Base de datos | Selección ¡ Informe enlazado a datos I General | Ventana de impresión | Impresora )• • uñ t Piintrtejiame: PrintFteTupe. I Registro ■ J ~3 Cancelar I DATASOURCE Su uso en reportes es opcional y permite indicar el nombre del control data que está ligado a la tabla de la cual se desea obtener el reporte. R E P O R T F IL E N A M E Permite indicar el nombre del reporte que desea imprimir, además usted también puede seleccionar el destino del reporte que por defecto es WINDOWS (A una Ventana). Con la opción A la Ventana, el reporte se mostrará en la pantalla como una presentación preliminar. Si ya tiene una impresora conectada y lista para imprimir puede elegir la opción Printer (A un Impresora). General J fìeportFileNarne: | ] : destination C A una ventana A una impresora A un archivo <• A la MAPI Haga click aqui para buscar el archivo de Reporte. Acepta» ~| Cancela»' j Aplicar | Ayuda CAPÍTULO XI: Creación de Reportes Su desea indicar el archivo de reporte a imprimir dentro de un programa, entonces su nombre debe estar entre comillas e incluir la ruta del archivo. La opción File (A un Archivo) graba en un archivo el reporte para su uso posterior. La opción A MAPI envía el reporte a otra persona en un mensaje de correo electrónico el formato especificado por la propiedad PrintFileType. R E PO R T SO U R C E Para indicar la fuente de los registros para el reporte. O-CRPTREPORT: Muestra en el reporte todos los especificados al diseñar el reporte. 3-CRPTDATACONTROL:Los registros que muestra dependen de los que contiene el control Data. Se utiliza junto con la propiedad Datasource y normalmente cuando se filtran registros con la instrucción SELECT. A C T IO N Activar el reporte asignándole el valor 1. Por Ejemplo, para activar el reporte que está ligado al control CrystalReportl se escribe: CrystalReportl. Action = I S E L E C T IO N FO R M U LA Permite escribir una condición que selecciona los registros a visualizar en el reporte. Los nombres de los campos deben estar entre llaves. Por ejemplo: Si tenemos un reporte con la tabla Amigos y queremos mostrar sólo los que viven en Chiclayo, entonces debemos asignar a esta propiedad la siguiente condición: {DISTRITO} = "CH ICLA Y O " Cundo hemos realizado un reporte con dos o más tablas, cada campo debe estar acompañado del nombre de la tabla a la que pertenece. Por ejemplo: Si tenemos un reporte con la base de datos Tienda (tablas Vendedores y Ventas) y queremos mostrar todas las ventas cuyo monto esta entre 50 y 100, esta propiedad debe tener: {V EN TA S.M O N TO } >=50 AND {VENTAS.M ONTO} <=100 PRINTFILETYPE Especifica el tipo de archivo va a imprimir cuando utiliza como destino del reporte un Archivo (File). Los principales valores que puede tener son: 0 Registro: Es la propiedad predeterminada y muestra la información columnas, no utiliza comas ni separadores. Muestra todos los registros con una anchura fija de campo. 1 Separado por tabuladores: Presenta los datos en forma tabular. Encierra los datos de campos alfanuméricos entre comillas y separa los campos con tabuladores. 2 Texto: Guarda los datos en formato de texto ASCII con todos los valores separados por espacios. Este estilo se parece mucho a una página impresa. G r u p o E d it o r ia l Megabyte 455 < |§ § |¡¡||
  • 230.
    é S Sk > VISUAL BASIC como debe ser... ^ £ 5 CAPÍTULO XI: Creación de Reportes 3 DIF: Guarda los datos en formato DIF (formato de intercambio de datos). Este formato se usa a menudo para transferir datos entre diferentes programas de hoja de cálculo. 4 CSV: Valores separados por comas. Encierra los datos de campos alfanuméricos entre comillas y separa los campos con comas. 7 RPT de Crystal Reports: Se utiliza el formato estándar RPT de Crystal Reports, la mayoría de las veces para mandar el informe a otro usuario mediante correo electrónico. 10 XLS de Excel 4.0: Exporta el informe como una hoja de cálculo de Microsoft Excel 4.0. 13 WKS de Lotus 123 : Exporta el informe como una hoj a de cálculo de formato WKS de Lotus 123. 14 WB1 de Quattro Pro 5.0: Exporta el informe como un archivo de formato WB1 de Quattro Pro 5.0. 15 RTF: Guarda los datos en Formato de texto enriquecido. 16 Word para DOS: Usa el formato de Microsoft Word para DOS para guardar los datos del informe. 17 Word para Windows: Utiliza el formato de Microsoft Word para Windows para guardar los datos del informe. 18 WordPerfect: Usa el formato de WordPerfect para guardar los datos del informe. PRINTFILENAMF, Especifica el nombre del archivo donde va a guardar el reporte cuando ha seleccionado el destino a un archivo. Acepta también una ruta para el archivo. WIMX)WSiATE Se utiliza cuando el destino del reporte es Windows (A la ventana - Presentación Preliminar) para indicarci tamaño de dicha ventana: 0=Normal La ventana Vista previa no aparece ni minimizada ni maximizada. Aparece con un tamaño y posición definidos anteriormente por su aplicación o por Windows. 1 = Minimizada La ventana Vista previa aparece minimizada como un icono junto a la esquina inferior izquierda de la pantalla. Se puede restaurar para presentar la ventana en estado normal. 2 - Maximizada La ventana Vista previa está maximizada si cuando está abierta ocupa toda la pantalla. WINDOWSUTLE Indica el título que debe tener el reporte cuando se muestre en una ventana. WINDO W CONTROLS Especifica si los controles de impresión van a aparecer o no en la ventana de Impresión cuando se muestre el informe en una ventana. A C T IV A R E L R EPO RTE Para activar un reporte desde una aplicación, primero debe de dibujar en dicha aplicación el control Crystal Report que en la ventana de componentes se llama: C rystal R eport C ontrol y asignarle en su propiedad R ep o rtF ileN a m e el nombre del archivo de reporte previamente creado y que usted desea imprimir. Este control tiene un sólo tamaño y al ejecutar la aplicación no se visualiza en el formulario. El resto de controles dependen de la aplicación que desea crear. I T E L E F O N O " T5T>n CODIGO NOMBRE TELEFONO 005 DANTE MILLAN 666364 010 GREGORIO DARIO 265485 ------ 007 JORGE ARMANDO 162548 004 JORGE CASTRO 201665 009 JUAN ANIBAL 696963 001 JULIO DAVI LA 232426 006 ILUZ ANGELICA 205056 008 MARIA JULIA 366987 003 NOEMl MONTAÑO 242126 ^ «1 n : ....................................... . . ..................................... ► |— ¿3? I M P R I M I R Si desea que al hacer un click en el botón IMPRIMIR, se active el reporte, entonces debe escribir en el botón las siguiente instrucción: CrystalReportl.Action = 1 n EJEMPLO DE REPORTE Jn[EJ LISTA D O O E f*LEA D O S COt>l ¿OfCT1 Efll úú I JULIO DA V L* ÛÛÎ TER ES .-V fjBXl-CjS ÚÚ¿ MOÍ«TAfTO ÙÜJ JÖCÖ-E CASTRO úúüúüS IDHAjK'ZT AEf AtAJTELLL-K4ÍAV ÛÛ? JOprJE ARMANDO úúS MARV. JC/LV4 ú I ú OftEOCCOCWRKi zJ y g g j l ' G r ü p o E d i t o r i a l Megabyte 4 5 7
  • 231.
    CAPITULO XII ou I ° <& B< ! O O Pí z - A : - í » - **-s. . 'ü
  • 232.
    r CAPITULO XII:Programación ADO PROGRAMACION ADO La mayoría de los nuevos controles de la versión 6.0 de Visual Basic nos ayudan a conectarnos a diferentes tipos de bases de datos de manera muy sencilla. Por ejemplo, si tiene una base de datos creada en Visual FoxPro, Power Builder, SQL Server, etc, usted puede manejarla en el Visual Basic como si la hubiese creado en este mismo programa y cualquier modificación que haga a estas bases de datos se visualizarán cuando las abra en su programa original de creación. Los nuevos controles se llaman Objetos de Datos ActiveX (ADO) que tienen además la ventaja de realizar conexiones Locales o conexiones Remotas muy fácilmente. La C onexión Local se realiza cuando la aplicación (programa) que desarrollas y la base de datos que maneja se encuentran en la misma computadora. La Conexión Rem ota se realiza cuando la aplicación que desarrollas y la base de datos se encuentran en computadoras diferentes. Para poder acceder a una base de datos desde el Visual Basic con los controles ADO, primero se debe preparar o configurar la conexión, la cual se puede realizar con: O D B C : Significa Conexión de Base de Datos Abierta y nos ayuda a conectarnos a una gran variedad de base de datos. El Windows tiene su controlador de Base de datos ODBC. A RCH IV O DE VÍNCULO DE DATOS - O LE DB: Permite alm acenar en un archivo con la extensión (*.UDL) toda la información de conexión a una base de datos. En estos archivos podemos crear vínculos de datos para cualquier proveedor de O LE DB. O LE 1)11 es otra forma de conectarse a una gran variedad de base de datos. Estos dos tipos de conexiones para base de datos las puede realizar desde el escritorio de Windows o desde el mismo Visual Basic. G r u p o E d i t o r i a l Megabyte 461
  • 233.
    o WÆ&m VISUALBASIC como debe ser... CONFIGURAR LA CONEXIÓN DESDE EL WINDOWS O D B C 1. Ingrese al Panel de Control (Inicio, Configuración, Panel de Control) y haga doble click en el icono Fuente de Datos ODBC. Se visualiza la ventana de Administración de Orígenes de Datos ODBC con todos los orígenes de datos ya creados. y«TI II 9 I' I Ewvarfo.* Ayu<ij Mi' .~3B f_________ áL c í •' #4 ^ 1 ÄK- * a r 'ssä * & tO s a W ’ ' « ä "i __i M J ,£ L M. PC tí? '■3P Se puede crear tres tipos de orígenes de datos: O rígenes de Datos de U suarios (DSN de Usuarios) Los cuales se pueden ver y utilizar sólo en el equipo donde los crea y por el usuario que los crea. O rígenes de Datos de Sistem a (DSN de Sistema) Los cuales se pueden ver y utilizar por todos los usuarios de la computadora donde se crea. Orígenes de Datos de Archivo (DSN de Archivo) Los cuales permiten conectarse a un proveedor de usuarios y por lo tanto se pueden utilizar por todos los usuarios que tengan instalado el mismo contro­lador. Estos orígenes de datos no necesitan estar dedicados a un usuario ni ser locales en un equipo. 2. Seleccione el tipo de origen de datos que desea crear y haga clic en botón Agregar. Se visualiza la ventana para seleccionar el controlador del origen de datos. L J J NOTA: Para empezar a trabajar con los orígenes de datos se recomienda seleccionar el origen de datos de Usuario. 4 6 2 G r u p o E d i t o r i a l M e g a b y t e ^ 3 CAPÍTULO XII: Programación ADO 3. La elección del controlador depende del tipo de base de datos a la cual le desea crear el origen de datos. Por ejemplo. Si a creado la base de datos en Microsoft Access o en el mismo Visual Basic debe elegir Microsoft Access Driver (*.MDB). Si a creado la base de datos en Visual FoxPro debe elegir Microsoft Visual Foxpro (*.DBF). Si a creado la base de datos en Power Builder debe elegir Microsoft SQ1 Any Were, si la base de datos esta en SQL Server elija el control SQL Server, etc. La siguiente ventana que se visualiza, depende del tipo de base de datos elegido. Por ejemplo, al elegir Microsoft Access Driver (*.MDB) y hacer click en el botón Finalizar. Se visualiza la ventana de instalación de ODBC para Microsoft Access. Instalación de ODBC para Microsoft Access Nombre d<?l ¡¡rigen do dalos ¡ Dcíciipcióti Ba.odcdotu, Base de dalos; Seleccionar. I üeai... L ili Compactai ; Bas« dç datos del sistema Nr>giirv=i C g g î c cfcs dato:: Ayuda I Avanzado.. | Opciones I Escriba el nombre que le desea asignar a su origen de datos que esta creando y opcionalmente una descripción. Este nombre que usted escriba, se utilizará en los programas que desarrolle en Visual Basic para referirse a la base de datos. Luego haga click en el botón Seleccionar para buscar la base de datos para la cual esta creando el origen de datos. Seleccionar base d e datos Nombre de base de datos EJ r.rndb Directorios: c : Aceptar n j Enumerar archivos de tipo: 1 Bases de datos Access ^ | r~l Archivos de progra Q CO N TA B ILID A D . Ü3 DB2 Q HH Q IB M V Java _^J Unidades: I Ö c: C E TD I T ] Cancelar | Ayuda P Sólo lectura I“ Exclusivo Red... G r u p o E d i t o r i a l Megabyte 4 6 3 <1m
  • 234.
    é S tik ' VISUAL BASIC como debe ser. . . Una vez que encuentra la base de datos, haga click en su nombre y luego en el botón Aceptar. Regresará a la ventana de Instalación donde debe hacer click también en el botón Aceptar para regresar a la ventada de administración de orígenes de datos donde visualizará el nombre de su nuevo origen de datos que ha creado. o I Conmuto de condKÍorM»t 1 • ÜSN de ratania ) DSN do < Otfgçhés de dalo^ do uiuaiio MS A c c e ;: Onlab. I Cmiliolddui rivci I rr»dfc»J Syba-^o SQL Ai iywl icio 0.0 Svbat* SQL Arn'whei» 5 0 SyLvj» *501 Anvwt.<;re 5 O Sybase SQL Anywl ieie S.O Svbnso SQL Anvwhere 5.0 ItA c ie s í Olive» r.rndb) yl:- SQ1. Ariywt'« Un OIir jr - n dr> dnlm Hn Honorio ODBC alm«i*7'en.s* ¡nfoimación ncmoa Hr> cúniu corloctatío til piovoodoi do díalos indicado. Un Oiijjoo do dato* do usuario sOlo so puede ver y utilizar en el eduipo »otual. Aceptar ] Cancelar { De esta manera la base de queda lista para poder utilizarla desde Visual Basic. Le recomiendo que practique nuevamente la creación de los orígenes de datos ODBC. Verá que cada vez es mucho más fácil. Si desea borrar uno que a creado, haga un clic en su nombre y luego en el botón Quitar. MUY IMPORTANTE. No es necesario que usted cree el origen de datos cada vez que necesita manejar la base de datos. Estos orígenes de datos sólo se crean una vez y quedan grabados en su computadora. Para visualizar los controladores que tiene instalados en su computadora, seleccione la hoja Controladores: r w i DSN do usuai io I DSN do siítoina Controládoioi.......jj SeQuiri nenio ] Conjunto Los contiuladoio- QDtlC instalado s on au si*loiVia so SN do arcl iivo ) Acerca de ola.loi ODBC de Mu io w. *oíi. Aece.v* Piève» I indi soft dB aso D.¡voi ( dL.fl '¡»oil dBosoVFP Diivei f isoft Excol Diivoi (K. xlsj Iftoft FoxPro VI P Driver I* « oft ODBC lor Oriolo sol» P .arado« Driver (" db soft Text Driver I iXI 1 c io ff V iiual f oxPio Driver 1 Version dbf) dtalj 3-/'. ,‘i 3711. OO D 3711.08 D8428.00 13711.ÜÜ 3.Ô42S. 00 371 I OO i 3/1 I 08 i 3/1 1 08 ) 8 4 2 8 . 0 0 I O rgafiigaci^ri oíoft Corpoicilit où of I Cor poi<atic o-iofl Coi por at ic LJn controlador ODBC permit.© a lo." programan habilitado; de OD 13L. obrpner inlorrnaciôri de lo?. origenet d«=- d ^ lo î ODBC Rara infialar c.oritioiadnr e s ruiuvos utilice el proclama de ins!afoorih *lel conti oladoi I A .-~ e r'» a i I 4 6 4 G r u p o E d i t o r i a l Megabyte CAPITULO XII: Programación ADO ARCHIVO DE VÍNCULO DE DATOS Para crear un archivo de vínculo de datos haga click con el botón derecho del mouse en cualquier parte libre del Escritorio o dentro de una carpeta en el Explorador de Windows. Visual Basic busca en forma predeterminada los archivos de vínculo de datos en la carpeta: C:Archivos de ProgramaArchivos ComunesSYSTEMole dbData Link Por lo tanto se recomienda hacer click con el botón derecho del Mouse dentro de esta carpeta. Se visualiza un menú donde debe elegir la opción Nuevo y luego la opción Microsoft Data Link. _J Capeta ^ Acceso directo " í ] Archivo de sonido 1 ) Documento de texto Documento de Microsoft Word Imagen de mapa de bits Hoja de cálculo de Microsoft Excel t í ] Presentación de Microsoft PowerPoint Microsoft Data Link Se creará en form a autom ática el archivo: N u evo M icro so ft Data Link.UDL. Usted puede asignarle otro nombre si lo desea, pero respetando la extensión UDL. Este nombre que usted asigne se utilizará en los programas que desarrolle en Visual Basic para referirse a la base de datos. Luego haga click con el botón derecho de Mouse en el nombre de este archivo y elija Propiedades para visualizar la ventana de configuración de la conexion. P r o p ie d a d ® * d e T ie n d a .U u L G e n e r a l | P ro v e e rlo » J í. < I iend*.UDl m m > I A voraci.. I t odo-, j Tipo: Microsoft Data Link I Ibir.-icióii C.-WINDOWSMíinÚ IrHr.ir. T cJinaPío: 166 bytes (166 bytes), 32,768 bytev utado:.- Nombre MS DOS: TIENDA UDL l ie->.:l.. J u i-v e s 1 d e .li ii .i.». Ic- /IJ IIII 1 ;* 31 •. I A M Modificado: Jueves I d© Junio do 2000 12:31:54 AM I $ o k > lot. tur * í* 7 M o d ilic jd u I O cu lto r I Aceptar | Cancelar j G r u p o E d i t o r i a l Megabyte 4 6 5 w J îi
  • 235.
    mk.< '% VISUALBASIC como debe ser. En la hoja Proveedor se debe seleccionar un proveedor para el tipo de base de datos que desea manejar en Visual Basic. Por ejemplo para una base de datos creada en Access o en el mismo Visual Basic, debe elegir M icrosoft Je t 3.51 ó 4.0 O LE DB Provider. Si tiene creado un ODBC, utilice la opción M icrosoft O LE DB Provider for ODBC Drivers. Una vez que ha seleccionado el proveedor, active la hoja conexión cuya pantalla depende del tipo de Proveedor elegido. Por ejemplo la siguiente pantalla se visualiza cuando se ha elegido Microsoft Jet OLE DB Provider. . 0«rw»¿l j Prov«orlot CotwxtóM ) Av«r>7.ado 1 Tokíos 1 ,1 infoim.-.oú'in f I A .' En esta ventana haga click en el botón Buscar (...) para seleccionar la base de datos que desea utilizar en el archivo de vínculo y luego haga click en el botón Probar Conexión. Se debe visualizar el mensaje: M ic ro s o ft D a ta L in k L a p ru e b a d e c o n e x ió n fu e sa tisfactoria. I ( A c e p ta r ] | Esto indica que el archivo se ha creado correctamente y esta listo para utilizarlo en Visual Basic y poder manipular la base de datos indicada. CAPÍTULO XII: Programación ADO CONTRO LADO : Este control es muy similar al control data y permite conectarnos a una gran variedad de tipos de base de datos a través de los Archivos de Vínculo de datos o de los ODBC. Cuando se dibuja en el formulario, tiene la misma apariencia que el control Data, pero su nombre predeterminado es Adodc 1, Adodc2, etc. dependiendo de la cantidad de controles que dibuje. A d o d d ► M Para desarrollar una aplicación que maneje una base de datos usando este control sólo es necesario inicialmente asignarle valores en su propiedad CO N N ECTIO N STRIN G donde se indica el nombre del origen de datos y en su propiedad RECO RD SO U RCE, donde se indica el origen de los registros que normalmente es el nombre de una tabla o un texto que consiste en una instrucción SQL. Para visualizar en el cuadro de herramientas el control ADO y sus controles compatibles, cree un nuevo proyecto en el modo “ C ontroles de VB Edición E m p resarial” . N u evo p royecto IB <sv S I S t Asistente para Administrador Proyecto de Aplicación US aplicaciones... de asistent... datos •SI S I Sb§ S t Addin DII de Exe de Aplicación O docume... docume... DHTML ^ 3 Controles de VB Edición... Aceptar Ayuda Otra forma de tenerlos en el cuadro de herramientas es, abriendo la ventana de componentes (Control+T) y activando la casilla respectiva. La casilla del control ADO es: M icrosoft ADO data control 6.0 (OLEDB). G r u p o E d it o r i a l Megabyte 467
  • 236.
    é m mVISUAL BASIC como debe ser... USO DE LA PROPIEDAD CONNECTIONSTRING 1. SI YA CR EÓ EL O R IG EN DE DATOS. 1.1 A RCH IV O DE VÍNCULOS Si ya creaste una conexión usando un archivo de vínculos, en la propiedad ConnectionString debes escribir: F IL E NAME=Ruta y nombre del Archivo.UDL Por ejemplo: Si has creado un archivo de vínculos llamado VENTAS en la unidad C:SISTEMA, debes escribir: F IL E NAM E=C: SISTE M A W E N TA S. UDL ConnectionString I FILE NAM E=C : SISTEM AVENT AS J 1.2 ODBC Si ya creaste una conexión a tu base de datos usando ODBC, en la propiedad ConnectionString debes escribir: DSN=Nombre del Origen de datos Por ejemplo: Si has creado un origen de datos ODBC llamado AGENDA, debes escribir: DSN=AGENDA ConnectionString IDSN=AGENDA J MUY IMPORTANTE: No debe haber espacios ni antes ni después del signo igual (=) y si utiliza archivo de vínculo, debe indicar también la extensión del archivo (.UDL). Otra forma de indicar el origen de datos es haciendo Click en el botón con tres puntos que tiene la propiedad ConnectionString ( ... |), se visualiza la siguiente ventana: [ GwiM'á :J O i ¿gen de conexión Usar archivo de vínculo a datos ____ t~ ' Usai nombre de origen de datos ORBC I — — Usar cadena de conexión ______________ Otros attifeutos: | en esta ventana indique si ha creado un archivo de vínculo o un ODBC. Si a creado un archivo de vínculo, haga clic en el botón Examinar para buscar la carpeta y el nombre del archivo. Si ha creado un ODBC, haga click en la flecha hacia a bajo del Combo para seleccionar el ODBC. 468 G r u p o E d i t o r i a l M egabyte^ ^ CAPÍTULO XII: Programación ADO < € ¡ ¡ ¡ ¡ 1 2. SI NO HA CREADO EL O R IG EN DE DATOS. Para crear un origen de datos usando Visual Basic, haga click en el botón con tres puntos que tiene la propiedad ConnectionString (... |). Se visualiza la ventana anterior donde debe indicar el tipo de conexión a crear. 2.1 CR EA R UN A RCH IV O DE VÍNCULOS Para crear un archivo de vínculos, seleccione Usar Archivo de Vínculo de Datos y haga clic en el botón Examinar. Se visualiza la siguiente ventana: I ...h ~ 3 üJ M nJ Iri OJ tJ ombro de oí chivo f lipa de archivo*: ¡Archivo" de Micro*oft Data Link (' "udij" 1 Abrir 1 ' ■ Cóncola! [ P«la cteai un aichivo <1« vinculo de iWos tunvu tiaga clic con H botón «ecuridaiio del mouse en cualquier paire de Ia lis*« de Archivo» y, despu£v. seleccione Microsolt Data Lmk en el menú Nuevo Paia modificai «I aichivo de vínculo de datos, hag$ doble clic «ri ©I archivó. En esta ventana haga clic con el botón derecho del Mouse, elija la opción Nuevo y luego la opción Microsoft Data Link y siga los mismos pasos indicados en la creación de un archivo de vínculos desde el Windows. Una vez creado el archivo, selecciónelo y haga click en el botón Abrir y luego en el botón Aceptar. 2.2 CR EA R UN ODBC Para crear un origen de datos ODBC, seleccione Usar Nombre de Origen de Datos ODBC y haga click en el botón Nuevo. Se visualiza la ventana: ni i min ii n i b í — — — — i Sster..ckMvw un tipo d e origen d e da to s f* ¡Q iijjen d e d a lo s d e arch ivo (equ ipo ind epen díen le} Origen d e d a to * d a u su a rio (<» a p lic a « ilo a a s te equipe-) f " P jífl« n d e d a to s d e siyiem á (s e «p lica tú lo a e v t* equipo) Al «eleccionaf O ligan d e dato» d a « c h iv o c re a un exigen de d.stoi b asad o en un archivo q u e so com parto co n todos tos usuario? que liei te n a c c e s o a la b a s e «Je d a to s . j Siguiente > j Lancolar J En esta ventana seleccione el tipo de origen de datos a crear, y siga los mismos pasos indicado en la creación de ODBC desde el Windows. |Í ¡ ||i |^ G r u p o E d i t o r i a l Megabyte 4 6 9 « »
  • 237.
    ( ¡ Él % VISUAL BASIC como debe ser... USO DE LA PROPIEDAD RECORDSOURCE La propiedad RecordSource se debe utilizar después de ConnectionString y se utiliza para indicar el origen de los registros. Cuando se ingresa a esta propiedad, se visualiza la siguiente pantalla: GE ( O r i g e n d ë r e g i s t r o s j | O r i g e n d e r e g i s t r o s T i p o d e c o m a n d o ES3 |8 - adCmdUnknown _ T ábla o nombre de procedimiento alm acenado Texto del coniando (SQL) A y u d a En esta ventana, primero se indica el tipo de comando, es decir, cómo se obtendrán los registros. Tipo de com ando |S - adCrndUnknown zJ 8 - adCmdiJnknown ................................. 1 • adCmdT ext 2 • adCmdT able 4 - adCrndStoredProc Los tipos de comandos más usados son: * 1 -ad C m d T ex t, Para que los registros se obtengan desde una instrucción SQL. * 2-adC m dT able Para que los registros se obtengan de una tabla. | K La opción 4-adC m dStoredProc se usa cuando se tiene un procedimiento almacenado en el servidor y 8-adCm dU nknown cuando el tipo de comando es desconocido. NOTA Una vez que asignó el origen de los registros; su base de datos, tablas y registros están listos para utilizarlos en cualquier aplicación usando los controles compatibles del control ADO, como por ejemplo: DataGrid, DataCombo, DataList, TextBox, Label, etc. Æ M 4 7 0 G r u p o E d i t o r i a l Megabyte ^¡CAPITULO XII: Programación ADO ERRORES MÁS COMUNES Cuando no se a escrito o seleccionado correctamente el origen de datos o de los registros se visualizan varios mensajes de error, los cuales se indican .1 continuación con la finalidad de poder corregirlos en forma fácil y rápida. [Microsofl][Ádministrador de controladores ODBC] El nombre del origen de datos no se encontró y no se especificó ningún controlador predeterminado Aceptar lil mensaje anterior se visualiza cuando el origen de datos indicado en la propiedad ConnectionString no está creado, es decir, no existe en la computadora donde se desea manejar la base de datos o escribió en forma incorrecta la cadena de conexión. Por ejemplo, dejó espacio antes o de después del signo igual (=). N o se puede encontrar XA. c a p t a r j | lil mensaje anterior se visualiza cuando el nombre del archivo de vínculo i ndicado en la propiedad ConnectionString no existe. [Microsoft][Controlador ODBC Micro soit Access] Instrucción SQL no válida; se esperaba 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' o 'UPDATE'. Aceptar l i l mensaje anterior se visualiza cuando en tipo de comando se eligió la opción 1-adCmdText y no se escribió correctamente la instrucción SQL. [ADODC]: no se ha especificado ningún RecordSource. [AD0]:No se configuró un comando para el objeto comando lil mensaje anterior se visualiza cuando no ha indicado el origen de los registros, es decir, no se llenó la propiedad RecordSource. G r u p o E d i t o r i a l Megabyte 4 7 1 I M S
  • 238.
    J VISUAL BASICcomo debe ser... OTRAS PROPIEDADES DEL CONTROLADO El control ADO tiene muchas propiedades similares al control Data. Las nuevas propiedades de este control son: PER SO N A LIZA D O Esta propiedad permite también asignar todos los valores necesarios para que se realice la conexión a una base de datos. Se puede activar también haciendo un click con el botón derecho del Mouse sobre el control ADO y eligiendo la opción Propiedades de ADODC. La pantalla que visualiza es la siguiente: i-jj.im r u E s a A u te n tic a c ió n | O rig e n d e r e g is t r o s | C olor ] F u e n t e | KZ1 Origen de conexión f~~ Usar archivo de vinculo a datos Usar nombre de origen de datos 0£>BC 1 Usar cadena de conexión Otros atributos: j | A c e p ta r | C a n c e la r | La forma de realizar una conexión en esta ventana se realiza de la misma forma como se explicó en las propiedades ConnectionString y RecordSource. CU RSO RTY PE Indica el tipo de cursor que se usa en un objeto recordset. Un cursor, es un conjunto de registros que se obtienen como resultado de una consulta a una base de datos. Los tipos de cursores disponibles son: • A doO penForw areO nly: Es el tipo de cursor predeterminado y es igual que el cursor estático, se diferencia porque sólo permite desplazarse hacia delante de los registros. • AdoOpenKeyset: (Conjunto de claves). Es igual que un cursos dinámico, se diferencia porque no se pueden ver los registros que agregan otros usuarios. • A d o O p e n D y n a m ic : (D in ám ico ). Se c a ra c te riz a porque las incorporaciones, cambios y eliminaciones que hacen otros usuarios permanecen visibles y se admiten todo tipo de movimiento entre registros. • A doO penStatic: (Cursor Estático). Consiste en una copia estática de un conjunto de registros que se puede usar sólo para buscar datos o crear reportes. Los cambios que hacen otros usuarios no son visibles. 4 7 2 G r u p o E d i t o r i a l M e g a b y t e “^ CAPÍTULO XII: Programación ADO ^ ¡ ¡ ¡ ¡ ¡ l C U R SO R L O C A T IO N Indica desde dónde se van a utilizar los cursores. Se puede elegir desde el cliente (computadora de trabajo) o desde el servidor. C O M M A N D T Y PE Indica el tipo de comando para acceder a los registros. Se pueden seleccionar las mismas opciones que se utilizan en la propiedad RecordSource. L O C K T Y PE Permite establecer el tipo de bloqueo que deben tener los registros al momento de acceder a ellos para modificarlos. • AdLockReadOnly:(Sólo de lectura). Es el predeterminado y se caracteriza porque no se pueden modificar los registros. • AdLockPessimistic: (Pesimista). Se caracteriza porque el programa hace lo necesario para lograr la m odificación correcta de los registros, generalmente bloqueando registros en el origen de datos durante el proceso de modificación. • AdLockOptimistic: (Optimista). Se caracteriza porque el bloque se realiza sólo cuando se graba un registro con el método Update. • AdLockBatchOptimistic: (Por lotes). Se caracteriza porque el bloque se realiza sólo cuando se graban varios registros con el m étodo UpdateBatch. U SER N A M E Indica el valor que representa a un usuario de un objeto recordset de Ado. Cuando se proporcionan valores para UserName y la propiedad Password, el control los utiliza para crear una cadena de conexión. M O D E Indica los permisos disponibles que se tienen cuando se realiza una conexión. C O M M A N D T IM E O U T Se utiliza para indicar el tiempo que se debe esperar como máximo para un comando de acceso a base de datos. Si transcurre dicho tiempo, se produce un error. Las demoras pueden ser en el tráfico de la red. C O N N E C T IO N T IM E O U T Indica el tiempo de espera para que se realice la conexión. El valor predeterminado es 15 segundo. Si transcurre el tiempo indicado, se produce un error. M A X REC O RD S Indica el número máximo de registros que se pueden obtener al abrir la conexión. El valor predeterminado es cero (0) que indica un número sin límite de registros. G r u p o E d i t o r i a l Megabyte 473 < € 1 ®
  • 239.
    VISUAL BASIC comodebe ser... CONTROLES COMPATIBLES CON ADO Los controles compatibles con el control Data: DbList, DbCombo y DbGrid no son compatibles con el control ADO, esto quiere decir que no se pueden utilizar para mostrar la información de la base de datos que el control ADO tiene conectada. En lugar de estos controles se utilizan DataList, DataCombo y Datagrid. La ventaja es que sus propiedades RowSource, ListField y DataSource si se utilizan y de la misma forma. También se puede utilizar el control TextBox, Label y otros. Cuando trates de utilizar un control incompatible con el control ADO, se muestra el siguiente mensaje: M ic ro s o ft V is u a l B a sic O N o se ha e n c on tra do n ing ún origen de datos com patible para este control. A g re g u e un control D a ta intrínsec o o u n control R e m o te D a te al formulario. ( ” A c e p ta r j j A y u d a Para trabajar con estos controles, cree un nuevo proyecto en el modo de “Controles de VB Edición Empresarial” o abra la ventana de componentes (Control + T) y active la casilla del control que desea utilizar. CO NTROL DATAGRID Este control es muy similar control DbGrid y permite mostrar varios registros a la vez, para ello, sólo le debe asignar su propiedad DataSource donde se indica el nombre del control ADO. Si no se encuentra en el cuadro de herramientas, abra la ventana de componentes y active la casilla de: M icrosoft DataGrid Control 6.0 (OLEDB). CONTROLES D ATALIST y DATACOM BO Son similares a los control DbList y DbCombo y permiten mostrar el contenido de un campo de varios registros. Para ello, debe asignarles como mínimo la propiedad RowSource, donde se indica el nombre del control ADO y la propiedad ListField, donde se indica el nombre del campo cuyo contenido se desea visualizar. Si no se encuentran en el cuadro de herramientas, abra la ventana de componentes y active la casilla de: M icrosoft DataLists Control 6.0 (OLEDB). 474 G r u p o E d i t o r i a l Megabyte« CAPÍTULO XII: Programación ADO A PLIC A C IO N DESARROLLAD A N° 65 La siguiente aplicación es un ejemplo del manejo de una base de datos, tablas y registros usando la programación ADO. 1 i i . M e n u P rin c ip a l HHHHSBHHHSLioiiü A rtículos V is u a l B a s ic . C om o d e b e s 11! ! lí Esta aplicación permite administrar una tabla llamada Artículos que se encuentra en una base de datos llamada Tienda y esta grada en la unidad I M enu Principal □ Artículos Listado Qrl+L Mantenimiento Ctrl+M Consulta Ctrl+C Salir Qrl+S 1 9 /0 6 /0 0 10:18 a.m. Visual Basic. Como debe s e r. TFT! ¡I Las opciones se pueden elegir desde el menú principal o desde la barra de herramientas. En la barra de estado se muestra la fecha actual, hora actual, nombre del libro y un acceso a la calculadora. La estructura de la tabla Artículos es: Codigo Texto 5 Nombre Texto 30 Presentación Texto 20 ValorCompra Currency Vencimiento Data/Time G r u p o E d i t o r i a l Megabyte 475 ^
  • 240.
    l i li l í * VISUAL BASIC como debe ser... DESARRO LLO DE L A A P LIC A C IÓ N N° 65 Cree un nuevo proyecto en el modo Controles de VB Edición Empresa­rial para tener en el cuadro de herramientas los controles ADO. En este proyecto debe estar compuesto por cuatro (4) formularios y un módulo don­de se deben definir las variables que se usan en más de un formulario: mam j(General) | | (Declaraciones) 1 Public Puto1ic Puto1ic ■ « J l XCODIGO, XHOMBRE, XPRE3ENTACION A s String XVALOR As Currency 1 XFECHA As Date ^ | FORMULARIO N s 01 En el form ulario N° 01 debe diseñar el menú, la barra de herramientas y la barra de estado, como se muestra en la página anterior. La creación de menú se explica en la Página N° 264, las barra de herramientas en la página N°268 (ToolBar) y las barras de estado en la página N°181 (StatusBar). En las barras puede utilizar cualquier gráfico de su computadora. En la página N° 168 se explica cómo buscar gráficos. Instrucciones del Form ulario N° 01 Rem Opción Consulta Rem Opción Listado Prívate Sub Consulta_Click() Prívate Sub Listado_Click() Form4.Show 1 ‘Consulta Form2.Show 1 ‘Listado End Sub End Sub Rem Opción M antenimiento Prívate Sub M antenimiento_Click() Form3.Show 1 ‘Mantenimiento End Sub Rem Instrucciones del control StatusBar Prívate Sub StatusBar 1 _PanelClick(By Val Panel As MSComctlLib.Panel) I f Panel.Index = 4 Then Shell “c:windowscalc.exe", 1 End Sub Rem Instrucciones del control ToolBar Prívate Sub Toolbarl_ButtonClick(ByVal Button As MSComctlLib.Button) I f Button.Index — 1 Then Form2.Show 1 'Listado I f Button. Index = 2 Then Form3.Show 1 ‘Mantenimiento I f Button.Index = 3 Then Form4.Show 1 ‘Consulta I f Button.Index = 4 Then End ‘Salir End Sub NOTA: El valor 1 (uno) después de la palabra Show indica el formulario sólo debe cerrarse haciendo click en el botón respectivo. G r u p o E 476 d it o r ia l M e g a b y t e ^ ^ ^ CAPITULO XII: Programación ADO FORMULARIO N g 0 2 En el formulario N° 02 sólo dibuje un control DataGrid, una etiqueta, un botón de comandos y un control ADO. . L is ia d o d e A r tíc u lo s m n Labell |nl -I j A d o d c l | r 1 - | En la propiedad ConnectionString del control ADO escriba el nombre del origen de datos creado para la base de datos TIENDA o cree uno nuevo y en su propiedad RecordSource seleccione la tabla Articulos. Al control DataGrid asigne en su propiedad DataSource el nombre del control ADO, también puede asignarle otras propiedades como si se tratará del control DbGrid. IN STR U C CIO N ES D EL FO R M U LA R IO N° 02 Instrucciones del botón C e rra r Prívate Sub Com mandl_Click() Hide End Sub Instrucciones del Form _A ctivate Estas instrucciones permiten que al ingresar a este formulario el control ADO se actualice y visualice las modificaciones realizadas a los registros en otros formularios. También se muestra en la etiqueta N° 01 la cantidad de artículos mostrados. Prívate Sub Form_Activate() A dodcl .Refresh Labell = “N°de Artículo mostrados: “ & Adodcl.Recordset.RecordCount End Sub G r u p o E d i t o r i a l Megabyte 477
  • 241.
    VISUAL BASIC comodebe ser... F O R M U L A R IO N 2 0 3 En este formulario dibuje un control ADO, 2 DataCombo, 3 frame, 7 Label, 6 CommandButton y un control Calendar. Si el control Calendar no se encuentra en el cuadro de herramientas, active su casilla en la ventana de componentes cuyo nombre es: Microsoft Calendar Control y para dibujarlo haga click primero en cualquier parte libre del formulario. in l «I rrrr.— l L¿»b«l4 Labél'.» l.abnK. !.. .at>ial7 IU JloComtó ~EÌ 12000 jtJ - C o m m a n d l 1 Cornrr>arid2 | Conimand3 C ó m m a n d 4 Commands 0 3 Z P Commands I PR O PIED A D ES DE LO S CO N TR O LES Control Adodcl Control DataCombo 1 DataCombo2 Control Textl Text2 Text3 Text4 Text5 ConnectionString Nombre del Origen de Datos RowSource ListField Adodc1 Nombre Adodcl Codigo DataSource Adodcl Adodc 1 Adodcl Adodc1 Adodc1 RecordSource Artículos Style 1 -dbcSimpleCombo 1 -dbcSimpleCombo ListField Codigo Nombre Presentación ValorCompra Vencimiento Control Frame 1 Frame2 Frame3 Enabled True False True Control Calendari Visible False ShowTitle False A los otros controles asígneles las propiedades como se indica en el formulario. 478 G r u p o E d it o r i a l Megabyte< CAPITULO XII: Programación ADO Al ejecutar el formulario debe tener el siguiente aspecto. ■non El Articulo 1)atoi dnl l'inducl N ornt'.r» OSdijjo Vokji -J« Con h J I I nonni ~J ns üiRiHmibles Ilnonnnoon4r. —' Ambulo,. . . . A'- <uali*<w k>a doto« dol Aitícuio C A R A C TER ÍSTIC A D EL FO R M U LA R IO . 1. Este formulario permite dar mantenimiento a los registros, esto quiere decir que se puede agregar nuevos artículos, actualizar sus datos o eliminar cualquiera de ellos. 2. Se puede consultar un artículo por su nombre o su código. 3. Cuando no existen registros el botón Eliminar y Actualizar se desactivan. 4. El control Calendar 1 se visualiza cuando se desea ingresar o modificar la fecha de vencimiento. IMPORTANTE Cuando se manejan base de datos con ADO, no se necesita usar el método EDIT para modificar registros porque un registros cambia automáticamente al modo de edición cuando se empieza a modificar. La programación con ADO ya no utiliza el método FINDFIRST. El nuevo método es FIND. M ÉTO D O FIND Este método permite buscar registros cuando se trabaja con ADO. Su sintaxis es la siguiente. Control_Ado.Recordset.Find Condición, Valor 1, Valor2, Valor3 Valor 1: Indica el número de registros que se debe saltar antes que se inicie la búsqueda. Si se omite no salta ningún registro. Valor2: Indica la dirección de la búsqueda que puede ser hacia delante (adSearchForw ard) o hacia atrás (adSearchB ackw ard). Si se omite, la busqueda se realiza hacia delante. Valor3: Indica la posición inicial de la búsqueda. Escriba el número 1 (uno) para empezar desde el primer registo. Ejemplo: La siguiente instrucción busca el artículo llamado Panadol. A d o d cl.R eco rd set.F in d N om bre = ” PanadoI” ,„ l NOTA: Si el registro no se encuentra se activa el final (EOF) o inicio (BOF) de la tabla dependiendo de la dirección de la búsqueda. G r u p o E d i t o r i a l Megabyte 479
  • 242.
    J1¡1IÉ I> VISUALBASIC como debe ser... INSTRUCCIONES DEL FORMULARIO N"03 Definición de variables en General Declaraciones Dim r As String Dim NUEVO As Boolean Instrucciones del Form_Activate Prívate Sub Form_Activate() ‘Actualiza el control Adocdl A dodcl.Refresh ‘Si no hay registros, desactiva los botones Actualizar ‘y Eliminar y no permite seleccionar registros. If Adodcl. Recordset.RecordCount = 0 Then Command4. Enabled - False Commands.Enabled = False Framel. Enabled = False Else Command4. Enabled = True Commands .Enabled = True Framel.Enabled = True End If End Sub Instrucciones del DataCombol Private Sub DataCombol_Change() If DataCombol = Then Exit Sub r = “Nombre Like + DataCombol + Adodcl.Recordset.Find r ,,, 1 If Adodcl .Recordset.EOF Then MsgBox “No existe el Articulo “+DataCombol + ”,16,"Puede adiciomrlo" A dodcl. Recordset. Move First End If End Sub Private Sub DataCombol_Click(Area As' Integer) DataCombol jChange End Sub Instrucciones del DataCombo2 Private Sub DataCombo2_Change() If DataCombo2 - “ ” Then Exit Sub r - “Codigo Like + DataCombol + Adodcl .Recordset.Find r, , , 1 If Adodcl.Recordset.EOF Then MsgBox “NoexisteelArticuloconelcódigo “ + DataCombo2 + ”, 16, “Puedeadiciomrlo Adodcl. Recordset. MoveFirst End If End Sub Private Sub DataCombo2_Click(Area As Integer) DataCombo2 JChange End Sub G r u p 4 8 0 o E d it o r ia l Megabyte CAPÍTULO XII: Programación ADO A Instrucciones del Botón Nuevo Private Sub Command3_Click() Frame ¡.Enabled = False Frame2. Enabled = True Frame 3. Enabled = False Adodcl.Recordset. AddNew ‘Indica Nuevo Artículo NUEVO = True Textl .SetFocus End Sub Instrucciones del Botón Grabar Private Sub Command I _Click() Frame 1 .Enabled = True Frame 2. Enabled = False Frame 3. Enabled = True Adodcl.Recordset. Update Command4. Enabled - True Commands.Enabled = True Framel.Enabled = True End Sub Instrucciones del Botón Cancelar Private Sub Command2_Click() Frame ¡.Enabled = True Frame 2. Enabled = False Frame 3.Enabled = True If NUEVO Then Adodcl.Recordset. CancelUpdate Else ‘Se devuelven los datos originales Textl = XCODIGO Text2 = XNOMBRE Text3 = XPRESENTACION Text4 = XVALOR TextS = XFECHA End If ‘Después de cancelar se ubica en el Artículo ‘que estaba en pantalla. Adodcl .Recordset. AbsolutePosition=Adodcl .Recordset.Bookmark End Sub Instrucciones del Botón Actualizar Prívate Sub Command4_Click() NUEVO = False Framel.Enabled = False Frame2. Enabled = True Frame 3. Enabled = False ‘Se almacenan los valores originales en variables XCODIGO = Textl XNOMBRE = Text2 XPRESENTACION = Text3 XVALOR = Val(Text4) If IsDate(TextS) Then XFECHA = CDate(TextS) Textl.SetFocus End Sub § | | | ^ G r u p o E d i t o r i a l Megabyte 481
  • 243.
    é S Bk > VISUAL BASIC como debe ser... Instrucciones del Botón Eliminar Private Sub Commands_Click() Dim Mensaje As String I f Adodcl. Recordset.RecordCount - 0 Then MsgBox “No hay productos", 16, “No se puede eliminar" Else Mensaje = “Está seguro de eliminar el artículo ” + Chr(13) + Textl + + Text2 I f MsgBox(Mensaje, 36, “CUIDADO”) = 6 Then Adodcl. Recordset. Delete Adodcl.Recordset. MovePrevious I f Adodcl.Recordset.BOF Then Adodc 1. Recordset. Move Next End I f ‘Pregunta si quedan registros I f Adodcl.Recordset.RecordCount = 0 Then ‘Si no hay registros desactiva los botones Actualizar y Eliminar y la consulta Command4.Enabled = False Commands.Enabled = False Frame I. Enabled = False End I f End I f End I f End Sub Instrucciones del Botón Salir Private Sub Command6_Click() Hide End Sub Instrucciones de Text5 Visualiza el calendario cuando se ubica el cursor en Text5. Private Sub Text5_GotFocus() Calendar ¡.Visible = True End Sub Oculta el formulario si se pulsa ESC Private Sub Text5_KeyPress( Key Ascii As Integer) I f Key Ascii = 27 Then Calendar 1 .Visible = False End I f End Sub Instrucciones del Control calendarl Cuando se selecciona una fecha se oculta el Calendario. Private Sub C alendarl_C lick() Text5 = Calendarl .Value Calendarl .Visible = False End Sub á p l p l > 482 G r u p o E d i t o r i a l Megabyte <1 1 1 1 1 1 CAPITULO XII: Programación ADO FORMULARIO N s 04 En este formulario dibuje un control ADO, 2 DataCombo, 2 frame, 21 Label, 2 CommandButton y un control Calendar. Label! fil ÁtaCombol J un J l* uut £... 3 1 2 . X A Z L ■ " .■ - W I- K ‘ i r r * Z1Ï. L-aboM LobolS L aboli O L oboli1 L abel 13 L Abeti 4 jtToxlì.. n~- L oboli 7 L Aboil a Lobelia LoboCO H - lc i| x | Comm»Kl2 I PROPIEDADES DE LOS CONTROLES Control Adodcl Control DataCombo 1 DataCombo2 Control Textl Text2 Text3 Text4 Text5 ConnectionString Nombre del Origen de Datos RowSource Adodcl Adodc 1 ListField Nombre Codigo RecordSource Artículos Style 1 -dbcSimpleCombo 1 -dbcSimpleCombo DataSource Adodcl Adodc1 Adodc1 Adodcl Adodcl ListField Codigo Nombre Presentación ValorCompra Vencimiento Control Frame 1 Frame2 Control Calendarl Enabled True False Visible False ShowTitle False A las etiquetas desde la N° 15 hasta la N° 21, asígneles en su propiedad BorderStyle el valor 1-Fixed Single y en su propiedad Alignment el valor 1 - Right Justify. A los otros controles asígneles las propiedades como se indica en el formulario. ■ G r u p o E d i t o r i a l Megabyte 483 w M
  • 244.
    vj^ívM ' VISUALBASIC como debe ser... A l e j e c u t a r e l f o r m u l a r i o d e b e t e n e r e l s i g u i e n t e a s p e c t o : IOOOOJ 00004 OOÚCPS Doto» dol Pioduc Presentación Val« de Compra l(5V (183K) Preoio d o Compra Utihd*d (29X1 P»*cio ule Venta Deacumito (105;) Joooo.^ [.<!■< l AdcKioi I'VJm I tcha do Vencimiento Actualizar lo* Dalot ;j|Ó 3/07/03 CARACTERÍSTICA DEL FORMULARIO. 1. Este formulario permite visualizar los datos de cualquier artículo in­cluyendo campos calculados: IGV: 18% del Valor de Compra. Precio de Compra: Valor de Compra + IGV Utilidad: 25% del Precio de Compra Precio de Venta: Precio de Compra + Utilidad Descuento: 10% del Precio de Venta Precio al Publico: Precio de Venta - Descuento Número de días para el artículo este vencido. 2 Si faltan menos de 30 días para que el artículo venza, se deben visualizar en color rojo y si ya está vencido, debe visualizar la palabra “Venci­do” también con letras rojas. 3 Este formulario permite buscar al un artículo por su código o nombre y tiene la posibilidad de actualizarlo. INSTRUCCIONES DEL FORMULARIO N° 03 Instrucciones del Form_Activate Prívate Sub Form_Activate() A dodcl. Refresh I f Adodcl.Recordset.RecordCount = 0 Then Command3.Enabled - False Fram el .Enabled - False El seC ommandJ. Enabled = True Fram el .Enabled — True End I f CAPÍTULO XII: Programación ADO Instrucc. del botón Grabar Private Sub Command 1 _Clíck() Frame ¡.Enabled = True Frame2. Enabled = False Command 1 .Visible - False Command2. Visible = False Command^ .Enabled = True Command4. Enabled = True A dodcl.Recordset. Update calcular End Sub (nstrucc. del botón Actualizar Private Sub Command3_Click() Command 1 .Visible = True Command2. Visible = True Command3. Enabled = False Command4. Enabled = False Frame ¡.Enabled = False Frame2.Enabled = True XCOD1GO = Textl X,NOMBRE = Text2 XPRESENTACION = Text 3 XVALOR = Val(Text4) If Not Texl5 = “ ” Then XFECHA = CDate(Text5) End If Textl.Set Focus End Sub Instrucciones del botón Cancelar Private Sub Command2_Click() Framel.Enabled = True Frame2.Enabled = False Commandl .Visible = False Command2. Visible = False Command3. Enabled = True Command4. Enabled = True ‘Se devuelven los datos originales Textl = XCODIGO Text2 = A’NOMBRE Text3 = XPRESENTACION Text4 = XVALOR Text5 = XFECHA Adodcl. Recordset. A bsolutePosition =A dodcl. Recordset. Bookmark calcular End Sub Instrucciones del DataCombol Private Sub DataCombol_Change() If DataCombol = Then Exit Sub r = “Nombre Like + DataCombol + Adodcl .Recordset.Find r,,, 1 If Adodcl.Recordset. EOF Then ‘ + DataCombol + 16. “Puede adicionarlo" MsgBox "No existe el Articulo Adodcl .Recordset. Move First End If calcular End Sub Private Sub DataCombol_Click(Area As Integer) DataCombol jChange End Sub G r u p o E d it o r ia l Megabyte 485
  • 245.
    l l ll l » VISUAL BASIC como debe ser. . . Instrucciones del DataCombo2 Private Sub DataCombo2_Change() If DataCombo2 = “ ” Then Exit Sub r = “Codigo Like + DataCombo2 + Adodcl. Recordset. Find r, , , 1 If Adodc 1 .Recordset.EOF Then MsgBox“NoexisteelArtíci(locoiielcódigo “+DataCombo2+ ”... ’’,16, ’’Puede adicionado" Adodcl. Recordset. MoveFirst End If calcular End Sub Private Sub DataCombo2_Click(Area As Integer) DataCombo2_Change End Sub Instrucciones del procedimiento Calcular Sub calcular() Dim fA s String Dim dias As Long / = Formatf“###.####,##0.00”, “(###,####,##0.00)") valor = Val(Text4) igv = valor * 1 8 /1 0 0 pcompra = valor + igv utilidad - pcompra * 25 /1 0 0 pventa = pcompra + utilidad descuento — pventa * 1 0 /1 0 0 ppublico = pventa - descuento Label 15 = Formatf igv, f) Labelló = Formatf pcompra, f) Label 17 = Fo rmatfutilidad,f) Labell8 - Formatfpventa, f) Label 19 = Formatf descuento,f) Label20 = Format(ppublico, f) If IsDate(Text5) Then dias = CDate(Text5) - Date lfd ia s< = 0 Then L a b el2 1 -"Vencido” Else Label21 -CDate(Text5)- Date if dias< ~30 Then Label21.ForeColor = QBColor( 12) Else Label21.ForeColor = QBColor(O) End If Else NOTA Label21 = End If End Sub Instrucciones de Text4 Private Sub Text4_Change() calcular End Sub Las instrucciones de text5. C alendad y del Botón Cerrar son iguales al formulario anterior. 486 G r u p o E d i t o r i a l Megabyte CAPITULO XII: Programación ADO % A P LIC A C IÓ N DESARRO LLADA N° 66 i*. Menú Principal Art í culos Configuración Sistema Presentaciones • Esta aplicación es simi­lar a la anterior. Funcio- . , . i | 21/06/00 15:58 Visual Basic, Como debe ser... ¡ü ü l na con dos tablas mas: Configuración y Presentaciones. La tabla Configuración contiene sólo un registro donde se encuentran los datos que la aplicación necesita para un buen funcionamiento y para un mante­nimiento más rápido y fácil. Los datos que contiene son los siguientes: ULTIMO CODIGO Que indica cuál es el ultimo código generado y permite asignar en forma automática el código que le corresponde a cada nuevo producto. La aplica ción anterior permite que se ingrese manualmente el codigo para cada nue­vo artículo lo que puede ocasionar que se ingresen código repetidos. IGV En este campo se indica cuál es el porcentaje que la aplicación debe utilizar para calcular el IGV. La ventaja que tiene este campo es que si algún día se cambia el porcentaje de IGV, sólo se tendría que escribir el nuevo valor en la tabla y la aplicación trabajará con este nuevo valor sin necesidad de modificar el programa. U TILID AD En este campo se indica con qué porcentaje de utilidad debe trabajar la aplicación. DESCUENTO En este campo se indica con qué porcentaje de descuento debe trabajar la aplicación. ________________________________ En este formulario se confi­gura los datos del sistema. D d l u i A c l u n l m Ultimo CMigo Im puesto G enei al a la s Venias 3í Utilidad A ctu a l A. D o s t 'ionto Actual A’ Aceptar los Cambios I iQnorar los Cambios <ctjta£iz;ar ios GOatos G r u p o E d i t o r i a l Megabyte 487
  • 246.
    §ÉÉt¿ék>- VISUAL BASICcomo debe ser. La tabla Presentaciones es muy importante porque contiene todas las presentaciones que se pueden asignar a los artículos. Esto permite que el usuario ya no las escriba sino que las pueda seleccionar en forma rápida. En este formulario se pueden agregar o quitar presentaciones. •fi¡v Presentaciones TöT^l P o t e T u b o B o ls a T a b le ta s A m p o lla s P a s tilla s In g r e s a r N u e v a s P r e s e n t a c io n e s P r e s e n t a c ió n f- ESTRUCTURA DE LAS TABLAS Configuración Presentaciones UltimoCodigo Long Presentación Texto 20 Igv Single Utilidad Single Descuento Single MUY IMPORTANTE En la tabla Configuración adicione un sólo registro con los valores que desea que la aplicación trabaje. En la tabla presentaciones adicione todas las presentaciones que desea estén dis­ponibles para asignar a los artículos. OTRAS CARACTERISTICAS DE ESTA APLICACIÓN • Se pone a disposición del usuario un calendario, el cual se activa cuando hace click en la fecha de la Barra de Estado. • El programa de listado muestra también los campos calculado usando los valores de la tabla Configuración. • Se debe ingresar una clave para modificar los datos de la tabla configuración. • El ingrese de nuevos artículos es consecutivo, es decir, cuando se graba un artículo la computadora queda lista para ingresar uno nuevo, generándose automáticamente su codigo. • Cuando ubica el cursor en el DataCombo3 se muestra las presentaciones automáticamente. • Cuando ubica el cursor en el DTPickcr I se muestra el calendario automáticamente. G r u p 488 o E d it o r ia l Megabyte CAPÍTULO XII: Programación ADO < € ¡¡¡1 ^ DESARROLLO DE LA APLICACIÓN N° 66 Agregue a la aplicación anterior el formulario N° 5 (Configuración), el formulario N°6 (Clave para actualizar la tabla Configuración) y el formulario N° 7 (Presentaciones). FORMULARIO N s 01 En el formulario N° 1 (Menú Principal) agregue la opción Configuración con dos subopciones: Sistema y Presentaciones. También debe dibujar en el centro de este formulario un control Calendar y en su propiedad Visible asígnele el valor False, sólo se debe visualizar cuando se haga click en la fecha. Instrucciones del Menú Principal Son similares a la aplicación anterior Prívate Sub Consulta_Click() Form4.Show 1 End Sub Prívate Sub Listado_Click() Form2.Show 1 End Sub Prívate Sub Mantenimiento_Click() Form3.Show 1 End Sub Prívate Sub Presentaciones_Click() Form7.Show 1 End Sub Prívate Sub Sistema_Click() Form5.Show 1 End Sub Prívate Sub StatusBarl_PanelClíck(ByVal Panel As MSComctlLíb.Panel) If Panel.Index = 1 Then Calendar 1 .Visible - True If Panel. Index = 4 Then Shell “c:windowscalc.exe”, I End Sub Prívate Sub Toolbarl_ButtonClick(ByVal Button As MSComctlLíb.Button) If Button. Index = 1 Then Form2.Show 1 If Button. Index = 2 Then Form3.Show 1 If Button.lndex = 3 Then Form4.Show 1 If Button. Index = 4 Then End End Sub Cuando se pulsa ESC en el calendario, este se oculta Prívate Sub Calendar 1 _KeyPress(KeyAscii As Integer) If KeyAscii - 2 7 Then Calendar ¡.Visible = False End Sub G r u p o E d i t o r i a l Megabyte 489
  • 247.
    ^ l ll í l l l * VISUAL BASIC como debe ser... FORMULARIO N s 02 En el formulario N° 02, agregue un control ADO (Adodc2) y conéctelo a la tabla Configuración para que los datos calculados se obtengan de los valores que contie­ne esta tabla. También agregue un control Frame con 6 etiquetas. Para que en Label3 se muestre el Igv de la tabla Configuración, en Label5 la Utilidad y en label7 el Descuento. IGV p tNMad Dwcuerto pôÇ -------------^ ..................., ........- - 3 Tpi Acaricida Crema >: P0 gr i Pole 5 00 o ía 510 1.29 6.33 064: 5.7« 30/ 06/02 i 73P. ~ ► Acancida Loción x E.0 mi fiasco 10.00 0 20 1020 2.55Í 12 75 1 23 11 4907/ 01/03 i 327 perniili X 20 Compnmido? i Caía 13W 026 13-26! 3 32 i$.5a 1 æ 14.9219/ 01/02 i 574 P i .a Cola'. 20 mi i Fiasco 23.00 0 4G 23.4G 5.87 2133 2 V Í 26 3$ 16/ 10/02 i 844 Paiwdol Aritigwal x M.i tafo i Cat* 4 i ».i 0.08 4 00 1 02 510 0.51! 4.58 30/ 12/01 :*/.u , < ............................... i .....: .................. •r N* d« A ll (culo «axbadoi: 78 [h|<|m~h ¡>|»i|u|jiJ».i.t-' [>JmJ I I Instrucciones del Formulario N° 02 Prívate Sub Forrn_Activate() Dim texto, fA s String f = Formatf“###,####,##0.00”, “(###,####,##0.00)'') Adodc2.Refresh ‘Cambia el tipo de Comando para poder utilizar instrucciones SQL Adodcl.Command.Type = adCmdText ‘Almacena en las etiquetas los valores de configuración Label3 - Adodc2.Recordset!lGV& “% ” Labe 15 = Adodc2.Recordset!UTILIDAD & “% ” Label7 = Adodc2.Recordset!DESCUENTO & “%" ‘Almacena en variables los valores de la tabla configuración para realizarlos cálculos. I = Adodc2.Recordset!IGV /1 0 0 U = Adodc2. Recordset! UTILIDAD /1 0 0 D = Adodc2. Recordset!DESCUENTO /1 0 0 ‘Instrucción SQLpara los campos calculados. Escriba todo en una sola lútea Adodcl.RecoidSowee= “selectCodigo,no>ribnj,pmerttacion,va¡orcompra,valoivompra* “&I& “asIGV vaIorconipm+igvas[PreeioCompra],[PrecioCompra]*“&U& “asUtilidad,[PrecioCompraJ+Utilkbd as [Precio Venta], [Precio Venta] * “ &d&“ as Descuento, [Precio Venta] - Descuento as [Piecio Publico], Vencimiento, vencimiento -#’’& Dale &' ‘#as Diasfrom artículos " Adodcl .Refresh ‘Asigna un formato y alineación a la derecha para las columnas que contiene números For X = 2 To 8 DataGridl.Columns(X).NumberFormat = f DataGrid1 .Colurnns(X).Alignment = dbgRight Next X DataGrid1 .Caption = “Listado de artículos al “ & Now Labell = “N° de Artículo mostrados: “ & Adodcl.Recordset.RecordCount End Sub Í ||¡ ||¡ ^ 490 G r u p o E d i t o r i a l Megabvte CAPÍTULO XII: Programación ADO ^ Í ¡ Í É Í P FORMULARIO N g 03 El diseño del formulario N° 03 (Mantenimiento), es similar al de la aplica­ción anterior. Sólo debe cambiar en la presentación el control Text3 por el control DataCombo3 para que el usuario pueda seleccionar la presentación del artículo y en la fecha de vencimiento, debe cambiar Text5 por el control DTPickerl. Text3 debe usarlo para ingresar el Valor de Compra. Text4 y Text5 se deben borrar. Al botón Cancelar cámbiele su propiedad Caption por Salir. Los botones Grabar y Salir se visualizan cuando se agregan nue­vos artículos. Debe dibujar dos botones más: Aceptar Cambios (Command7) y Cancelar Cambios (Command8) los cuales se visualizarán cuando actua­lice los datos de un artículo. Esta parte del formulario N° 03 debe quedar de la siguiente manera: C ódigo | t eKtl N om bre |T ext2 P re sen tació n 1 D a taC o m b o 3 d V a lo r de Com pra jT ext3 G rabar F e c h a de V e n c im ie n to 1 2 0 /0 6 /0 0 d Salir A c e p ta r C am bios C a nce la r C am bios A los cuatro botones asígneles en su propiedad Visible el valor False porque sólo se deben visualizar cuando se agreguen nuevos artículo o se actualicen sus datos. CONTROL DTPICKER □ Este control permite también ingresar una fecha de manera personalizada. Para visualizarlo en el cuadro de herramientas debe crear un proyecto en el modo Controles de VB E dición E m presarial o en la ventana de Compo­nentes activar la casilla: M icrosoft Windows Common Controls-2 6.0. Cuando lo dibuja en el formulario toma la forma de un Combo y muestra la fecha. Si desea ingresar la hora, asígnele en su propiedad Format el valor 2- dtp Time. 120/06/00 "»] j 02:35:41 p.m. - p G r u p o E d i t o r i a l Megabyte 491
  • 248.
    | ® |> VISUAL BASIC como debe ser. . . Cuando ejecute la aplicación debe hacer un click en la flecha para m irar el calendario y si desea cam biar el mes, haga click sobre el nom bre del mes y para cam biar el año, haga click en el año. J u n io 2 0 0 0 - ± J 28 23 30 31 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2 2 24 25 26 27 28 29 30 1 2 3 4 5 8 7 8 D H o y 2 3 / 0 6 / 0 0 La fecha que selecciona se muestra en el control y se almacena en su propiedad Valué. En este form ulario d e m antenim iento tam bién d eb e d e agregar d os con troles A D O . El control A d o d c2 lo d eb e conectar a la tabla P resen tacion es y el A d od c3 a la tabla C onfiguración. A l control D ataC om bo3 le d eb e asignar las propiedades: RowSource ListField DataSource DataList A dodc2 Presentación A d o d c l Presentación L as propiedades D ataSource y D ataL ist perm iten que cuando se se leccio n a una presentación, esta se grabe en la tabla Artículos. AI control D T P ick erl le d eb e asignar las propiedades: DataSource D ataList A d o d c l V encim iento E sto perm ite que cuando se se le c c io n e una fech a, se grabe en la tabla A rtículo. A l control T e x tl a síg n ele en su propiedad L ock el valor True para q u e no se perm ita ingresar o m odificar el có d ig o , ya que se autogenera m ediante la tabla C onfiguración. IN STR U C C IO N ES D EL FO R M U L A R IO N° 03 La programación de este formulario sólo varía en los siguiente controles: Instrucciones del Botón Ingresar Nuevo A rtículo Prívate Sub Command.3_Click() Framel.Enabled = False Frame2.Enabled = True Frame3.Enabled = False Command 1 .Visible = True Command2. Visible = True Adodcl .Recordset.AddNew NuevoCodigo = Adodc3.Recordset!ultimocodigo + 1 Textl = Format(NuevoCodigo, “00000”) Text2.SetFocus End Sub 492 G r u p o E d i t o r i a l Megabvte CAPÍTULO XII: Programación ADO ^ ¡ ¡ ¡ I P Instrucciones del Botón Actualizar Private Sub Command4_Click() Framel.Enabled = False Frame2.Enabled = True Frame 3.Enabled = False Command7. Visible = True Command8. Visible = True 'Se almacenan los valores originales en variables XCODIGO = Textl XNOMBRE = Textl XPRESENTACION = DataCombo3 XVALOR = Val(Text3) XFECHA = DTPickerl Text2. Set Focus End Sub Instrucciones del Botón Grabar Private Sub Commandl _Click() ‘Graba el nuevo Artículo A dodcl. Recordset. Update ‘Actualiza el campo "UltimoCodigo" de la tabla Configuración Adodc3. Recordset!ultimocodigo = NuevoCodigo Adodc3.Recordset. Update ‘Prepara un nuevo registro Adodcl.Recordset.AddNew NuevoCodigo = Adodc3. Recordset!ultimocodigo + 1 Textl = Format(NuevoCodigo, “00000”) Text2. Set Focus End Sub Instrucciones del Botón Salir Private Sub Commcind2_Click() Frame 1 .Enabled = True Frame2. Enabled = False Frame3. Enabled = True Commandl. Visible - False Command2. Visible = False Adodcl. Recordset. Cancel Update If Adodcl. Recordset. RecordCount = 0 Then Command4. Enabled = False Command5. Enabled = False Frame 1 .Enabled = False Else Command4. Enabled = True Commands. Enabled = True Framel.Enabled = True End If End Sub i p ! ^ G r u p o E d i t o r i a l Megabyte 4 9 3
  • 249.
    VISUAL BASIC comodebe ser... Instrucciones del Botón Aceptar Cambios Private Sub Command7_Click() Frame!.Enabled - True Frame2. Enabled = False Frame3. Enabled = True Command7. Visible - False Command8. Visible - False Adodcl.Recordset.Absolut ePosition- Adodcl.Recordset.Bookmark End Sub Instrucciones del Botón Cancelar Cambios Private Sub Command8_Click{) ‘Si cancela, se devuelven los datos originales Textl = XCODIGO Text2 = XNOMBRE DataCombo3 = XPRESENTACION Text3 = XVALOR DTPickerl = XFECHA Frame ¡.Enabled = True Frame2.Enabled = False Frame 3. Enabled = True Command7. Visible — False Command8. Visible = False End Sub Instrucciones del Control DataCombo3 Private Sub DataCombo3_GotFocus() “Cucav¡ose ubica el cursor en DataConibo3 se muestran las presentaciones SendKeys "¡F4}" End Sub Instrucciones del Control DTPicker Private Sub DTPickerl_CloseUp() ‘Despues de seleccionar la fecha seenfoca el botón Grabar Command¡. Set Focus End Sub Private Sub DTPickerl_GotFocus() ‘Cuando se ubica el cursor en DTPickerl se muestra el calendario SendKeys “IF4¡’’ End Sub Instrucciones del Control Text3 ‘Sólo permite el ingreso de números Private Sub Text3_KeyPress(KeyAscii A s Integer) lf(Chr(KeyAscii)< “0” OrChr(KeyÁscii)> “9") And KeyAscii O 8Then KeyAscii=0 End Sub N O T A Las instrucciones de los otros controles son iguales a los d e la aplicación anterior. Las instrucciones del F o rm u la rio N" 04 (Consulta) se desarrolla de la m ism a forma que el Formulario N°03, sólo debe de mostrar los cam pos calculados y permitir actualizar de los artículos. 4 9 4 G r u p o E d i t o r i a l Megabyte-1 CAPÍTULO XII: Programación ADO 4 1 1 1 1 FORMULARIO N 2 0 5 Este formulario permite actualizar los datos del sistema. Su diseño es muy sencillo, sólo debe dibujar 4 etiquetas, 4 Cajas, 4 botones de comandos, un control Frame y un control ADO. Al control ADO conéctelo con la tabla Configuración y a las cajas de texto con el campo respectivo. Asigne el valor False a la propiedad ControlBox del formulario y a propiedad Enabled del control Frame 1 para que no se pueda modificar los datos hasta que se ingresa correctamente la clave. El aspecto final del formulario debe ser: O a l o * A c t u a l e s Ultimo Código Impuesto General e les Ventas JText2 Utilidad Actual 7¡¿ |Text3 D escuento Actual Aceptar los Cambios j Ignorar los Cambios j I 1-^ I ^ I A d o d c l Instrucciones del Form Actívate Prívate Sub Form_Activate() Adodcl .Refresh End Sub Instrucciones del Botón Actualizar los Datos. Prívate Sub Command3_Click() ‘Llama al formulario N°6 para ingresar primero la clave Formó.Show ¡ End Sub Instrucciones del Botón Aceptar Cambios Prívate Sub Command¡_Click() Adodcl .Recordset. Update Frame ¡.Enabled = False End Sub Instrucciones del Botón Ignorar Cambios Prívate Sub Command2_Click() Adodcl. Recordset. CancelUpdate Adodcl .Recordset. MoveFirst Frame ¡.Enabled = False End Sub Instrucciones del Botón Cerrar Prívate Sub Command4_Click() Hide End Sub G r u p o E d i t o r i a l Megabyte 4 9 5
  • 250.
    l i li l í VISUAL BASIC como debe ser... Como se indica en las instrucciones del botón Actualizar los Datos, cuando el usuario haga click en este botón se visualiza el formulario N° 06 para ingresar la clave. Su diseño consiste en un control Picture con el gráfico que usted desee, una etiqueta, una caja de texto y un botón de comando. Al formulario asígnele en su propiedad BorderStyle el valor 0-None. Clave de A cce so Ok Instrucciones del Botón OK (Formulario N°6) ‘En este ejemplo la clave es VISUAL. Prívate Sub Commandl_Click() I f UCase(Textl) = “ VISUAL” Then Form5!Framel.Enabled = True ElseF orm5!Framel .Enabled = False End I f Textl = Hide End Sub FORMULARIO N g 07 Este formulario permite ingresar o eliminar presentaciones para asignar a los productos. Su diseño consiste en un control DataList, un Frame, una etiqueta, dos botones de comandos y un control ADO. Al control ADO conéctelo con la tabla Presentaciones y el control DataList 1 debe tener en su propiedad RowSource el nombre del control ADO y en su propiedad ListField el cambo Presentación. -j.gi .sj DataListl Ingresar Nuevas Presentaciones Presentación j Textl : : : : : : : : : < | Adodd 1 ► 1 ►» | : : : : : : : : : 496 G r u p o E d i t o r i a l Megabyte < CAPITULO XII: Programación ADO n El control Command 1 permite borrar una presentación, tiene en su propiedad Style el valor 1-Graphical, en su propiedad Picture un gráfico y en su propiedad Enabled el valor False porque sólo se active cuando se seleccione una presentación. Para adicionar una nueva presentación escríbala en la caja de texto y pulse ENTER para que se grabe. Instrucciones del Form Actívate Private Sub Form_Actívate() 'Si no hay nunguna presentación se desactívate DataList 1 If A dodcl.Recordset.RecordCount = 0 Then DataList ¡.Enabled - False E n d lf End Sub Instrucciones del Control DataListl Busca la presentación seleccionada y activa el Commandl. Private Sub DataList l_Click() r = “Presentación = “ ‘ + DataList 1 .Text + Adodcl. Recordset. Find r,, , 1 Commandl .Enabled = True End Sub Instrucciones del botón Borrar Presentación (Gráfico) Private Sub Commandl_CIick() A dodcl.Recordset.Delete DataListl .ListField = “presentación” Commandl.Enabled = False If Adodcl .Recordset.RecordCount = 0 Then DataListl .Enabled = False E n dlf End Sub Instrucciones del Control Textl Permiten grabar la presentación al presionar ENTER Prívate Sub Textl_KeyPress(KeyAscii As Integer) IfKeyAscii - 13 Then If Textl <> Then DataListl .Enabled - True A dodcl.Recordset. AddNew Adodcl .Recordsetípresentacion = Textl.Text Adodcl .Recordset. Update Textl = End If E n d lf End Sub Instrucciones del botón Salir Private Sub Commandl_Click() Hide End Sub G r u p o E d i t o r i a l Megabyte 497
  • 251.
    f M ¡¡ § f r VISUAL BASIC como debe ser. EL DATAREPORT El Visual Basic 6.0 tiene un nuevo control para crear reportes. Este control se llama DataReport. Para trabajar con el DataReport debe de adicionarlo EraY0Cto a su 4proyecto, para ello, haga click en la opción ¡ 3 Agregar formulario _ " , . * , 7 . . Agregar formulario m di Proyecto de la barra de menú y luego en Agregar Agregar módulo D c l t c l R c p O f t . Agregar módulo de dase J f Agregar control de usuario i a Agregar página de propiedades í¡i§ Agregar DHTML Page Agregar Data Report _________ Agregar WebClass Agregar Data Environment Agregar archivo,.. C trl+D Quitar Form i ^ R e f e r e n c ia s ... Com ponentes... C trl+ T Propiedades de Proyecto 1 ... Si no visualiza la opción Agregar DataReport, activa la ventana de Componentes y en la hoja Diseñadores active la casilla del DataReport Se visualiza la ventana para crear el reporte y en el cuadro de herramientas se agrega una nueva sección con los controles que puede insertar en el reporte. General DataReport % Si activa la ventana de Proyecto se visualiza el DataReport el cual al momento de grabarse tiene la extensión *.DSR. Proyecto - Proyectol F l □ a ' Proyecto 1 (Proyecto 1) Ü Formi (Formi) NOTA Si regresa al formulario y no visualiza los controles en el cuadro de Herramientas, haga clic en la ficha General. 4 9 8 G r u p o E d i t o r i a l Megabyte-1 CAPÍTULO XII: Programación ADO El DataReport inicialmente esta compuesto por 5 secciones que se utilizan para diseñar el Reporte. Sección N° 01 - DETALLE Es la sección principal porque aquí se indican los datos que se desea mostrar en el reporte. Estos datos normalmente se obtienen de una o mas tablas usando el control RptTextBox. Sección N° 02 - ENCABEZADO DE PAGINA Es la sección que contiene el texto que se imprimirá al inicio de cada página del reporte. La información que se muestra en esta sección es: Encabezado de cada campo, N° de página, etc. Sección N° 03 - PIE DE PÁGINA Es la sección que contiene el texto que se imprimirá al final de cada página del reporte. Aquí también se puede mostrar el número de cada página, la fecha y hora de impresión, etc. Sección N° 04 - ENCABEZADO DE INFORME Es la sección que contiene el texto que se imprimirá sólo al inicio del Reporte. Aquí puede mostrar el nombre de la empresa y comentarios sobre el reporte. Sección N° 05 - PIE DE INFORME Es la sección que contiene el texto que se imprimirá sólo al final del Reporte. Aquí puede mostrar por ejemplo algún resumen del reporte. MUY IMPORTANTE Al momento de crear el reporte no es obligatorio que utilice todas las secciones. CONFIGURAR LA VENTANA DE DISEÑO DEL REPORTE Cuando agrega un DataReport a su proyecto puede asignarle el tamaño que usted desee y configurar su N o-«tí - . Cl/H-H ventana de diseño. Para ello haga click con el botón derecho en 5 Ot i’fV cualquier parte de la ventana. Se mostrará un menú contextual con las siguientes opciones: insertar control ► 1 -.fwtifi# ti'^'tíbcfr'ído r. ‘:fí - =_.e jziupi Insertar e n ca b e za d o o pie de grupo *✓ M ostrar e n ca b e za d o o pie de inform e M ostrar e n ca b e za d o o pie de página V M ostrar cu a d ríc ula ✓ M ostrar reglas >✓ Forzar a la cu a d ríc ula O btener estructura Borrar estructura Por ejemplo, si desactiva la opción Forzar a la cuadrícula, los controles se dibujarán con el tamaño que usted desee. También puede oculta o visualizar secciones e insertar controles. G r u p o E d i t o r i a l Megabyte 4 9 9
  • 252.
    ^ É IIIéI^VISUAL BASIC como debe ser... CONTROLES DEL DATAREPORT Los controles para crear reportes son muy similares a los controles que se dibujan en un formulario incluyendo sus propiedades. RptLabel: Permite insertar mensajes en el Reporte. RptTextBox: Permite indicar los campos a mostrar en el reporte. Rptlmage: Permite insertar imágenes en el reporte. RptLine: Permite insertar líneas en el Reporte. RptShape: Permite insertar figuras geométricas en el Reporte. RptFunction: Permite insertar funciones en el reporte. Cuando dibuja en el reporte el control RptFunction en forma predetermina­da se muestra la función SUM que permite sumar campos numéricos den­tro del reporte. Si desea usar otra función active su propiedad FunctionType donde podrá seleccionar además las siguiente funciones: 1-RptFuncAve.- Para obtener el Praomedio. 2-RptFuncMin.- Para Obtener el valor Mínimo. 3-RptFuncMax.- Para obtener el valor Máximo. 4-RptFuncRCnt.-Para obtener la cantidad de registros. 5-RptFuncVCnt.-Para obtener la cantidad de registros en blanco 6-RptFuncSDEV.-Para obtener la desviación estándar. 7-RptFuncSERR.-Para obtener el error estándar. NOTA Los controles se puede insertar en el DataReport desde el cuadro de Herramientas o haciendo click derecho en la ventana de diseño y eligiendo la opción Insertar Control. Los controles que estén disponibles depende de la sec­ción donde hizo click derecho. Etiqueta Cuadro de texto Im age L ín ea Forma Número actual de página Número total de páginas F ech a actual (formato corto) F ech a actual (formato largo) H ora actual (formato corto) Hora actual (formato largo) T ítulo del informe 500 G r u p o E d it o r i a l Megabyte< CAPÍTULO XII: Programación ADO ^ ¡ ¡ ¡ ¡ ¡ ^ También puede insertar o escribir códigos predefinidos dentro del reporte usando el control RptLabel: %p : Muestra el número de página actual. %P : Muestra el número de páginas que tiene el reporte. %d : Muestra la fecha actual con formato corto. %D : Muestra la fecha actual con formato largo. %t : Muestra la hora actual con formato corto. %T : Muestra la hora actual con formato largo. %i : Muestra el título del informe. PROPIEDADES BÁSICAS PARA CREAR UN REPORTE Las propiedades que necesita asignar para crear el reporte depende del origen de los datos que quiera utilizar para el DataReport. Por ejemplo, si desea utilizar un control ADO para que el DataReport muestre los registros que contiene, sólo necesita asignarle a través una instrucción en su propiedad DataSource del DataReport el nombre del control ADO y en cada control RptTextBox que se use en la Sección de Detalle escribir (no seleccionar) en su propiedad DataField el nombre de cada campo cuyo contenido se desea mostrar en el reporte. Para cam biar los m árgenes del D ataReport utilice sus propiedades: RightMargin(Derecho) LeftMargin (Izquierdo), BottomMargin (Inferior) y TopMargin (Superior). Para indicar el tamaño inicial de la ventana del DataReport use su propiedad WindowState. MÉTODOS DEL DATAREPORT SHOW Muestra sólo en pantalla el reporte (Vista Previa), pero contiene dos botones en la esquina superior derecha que permiten enviar a la impresora el reporte o exportarlo como tipo HTML para enviarlo a través de Internet o de tipo texto para leerlo desde otro programa. PRINTREPORT Permite enviar el reporte directamente a la impresora. REFRESH Permite actualizar el reporte. EXPORTREPORT Permite exportar el reporte como HTTML o texto. HIDE Permite ocultar el reporte, l i l i l í Grupo E d ito ria l Megabyte 501
  • 253.
    # m VISUALBASIC como debe ser. J f l j j j H H H A APLICACIÓN DESARROLLADA N° 67 A la aplicación anterior agregue un nuevo formulario. Este formulario muestra en un Datagrid los artículos, pudiéndolos seleccionar mediante una condi­ción que Ud, forme. Esta condición puede ser múltiple, es decir, el usuario puede hacer uso del operador AND (Y) o del operador OR (O) las veces que desee y al hacer click en el botón IM P R IM IR todos los artículos que se encuentran en el DataGrid se muestran también en el reporte. •ü. R e p o r te d e A r tíc u lo s - Iniisi I presentación Condición p r e s e n t a c i ó n = *F Mostrar con la Condición Mostrar Todos codioo ~1 valorçpmp.ra vencimiento ► 00006 AB-Broncol 300 IM Frasco 9.5 15/06/00 00007 01/05/02 00002 AB -B roncol 600 1M Frasco 12 Acaricida Loción x 60 mi. Frasco 10 07/01/03 00009 00010 00004 Fenistü Gotas Frasco 20 mi Finistil Jarabe Frasco 100 mi Frasco 13 29/06/00 Frasco io. 28/06/00 Pilka Gotas 20 mi Frasco 23 16/10/02 D e u n to ta l d e 2 8 a r t í c u l o s , s e m u e s tr a n 6 q u e r e p r e s e n ta n e l (2 1 .4 3 % ) IM P R IM IR I Cem» | •jjt DataReportl I3B 3 I Zoom Uoox , ~E MWB«B?aÉu REPORTE DE ARTÍCU LO S A L 28/06/00 Condición : p re s e n ta ció n = 'Fra s c o ' P á g in a N° 1 d e 1 C ó d i g o A rt íc u l o P r e s e n t a c i ó n V a lo r d e C o m p r a F e c h a d e V e n c im ie n t o 0 0 0 0 6 A B -B ro n co l 3 0 0 IM F r a s c o 9 .5 0 1 5 jC 6 jOO 0 0 0 0 7 A B -B ro n co l 6 0 0 IM F r a s c o 1 2 .0 0 01J05J02 0 0 0 0 2 A ca ricid a L oción x 6 0 mi F r a s c o 1 0 .0 0 0 7 /0 1 /0 3 0 0 0 0 9 Fenistil G o ta s F r a s c o 20 F r a s c o 1 3 .0 0 2 9 /0 6 /0 0 0 0 0 1 0 Finistil J a r a b e F r a s c o 1 0 0 F r a s c o 1 0 .0 0 28 .0 6 /0 0 0 0 0 0 4 Pilka G o ta s 2 0 mi F r a s c o 2 3 .0 0 16 /1 0 /0 2 P á g in a s: Hj< fP D e u n t o t a l d e 28 a r t í c u l o s , s e m u e s t r a n 6 q u e r e p r e s e n t a n e l (2 1 .4 3 % ) ±lHj 502 G r u p o E d i t o r i a l Megabyte CAPÍTULO XII: Programación ADO OTRAS C A R A CTER ÍSTIC A DE LA A PLIC A C IÓ N : Los nombre de los campos se llenan automáticamente en el Combo. Cuando se selecciona el campo Vencimiento y ubica el cursor en Textl para ingresar el valor, se visualiza el calendario. Si elige el ValorCompra no se permite el ingreso de letras. Al hacer click en el botón Aceptar, la condición que el usuario forma se almacena en una caja de texto para que se pueda editarla si lo desea. Al hacer doble click en un campo los artículos se ordenan por dicho campo. Al mostrar los registros se muestra la cantidad total de artículos, la can­tidad de artículos mostrados y el porcentaje que representa del total. El contenido de algunas etiquetas del formulario se pasan al reporte (DataReport). Si no se forma una condición correcta se visualiza el respectivo mensaje. 1. D ESA R RO LLO DE LA A PLIC A C IÓ N D ib u jar los controles EneoLJoM 2. Asignar las propiedades. • Al control Adocd 1 conéctelo con la tabla artículos y al DataGrid 1 selec­cione el Adodcl en su propiedad DataSource. • Al los controles Adodcl y Calendar 1 asígneles en su propiedad Visible el valor False. • Al resto de controles asígneles sus propiedades como se indica en la aplicación a desarrollar. G r u p o E d it o r i a l Megabyte 503
  • 254.
    VISUAL BASIC comodebe ser. DISEÑO DEL DATAREPORT Agregue a la aplicación un DataReport e inserte los controles y sus propiedades para que tenga el siguiente aspecto: í|É D ataR eport! 0- I • 1 • I • 2 • I • 3 ■ I . 4 i | • 5 > | > 6 < I i 7 • I • 8 • -1 * 9 * 1 ■ 10 ■ I ■ 11 ■ I ■ 12 ■ I ■ 13 ■ I ■ 14 ■ I ■ 15 ■ I ■ 16 ■ I .1 ■ f Encabezado de informe (Sección4) Encabezado de página (Sección2) R E P O R T E D E A R T IC U L O S A L % d .Condición : &¡qUetal Código 4 Detalle (Sección 1) Presentación Valor de Compra ÉPÉÉÉ5ÉS Página N- %p de %P Fecha de Vencimiento _ Codigo ! Nombre 4- Pie de página (5ección3) Presentación VálorCompra Vencimiento 4 Pie de informe (Sección5) -------- E tiq u é ta lo í En la sección de encabezado de Página dibuje 9 etiquetas para los títulos del reporte. Por ejemplo, la Etiqueta 1 tiene en su propiedad Caption: REPORTE DE ARTÍCULOS AL %d para que se muestre también la fecha. La etiqueta4 tiene en su propiedad Caption: Página N° %p de %P, para que se muestre el número de la página actual y la cantidad total de páginas. La Etiqueta3 debe estar vacía para mostrar allí el contenido de Text2 (Condición) del formulario. La Etiquétalo también debe estar vacía para mostrar allí el contenido del Label2 del formulario. En la sección de Detalle dibuje 5 cajas de texto y escriba (no seleccione) el nombre exacto de cada campo de la tabla cuyo contenido se desea mostrar en el reporte. Al control Text4 asígnele en su propiedad Alignment el valor 1-RptJustifyRight porque los valores numéricos se deben alinear por la derecha. Además debe asignarle en su propiedad DataFormat el Formato Currency con 2 decimales y en Símbolo el valor None. NOTA Si desea mostrar campos calculados en el reporte, utilice el nombre que le asigna en la instrucción SQL después de la palabra AS. ^ |||||¡ ^ 504 G rupo E ditorial Megahvte <l l § á l i | CAPÍTULO XII: Programación ADO INSTRUCCIONES DEL FO R M U LA R IO Instrucción del Forma Activate Prívate Sub Form_Activate() ‘Llena el Combol con los nombre de los campos de la tabla Artículos C om bol.Clear F orX = 0 To A dodcl.Recordset.Fields.Count - 1 Combol.Addltem Adodcl.Recordset(X).Name N extX Combol.Listlndex - -1 ‘Deja en blanco el Combol 'LlenaelCombo2conlosoperadores lógicos. Dejeespacioantesydespuésdel Operador Combo2.Clear Combo2.Addltem “ = “ : Combo2.Addltem “ < “ Combol.Addltem “ > “ : Combo2.Addltem “ < = “ Combo2.Addltem “ > = “ : Combol.Addltem “ < > “ Combo2. Addltem “ like “ : Textl - : Text2 = Adodcl. Refresh TR = Adodcl. Recordset. RecordCount Label2=”Deu>itotalde “&TR& “ artículos, se muestran “&TR& “ que representad100.00%" End Sub Instrucción del Botón Aceptar Private Sub Command 1 JClickf) ‘Pregunta si el campo seleccionado es tipo Text If Adodcl. Recordset(Combol.Listlndex).Type = 202 Then 'Pregunta si se eligió el operador LIKE If Combo2. Listlndex = 6 Then condicion - Combol + Combo2 + + Textl + Else condicion - Combol + Combo2 + “ + Textl + End lf End If ‘Pregunta si el campo seleccionado es tipo Date lf Adodcl. Recordsetf Combol. ListIndex).Type = 7 Then condicion = Combol + Combo2 + “CDATE(“' + Textl + End lf ‘Pregunta si el campo seleccionado es tipo Currency (ValorCompra) lf Adodcl .Recordset( Combo! .Listlndex). Type = 6 Then ‘Pregunta si el valor ingresado es un número IflsNumeric(Textl) Then condicion = Combo1 + Combo2 + Textl Else MsgBox ‘ ‘Debe ingresar sólo números ’ 16, “Ha seleccionado el campo: “& Adodcl.Recordsetf Combo 1. Listlndex). Name Textl = “ ” : Textl.SetFocus End If End If Text2 - Text2 + condicion End Sub s á lll* G rupo E ditorial Megabyte 505 mm
  • 255.
    ^ÉÍÍÉÉÉÍ’- VISUAL BASICcomo debe ser. Instrucción del Botón Y Prívate Sub Command2_Click() Text2 = Text2 + " AND " ‘Espacio antes y después End Sub Instrucción del Botón O Prívate Sub Command3_Click() Text2 = Text2 + " OR " 'Espacio antes y después End Sub Instrucción del Botón Borrar Prívate Sub Command6_Click() Text2 - End Sub Instrucción del Botón Mostrar con la Condición Prívate Sub Command4_Click() On Error GoTo Mensaje TR = Adodcl.Recordset.RecordCount ‘Indica que se va a utilizar una instrucción SQL Adodc 1 .CommandType = adCmdText Adodc I .RecordSource - “select * from artículos where “ + Text2 Adodc l.Refresh RM — Adodcl.Recordset.RecordCount P = R M * 100/T R Label2- “Dewitotalde" &TR& “ artículos, se muestran “&RM& “ que representan el ( “ & Round(P, 2)& “%)" Exit Sub Mensaje: MsgBox “No ha indica una condición correcta", 16, “Porfavor verifique” End Sub Instrucción del Botón Mostrar Todos Prívate Sub CommandS._Click() ‘Indica que se va a utilizar una instrucción SQL Adodcl .CommandType = adCmdText Adodc 1 .RecordSource = “select * from artículos" A do de I. Refresh TR = Adodcl .Recordset.RecordCount Label2- ”Dewitotalde “&TR& “artículos, se muestran “&TR& “ que representa el100.00% End Sub Instrucción del Control Calendarl Prívate Sub Calendarl_Click() Textl - Calendarl. Valué Calendarl .Visible = False End Sub G r u p o E d i t o 5 0 6 r ia l M e g a b y t e < |j ¡ |¡ | CAPÍTULO XII: Programación ADO Instrucción del Control DataGrid Prívate Sub DataGridl_DblClick() ‘Permite que al hacer Click en un campo se ordene por dicho campo Adodc 1 .CommandType = adCmdText IfText2 = “ ” Then Adodc ¡.RecordSource = “select *from artículos orderby “ & Adodcl .Recordset (DataGrid ¡.Col ).Name Else Adodc ¡.RecordSource = “select *from artículos where “ & Text2 & “ orderby “ & Adodc 1. Recordsetf DataG ríd l. Col). Ñame E n dlf A dodc 1. Refresh End Sub Instrucción del Control Textl Prívate Sub Text¡ jGotFocus() ‘Pregunta si no se ha seleccionado el operador lógico IfCombo2 = Then MsgBox “Indique el operador para la condición”, ¡6, “Error” Text¡.Locked = True Exit Sub Else Textl. Locked = False E n dlf Pregiaitasi el canpo seleccionado contiaieunafeclui para mostrar el Calendario If ¡sDate(Adodc¡.RecordsetfCombo¡.Listlndex)) Then Calendar ¡ .Visible = True End ¡f End Sub Instrucción del Botón Im prim ir Prívate Sub Command7_Click() ‘Asigna la propiedad DataSource del DataGrid a la propiedad DataSource de! ‘DataReport para mostrar en el reporte lo que se muestra en el DataGrid Set DataReport¡.DataSource = DataGrid].DataSource DataReport 1 .Sections{2). Controlsf 3). Caption = Text2 DataReport l.Sectionsf 5).Controlsf l).Caption = Label2 ‘Muestra el Reporte DataReport 1.Show End Sub N O T A Para referirse a un control del D ataReport d esd e un form ulario se usa la co le c c ió n S ection s para indicar la se cció n donde se encuentra el control y la co lecció n C ontrols para referirse específicam ente al control. La seccio n es se enumeran de arriba hacia abajo. El encabezado del Reporte es la primera secció n . L os con troles de cada se cció n se enum eran d e acuerdo al orden en el que se dibujan (en cada se cció n los con troles se enum eran a partir de 1). En el reporte de ejem plo se asum e que la Ltiqueta3 del la secció n E ncabezado d e Página (S e c . N ° 2 ) fu e el tercer control que se dibujó. Puede usar tam bién el nom bre d e cada control. G r u p o E d it o r ia l Megabyte 507
  • 256.
    íZáttú VISUAL BASICcomo debe ser... DATA ENVIRONMENT El Data Environment (Entorno de Datos) es otra de las nuevas formas que tiene Visual Basic para conectarse a una base de datos y permitir administrarla mediante objetos ActiveX. Si desea conectarse a una base de datos mediante el Data Environment, debe de agregarlo a su aplicación, para ello seleccione la opción Proyecto de la Barra de Menú y luego Agregar Data Environm ent. Si no la visualiza ingrese a la opción Más Diseñadores ActiveX o activa la ventana de Componentes y en la hoja Diseñadores active la casilla Data Environment. Cuando agrega el Data Environment se visualiza la siguiente ventana: t | ; P royectol - D ataEnvironm entl (DataEnvironm ent) H L l l E ä > ,ld o| 1 1 1 1 J M M flä k ?Hy] D a ta E n v iro n m e n tl Connection! [1 ] o b je to s Cuando se agrega el Data Environment se mostrará también en la ventana del explorador de proyecto: %j¿ P ro yecto - P ro y e c to l m u m . □ ! x | m Q j B J2$ P ro y ec to 1 (P ro y e c to 1) i l I B a E m l F o > f ¡u i ó r1 C j F o rm i (F o rm i) N D iseñadores D a ta E n v iro n m e n tl (D a ta E n v iro n m e n tl) Cuando graba el Data Environment utiliza la extensión *.Dsr (Diseñador). 508 G r u p o E d i t o r i a l M eg ab y te <l¡||f|j¡j CAPÍTULO XII: Programación ADO ^ ¡ ¡ S BOTONES DEL DATA ENVIRONMENT 2k Agrega una nueva conexión a Agrega un nuevo Comando. M. Inserta Procedimientos Almacenados M Agrega un Comando Secundario. X Elimina un Objeto de Data Environment m Actualiza el Data Environment jki Muestra la Ventana de Diseño de instrucciones SQL JÜ. Muestra la Ventana de Propiedades m Muestra las Instrucciones i l l Muestra la Ventana de Configuración Ibi Organiza por conexiones j k Organiza por Objetos La conexión se realiza mediante el objeto Connection el cual representa la conexión a una base de datos y se utiliza como un origen de datos. Un comando se representa por un objeto Command y contiene las instruc­ción que realizan consultas a una base de datos para obtener los registros que deseamos los cuales se almacenan en un objeto Recordset. Los Procedimiento Almacenados son un conjunto de instrucciones SQL precompiladas almacenadas con un nombre en una base de datos y se pue­den ejecutar con una llamada desde una aplicación. Un Comando Secundario forma Comandos Jerárquicos que consisten en un comando que se encuentra dentro de otro. Al comando principal se le llama Comando Primario y al otro Secundario y permiten mostrar conteni­dos de una tabla separados por grupos usando un campo determinado o mostrar el contenido de varias tablas relacionadas. NOTA: Otra forma de acceder a las opciones anterior es haciendo click derecho sobre cualquier objeto del Data Environment ¡ l i l i l í * G r u p o E d i t o r i a l Megabyte 5 0 9
  • 257.
    o WÆii UfoVISUAL BASIC como debe ser... A P L I C A C I O N C O N D A T A E N V I R O N M E N T Para desarrollar una aplicación usando Data Environment tiene que utilizar y asignarle propiedades por lo menos dos objetos de este diseñador: El objeto Connection y el Objeto Command. En el objeto Connection se configura la conexión a la base de datos. Para ello seleccione el objeto Connection y haga click en el botón Propiedades. Se visualiza la siguiente ventana: L-m-.'-n !-¡ ¡» -.'í-rriss» »— — Proveedoi J Conexión } Avanmdn ) 1 odoi | Seteccions los dato« a Io í que des«»« c o n « e l*te Proveedor(esJ de OLE OB Microsoft Jet 3.Q1 OLE OB Provider Microsoft Jet 4,0 OLE OB Provider Microsoft OLE DB Ptovidai foi Internet Publbhhw Microsoft OLE DB Piovidor foi OLAP Scivicoi Microsoft OLE OB Provider for Oracle Microsoft OLE DB Provider for SQL Sorvcr Microsoft OLE OB Simple Provider MS Remoto M S D ataS liape Proveedor de Microsoft OLE DB para paquete-; DTS SOL Server DTS Fiat File OLE DB Provide. Siguiente > > ) [ Aceptar | Cancelar | Ayuda Los pasos que siguen se explicaron en la página N° 428 (Conexión mediante Archivos de Vínculos - OLE DB). Si ya tiene una conexión ODBC creada debe elegir la opción Microsoft OLE DB Provider For ODBC Drivers. Una vez que estableció la conexión a la base de datos debe agregar un objeto Command al objeto Connection. Para ello selecciónelo y haga click en el botón Agregar Comando. Visualiza la siguiente ventana: §g¡¡ Project! - DataEnvironmentl (D... H0E3| ' ! □ ! I n f i n | u 1 llü DataEnvironmentl - 3? Connectionl 0 Cornmandl Comando: Cornmandl desde Connectionl 510 G r u p o E d i t o r i a l Megabyte *^§§1111 CAPÍTULO XII: Programación ADO En el objeto Command se configura el origen de los registros. Seleccione este objeto y haga click en el botón propiedades. Se visualiza la siguiente ventana. G r a x s s i a s m m e e e e e e e e e e e e e e e e General | Parámetros ] Relación ) Agrupar | Agregados ) Avanzadas j Hombre do comando |Commari>.Í'l Conejuói'i: j Connection I — OiKjen de datos í*' Objoto do £ase <1° datos: j PiocuUimit» ii Nombre de obiet«-. | : f Intlnicctón SOI; L±. Cancelar | Visual Basic asigna un nombre predeterm inado al objeto Command (Command 1) y al Connection (Connectionl), si usted desea puede cambiarles de nombre. En el cuadro Origen de Datos configure el origen de los registros. Por ejemplo: En objeto de base de datos elija Tabla y en Nombre de objeto seleccione el nombre de la tabla, o seleccione Instrucción SQ L y escriba la instrucción SQL correspondiente para seleccionar los registros deseados. Una vez que configuró el origen de los registros, el Data Environment queda listo para usarlo como origen de datos en cualquier objeto ActiveX incluyendo DataReport. En los co n tro les donde n ecesite in d ic a r la base de datos use D ataEnvironm entl y donde necesite indicar la tabla use Cornmandl. Por ejemplo: Para desarrollar el siguiente listado, dibuje un DataGrid y en su propiedad DataSource indique DataEnvironmentl y en DataMember indique Cornmandl. üu L istad o de A rtíc u lo s co n Da taE nviionment T - !□ ! X | | c o d iq o n o m b re 1 p re s e n ta c ió n 1 va lo rc o m p ra ve n c im ie n to ▲ ► 00001 A c a ric id a C rem a x 6 0 gr : P o te 5 3 0 /0 6 /0 2 — 0 0 0 0 2 A c a ric id a L o c ió n x 6 0 rrt F ra sco 10 0 7 /0 1 / 0 3 0 0 0 0 3 Fenistil x 2 0 C om prim ido C aja 1 3 1 9 /0 1 / 0 2 0 0 0 0 4 P ilk a G o ta s 2 0 mi F ra sco 2 3 1 6 /1 0 /0 2 0 0 0 0 5 P a n a d o l A n tig rip a l x 6 0 i Caía 4 3 0 /1 2 /0 1 0 0 0 0 6 A B -B ro n c o l 3 0 0 IM F ra sco 9 5 ................................ 1 5 /0 6 /0 0 0 0 0 0 7 A B -B ro n c o l 6 0 0 1M F ra s c o 12 0 1 / 0 5 / 0 2 0 0 0 0 8 V e n o ru to n F o rte x 1 2 Ce C aja 13 3 0 /0 6 /0 0 0 0 0 0 9 Fenistil G o ta s F ra s c o 2 0 F ra s c o 13 2 9 /0 6 /0 0 1« .............j ............................................................................ ± r G r u p o E d i t o r i a l Megabyte 511
  • 258.
    o m faVISUAL BASIC como debe ser.. VENTANA D E D ISE Ñ O D E IN ST R U C C IO N E S SQ L Si en el cuadro Origen de Datos elige la opción Instrucción SQL, puede escribirla en ese mismo cuadro, pero tiene la posibilidad también de hacer click en el botón Generador SQL para ingresar a la ventana de diseño de instrucciones SQL la cual permite escribir de manera personalidad las instrucciones que necesita. Área para las Tablas Ventana de Vista de Datos ta si im. J Vínculos d e datos 1 Conexiones del Entorno de datos .Ijifül Connection 1 Columna Alias 1 Tabla j Resul ad-l Tipo de orden 1 Orden ] Criterios — A Area para los Campos Área de Instrucciones SQL Árre^aa de Resultados Las tablas que va a utilizar en la consulta las puede pegar desde la ventana de Vista de datos. Haga clic en el signo + del objeto Connection y luego en tablas para visualizarlas y poder pegarlas. Los campos que desea mostrar los puede dibujar desde la tabla o tablas que pega en el área de tablas hacia el área de los campos. El área de los campos permite también ordenar los registros y seleccionarlos usando las columnas Tipo de Orden y Criterios respectivamente. En el área de Instrucciones SQL se va escribiendo autom áticam ente lo que va diseñado. Si usted desea puede m odificarla o escribir una nueva instrucción SQL. Para mirar los resultados de la instrucción SQL generada puede hacer click derecho y elegir la opción Ejecutar. Si pega varias tablas puede relacionarlas arrastrando el campo clave de una tabla a la otra. 512 G r u p o E d i t o r i a l Megabyte <||§ |¡|§ CAPÍTULO XII: Programación ADO USO DEL DATA REPORT CON DATA ENVIRONMENT Para crear un reporte usando el Data Environment debe agregarlo a su aplicación junto con el Data Report. En el Data Environment debe de configurar la conexión a la base de datos que desea utilizar en el reporte. Después de configurar la conexión debe asignarle al Data Report dos propiedades : DataSource y DataMember. En DataSource debe seleccionar el nombre del DataEnviroment que en forma predeterminada es DataEnvironment 1. En su propiedad DataMember debe seleccionar el nombre del comando que en forma predeterminada es Commandl. Luego a cada caja de textos (RptTextBox) que dibuje en la sección de Detalle para mostrar el contenido de los campos debe asignarles como mínimo dos propiedades: DataMember y DataField. En su propiedad DataMember debe seleccionar el nombre del Comando y en su propiedad DataField debe seleccionar el nombre del campo respectivo. Una de las ventajas que tiene en el DataReport al usar DataEnviroment es que usted puede pegar los campos desde este control al DataReport. Sólo necesita asignar un tamaño y posición a cada ventana de tal manera que se puedan visualizar ambas al mismo tiempo: "i* "Sk % CS »..ini “ ¡ 1-j.laL.J —i—1-iiai i1;*) Cuando tenga ambas ventanas arrastre cada campo del objeto Command a la Sección de Detalle del DataReport. Cada campo se muestra con sus propiedades DataMember y DataFiel ya configuradas y acompañada de una etiqueta a su izquierda que muestra el título del campo. Si desea puede mover esta etiqueta a la sección Encabezado de Página o borrarla. Para ejecutar el DataReport sólo necesita escribirDATAREPORT1.SHOW. G r u p o E d i t o r i a l Megabyte 513
  • 259.
    VISUAL BASIC comodebe ser... EL CONTROL MSHFLEXGRID Este control se usa de manera similar al MSFlexGrid y permite mostrar el contenido de una o mas tablas. En la ventana de componentes se llama: M icrosoft Hierarchical Flexgrid. Para que el control MSHFlexGrid pueda mostrar información de un Data Environment, debe asignarle en su propiedad DataSource el nombre del DataEnvironment y en su propiedad DataMember el nombre del Command. Para que el control MSHFlexGrid pueda mostrar información de un control ADO, debe asignarle sólo en su propiedad DataSource el nombre del control ADO. La ventaja de este control es que permite mostrar información de una manera personalizada. Por ejemplo, puede mostrar el contenido de Comandos Jerárquicos (Pg.472) alm acenados en objetos R ecordset del Data Environment. Por ejemplo: El contenido de la tabla Artículos lo puede mostrar agrupadas por la presentación, el año de vencimiento, etc.: 1 2 /3 0 /0 1 m . L i s t a d o d e A r t í c u l o « A g r u p a d o s p o r P R E S E N T A C I O N 00008 6 /3 0 /0 0 00011 Im portal x 6 S ha c h é is 1/ 7 /0 3 00004 Pilka G otas 20 mi 00006 00007 A B -B fo n c o l 600 IM 00009 Fenistil G otas F rasco 20 mi. Finisti! Jarabe Frasco 1 00 rnl 0 0 0 1 2 00013 Fluidasa iny x 2 mi 9/1 6 /0 0 00001 Frasco 00010 5 /8 /0 2 töt^ i ü¡. Listado de Artículos Agrupados por AÑO DE VENCIMIENTO AÑO CODIGO NOMBRE PRESENTACION VALO RCO M PRA VENCIM IENTO Q 00006 AB-Broncol 300 IM Frasco 9.5 6 /1 5 /0 0 00008 V enoruton Forle x 12 Comp. Caja 13 6 /3 0 /0 0 2000 00009 Fenistil Gotas Frasco 20 ml. Frasco 13 6 /2 9 /0 0 00010 FinistilJatabe Frasco 100 mi. Frasco 10 6 /2 8 /0 0 00013 Fluidasa iny x 2 mi Frasco 13 9 /1 6 /0 0 B 2001 00005 Panadol Antiqripal x GO tab Caja 4 12 /3 0 /0 1 B 00001 Acaricida Crema x 60 gr. Pote 5 6 /3 0 /0 2 00003 Fenistil x 20 Comprimidos Caja 13 1 /1 9 /0 2 2002 00004 Pilka Gotas 20 mi Frasco 23 1 0 /1 6 /0 2 00007 A B -Broncol 600 IM Frasco 12 5 /1 /0 2 00011 Importal x 6 S hachets Caja 20 1 /1 9 /0 2 00012 Panalgin amp. x 2 mi Frasco 54 5 /8 /0 2 B 2003 00002 Acaricida Loción x 60 mi. Frasco 10 1 /7 /0 3 G r u p o E d it o r i a l M e g a b y t e ^ |||¡ ¡ | M. 514 CAPITULO XII: Programación ADO W J P USO DE COMANDOS JERÁRQUICOS EN MSHFLEXGRID 1. Mostrar los artículos agrupados por su Presentación Agregue a su aplicación un DataEnvironment y a su objeto Connection 1 conéctelo la base de datos Tienda (Pag N° 438), luego agréguele un objeto Command 1 y en su ventana de propiedades seleccione Instrucción SQL para escribir la instrucción SQL que agrupe los artículos por su Presentación. P ropiedade s de C om m andl G eneial j Parámetros | Relación | Agrupar | Agregados | A van zadas | Conexión: Nombre de comando: |Commandl | Connectionl ~*] Origen de datos f Objeto de base de datos: j Nom bre de objeto: [~ (* Instrucción SQL: " 3 G enerador SQ L... SELE C T P R E S E N T A C IO N FR O M A R T IC U L O S G R O U P BV P R E S E N T A C IO N O R D E R BY P R E S E N T A C IO N Aceptar Cancelar Aplig® A yuda Luego seleccione el objeto Commandl y haga click en el botón Agregar Comando Secundario. Se visualiza la siguiente ventana: Comando: Command2 desde Connectionl G r u p o E d it o r ia l M e g a b y t e 515 « T O
  • 260.
    % VISUAL BASICcomo debe ser... Ingrese a la ventana de propiedades del Command2 y seleccione la tabla Artículos, luego en la hoja R elación agregue una relación entre el Com m andl y el Command2 por el campo Presentación y al final haga click en A ceptar. Propiedades de Command2 General j Parámetros J Relación ] Agrupar | Agregados j Avanzadas | Nombre de comando: |Command2 Conexión: | — “ j Origen de datos : Objeto de base de datos: ¡Tabla Nombre de objeto: ¡Artículos C Instrucción SQL: í Aceptar | Ayuda Propiedades de Command2 General | Parámetros Relación | A g ria r ) Agregados ] Avanzadas | F f jefacionat con un comando primaria Comando primario: | Commandl ~* Definición de relación Campos secundarios y Campos primarios parámetros Aceptar Ayuda De esta manera el Comando Jerárquico (Commandl) queda listo para mostrarlo en el control MSHFIexGrid. Para ello asigne en la propiedad DataSource del MSHFlexGrid el nombre del Data Environment y en su propiedad DataMember el nombre del comando primario (Commandl). Para ver el listado ejecute su aplicación. En forma predetermina los grupos de registros se muestran en forma Horizontal como se indica en la Página N° 477. Si desea visualizarlos en forma vertical, haga click derecho dentro de este control y en la hoja General cambie su propiedad BandDisplay a Vertical. Cuando utiliza el modo Vertical puede hacer uso de la propiedad Bandlndent para indicar a partir de qué columna se debe visualizar los registros del Comando Secundario. Para ello ingrese a la hoja Bandas y seleccione primero en Band la Banda 1 (Command2) y luego en la propiedad Bandlndex indique el N° de la columna. En la hoja Bandas también puede seleccionar los campos del Comando Secundario que desea visualizar: PHES EN TACION oorliqo J/iombre Fenjílil x 20 Cornpiimidoi I I- .1.A.,!mimi . .1 x 1.(1 i ,|. Ver.OHjIon Forte x 1 C o m p 1 / I 9/02 I . V :i jA 11 G/3Ò/00 T / T í V /o ;?.... 516 G r u p o E d i t o r i a l M e g a b y t e " ^ CAPITULO XII: Programación ADO 2. M o strar los artículos agrupados por el Año de Vencim. Para que la agrupación se muestre por el año de vencimiento de cada Artículo debe cambiar la propiedad del comando primario y secundario: Propiedades de Commandl Genefal J Parámetros | Relación | Agrupar | Agregados | Avanzadas j Conexión: |Connect»n1 3 --------------- □ Nombre de comando: ¡Commandl Origen de datos C Objeto de base de datos [ Nombre de objeto: [ <• Instrucción SQL: SELECT YEAR(VENCIMIENTO) AS AÑO FROM ARTICULOS GROUP BYYEAR (VENCIMIENTO) ORDER BY YEAR(VENQMIENTO) ! Aceptar Aplicar Ayuda Propiedades de Command2 General J Parámetros | Relación | Agupar | Agregados | Avanzadas Nombre de comando: |Command2 Concón: j : Origen de datos............. C Objeto de base de datos: I Nombre de objeto: f . (* Instrucción SQL J SELECT CODIGO.NOMBREPRESENTACION.VALORCOMPRA,VENCIMI ENTO,YEAR(VENÜMIENTO) AS AÑO FROM ARTICULOS ORDER BY VENCIMIENTO Aceptar Aplicar Ayuda INSTRUCaÓNSQLDELCOMMANDl SELECT YEAR(VENCIMIENTO) AS AÑO FROM ARTICULOS GROUP BY YEAR(VENCIMIENTO) ORDER B Y YEAR(VENCIMIENTO) INSTRUCCIÓN SQLDELC0MMAND2 SELECT CODIGO, NOMBRE, PRESENTACION, VALORCOMPRA, VENCIMIENTO, YEAR(VENCIMIENTO) AS AÑO FROM ARTICULOS ORDER BY VENCIMIENTO La relación se debe realizar por el campo calculado Año: P ropiedades d e Com m and2 G e n e r a l j P a r á m e t r o s R e l a c i ó n | A g r u p a r ] A g r e g a d o s | A v a n z a d a s ) fs? [ g e i a e i o n a r c o n u n c o m a n d o p rim a ric j C o m a n d o p rim a rio : j C o m m a n d l D e f i n i c ió n d e r e l a c i ó n C a m p o s s e c u n d a r i o s y C a m p o s p rim a r io s p a r á m e t r o s “3 A c e p t a r | C a n c e l a r A y u d a G r u p o E d i t o r i a l Megabyte 517
  • 261.
    Û ' VISUALBASIC como debe ser... REPORTE DE COMANDOS JERÁRQUICOS Si usted desea mostrar en el reporte los datos que se encuentran en Comandos Jerárquicos, sólo tiene que agregar una nueva sección mas al DataReport. Esta sección se llama GRUPO y para adicionarla debe puede hacer click derecho en el DataReport y elegir la opción Insertar Encabezado o Pie de Grupo o una vez que asignó las propiedades Datasource y DataMember al DataReport hacer click derecho en él y elegir la opción Obtener Estructura. El encabezado de grupo lo debe configurar para que muestre la información del Comando Primario (Comandl) y la sección de detalle para que muestre la información del comando secundario (Command2). La sección Pie de Grupo la puede configurar para mostrar un resumen de cada grupo, por ejemplo, la cantidad de registros mostrados, la suma de campos numéricos, etc. i§fc D a t a R e p o i t l 11 j H _b J Zoom [‘loo* i l I ................ J Reporte de Artículos por Año de Vencimiento ■ Año de Vencimiento 2000 Código 00006 Artículo A B-Broncol 3 0 0 IM Valor de Compra 9.50 Fecha de Vencimiento 1 5/06/00 ■a- 0 0 0 1 0 Finisti J a ra b e F ra s c o 1 0 0 mi. 1 0 00 28/06ÆI0 0 0009 Fenistil G o ta s F r a s c o 2 0 mi. 13.00 2 9/06/00 ■ 0 0 0 0 8 V enoruton Fo rte x 1 2 Com p. 13.00 30/06/00 00013 Fluidas« iny x 2 mi Cantidad de Artículos: 5 13.00 16)09/00 2001 Código 0 0 0 0 5 Artículo Panadol Antigripal x 6 0 ta b Cantidad de Artículos: 1 Valor de Compra 4.00 Fecha de Vencimiento 30/12/01 2002 Código 00011 Artículo Importal x 6 S h a c h e ts Valor de Compra 20.00 Fecha de Vencimiento 1 9/01/02 0 0003 Fenistil x 20 Com prim idos 13.00 1 9/01/02 00007 A B-Broncol 6 0 0 IM 1 2.00 0 1/05/02 0 0 0 1 2 Panalgin am p . x 2 mi 5 4.00 0 8/05/02 00001 A caricida Crem a x 6 0 gr. 5 .00 30/06/02 00004 Pilka G o ta s 20 mi 2 3 .0 0 1 6/10/02 Cantidad de Artículos: 6 Páginas: H ¡4 |T ~ 518 G r u p o E d i t o r i a l Megabyte •5|¡¡ CAPÍTULO XII: Programación ADO Para crear el reporte anterior, puede diseñarlo de la siguiente manera: % P rojecti - D ataR epoitl (DataReport) 4 Encabezado de informe (ReportHeader? 4 Encabezado de página (PageHeader) Reporte de Artículos por Año de Vencimiento Año de V encim iento 4 Encabezado de grupo (Command 1 „Header) AHO [C o m m a n d i] Código 4 Petate (Command2_DetaiQ________ Valor de Compra Fecha de Vencimiento CODIGO [Comrriancß] j NOMBRE [Commancß] VAl0f?C0MPRA [Commancß] VENCMENTÖ [Command2] 4 Pie de página (PageFooterj Cantidad de Artículos: j RCNT ICommand21 4 Pie de informe (ReportFooter Sección de Encabezado de Página Esta sección tiene dos Etiquetas una con el título principal y la segunda con el título “Año de Vencimiento”. Sección Encabezado de Grupo Esta sección tiene un control RptTextBox que m uestra cada año de vencimiento. En su propiedad DataMember seleccione Commandl y en su propiedad DataField el campo calculado AÑO. El resto de controles son Etiquetas con el título para cada campo del Command2. Sección de Detalle Esta sección tiene cuatro controles RptTextBox que muestran el contenido de los campos del Command2. En la propiedad DataMember de cada uno de ellos seleccione el Command2 y en DataField el campo respectivo. Sección Pie de Grupo Esta sección tiene un control (RptLabel) con el título Cantidad de Artículos y un control RptFunction que muestra la cantidad de productos que se vencen en cada año. En su propiedad FunctionType seleccione 4-rptFuncRCnt, y en su propiedad DataMember seleccione Command2. NOTA Usted puede cambiar el diseño de este reporte de acuerdo a lo que necesita y para visualizarlo puede escribir dentro de un botón de Comandos del formulario la siguiente instrucción: DataReportl.Show También puede hacer que se muestre automáticamente cuando ejecute el proyecto, configurándolo como objeto inicial (Proyecto/Propiedades del proyecto). f ^ j j ^ G r u p o E d i t o r i a l Megabyte 519
  • 262.
    á l lí i l l * VISUAL BASIC como debe ser.. APLICACIÓN DESARROLLADA N° 68 La siguiente aplicación permite mostrar en un reporte el contenido de Co­mandos Jerárquicos que se forman de dos tablas: Vendedores y Ventas que se encuentran en la base de datos llamada CONTROL y cuyas estructuras son: Vendedores Codigo Text 3 Nombre Text 30 Telefono Text 10 Ventas Codigo Text 3 Fecha Venta Date Monto Currency Distrito Ven ta Text 20 Este reporte muestra también de cada vendedor la cantidad de ventas rea­lizadas, el monto total vendido y su promedio de ventas. t t . D a t a ñ e p o r tl H J e f ] Z M m J jjlO O * J 1 ^ ^ ■;.:---------j---------------------------ÜÉ . J REPO RTE DE V E N TA S POR VENDEDO R Codigo 003 ■ Codigo 004 Codigo 002 Aginas: ¡«HIT José Portilla Fecha 15/01/00 16/02/00 20/02/00 10/03/00 22/03/00 228844 Monto 200.00 300.00 150.00 500.00 450.00 Distrito Ferreñafe La Victoria Chiclayo Zana Etem N° de Ventas 5 Total S/. 1,600.00 Promedio S/. 320.00 Nombre Teléfono Liliana Carbonel 224488 Fecha Monto Distrito 21/01/00 600.00 Reque 01 /01 /OO 300.00 Motupe N° de Ventas 2 Total S/. 900.00 Promedio S/. 450.00 Nombre Teléfono Hoemi Montano 234878 Fecha Monto Distrito 12/01/00 50.00 Reque 14/01 /00 150.00 La Victoria 18/02/00 500.00 Pimentel 20/02/00 200.00 Lambayeque ►M 'I ......... G r u p o E d i t o r i a l Megabyte" CAPÍTULO XII: Programación ADO DESARROLLO DE LA APLICACIÓN Para desarrollar esta aplicación agregue a su formulario un DataEnvironment y un DataReport. Al objeto Connectionl del DataEnvironment conéctelo a la base de datos CONTROL, luego agregue un comando (Commandl) e ingrese a su ventana de propiedades donde se escribe una instrucción SQL que obtiene los datos de los vendedores ordenados por su nombre: SELECT Codigo,Nombre,Telefono FROM Vendedores ORDER BYNombre G en e ral | Parám etros ] R e la c ió n ] A g ru p a r ] A g re g a d o s j A v a n z a d a s ) N om b re d e c om a n d o : | Commandl C one jjió n: | Connectionl j O rig en d e d a to s 1 O b je to d e fease d e datos: j N fim b ro d e objeto: j In s tiu c c ió n SQL: fie n e ra d o r SQL.. J A p lic a r Luego al C om m andl agréguele un comando secundario donde debe seleccionar Tabla en Objeto de base de datos y en Nombre de objeto seleccione la tabla Ventas G eneral ] P arámetros ] R e la c ió n ) A g rup a r ] A g re g a d o s ] A v a n z a d a s J LJ ombre d e com an d o : j C o rr.m w d 2 C onexión: }7 C rip e n d o d a lo s [Tabla ■ 3 N om b re d e objeto: ¡VENTAS ~ 3 In s tru c c ió n S Q L : - J . : u f f i f c í a i . ........— -------------------------------- A c e p ta r j C an ce lar | También puede seleccionar Instrucción SQL para obtener por ejemplo todos los registros de la tabla Ventas ordenados por la fecha de ventas. En el Comando Secundario ingrese a la página RELA CIÓ N y agregue una relación con el Commandl por medio del campo Código. Para activar el Reporte escriba en el formulario D ataReportLShow . G r u p o E d i t o r i a l Megabyte 5 2 1
  • 263.
    É£: VISUAL BASICcomo debe ser. CONEXIÓN A UNA BASE DE DATOS M EDÍANTE INSTRUCCIONES Para conectarse a una base de datos sin usar el control ADO ni el diseñador DataEnvironment, debe seguir los siguientes pasos: 1. Configurar al Visual Basic para que acepte la manipulación los Objetos de D atos A ctiveX mediante instrucciones. Referencias - Proyectol Esto se realiza activando la c a silla M icrosoft Referencias disponibles: ActiveX Data Objects x .x Library en Proyecto/R eferencias. □ Intel Procedural Effect Library □ JET Expression Service Type Library □ LayoutDTC 1.0 Type Library □ LM Library Li Macromedia Shockwave Director Control — 1 □ Microsoft Access 9.0 Object Library + 1 □ Microsoft Active Server Pages Object Librar □ Microsoft ActiveMovie Control Prioridad □ Microsoft ActiveX Data Objects (Multi-dimer B Microsoft ActiveX Data Objects 2,1 Library □ Microsoft ActiveX Data Objects 2.0 Library □ Microsoft ActiveX Data Objects Recordset ; □ Microsoft ActiveX Plugin . : p e r os oft Add-In Desianej + 1 2. Definir un objeto tipo Connection. Sintaxis: Ditti Nom bre del Objeto A s N ew AD O D B. Connection 3. Definir un objeto tipo Recordset. Sintaxis: Dim N om bre del Objeto As New A D O D B .R ecordset Dependiendo de la cantidad de formularios que vas a usar en la aplicación, estos objetos se pueden definir también a nivel de Módulo usando la palabra Public. El objeto tipo Connection se utiliza para administrar la conexión a la base de datos. El objeto tipo Recordset almacena los registros que se obtiene de las tablas de la base de datos donde nos conectamos para poder manipularlos en nuestra aplicación. La palabra ADODB es un prefijo que contiene todos los objetos de datos ActiveX. Se debe visualizar automáticamente después de escribir la palabra New al definir los objetos. Si no se visualiza seguramente no activó la casilla M icrosoft ActiveX Data Objects x.x Library en la opción Proyecto/ Referencias. 522 G r u p o E d i t o r i a l Megabvte<|f|¡^ CAPÍTULO X II: Programación A B O ^ ¡¡¡ ¡¡1 R E A LIZ A R L A CONEXIÓN Para realizar la conexión se utiliza el objeto tipo Connection con la propiedad ConnectionString y la forma de conectarse depende del origen de datos que ha creado. Por ejemplo: 1. Si tenemos un ODBC llamado Agenda y hemos definido el objeto DB tipo Connection, las instrucciones para conectarse son: DB.ConnectionString = “DSN =Agenda ” 2. Si tenemos un Archivo de Vínculo OLEDB llamado Ventas en la carpeta C:Sistema, y hemos definido el objeto DB tipo Connection las instrucciones para conectarse son: DB.ConnectionString = “File Name=C:SistemaVentas.UDL” Si no ha creado ningún origen de datos, también puede realizar la conexión mediante una cadena de conexión. Por ejemplo, la siguiente instrucción se conecta a una base de datos Microsoft Access llamada Practica.mdb. DB.Conned¡onString="Provider=Microsoft.Jet.OLEDB.4.0;DataSourcc=C:I,radinuiull>" A B R IR UNA C O N EXIÓ N Después de realizar la conexión como se indicó en el paso anterior, ésta so mantiene cerrada, si usted trata de utilizarla se visualizará el siguiente mensaje Microsoft Visual Basic Error ‘3709’ en tiempo de ejecución : La aplicación solicitó una operación en un objeto con una referencia a un objeto Connection cerrado o no válido. lerm inar f ¿epurar j Esto significa que antes de utilizarla, la debe abrir. El método OPEN permite abrir una conexión. Sintaxis: O bjeto_T ipojC onnection. Open Por ejemplo para abrir la conexión almacenada en el objeto DB se debe escribir: DB.Open También se puede abrir e indicar el origen de datos o la cadena de conexión al mismo tiempo según el origen de datos que ha creado: DB.Open "DSN=Agenda" DB.Open “File Name=C:SistemaVentas.UDL” DB.Open “Providei^Microsoft.Jet.OLEDB.4.0;DataSource=C:Practica.mdb” 1 1 1 1 ^ G r u p o E d i t o r i a l Megabyte 523
  • 264.
    é S Blk v i s i ja B B M M W B i M M 1 ACCEDER A LOS REGISTROS ■ — ■—■■■■------------■ ■ ... Para acceder y manipular los registros se puede utilizar el objeto definido de tipo Recordset con sus propiedades métodos que se explican a continuación. Otras de sus propiedades y métodos se explicaron con el control ADO. A C T IV E C O N N E C T IO N Permite indicar al objeto Recordset la conexión desde donde se van a obtener los registros. Por ejemplo, la siguiente instrucción le indica al Visual Basic que los registros se van a obtener de la conexión configurada en el objeto DB: RS.ActiveConnection = DB SO U R C E Esta propiedad se utiliza en lugar de Recordsource y permite acceder a los registros a través de una instrucción SQL o indicando el nombre de la tabla: RS.Source= "select*fromartículoswhere year(vencimiento) = 2002" RS.Source = “ artículos” O PEN Es un método que permite abrir el acceso a los registros R S.O pen En este método también se puede indicar el origen de los registros, la conexión desde donde se van a obtener los registros, el tipo de cursor (CursorType) y el tipo de bloqueo (LockType). Por ejemplo, las instrucciones: RS.ActiveConnection = DB RS.Source = “artículos” RS.CursorType = adOpenKeyset RS.LockType = adLockOptimistic RS.Open Se pueden reemplazar por: RS.Open “artículos”, DB, adOpenKeyset, adLockOptimistic REQ U ERY Permite actualizar los registros de un objeto Recordset. C L O SE Permite cerrar un objeto Recordset liberando los recursos del sistema. Cuando usted cieña el objeto Recordset o cualquier otro objeto, no lo elimina de la memoria, para ello tiene que utilizar NOTHING.. N O T H IN G Es una palabra clave que borra un objeto de la memoria. Sintaxis: Set Nombre d el Objeto = N othing 524 G r u p o E d i t o r i a l Megabyte^ CAPÍTULO XII: Programación ADO CLOSE Permite cerrar un objeto Recordset liberando los recursos del sistema. Cuando usted cierra el objeto Recordset o cualquier otro objeto, no lo elimina de la memoria, para ello tiene que utilizar NOTHING. Nom bre del Objeto R ecordset.Close SAVE Permite grabar un Recordset en el disco. Si desea abrir posteriormente el objeto use también el método Open. N om bre del Objeto Recordset.Save Nom bre Ejemplo: Las siguientes instrucciones muestran en un DataGrid el contenido de un Recordset grabado con el nombre copia. Dibuje un DataGrid en su formulario. Dim DB As New ADODB.Connection Dim RS As New ADODB.Recordset DB.Open “D SN=INFORM E” RS.Open “SELECT * FROM Artículos WHERE ValorCompra<50", DB, adOpenKeyset, adLockOptimistic I f Len(Dir(“COPIA”, 0)) o 0 Then I f M sgBox(“Desea reemplazarlo”, 36, “Ya existe el Recordset llamado COPIA”) = 6 Then Kill “COPIA” Else Exit Sub End I f End I f RS.Save “CO PIA” RS. Cióse Set RS = Nothing RS.Open “CO PIA” Set DataGrid 1 .DataSource = RS CLONE Permite crear copia de un Recordset. La siguiente instrucción hace una copia de RS en RS2: Set RS2= RS. Clone FILTER Filtar los registros de un RecordSet. La siguiente instrucción filtra sólo los artículos que valen menos de 50 nuevos soles: RS.Filter = “ValorCompra < 5 0 ” SORT Ordena los registros de un Recordset. Ejemplo: RS.CursorLocation = adUseClient RS.Open “Artículos”, DB, adOpenKeyset, adLockOptimistic RS.Sort = “ValorCompra” Set DataGridl.DataSource = RS G r u p o E d i t o r i a l Megabyte 525 wm
  • 265.
    VISUAL BASIC comodebe ser... APLICACIÓN DESARROLLADA N° 69 Esta aplicación consiste en una consulta, listado y reporte para la tabla artículos sin usar el control ADO, ni el diseñador Data Environment. «¡i. Aplicación sin el contici ADO ni Data Environnent C Z listado AB-Bronci 300 !M AB-Bioncol 600 IM Acaricida Crema x 60 gi Acaricida Loción x 60 m£, FemsW Gotas Frasco 20 mi jFenisH x 20 Comprimidoí F«n*stil Jarcíbe Fiasco 1 00 mi Ftadasa ir$¡ x 2 mi Importal x$Shache*s , Panado! An#igrç>al k SO tab J j D a lo s d e l A r t ic u la ■Código Nombre Pie:eri»ación V a b r de Compia Fecha de Venomienío |A B -B ío n co l3 0 0 IM iFfasco I 1 5 /0 6 /0 0 « . Aplicación tin el control ADO ni Data Erwuonment C onstila codw o I nombre l presentación Ivatorcom ora i vencimiento 00006 ' AB-Broncol 300 IM i Frasco 9.5 15 /0 6 /0 0 00007 A B -Bronco! F£n IM F- : • .......12 ......... 0 1 /0 5 /0 2 __ 001X11 l - « - ida Cremai k BOj r Pq le 5 30 /0 6 /0 2 00002 h ; ai*: >da _oc :n • oU - s Frasco 10 07 /0 1 /0 3 00009 I V fii." bo?a: ' i a : . 0 2 J f iz.co 13 2 8 /0 6 /0 0 00033 f " ili ■! JJ L m| r rnid !.. : i ......13 ist/ l M 00010 Fr¡i-I¿ 1 ih f 'f . i o l ^ r m c r in 2 8 /0 6 /0 0 ....... 00013 F^id a sa rsy y. 2. mi Fiasco 13 16/09/00 00011 1 mportal » 6 S hachets C sa r20 Î 9/01 /02 l< nnnnS i P.« ia/ViI AnlinrmA! v (-.lì 1 (" .«*» 4 Ï1 /1 VfH _ J ¿ R e po rte En la primera hoja del control SsTab dibuje el control Frame, las etiquetas y un control DataCombo y cinco cajas de texto. Al control DataCombol sólo asígnele el valor 1-dbcSimpleCombo en su propiedad Style. En la segunda hoja del SsTab sólo dibuje un control DataGrid y no le asigne ninguna propiedad. El Reporte diséñelo como se indica en la página N° 467, pero sólo con el título principal y las cajas de texto donde se indican los campos a visualizar y sus respectivo títulos. CAPITULO XII: Programación ADO INSTRUCCIONES DE LA APLICACION Definir los objetos en la General Declaraciones Dim DB A í New ADODB. Connection Dim RS A s New ADODB.Recordset Instrucciones del Form_Activate Prívate Sub Form_Activate() ‘Realiza la conexión DB.Open “DSN=VENTAS” RS.Open ‘‘select *Jmm artículos orderby nombre", DB, adOpenKeyset, adLockOptimistic ‘Asigna las propiedades al Datacombol DataCombo 1. Text = Set DataCombol.RowSource = RS DataCombo LListField = RS(l).Name ‘Asigna las propiedades a las cajas de texto Set Textl .DataSource = RS Set Text2. DataSource = RS Set Text3. DataSource = RS Set Text4. DataSource = RS Set Text5.DataSource = RS Textl.DataField = RS(0).Name Textl.DataField - RS( 1 ).Name Text3. DataField = RS(l).Name Text4.DataField = RS(3).Name TextS.DataField = RS(4).Name ‘Asigna las propiedades al D ataGridl Set DataGridl. DataSource = RS End Sub Instrucciones del control DataCombol Prívate Sub DataCombol_Change() Dim R As String R = “NOMBRELIKE + DataCombol + • * * ’ ” If DataCombol < > Then RS.Find R ,,, 1 IfRS.EOF Then Frame 1 .Visible = False RS.MoveFirst Else Frame 1 .Visible = True E n d lf E n d lf End Sub Instruc. botón Reporte Prívate Sub Commandl _Click() Set DataReportl.DataSource=RS DataReport 1 .Show DataReportl .Refresh End Sub Instruciones del SsTab_Click Prívate Sub SSTabl_Click(PreviousTab As Integer) If PreviousTab = 1 Then RS.MoveFirst DataCombol = E n dlf End Sub G r u p o E d i t o r i a l Megabyte 527
  • 266.
    , fK W. É i » VISUAL BASIC como debe ser. . . EL METODO EXECUTE DEL OBJETO CONNECTION Este método permite ejecutar instrucciones SQL sobre una conexión para obtener y darles mantenimiento a los registros o a las tablas y crear Cursores. Puede ejecutar cualquiera de las instrucciones SQL ya explicadas y espe­cialmente instrucciones SQL para Consultas de Acción o Instrucciones DDL. CONSULTAS DE A CCIÓN La consultas de acción son un conjunto de instrucciones SQL que permiten dar mantenimiento a los registros de una tabla. Las principales acciones que se pueden realizar son: 1. Actualizar los valores de los registros. 2. Adicionar nuevos regi stros. 3. Eliminar registros. IN STR U C C IO N ES DDL Son un conjunto de instrucciones del Lenguaje de Definición de Datos que permiten dar mantenimiento a las tablas de una base de datos. Las principa­les acciones que puede realizar son: 1. Crear tablas. 2. Modificar la estructura de las tablas. 3. Borrar tablas. Si se obtienen registros con el método EXECUTE, se pueden almacenar en un objeto Recordset. Por ejemplo, las siguientes instrucciones muestran en un control MSHFlexgrid los artículos ordenados por el Valor de Compra. Después de cerrar el Recordset los registros se siguen visualizando. Dim DB As New ADODB.Connection Dim RS As New ADODB.Recordset DB.Open “D SN=INFORM E” RS.Open “SELECT * FROM Artículos ORDER BY ValorCompra” Set M SHFlexGridl.DataSource = RS RS. Cióse Set RS — Nothing ty 528 G r u p o E d i t o r i a l Megabyte^ CAPÍTULO XII: Programación ADO ^ ¡ ¡ ¡ ¡ ¡ 1 INSTRUCCIONES SQL PARA CONSULTAS DE ACCIÓN D E L E T E F R O M Esta instrucción permite borrar todos o sólo un grupo de registros de una tabla. Sintaxis para borrar todos los registros de una tabla: Delete From Nombre de la Tabla Sintaxis para borrar sólo un grupo de registros: Delete From Nombre de la Tabla Where Condición Tenga mucho cuidado al utilizar esta instrucción porque los registros que borra ya no se pueden recuperar. Se recomienda hacer una copia de segu ridad antes usarla. Ejemplo: Si tenemos el objeto DB conectado a la base de datos Tienda que tiene la tabla Artículos, entonces: La siguiente instrucción borra todos los registros de la tabla artículos: D B .E xecu te(“D elete fro m A rtícu los”) La siguiente instrucción borra sólo los artículos que se vencieron en el año 1999. DB.Execute(“Delete from Artículos Where Year(Vencimiento) = 1999”) IN S E R T IN T O Permite insertar registros a una tabla existente desde otra tabla. La tabla donde se van a adicionar los registros debe existir porque si no existe se produce un error con el tiene el número -2147217865. Su sintaxis es: Inserí luto TablaDestíno Select Campol,Campo2,...CampoN From TablaOrigen La sintaxis anterior adiciona todos los registros de la tabla Origen a la tabla Destino. Si desea adicionar sólo un grupo de registros, debe utilizar Where con la condición al final de la instrucción. Ejemplos: La siguiente instrucción adiciona todos los registros a la tabla Artículos a la tabla Respaldo. DB.Execute(“Insert Into Respaldo Select codigo,nombre, presentación,valorcompra, vencimiento from Artículos”) La siguiente instrucción adiciona los artículos que tienen presentación Caja de la tabla Artículos a Respaldo. DB.Execute(“Insert Into Respaldo Select codigo,nombre, presentación,valorcompra. vencimiento from Articulos Whre Presentación = ‘Caja’”) ¡ ||||j j ^ G r u p o E d i t o r i a l Megabyte 5 2 9 - ^ |§ |¡ ¡ |l
  • 267.
    . BASIC comodebe ser... S E L E C T IN T O Esta instrucción permite crear una tabla y adicionarle registros de otra tabla. La tabla destino no debe existir porque de lo contrario se produce un error que tiene el número -2147217900. Su sintaxis es: Select Campo 1,Campo2,... CampoNInto TablaDestino From TablaOrigen Si sólo desea crear la tabla y adicionarle algunos registros, debe agregar Where y la condición. Ejemplos: La siguiente instrucción crea la tabla Seguridad y le adiciona todos los regis­tros de la tabla artículos. DB.Executef “Select codigo,nombre,presentación, valorcampra, vencimiento Into Seguridad From Artículos ”) La siguiente instrucción crea la tabla Seguridad y le adiciona sólo los artícu­los cuyo valor de compra es mayor que S/. 250.00 DB. Execute( “Select codigo,nombre,presentación, valorcampra, vencimiento Into Seguridad From Artículos Where valorcompra > 250 ”) U P D A T E Permite reemplazar el contenido de un campo de todos o de un grupo de registros por uno nuevo. Sintaxis: Para todos los registros: Update Nombre de la Tabla Set Nombre del Campo = NuevoContenido Para un grupo de registros: Update Nombre Tabla Set Nombre Del Campo= NuevoContenido Where Condicion Ejemplos: La siguiente instrucción incrementa al valor de compra de todos los artícu­los el 10%. DB.Executef “Update Artículos Set ValorCompra = ValorCompra * 1.10”) La siguiente instrucción cambia a los artículos que tienen su presentación Caja por Cajitas. DB.Execute( ' ‘ Update Artículos Set Presentación= ‘Cajitas ’ Where Presentación = ‘Cajas') 0^4^ 530 G r u p o E d i t o r i a l Megabyte CAPÍTULO XII: Programación ADO INSTRUCCIONES DDL Las instrucciones DLL significan Instrucciones de Lenguaje de Definición de Datos y son importantes por que con ellas podemos crear tablas, modifi­car la estructura de una tabla o eliminar toda una tabla incluyendo los regis­tros que contiene y su estructura. C R E A T E T A B L E Esta instrucción, como su nombre lo indica permite crear una tabla. Su sintaxis es la siguiente: Create Table Nombre de la Tabla(Campol Tipo, Campo2 Tipo,... CampoNTipo) Ejemplo: La siguiente instrucción permite crear una tabla llamada Clientes dentro de la base de datos que esta conectada al objeto DB con la siguiente estructura: Codigo Text 5 Nombre Text 40 Ruc Text 8 Credito Currency Feeing Date/Time DB.Execute (“CreateTable Clientes(Codigo Text(5), NombreText(40), Ruc Text(8), Crédito Currency, Feclns Date)”) A L T E R T A B L E Esta instrucción permite agregar o eliminar un campo de una tabla. La sintaxis para agregar un campo a una tabla es: Alter Table Nombre de la Tabla Add Column NombreCampo Tipo Ejemplo: La siguiente instrucción agrega a la tabla Clientes el campo Teléfono de tipo Texto con 10 caracteres. DB.Execute (“Alter Table Clientes Add Column Telefono Text( 10)”) G r u p o E d i t o r i a l Megabyte . : 5 3 1 < á | | | | | |
  • 268.
    iÉiÉ¡iÉÉÉ>' VISUAL BASICcomo debe ser. . . La sintaxis para eliminar un campo a una tabla es: A lter Table Nombre de la Tabla Drop Column NombreCampo Ejemplo: La siguiente instrucción elimina de la tabla Clientes el campo Teléfono. DB.Execute ("AlterTable Clientes Drop Column Telefono") D R O P TABLE Esta instrucción permite eliminar toda una tabla incluyendo los registros que contiene y su estructura. La sintaxis es: Drop Table Nombre de la Tabla Ejemplo: La siguiente instrucción elimina la tabla Clientes. DB.Execute ("Drop Table Clientes") NOTA: En la siguiente aplicación se muestra ejemplos mas amplios sobre el uso de las instrucciones SQL para consultas de Acción y sobre las instrucciones de Lenguaje de Definición de Datos (DLL). La aplicación siguiente también se encuentra en Disco de Aplicaciones que acom­paña a este libro para visualizar y comparar las instrucciones con mayor facilidad. l i l i l í ^ 5 3 2 G r u p o E d it o r i a l Megabyte CAPÍTULO XII: Programación ADO < € ¡¡¡1 1 A P LIC A C IÓ N DESARRO LLADA N° 70 La siguiente aplicación permite dar mantenimiento a los registros y a la tabla Artículos: m ora ¡i. Mantenimiento de la labia Artículos Artículos Agregar artículos de prueba Cambiar una presentación por otra Cambiar el Valor de Compra Restaurar el valor de compra anterior Borrar artículos Recuperas los Ultimos Artículos Borrados Borrar la Copia de Seguridad de los archivos borrados Salir Relación de A rtículos Codigo Nombre Presentación Valor de Compra Vencimiento 00001 Acaricida Cierna x 60 gr. Pote 5.0000 2002-06-30 00:00:0 00002 Acaricida Loción x 60 mi. Frasco 10.0000 2003-01-07 00:00:0 00003 Fenistil x 20 Comprimidos Caja 13.0000 2002-01-19 00:00:0 00004 Pilka Gotas 20 mi Frasco 23.0000 2002-10-16 00:00:0 00005 Panadol Antigripal x 60 tab Caja 4.0000 2001-12-30 00:00:0 00006 AB-Broncol 300 IM Frasco 9.5000 2000-06-15 00:00:0 00007 AB-Broncol 600 IM Frasco 12.0000 2002-05-01 00:00:0 00008 Venoruton Forte x 12 Cornp. Caja 13.0000 2000-06-30 00:00:0 00009 Fenistil Gotas Frasco 20 mi. Frasco 13.0000 2000-06-29 00:00:0 00010 FinistilJ atabe Frasco 100 mi. Frasco 10.0000 2000-06-28 00:00:0 00011 Importai x 6 Shachets Caja 20.0000 2002-01-19 00:00:0 L a " " ............ Al ejecutar la aplicación y mientras dure la conexión a la base de datos se muestra una pantalla de presentación. Programa de ejemplo Visual Basic C o m o d e b e s e r . . . Un m om ento p o r fa v o r Una vez realizada la conexión esta pantalla se oculta automáticamente y se muestra el menú principal. G r u p o E d it o r i a l Megabyte 533
  • 269.
    á ü l^ VISUAL BASIC como debe ser... El Menú Principal esta com puesta por las siguientes opciones: AGREGAR ARTÍCULOS DE PRUEBA Con esta opción usted puede agregar la cantidad de artículos que desee a la tabla y de esta manera probar la velocidad de la computadora para procesar una gran cantidad de registros. Por ejemplo usted puede probar qué tan rápida es su computadora y su programa con unos cinco mil o diez mil artículos. Esta opción presenta el siguiente formulario. 1 A d i c i o n a l a r t í c u l o s d e P r u e b a ■1751x1 Actualmente hay 13 artículos. ¿Cuanto desea agregar? | Aceptar J Configuración d e los n uevos Artículos : Los artículos empiezan con la palabra J Producto La presentación de los artículos debe ser jCaja — El valor de compra debe estar entre jio.oo V jl 000 00 ~ - La fecha de vencimiento debe estar entre el |o i / o i/ o i J y ®1 J31n 2/01 3 ] Cerrar j 1 Aquí se indica la cantidad de artículos a agregar, el nombre para los artículos. Al nombre que usted indique se le adiciona un número correlativo. También puede indicar la presentación, el rango del valor de compra y de las fechas de vencimiento que deben tener los artículos al momento de agregarse. Tanto el valor de compra como la fecha de vencimiento se calculan al azar entre el rango establecido. CAMBIAR UNA PRESENTACIÓN POR OTRA Esta opción permite cambiar la presentación de un grupo de artículos por una nueva. El formulario que se muestra es: -Tñnn Cambiar u n a P resentación por O tra S e l e c c i o n e la P r e s e n t a c ió n A c t u a l J C a j a ▼ { E s c r i b a la p r e s e n t a c i ó n q u e q u ie r e c a m b ia r p o r : C a j a C am b iar A h o ra 534 G r u p o E d i t o r i a l Megabyte < 3 CAPÍTULO XII: Programación ADO 4SSB & En el combo sólo se visualizan las presentaciones de los artículos que actualmente tiene la tabla. Después de elegir una presentación, el programa le pide que escriba la nueva presentación por la cual la desea cambiar. A todos los artículos que tienen la presentación seleccionada se le cambia por la nueva presentación al hacer click en el botón Cambiar Ahora. CAMBIAR EL VALOR DE COMPRA Esta es útil cuando desee variar el valor de Compra de los artículos. El formulario que se visualiza es: 1 üü. V a r i a c i ó n d e l V a l o r d e C o m p r a m u _ I n i x l ............. In g r e s e e l m o n to d e V a r ia c ió n |j L a V a r ia c io n e s ta e n : S o le s C P o r c e n t a je 1 ip u u c v d i i a u u n In c r e m e n ta r C" D is m in u ir C a m b ia r A h o r a J C e r ra r j Primero debe ingresar el monto de variación, luego elegir si lo ha ingresado en soles o porcentaje y por último debe indicar si se debe aumentar o disminuir al valor de comprar. Si comete algún error al variar el valor de compra de los artículos, utilice la siguiente opción. RESTAURAR EL VALOR DE COMPRA ANTERIOR. Cuando usted varia el valor de compra, se guarda en un campo el valor de compra anterior y esta opción permite recuperar dicho valor de compra. Esta opción es muy útil cuando comete algún error en la variación de los valores. Antes de restaurar el valor de compra le pide la confirmación: I CONFIRME POR FAVOR i . mu n í - V Res i taurar el Valor de ( S í ] ; Compra anterior d No e los artículos G r u p o E d i t o r i a l Megabyte 535
  • 270.
    VISUAL BASIC comodebe ser. Si ingresa a la opción Restaurar El valor de Compra anterior sin haber variado los valores se muestra un mensaje de aviso. BORRAR ARTÍCULOS Esta opción permite borrar todos o un grupo de artículos. El formulario que presenta es el siguiente: . B o rra r A r tíc u lo s C a m p o O p e ra d o r MED C O D IG O *l N O M B R E wm P R E S E N T A C IO N > V A L O R C O M P R A | V E N C IM IE N T O II A A V — i ^1 A c e p ta r j C o n d ic io n B o „ a , lo s A r tíc u lo s q u e c u m p le n B o [|a ( T o d o s tes A r t( c u |o s Usted puede formar la condición que deben cumplir los artículos para que se puedan borrar o hacer un click en el botón respectivo para borrar todos los artículos. Cuando se elige el campo Valor de Compra no se permite el ingreso de letras y cuando se elige el campo Vencimiento se muestra automáticamente un control DTPicker. Este ejemplo lo puede utilizar también en la opción Cambiar el Valor de Compra de tal manera que sólo se pueda cambiar el Valor de algunos artículos. 5 3 6 G r u p o E d it o r i a l M c g a b v t e ^ ^ ^ w m , CAPITULO XII: Programación ADO RESTAURAR LOS ÚLTIMOS ARTÍCULOS BORRADOS Cuando usted borra artículos en la opción anterior, estos se guardar en una tabla de seguridad con un campo adicional llamado Fecha el cual contiene la fecha que borró el artículo. Esto es importante porque puede borrar por accidente los artículos. Esta opción permite recuperar todos los artículos borrados un grupo de ellos. Los grupos de artículos se pueden recuperar la fecha en la que se borraron. Visualiza el siguiente formulario. ■ ■ ■ ■ ■ ■ ■ i i M B i M i M i i i i i i i i i i i M í i i r i i i i r i n 1................m i Ver por fecha de borrado 115/07/00 Ver todos los borrados I |Estos son los artículos que ha borrado el día 15/07/00 Codigo Nombre Presentación Valor de Compra Vencimiento Fecha que se borró 00002 Acaricida Loción x 60 mi. Frasco 49.5662 2003-01 -07 00:00:00 2000-07-15 00 00 00 0000G AB-Broncol 300 IM Frasco 49.5531 2000-06-15 00:00:00 2000-07-1 5 00 OO 00 00007 AB-Broncol 600 IM Frasco 49.61 81 2002-05-01 00:00:00 2000 07-1 5 00 00 00 00009 Fenistil Gotas Frasco 20 mi. Frasco 49.6442 2000 06-29 00:00:00 2000 07-1 5 00 00 00 00010 Finistil Jarabe Frasco 100 mi. Frasco 49.5662 2000-06-28 00:00:00 2000 07-15 00:00 00 00012 Panalain amp. x 2 mi Frasco 50.7079 2002-05-08 00:00 00 2000-07-15 00:00:00 00013 Fluidasa iny x 2 mi Frasco 49.6442 2000-09-16 00:00:00 2000-07-15 00:00 OO 00004 Pilka Gotas 20 mi Frasco 49.9035 2002-10-16 00:00:00 2000-07-15 00 00 00 -1 1 Recuperarlos Cerrar BORRARLACOPIADESEGURIDADDELOS ARTICULOS BORRADOS Si está seguro de los artículos que ha borrado, entonces esta opción elimina definitivamente los artículos borrados. Visualiza el mismo formulario anterior, pero con el botón Borrarlos Definitivamente. Ver pot fecha de borrado “3 Ver todos los borrados ¡Estos son los artículos que ha borrado el día 15/07/00 Codigo N ombre Presentación Valor de Compra Vencimiento Fecha que se borró 00002Acaricida Loción x 60 mi. Frasco 49.5662 2003-01 -07 00:00:00 2000-07-15 00:00:00 00006 AB-Broncol 300 IM Frasco 49.5531 2000-06-15 00:00:00 2000-07-15 00:00:00 00007 AB-Broncol 600 IM Frasco 49.6181 2002-05-01 00:00:00 2000-07-15 00:00:00 00009 Fenistil Gotas Frasco 20 mi Frasco 49.6442 2000-06-29 00:00:00 2000-07-15 00:00 00 00010 Finistil Jarabe Frasco 100 mi Frasco 49.5662 2000-06-28 00:00:00 2000-07-15 00:00:00 00012 Panalgin amp. x 2 mi Frasco 50 7079 2002-05-08 00:00:00 2000-07-15 00:00 00 00013 Fluidasa iny x 2 mi Frasco 49.6442 2000-09-16 00:00:00 2000-07-15 00:00:00 00004 Pilka Gotas 20 mi Frasco 49.9035 2002-10-16 00:00:00 2000-07-15 00:00:00 Borrarlos Definitivamente G r u p o E d i t o r i a l Megabyte 537
  • 271.
    ^ÉÍÍÉÉÉ^ VISUAL BASICcomo debe ser... DESARROLLO DE LA APLICACIÓN N° 70 Como esta aplicación está compuesta por varios formularios, debe agre­gar un módulo y definir allí los objetos Connection y Recorset y las variables que se necesitan en la aplicación. También debe crear en este módulo el procedimiento MAIN en el cual se realiza la conexión y se muestra la pantalla de presentación. Este proce­dimiento se debe ejecutar primero, para ello configure al Visual Basic en la opción Proyecto/Propiedades del proyecto/Objeto Inicial. Contenido del Módulo de la aplicación Public DB As New ADODB. Connection Public RS As New ADODB.Recordset Public RS2 As New ADODB.Recordset Public RP As Integer Public EXISTE As Boolean Sub Main() ‘Muestra pantalla de presentación Form l.Show Form l .Refresh ‘Realiza la conexión DB.Open “DSN= VENTAS ” RS.Open “SELECT codigo,nombre,presentación,valorcompra,vencimiento FROM artículos ORDER B Y nombre ”, DB, adOpenStatic, adLockOptimistic ‘Cuando termina la conexión oculta la presentación y muestra el menú principal Forml. Hide Forml.Show End Sub FORMULARIO N 2 01 En el formulario N° 01 debe diseñar la pantalla de Presentación. En la aplicación de ejemplo, este formulario está compuesto por 3 etiquetas con los mensajes: Visual Basic, Como debe ser... y Espere un momento Por Favor con sus respectivas propiedades como poR ejemplo: Font, Forecolor, etc. FORMULARIO N 2 02 (Menú Principal) En el formulario N° 02 diseñe el Menú Principal con las opciones indicadas. Este formulario debe tener un control MSHFlexGrid donde se muestran todo los artícu­los de la tabla. 538 G r u p o E d i t o r i a l P CAPÍTULO XII: Programación ADO Instrucciones del Form_Activate Prívate Sub Form_Activate() MSHFlexGridl. Cois = 0 Set MSHFlexGridl.DataSource = RS MSHFlexGridl.FonnatString = “Codigo Noném | Presentación V.deCompra Vencimiento“ End Sub Instrucciones de la opción Agregar Artículos de Prueba Prívate Sub Agregar_Click() Form3.Show End Sub , Instrucciones de la opción Cambiar una Presentación por Otra Prívate Sub Cambiar_Click() Form4.Show 1 End Sub Instrucciones de la opción Cambiar el Valor de Compra Prívate Sub CambiarValor_Click() Form5.Show 1 End Sub Instrucciones de la opción Restaurar el Valor de C. Anterior. Prívate Sub RestaurarValor_Click() RS. Cióse ‘Abre la tabla artículos con todos los campos RS.Open ‘‘SELECT * FROM Artículos” 'Verificasihayunacopiadebsvdomsdecompraanleriojes( Campo ValorAnterior) EXISTE = False F orX = 1 To RS.Fields.Count IfRS(X- l).Name = “ValorAnterior” Then EXISTE = True Next RS.Cióse ‘Abre la tabla artículos con los campos principales RS. Open “SELECT codigo, nombre,presentación, valorcompra, vencimiento FROM artículos ORDER BY nombre”, DB, adOpenStatic, adLockOptimistic ‘Si no existe el campo ValorAnterior significa que no ha variado el vabrde compra IfNot EXISTE Then MsgBox “No se ha variado el Valor de C. de los Artículos”,64, "No puedo realizarlo ” Else IfMsgBox( “Restaurar el Valorde C. anterior de losArt. ", 36, “Confirme por Favor") = 6 Then DB.Execute “UPDATE Artículos SET ValorCompra = ValorAnterior” ‘Elimna el campo ValorAnterior RS. Cióse DB.Execute ( “ALTER TABLE Artículos Drop column ValorAnterior”) RS.Open ‘Actualiza la Consulta RS.Requery Set MSHFlexGridl.DataSource = RS End If End If End Sub G r u p o E d i t o r i a l Megabyte 539
  • 272.
    ¡Ü- VISUAL BASICcomo debe ser... Instrucciones de la opción Borrar Artículos Prívate Sub Borrar Artículos_Click() Formó. Show 1 End Sub Instrucciones de la opción Recuperar Artículos Borrados Prívate Sub RecuperarArtículos_Clíck() Form7!Command2. Visible = True Form7!Command2.Enabled = True Form7!Command3. Visible = False Form7.Show 1 End Sub Instrucciones de la opción Borrar Copia de Seguridad Private Sub BorrarCopia_Click() Form7!Command2.Visible = False Form7!Command3. Visible = True Form7!Command3.Enabled = True Form7.Sh.ow End Sub Instrucciones del MSHFlexGrid para ordenar los artículos Private Sub MSHFlexGridl_Click() MSHFlexGridl .Sort = 1 End Sub Instrucciones de la opción Salir Private Sub Salir_Click() End End Sub FORMULARIO N e 03 (Agregar Artículos de Prueba) EKE! ■ : Labeii ¡ C o n fig u ra c ió n d e lo s n u e v o s A rtíc u lo s : Los artículos empiezan con la palabra ÍText2 Aceptar ; La presentación de los artículos debe ser El valor de compra debe estar entre La fecha de vencimiento debe estar entre el j l 4 /0 7 /0 0 y el j 14/07/00 En este formulario debe dibujar 5 cajas de texto, 1 ProgressBar, 2 DTPickei; 2 botones de comandos 1 Frcime y las etiquetas indicadas. Al ProgressBar asígnele en su propiedad Visible el valor False. 540 G r u p o E d i t o r i a l Megabyte < § ^ 5 CAPÍTULO XII: Programación ABO '‘I I É l P IN STR U C CIO N ES DEL FORMULARIO N e 0 3 Instrucciones del Form_Activate Prívate Sub Form__Activate() 'Valores predeterminados para agregar artículos Textl = " " Text2 = “Producto” Text3 = “Caja” Text4 = “10.00” Text5 = “1000.00" DTPickerl.Value - CDate(“01-01-2001”) DTPicker2.Value - CDate(“31 -12-2001") Labell = “Actualmente hay “ & RS.RecordCount & “ artículos. ¿Cuanto desea agregar?” Textl. Set Focus End Sub Instrucciones del Botón Aceptar Private Sub Command!_Click() Dim dias, NR As Long ‘Si no ingresa la cantidad de artículos sale del Procedimiento If Val(Textl) = 0 Then Exit Sub Commandl .Enabled = False ProgressBarl. Visible = True ProgressBarl .Min = 1 ProgressBarl.Max = Val(Textl) NR = RS.RecordCount dias = DTPicker2. Value - DTPickerl. Value Randomize For X = 1 To Val(Textl) RS.AddNew RSfcodigo = FormatfX + NR, “00000”) RSInombre = Text2 & X + NR RSIpresentacion = Text3 RS.'valorcompra = Int((Val(Text5)-Val(Text4)+1 )* Rnd + Val(Text4)) RS¡vencimiento — DTPickerl .Value + Int((dias -1 + 1) * Rnd + 1) ProgressBarl. Value = X RS. Update Next X ProgressBarl. Visible = False Commandl .Enabled = True ‘Actualiza la consulta RS.Requery Hide End Sub Instrucciones del Botón Cerrar Private Sub Command2_Click() Hide End Sub G r u p o E d i t o r i a l Megabyte 541
  • 273.
    é l iVISUAL BASIC como debe ser... , .$<£ ; FORMULARIO N2 04 (Caxríbia xana Presentación por Otra) S . Cambiar u n a P re sen ta c ió n po i Otra r r n a r x i i S e le cc io n e la P re se n ta ció n A c tu a l | C om bol E scriba la n u e v a p resentación I T extl Cam biar A h o ra Cerrar En este formulario dibuje 2 etiquetas, 1 ComboBox, 1 Frame, y 2 botones de comandos. Al Frame asígnele en su propiedad Visible el Valor False. INSTRUCCIONES DEL FORMULARIO N 2 04 Instrucciones del Form_Activate Prívate Sub Form_Activate() 'Obtiene sólo una presentación de cada grupo RS2,Open "SELECTDistinct Presentación FROM Artículos", DB, adOpenStatic, adLockPessimistic ‘Muestra las presentaciones en el combo RS2. Move First Combo l.C lear Do While Not RS2.EOF Combol.Addltem RS2(0) RS2.MoveNext Loop Combol. List Index = -1 RS2. Cióse End Sub Instrucciones del Combol Prívate Sub Combol_Click() 'Cuando se selecciona una presentación, activa el Frame 1 Frame 1. Visible = Truc Label2 - “Escriba la presentación que quiere cambiar por: ” & Combol Textl = Combo1 Textl.SetFocus End Sub 542 G r u p o E d i t o r i a l Megabyte < |j ||||| CAPÍTULO XII: Programación ADO Instrucciones del Botón Cambiar Ahora Private Sub Commandl_Click() Form4. Enabled = False DB. Execute “UPDATE Artículos SET Presentación = & Textl & WHERE Presentación = & Combol & RS.Requery Form4. Enabled = True Frame ¡.Visible = False Hide End Sub Instrucciones de Textl Private Sub Textl_GotFocus() ‘Selecciona el Texto de Textl para reemplazarlo por el que escribe Textl.SelStart = 0 Textl. Sel Length = Len( Textl) Textl = Textl.SelText End Sub Instrucciones del Botón Cerrar Private Sub Command2_Click() Frame 1. Visible = False Hide End Sub FORMULARIO N 2 05 (Cambiar el Valor de Compra) V a r ia c ió n d e l V a lo r d e C o m p ra In g re s e el m o n to d e V a ria c ió n • p T e x tl L a V a ria c ió n e s ta e n : S o le s C* P o rc e n ta je C In c re m e n ta r D is m in u ir C a m b ia r A h o ra I ....................... C errar I . En este formulario dibuje 1 etiqueta, 1 caja de texto, 2 Frame y dentro de cada uno de ellos 2 botones de opciones y dos botones de comando. G r u p o E d i t o r i a l Megabvte 543
  • 274.
    ^ É ü|¡l!> VISUAL BASIC como debe ser... INSTRUCCIONES DEL FORMULARIO N 2 05 Instrucciones del Form_Activate Prívate Sub Form_Activate() ‘Limpia Textl y desactiva los botones de opciones Textl = "" Optionl = False Option2 = False OptionJ = False Option4 = False Textl.SetFocus End Sub Instrucciones del Procedimiento RealizarCopia Sub RealizaCopiaO Form5 .Enabled = False 'Abre la tabla artículos con todos los campos RS.Open “SELECT * from Artículos”, DB ‘Verifica si hay una copia de los valores anterior EXISTE = False For X - 1 To RS.Fields.Count I f RS(X - l).Name = “ValorAnterior" Then EXISTE = True Next IfN o t EXISTE Then ‘Si no existe el campo ValorAnterior lo crea para adicionar una ‘copia de seguridad de los valores de Compra RS. Cióse DB.Execute ( “ALTER TABLE Artículos ADD COLUMN ValorAnterior Currency") ‘Realiza la copia de seguridad DB.Execute “ UPDATE Artículos SET ValorAnterior = ValorCompra ” Else ‘Sólo realiza la copia de seguridad DB.Execute “UPDATE Artículos SET ValorAnterior = ValorCompra” RS. Cióse End I f End Sub Instrucciones del Botón Cerrar Prívate Sub Command2_Click() Hide End Sub G r u p 5 4 4 o E d it o r ia l Megabyte CAPITULO XII: Programación ADO Instrucciones del Botón Cambiar Ahora Private Sub Command 1 _Click() IfVal(Textl)=0 Then Msg Box “Ingrese el monto de Variación”, 64, “Error” Exit Sub E n d lf RS. Close If Optionl Then If Option3 Then lfM sgBox(“Está Incrementando el Valor de Compra en “ & Textl & “ Soles”, 65, “Confirme la Variación”) = 1 Then RealizaCopia DB.Execute “UPDATEArtículos SETValorCompra- ValorCompra+ VAU"& Textl A E n dlf Elself Option4 Then IfMsgBox( “Está Dismuyendo el Valor de Compra en “ & Textl & Soles ”, 65, “Confirme la Variación ’) = 1 Then RealizaCopia DB.Execute “ UPDATEAi1iculosSETValorCompra= ValorCompra- VAlf" Inil .V E n dlf Else MsgBox “No ha seleccionado el Tipo de Incremento", 64, "Error" Exit Sub E n dlf Elself Optionl Then If Option3 Then IfMsgBox(“Está Incrementando el Valor de Compra en un “ & Textl & 65, “Confirme la Variación’ ) = 1 Then RealizaCopia DB.Execute “UPDATE Artículos SET ValorCompra - ValorCompra t ValorCompra * VAL(“ & Textl & “)/IOO" E n dlf Elself Option4 Then IfMsgBoxt "Está Disminuyendo el Valor de Compra en un “ & Textl & “% ”, 65, 'Confirme la Variación ”) = 1 Then RealizaCopia DB.Execute “UPDATE Artículos SET ValorCompra - ValorCompra ValorCompra * VALI" & Textl & “y ! 00" End If Else MsgBox “No ha seleccionado el Tipo de Incremento", 64, “Error" Exit Sub End if Else MsgBox “No ha indicado la Variación en Soles o Porcentaje”, 64, "Error" Exit Sub End If ‘Abre la tabla artículos con los campos principales RS.Open “SELECTcodigo,nonú)rej)resenlacioii,va¡orc(mipra,vencim¡erüo FROM Articulas ORDER BY nombre", DB, adOpenStatic, adLockOptimistic RS. Re query Form5.Enabled = True Hide End Sub G r u p o E d i t o r i a l Megabyte 5 4 5 4 K B
  • 275.
    '/jtSi&M' VISUAL BASICcomo debe ser.:’. FORMULARIO N e 06 (Borrar Artículos) C am po O perador Valor Li*t2 ; JT e x tl j 0 9 /0 7 /8 8 A c e p tar S ' Borrar los A rtículos q u e cu m p len la c o n d ic ió n Borrar T o d o s los A rtículos En este formulario dibuje 2 ListBox, 2 cajas de texto, 1 DTPicker, 6 botones de comandos y 4 etiquetas. El control DTPicker dibújelo encima del control Textl y asígnele en su propiedad Visible el valor False porque sólo se debe visualizar cuando se seleccione la Fecha de Vencimiento. Al botón Command4 (Borrar Artículos que cumplen la condición) asígnele en su propiedad Enabled el valor False. INSTRUCCIONES DEL FORMULARIO N s 06 Instrucciones del Form_Activate Private Sub Form_Activate() ‘Limpia las cajas de texto Text1 = " " Textl = "" ‘Muestra la fecha del sistema en el DTpicker DTPicker 1. Value - Date ‘Adiciona los nombres de los campos en el Listl List ¡.Clear For X - 1 To RS. Fields. Count L istl.Addltem RS(X - l).Name Next X ‘Adiciona los operadores en el L istl Listl. Clear Listl.Acldltem “ = “ Listl.Addltem “ < “ Listl.Addltem “ > “ Listl.Addltem “ < - “ Listl.Addltem “ > - “ Listl.Addltem “ <> “ Listl.Addltem “ Like “ Listl.Listlndex - 0 Listl. List Index = 0 End Sub 546 G r u p o E d it o r ia l Megabyte CAPÍTULO XII: Programación ADO Instrucciones del L istl Private Sub Listl jClicki) Textl = ‘Si se ha seleccionado el campo Vencimiento muestra el DTPicker tf List¡.Listlndex = 4 Then Text I .Visible = False DTPickerl. Visible = True Else Textl. Visible = True DTPickerl. Visible = False End If End Sub Instrucciones del Textl Private Sub Text I_KeyPress( KeyAscii As Integer) ‘Evita el ingreso de letras cuando se ha seleccionado el ValorCompra / / Listl .Listlndex = 3 Then If (Chr(KeyAscii)< “0 ” Or Chr(KeyAscii)> ”9") And (KeyAscii<>8) Then KeyAscii = 0 Endlf Endlf End Sub Instrucciones del Botón Aceptar Private Sub Command 1 _Click() ‘Agrega la condición fonnada a Tetxt2 tf Listl.Listlndex < 3 Then If List2.Listlndex = 6 Then Text2 = Textl + Listl + List2 + ..... + Textl + Else Text2 = Text2 + Listl + Listl + + Textl + Endlf End ¡f lf List ¡.Listlndex = 3 Then Textl = Textl + Listl + Listl + Textl Endlf lf List ¡.Listlndex = 4 Then Textl = Text2+List¡ + Listl + "CDATE(“‘ & DTPickerl .Value & End ¡f Commandl. Enabled = True Command3. Enabled = True Command4. Enabled = True End Sub Instrucciones del Botón Y Private Sub Conunand2_Click() Text2 = Textl + “ AND “ Commandl. Enabled = False Command3. Enabled = False End Sub Instrucciones del Botón O Prívate Sub Command3_Click() Textl = Text2 + “ OR “ Command2. Enabled = False Command3.Enabled = False End Sub G r u p o E d it o r i a l Megabyte ;■£ 547
  • 276.
    VISUAL BASIC comodebé ser. . . í t i ® ® ! Instrucciones del Botón Borrar los artículos que cumplen la C. Prívate Sub Commcmd4_Click() On Error GoTo control Formó.Enabled = False RP = MsgBox(“Se borraran todos los artículos que cumplen la condición “ + Chr(13) + Text2, 36, CUIDADO”) IfRP = 6 Then ‘Hace la copia en la tabla RESPALDO de los artículos que se borran DB. Execute “INSERT INTO respaldo SELECT codigo, nombre, presentación, valorcompra,vencimiento,#" & Date & "# AS fecha FROM Artículos WHERE “ & Text2 DB.Execute “DELETE FROM Artículos WHERE “ & Text2 RS. Re query En d If Hide : Formó.Enabled = True Exit Sub control: 'Si no existe la tabla RESPALDO la crea con los primeros registros If En: Number = -2147217865 Then DB.Execute “select codigo,nombre,presentación, valorcompra, vencimiento,#” & Date & “# as fecha into respaldo from artículos where “ & Text2 Resume Next Else MsgBox “Verifique las instrucciones o la C. ”,16, ’’Existe un error’’ Exit Sub End If End Sub Instrucciones del Botón Borrar Todos los Artículos. Private Sub Commands_Click() On Error GoTo control RP = MsgBox( “Se borraran todos los artículos ”, 36, “CUIDADO ”) IfRP = ÓThen Formó.Enabled = False DB. Execute “INSERT INTO respaldo SELECT codigo, nombre, presentación, valorcompra, vencimiento,#" & Date & “# AS fecha FROM Artículos" DB.Execute “DELETE FROM Artículos” RS.Requery Formó.Enabled = True : Command4.Enabled = False Hide End If Exit Sub control: If Err.Number = -2147217865 Then DB.Execute “SELECT codigo,nombre,presentacion, valorcompra, vencimiento, # ” & Date & # AS fecha INTO Respaldo FROM Artículos ” Resume Next Else MsgBox “Verifique las instrucciones”, 16, “Existe un error” Exit Sub End If End Sub 548 G r u p o E d i t o r i a l Megabyte CAPÍTULO XII: Programación ADO FORMULARIO N2 07 (Recupera Artículos Borrados) Debe dibujar 2 etique­tas, un ComboBox 4 botones de comandos y 1 MSHFlexGrid. Al Commandl (Ver Todos los borrados) asígnele en su propiedad Enabled el valor False. ■ Vet pen fecha de boirado Vei todos ios bonados I Estos son todos los artículos que ha borrado B ocíalos DefinWvamerte INSTRUCCIONES DEL FORMULARIO N s 07 Instrucciones del Form_Activate. Prívate Sub Form_Activate() On Error GoTo control ‘Muestra los fechas en el com bol en las que borró artículos RS2,Open “SELECTDISTINCTfecha FROM Respaldo”, DB, adOpenStatic, adLockPessimistic RS2.MoveFirst Combo I.Clear Do While Not RS2.EOF Combo I.Addltem RS2(0) RS2.MoveNext Loop Combol .Listlndex = -1 RS2. Cióse MSHFlexGrid 1.Cois = 0 RS2.Open “SELECT * FROM Respaldo", DB Set MSHFlexGridl .DataSource - RS2 RS2. Requerí MSHFlexGridl.FormatStríng - “ Codigo | Nombre Presentación Valor de Compra Vencimiento | Fecha que se borró” RS2.Cióse Exit Sub G r u p o E d i t o r i a l Megabyte^ 549 « O »
  • 277.
    control: If Err.Number= -2147217865 Then MsgBox “No hay artículos borrados e",64, ’ 'No se encontró copia de seguridad Command2.Enabled - False Command3.Enabled = False Hide E n d lf End Sub Instrucciones del Combol Prívate Sub Combol jClick() Muestra los artículos borrados en la fecha que se selecciona Label2 = “Estos son los artículos que ha borrado el día “ & Combol RSLOpen “SELECT*FROMRespaldoWHEREfecht=cdate(‘“&Comhol& “‘)",ÜB Set MSHFlexGridl .DataSource = RS2 RS2.Requery MSHFlexGridl .FormatString = “ Codigo | Nombre | Presentación Valor de Compra Vencimiento | Fecha que se borró “ RS2. Cióse Command 1. Enabled = True End Sub Instrucciones del Botón Ver Todos los Borrados Prívate Sub Commandl_Click() Combol = Label2 = “Estos son todos los artículos que ha borrado ” RS2. Open “SELECT * FROM Respaldo ” , DB Set MSHFlexGridl .DataSource = RS2 RS2.Requery MSHFlexGridl .FormatString - “ Codigo Nombre | Presentación | Valor de Compra Vencimiento | Fecha que se borró “ RS2. Cióse Command!.Enabled = False End Sub Instrucciones del Botón Recuperarlos Prívate Sub Command2_Click() ‘Recupera los artículos « B » 5 5 0 G r u p o E d i t o r i a l Megabyte C A P ÍT U L O XII: P rogram ación A D O ^ ^ m If Combol = “ ” Then DB. Execute “INSERT INTO Artículos SELECT codigo,nombre, presentación, valorcompra, vencimiento,fecha FROM Respaldo ” DB.Execute ( “DROP TABLE Respaldo ") MSHFlexGridl .Rows - 0 Else DB.Execute “INSERT INTO Artículos SELECT codigo,nombre, presentación, valorcompra, vencimiento,fecha FROM Respaldo WHERE fecha = cdate(“‘ & Combol & DB.Executei “DELETE FROM Respaldo WHEREfecha=cdate( ‘“&Combol&"')") End If RS.Re query Hide End Sub Instrucciones del Botón Borrarlos definitivamente Este botón se utiliza cuando se elige la opción Borrar Copia de Seguridad que se encuentra en el Menú Principal Prívate Sub Command3_Click() RP=MsgBox(“EstasegurDdebormrdefmitivamente",36,”Yanopodránicuperarlos’') IfRP = 6 Then DB.Execute “DROP TABLE Respaldo” MSHFlexGridl.Rows = 0 Hide End Sub G r u p o E d i t o r i a l Megabyte 5 5 1
  • 278.
    VI S UAL BASIC S.D C om o d e b e ser...! “Visual Basic, como debe ser...”, es un texto eminentemente práctico, quizás esto sea lo medular que lo hace diferente de otros libros. Aquí encontrarás programas desarrollados y ejercicios propuestos que te ayudarán a conjugar armoniosamente la teoría y la práctica. Es, pues, una eficiente guía didáctica para crear aplicaciones que te serán útiles en la realización de tus diversas tareas como programador en tu centro de estudio y trabajo. Este libro esta diseñado de tal manera que sirve de apoyo y guía de autoaprendizaje para estudiantes de programación de computadoras, porque el autor cuenta con una amplia experiencia en la docencia de este curso. Además cuenta con aplicaciones y componentes como: Controles ActiveX, Creación de archivos de ayuda, Manejo de impresoras, Base de datos, Instrucciones SQL, Programación ADO, Uso de DataEnvironment y DataReport $ tfisüfll % r I j ,¿4 P ^ RÚtiñ(foTorncb l889HOf c^208?iCercadoJdé}Lim aW relefax: [332-4110 Kw w w .editorialm eqabvte:conrA É ventas@ ed¡torialm eqabvté.com