Вы находитесь на странице: 1из 71

www.monografias.

com

Visual Basic
Introduccin al Desarrollo de Aplicaciones con Visual Basic 1. 2. 3. ". $. '. (. Introduccin al Desarrollo de Aplicaciones con Visual Basic Manejo de Formularios Tipos de Datos, Constantes Varia!les #structuras de Control Controles #st%ndar Adicionales &rocedimientos Depuracin, Validacin de Datos Manipulacin de #rrores Controles #st%ndar A)an*ados Acceso a Datos

&arte 1+ Introduccin al Desarrollo de Aplicaciones con Visual Basic ,-u. es Visual Basic/ Visual Basic es un ambiente grfico de desarrollo de aplicaciones para el sistema operativo Microsoft Windows. Las aplicaciones creadas con Visual Basic estn basadas en objetos y son manejadas por eventos. Visual Basic se deriva del lenguaje Basic, el cual es un lenguaje de programacin estructurado. in embargo, Visual Basic emplea un modelo de programacin manejada por eventos. 0as Aplicaciones &rocedurales !n las aplicaciones tradicionales o procedurales, es la aplicacin "uien controla "ue porciones de cdigo se ejecuta, y la secuencia en "ue este se ejecuta. La ejecucin de la aplicacin se inicia con la primera l#nea de cdigo, y sigue una ruta predefinida a trav$s de la aplicacin, llamando procedimientos seg%n sea necesario. 0as Aplicaciones Manejadas por #)entos !n las aplicaciones manejadas por eventos, la ejecucin no sigue una ruta predefinida. !n ve& de esto, se ejecutan diferentes secciones de cdigo en respuesta a eventos. Los eventos se desencadenan por acciones del usuario, por mensajes del sistema o de otras aplicaciones. La secuencia de eventos determina la secuencia en "ue el cdigo se ejecuta. !s por esto "ue la ruta "ue sigue el cdigo de la aplicacin es diferente cada ve& "ue se ejecuta el programa. 'na parte esencial de la programacin manejada por eventos es el escribir cdigo "ue responda a los posibles eventos "ue pueden ocurrir en una aplicacin. Visual Basic facilita la implementacin del modelo de programacin manejada por eventos. ,-u. es un o!jeto/ (ada formulario )ventana*, men% o control "ue se crea con Visual Basic es un mdulo autocontenido llamado o!jeto. Los blo"ues bsicos de construccin de una aplicacin con Visual Basic son los objetos. (ada objeto tiene un conjunto de caracter#sticas y un comportamiento definido ) propiedades, m.todos e)entos1 "ue lo diferencian de otros tipos de objeto. !n otras palabras, un objeto formulario +a sido dise,ado para cumplir determinada funcin en una aplicacin, y no es lo mismo "ue un objeto men%. &ropiedades !l conjunto de datos "ue describen las caracter#sticas de un objeto se le conoce como sus propiedades. -ara un formulario tenemos por ejemplo, las propiedades Bac2Color )color de fondo*, 3ei45t )altura*. .lgunas propiedades no solo determinan el aspecto "ue tiene el objeto, sino "ue adems pueden determinar su comportamiento/ por ejemplo, la propiedad Ma6Button establece si el formulario tendr o no el botn Maximizar. La presencia o ausencia de este botn determinar si el formulario se puede o no ma0imi&ar.

M.todos Los m$todos son un conjunto de procedimientos "ue permiten "ue un objeto ejecute una accin o tarea sobre s# mismo. -or ejemplo, para un formulario tenemos el m$todo 3ide "ue +ar "ue el formulario se oculte/ o el m$todo 75o8 "ue +ar "ue el formulario se vuelva a mostrar. #)entos 'n e)ento es una accin "ue es reconocida por el objeto. 'n evento ocurre )se dispara* como resultado de la interaccin del usuario con el objeto. 1ambi$n puede dispararse debido a la ejecucin de cdigo )sentencias* o como resultado de la interaccin de otro objeto con el objeto de poseedor del evento. -ara un formulario tenemos por ejemplo/ el evento 0oad "ue se dispara cuando se carga el formulario/ o el evento Clic2 para un botn de comando, se dispara cuando se +ace clic sobre $l. ,-u. papel cumplen las propiedades, m.todos e)entos/ 1oda aplicacin necesita una interfa& de usuario, la parte visual a trav$s de la cual el usuario interact%a con la aplicacin. Los blo"ues bsicos de construccin de una interfa& de usuario son los formularios y los controles. Visual Basic utili&a t$cnicas de pro4ramacin )isual para dise,ar las aplicaciones.

-ara dise,ar esta ventana )2ormulario*, del conjunto de objetos de Visual Basic seleccionamos un objeto tipo Formulario )2orm*. Luego a la propiedad 9om!re )3ame* le asignamos el valor :rm#ntrada; a la propiedad T<tulo le asignamos el valor Bien)enidos a =estin 7istemas. 4entro del formulario se colocan los controles. -ara "ue el usuario pueda ingresar un dato )por ejemplo, la contrase,a* colocamos en la ventana un control tipo Cuadro de Te6to )1e0tBo0*/ a continuacin establecemos su propiedad 9om!re en t6tContrase>a, y su propiedad &ass8ordC5ar es un 5 )asterisco* para "ue el dato ingresado sea reempla&ado por asteriscos slo en la pantalla, para "ue no se pueda visuali&ar. -ara obtener el botn Ingresar seleccionamos un control tipo Botn de Comando )(ommandButton*, y lo colocamos en la ventana. Luego cambiamos sus propiedades/ a la propiedad 9om!re le asignamos cmdIn4resar, y a la propiedad T<tulo le asignamos In4resar. e desea "ue cuando el usuario +aga clic en el botn 0impiar, se borre cual"uier dato "ue el usuario +aya ingresado en los Cuadros de Te6to, y "ue el punto de insercin se ubi"ue en el cuadro t6t?suario. -ara "ue esto ocurra debemos programar el evento 3acer@Clic2 del botn de comando cmd0impiar. !l evento debe ejecutar dos sentenciar para cambiar la propiedad Te6to de cada uno de los cuadros de te0to, y luego invocar al m$todo #sta!lecer#n:oAueB1 del cuadro de te0to t6t?suario. #l #ntorno Inte4rado de Desarrollo BID#1

(uando se inicia Visual Basic, se crea un proyecto nuevo con un formulario. !l 64! de Visual Basic consta de los siguientes elementos7 Barra de Mens -resenta los comandos "ue se usan para trabajar con Visual Basic. .dems de los men%s estndar Arc5i)o, #dicin, Ver, Ventana A uda, contiene otros men%s para tener acceso a funciones espec#ficas de programacin, como &ro ecto, Formato o Depuracin. Barra de Herramientas -ermite un acceso directo )solo un clic* a muc+as de las operaciones ms frecuentes utili&adas durante el desarrollo de aplicaciones. Cuadro de Herramientas (ontiene todos los objetos y controles "ue se pueden a,adir a los formularios para crear aplicaciones. Diseador de Formularios 2unciona como una ventana en la "ue se puede personali&ar el dise,o de la interfa& de usuario )ventana* de una aplicacin. Explorador de Proyectos Lista de los arc+ivos )formularios, mdulos, etc.* del proyecto actual. 'n &ro ecto es una coleccin de arc+ivos "ue utili&a para construir una aplicacin. entana de Propiedades Lista los valores de las propiedades del formulario o control seleccionado "ue pueden ser modificados durante el dise,o del formulario o control. entana de C!digo 2unciona como un editor para escribir el cdigo )sentencias* de la aplicacin. C!tencin de A uda del 7istema Visual Basic proporciona una variedad de recursos para ayudarle a encontrar la informacin "ue necesite cuando se encuentre trabajando dentro del entorno de desarrollo. "yuda en l#nea Visual Basic proporciona una amplia ayuda en l#nea. !l arc+ivo de .yuda contiene muc+o cdigo de ejemplo "ue se puede copiar directamente a una aplicacin.

La ayuda de Visual Basic es sensible al conte0to. -ara emplear la ayuda sensible al conte0to en la ventana de cdigo, escriba la palabra para la cual desea informacin, y luego presione F1. -or ejemplo, si desea informacin acerca de la sentencia Cpen, escriba Cpen y presione 28. $i%ros en Pantalla .dems de la ayuda sensible al conte0to, el (49:;M de Visual Basic incluye una versin en l#nea de la documentacin impresa para Visual Basic. -ara acceder a los Libros en -antalla, +aga clic en 0i!ros en &antalla dentro del men% A uda de Visual Basic. $a entana de C!digo La ventana o editor de cdigo de Visual Basic proporciona de manera automtica informacin relevante a medida "ue se ingresa cdigo. -or ejemplo, si se escribe el nombre de un control, seguido de un punto, las propiedades y m$todos para ese control sern mostrados automticamente en un cuadro de lista. Luego se puede escoger la propiedad o m$todo deseado para completar la sentencia. (uando se ingresa el nombre de una funcin en la ventana de cdigo, Visual Basic automticamente proporciona el formato o sinta0is de la funcin. ,Cmo se a>aden controles al :ormulario/ -ara a,adir controles a un formulario tenemos dos m$todos7 M&todo ' 1eniendo el cuadro de <erramientas o un 2ormulario visible , +aga doble clic en el control "ue desea a,adir en el Cuadro de Herramientas( los controles se ubican en el centro del formulario, uno encima de otro, luego +ay "ue moverlos a la posicin deseada dentro del formulario. M&todo ) 8. <aga clic sobre el control en el (uadro de <erramientas. =. 'bi"ue el puntero del Mouse )una cru&* sobre el formulario en la es"uina superior i&"uierda donde desea colocar el control. >. :ealice un clic sostenido mientras arrastra el puntero a la es"uina superior derec+a donde colocar el control. ?. uelte el botn del Mouse. !stos cuatro pasos se repiten con cada control "ue desea a,adir al formulario. Terminolo4<a de Visual Basic (onforme trabaje con Visual Basic, necesitar estar familiari&ado con los siguientes t$rminos7 T.rmino 1iempo de dise,o 1iempo de ejecucin 2ormulario De:inicin !s el momento en el "ue se construye la aplicacin. !s el momento en el cual ejecutamos e interactuamos con la aplicacin como lo +ar#a el usuario. 'n formulario sirve como una ventana "ue puede personali&ar como la interfa& de su aplicacin o como un cuadro de dilogo "ue usa para obtener informacin del usuario. 'n formulario puede e0istir individualmente o puede servir como un documento dentro de una interfa& de documento m%ltiple )M46* De:inicin :epresentacin grfica de objetos tales como botones, cuadros de lista, cuadros de edicin, etc., con los "ue el usuario interact%a para proporcionar informacin a la aplicacin. 'n t$rmino general usado para describir todos los formularios y controles "ue forman parte de la aplicacin. Los valores de un objeto, tales como tama,o, t#tulo, color, etc. Las acciones "ue un objeto puede reali&ar sobre s# mismo.

T.rmino (ontroles

;bjetos -ropiedades M$todos

!ventos -rogramacin controlada por eventos

on acciones reconocidas por un formulario o control. Los eventos ocurren a medida "ue el usuario interact%a con los objetos de la aplicacin. (uando un programa es controlado por e*entos( usted escribe cdigo "ue se ejecuta en respuesta a eventos invocados por el usuario. 4ifiere de la programaci!n procedural( en la cual el programa comien&a en la primera l#nea de cdigo y sigue un flujo definido llamando procedimientos cuando es necesario. La programacin controlada por eventos es la esencia de las interfaces grficas de usuario/ el usuario acciona y el cdigo responde.

,-u. es un pro ecto/ (uando desarrolla una aplicacin, Visual Basic crea un arc+ivo especial llamado Arc5i)o de &ro ecto para administrar todos los dems arc+ivos de la aplicacin. !l Arc5i)o de &ro ecto es simplemente una lista de todos los arc+ivos y objetos asociados con el proyecto, as# como informacin sobre las opciones del entorno. !sta informacin se actuali&a cada ve& "ue se guarda el proyecto. 1odos los arc+ivos y objetos tambi$n se pueden compartir con otros proyectos. 'n proyecto est compuesto por los siguientes arc+ivos7 Tipo de arc5i)o -royecto 2ormulario Mdulo estndar #6tensin .vbp .frm .fr0 .bas Descripcin :eali&a el seguimiento de todos los componentes de la aplicacin. 6ncluye el formulario, los objetos sobre el formulario y el cdigo "ue se ejecuta cuando ocurre un evento en el formulario. (ontiene procedimientos 7u! y Function "ue pueden ser invocados por cual"uier formulario u objeto sobre el formulario. )opcional* Descripcin (ontroles adicionales a los controles estndar proporcionados por Microsoft u otras empresas. )opcional* (ontiene la definicin de clase, m$todos y propiedades de un nuevo tipo de objeto. )opcional* (ontiene informacin binaria usada por la aplicacin. on usados generalmente cuando se crean programas para m%ltiples lenguajes. )opcional*

Tipo de arc5i)o (ontroles -ersonali&ados Mdulo de clase :ecursos

#6tensin .oc0 .cls .res

(uando +a completado todos los arc+ivos del proyecto puede convertir el proyecto en un arc+ivo ejecutable ).e0e*. Nota: Con las ediciones Pro+esional y Empresarial de isual Basic tam%i&n puede crear otro tipo de arc,i*os e-ecuta%les, como arc,i*os .ocx y .dll. &asos para crear una aplicacin !l proceso de creacin de una aplicacin Visual Basic puede descomponer en una serie de siete pasos. 8. (rear la interfa& de usuario 'sted crea una interfa& dibujando controles y objetos sobre un formulario. . fin de +acer "ue su cdigo sea ms fcil de leer y depurar, debe luego asignar nombres a los objetos usando convenciones de nombres estndar. =. !stablecer las propiedades de los objetos de la interfa& Luego de a,adir objetos al formulario, se establece las propiedades de los objetos. -uede establecer valores iniciales ya sea usando la ventana de propiedades en tiempo de dise,o o escribiendo cdigo para modificar las propiedades en tiempo de ejecucin.

>. !scribir cdigo para los eventos Luego de establecer las propiedades iniciales para el formulario y cada objeto, a,ada el cdigo "ue se ejecutar en respuesta a los eventos. Los eventos ocurren cuando diferentes acciones ocurren sobre un control u objeto. -or ejemplo, clic es un evento "ue puede ocurrir para un botn de comando. ?. @uardar el proyecto (uando crea el proyecto, aseg%rese de darle un nombre usando el comando =uardar &ro ecto como del men% Arc5i)o. @uarde su proyecto frecuentemente conforme a,ada cdigo. .l guardar un proyecto se guardan cada formulario y mdulo de cdigo en el proyecto. A. -robar y depurar la aplicacin (onforme a,ada cdigo al proyecto, puede usar el comando Iniciar en la Barra de <erramientas para ejecutar su aplicacin y ver su comportamiento. 1ambi$n puede usar las +erramientas de depuracin para verificar errores y modificar cdigo. B. (rear un arc+ivo ejecutable .l completar su proyecto, crear un arc+ivo ejecutable usando el comando =enerar D666666.e6e del men% Arc5i)o. C. (rear una aplicacin de instalacin 4ebido a "ue su arc+ivo ejecutable depende de otros arc+ivos, tales como el arc+ivo en tiempo de ejecucin de Visual Basic )VbrunADD>=.dll*, algunos arc+ivos ;(E y arc+ivos 4LL adicionales re"ueridos por la aplicacin o por los controles .ctiveE. Con)enciones para los nom!res de los o!jetos Los objetos deben llevar nombres con un prefijo co+erente "ue facilite la identificacin del tipo de objeto. . continuacin se ofrece una lista de convenciones recomendadas para algunos de los objetos permitidos poro Visual Basic.

&re:ijos su4eridos para menEs Las aplicaciones suelen usar muc+os controles de men%, lo "ue +ace %til tener un conjunto %nico de convenciones de nombres para estos controles. Los prefijos de controles de men%s se deben e0tender ms all de la eti"ueta inicial FmnuG, agregando un prefijo adicional para cada nivel de anidamiento, con el t#tulo del men% final en la %ltima posicin de cada nombre. !n la tabla siguiente +ay algunos ejemplos. 7ecuencia del t<tulo del menE .rc+ivo .brir .rc+ivo !nviar correo 7ecuencia del t<tulo del menE .rc+ivo !nviar fa0 2ormato (arcter .yuda (ontenido 9om!re del controlador del menE mnu.rc+ivador.brir mnu.rc+ivo!nviar(orreo 9om!re del controlador del menE mnu.rc+ivo!nviar2a0 mnu2ormato(arcter mnu.yuda(ontenido

(uando se usa esta convencin de nombres, todos los miembros de un grupo de men%s determinado se muestran uno junto a otro en la ventana -ropiedades de Visual Basic. .dems, los nombres del control de men% documentan claramente los elementos del men% a los "ue estn adjuntos.

Formularios

!l formulario es el principal medio de comunicacin entre el usuario y la aplicacin. Los usuarios interact%an con los controles sobre el formulario para ingresarle datos y obtener resultados. Propiedades BacH(olor (olor de fondo del formulario. Border tyle !stilo del borde del formulario. (aption 1e0to en la barra de t#tulo del formulario. (ontrolBo0 1rueI2alse. 4etermina si tiene o no el cuadro de control. !nabled 1rueI2alse. 4etermina si est +abilitado para responder a las acciones del usuario. 6con 6cono "ue se muestra cuando el formulario est minimi&ado. Left y 1op 'bicacin del formulario. Ma0Button 1rueI2alse. 4etermina si tiene o no el botn Maximizar. MinButton 1rueI2alse. 4etermina si tiene o no el botn Minimizar. 3ame 3ombre del formulario. Window tate !stado inicial del formulario )normal, ma0imi&ado o minimi&ado* E*entos .ctivate ;curre cuando el formulario se convierte en la ventana activa. (licH ;curre cuando +ace clic sobre el formulario. 4eactivate ;curre cuando el formulario deja de ser la ventana activa. Load ;curre cuando se carga un formulario. 'nload ;curre cuando un formulario est a punto de descargarse. M&todos <ide ;culta el formulario. :efres+ .ctuali&a el contenido del formulario. et2ocus Le entrega el enfo"ue al formulario. +ow <ace visible el formulario. Controles B%sicos

(on los controles, los usuarios pueden operar y obtener los resultados de una aplicacin. -uede a,adir controles a un formulario seleccionando la +erramienta adecuada del Cuadro de 3erramientas. !ntre los controles ms comunes a utili&ar en una aplicacin tenemos7 !ti"ueta )Label*, (uadro de 1e0to )1e0tBo0* y Botn de (omando )(ommandButton*.

(ontrol !ti"ueta )Label* e utili&a para mostrar te0to "ue el usuario no puede modificar. @eneralmente para identificar otros controles en el formulario o para mostrar instrucciones al usuario. Propiedades .lignment .lineacin del te0to dentro del control. .uto i&e 1rueI2alse. 4etermina si el tama,o del control se ajusta automticamente al te0to "ue contiene. (aption 1e0to "ue muestra el control. 3ame 3ombre del control. 2ont !stablece la fuente, estilo y tama,o para el te0to del control.

(ontrol (uadro de 1e0to )1e0tbo0* e utili&a para "ue el usuario le proporcione datos a la aplicacin o para "ue la aplicacin le devuelva la informacin al usuario. !l te0to "ue se muestra en el control puede ser cambiado por el usuario. Propiedades !nabled 1rueI2alse. !stablece un valor "ue determina si el control puede responder a eventos generados por el usuario. 2ont !stablece la fuentes, estilo y tama,o para el te0to del control. LocHed 1rueI2alse. 4etermina si es posible modificar el te0to en el control. Ma0Lengt+ !stablece la longitud m0ima permitida para el te0to en el control. MultiLine !stablece si el control puede aceptar m%ltiples l#neas de te0to. 3ame 3ombre del control. -assword(+ar (arcter utili&ado para ocultar el te0to "ue realmente contiene el control. 1e0t 1e0to "ue realmente contiene y muestra el control. Visible !stablece si el control ser visible para el usuario. E*entos (+ange ;curre cuando cambia el te0to "ue contiene el control. @ot2ocus ;curre cuando el control recibe el enfo"ue. Jey4own ;curre cuando el usuario presiona una tecla mientras el control tiene el enfo"ue. Lost2ocus ;curre cuando el control pierde el enfo"ue. M&todos :efres+ .ctuali&a el te0to del control.
9

et2ocus

Mueve el enfo"ue al control.

(ontrol Botn de (omando )(ommandbutton* -ermite "ue la aplicacin inicie, interrumpa o termine un proceso. Propiedades (ancel (aption 4efault 2ont 3ame Visible E*entos (licH M&todos et2ocus 1rueI2alse. !stablece si el botn se comportar como el botn cancelar en el formulario y se invocar su evento Clic2 cada ve& "ue se presione la tecla #7C. !stablece el te0to "ue muestra el botn. 1rueI2alse. !stablece si el botn se comportar como el botn predeterminado en el formulario. !stablece la fuente, estilo y tama,o para el te0to del control. 3ombre del botn. 1rueI2alse. !stablece si el botn ser visible para el usuario. ;curre cuando se +ace clic sobre el botn. Mueve el enfo"ue al botn.

#sta!leciendo &ropiedades .l dise,ar la interfase de usuario de una aplicacin Visual Basic, se deben establecer la propiedades para los controles )objetos* creados. Esta%leciendo Propiedades en .iempo de Diseo .lgunas propiedades pueden ser establecidas en tiempo de dise,o. -ara establecer estas propiedades se emplea la ventana de propiedades. -ara acceder a la ventana de propiedades, oprima en botn secundario del ratn sobre un objeto, y luego +aga clic en &ropiedades. 1ambi$n se puede obtener el mismo resultado seleccionado el objeto y luego presionando F". i selecciona varios objetos a la ve& y accede a la ventana de propiedades, slo se mostrarn las propiedades "ue son comunes para todos los controles seleccionados. (ual"uier cambio "ue se +aga a una propiedad ser aplicada a todos los controles. Esta%leciendo Propiedades en .iempo de E-ecuci!n !n tiempo de ejecucin, se puede escribir cdigo para establecer u obtener el valor de una propiedad. La siguiente l#nea de cdigo establece a negrita la fuente de un cuadro de te0to llamado t0t4ata. t0t4ata.2ont.Bold K 1rue L !stablece el te0to a negrita !ste cdigo establece la propiedad Te6t del cuadro de te0to t0t4ata t0t4ata.1e0t K M<ola mundoM L!stablece el valor del te0to i se omite el nombre de la propiedad, se establece la propiedad predeterminada del control. La propiedad predeterminada de un cuadro de te0to es la propiedad Te6t. La propiedad predeterminada de una eti"ueta es la propiedad Caption. Las siguientes l#neas de cdigo establecen las propiedades predeterminadas te0t y caption de un cuadro de te0to y de una eti"ueta. t0t4ata K M e establece la propiedad 1e0t del cuadro de te0toM lbl4ata K M e establece la propiedad (aption de la eti"uetaM /%teniendo Propiedades en .iempo de E-ecuci!n -uede emplear el siguiente cdigo para obtener el valor de una propiedad en tiempo de ejecucin. 4im s3ombre as tring s3ombre K t0t3ame.1e0t

10

&rocedimientos de #)ento Visual Basic invoca automticamente procedimientos de evento en respuesta a acciones del teclado, del ratn o del sistema. -or ejemplo, los botones de comando tienen un procedimiento de evento (licH. !l cdigo "ue se escriba en el procedimiento de evento (licH es ejecutado cuando el usuario +aga clic en un botn de comando. -ara abrir la ventana de cdigo, +aga doble clic en el control o formulario, +aga clic en la orden Cdi4o del men% Ver. (ada control tiene un conjunto fijo de procedimientos de evento. Los procedimientos de evento para cada control son mostrados en un cuadro de lista despegable en la ventana de cdigo. !l siguiente cdigo muestra el procedimiento de evento (licH para un botn de comando llamado cmd;J. -rivate ub cmd;JN(licH)* MsgBo0 M<olaM !nd ub Crden de Ta!ulacion de los Controles !l orden de ta!ulacin es el orden en "ue un usuario se mueve de un control a otro pulsando la tecla 1ab. -or omisin, el orden de tabulacin es igual al orden en "ue se +an colocado los controles en el formulario. -ara cambiar el orden de tabulacin de los controles de un formulario, estable&ca el valor de la propiedad Ta!Inde6 de cada control. !l valor de esta propiedad va desde D +asta n98, siendo n el n%mero de controles "ue tiene el formulario. 0uitar un control del orden de ta%ulaci!n 3ormalmente, presionando la tecla 1ab en tiempo de ejecucin pasamos de un control a otro en el orden de tabulacin establecido. -odemos "uitar un control del orden de tabulacin si establecemos su propiedad Ta!7top en False. 'n control cuya propiedad Ta!7top se +a establecido en False sigue manteniendo su posicin en el orden de tabulacin actual, aun"ue el control es saltado al ir de un control a otro con la tecla 1ab. Nota: $os controles 1ue no pueden o%tener en+o1ue( al igual 1ue los controles desacti*ados o in*isi%les( no tienen la propiedad TabIndex y no est2n incluidos en el orden de ta%ulaci!n. Cuando el usuario presiona .a%( estos controles son ignorados. Tecla de Acceso Fapido a un Control i el control tiene la propiedad Caption, se le puede asignar una tecla de acceso rpido para seleccionar el control y de esta manera el control recibir el enfo"ue cada ve& "ue se oprima A0T G TecladeAcceso. -ara especificar la tecla de acceso rpido debe resaltar un carcter de la cadena en la propiedad Caption colocando delante de este el s#mbolo FOG . -or ejemplo si el valor de la propiedad Caption es la cadena ?suario, y se desea definir la tecla s como la de acceso rpido, deber establecer la propiedad Caption de la siguiente manera7 ?Hsuario. !l te0to del control se ver as# ?suario. .lgunos controles, tales como el control Cuadro de Te6to, no tiene la propiedad Caption. -ara crear una tecla de acceso para esos controles7 8. (olo"ue un control #tiAueta cerca de otro control. =. !stable&ca la propiedad Caption del control #tiAueta para contener la tecla de acceso apropiada. >. !stable&ca para el control #tiAueta un valor de orden de tabulacin menor en una unidad "ue el de otro control. (uando pulse A0T G TecladeAcceso del control #tiAueta, el enfo"ue se mover +acia el otro control debido a "ue el control #tiAueta no puede recibir el enfo"ue. &arte 2+ Manejo de Formularios Mdulos de Formulario (ada formulario en su aplicacin tiene un mdulo de formulario asociado, estos son guardados con una e0tensin de arc+ivo 2:M y contienen7 Los valores de las propiedades para el formulario y sus controles. 4eclaracin de variables en el mbito del formulario. -rocedimientos de evento y procedimientos generales en el mbito del formulario. Nota: $as descripciones gr2+icas de un +ormulario y los controles so%re el +ormulario son almacenados en +ormato %inario en un arc,i*o con extensi!n F34.

11

Mdulos #st%ndar Los mdulos estndar pueden contener cdigo "ue es com%n a varios formularios en su aplicacin. !ste cdigo es por omisin p%blico, lo cual significa "ue fcilmente compartido con otros mdulos de cdigo, tales como un mdulo de formulario. !stos mdulos contienen declaraciones de procedimientos, tipos y variables. 3o pueden almacenar procedimientos de evento por "ue no contienen objetos. 0a Ventana de Cdi4o C!digo es un t$rmino general para todas las sentencias Visual Basic "ue usted escribe en una aplicacin7 procedimientos de evento y procedimientos generales. !l cdigo en Visual Basic se escribe en la ventana de (digo. !l editor de te0to es solo un editor . (66 con colores para diferenciar las palabras claves en el cdigo "ue escribe. La entana de C!digo se usa para escribir, mostrar y editar el cdigo de su aplicacin. -uede abrir una ventana de cdigo por cada mdulo de su aplicacin, de modo "ue puede fcilmente copiar y pegar entre ellos.

La Ventana de Cdigo contiene7 El Cuadro $ista de /%-etos Muestra el nombre del objeto seleccionado. <aga clic en la flec+a a la derec+a del cuadro ;bjeto para mostrar una lista de todos los objetos asociados con el formulario. El Cuadro $ista de E*entos Muestra todos los eventos reconocidos para el formulario o control mostrado en el cuadro ;bjeto. (uando seleccionamos un evento, en la ventana de cdigo se muestra el procedimiento de evento asociado con ese evento. $a Barra de Di*isi!n 4esde el men% entana puede ejecutar el comando Di*idir para dividir la ventana de cdigo en dos partes, cada una de las cuales se despla&a separadamente. -uede entonces ver diferentes partes de su cdigo al mismo tiempo. La informacin "ue aparece en el cuadro ;bjeto y -rocedimiento se refiere al cdigo en la parte "ue tiene el enfo"ue. !l mismo comando utili&ado para dividir la ventana puede utili&arlo para cerrar una de sus partes o tambi$n lo puede +acer arrastrando la barra de divisin +acia la parte superior o inferior de la ventana. El Bot!n er Procedimiento !stablece "ue en la ventana de cdigo se edite un procedimiento a la ve&. El Bot!n er M!dulo Completo !stablece "ue en la ventana de cdigo se tenga acceso a todos los procedimientos, separados por una l#nea separadora uno de otro. #ditando Cdi4o 'se las caracter#sticas de edicin de Visual Basic para "ue su cdigo sea ms fcil de leer.

12

5angr#a 'se la sangr#a para diferenciar partes de su cdigo, tales como estructuras repetitivas y condicionales. -ara aplicar sangr#a a una seccin de sentencias de un cdigo use la tecla Ta! o el comando Aplicar san4r<a del men% #dicin. e forma similar, 75i:t P Ta! o el comando Anular san4r<a del men% #dicin "uitar una sangr#a a las l#neas seleccionadas. Veamos el siguiente ejemplo7

Car2cter de Continuaci!n de $#nea !l carcter subrayado )N* es el carcter de continuacin de l#nea, y se usa para dividir una sentencia en m%ltiples l#neas. !sto +ace "ue la sentencia sea ms fcil de leer por"ue est contenida totalmente dentro de la ventana de cdigo en lugar de e0tenderse mas all de sus l#mites. !l carcter de continuacin de l#nea se coloca luego de un espacio de la sentencia, como se muestra en el siguiente ejemplo7 MsgBo0 MLa clave ingresada no es vlidaM, N vb;J;nly P vb!0clamation, N MMensajeM Comentarios !l a,adir documentacin y comentarios a su cdigo permite comprender mejor lo "ue +ace el cdigo. !sto tambi$n ayuda a comprender el cdigo si necesita volver a revisarlo en alguna fec+a posterior. 'n comentario se inicia con el carcter apstrofe )Q*, de modo "ue todo el te0to "ue contin%e a este carcter ser ignorado en la ejecucin de la aplicacin. Veamos el siguiente ejemplo7

Cuadro de Mensaje de #ntrada 'na de las formas ms simples de obtener informacin para y desde el usuario es utili&ando las funciones Ma4Bo6 e InpuBo6 respectivamente. Funci!n MsgBox67 Los cuadros de mensaje ofrecen un modo simple y rpido de consultar a los usuarios por informacin simple o para permitirles tomar decisiones sobre el camino "ue su programa debe tomar. -uede usar esta funcin para mostrar diferentes tipos de mensaje y botones con los cuales el usuario da una respuesta.

13

Formato MsgBo0) prompt R, buttonsS R, title S R, +elpfile, conte0tS * !L formato de la funcin MsgBo0 consta de los siguientes argumentos7 Parte -rompt Descripcin :e"uerido. !0presin de cadena "ue representa el mensaje en el cuadro de dilogo. La longitud m0ima de prompt es de apro0imadamente 8D=? de caracteres, seg%n el anc+o de los caracteres utili&ados. i prompt consta de ms de una l#nea, puede separarlos utili&ando un carcter de retorno de carro )(+r)8>* * o un carcter de avance de l#nea )(+r)8D* *, o una combinacin de caracteres de retorno de carro 9 avance de l#nea )(+r)8> y (+r)8D* * entre cada l#nea y la siguiente. ;pcional. !0presin num$rica "ue corresponde a la suma de los valores "ue especifican el n%mero y el tipo de los botones "ue se pretenden mostrar, el estilo de icono "ue se va a utili&ar, la identidad del botn predeterminado y la modalidad del cuadro de mensajes. i se omite este argumento, el valor predeterminado para buttons es D. ;pcional. !0presin de cadena "ue se muestra en la barra de t#tulo del cuadro de dilogo. i se omite title, en la barra de t#tulo se coloca el nombre de la aplicacin. ;pcional. !0presin de cadena "ue identifica el arc+ivo de .yuda "ue se utili&a para proporcionar ayuda interactiva en el cuadro de dilogo. i se especifica +elpfile, tambi$n se debe especificar conte0t. ;pcional. !0presin num$rica "ue es igual al n%mero de conte0to de .yuda asignado por el autor al tema de .yuda correspondiente. i se especifica conte0t, tambi$n se debe especificar +elpfile.

Buttons

1itle <elpfile (onte0t

Valores !l argumento buttons puede asumir los siguientes valores7

!l primer grupo de valores )D a A* describe el n%mero y el tipo de los botones mostrados en el cuadro de dilogo/ el segundo grupo )8B, >=, ?T, B?* describe el estilo del icono, el tercer grupo )D, =AB, A8=, CBT* determina el botn predeterminado y el cuarto grupo )D, ?DUB* determina la modalidad del cuadro

14

de mensajes. (uando se suman n%meros para obtener el valor final del argumento buttons, se utili&a solamente un n%mero de cada grupo. Nota8 Estas constantes las especi+ica isual Basic. Por tanto( el nom%re de las mismas puede utilizarse en cual1uier lugar del c!digo en *ez de sus *alores reales. Valores de)ueltos

Nota: 5i desea omitir algn argumento( de%e incluir el delimitador de coma correspondiente o utilizar argumentos con nom%re. #jemplos

Funci!n InpuBox67

La funcin 6nputBo0 muestra un mensaje en un cuadro de dilogo, espera "ue el usuario escriba un te0to o +aga clic en un botn y devuelve un tipo tring con el contenido del cuadro de te0to.

15

Formato 6nputBo0) prompt R, titleS R, defaultS R, 0posS R,yposS R, +elpfile, conte0tS * !l formato de la funcin 6npuBo0 consta de los siguientes argumentos con nombre7 Parte -rompt Descripcin :e"uerido. !0presin de cadena "ue se muestra como mensaje en el cuadro de dilogo. La longitud m0ima de prompt es de apro0imadamente de 8D=? caracteres, seg%n el anc+o de los caracteres utili&ados. i prompt consta de ms de una l#nea, puede separarlos utili&ando un carcter de retorno de carro )(+r)8>**, un carcter de avancede l#nea )(+r)8D** o una combinacin de los caracteres de retorno de carro V avance de l#nea )(+r)8>* y )(+r)8D** entre cada l#nea y la siguiente. ;pcional. !0presin de cadena "ue se muestra en la barra de t#tulo del cuadro de dilogo. i omite title, en la barra de t#tulo se coloca el nombre de la aplicacin. ;pcional. !0presin de cadena "ue se muestra en el cuadro de te0to como respuesta predeterminada. i omite default, se muestra el cuadro de te0to vac#o. ;pcional. !0presin num$rica "ue especifica, la distancia en sentido +ori&ontal entre el borde i&"uierdo del cuadro de dilogo y el borde i&"uierdo de la pantalla. i se omite 0pos, el cuadro de dilogo se centra +ori&ontalmente. ;pcional. !0presin num$rica "ue especifica, la distancia en sentido +ori&ontal entre el borde i&"uierdo del cuadro de dilogo y el borde i&"uierdo de la pantalla. i se omite ypos, el cuadro de dilogo se coloca apro0imadamente un tercio de la altura de la pantalla, desde el borde superior de la misma. ;pcional. !0presin de cadena "ue identifica el arc+ivo de .yuda "ue se utili&ar para proporcionar ayuda interactiva para el cuadro de dilogo. i se especifica +elpfile, tambi$n deber especificar conte0t. ;pcional. !0presin num$rica "ue es el n%mero de conte0to de .yuda asignado por el autor al tema de .yuda correspondiente. i se especifica conte0t, tambi$n deber especificarse +elpfile.

1itle 4efault Epos Wpos

<elpfile (onte0t

Comentarios i el usuario +ace clic en Cancelar, la funcin devuelve una cadena de caracteres de longitud cero )FG*. Nota: 5i desea omitir algunos argumentos( de%e incluir el delimitador de coma correspondiente o utilizar argumentos con nom%re. Constantes &rede:inidas Visual Basic reconoce cierta cantidad de constantes predefinidas "ue pueden se usadas en cual"uier parte de su cdigo en lugar de valores num$ricos. -uede +acer "ue su cdigo sea ms fcil de leer y escribir mediante el uso de estas constantes. .dems, los valores de estas constantes pueden cambiar en versiones posteriores de Visual Basic, su uso permitir "ue su cdigo sea compatible. -or ejemplo, la propiedad Iindo87tate de un formulario puede aceptar las siguientes constantes7

-or ejemplo, para establecer el estado del formulario :rm#ntrada en ma0imi&ado, la sentencia ser#a7

16

frm!ntrada.Window tate K vbMa0imi&ed Manejo de Formularios 3ormalmente la intefa& de una aplicacin est compuesta por varios formularios. (uando Visual Basic inicia la aplicacin, automticamente se muestra el formulario de arran"ue, mientras "ue los otros formularios deben ser mostrados y ocultados a trav$s de cdigo. !l m$todo o funcin usado depende de lo "ue deseamos +acer.

M&todo 5,o9 Muestra un formulario. i el formulario no est cargado al momento de ejecutar el m$todo +ow, Visual Basic lo cargar automticamente. Formato 3ombre4el2ormulario. +ow #jemplo 2rm!ntrada. +ow 5entencia $oad (arga un formulario a la memoria, pero no lo muestra. Formato Load 3ombre4el2ormulario #jemplo Load 2rm!ntrada E*ento $oad !l evento 0oad ocurre cuando el formulario es cargado en la memoria. !sto sucede cuando se usa la sentencia 0oad, o cuando se invoca el m$todo 75o8 y el formulario a%n no est cargado en memoria. 3ormalmente, este evento se utili&a para establecer algunas propiedades del formulario, los controles "ue se encuentran en $l, o variables a nivel del formulario. #jemplos+

M&todo Hide ;culta un formulario, pero no lo descarga de memoria. Formato 3ombre4el2ormulario.<ide #jemplo+ frm6ngreso.<ide 5entencia :nload 4escarga un formulario de memoria Formato

17

'nload 3ombre4el2ormulario Comentarios La descarga de un formulario puede ser necesario o conveniente en a"uellos casos en los "ue la memoria utili&ada se necesite para alguna otra tarea o cuando sea necesario restablecer las propiedades a sus valores originales. .ntes de descargar un formulario se ejecuta el evento ?nload BForm_Unload . i establece el argumento Cancelar a True en este evento, no se descargar el formulario. 7u4erencia 'se la palabra Me para referirse al formulario actual. #jemplo Q 4escarga el formulario actual -rivate ub cmd(errar9(licH ) * 'nload Me !nd ub E*ento :nload ;curre cuando un formulario est a punto de descargarse. !ste evento se desencadena por"ue un usuario cierra el formulario mediante el comando Cerrar del men% Control o una sentencia ?nload. !l parmetro Cancelar, es un entero "ue determina si el formulario es descargado. i Cancelar es D, el formulario se descarga. !stablecer Cancelar a cual"uier valor distinto de cero impide "ue el formulario sea descargado. #jemplo

Formularios Modales 9o Modales 'n formulario "ue se abre como !odal, no permite "ue el usuario interact%e con otros formularios de la misma aplicacin +asta "ue no sea cerrado. 'n formulario "ue se abre como No !odal, permite al usuario cambiar a otros formularios de la misma aplicacin sin "ue los primeros sean cerrados. !l argumento "stilo del m$todo #$o% determina si el formulario se abre como !odal o No !odal. #jemplos

Finali*acin de una Aplicacin e puede finali&ar la ejecucin de la aplicacin descargando el %ltimo formulario de la aplicacin o usando la sentencia "nd. La sentencia "nd termina la ejecucin de la aplicacin y descarga todos los formularios. (uando finali&a su aplicacin con la sentencia #nd no se desencadena ning%n evento de los formularios. #jemplos

18

#l #ditor de menEs !sta +erramienta permite crear men%s personali&ados para la aplicacin y definir sus propiedades. -ara ingresar, estando en tiempo de dise,o, +aga clic en el men% 3erramientas y luego en la orden #ditor de MenEs o en el botn e"uivalente de la barra de +erramientas estndar.

Nota: Para poder ingresar el editor de mens no de%e encontrarse en la *entana de c!digo. /pciones del cuadro de di2logo

19

A>adiendo Controles Adicionales al Cuadro de 3erramientas !l (uadro de <erramientas contiene los controles intr#nsecos o estndar de Visual Basic. !s posible ampliar el cuadro de +erramientas a,adiendo controles .ctiveE. La edicin profesional de Visual Basic proporciona controles .ctiveE adicionales. 1ambi$n es posible comprar controles .ctiveE a terceras partes. -ara a,adir un control .ctiveE al cuadro de +erramientas +aga lo siguiente7 8. !n el men% &ro ecto, +aga clic en Componentes. Visual Basic mostrar el cuadro de dilogo Componentes. =. !n la fic+a Controles, +aga clic en el control "ue desea incluir, y luego +aga clic en Aceptar. Visual Basic a,adir el control al cuadro de +erramientas.

El control .oolBar 'n control Tool!ar contiene una coleccin de objetos Button utili&ados para crear una barra de +erramientas asociada a una aplicacin. Comentarios 3ormalmente, una barra de +erramientas contiene botones "ue corresponden a elementos de men% de una aplicacin, proporcionando una interfa& grfica al usuario "ue le permite tener acceso a las funciones y comandos empleados con ms frecuencia en esa aplicacin.

20

!l control Tool!ar le permite crear barras de +erramientas agregando objetos Button a una coleccin Buttons/ cada objeto Button puede tener te0to opcional o una imagen, proporcionados por un control Ima4e0ist asociado. -uede mostrar una imagen en un botn con la propiedad Ima4e o mostrar te0to con la propiedad Caption, o ambos, para cada objeto Button. !n tiempo de dise,o puede agregar objetos Button al control utili&ando la &%4ina de propiedades del control 1oolbar. !n tiempo de ejecucin, puede agregar o "uitar botones de la coleccin Buttons mediante los m$todos Add y Femo)e. -ara programar el control Tool!ar, agregue cdigo al evento ButtonClic2 para "ue responda al botn seleccionado. 1ambi$n puede determinar el comportamiento y la apariencia de cada objeto Button mediante la propiedad 7t le. -or ejemplo, si a cuatro botones se les asigna el estilo Button=roup, slo se podr presionar uno de ellos y al menos uno estar siempre presionado. La facilidad de uso se mejora considerablemente programando descripciones ToolTipTe6t de cada objeto Button. -ara mostrar informacin sobre +erramientas, la propiedad 75o8Tips debe establecerse a 1rue.

El Control Image$ist 'n control Ima4e0ist contiene una coleccin de objetos 0istIma4e, a cada uno de los cuales se puede +acer referencia mediante su #ndice o su clave. !l control Ima4e0ist no est concebido para utili&arlo en solitario, sino como punto de almacenamiento central para proporcionar cmodamente imgenes a otros controles. Comentarios -uede usar el control Ima4e0ist con cual"uier control "ue asigne un objeto &icture a una propiedad &icture. !s posible agregar imgenes de diferentes tama,os al control Ima4e0ist, pero todas se ajustan al mismo tama,o. !l tama,o de los objetos de 0istIma4e est determinado por uno de los siguientes valores7 !l valor de las propiedades Ima4eIidt5 y Ima4e3ei45t antes de agregar alguna imagen. Las dimensiones de la primera imagen agregada. 3o +ay ninguna limitacin en cuanto al tama,o de la imagen, pero el n%mero total de imgenes "ue se puede cargar est limitado por la cantidad de memoria disponible. 4urante el dise,o del programa puede agregar imgenes mediante la fic+a =eneral del cuadro de dilogo &ropiedades del control Ima4e0ist. !n tiempo de ejecucin puede agregar imgenes mediante el m$todo Add para la coleccin 0istIma4es. Nota8 $os controles Toolbar e Image&ist +orman parte del grupo de controles "cti*e4 adicionales Microso+t ;indo9s Common Controls <.= 6arc,i*o C/MC.$>)./C47. Para usarlos en su aplicaci!n de%e agregar el arc,i*o C/MC.$>)./C4 al proyecto. Cuando distri%uya su aplicaci!n( instale el arc,i*o C/MC.$>)./C4 en la carpeta 5ystem o 5ystem>) 6en plata+ormas con ;indo9s ?.7 de Microso+t ;indo9s del usuario. 6nterfa& de M%ltiples 4ocumentos )M46 V Multiple 4ocument 6nterfase* El /%-eto MDIForm 'n formulario M46 es una ventana "ue act%a como fondo de una aplicacin y es el contenedor de formularios "ue tienen su propiedad M46(+ild establecida a 1rue. -ara crear un objeto M462orm, elija A4re4ar :ormulario MDI en el men% &ro ecto, luego de agregarlo tenga en cuenta lo siguiente7 'na aplicacin slo puede tener un objeto M462orm, pero varios formularios secundarios M46. i un formulario secundario M46 tiene men%s, la barra de men%s del formulario secundario reempla&ar automticamente a la barra de men%s del objeto M462orm cuando el formulario secundario M46 est$ activo. 'n formulario secundario M46 minimi&ado se mostrar como un icono en el M462orm. 'n objeto M462orm slo puede contener controles Menu y -ictureBo0, y controles personali&ados "ue tengan una propiedad .lign. -ara colocar otros controles en un M462orm, puede dibujar un cuadro de imagen en el formulario y despu$s dibujar otros controles dentro del cuadro de imagen. -uede utili&ar el m$todo -rint para mostrar te0to en un cuadro de imagen de un M462orm, pero no puede usar este m$todo para mostrar te0to en el M462orm propiamente dic+o.

21

'n objeto M462orm no puede ser modal. Los formularios secundarios M46 se dise,an de forma independiente del M462orm, pero siempre estn contenidos en el M462orm en tiempo de ejecucin.

Formulario secundario MDI 'n formulario contenido dentro de un formulario M46 en una aplicacin con interfa& de m%ltiples documentos )M46*. -ara crear un formulario secundario, estable&ca su propiedad M46(+ild a 1rue. Propiedad MDIC,ild 4evuelve o establece un valor "ue indica si un formulario debe mostrarse como formulario secundario M46 dentro de un formulario M46. !s de slo lectura en tiempo de ejecucin. Los valores admitidos para la propiedad M46(+ild son7 Valor 1rue 2alse Descripcin !l formulario es M46 secundario y se mostrar dentro del formulario M46 primario. )-redeterminado* !l formulario no es M46 secundario.

Comentarios 'tilice esta propiedad al crear una aplicacin con interfa& de m%ltiples documentos )M46*. !n tiempo de ejecucin, los formularios "ue tengan establecida a 1rue esta propiedad se mostrarn dentro de un formulario M46. Los formularios M46 secundarios pueden ma0imi&arse, minimi&arse y despla&arse, siempre dentro del formulario M46 primario. (uando trabaje con formularios M46 secundarios, tenga en cuenta lo siguiente7 !n tiempo de ejecucin, cuando un formulario M46 secundario se ma0imi&a, su t#tulo se combina con el del formulario M46 primario. !n tiempo de dise,o, los formularios M46 secundarios se muestran de la misma forma "ue el resto y slo se mostrarn dentro del formulario primario en tiempo de ejecucin. !l icono de un formulario M46 secundario en la ventana -royecto es distinto de los iconos de otros tipos de formularios. Los formularios M46 secundarios no pueden ser modales. !l entorno operativo Microsoft Windows controla el tama,o y la posicin iniciales de los formularios M46 secundarios, a menos "ue los estable&ca espec#ficamente en el procedimiento de evento Load. i se +ace referencia a un formulario M46 secundario antes de cargar el formulario M46 primario, $ste se cargar automticamente. in embargo, si se +ace referencia al formulario M46 primario antes de cargar un formulario M46 secundario, el formulario M46 secundario no se cargar.

22

&arte 3+ Tipos De Datos, Constantes Varia!les Tipos de Datos 'n tipo de dato determina la naturale&a del dominio de valores "ue puede tomar una variable, las operaciones en "ue puede participar y el espacio de memoria "ue necesita. La tabla siguiente muestra los tipos de datos, incluyendo el tama,o de almacenamiento y el intervalo. Tipo de Dato Byte Boolean 6nteger Long )entero largo* ingle )coma flotanteI precisin simple* 4ouble )coma flotanteI precisin doble* (urrency )entero a escala* 4ecimal Tama>o de Almacenamiento 8 byte = bytes = bytes ? bytes ? bytes T bytes T bytes 8? bytes Fan4o D a =AA 1rue o 2alse 9>=.CBT a >=.CBC 9=.8?C.?T>.B?T a =.8?C.?T>.B?C 9>,?D=T=>!>T a 98,?D8=UT!9?A para valores negativos/ 8,?D8=UT!9?A a >,?D=T=>!>T para valores positivos 98,CUCBU>8>?TB=>=!>DT a 9?,U?DBAB?AT?8=?C!9>=? para valores negativos/ ?,U?DBAB?AT?8=?C!9>=? a 8,CUCBU>8>?TB=>=!>DT para valores positivos 9U==.>>C.=D>.BTA.?CC,ATDT a U==.>>C.=D>.BTA.?CC,ATDC PI9 CU.==T.8B=.A8?.=B?.>>C.AU>.A?>.UAD.>>A sin punto decimal/ PI9 C,U==T8B=A8?=B?>>CAU>A?>UAD>>A con =T posiciones a la derec+a del signo decimal/ el n%mero ms pe"ue,o distinto de cero es PI9 D,DDDDDDDDDDDDDDDDDDDDDDDDDD8 8 de enero de 8DD a >8 de 4iciembre de UUUU (ual"uier referencia a tipo ;bject 4esde D a =.DDD millones 4esde 8 a BA.?DD apro0imadamente (ual"uier valor num$rico +asta el intervalo de un tipo 4ouble

4ate ;bject tring )longitud variable* tring )longitud fija* Variant )con n%meros* Variant )con caracteres*

T bytes ? bytes 8D bytes P longitud de la cadena Longitud de la cadena 8B bytes

== bytes P !l mismo intervalo para un tipo tring de longitud variable. longitud de la cadena 4efinido por el 3%mero re"uerido !l intervalo de cada elemento es el mismo "ue el intervalo de usuario por los elementos su tipo de datos )utili&ando 1ype* Nota: $as matrices de cual1uier tipo de datos re1uieren )= %ytes de memoria m2s cuatro %ytes para cada dimensi!n de matriz( m2s el nmero de %ytes 1ue ocupan los propios datos. Por e-emplo( los datos de una matriz unidimensional 1ue constan de cuatro elementos de datos tipo Integer de dos %ytes cada uno( ocupan oc,o %ytes. $os oc,o %ytes 1ue re1uieren los datos m2s los )@ %ytes necesarios para la matriz suman un re1uisito total de memoria de >) %ytes para dic,a matriz. :n tipo ariant 1ue contiene una matriz re1uiere ') %ytes m2s 1ue la matriz por s# sola. Con*ertir tipos de datos Visual Basic proporciona varias funciones de conversin "ue puede utili&ar para convertir valores de tipos de datos espec#ficos. -or ejemplo, para convertir un valor a Currenc , utilice la funcin Ccur+ -ago-or emana K (cur )+oras 5 -ago-or<ora*
Parte 3: Tipos de datos, constantes y variables anny !" #atta $on%ales 23

La siguiente tabla muestra las funciones de conversin7

Nota: $os *alores 1ue se pasan a una +unci!n de con*ersi!n de%en ser *2lidos para el tipo de dato de destino o se producir2 un error. Por e-emplo( si intenta con*ertir un tipo &ong en un Integer( el tipo de &ong de%e de estar en el inter*alo *2lido del tipo de dato Integer. Varia!les Las variables se utili&an para almacenar valores temporalmente durante la ejecucin de una aplicacin. Las variables tienen un nombre )la palabra "ue utili&a para referirse al valor "ue contiene la variable* y un tipo de dato )"ue determina la clase de dato "ue la variable puede almacenar*. "lmacenamiento y recuperaci!n de datos en *aria%les 'tilice una sentencia de asignacin para reali&ar clculos y asignar el resultado a una variable7 Man&anaVendidas K 8D Q e pasa el valor 8D a la variable Man&anasVendidas K Man&anasVendidas P 8 ;bserve "ue el signo igual del ejemplo es un operador de asignacin, no un operador de igualdad/ el valor '( se asigna a la variable Man*anasVendidas. Declaraci!n de aria%les 4eclarar una variable es decirle al programa algo de antemano. e declara una variable mediante la instruccin Dim, proporcionando un nombre a la variable, seg%n la siguiente sinta0is7 Dim nombre9variable RAs tipoS Las variables "ue se declaran en un procedimiento mediante la sentencia Dim slo e0isten mientras se ejecuta el procedimiento. (uando termina el procedimiento, desaparece el valor de la variable. .dems, el valor de una variable de un procedimiento es local a dic+o procedimiento/ es decir, no puede tener acceso a una variable de un procedimiento desde otro procedimiento. !stas caracter#sticas le permiten utili&ar los mismos nombres de variables en distintos procedimientos sin preocuparse por posibles conflictos o modificaciones accidentales. !l nombre de una variable debe cumplir con los siguientes re"uisitos7 4ebe comen&ar con una letra. 3o puede incluir un punto o un carcter de declaracin de tipo )X,O,Y,Z,[,\*. 3o debe e0ceder de =AA caracteres. 4ebe ser %nica en el mismo alcance, "ue es el intervalo desde el "ue se puede +acer referencia a la variable7 un procedimiento, formulario, etc. La clusula opcional As tipo de la sentencia Dim le permite definir el tipo de dato o de objeto de la variable "ue va a declarar. Los tipos de datos definen el tipo de informacin "ue almacena la variable. .lgunos ejemplos de tipos de datos son 7trin4, Inte4er y Currenc . Las variables tambi$n pueden contener objetos de Visual Basic u otras aplicaciones. .lgunos ejemplos de tipos de objeto de Visual Basic, o clases, son ;bject, 2orm8 y 1e0tBo0. <ay otras formas de declarar variables7

Parte 3: Tipos de datos, constantes y variables -

anny !" #atta $on%ales

24

4eclarar una variable en la seccin 4eclaraciones de un mdulo de formulario, estndar o de clase, en ve& de un procedimiento, +ace "ue la variable est$ disponible para todos los procedimientos del mdulo. 4eclarar una variable mediante la palabra clave &u!lic +ace "ue est$ accesible para toda la aplicacin. 4eclarar una variable local mediante la palabra clave 7tatic conserva su valor aun"ue termine el procedimiento.

Declaraci!n Impl#cita 3o tiene por "u$ declarar una variable antes de utili&arla. -or ejemplo, podr#a escribir una funcin donde no +iciera falta declarar TempVal antes de utili&arla7

Visual Basic crea automticamente una variable con ese nombre, "ue puede utili&ar como si la +ubiera declarado e0pl#citamente. .un"ue es cmodo, puede provocar errores sutiles en el cdigo si se e"uivoca de nombre de variable. -or ejemplo, suponga "ue +a escrito esta funcin7

. primera vista, parece igual. -ero como se +a escrito errneamente la variable TempVal en la tercera l#nea, la funcin devolver siempre cero. (uando Visual Basic encuentra un nombre nuevo, no puede averiguar si realmente desea declarar una variable nueva o simplemente +a escrito de forma errnea una variable e0istente, por lo "ue crea una variable nueva con ese nombre. Declaraci!n Expl#cita -ara evitar problemas al e"uivocarse de nombre en las variables, puede configurar Visual Basic para "ue le avise siempre "ue encuentre un nombre "ue no se +aya declarado e0pl#citamente como una variable. -ara declarar variables de forma e0pl#cita7 6ncluya esta sentencia en la seccin Declaraciones Aenerales del mdulo de clase, de formulario o estndar7 ;ption !0plicit 9 o bien 9 !n el men% 3erramientas, elija Cpciones, +aga clic en la fic+a #ditor y active la opcin Declaracin de )aria!les reAuerida. !sto inserta automticamente la sentencia Cption #6plicit en los mdulos nuevos, pero no en los ya creados, por lo "ue tendr "ue agregar manualmente Cption #6plicit a los mdulos e0istentes en el proyecto. i +ubiera tenido efecto dic+a instruccin en el mdulo de formulario o mdulo estndar "ue contiene la funcin Fa<*, Visual Basic +abr#a reconocido 1empVal y 1emVal como variables no declaradas y +abr#a generado errores para ambas. 4eber#a, por tanto, declara e0pl#citamente 1empVal7

"lcance de las aria%les !l alcance de una variable define en "u$ partes del cdigo son reconocidas. (uando declara una variable en un procedimiento, slo el cdigo de dic+o procedimiento puede tener acceso o modificar el valor de la variable/ tiene un alcance local al procedimiento. . veces, sin embargo, se necesita utili&ar una variable con un alcance ms general, como a"uella cuyo valor est disponible para todos los
Parte 3: Tipos de datos, constantes y variables anny !" #atta $on%ales 25

procedimientos del mismo mdulo o incluso para todos los procedimientos de toda la aplicacin. Visual Basic le permite especificar el alcance de una variable cuando la declara. #sta!lecido el alcance de las )aria!les 4ependiendo de cmo se declara, una variable tiene como alcance un procedimiento )local* o un mdulo.

aria%les utilizadas en un procedimiento Las variables al nivel de procedimiento slo se reconocen en el procedimiento en el "ue se +an declarado. e las conoce tambi$n como variables locales. e declaran mediante las palabras clave Dim o 7tatic. -or ejemplo7

Los valores de variables locales declaradas con 7tatic e0isten mientras se ejecuta la aplicacin, mientras "ue las variables declaradas con Dim slo e0isten mientras se ejecuta el procedimiento. aria%les utilizadas en un m!dulo 4e forma predeterminada, una variable al nivel de mdulo est disponible para todos los procedimientos del mdulo, pero no para el cdigo de otros mdulos. (ree variables al nivel de mdulo declarndolas con la palabra clave &ri)ate en la seccin Declaraciones =enerales al principio del mdulo. -or ejemplo7 -rivate int1emp .s 6nteger .l nivel de mdulo, no +ay diferencia entre &ri)ate y Dim, pero es preferible usar &ri)ate por"ue contrasta con &u!lic y +ace "ue el cdigo sea ms fcil de comprender. aria%les utilizadas por todos los m!dulos -ara +acer "ue una variable al nivel de mdulo est$ disponible para otros mdulos, utilice la palabra clave &u!lic para declararlas. Los valores de las variables p%blicas estn disponibles para todos los procedimientos de la aplicacin. .l igual "ue todas las variables al nivel del mdulo, las variables p%blicas se declaran en la seccin Declaraciones =enerales al principio del mdulo. -or ejemplo7 -ublic int1emp .s 6nteger Nota: ?o puede declarar *aria%les p%licas en un procedimiento( s!lo en la secci!n Declaraciones )enerales de un m!dulo. Constantes . menudo ver "ue el cdigo contiene valores constantes "ue reaparecen una y otra ve&. ; puede "ue el cdigo dependa de ciertos n%meros "ue resulten dif#ciles de recordar )n%meros "ue, por s# mismos, no tienen un significado obvio*. !n estos casos, puede mejorar muc+o la legibilidad del cdigo y facilitar su mantenimiento si utili&a constantes. 'na constante es un nombre significativo "ue sustituye a un n%mero o una cadena "ue no var#a. .un"ue una constante recuerda ligeramente a una variable, no puede modificar una constante o asignarle un valor nuevo como ocurre con una variable. <ay dos or#genes para las constantes7 (onstantes intr*nsecas o de:inidas por el sistema proporcionadas por Visual Basic. Las constantes simblicas o de:inidas por el usuario se declaran mediante la instruccin Const. Creaci!n de sus propias constantes

Parte 3: Tipos de datos, constantes y variables -

anny !" #atta $on%ales

26

La sinta0is para declarar una constante es la siguiente7 J&u!licK&ri)ateL Const nombreNconstante RAs tipoS M e0presin !l argumento nom%reBconstante es un nombre simblico vlido )las reglas son las mismas "ue para crear nombres de variable* y expresi!n est compuesta por constantes y operadores de cadena o num$ricos/ sin embargo, no puede utili&ar llamadas a funciones en expresi!n. 'na instruccin Const puede representar una cantidad matemtica o de fec+a y +ora7 (onst con-i K >.8?8AU=BA>ATUCU -ublic (onst conMa0-lanetas .s 6nteger K U (onst con2ec+a alida K [8I8IUA[ e puede utili&ar tambi$n la instruccin Const para definir constantes de cadena7 -ublic (onst conVersion K F DC.8D..G (onst con3ombre(lave K F!nigmaG -uede colocar ms de una declaracin de constante en una %nica l#nea si las separa con comas7 -ublic (onst con-iK>.8?, conMa0-lanetasKU, con-obMundialKB!PDU . menudo, la e0presin del lado derec+o del signo igual ) K * es un n%mero o cadena literal, pero tambi$n puede ser una e0presin "ue d$ como resultado un n%mero o una cadena )aun"ue la expresi!n no puede contener llamadas a funciones*. -uede incluso definir constantes en t$rminos de constantes previamente definidas7 (onst con-i= K con-i 5 = 'na ve& "ue defina las constantes, puede colocarlas en el cdigo para +acerlo ms legible. -or ejemplo7 tatic istema olar )8 1o conMa0-lanetas* 6f num-ersonas ] con-opMundial 1+en !0it ub "lcance de las constantes de+inidas por el usuario 'na instruccin Const tiene igual alcance "ue una declaracin de variable y se le aplican las mismas reglas7 -ara crear una constante "ue slo e0ista en un procedimiento, declrela dentro del procedimiento. -ara crear una constante disponible para todos los procedimientos de un mdulo, pero no para el cdigo "ue est fuera del mdulo, declrela en la seccin Declaraciones =enerales del mdulo. -ara crear una constante disponible en toda la aplicacin, declare la constante en la seccin Declaraciones =enerales de un mdulo estndar y colo"ue delante de Const la palabra clave &u!lic. 3o se pueden declarar las constantes p%blicas en un mdulo de clase o de formulario. E*itar re+erencias circulares (omo es posible definir constantes en t$rminos de otras constantes, deber tener cuidado para no establecer un ciclo o referencia circular entre dos o ms constantes. e produce un ciclo cuando se tienen dos o ms constantes p%blicas, cada una de las cuales est definida en funcin de la otra. -or ejemplo7 L!n el Mdulo 87 -ublic (onst con. K conB 5 = L 4isponible en toda la aplicacin L!n el Mdulo =7 -ublic (onst conB K con. I = L 4isponible en toda la aplicacin

i se produce un ciclo, Visual Basic generar un error cuando intente ejecutar la aplicacin. 3o puede ejecutar el cdigo +asta "ue resuelva la referencia circular. -ara evitar la creacin de un ciclo, restrinja todas las constantes p%blicas a un %nico mdulo o, al menos, al menor n%mero posible de mdulos.

Parte 3: Tipos de datos, constantes y variables -

anny !" #atta $on%ales

27

Con)enciones para 9om!res de Constantes Varia!les Las variables se deben definir siempre con el menor alcance posible. Las variables globales )p%blicas* pueden +acer lgica de una aplicacin muy dif#cil de entender. Las variables globales tambi$n +acen ms dif#cil mantener y volver a usar el cdigo. !n Visual Basic las variables pueden tener el alcance siguiente7

!n una aplicacin de Visual Basic, las variables globales se deben usar slo cuando no e0ista ninguna otra forma cmoda de compartir datos entre formularios. (uando +aya "ue usar variables globales, es conveniente declararlas todas en un %nico mdulo agrupadas por funciones y dar al mdulo un nombre significativo "ue indi"ue su finalidad, como -%blicas. 'na prctica de codificacin correcta es escribir cdigo modular siempre "ue sea posible. -or ejemplo, si la aplicacin muestra un cuadro de dilogo, colo"ue todos los controles y el cdigo necesario para ejecutar la tarea del dilogo en un %nico formulario. !sto ayuda a tener cdigo de la aplicacin organi&ado en componentes %tiles y minimi&a la sobrecarga en tiempo de ejecucin. . e0cepcin de las variables globales ) "ue no se deber#an pasar*, los procedimientos y funciones deben operar slo sobre los objetos "ue se les pasan. Pre+i-os de alcance de *aria%les . medida "ue aumenta el tama,o del proyecto, tambi$n aumenta la utilidad de reconocer rpidamente el alcance de las variables. !sto se consigue escribiendo un prefijo de alcance de una letra delante del prefijo de tipo, sin aumentar demasiado la longitud del nombre de las variables.

'na variable tiene alcance glo%al si se declara como &u!lic en un mdulo estndar o en un mdulo de formulario. 'na variable tiene alcance de ni*el de m!dulo si se declara como &ri)ate en un mdulo estndar o en un mdulo de formulario, respectivamente. Nota: $a co,erencia es crucial para usar esta t&cnica de +orma producti*aC el corrector de sintaxis de isual Basic no interceptar2 las *aria%les de ni*el de m!dulo 1ue comience con DpE. Constantes !l nombre de las constantes se debe escribir en may%sculas y min%sculas, con la letra inicial de cada palabra en may%sculas. .un"ue las constantes estndar de Visual Basic no incluyen informacin de tipo de datos y el alcance de una constante. -ara los nombres de constantes, se deben seguir las mismas normas "ue para las variables. -or ejemplo7

Parte 3: Tipos de datos, constantes y variables -

anny !" #atta $on%ales

28

aria%les 4eclarar todas las variables a+orra tiempo de programacin por"ue reduce el n%mero de errores debidos a nombres de variables errados )por ejemplo, a3ombre'suario1mp frente a s3ombre'suario1mp frente a s3ombre'suario1emp*. !n la fic+a #ditor del cuadro de dilogo Cpciones, active la opcin Declaracin de )aria!les reAuerida. La instruccin Cption #6plicit re"uiere "ue declare todas las variables del programa de Visual Basic. Las variables deben llevar un prefijo para indicar su tipo de datos. ;pcionalmente, y en especial para programas largos, el prefijo se puede ampliar para indicar el alcance de la variable. .ipos de datos de *aria%les 'se los siguientes prefijos para indicar el tipo de datos de una variable.

?om%res descripti*os de *aria%les y procedimientos !l cuerpo de un nombre de variable o procedimiento se debe escribir en may%sculas y min%sculas y debe tener la longitud necesaria para describir su funcionalidad. .dems, los nombres de funciones deben empe&ar con un verbo, como 6niciar3ombreMatri& o (errar4ilogo. -ara nombres "ue se usen con frecuencia o para t$rminos largos, se recomienda usar abreviaturas estndar para "ue los nombres tengan una longitud ra&onable. !n general, los nombres de variables con ms de >= caracteres pueden ser dif#ciles de leer en pantalla V@.. (uando se usen abreviaturas, +ay "ue asegurarse de "ue sean co+erentes en toda la aplicacin. .lterar aleatoriamente entre (nt y (ontar dentro de un proyecto provoca una confusin innecesaria. .ipos de+inidos por el usuario !n un proyecto grande con muc+os tipos definidos por el usuario, suele ser %til dar a cada uno de estos tipos un prefijo de tres caracteres. i estos prefijos comien&an con FuG, ser fcil reconocerlos cuando se est$ trabajando con tipos definidos por el usuario. -or ejemplo, FucliG se podr#a usar como prefijo para las variables de un tipo (liente definido por el usuario. Tipos Adicionales de Varia!les 3egistros o Estructuras on tipos de datos definidos por el usuario. !s bsicamente un conjunto de varios datos de tipos elementales agrupados bajo una denominacin com%n. 4ebe declararse en la seccin Declaraciones =enerales de un mdulo. e usa la palabra reservada T pe. 7inta6is

Parte 3: Tipos de datos, constantes y variables -

anny !" #atta $on%ales

29

#jemplo

"rreglo de aria%les 'n arreglo es una coleccin de elementos del mismo tipo con un nombre com%n. Los elementos son identificados por el nombre com%n y un #ndice. 7inta6is Dim ?om%reDel"rreglo6 Dimensi!n'( Dimensi!n)( ... 7 "s .ipoDeDato Visual Basic soporta +asta BD dimensiones. .l declarar las dimensiones se puede indicar un solo n%mero, en cuyo caso se entiende "ue dic+a dimensin va de cero +asta el n%mero indicado. 1ambi$n es posible indicar e0pl#citamente el inicio y t$rmino de la dimensin. #jemplo

"rreglos Din2micos <ay situaciones en las cuales se desea usar un arreglo, pero al momento del dise,o no se sabe sus dimensiones. -ara este tipo de situaciones Visual Basic permite declaraciones de arreglos del siguiente modo7 4im 0 ) * .s 6nteger ... ... :edim 0 )lstLista.List(ount* (uando se redimensiona un arreglo, los valores almacenados anteriormente se pierden, por"ue cada elemento es reiniciali&ado con cero o null dependiendo del tipo de dato del elemento. i se desea preservar los valores debemos usar la palabra clave &reser)e en la sentencia de redimensionamiento. :edim -reserve 0 ) int3%mero4e!lementos * C&#FADCF#7 "ritm&ticos ^ !0ponenciacin 5 Multiplicacin I 4ivisin 4ivisin entera Mod :esiduo entero )!jm7 . Mod B* P uma :esta O (oncatenacin de cadenas

Parte 3: Tipos de datos, constantes y variables -

anny !" #atta $on%ales

30

Comparaci!n K _] _K ]K LiHe

6s $!gicos .nd ;r Eor 3ot

6gual 4istinto Menor "ue Menor o igual Mayor o igual (ompara dos cadenas 5 (ero o ms caracteres )!jm7 cad LiHe Fma5G* ` (ual"uier carcter [ (ual"uier d#gito )D9U* RlistaS cual"uier carcter en lista RalistaS cual"uier carcter "ue no esta en lista 'sado para comparar dos variables de referencia a objetos FWG lgico F;G lgico F;G !0clusivo 3egacin

Parte 3: Tipos de datos, constantes y variables -

anny !" #atta $on%ales

31

&arte "+ #structuras de Control #structuras de Control Las estructuras de control le permiten controlar el flujo de ejecucin del programa. 1enemos dos tipos de estructuras de control7 !structuras de decisin !structuras de bucle Estructuras de Decisi!n Los procedimientos de Visual Basic pueden probar condiciones y, dependiendo de los resultados, reali&ar diferentes operaciones. !ntre las estructuras de decisin "ue acepta Visual Basic se incluyen las siguientes7 I+....,en I+....,en...Else 5elect Case I:...T5en 'se la estructura I:...T5en para ejecutar una o ms instrucciones basadas en una condicin. -uede utili&ar la sinta0is de una l#nea o un blo"ue de varias l#neas7 I+ condici!n T$en 5entencias I+ condici!n T$en 5entencias "nd I+

Condicin normalmente es una comparacin, pero puede ser cual"uier e0presin "ue d$ como resultado un valor num$rico. Visual Basic interpreta este valor como True o False/ un valor num$rico cero es False y se considera True cual"uier valor num$rico distinto de cero. i condicin es True, Visual Basic ejecuta todas las sentencias "ue siguen a la palabra clave T5en. -uede utili&ar sinta0is de una l#nea o de varias l#neas para ejecutar una sentencia basada en una condicin, los siguientes dos ejemplos son e"uivalentes7

;bserve "ue el formato de una %nica l#nea de I:...T5en no utili&a la instruccin #nd I:. i se desea ejecutar ms de una l#nea de cdigo cuando condicin sea True, debe utili&ar la sinta0is de blo"ue de varias l#neas I:...T5en...#nd I:.

I:...T5en...#lse 'tilice un blo"ue I:...T5e...#lse para definir varios blo"ues de sentencias, uno de los cuales se ejecutar7 I+ condici!n' T$en F%lo1ue de sentencias 'G ,"lseI+ condici!n) T$en
Parte 4: &str'ct'ras de control anny !" #atta $on%ales 32

F%lo1ue de sentencias )GG ... ,"lse F%lo1ue de sentencias nGG "nd I+ Visual Basic eval%a primero condicin1. i es False, Visual Basic procede a evaluar condicin2 y as# sucesivamente, +asta "ue encuentre una condicin True. (uando encuentra una condicin True, Visual Basic ejecuta el blo"ue de instrucciones correspondientes y despu$s ejecuta el cdigo "ue sigue a #nd I:. ;pcionalmente, puede incluir un blo"ue de instrucciones #lse, "ue Visual Basic ejecutar sin ninguna de las condiciones es True. I:...T5en...#lseI: es un caso especial de I:...T5en...#lse. ;bserve "ue puede tener cual"uier n%mero de clusula #lseI: o ninguna. -uede incluir una clusula #lse sin tener en cuenta si tiene o no clusula #lseI:. -or ejemplo, la aplicacin podr#a reali&ar distintas acciones dependiendo del control en "ue se +aya +ec+o clic de una matri& de controles de men%7

;bserve "ue siempre puede agregar ms clusulas #lseI: a la estructura I:...T5en. in embargo, esta sinta0is puede resultar tediosa de escribir cuando cada #lseI: compara la misma e0presin con un valor distinto. -ara estas situaciones, puede utili&ar la estructura de decisin 7elect Case. 7elect Case Visual Basic proporciona la estructura 7elect Case como alternativa a I:...T5en...#lse para ejecutar selectivamente un blo"ue de sentencias entre varios blo"ues. La sentencia 7elect Case ofrece posibilidades similares a la instruccin I:...T5en...#lse, pero +ace "ue el cdigo sea ms legible cuando +ay varias opciones. La estructura 7elect Case funciona con una %nica e0presin de prueba "ue se eval%a una ve& solamente, al principio de la estructura. Visual Basic compara el resultado de esta e0presin con los

Parte 4: &str'ct'ras de control -

anny !" #atta $on%ales

33

valores de cada Case de la estructura. asociado a ese Case+

i +ay una coincidencia, ejecuta el blo"ue de sentencias

(ada lista_expresiones es una lista de uno a ms valores. i +ay ms de un valor en una lista, se separan los valores con comas. (ada blo-.e de sentencias contiene cero o ms instrucciones. i ms de un Case coincide con la e0presin de prueba, slo se ejecutar el blo"ue de instrucciones asociado con la primera coincidencia. Visual Basic ejecuta las instrucciones de la clusula )opcional* Case #lse si ning%n valor de la lista de e0presiones coincide con la e0presin de prueba. -or ejemplo, suponga "ue agrega otro comando al men% #dicin en el ejemplo I:...T5en...#lse. -odr#a agregar otra clusula #lseI: o podr#a escribir la funcin con 7elect Case+

;bserve "ue la estructura 7elect Case eval%a una e0presin cada ve& "ue al principio de la estructura. -or el contrario, la estructura I:...T5en...#lse puede evaluar una e0presin diferente en cada sentencia

Parte 4: &str'ct'ras de control -

anny !" #atta $on%ales

34

#lseI:. lo puede sustituir una esructura I:...T5en...#lse con una estructura 7elect Case si la intruccin I: y cada instruccin #lseI: eval%a la misma e0presin.

Parte 4: &str'ct'ras de control -

anny !" #atta $on%ales

35

Ctros #jemplos

Estrucuras de 3epetici!n Las estructuras de repeticin o bucle le permiten ejecutar una o ms l#neas de cdigo repetidamente. Las estructuras de repeticin "ue acepta Visual Basic son7 4o...Loop 2or...3e0t 2or !ac+...3e0t Do...0oop 'tilice el bucle Do para ejecutar un blo"ue de sentencias un n%mero indefinido de veces. <ay algunas variantes en la sentencia Do...0oop, pero cada una eval%a una condicin num$rica para determinar si contin%a la ejecucin. (omo ocurre con I:...T5en, la condicin debe ser un valor o una e0presin "ue d$ como resultado False )cero* o True )distinto de cero*. !n el siguiente ejemplo de Do...0oop, las sentencias se ejecutan siempre y cuando condicin sea True+ Do /$ile condici!n 5entencias &oop (uando Visual Basic ejecuta este bucle Do, primero eval%a condicin. i condicin es False )cero*, se salta todas las sentencias. i es True )distinto de cero* Visual Basic ejecuta las sentencias, vuelve a la instruccin Do I5ile y prueba la condicin de nuevo. -or tanto, el bucle se puede ejecutar cual"uier n%mero de veces, siempre y cuando condicin sea distinta de cero o True. 3unca se ejecutan las sentencias si condicin es False inicialmente. -or ejemplo, este procedimiento cuenta las veces "ue se repite una cadena destino dentro de otra cadena repitiendo el bucle tantas veces como se encuentre la cadena de destino7

Parte 4: &str'ct'ras de control -

anny !" #atta $on%ales

36

i la cadena destino no est en la otra cadena, In7tr devuelve D y no se ejecuta el bucle. ;tra variante de la instruccin Do...0oop ejecuta las sentencias primero y prueba la condicin despu$s de cada ejecucin. !sta variacin garanti&a al menos una ejecucin de sentencias: Do 5entencias &oop /$ile condici!n <ay otras dos variantes anlogas a las dos anteriores, e0cepto en "ue repiten el bucle siempre y cuando condicin sea False en ve& de True.

For...9e6t Los bucles Do funcionan bien cuando no se sabe cuntas veces se necesitar ejecutar las sentencias del bucle. in embargo, cuando se sabe "ue se va a ejecutar las sentencias un n%mero determinado de veces, es mejor elegir el bucle For...9e6t. . diferencia del bucle Do, el bucle For utili&a una variable llamada contador "ue incrementa o reduce su valor en cada repeticin del bucle. La sinta0is es la siguiente7 For contador H iniciar To +inalizar F#tep incrementoG 5entencias Next FcontadorG Los argumentos contador, iniciar, :inali*ar e incremento son todos num$ricos. Nota: El argumento incremento puede ser positi*o o negati*o. 5i incremento es positi*o( iniciar de%e ser menor o igual 1ue +inali0ar o no se e-ecutar2n las sentencias del %ucle. 5i incremento es negati*o( iniciar de%e ser mayor o igual 1ue +inali0ar para 1ue se e-ecute el cuerpo del %ucle. 5i no se esta%lece #tep, el *alor predeterminado de incremento es '. .l ejecutar el bucle For, Visual Basic7 8. !stablece contador al mismo valor "ue iniciar. =. (omprueba si contador es mayor "ue +inali0ar. i lo es, Visual Basic sale del bucle. ) i incremento es negativo, Visual Basic comprueba si contador es menor "ue +inali0ar.* >. !jecuta las sentencias. ?. 6ncrementa contador en 8 o en incremento, si se especific. A. :epite los pasos = a ?. !ste cdigo imprime los nombres de todas las fuentes de pantalla disponibles7

For #ac5...9e6t !l bucle For #ac5...9e6t es similar al bucle For...9e6t, pero repite un grupo de sentencia por cada elemento de una coleccin de objetos o de una matri& en ve& de repetir las sentencias un n%mero especificado de veces. !sto resulta especialmente %til si no se sabe cuntos elementos +ay en la coleccin. <e a"u# la sinta0is del bucle For #ac5...9e6t+ For "ac$ elemento In grupo
Parte 4: &str'ct'ras de control anny !" #atta $on%ales 37

5entencias Next elemento -or ejemplo, el siguiente procedimiento 7u! abre la base de datos Biblio.mdb y agrega el nombre de cada tabla a un cuadro de lista.

1enga en cuenta las restricciones siguientes cuando utilice For #ac5...9e6t+ -ara las colecciones, elemento slo puede ser una variable Variant, una variable C!ject gen$rica o un objeto mostrado en el !0aminador de objetos. -ara las matrices, elemento slo puede ser una variable Variant. 3o puede utili&ar For #ac5...9e6t con una matri& de tipos definidos por el usuario por"ue un Variant no puede contener un tipo definido por el usuario. !l siguiente ejemplo +abilita todos los C.adro de Texto del formulario+

5alida de una Estructura de Control La instruccin #6it le permite salir directamente de un bucle For o de un bucle Do. La sinta0is de la sentencia #6it es sencilla7 #6it For puede aparecer tantas veces como sea necesario dentro de un bucle For y #6it Do puede aparecer tantas veces como sea necesario dentro de un bucle Do+

#6it For y #6it Do son muy %tiles ya "ue, algunas veces, resulta apropiado salir inmediatamente de un bucle sin reali&ar ms iteraciones o sentencias dentro del bucle. (uando utilice la instruccin #6it para salir de un bucle, el valor de la variable contador difiere, dependiendo de cmo +aya salido del bucle7
Parte 4: &str'ct'ras de control anny !" #atta $on%ales 38

(uando termina un bucle, la variable contador contiene el valor del l#mite superior ms el paso. (uando sale de un bucle prematuramente, la variable contador conserva su valor seg%n las reglas usuales del alcance. (uando sale antes del final de una coleccin, la variable contador contiene 9ot5in4 si se trata de un tipo de dato C!ject y #mpt si es un tipo de dato Variant.

Parte 4: &str'ct'ras de control -

anny !" #atta $on%ales

39

&arte $+ Controles #st%ndar Adicionales &rocedimientos

(ontrol Marco )2rame* !ste control permite agrupar otros controles para darle mayor funcionalidad a la interfa&. Los controles Botones de Cpcin necesariamente tienen "ue estar agrupados por el control Marco. -ara agrupar controles, dibuje primero el control Marco y, a continuacin, dibuje los controles dentro de Marco. Propiedades (aption 1#tulo de marco. !nabled 4etermina si est +abilitado para responder a las acciones del usuario. 3ame 3ombre del control. Visible 4etermina si el Marco y los controles "ue contiene estn visibles o no.

(ontrol (asilla de Verificacin )(+ecHBo0* Las casillas de verificacin se utili&an para proporcionar al usuario opciones de tipo iI3o o VerdaderoI2also. (uando el usuario selecciona una opcin )activa la casilla*, aparece una marca de verificacin )* dentro de la casilla. Propiedades (aption !nabled 3ame Value Visible E*entos (licH 4escripcin "ue acompa,a a la casilla. 1rueI2alse. 4etermina si est +abilitado para responder a las acciones del usuario. 3ombre del control. D V 'nc+ecHed )Vac#o, no marcado* 8 V (+ecHed )Marcado* = V @rayed )@ris, 6ndefinido* 4etermina si la casilla est visible o no. ;curre cuando el usuario +ace clic sobre la casilla.

(ontrol Botn de ;pcin );ptionButton* !stos controles se utili&an para "ue el usuario seleccione una opcin de un grupo opciones. La opcin seleccionada tiene un punto en el centro. Propiedades (aption !nabled 3ame Value 4escripcin "ue acompa,a a la opcin. 1rueI2alse. 4etermina si est +abilitado para responder a las acciones del usuario. 3ombre del control. 1rueI2alse, marcado o no marcado.
anny !" #atta $on%ales

Parte 5: (ontroles &st)ndar !dicionales y Procedi*ientos 40

Visible

1rueI2alse. 4etermina si el botn est visible o no.

E*entos (licH ;curre cuando el usuario +ace clic sobre el botn.

Arre4lo de Controles (uando creamos un arreglo de controles, todos los controles "ue forman el arreglo deben tener el mismo nombre )-ropiedad 3ame*, la propiedad Inde6 establece el #ndice de cada control en el arreglo, esta propiedad comien&a desde D. 'n arreglo de controles es un grupo de controles "ue comparten el mismo7 1ipo de objeto 3ombre del control -rocedimientos de evento C!digo m2s +2cil de escri%ir y mantener Los arreglos de controles +ace "ue el cdigo sea ms fcil de escribir y mantener debido a "ue solo escribe un solo procedimiento de evento para todos los controles pertenecientes al arreglo, el parmetro Inde6 del procedimiento de evento determina desde "ue control ocurri el evento. C!digo m2s e+iciente Los arreglos de controles +acen "ue el cdigo sea ms eficiente y mejoran el rendimiento de la aplicacin debido a "ue usa menos recursos del sistema "ue los controles individuales. IC!mo se crea un arreglo de controlesJ Luego de crear y establecer el nombre del primer control, tiene dos alternativas7 M.todo 1 8. (opiar el primer control al portapapeles. =. Luego pegar el control de portapapeles en el formulario. Visual Basic le preguntar si desea crear un arreglo de controles. >. :epita el paso = +asta completar el arreglo. M.todo 2 8. 4ibuje el siguiente control y estable&ca su nombre igual al del primer control. Visual Basic le preguntar si desea crear un arreglo de controles. =. :epita el paso 8 +asta completar el arreglo. #jemplo La interfa& mostrada tiene un arreglo de controles para seleccionar el reporte, el procedimiento de evento es el mismo para cual"uier elemento del arreglo.

Parte 5: (ontroles &st)ndar !dicionales y Procedi*ientos 41

anny !" #atta $on%ales

!l cdigo para el evento clic es7

Control Barra de Despla*amiento Barra de 4espla&amiento <ori&ontal )< crollBar* Barra de 4espla&amiento Vertical )V crollBar* on usuados con frecuencia para permitir rpidos despla&amientos a trav$s de una lista grande de items. -or ejemplo7 arc+ivos, indicadores de posicin actual de una escala de valores, indicadores de volumen en un sistema de audio. Propiedades Large(+ange 4e 8 a >=CBC. (antidad de cambio cuando el usuario +ace clic en el despla&amiento largo. Ma0 M0imo valor de despla&amiento cuando el botn se encuentra en la posicin ms alta. Valor predeterminado7 >=CBC. Min M#nimo valor del despla&amiento cuando el botn se encuentra en la posicin ms baja. Valor predeterminado7 D. 3ame 3ombre ddel control. mall(+ange 4e 8 a >=CBC. (antidad de cambio cuando el usuario +ace clic en la flec+a de despla&amiento. Value Valor actual en la escala de valores. E*ento (+ange ;curre cuando el usuario se despla&a o se cambia el valor de la propiedad Value.
anny !" #atta $on%ales

Parte 5: (ontroles &st)ndar !dicionales y Procedi*ientos 42

(ontrol (uadro de Lista )ListBo0* 'n control &ist1ox muestra una lista de elementos entre los cuales el usuario puede seleccionar uno o ms elementos. i el n%mero de elementos supera el n%mero "ue puede mostrarse, se agregar automticamente una barra de despla&amiento al control &ist1ox. La propiedad &ist es un arreglo "ue contiene los elementos de la lista, y comien&a con #ndice D. La propiedad &istCo.nt establece el n%mero total de elementos de la lista. La propiedad &istIndex contiene el #ndice del elemento seleccionado, el cual es un n%mero entre D )primer elemento* y el n%mero total de elementos en la lista V8 ) &istCo.nt 2 '*. i no se selecciona ning%n elemento, el valor de la propiedad &istIndex ser V8. La propiedad Ne%Index contiene el #ndice del %ltimo elemento a,adido a la lista. !sto puede ser %til si desea +acer algo con el elemento a,adido, por ejemplo, "ue sea el elemento actualmente seleccionado.

Propiedades !nabled List List(ount List6nde0 Multi elect 3ame 3ew6nde0 elected orted tyle 1e0t

1rueI2alse. 4etermina si el control responde a las acciones del usuario. .rreglo con los elementos de la lista. 3%mero de elementos de la lista. !lemento seleccionado. !stablece si es posible seleccionar varios elementos o uno solo. 3ombre del control. 6ndice del %ltimo elemento a,adido al (uadro de Lista. .rreglo de valores lgicos paralelo y del mismo tama,o al arreglo list, indica "ue elementos +an sido seleccionados )1rue* de la lista. e utili&a en lugar de 0istInde6 cuando establecemos la propiedad Multiselect en 8 =. 1rueI2alse. !stablece los elementos se ordenan alfab$ticamente. !stablece el comportamiento del control. 4evuelve el elemento seleccionado en el cuadro de lista/ el valor de retorno es siempre e"uivalente al "ue devuelve la e0presin List)List6nde0*. !s de slo lectura en tiempo de dise,o y es de slo lectura en tiempo de ejecucin. -ermite a,adir nuevos elementos a la lista. -ermite eliminar elementos de la lista. ;curre cuando el usuario interact%a con el control.

M&todos .dd6tem :emove6tem E*entos (licH

E-emplos Muestra en el Cuadro de Te6to t6t=aseosa el elemento seleccionado -rivate ub lst@aseosasN(licH)* t0t@aseosa.1e0t K lst@aseosas.1e0t !nd ub A>ade un nue)o elemento al Cuadro de 0ista lst=aseosas
Parte 5: (ontroles &st)ndar !dicionales y Procedi*ientos 43 anny !" #atta $on%ales

#limina el elemento actual del Cuadro de 0ista lst=aseosas

(ontrol (uadro (ombinado )(omboBo0* 'n control Com!oBo6 combina las caracter#sticas de un control Te6tBo6 y un control 0istBo6; los usuarios pueden introducir informacin en la parte del cuadro de te0to o seleccionar un elemento en la parte de cuadro de lista del control. -ara agregar o eliminar elementos en un control Com!oBo6, se usa el m$todo AddItem o Femo)eItem. !stable&ca las propiedades 0ist, 0istCount y 0istInde6 para permitir a un usuario tener acceso a los elementos de un control Com!oBo6. (omo alternativa, puede agregar elementos a la lista mediante la propiedad 0ist en tiempo de dise,o. Propiedades !nabled List List(ount List6nde0 3ame 3ew6nde0 orted tyle 1e0t M&todos .dd6tem :emove6tem E*entos (licH (+ange 1rueI2alse. 4etermina si el control responde a las acciones del usuario. .rreglo con los elementos de la lista. 3%mero de elementos de la lista !lemento seleccionado. 3ombre del control. 6ndice del %ltimo elemento a,adido al cuadro de lista. 1rueI2alse. !stablece si los elementos se ordenan alfab$ticamente. !stablece el comportamiento del control. 1e0to "ue contiene el control. -ermite a,adir nuevos elementos a la lista. -ermite eliminar elementos de la lista. ;curre cuando el usuario interact%a con la lista del control. ;curre cuando el valor de la propiedad Te6t es modificado.

Propiedad 5tyle !sta propiedad establece el comportamiento del control Com!oBo6, y puede tomar los siguientes valores7

Parte 5: (ontroles &st)ndar !dicionales y Procedi*ientos 44

anny !" #atta $on%ales

E-emplo !n la siguiente interfa& se ilustra el uso del control Com!oBo6 y la propiedad 7t le.

Muestra la 4aseosa seleccionada por el usuario en la etiAueta l!l=aseosa -rivate ub cbo@aseosasN(licH)* lbl@aseosa.(aption K cbo@aseosas.1e0t !nd ub

Parte 5: (ontroles &st)ndar !dicionales y Procedi*ientos 45

anny !" #atta $on%ales

Actuali*a la etiAueta l!l=aseosa cuando el usuario modi:ica el control c!o=aseosas -rivate ub cbo@aseosasN(+ange)* lbl@aseosa.(aption K cbo@aseosas.1e0t !nd ub Muestra el encuestado seleccionado por el usuario en la etiAueta l!l#ncuestado -rivate ub cbo!ncuestadosN(licH)* lbl!ncuestado.(aption K cbo!ncuestados.1e0t !nd ub Muestra en la etiAueta l!lCiudad el elemento seleccionado del control -rivate ub cbo(iudadesN(licH)* lbl(iudad.(aption K cbo(iudades.1e0t !nd ub c!oCiudades

&rocedimientos !0isten dos tipos de procedimientos con los "ue se trabaja en Visual Basic7 los procedimientos de evento y los procedimientos generales. &rocedimientos de #)ento Visual Basic invoca automticamente procedimientos de evento en respuesta a acciones del teclado, del ratn o del sistema. -or ejemplo, los botones de comando tienen un procedimiento de evento (licH. !l cdigo "ue se escriba en el procedimiento de evento (licH es ejecutado cuando el usuario +aga clic en un botn de comando. (ada control tiene un conjunto fijo de procedimientos de evento. Los procedimientos de evento para cada control son mostrados en un cuadro de lista despegable en la ventana de cdigo. &rocedimientos =enerales Los procedimientos generales son procedimientos 7u! o Function "ue son creados para "ue lleven a cabo tareas espec#ficas, estos deben ser invocados de manera e0pl#cita. -ara crear un procedimiento general, se debe abrir la ventana de cdigo y +acer clic en la orden A4re4ar procedimiento del men% 3erramientas. 1ambi$n se puede crear un nuevo procedimiento escribiendo el encabe&ado de procedimiento 7u!, seguido por el nombre del procedimiento, en una l#nea en blanco dentro de la ventana de cdigo. i se tiene cdigo duplicado en varios procedimientos de evento, se puede colocar el cdigo en un procedimiento general y luego invocar al procedimiento general desde los procedimiento de evento. Procedimientos 5u% Los procedimientos 7u! no retornan valores. -or ejemplo7

Los procedimientos 7u! son invocados especificando slo el nombre del procedimiento, o empleando la instruccin Call con el nombre del procedimiento. -or ejemplo7 (all eleccionar)1e0t8* i se emplea la instruccin Call, se debe encerrar la lista de argumentos entre par$ntesis. i se omite Call, tambi$n se deben omitir los par$ntesis alrededor de la lista de argumentos. Procedimientos Function Los procedimientos Function devuelven valores. !n el siguiente ejemplo, el procedimiento Function recibe un n%mero y devuelve ese n%mero al cuadrado. -ublic 2unction (uadrado)3 .s 6nteger* .s 6nteger (uadrado K 3 5 3 !nd 2unction

Parte 5: (ontroles &st)ndar !dicionales y Procedi*ientos 46

anny !" #atta $on%ales

i se desea guardar el valor devuelto, se debe usar par$ntesis cuando se invo"ue a la funcin, como se muestra a continuacin7 :esultado K (uadrado )A* i se omiten los par$ntesis, se puede ignorar el valor devuelto y no guardarlo en una variable. !sto puede ser %til si se "uiere ejecutar una funcin y no se desea el valor devuelto. -or ejemplo7 (uadrado A Alcance del Cdi4o .dems de poder declarar cdigo en un mdulo de formulario, tambi$n se puede declarar procedimientos en un mdulo de cdigo estndar. Los mdulos de cdigo estndar slo contienen cdigo de Visual Basic, y son un buen lugar para almacenar cdigo "ue no es espec#fico para un solo formulario. Los procedimientos pueden ser declarados como &ri)ate )privados* o &u!lic )p%blicos*. Los procedimientos declarados como &ri)ate pueden ser llamados o invocados slo por otros procedimientos locali&ados en ese formulario, mdulo o clase. Los procedimientos declarados como &u!lic en un formulario se convierten en m$todos del formulario. !l procedimiento puede ser llamado desde cual"uier lugar de la aplicacin especificando los nombres del formulario y del procedimiento. Los procedimientos declarados como &u!lic en un mdulo estn disponibles para toda la aplicacin, y pueden ser llamados especificando el nombre del procedimiento. !l siguiente cdigo declara un procedimiento &u!lic. -ublic ub Mi-roc)* !nd ub i se declara el procedimiento en un mdulo de formulario, puede ser llamado con el siguiente cdigo. 2orm8.Mi-roc i se declara el procedimiento en un mdulo estndar, puede ser llamado con el siguiente cdigo. Mi-roc i se declara un procedimiento con el mismo nombre en dos mdulos estndar, se debe especificar el nombre del mdulo como se muestra en el siguiente cdigo. Module8.Mi-roc ?so del #6aminador de C!jetos para )er &rocedimientos 0i!rer<as de C!jetos 'na ve& "ue se +a a,adido cdigo a una aplicacin se puede emplear el #6aminador de o!jetos para listar a todos los procedimientos "ue +an sido creados, pasar rpidamente a un procedimiento espec#fico, o pegar una llamada a un procedimiento dentro de una ventana de cdigo. !l #6aminador de o!jetos visuali&a las clases "ue estn disponibles desde cual"uier librer#a de objetos a la "ue se +a establecido una referencia. -ara visuali&ar el #6aminador de o!jetos presione la tecla de funcin F2.

Parte 5: (ontroles &st)ndar !dicionales y Procedi*ientos 47

anny !" #atta $on%ales

Parte 5: (ontroles &st)ndar !dicionales y Procedi*ientos 48

anny !" #atta $on%ales

&arte '+ Depuracin, Validacin de Datos Manipulacin de #rrores (uando desarrolle aplicaciones en Visual Basic, es importante depurar el cdigo escrito y manipular los probables errores "ue puedan ocurrir. 1ambi$n es importante prevenir en lo posible estos errores validando los ingresos de datos a la aplicacin. 3erramientas de Depuracin Visual Basic proporciona +erramientas interactivas para locali&ar errores en tiempo de ejecucin y errores en la lgica del programa. e puede acceder a todas las +erramientas de depuracin empleando el men% Depuracin o la barra de +erramientas Depuracin. Las +erramientas de depuracin en Visual Basic incluyen7 Puntos de interrupci!n y expresiones de interrupci!n !stablece un punto de interrupcin para detener un programa en ejecucin. e puede establecer un punto de interrupcin en tiempo de dise,o o en tiempo de ejecucin mientras se est$ en modo de interrupcin. Expresiones de inspecci!n !mplee las e0presiones de inspeccin para e0aminar una variable o e0presin en particular. !l valor de cada e0presin de inspeccin es actuali&ado en los puntos de interrupcin /pciones paso a paso 'se las opciones paso a paso para ejecutar porciones de cdigo ya sea una instruccin o procedimiento a la ve&. Pila de llamadas !mplee -ila de llamadas para visuali&ar todas las llamadas a procedimientos activas y rastrear la ejecucin de una serie de procedimientos anidados. $a *entana inmediato !n modo de interrupcin, se puede probar una sentencia ejecutable escribi$ndola en la ventana inmediato. Visual Basic ejecuta la sentencia inmediatamente de modo "ue se pueda evaluar el cdigo. $a *entana locales !sta ventana automticamente visuali&a todas las variables declaradas en el procedimiento actual, junto con sus valores.

Parte 6:

ep'raci+n, ,alidaci+n, y #anip'laci+n de errores 49

anny !" #atta $on%ales

Validacin de Datos e puede prevenir algunos errores en el ingreso de datos y mejorar el uso de una aplicacin validando informacin mientras es ingresada a los campos de la aplicacin. 3estricci!n de /pciones con Controles 'na manera de asegurar ingresos vlidos es restringiendo el n%mero de opciones "ue un usuario puede escoger. -or ejemplo, se puede emplear un cuadro de lista para permitir a los usuarios seleccionar un nombre de un producto en un formulario. 4ebido a "ue los usuarios deben escoger un producto de una lista predefinida, no podrn ingresar un nombre de producto no vlido. 1ambi$n se pueden usar botones de opcin para un n%mero pe"ue,o de opciones, o casillas de verificacin para opciones de tipo booleanas. :so de la propiedad Max$engt, La propiedad Ma60en4t5 determina la longitud m0ima de una cadena en un cuadro de te0to. !l sistema emitir un sonido )beep* cuando el usuario trate de escribir una cadena "ue e0ceda la longitud m0ima. i se desea visuali&ar un mensaje de error, se necesita interceptar la tecla oprimida en el evento Jey-ress. :so de la propiedad $ocKed La propiedad 0oc2ed determina si los usuarios pueden modificar los datos en un cuadro de te0to. i la propiedad 0oc2ed es establecida a True, los usuarios slo pueden ver y copiar los datos de un cuadro de te0to. :so del E*ento LeyPress para alidar Datos e pueden emplear los eventos Jey-ress, Jey4own y Jey'p para validar datos mientras el usuario escribe. e puede prevenir "ue el usuario ingrese ciertos caracteres )por ejemplo, puede limitar el ingreso de datos a valores num$ricos*. e puede tambi$n modificar los datos mientras son ingresados )por ejemplo, puede convertir todos los caracteres a may%sculas*. !l evento Jey-ress tiene lugar cuando el usuario ingresa un carcter . (66 estndar. !sto no incluye la mayor#a de la teclas especiales, tales como las teclas de funcin, las teclas direccionales, o la tecla 4!L!1!. -ara responder a estas teclas se debe emplear los eventos Jey4own y Jey'p. !l siguiente cdigo cambia los caracteres a may%sculas mientras el usuario escribe. -rivate ub 1e0t8NJey-ress)Jey.scii as 6nteger* Jey.scii K .sc)'case)(+r)Jey.scii*** !nd ub !l siguiente cdigo previene "ue los usuarios ingresen slo valores num$ricos en un cuadro de te0to.

-ara visuali&ar una lista de los valores . (66, bus"ue A7CII en la ayuda de Visual Basic. Validacin de In:ormacin a 9i)el de Formulario .dems de emplear t$cnicas a nivel de campo para validar los datos mientras son ingresados, se puede escribir cdigo "ue valide los datos en todos los campos de un formulario al mismo tiempo. !n esta parte del curso se vern las t$cnicas de validacin a nivel de formulario soportadas por Visual Basic. Ha%ilitando el Bot!n "ceptar 'na forma de validar la informacin del formulario ser#a la de asegurar "ue un usuario +a ingresado los datos en todos los campos en un formulario antes de "ue se le permita continuar. !sto puede llevarse a cabo des+abilitando el botn .ceptar en un formulario +asta "ue el usuario +aya llenado todos los campos, como se muestra a continuacin.

Parte 6:

ep'raci+n, ,alidaci+n, y #anip'laci+n de errores 50

anny !" #atta $on%ales

-ara comprobar cada tecla oprimida en un formulario, se debe establecer la propiedad Ne &re)ie8 de un formulario a True. !l formulario recibe primero el evento del teclado y luego lo recibe el control. !l siguiente cdigo +abilita el botn .ceptar luego de ingresar datos en todos los campos.

alidaci!n de .odos los Campos de un Formulario 'na manera sencilla de validar todos los campos de un formulario al mismo tiempo es poniendo el cdigo de validacin en el evento (licH del botn Aceptar. !n esta caso, la aplicacin le permite al usuario completar el ingreso de datos en todos los campos del formulario y luego validarlos. La aplicacin establece el enfo"ue en el primer campo "ue contiene los datos incorrectos. !l siguiente cdigo valida todos los campos num$ricos del formulario mostrado anteriormente.

:so del E*ento 0uery:nload

Parte 6:

ep'raci+n, ,alidaci+n, y #anip'laci+n de errores 51

anny !" #atta $on%ales

!l evento buery'nload tiene lugar justo antes del evento 'nload cuando el formulario es descargado. !l evento buery'nload permite determinar como fue iniciado el evento 'nload y cancelar este evento. !s %til cuando un usuario no +a completado el ingreso de datos a un formulario, o cuando se "uisiera preguntar al usuario si desea grabar cambios reali&ados antes cerrar el formulario. !l evento buery'nload tiene los siguientes argumentos7 !l argumento Cancel cancela el evento 'nload. i Cancel se establece a True la aplicacin permanece como estaba antes de "ue se intentara la descarga. !l argumento ?nloadMode indica como fue iniciado el evento 'nload. Valores Aue se pueden o!tener !l argumento ?nloadMode 6modoBdescarga7 devuelve los siguientes valores7

!l siguiente cdigo cancela el evento 'nload y pregunta al usuario antes de cerrar el formulario.

Notas8 Cuando se cierra un o%-eto !DIForm( el e*ento 0uery:nload ocurre primero para el +ormulario MDI principal y despu&s en todos los +ormularios secundarios MDI. 5i ningn +ormulario cancela el e*ento 0uery:nload( ocurre el e*ento :nload primero en todos los dem2s +ormularios y despu&s en un +ormulario MDI principal. Cuando un +ormulario secundario o un o%-eto Form se cierra( el e*ento 0uery:nload de ese +ormulario ocurre antes 1ue el e*ento :nload del +ormulario. Cuando una aplicaci!n se cierra( puede utilizar los procedimientos de e*ento 0uery:nload o :nload para esta%lecer la propiedad Cancel a Tr.e( deteniendo el proceso de cierre. 5in em%argo( el e*ento 0uery:nload ocurre en todos los +ormularios antes de 1ue se descargue ninguno de ellos y el e*ento :nload ocurre con+orme se descarga cada +ormulario. Manipulacin de #rrores en Tiempo de #jecucin 3o importa lo bien "ue se dise,e una aplicacin, los errores en tiempo de ejecucin siempre ocurrirn. Los usuarios olvidan poner los discos en las unidades, sistemas se ejecutan con poca memoria, y arc+ivos no se encuentran donde se supone deber#an estar. .,adiendo cdigo de manipulacin de errores efectivo a una aplicacin, se crean aplicaciones ms robustas. Entendiendo el Proceso de Manipulaci!n de Errores !l proceso de manipulacin de errores involucra los siguientes pasos. 8. <abilitar la interceptacin de errores "ue especifica +acia donde se bifurcar la ejecucin cuando ocurra un error. =. !scribir el cdigo de manipulacin de errores. >. alir del cdigo de manipulacin de errores. La instruccin Cn #rror =oTo +abilita la interceptacin de errores y especifica +acia donde saltar la ejecucin cuando ocurra un error. i ocurriera un error en tiempo de ejecucin, la ejecucin saltar +acia la eti"ueta especificada por la instruccin Cn #rror =oTo. !l manipulador de errores ejecuta el
Parte 6: ep'raci+n, ,alidaci+n, y #anip'laci+n de errores 52 anny !" #atta $on%ales

cdigo de manipulacin de errores seguido por una instruccin Fesume "ue indica donde deber continuar el proceso. !l siguiente cdigo muestra como emplear las instrucciones Cn #rror =oTo y Fesume.

!n el cdigo o rutina de manipulacin de errores, se emplean las propiedades y m$todos del objeto #rr para verificar "ue error ocurri, borrar un valor de error o desencadenar un error. $as Propiedades del /%-eto Err La propiedad 9um!er es un entero "ue indica el %ltimo error "ue tuvo lugar. -ara determinar "ue error +a ocurrido, se verifica el valor de #rr.9um!er. !n algunos casos, se puede corregir un error y permitir continuar el proceso sin interrumpir el usuario. !n otros, se deber notificar al usuario de un error, y tomar alguna accin basada en la respuesta del usuario. La propiedad Description es una cadena "ue contiene una descripcin del error. La propiedad 7ource contiene el nombre del objeto aplicacin "ue gener el error. !s %til cuando se emplea .utomati&acin. -or ejemplo, si se trabaja con Microsoft !0cel y genera un error, Microsoft !0cel establecer #rr.9um!er al cdigo de error apropiado y establecer #rr.7ource a #6cel.Application. $os M&todos del /%-eto Err !l m$todo Clear establece el valor de #rr.9um!er a cero. Bsicamente, el m$todo Clear se emplea borrar e0pl#citamente el objeto #rr despu$s de controlar un error. !l m$todo Faise genera un error en tiempo de ejecucin. -or ejemplo, se podr#a emplear este m$todo para probar el cdigo de manipulacin de errores. !rr.:aise A> L.rc+ivo no encontrado /pciones de las Instrucci!n 3esume La instruccin Fesume se emplea para especificar donde continuar el proceso de una aplicacin luego de manipular un error. La siguiente tabla lista los tres tipos de instrucciones Fesume disponibles en Visual Basic. Instruccin Fesume Instruccin Fesume 9e6t Fesume l#nea l#nea.
Parte 6: ep'raci+n, ,alidaci+n, y #anip'laci+n de errores 53 anny !" #atta $on%ales

Descripcin :egresa a la instruccin "ue gener el error. !mplee Fesume para repetir una operacin luego de corregir el error. Descripcin :egresa a la instruccin inmediatamente siguiente a la "ue gener el error. La ejecucin contin%a en la l#nea especificada en el argumento obligatorio

Nota8 5i utiliza una instrucci!n 3es.me en otro sitio 1ue no sea una rutina de manipulaci!n de errores( ocurre un error. Des5a!ilitando la Manipulacin de #rrores -uede ser dif#cil depurar cdigo "ue tiene +abilitada la manipulacin de errores. Visual Basic puede ejecutar el cdigo de manipulacin de errores cuando se "uiera ingresar al modo de 6nterrupcin y depurar la aplicacin. Visual Basic proporciona opciones para des+abilitar la manipulacin de errores en el momento de la depuracin. -ara cambiar como sern manipulados los errores7 8. !n el men% 3erramientas, +aga clic en Cpciones. =. !n la fic+a =eneral, debajo de Interceptacin de errores, +aga clic en la opcin deseada y luego en Aceptar. La siguiente tabla describe las opciones de manipulacin de errores disponibles debajo de Interceptacin de errores en la fic+a =eneral.

Compilacin de una Aplicacin 'na ve& finali&ada la creacin de una aplicacin, se puede crear el arc+ivo ejecutable para los usuarios. !sta parte del curso describe como compilar un proyecto. Creaci!n de un "rc,i*o E-ecuta%le (rear un arc+ivo ejecutable en Visual Basic es un proceso sencillo. 8. !n el men% Arc5i)o, +aga clic en =enerar O9om!re&ro ectoP.e6e =. 6ngrese el nombre para el arc+ivo ejecutable. >. -ara a,adir informacin espec#fica de versin7 !n el cuadro de dilogo =enerar pro ecto, +aga clic en el botn Cpciones. !n la fic+a =enerar escriba los n%meros de versin y el te0to de informacin de la versin , y luego +aga clic en Aceptar.

Parte 6:

ep'raci+n, ,alidaci+n, y #anip'laci+n de errores 54

anny !" #atta $on%ales

.dems del arc+ivo ejecutable, se debe de proporcionar diversas 4LLLs y otros arc+ivos a los usuarios. e deber#a crear un programa de instalacin "ue instale la aplicacin en la computadora del usuario. #l Asistente para instalar aplicaciones de Visual Basic +ace sencilla la tarea de crear discos o una carpeta de distribucin para una aplicacin. Los usuarios pueden luego ejecutar el programa de instalacin en sus computadoras para instalar y registrar los arc+ivos apropiados.

Parte 6:

ep'raci+n, ,alidaci+n, y #anip'laci+n de errores 55

anny !" #atta $on%ales

&arte (+ Controles #st%ndar A)an*ados Acceso a Datos

(ontrol (uadro de Lista de 'nidades )4riveListBo0* 'n control 4riveListBo0 permite al usuario seleccionar una unidad de disco vlida en tiempo de ejecucin. 'tilice este control para mostrar una lista de todas las unidades vlidas del sistema de un usuario. -uede crear cuadros de dilogo "ue permitan al usuario abrir un arc+ivo de una lista de un disco en cual"uier unidad disponible. Propiedades 4rive 4evuelve o establece la unidad seleccionada en tiempo de ejecucin. 3o est disponible en tiempo de dise,o. List (ontiene la lista de cone0iones de unidad efectivas. List(ount 4evuelve el n%mero de cone0iones con unidades de disco. List6nde0 4evuelve o establece el #ndice del elemento seleccionado actualmente en el control. 3o est disponible en tiempo de dise,o. E*entos (+ange ;curre cuando el usuario selecciona una nueva unidad o cuando se cambia la configuracin de la propiedad 4rive mediante cdigo.

(ontrol (uadro de Lista de 4irectorios )4irListBo0* 'n control 4irListBo0 muestra directorios y rutas de acceso en tiempo de ejecucin. 'tilice este control para mostrar una lista jerr"uica de directorios. -uede crear cuadros de dilogo "ue, por ejemplo, permitan a un usuario abrir un arc+ivo desde una lista de arc+ivos de todos los directorios disponibles. Propiedades List (ontiene una lista de todos los directorios. List(ount 4evuelve el n%mero de subdirectorios del directorio actual. List6nde0 6ndica el #ndice de la ruta de acceso actual. -at+ !l valor de la propiedad -at+ es una cadena "ue indica una ruta de acceso, como (7c;b o (7cWindowsc ystem. E*entos (+ange ;curre cuando el usuario +ace doble clic en un nuevo directorio o cuando se cambia la configuracin de la propiedad -at+ mediante cdigo.

(ontrol (uadro de Lista de .rc+ivos )2ileListBo0* !l control 2ileListBo0 encuentra y muestra los arc+ivos del directorio especificado por la propiedad -at+ en tiempo de ejecucin. 'tilice este control para mostrar una lista de los arc+ivos seleccionados por tipo. -uede crear cuadros de dilogo en la aplicacin "ue, por ejemplo, permitan al usuario seleccionar un arc+ivo o un grupo de arc+ivos. Propiedades 2ile3ame 4evuelve o establece el nombre de un arc+ivo seleccionado. List (ontiene una lista con los arc+ivos del directorio e0pandido actualmente "ue coinciden con la propiedad -attern. 3o se incluye la ruta de acceso. List(ount 4evuelve el n%mero de arc+ivos del directorio actual "ue coinciden con el valor de la propiedad -attern. List6nde0 4evuelve o establece el #ndice del elemento seleccionado actualmente. -at+ !l valor de la propiedad -at+ es una cadena "ue indica una ruta de acceso, como (7c;b o (7cWindowsc ystem. -attern 4evuelve o establece un valor "ue indica los nombres de arc+ivo mostrados en un control 2ileListBo0 en tiempo de ejecucin.

56

E*entos (licH

;curre cuando el usuario presiona y suelta un botn del ratn en un control 2ileListBo0.

(ontrol 6magen )6mage* !l control 6mage se utili&a para mostrar un grfico. 'n control 6mage puede mostrar un grfico desde un mapa de bits, un icono o un metarc+ivo, as# como un metarc+ivo mejorado, un arc+ivo d-!@ o arc+ivos @62. Propiedades -icture 4evuelve o establece un grfico "ue se mostrar en el control. 1ambi$n se le puede asignar un grfico devuelto por la funcin Load-icture. tretc+ 1rueI2alse. 4evuelve o establece un valor "ue indica si un grfico cambia su tama,o para ajustarse al de un control 6mage. Comentarios El control Image utiliza menos recursos del sistema y actualiza con m2s rapidez 1ue un control Pict.re1ox( pero s!lo admite un su%con-unto de las propiedades( los e*entos y los m&todos de Pict.re1ox. :se la propiedad 5tretc, para determinar si el gr2+ico se escala para a-ustarse al control o *ice*ersa. "un1ue puede colocar un control Image dentro de un contenedor( un control Image no puede actuar como contenedor. Funcin 0oad&ictureB1 (arga un grfico en un objeto -icture, un control -ictureBo0 o un control 6mage. Formato+ Load-icture)?om%reDe"rc,i*oAr2+ico* 1ambi$n se puede usar la funcin 0oad&ictureB1 para asignar un icono a un formulario o al puntero del ratn mostrado en pantalla. #jemplos de la :uncin 0oad&ictureB1+ L!stablece el icono del formulario et 2orm8.6con K Load-icture)MM66(;3;.6(;M* L!stablece el puntero del ratn creen.Mouse6con K Load-icture)MM66(;3;.6(;M* creen.Mouse-ointer K UU Creacin de un )isor de im%4enes

#l cdi4o para los controles es el si4uiente+

57

Control Tempori*ador BTimer1 'n control Timer puede ejecutar cdigo a intervalos peridicos produciendo un evento 1imer. !l control Timer, invisible para el usuario, resulta %til para el procesamiento de fondo. 3o e0iste ning%n l#mite prctico en cuanto al n%mero de controles Timer activos "ue se puede tener en Visual Basic A.D ejecutndose en Windows UA o en Windows 31. Propiedades !nabled 1rueI2alse. .ctiva o desactiva el control. i se desactiva el control Timer, estableciendo !nabled a 2alse, se cancelar la cuenta atrs establecida por la propiedad 6nterval del control. 6nterval 4evuelve o establece el n%mero de milisegundos entre las llamadas al evento 1imer de un control Timer. Los valores admitidos para milisegundos son D, "ue desactiva el control Timer, o de 8 a BAA>A. !l m0imo, BAA>A milisegundos, e"uivale a poco ms de un minuto. E*entos 1imer ;curre cuando +a transcurrido un intervalo preestablecido para el control Timer.

#jemplo de uso del control Timer

58

Minimi*a el :ormulario acti)a el control tempori*ador Timer1 -rivate ub cmd!stablecerN(licH)* 2orm8.Window tate K 8 1imer8.!nabled K 1rue !nd ub

59

Termina la ejecucin de la aplicacin -rivate ub cmd alirN(licH)* !nd !nd ub Compara la 5ora actual con la 5ora in4resada en el cuadro t6t3ora cada se4undo muestra el mensaje esta!lecido en caso de Aue sean i4uales, desacti)a el control tempori*ador restaura la )entana a su tama>o normal.

60

?so del control Data !n Visual Basic puede utili&ar el control Data para crear aplicaciones de bases de datos para una gran variedad de formatos de base de datos. !l control Data interact%a con el motor de base de datos Microsoft det y permite crear aplicaciones preparadas para datos con la m#nima cantidad de cdigo posible. Vista =eneral del Acceso a Datos .ntes de trabajar con la funcionalidad de base de datos desde Visual Basic, se debe entender las capacidades de acceso a datos, as# como, la terminolog#a empleada. Cpciones de Acceso a Datos en Visual Basic !sta parte del curso enumera las diversas opciones "ue Visual Basic proporciona para acceder a datos. :so del Motor de Base de Datos Microso+t Met Los objetos de acceso a datos V 4ata .ccess ;bjects ) DAC* y el control Data usan el motor de base de datos Microsoft det para acceder a bases de datos. !l motor de base de datos det puede acceder a los siguientes > tipos de bases de datos. Bases de datos Qet !stas bases de datos son creadas y manipuladas directamente por el motor det. Microsoft .ccess y Visual Basic emplean el mismo motor de base de datos det. Bases de datos de M.todo de Acceso 7ecuencial Inde6ado BI7AM1 Los formatos de estas bases de datos incluyen Btrieve, dBase, Microsoft Visual 2o0-ro, y -arado0. Bases de datos compati!les con CDBC BCpen DataBase Connecti)it R Conecti)idad A!ierta de Base de Datos1 !stas bases de datos incluyen las bases de datos clienteIservidor "ue conforman el estndar ;4B(, tal como Microsoft bL erver. La mayor#a de bases de datos "ue soportan ;4B( pueden ser accedidas empleando Visual Basic. /tros m&todos de "cceso a Datos Los otros m$todos de acceso a datos soportados por Visual Basic incluyen7 #l control Cri4en de Datos Femoto BFemote Data 7ource1 !ste es un control "ue emplea ;4B( para acceder a bases de datos ;4B( tales como Microsoft bL erver y ;racle. !l control Cri4en de Datos Femoto slo est disponible en la edicin !mpresarial de Visual Basic. 0i!rer<as CDBC !stas librer#as permiten "ue se llame a la interface de programacin de aplicaciones ).-6* de ;4B( directamente y estn disponibles como un producto separado. 0i!rer<as 7-0 de Visual Basic !stas librer#as proporcionan un enlace directo a Microsoft bL erver, y estn disponibles como un producto separado. !ntendiendo los (onceptos Bsicos acerca de las Bases de 4atos La mayor#a de sistemas de bases de datos emplean el modelo de base de datos relacional. !ste modelo presenta los datos como una coleccin de tablas. 'na tabla es un grupo lgico de informacin relacionada. -or ejemplo, la base de datos 3eptuno contiene una tabla "ue almacena a los empleados, y otra almacena los pedidos de una compa,#a ficticia. La base de datos 3eptuno.mdb es una base de datos de ejemplo incluida con Microsoft .ccess.

61

#lementos de una Ta!la La base de datos 3eptuno contiene un n%mero de tablas "ue agrupan la informacin. !stas tablas incluyen -edidos, (lientes, y !mpleados. !n una base de datos det, las filas de la tabla son denominadas registros, y las columnas campos.

$a Cla*e Principal (ada tabla debe de tener una clave principal, "ue es un campo )o una combinacin de campos* "ue es %nico para cada registro en la tabla. -or ejemplo, el campo 6d!mpleado es la clave principal para la tabla !mpleados. 'na tabla puede tambi$n tener claves forneas, "ue son campos "ue +acen referencia a una clave principal de otra tabla. -or ejemplo, en la base de datos 3eptuno, la tabla -edidos tiene un campo llamado 6d(liente. !ste campo es una clave fornea por"ue +ace referencia a un cliente de la tabla (lientes. !n ve& de duplicar toda la informacin del cliente por cada pedido, slo se ingresa la clave principal del cliente a "uien pertenece el pedido, como la clave principal es %nica por cada cliente, +ay un solo cliente por cada pedido, y un cliente puede tener muc+os pedidos. !n t$rminos de una base de datos, la relacin entre la tabla (lientes y la tabla -edidos es una relacin del tipo uno9a9varios. 3egistros

62

'n registro contiene informacin acerca de un solo ingreso en una tabla. @eneralmente, no se desea "ue dos registros en una tabla tengan los mismos datos. -or ejemplo, un registro en la tabla !mpleados contiene informacin acerca de un %nico empleado. Campos (ada campo en una tabla contiene una parte de la informacin. -or ejemplo, la tabla !mpleados incluye campos para el 6d del empleado, .pellidos, 3ombre, etc. Indices Los #ndices de una tabla de una base de datos son listas ordenadas "ue son ms rpidas para las b%s"uedas "ue las tablas en s#. -ara +abilitar un acceso ms rpido a una base de datos, la mayor#a de bases de datos emplean uno o ms #ndices. -or ejemplo, la tabla !mpleados tiene un #ndice para la columna 6d!mpleado. Tra!ajando con el Control Data !l control Data de Visual Basic permite escribir aplicaciones de bases de datos muy eficaces con muy poco cdigo. !n esta parte se aprender a generar aplicaciones de bases de datos con el control Data y el objeto Fecordset asociado. 1ambi$n se aprender como el .sistente para 2ormularios de 4atos puede construir una aplicacin "ue incluye el control Data. Tener Acceso a Datos con el Control Data !l control Data implementa el acceso a datos mediante el motor de base de datos Microsoft det. !sta tecnolog#a proporciona acceso a muc+os formatos de base de datos y permite crear aplicaciones "ue manejan datos sin necesidad de escribir cdigo. -ara crear una aplicacin de base de datos "ue emplee el control Data, se siguen los siguientes pasos7 8. .,adir el control Data al formulario y establecer las propiedades para especificar la base de datos y la tabla desde la cual se obtendrn los datos. =. .,adir controles enla&ados a datos al formulario, y establecer las propiedades para enla&ar los controles al control Data para "ue los datos puedan ser mostrados. 'so de (ontroles !nla&ados a 4atos (uando un control "ue +a colocado en un formulario se enla&a a datos, se muestran automticamente los datos de la base de datos en el control enla&ado. i un usuario cambia los datos de un control enla&ado, dic+os cambios se actuali&arn automticamente en la base de datos en cuanto el usuario se desplace a otro registro. Muc+os controles intr#nsecos o estndar de Visual Basic permiten ser enla&ados a datos, como es el caso de los controles C5ec2Bo6, Ima4e, 0a!el, &ictureBo6, Te6tBo6, 0istBo6, Com!oBo6 y los contenedores C0#. La siguiente ilustracin es un ejemplo de un formulario "ue contiene un control Data y dos controles enla&ados.

#sta!lecer las &ropiedades del Control Data Los siguientes pasos describen como conectar un control Data a una base de datos. 8. !specificar las base de datos a la cual se "uiere acceder estableciendo la propiedad Data!ase9ame al nombre de la base de datos.

63

=.

-ara especificar "ue registros recuperar, establecer la propiedad Fecord7ource al nombre de la tabla dentro de la base de datos, o a una cadena bL. Nota8 Para acceder a una %ase de datos dBase( Paradox( o Btrie*e( se de%e esta%lecer la propiedad DatabaseName a la carpeta 1ue contiene los arc,i*os de la %ase de datos( y la propiedad Connect al tipo apropiado de %ase de datos. #nla*ar Controles 4espu$s de establecer los valores de las propiedades para el control Data, es necesario enla&ar al control Data controles individuales y despu$s especificar "u$ campo de la tabla mostrar cada control. 8. !n tiempo de dise,o, establecer la propiedad Data7ource del control enla&ado a datos al control Data. =. !n tiempo de dise,o o en tiempo de ejecucin, especificar "ue campo se desea mostrar en el control enla&ado estableciendo la propiedad DataField. La propiedad DataField puede ser establecida en tiempo de dise,o o en tiempo de ejecucin. 'sar las -ropiedades y M$todos del (ontrol 4ata -ara especificar los datos "ue se desean recuperar, se debe establecer las propiedades Data!ase9ame y Fecord7ource de un control Data. .dems, se pueden establecer las siguientes propiedades y m$todos. $a Propiedad Connect !sta propiedad especifica el tipo de base de datos a abrir. -uede incluir argumentos tales como un nombre de usuario )user 64* y una contrase,a. $a Propiedad Exclusi*e La propiedad #6clusi)e determina si se tiene o no un uso e0clusivo de la base de datos. i esta propiedad se establece a True, y luego se abre sin problemas la base de datos, ninguna otra aplicacin podr abrirla +asta "ue sea cerrada. $a Propiedad 3ead/nly !sta propiedad determina si se puede o no actuali&ar o grabar cambios en la base de datos. i no se tiene planeado +acer cambios en la base de datos, es ms eficiente establecer la propiedad FeadCnl a True. $a Propiedad 3ecordset La propiedad Fecordset es un objeto "ue contiene el conjunto de registros devueltos por el control Data. !sta propiedad contiene a su ve& propiedades y m$todos "ue pueden ser usados para trabajar con los registros devueltos. $as Propiedades B/F"ction y E/F"ction !stas propiedades determinan "ue accin tomar el control Data cuando las propiedades BCF o #CF del recordset tomen como valor True. -or ejemplo, si la propiedad #CFAction del control Data es establecida a vb.ction.dd3ew, y se emplea el control Data para despla&arse, una ve& "ue se pase el %ltimo registro, el control Data automticamente ejecutar el m$todo Add9e8 de modo "ue se pueda a,adir un nuevo registro. El M&todo 3e+res, !l m$todo Fe:res5 renueva el objeto Fecordset. i se cambia la propiedad Fecord7ource en tiempo de ejecucin, se debe invocar al m$todo Fe:res5 para renovar el recordset. !l siguiente cdigo muestra como emplear el m$todo Fe:res5. 4ata8.:ecord ource K M !L!(1 5 2:;M !mpleados M O N MW<!:! R6d!mpleadoS K M O t0t6d!mp.1e0t 4ata8.:efres+ #l C!jeto Fecordset !n una aplicacin de base de datos, los usuarios trabajan con el control Data para despla&arse entre registros dentro de la base de datos. Los usuarios pueden +acer clic en los botones del control Data para avan&ar o retroceder registro a registro o para ir directamente al primer o al %ltimo registro. I0u& es un 3ecordsetJ 1odo el conjunto de registros al "ue +ace referencia un control Data se denomina conjunto de registros o Fecordset. !l Fecordset se almacena en la memoria, transfiri$ndose al disco si es necesario. -ara manipular el Fecordset, se emplea la propiedad Fecordset del control Data. !l Fecordset contiene el registro actual. La informacin del registro actual es mostrada por los controles enla&ados.

64

e puede cambiar la posicin del registro actual +aciendo clic en el control Data o escribiendo cdigo "ue emplee m$todos del objeto Fecordset. Determinar los l#mites de un 3ecordset i utili&a cdigo para cambiar la posicin del registro actual, debe comprobar las propiedades #CF y BCF del objeto Fecordset para determinar el inicio y el final del mismo. (uando se desplace al registro #CF o al BCF, se ejecutar la accin indicada por el valor de la propiedad BCFAction o #CFAction. -or ejemplo, se puede establecer la propiedad #CFAction para a,adir un nuevo registro automticamente. i se establece la propiedad #CFAction a #CF, ninguna accin ser tomada cuando se desplace al registro #CF. (uando se desplace pasando un registro los registros BCF o #CF, se producir un error en tiempo de ejecucin. !n la siguiente ilustracin se muestra cmo las propiedades BCF y #CF determinan los l#mites del objeto Fecordset.

-ara emplear el objeto Fecordset de un control Data determinado, se debe especificar la propiedad Fecordset del control 4ata, como se muestra en el siguiente cdigo. 4ata8.:ecordset.Move3e0t LMueve el registro actual al siguiente 6f 4ata8.:ecordset.!;2 1+en 4ata8.:ecordset.MoveLast 'so de las -ropiedades y M$todos de un :ecordset 'tilice los m$todos y las propiedades del objeto Fecordset para recuperar informacin del conjunto de registros, despla&arse por los registros y agregar, actuali&ar o eliminar registros. $as Propiedades B/F y E/F Las propiedades BCF y #CF del objeto Fecordset indican si la posicin del registro actual es antes del primer registro o despu$s del %ltimo registro dentro del conjunto de registros. i no +ay registros en el recordset, entonces el valor de las propiedades BCF y #CF es True. El M&todo "dd?e9 del 3ecordset -ara agregar un nuevo registro a un recordset, se emplea el m$todo Add9e8. (uando se ejecuta el m$todo Add9e8, Visual Basic limpia los controles enla&ados y establece la propiedad #ditMode del control Data a db!dit.dd. !l nuevo registro no ser a,adido a la base de datos +asta "ue sea ejecutado e0pl#citamente un m$todo ?pdateFecord o ?pdate, o +asta "ue el usuario se mueva a otro registro. !l siguiente cdigo muestra como agregar un nuevo registro a un recordset. -rivate ub cmd.gregarN(licH)* 4ata8.:ecordset..dd3ew El M&todo :pdate3ecord del Control Data !l m$todo ?pdateFecord se emplea para grabar el registro actual a una base de datos. !l siguiente cdigo muestra como grabar el registro actual y actuali&ar la base de datos. -rivate ub cmd@rabarN(licH)* 4ata8.'pdate:ecord

65

El M&todo Cancel:pdate del Control Data !l m$todo Cancel?pdate se emplea para cancelar un m$todo Add9e8 o #dit y renovar o refrescar los controles enla&ados con datos del recordset. -or ejemplo, si un usuario +a modificado los campos de un formulario, pero todav#a no los +a actuali&ado, el m$todo Cancel?pdate refrescar los campos con los datos originales del recordset. i un usuario selecciona un botn A4re4ar de un formulario, y luego decide no agregar el registro, el m$todo Cancel?pdate cancelar la operacin y visuali&ar el registro actual. !l siguiente cdigo muestra como cancelar la agregacin o edicin de un registro. -rivate ub cmd(ancelarN(licH)* 4ata8.(ancel'pdate El M&todo Delete del 3ecordset -ara eliminar un registro de una base de datos, se emplea el m$todo Delete. !l registro eliminado permanecer como el registro actual +asta "ue el usuario se mueva a un registro diferente, como se muestra en el siguiente cdigo. -rivate ub cmd!liminarN(licH)* 4ata8.:ecordset.4elete 4ata8.:ecordset.Move3e0t 6f 4ata8.:ecordset.!;2 1+en 4ata8.:ecordset.MoveLast !nd 6f !nd ub Nota8 $a %ase de datos ?eptuno tiene de+inidas reglas de integridad re+erencial 1ue impiden eliminar registros relacionados. ?so del Asistente para Formularios de Datos !l .sistente para 2ormularios de 4atos es una utilidad de Visual Basic "ue genera formularios de datos simples "ue emplean el control Data. e puede emplear el .sistente para 2ormularios de 4atos para construir rpidamente formularios para una aplicacin de base de datos. -ara cargar el .sistente para 2ormularios de 4atos, se emplea la orden Administrador de Complementos del men% Complementos. ?so de los #)entos del Control Data !l control Data proporciona tres eventos "ue puede utili&ar para mejorar la aplicacin de base de datos7 Validate, !rror y :eposition. 4ic+os eventos permiten omitir parte del comportamiento predeterminado del control Data. :sar el E*ento alidate 'tilice el evento Validate para comprobar los datos antes de guardar un registro en la base de datos. !ste evento se produce justo antes de "ue Visual Basic escriba en la base de datos los cambios procedentes de los controles enla&ados y de "ue vuelva a colocar el puntero del registro actual en otro registro de la base de datos. -uede utili&ar el evento Validate para pedir al usuario "ue confirme los cambios reali&ados. #intaxis !l evento Validate tiene la siguiente sinta0is7 &ri)ate 7u! Data1@Validate )index As Inte4er, action As Inte4er, sa*e As Inte4er* "l 4rg.mento 4ction !l argumento action indica la operacin "ue provoc el evento Validate. !l evento Validate se produce como resultado de reali&ar las operaciones siguientes7 Mo)eFirst, Mo)e&re)ious, Mo)e9e6t, Mo)e0ast Add9e8 ?pdate Delete
66

Find !stablecer la propiedad Boo2mar2 (errar la base de datos 4escargar el formulario

-ara cancelar cual"uiera de estas acciones, asigne al argumento action el valor vb4ata.ction(ancel. "l 4rg.mento #a5e !l argumento sa*e indica si va a guardarse o no el registro. i sa*e es True, los datos enla&ados +an cambiado. -ara cancelar la accin de guardar puede asignar a sa*e el valor False. !l siguiente cdigo pide al usuario "ue confirme los cambios +ec+os a la base de datos. i el usuario responde 3o, los cambios sern cancelados.

:sar el E*ento 3eposition 'tilice el evento :eposition para modificar la apariencia de un formulario o reali&ar una accin necesaria cuando se desplace a un nuevo registro. !ste evento tiene lugar cuando Visual Basic despla&a el puntero del registro actual a otro registro de la base de datos. 1ambi$n se produce la primera ve& "ue se abre la base de datos. !odi+icar la apariencia de .n +orm.lario -ara cambiar la manera en "ue un formulario muestra informacin basndose en el registro seleccionado en ese momento +ay "ue utili&ar el evento :eposition. -or ejemplo, puede modificar el t#tulo del control Data de forma "ue se muestre el registro n%mero n. -ara ver el n%mero del registro actual, utilice la propiedad A!solute&osition del objeto Fecordset. !l n%mero de registro es relativo a cero, por lo "ue el primer registro es el D. !l siguiente cdigo muestra como visuali&ar el n%mero del registro actual. -rivate ub 4ata8N:eposition)* 4ata8.(aption K M:egistro 3eM O 4ata8.:ecordset..bsolute-osition P 8 !nd ub Tratar los cambios al despla0arse a .n n.e5o registro (uando un usuario se despla&a a un nuevo registro mediante el control Data, puede "ue los datos del formulario tengan "ue presentarse de una forma distinta en el caso del nuevo registro. -or ejemplo, es posible "ue en un formulario "ue muestre registros de empleados +aya distintas opciones dependiendo de s# los empleados son fijos, temporales o si trabajan por +oras. (ada registro mostrar la informacin sobre un empleado distinto, cuyas opciones pueden no ser las mismas para todos los registros. -ara "ue se seleccione la opcin correcta para cada registro, escriba cdigo en el evento :eposition. !l cdigo siguiente utili&a el evento :eposition para modificar la apariencia de un formulario.

67

!sta ilustracin muestra el formulario basado en el cdigo anterior.

:sar el E*ento Error !l evento !rror tiene lugar cuando un usuario interact%a con el control Data y se produce un error de acceso a datos. 'tilice el evento !rror para agregar tratamiento de errores personali&ado al control Data. -or ejemplo, si un usuario modifica un campo y despu$s +ace clic en el control Data para despla&arse al siguiente registro, el control Data actuali&ar el registro actual. i se produce un error de acceso a datos durante la actuali&acin, se producir el evento !rror. Los valores de los campos enla&ados no cambian tras producirse un error. !l usuario puede corregir los valores y +acer clic en el control Data para tratar de actuali&ar nuevamente el registro. !ostrar .n mensa6e de error personali0ado i no coloca cdigo para tratar errores en el evento !rror y se produce un error cuando un usuario interact%a con el control Data, Visual Basic muestra el mensaje de error y el programa contin%a ejecutndose. i no desea "ue se muestre el mensaje de error estndar, puede asignar al argumento :esponse el valor D y mostrar un mensaje de error personali&ado como se muestra en el siguiente cdigo.

?so de Controles #nla*ados a Datos Acti)eD .dems de los controles enla&ados intr#nsecos, Visual Basic ofrece varios controles Acti)eD enla&ados a datos. !n esta parte del curso se describen algunos controles .ctiveE enla&ados a datos avan&ados. :sar el Control DBArid !l control de cuadr#cula enla&ada a datos )control DB=rid* permite "ue los usuarios de su aplicacin de base de datos trabajen con varios registros a la ve&. !ostrar m7ltiples registros

68

DB=rid es un control .ctiveE "ue muestra una serie de filas y columnas "ue representan registros y campos de un objeto Fecordset. (uando asigne a la propiedad Data7ource del control DB=rid un control Data, el control DB=rid se llenar automticamente de datos y se establecern automticamente sus encabe&ados de columna a partir del conjunto de registros del control Data. .l contrario "ue la mayor#a de los controles enla&ados a datos, el control DB=rid le permite ver y modificar varios registros simultneamente. !n la siguiente ilustracin se muestra un formulario "ue utili&a un control DB=rid para presentar registros procedentes de la base de datos 3eptuno.

&ara a>adir el control DB=rid a un pro ecto 8. <acer clic en la orden Componentes del men% &ro ecto. =. !n la fic+a Controles, seleccionar Microso:t Data Bound =rid Control, y luego +acer clic en Aceptar. !l control DB=rid tiene varias propiedades "ue especifican cmo se comporta el control. -or ejemplo, si asigna a la propiedad Allo8?pdate el valor True, un usuario puede modificar los datos del control. 1ambi$n puede establecer propiedades para columnas individuales del control DB=rid. -uede cambiar el t#tulo de la columna, cambiar el campo de datos al "ue se enla&a la columna, agregar valores predeterminados, etc. &ara esta!lecer propiedades de columnas 8. ;prima el botn secundario del ratn sobre el control DB=rid. =. <aga clic en la orden &ropiedades. >. <aga clic en Columnas. -uede cambiar el t#tulo de la columna, cambiar el campo de datos al "ue se enla&a la columna, agregar valores predeterminados, etc. -ara establecer los encabe&ados de las columnas del control DB=rid, luego de +aberlo enla&ado a un control Data, oprima el botn secundario del ratn sobre el control en tiempo de dise,o, y luego +aga clic en la orden Fecuperar campos. 8btener 9 establecer el texto de la celda act.al 'tilice la coleccin Columns del control DB=rid para recuperar el te0to de la celda seleccionada actualmente en tiempo de ejecucin. -or ejemplo7 MsgBo0 4B@rid8.(olumns)4B@rid8.(ol*.1e0t -ara cambiar la informacin del control 4B@rid, cambie el objeto :ecordset asociado. -or ejemplo, si el control DB=rid est enla&ado al recordset 4ata8, se ejecutar#a el siguiente cdigo7 4ata8.:ecordset.!dit 4ata8.:ecordset.2ields)M3ombre-roductoM* K M4isco duroM 4ata8.:ecordset.'pdate Usar el e5ento 1e+oreUpdate !l evento Before'pdate tiene lugar antes de "ue se muevan datos desde un control DB=rid al b%fer de copia del control Data. -uede validar los datos y cancelar la actuali&acin si es necesario.

69

:sar el Control M5FlexArid !l control M7Fle6=rid proporciona caracter#sticas avan&adas para la presentacin de datos en una cuadr#cula. !s similar al control DB=rid aun"ue, cuando se enla&a a un control Data, el control M7Fle6=rid muestra datos de slo lectura. -uede utili&ar el control M7Fle6=rid para combinar filas o columnas de informacin y as# agrupar la informacin relacionada. !n la siguiente ilustracin se muestran registros agrupados por 6d. de pedido en la tabla 4etalles de pedidos.

&ara com!inar celdas 8. !stable&ca la propiedad Mer4eCells a un valor diferente a cero. =. !stable&ca las propiedades arreglo Mer4eFo8B1 y Mer4eColB1 a True para las filas y columnas "ue desee combinar. -or ejemplo, para combinar las celdas en la tabla 4etalles de pedidos, a,ada el siguiente cdigo al formulario donde se encuentra el control M7Fle6=rid. -rivate ub 2ormNLoad)* M 2le0@rid8.Merge(ells K fle0Merge2ree M 2le0@rid8.Merge(ol)D* K 1rue !nd ub

:sar el Control DBCom%o -uede utili&ar el control de cuadro de lista enla&ado a datos ) DB0ist* o el cuadro combinado enla&ado a datos )DBCom!o* para presentar automticamente una lista de valores de un :ecordset. !sto resulta %til para proporcionar valores vlidos al usuario. 8btener in+ormacin de .na tabla de b7s-.eda 1ambi$n puede utili&ar estos controles en aplicaciones de Mtabla de b%s"uedaM. -or ejemplo, puede presentar una lista de nombres de categor#a vlidos )en ve& de 6d.* y utili&ar el 6d. correspondiente cuando el usuario agregue o modifi"ue datos. La ilustracin siguiente muestra un formulario "ue utili&a el control DBCom!o para presentar nombres de categor#as de la tabla -roductos.

70

"stablecer propiedades del control D1Combo -ara determinar el valor "ue se presenta en el control DBCom!o, asigne a la propiedad Fo87ource un nombre de control Data y a la propiedad 0istField un nombre de campo. !l cuadro combinado enla&ado a datos contiene todos los valores de ese campo. -ara determinar "u$ campo de la base de datos se actuali&a cuando un usuario cambia un valor, estable&ca las propiedades Data7ource y DataField. -ara establecer la relacin entre la tabla "ue contiene los valores de b%s"ueda y la tabla "ue se est modificando realmente, estable&ca la propiedad BoundColumn. Qaime Cs8aldo Monto a =u*m%n. jaimemontoya\gmail.com Lugar y fec+a de nacimiento7 an alvador, 8B de julio de 8UTB. (entro de estudios7 'niversidad (atlica de ;ccidente +ttp7IIwww.unico.edu.sv (arrera7 6ngenier#a en istemas 6nformticos. (iudad7 anta .na. -a#s7 !l alvador. 2ec+a de env#o del trabajo7 =U de octubre de =DDA.

71

Вам также может понравиться