Está en la página 1de 41

Parte 5: Controles Estndar Adicionales y Procedimientos

Control Marco (Frame) Este control permite agrupar otros controles para darle mayor funcionalidad a la interfaz. Los controles Botones de Opcin necesariamente tienen que estar agrupados por el control Marco. Para agrupar controles, dibu e primero el control Marco y, a continuaci!n, dibu e los controles dentro de Marco. Propiedades Caption "#tulo de marco. Enabled $etermina si est% &abilitado para responder a las acciones del usuario. 'ame 'ombre del control. (isible $etermina si el Marco y los controles que contiene est%n )isibles o no.

Control Casilla de (erificaci!n (C&ec*+o,) Las casillas de )erificaci!n se utilizan para proporcionar al usuario opciones de tipo -i.'o o (erdadero.Falso. Cuando el usuario selecciona una opci!n (acti)a la casilla), aparece una marca de )erificaci!n (a ) dentro de la casilla. Propiedades Caption $escripci!n que acompa/a a la casilla. Enabled "rue.False. $etermina si est% &abilitado para responder a las acciones del usuario. 'ame 'ombre del control. (alue 0 1 2nc&ec*ed ((ac#o, no marcado) 3 1 C&ec*ed (Marcado) 4 1 5rayed (5ris, 6ndefinido) (isible $etermina si la casilla est% )isible o no. Eventos Clic* 7curre cuando el usuario &ace clic sobre la casilla.

Control +ot!n de 7pci!n (7ption+utton) Estos controles se utilizan para que el usuario seleccione una opci!n de un grupo opciones. La opci!n seleccionada tiene un punto en el centro. Propiedades Caption $escripci!n que acompa/a a la opci!n. Enabled "rue.False. $etermina si est% &abilitado para responder a las acciones del usuario. 'ame 'ombre del control. (alue "rue.False, marcado o no marcado. (isible "rue.False. $etermina si el bot!n est% )isible o no. Eventos Clic* 7curre cuando el usuario &ace clic sobre el bot!n.

Arreglo de Controles Cuando creamos un arreglo de controles, todos los controles que forman el arreglo deben tener el mismo nombre (Propiedad 'ame), la propiedad Index establece el #ndice de cada control en el arreglo, esta propiedad comienza desde 0. 2n arreglo de controles es un grupo de controles que comparten el mismo8

"ipo de ob eto 'ombre del control Procedimientos de e)ento

Cdigo ms fcil de escribir y mantener Los arreglos de controles &ace que el c!digo sea m%s f%cil de escribir y mantener debido a que solo escribe un solo procedimiento de e)ento para todos los controles pertenecientes al arreglo, el par%metro Index del procedimiento de e)ento determina desde que control ocurri! el e)ento. Cdigo ms eficiente Los arreglos de controles &acen que el c!digo sea m%s eficiente y me oran el rendimiento de la aplicaci!n debido a que usa menos recursos del sistema que los controles indi)iduales. Cmo se crea un arreglo de controles? Luego de crear y establecer el nombre del primer control, tiene dos alternati)as8 Mtodo 3. Copiar el primer control al portapapeles. 2. Luego pegar el control de portapapeles en el formulario. (isual +asic le preguntar% si desea crear un arreglo de controles. 9. :epita el paso 4 &asta completar el arreglo. Mtodo ! 3. $ibu e el siguiente control y establezca su nombre igual al del primer control. (isual +asic le preguntar% si desea crear un arreglo de controles. 4. :epita el paso 3 &asta completar el arreglo. E"emplo La interfaz mostrada tiene un arreglo de controles para seleccionar el reporte, el procedimiento de e)ento es el mismo para cualquier elemento del arreglo.

El c!digo para el e)ento clic es8

Control Barra de #espla$amiento +arra de $esplazamiento ;orizontal (;-croll+ar) +arra de $esplazamiento (ertical ((-croll+ar) -on usuados con frecuencia para permitir r%pidos desplazamientos a tra)<s de una lista grande de items. Por e emplo8 arc&i)os, indicadores de posici!n actual de una escala de )alores, indicadores de )olumen en un sistema de audio. Propiedades LargeC&ange $e 3 a 94=>=. Cantidad de cambio cuando el usuario &ace clic en el desplazamiento largo. Ma, M%,imo )alor de desplazamiento cuando el bot!n se encuentra en la posici!n m%s alta. (alor predeterminado8 94=>=.

Min M#nimo )alor del desplazamiento cuando el bot!n se encuentra en la posici!n m%s ba a. (alor predeterminado8 0. 'ame 'ombre ddel control. -mallC&ange $e 3 a 94=>=. Cantidad de cambio cuando el usuario &ace clic en la flec&a de desplazamiento. (alue (alor actual en la escala de )alores. Evento C&ange 7curre cuando el usuario se desplaza o se cambia el )alor de la propiedad (alue.

Control Cuadro de Lista (List+o,) 2n control ListBox muestra una lista de elementos entre los cuales el usuario puede seleccionar uno o m%s elementos. -i el n?mero de elementos supera el n?mero que puede mostrarse, se agregar% autom%ticamente una barra de desplazamiento al control ListBox. La propiedad List es un arreglo que contiene los elementos de la lista, y comienza con #ndice 0. La propiedad ListCount establece el n?mero total de elementos de la lista. La propiedad ListIndex contiene el #ndice del elemento seleccionado, el cual es un n?mero entre 0 (primer elemento) y el n?mero total de elementos en la lista 13 ( ListCount 1). -i no se selecciona ning?n elemento, el )alor de la propiedad ListIndex ser% 13. La propiedad NewIndex contiene el #ndice del ?ltimo elemento a/adido a la lista. Esto puede ser ?til si desea &acer algo con el elemento a/adido, por e emplo, que sea el elemento actualmente seleccionado.

Propiedades Enabled "rue.False. $etermina si el control responde a las acciones del usuario. List @rreglo con los elementos de la lista. ListCount '?mero de elementos de la lista.

List6nde, Elemento seleccionado. Multi-elect Establece si es posible seleccionar )arios elementos o uno solo. 'ame 'ombre del control. 'eA6nde, 6ndice del ?ltimo elemento a/adido al Cuadro de Lista. -elected @rreglo de )alores l!gicos paralelo y del mismo tama/o al arreglo list, indica que elementos &an sido seleccionados ("rue) de la lista. -e utiliza en lugar de %istIndex cuando establecemos la propiedad M&ltiselect en 3 ! 4. -orted "rue.False. Establece los elementos se ordenan alfab<ticamente. -tyle Establece el comportamiento del control. "e,t $e)uel)e el elemento seleccionado en el cuadro de listaB el )alor de retorno es siempre equi)alente al que de)uel)e la e,presi!n List(List6nde,). Es de s!lo lectura en tiempo de dise/o y es de s!lo lectura en tiempo de e ecuci!n. Mtodos @dd6tem Permite a/adir nue)os elementos a la lista. :emo)e6tem Permite eliminar elementos de la lista. Eventos Clic* 7curre cuando el usuario interact?a con el control. Ejemplos M&estra en el C&adro de 'exto txt(aseosa el elemento seleccionado Pri)ate -ub lst5aseosasCClic*() t,t5aseosa."e,t D lst5aseosas."e,t End -ub A)ade &n n&e*o elemento al C&adro de %ista lst(aseosas

Elimina el elemento act&al del C&adro de %ista lst(aseosas

Control Cuadro Combinado (Combo+o,) 2n control Com+oBox combina las caracter#sticas de un control 'extBox y un control %istBox, los usuarios pueden introducir informaci!n en la parte del cuadro de te,to o seleccionar un elemento en la parte de cuadro de lista del control. Para agregar o eliminar elementos en un control Com+oBox- se usa el m<todo AddItem o .emo*eItem. Establezca las propiedades %ist- %istCo&nt y %istIndex para permitir a un usuario tener acceso a los elementos de un control Com+oBox. Como alternati)a, puede agregar elementos a la lista mediante la propiedad %ist en tiempo de dise/o. Propiedades Enabled "rue.False. $etermina si el control responde a las acciones del usuario. List @rreglo con los elementos de la lista. ListCount '?mero de elementos de la lista List6nde, Elemento seleccionado. 'ame 'ombre del control. 'eA6nde, 6ndice del ?ltimo elemento a/adido al cuadro de lista. -orted "rue.False. Establece si los elementos se ordenan alfab<ticamente. -tyle Establece el comportamiento del control. "e,t "e,to que contiene el control. Mtodos @dd6tem Permite a/adir nue)os elementos a la lista. :emo)e6tem Permite eliminar elementos de la lista. Eventos Clic* 7curre cuando el usuario interact?a con la lista del control.

C&ange 7curre cuando el )alor de la propiedad 'ext es modificado. Propiedad Style Esta propiedad establece el comportamiento del control Com+oBox- y puede tomar los siguientes )alores8

Ejemplo En la siguiente interfaz se ilustra el uso del control Com+oBox y la propiedad /tyle.

M&estra la gaseosa seleccionada por el &s&ario en la eti0&eta l+l(aseosa Pri)ate -ub cbo5aseosasCClic*() lbl5aseosa.Caption D cbo5aseosas."e,t End -ub Act&ali$a la eti0&eta l+l(aseosa c&ando el &s&ario modi1ica el control c+o(aseosas

Pri)ate -ub cbo5aseosasCC&ange() lbl5aseosa.Caption D cbo5aseosas."e,t End -ub M&estra el enc&estado seleccionado por el &s&ario en la eti0&eta l+lEnc&estado Pri)ate -ub cboEncuestadosCClic*() lblEncuestado.Caption D cboEncuestados."e,t End -ub M&estra en la eti0&eta l+lCi&dad el elemento seleccionado del control c+oCi&dades Pri)ate -ub cboCiudadesCClic*() lblCiudad.Caption D cboCiudades."e,t End -ub Procedimientos E,isten dos tipos de procedimientos con los que se traba a en (isual +asic8 los procedimientos de e)ento y los procedimientos generales. Procedimientos de E*ento (isual +asic in)oca autom%ticamente procedimientos de e)ento en respuesta a acciones del teclado, del rat!n o del sistema. Por e emplo, los botones de comando tienen un procedimiento de e)ento Clic*. El c!digo que se escriba en el procedimiento de e)ento Clic* es e ecutado cuando el usuario &aga clic en un bot!n de comando. Cada control tiene un con unto fi o de procedimientos de e)ento. Los procedimientos de e)ento para cada control son mostrados en un cuadro de lista despegable en la )entana de c!digo. Procedimientos (enerales Los procedimientos generales son procedimientos /&+ o 2&nction que son creados para que lle)en a cabo tareas espec#ficas, estos deben ser in)ocados de manera e,pl#cita. Para crear un procedimiento general, se debe abrir la )entana de c!digo y &acer clic en la orden Agregar procedimiento del men? 3erramientas. "ambi<n se puede crear un nue)o procedimiento escribiendo el encabezado de procedimiento /&+, seguido por el nombre del procedimiento, en una l#nea en blanco dentro de la )entana de c!digo.

-i se tiene c!digo duplicado en )arios procedimientos de e)ento, se puede colocar el c!digo en un procedimiento general y luego in)ocar al procedimiento general desde los procedimiento de e)ento. Procedimientos Sub Los procedimientos /&+ no retornan )alores. Por e emplo8

Los procedimientos /&+ son in)ocados especificando s!lo el nombre del procedimiento, o empleando la instrucci!n Call con el nombre del procedimiento. Por e emplo8 Call -eleccionar("e,t3) -i se emplea la instrucci!n 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 unction Los procedimientos 2&nction de)uel)en )alores. En el siguiente e emplo, el procedimiento 2&nction recibe un n?mero y de)uel)e ese n?mero al cuadrado. Public Function Cuadrado(' @s 6nteger) @s 6nteger Cuadrado D ' E ' End Function -i se desea guardar el )alor de)uelto, se debe usar par<ntesis cuando se in)oque a la funci!n, como se muestra a continuaci!n8 :esultado D Cuadrado (F) -i se omiten los par<ntesis, se puede ignorar el )alor de)uelto y no guardarlo en una )ariable. Esto puede ser ?til si se quiere e ecutar una funci!n y no se desea el )alor de)uelto. Por e emplo8 Cuadrado F Alcance del Cdigo @dem%s de poder declarar c!digo en un m!dulo de formulario, tambi<n se puede declarar procedimientos en un m!dulo de c!digo est%ndar.

Los m!dulos de c!digo est%ndar s!lo contienen c!digo de (isual +asic, y son un buen lugar para almacenar c!digo que no es espec#fico para un solo formulario. Los procedimientos pueden ser declarados como Pri*ate (pri)ados) o P&+lic (p?blicos). Los procedimientos declarados como Pri*ate pueden ser llamados o in)ocados s!lo por otros procedimientos localizados en ese formulario, m!dulo o clase. Los procedimientos declarados como P&+lic en un formulario se con)ierten en m<todos del formulario. El procedimiento puede ser llamado desde cualquier lugar de la aplicaci!n especificando los nombres del formulario y del procedimiento. Los procedimientos declarados como P&+lic en un m!dulo est%n disponibles para toda la aplicaci!n, y pueden ser llamados especificando el nombre del procedimiento. El siguiente c!digo declara un procedimiento P&+lic. Public -ub MiProc() End -ub -i se declara el procedimiento en un m!dulo de formulario, puede ser llamado con el siguiente c!digo. Form3.MiProc -i se declara el procedimiento en un m!dulo est%ndar, puede ser llamado con el siguiente c!digo. MiProc -i se declara un procedimiento con el mismo nombre en dos m!dulos est%ndar, se debe especificar el nombre del m!dulo como se muestra en el siguiente c!digo. Module3.MiProc 4so del Examinador de O+"etos para *er Procedimientos y %i+rer5as de O+"etos 2na )ez que se &a a/adido c!digo a una aplicaci!n se puede emplear el Examinador de o+"etos para listar a todos los procedimientos que &an sido creados, pasar r%pidamente a un procedimiento espec#fico, o pegar una llamada a un procedimiento dentro de una )entana de c!digo. El Examinador de o+"etos )isualiza las clases que est%n disponibles desde cualquier librer#a de ob etos a la que se &a establecido una referencia. Para )isualizar el Examinador de o+"etos presione la tecla de funci!n 2!.

Parte 6: #ep&racin- 7alidacin de #atos y Manip&lacin de Errores Cuando desarrolle aplicaciones en (isual +asic, es importante depurar el c!digo escrito y manipular los probables errores que puedan ocurrir. "ambi<n es importante pre)enir en lo posible estos errores )alidando los ingresos de datos a la aplicaci!n. 3erramientas de #ep&racin (isual +asic proporciona &erramientas interacti)as para localizar errores en tiempo de e ecuci!n y errores en la l!gica del programa. -e puede acceder a todas las &erramientas de depuraci!n empleando el men? #ep&racin o la barra de &erramientas #ep&racin. Las &erramientas de depuraci!n en (isual +asic incluyen8 Puntos de interrupcin y e!presiones de interrupcin Establece un punto de interrupci!n para detener un programa en e ecuci!n. -e puede establecer un punto de interrupci!n en tiempo de dise/o o en tiempo de e ecuci!n mientras se est< en modo de interrupci!n. E!presiones de inspeccin Emplee las e,presiones de inspecci!n para e,aminar una )ariable o e,presi!n en particular. El )alor de cada e,presi!n de inspecci!n es actualizado en los puntos de interrupci!n "pciones paso a paso 2se las opciones paso a paso para e ecutar porciones de c!digo ya sea una instrucci!n o procedimiento a la )ez. Pila de llamadas

Emplee Pila de llamadas para )isualizar todas las llamadas a procedimientos acti)as y rastrear la e ecuci!n de una serie de procedimientos anidados. #a ventana inmediato En modo de interrupci!n, se puede probar una sentencia e ecutable escribi<ndola en la )entana inmediato. (isual +asic e ecuta la sentencia inmediatamente de modo que se pueda e)aluar el c!digo. #a ventana locales Esta )entana autom%ticamente )isualiza todas las )ariables declaradas en el procedimiento actual, unto con sus )alores. 7alidacin de #atos -e puede pre)enir algunos errores en el ingreso de datos y me orar el uso de una aplicaci!n )alidando informaci!n mientras es ingresada a los campos de la aplicaci!n. $estriccin de "pciones con Controles 2na manera de asegurar ingresos )%lidos es restringiendo el n?mero de opciones que un usuario puede escoger. Por e emplo, se puede emplear un cuadro de lista para permitir a los usuarios seleccionar un nombre de un producto en un formulario. $ebido a que los usuarios deben escoger un producto de una lista predefinida, no podr%n ingresar un nombre de producto no )%lido. "ambi<n se pueden usar botones de opci!n para un n?mero peque/o de opciones, o casillas de )erificaci!n para opciones de tipo booleanas. %so de la propiedad Ma!#engt& La propiedad Max%engt8 determina la longitud m%,ima de una cadena en un cuadro de te,to. El sistema emitir% un sonido (beep) cuando el usuario trate de escribir una cadena que e,ceda la longitud m%,ima. -i se desea )isualizar un mensa e de error, se necesita interceptar la tecla oprimida en el e)ento GeyPress. %so de la propiedad #oc'ed La propiedad %oc9ed determina si los usuarios pueden modificar los datos en un cuadro de te,to. -i la propiedad %oc9ed es establecida a 'r&e, los usuarios s!lo pueden )er y copiar los datos de un cuadro de te,to. %so del Evento (eyPress para )alidar *atos -e pueden emplear los e)entos GeyPress, Gey$oAn y Gey2p para )alidar datos mientras el usuario escribe. -e puede pre)enir que el usuario ingrese ciertos caracteres (por e emplo, puede limitar el ingreso de datos a )alores num<ricos). -e puede tambi<n modificar los datos mientras son ingresados (por e emplo, puede con)ertir todos los caracteres a may?sculas).

El e)ento GeyPress tiene lugar cuando el usuario ingresa un car%cter @-C66 est%ndar. Esto no incluye la mayor#a de la teclas especiales, tales como las teclas de funci!n, las teclas direccionales, o la tecla $ELE"E. Para responder a estas teclas se debe emplear los e)entos Gey$oAn y Gey2p. El siguiente c!digo cambia los caracteres a may?sculas mientras el usuario escribe. Pri)ate -ub "e,t3CGeyPress(Gey@scii as 6nteger) Gey@scii D @sc(2case(C&r(Gey@scii))) End -ub El siguiente c!digo pre)iene que los usuarios ingresen s!lo )alores num<ricos en un cuadro de te,to.

Para )isualizar una lista de los )alores @-C66, busque A/CII en la ayuda de (isual +asic. 7alidacin de In1ormacin a :i*el de 2orm&lario @dem%s de emplear t<cnicas a ni)el de campo para )alidar los datos mientras son ingresados, se puede escribir c!digo que )alide los datos en todos los campos de un formulario al mismo tiempo. En esta parte del curso se )er%n las t<cnicas de )alidaci!n a ni)el de formulario soportadas por (isual +asic. +abilitando el ,otn -ceptar 2na forma de )alidar la informaci!n del formulario ser#a la de asegurar que un usuario &a ingresado los datos en todos los campos en un formulario antes de que se le permita continuar. Esto puede lle)arse a cabo des&abilitando el bot!n @ceptar en un formulario &asta que el usuario &aya llenado todos los campos, como se muestra a continuaci!n.

Para comprobar cada tecla oprimida en un formulario, se debe establecer la propiedad ;eyPre*ie< de un formulario a 'r&e. El formulario recibe primero el e)ento del teclado y luego lo recibe el control. El siguiente c!digo &abilita el bot!n @ceptar luego de ingresar datos en todos los campos.

)alidacin de .odos los Campos de un ormulario 2na manera sencilla de )alidar todos los campos de un formulario al mismo tiempo es poniendo el c!digo de )alidaci!n en el e)ento Clic* del bot!n Aceptar. En esta caso, la aplicaci!n le permite al usuario completar el ingreso de datos en todos los campos del formulario y luego )alidarlos. La aplicaci!n establece el enfoque en el primer campo que contiene los datos incorrectos. El siguiente c!digo )alida todos los campos num<ricos del formulario mostrado anteriormente.

%so del Evento /uery%nload

El e)ento Huery2nload tiene lugar usto antes del e)ento 2nload cuando el formulario es descargado. El e)ento Huery2nload permite determinar como fue iniciado el e)ento 2nload y cancelar este e)ento. Es ?til cuando un usuario no &a completado el ingreso de datos a un formulario, o cuando se quisiera preguntar al usuario si desea grabar cambios realizados antes cerrar el formulario. El e)ento Huery2nload tiene los siguientes argumentos8

El argumento Cancel cancela el e)ento 2nload. -i Cancel se establece a 'r&e la aplicaci!n permanece como estaba antes de que se intentara la descarga. El argumento 4nloadMode indica como fue iniciado el e)ento 2nload.

7alores 0&e se p&eden o+tener El argumento 4nloadMode 0modo1descarga2 de)uel)e los siguientes )alores8

El siguiente c!digo cancela el e)ento 2nload y pregunta al usuario antes de cerrar el formulario.

Notas3

Cuando se cierra un objeto MDIForm4 el evento /uery%nload ocurre primero para el formulario M*5 principal y despus en todos los formularios secundarios M*56 Si ning7n formulario cancela el evento /uery%nload4 ocurre el evento %nload primero en todos los dems formularios y despus en un formulario M*5 principal6 Cuando un formulario secundario o un objeto Form se cierra4 el evento /uery%nload de ese formulario ocurre antes 8ue el evento %nload del formulario6 Cuando una aplicacin se cierra4 puede utili9ar los procedimientos de evento /uery%nload o %nload para establecer la propiedad Cancel a True4 deteniendo el proceso de cierre6 Sin embargo4 el evento /uery%nload ocurre en

todos los formularios antes de 8ue se descargue ninguno de ellos y el evento %nload ocurre conforme se descarga cada formulario6 Manip&lacin de Errores en 'iempo de E"ec&cin 'o importa lo bien que se dise/e una aplicaci!n, los errores en tiempo de e ecuci!n siempre ocurrir%n. Los usuarios ol)idan poner los discos en las unidades, sistemas se e ecutan con poca memoria, y arc&i)os no se encuentran donde se supone deber#an estar. @/adiendo c!digo de manipulaci!n de errores efecti)o a una aplicaci!n, se crean aplicaciones m%s robustas. Entendiendo el Proceso de Manipulacin de Errores El proceso de manipulaci!n de errores in)olucra los siguientes pasos. 3. ;abilitar la interceptaci!n de errores que especifica &acia donde se bifurcar% la e ecuci!n cuando ocurra un error. 4. Escribir el c!digo de manipulaci!n de errores. 9. -alir del c!digo de manipulaci!n de errores. La instrucci!n On Error (o'o &abilita la interceptaci!n de errores y especifica &acia donde saltar% la e ecuci!n cuando ocurra un error. -i ocurriera un error en tiempo de e ecuci!n, la e ecuci!n saltar% &acia la etiqueta especificada por la instrucci!n On Error (o'o. El manipulador de errores e ecuta el c!digo de manipulaci!n de errores seguido por una instrucci!n .es&me que indica donde deber% continuar el proceso. El siguiente c!digo muestra como emplear las instrucciones On Error (o'o y .es&me.

En el c!digo o rutina de manipulaci!n de errores, se emplean las propiedades y m<todos del ob eto Err para )erificar que error ocurri!, borrar un )alor de error o desencadenar un error. #as Propiedades del "bjeto Err La propiedad :&m+er es un entero que indica el ?ltimo error que tu)o lugar. Para determinar que error &a ocurrido, se )erifica el )alor de Err.:&m+er. En algunos casos, se puede corregir un error y permitir continuar el proceso sin interrumpir el usuario. En otros, se deber% notificar al usuario de un error, y tomar alguna acci!n basada en la respuesta del usuario. La propiedad #escription es una cadena que contiene una descripci!n del error. La propiedad /o&rce contiene el nombre del ob eto aplicaci!n que gener! el error. Es ?til cuando se emplea @utomatizaci!n. Por e emplo, si se traba a con Microsoft E,cel y genera un error, Microsoft E,cel establecer% Err.:&m+er al c!digo de error apropiado y establecer% Err./o&rce a Excel.Application. #os Mtodos del "bjeto Err El m<todo Clear establece el )alor de Err.:&m+er a cero. +%sicamente, el m<todo Clear se emplea borrar e,pl#citamente el ob eto Err despu<s de controlar un error. El m<todo .aise genera un error en tiempo de e ecuci!n. Por e emplo, se podr#a emplear este m<todo para probar el c!digo de manipulaci!n de errores. Err.:aise F9 I@rc&i)o no encontrado "pciones de las 5nstruccin $esume La instrucci!n .es&me se emplea para especificar donde continuar% el proceso de una aplicaci!n luego de manipular un error. La siguiente tabla lista los tres tipos de instrucciones .es&me disponibles en (isual +asic. Instr&ccin #escripcin .es&me :egresa a la instrucci!n que gener! el error. Emplee .es&me para repetir una operaci!n luego de corregir el error. Instr&ccin #escripcin .es&me :ext :egresa a la instrucci!n inmediatamente siguiente a la que gener! el error. .es&me l:nea La e ecuci!n contin?a en la l#nea especificada en el argumento obligatorio l#nea. Nota3

Si utili9a una instruccin Resume en otro sitio 8ue no sea una rutina de manipulacin de errores4 ocurre un error6

#es8a+ilitando la Manip&lacin de Errores Puede ser dif#cil depurar c!digo que tiene &abilitada la manipulaci!n de errores. (isual +asic puede e ecutar el c!digo de manipulaci!n de errores cuando se quiera ingresar al modo de 6nterrupci!n y depurar la aplicaci!n. (isual +asic proporciona opciones para des&abilitar la manipulaci!n de errores en el momento de la depuraci!n.

Para cambiar como ser%n manipulados los errores8

3. En el men? 3erramientas, &aga clic en Opciones. 4. En la fic&a (eneral, deba o de Interceptacin de errores, &aga clic en la opci!n deseada y luego en Aceptar. La siguiente tabla describe las opciones de manipulaci!n de errores disponibles deba o de Interceptacin de errores en la fic&a (eneral.

Compilacin de &na Aplicacin 2na )ez finalizada la creaci!n de una aplicaci!n, se puede crear el arc&i)o e ecutable para los usuarios. Esta parte del curso describe como compilar un proyecto. Creacin de un -rc&ivo Ejecutable Crear un arc&i)o e ecutable en (isual +asic es un proceso sencillo. 3. En el men? Arc8i*o, &aga clic en (enerar =:om+reProyecto>.exe 4. 6ngrese el nombre para el arc&i)o e ecutable. 9. Para a/adir informaci!n espec#fica de )ersi!n8

En el cuadro de di%logo (enerar proyecto , &aga clic en el bot!n Opciones. En la fic&a (enerar escriba los n?meros de )ersi!n y el te,to de informaci!n de la )ersi!n , y luego &aga clic en Aceptar.

@dem%s del arc&i)o e ecutable, se debe de proporcionar di)ersas $LLIs y otros arc&i)os a los usuarios. -e deber#a crear un programa de instalaci!n que instale la aplicaci!n en la computadora del usuario. El Asistente para instalar aplicaciones de (isual +asic &ace sencilla la tarea de crear discos o una carpeta de distribuci!n para una aplicaci!n. Los usuarios pueden luego e ecutar el programa de instalaci!n en sus computadoras para instalar y registrar los arc&i)os apropiados. Parte ?: Controles Estndar A*an$ados y Acceso a #atos

Control Cuadro de Lista de 2nidades ($ri)eList+o,) 2n control $ri)eList+o, permite al usuario seleccionar una unidad de disco )%lida en tiempo de e ecuci!n. 2tilice este control para mostrar una lista de todas las unidades )%lidas del sistema de un usuario. Puede crear cuadros de di%logo que permitan al usuario abrir un arc&i)o de una lista de un disco en cualquier unidad disponible. Propiedades $ri)e $e)uel)e o establece la unidad seleccionada en tiempo de e ecuci!n. 'o est% disponible en tiempo de dise/o.

List Contiene la lista de cone,iones de unidad efecti)as. ListCount $e)uel)e el n?mero de cone,iones con unidades de disco. List6nde, $e)uel)e o establece el #ndice del elemento seleccionado actualmente en el control. 'o est% disponible en tiempo de dise/o. Eventos C&ange 7curre cuando el usuario selecciona una nue)a unidad o cuando se cambia la configuraci!n de la propiedad $ri)e mediante c!digo.

Control Cuadro de Lista de $irectorios ($irList+o,) 2n control $irList+o, muestra directorios y rutas de acceso en tiempo de e ecuci!n. 2tilice este control para mostrar una lista er%rquica de directorios. Puede crear cuadros de di%logo que, por e emplo, permitan a un usuario abrir un arc&i)o desde una lista de arc&i)os de todos los directorios disponibles. Propiedades List Contiene una lista de todos los directorios. ListCount $e)uel)e el n?mero de subdirectorios del directorio actual. List6nde, 6ndica el #ndice de la ruta de acceso actual. Pat& El )alor de la propiedad Pat& es una cadena que indica una ruta de acceso, como C8J7b o C8JKindoAsJ-ystem. Eventos C&ange 7curre cuando el usuario &ace doble clic en un nue)o directorio o cuando se cambia la configuraci!n de la propiedad Pat& mediante c!digo.

Control Cuadro de Lista de @rc&i)os (FileList+o,) El control FileList+o, encuentra y muestra los arc&i)os del directorio especificado por la propiedad Pat& en tiempo de e ecuci!n. 2tilice este control para mostrar una lista de los arc&i)os seleccionados por tipo. Puede crear cuadros de di%logo en la aplicaci!n que, por e emplo, permitan al usuario seleccionar un arc&i)o o un grupo de arc&i)os. Propiedades File'ame $e)uel)e o establece el nombre de un arc&i)o seleccionado.

List Contiene una lista con los arc&i)os del directorio e,pandido actualmente que coinciden con la propiedad Pattern. 'o se incluye la ruta de acceso. ListCount $e)uel)e el n?mero de arc&i)os del directorio actual que coinciden con el )alor de la propiedad Pattern. List6nde, $e)uel)e o establece el #ndice del elemento seleccionado actualmente. Pat& El )alor de la propiedad Pat& es una cadena que indica una ruta de acceso, como C8J7b o C8JKindoAsJ-ystem. Pattern $e)uel)e o establece un )alor que indica los nombres de arc&i)o mostrados en un control FileList+o, en tiempo de e ecuci!n. Eventos Clic* 7curre cuando el usuario presiona y suelta un bot!n del rat!n en un control FileList+o,.

Control 6magen (6mage) El control 6mage se utiliza para mostrar un gr%fico. 2n control 6mage puede mostrar un gr%fico desde un mapa de bits, un icono o un metarc&i)o, as# como un metarc&i)o me orado, un arc&i)o LPE5 o arc&i)os 56F. Propiedades Picture $e)uel)e o establece un gr%fico que se mostrar% en el control. "ambi<n se le puede asignar un gr%fico de)uelto por la funci!n LoadPicture. -tretc& "rue.False. $e)uel)e o establece un )alor que indica si un gr%fico cambia su tama/o para a ustarse al de un control 6mage. Comentarios El control Image utili9a menos recursos del sistema y actuali9a con ms rapide9 8ue un control PictureBox4 pero slo admite un subconjunto de las propiedades4 los eventos y los mtodos de PictureBox6 %se la propiedad Stretc& para determinar si el grfico se escala para ajustarse al control o viceversa6 -un8ue puede colocar un control Image dentro de un contenedor4 un control Image no puede actuar como contenedor6 2&ncin %oadPict&re@A Carga un gr%fico en un ob eto Picture, un control Picture+o, o un control 6mage. 2ormato: LoadPicture(;ombre*e-rc&ivo<rfico)

"ambi<n se puede usar la funci!n %oadPict&re@A para asignar un icono a un formulario o al puntero del rat!n mostrado en pantalla. E"emplos de la 1&ncin %oadPict&re@A: IEstablece el icono del formulario -et Form3.6con D LoadPicture(MM66C7'7.6C7M) IEstablece el puntero del rat!n -creen.Mouse6con D LoadPicture(MM66C7'7.6C7M) -creen.MousePointer D NN Creacin de &n *isor de imgenes

El cdigo para los controles es el sig&iente:

Control 'empori$ador @'imerA

2n control 'imer puede e ecutar c!digo a inter)alos peri!dicos produciendo un e)ento "imer. El control 'imer, in)isible para el usuario, resulta ?til para el procesamiento de fondo. 'o e,iste ning?n l#mite pr%ctico en cuanto al n?mero de controles 'imer acti)os que se puede tener en (isual +asic F.0 e ecut%ndose en KindoAs NF o en KindoAs '". Propiedades Enabled "rue.False. @cti)a o desacti)a el control. -i se desacti)a el control 'imerestableciendo Enabled a False, se cancelar% la cuenta atr%s establecida por la propiedad 6nter)al del control. 6nter)al $e)uel)e o establece el n?mero de milisegundos entre las llamadas al e)ento "imer de un control 'imer. Los )alores admitidos para milisegundos son 0, que desacti)a el control 'imer, o de 3 a >FF9F. El m%,imo, >FF9F milisegundos, equi)ale a poco m%s de un minuto. Eventos "imer 7curre cuando &a transcurrido un inter)alo preestablecido para el control 'imer. E"emplo de &so del control 'imer

Minimi$a el 1orm&lario y acti*a el control tempori$ador 'imer Pri)ate -ub cmdEstablecerCClic*() Form3.KindoA-tate D 3 "imer3.Enabled D "rue

End -ub 'ermina la e"ec&cin de la aplicacin Pri)ate -ub cmd-alirCClic*() End End -ub Compara la 8ora act&al con la 8ora ingresada en el c&adro txt3ora cada seg&ndo y m&estra el mensa"e esta+lecido en caso de 0&e sean ig&ales- desacti*a el control tempori$ador y resta&ra la *entana a s& tama)o normal.

4so del control #ata En (isual +asic puede utilizar el control #ata para crear aplicaciones de bases de datos para una gran )ariedad de formatos de base de datos. El control #ata interact?a con el motor de base de datos Microsoft Let y permite crear aplicaciones preparadas para datos con la m#nima cantidad de c!digo posible. 7ista (eneral del Acceso a #atos @ntes de traba ar con la funcionalidad de base de datos desde (isual +asic, se debe entender las capacidades de acceso a datos, as# como, la terminolog#a empleada. Opciones de Acceso a #atos en 7is&al Basic Esta parte del curso enumera las di)ersas opciones que (isual +asic proporciona para acceder a datos. %so del Motor de ,ase de *atos Microsoft =et Los ob etos de acceso a datos 1 $ata @ccess 7b ects (#AO) y el control #ata usan el motor de base de datos Microsoft Let para acceder a bases de datos. El motor de base de datos Let puede acceder a los siguientes 9 tipos de bases de datos.

Bases de datos Bet

Estas bases de datos son creadas y manipuladas directamente por el motor Let. Microsoft @ccess y (isual +asic emplean el mismo motor de base de datos Let.

Bases de datos de Mtodo de Acceso /ec&encial Indexado @I/AMA

Los formatos de estas bases de datos incluyen +trie)e, d+ase, Microsoft (isual Fo,Pro, y Parado,.

Bases de datos compati+les con O#BC @Open #ataBase Connecti*ity C Conecti*idad A+ierta de Base de #atosA

Estas bases de datos incluyen las bases de datos cliente.ser)idor que conforman el est%ndar 7$+C, tal como Microsoft -HL -er)er. La mayor#a de bases de datos que soportan 7$+C pueden ser accedidas empleando (isual +asic. "tros mtodos de -cceso a *atos Los otros m<todos de acceso a datos soportados por (isual +asic incluyen8

El control Origen de #atos .emoto @.emote #ata /o&rceA

Este es un control que emplea 7$+C para acceder a bases de datos 7$+C tales como Microsoft -HL -er)er y 7racle. El control Origen de #atos .emoto s!lo est% disponible en la edici!n Empresarial de (isual +asic.

%i+rer5as O#BC

Estas librer#as permiten que se llame a la interface de programaci!n de aplicaciones (@P6) de 7$+C directamente y est%n disponibles como un producto separado.

%i+rer5as /D% de 7is&al Basic

Estas librer#as proporcionan un enlace directo a Microsoft -HL -er)er, y est%n disponibles como un producto separado. Entendiendo los Conceptos +%sicos acerca de las +ases de $atos La mayor#a de sistemas de bases de datos emplean el modelo de base de datos relacional. Este modelo presenta los datos como una colecci!n de tablas. 2na tabla es un grupo l!gico de informaci!n relacionada. Por e emplo, la base de datos 'eptuno contiene una tabla que almacena a los empleados, y otra almacena los pedidos de una compa/#a ficticia. La base de datos 'eptuno.mdb es una base de datos de e emplo incluida con Microsoft @ccess.

Elementos de &na 'a+la La base de datos 'eptuno contiene un n?mero de tablas que agrupan la informaci!n. Estas tablas incluyen Pedidos, Clientes, y Empleados. En una base de datos Let, las filas de la tabla son denominadas registros, y las columnas campos.

#a Clave Principal Cada tabla debe de tener una cla)e principal, que es un campo (o una combinaci!n de campos) que es ?nico para cada registro en la tabla. Por e emplo, el campo 6dEmpleado es la cla)e principal para la tabla Empleados.

2na tabla puede tambi<n tener cla)es for%neas, que son campos que &acen referencia a una cla)e principal de otra tabla. Por e emplo, en la base de datos 'eptuno, la tabla Pedidos tiene un campo llamado 6dCliente. Este campo es una cla)e for%nea porque &ace referencia a un cliente de la tabla Clientes. En )ez de duplicar toda la informaci!n del cliente por cada pedido, s!lo se ingresa la cla)e principal del cliente a quien pertenece el pedido, como la cla)e principal es ?nica por cada cliente, &ay un solo cliente por cada pedido, y un cliente puede tener muc&os pedidos. En t<rminos de una base de datos, la relaci!n entre la tabla Clientes y la tabla Pedidos es una relaci!n del tipo unoOaO)arios. $egistros 2n registro contiene informaci!n acerca de un solo ingreso en una tabla. 5eneralmente, no se desea que dos registros en una tabla tengan los mismos datos. Por e emplo, un registro en la tabla Empleados contiene informaci!n acerca de un ?nico empleado. Campos Cada campo en una tabla contiene una parte de la informaci!n. Por e emplo, la tabla Empleados incluye campos para el 6d del empleado, @pellidos, 'ombre, etc. 5ndices Los #ndices de una tabla de una base de datos son listas ordenadas que son m%s r%pidas para las b?squedas que las tablas en s#. Para &abilitar un acceso m%s r%pido a una base de datos, la mayor#a de bases de datos emplean uno o m%s #ndices. Por e emplo, la tabla Empleados tiene un #ndice para la columna 6dEmpleado. 'ra+a"ando con el Control #ata El control #ata de (isual +asic permite escribir aplicaciones de bases de datos muy eficaces con muy poco c!digo. En esta parte se aprender% a generar aplicaciones de bases de datos con el control #ata y el ob eto .ecordset asociado. "ambi<n se aprender% como el @sistente para Formularios de $atos puede construir una aplicaci!n que incluye el control #ata. 'ener Acceso a #atos con el Control #ata El control #ata implementa el acceso a datos mediante el motor de base de datos Microsoft Let. Esta tecnolog#a proporciona acceso a muc&os formatos de base de datos y permite crear aplicaciones que mane an datos sin necesidad de escribir c!digo. Para crear una aplicaci!n de base de datos que emplee el control #ata, se siguen los siguientes pasos8 3. @/adir el control #ata al formulario y establecer las propiedades para especificar la base de datos y la tabla desde la cual se obtendr%n los datos.

4. @/adir controles enlazados a datos al formulario, y establecer las propiedades para enlazar los controles al control #ata para que los datos puedan ser mostrados. 2so de Controles Enlazados a $atos Cuando un control que &a colocado en un formulario se enlaza a datos, se muestran autom%ticamente los datos de la base de datos en el control enlazado. -i un usuario cambia los datos de un control enlazado, dic&os cambios se actualizar%n autom%ticamente en la base de datos en cuanto el usuario se desplace a otro registro. Muc&os controles intr#nsecos o est%ndar de (isual +asic permiten ser enlazados a datos, como es el caso de los controles C8ec9Box, Image, %a+el, Pict&reBox, 'extBox, %istBox, Com+oBox y los contenedores O%E. La siguiente ilustraci!n es un e emplo de un formulario que contiene un control #ata y dos controles enlazados.

Esta+lecer las Propiedades del Control #ata Los siguientes pasos describen como conectar un control #ata a una base de datos. 3. Especificar las base de datos a la cual se quiere acceder estableciendo la propiedad #ata+ase:ame al nombre de la base de datos. 4. Para especificar que registros recuperar, establecer la propiedad .ecord/o&rce al nombre de la tabla dentro de la base de datos, o a una cadena -HL. Nota3 Para acceder a una base de datos d,ase4 Parado!4 o ,trieve4 se debe establecer la propiedad Data aseName a la carpeta 8ue contiene los arc&ivos de la base de datos4 y la propiedad Connect al tipo apropiado de base de datos6 Enla$ar Controles $espu<s de establecer los )alores de las propiedades para el control #ata, es necesario enlazar al control #ata controles indi)iduales y despu<s especificar qu< campo de la tabla mostrar% cada control.

3. En tiempo de dise/o, establecer la propiedad #ata/o&rce del control enlazado a datos al control #ata. 4. En tiempo de dise/o o en tiempo de e ecuci!n, especificar que campo se desea mostrar en el control enlazado estableciendo la propiedad #ata2ield. La propiedad #ata2ield puede ser establecida en tiempo de dise/o o en tiempo de e ecuci!n. 2sar las Propiedades y M<todos del Control $ata Para especificar los datos que se desean recuperar, se debe establecer las propiedades #ata+ase:ame y .ecord/o&rce de un control #ata. @dem%s, se pueden establecer las siguientes propiedades y m<todos. #a Propiedad Connect Esta propiedad especifica el tipo de base de datos a abrir. Puede incluir argumentos tales como un nombre de usuario (user 6$) y una contrase/a. #a Propiedad E!clusive La propiedad Excl&si*e determina si se tiene o no un uso e,clusi)o de la base de datos. -i esta propiedad se establece a 'r&e, y luego se abre sin problemas la base de datos, ninguna otra aplicaci!n podr% abrirla &asta que sea cerrada. #a Propiedad $ead"nly Esta propiedad determina si se puede o no actualizar o grabar cambios en la base de datos. -i no se tiene planeado &acer cambios en la base de datos, es m%s eficiente establecer la propiedad .eadOnly a 'r&e. #a Propiedad $ecordset La propiedad .ecordset es un ob eto que contiene el con unto de registros de)ueltos por el control #ata. Esta propiedad contiene a su )ez propiedades y m<todos que pueden ser usados para traba ar con los registros de)ueltos. #as Propiedades ," -ction y E" -ction Estas propiedades determinan que acci!n tomar% el control #ata cuando las propiedades BO2 o EO2 del recordset tomen como )alor 'r&e. Por e emplo, si la propiedad EO2Action del control #ata es establecida a )b@ction@dd'eA, y se emplea el control #ata para desplazarse, una )ez que se pase el ?ltimo registro, el control #ata autom%ticamente e ecutar% el m<todo Add:e< de modo que se pueda a/adir un nue)o registro. El Mtodo $efres&

El m<todo .e1res8 renue)a el ob eto .ecordset. -i se cambia la propiedad .ecord/o&rce en tiempo de e ecuci!n, se debe in)ocar al m<todo .e1res8 para reno)ar el recordset. El siguiente c!digo muestra como emplear el m<todo .e1res8. $ata3.:ecord-ource D M-ELEC" E F:7M Empleados M P C MK;E:E Q6dEmpleadoR D M P t,t6dEmp."e,t $ata3.:efres& El O+"eto .ecordset En una aplicaci!n de base de datos, los usuarios traba an con el control #ata para desplazarse entre registros dentro de la base de datos. Los usuarios pueden &acer clic en los botones del control #ata para a)anzar o retroceder registro a registro o para ir directamente al primer o al ?ltimo registro. /u es un $ecordset? "odo el con unto de registros al que &ace referencia un control #ata se denomina con unto de registros o .ecordset. El .ecordset se almacena en la memoria, transfiri<ndose al disco si es necesario. Para manipular el .ecordset, se emplea la propiedad .ecordset del control #ata. El .ecordset contiene el registro actual. La informaci!n del registro actual es mostrada por los controles enlazados. -e puede cambiar la posici!n del registro actual &aciendo clic en el control #ata o escribiendo c!digo que emplee m<todos del ob eto .ecordset. *eterminar los l:mites de un $ecordset -i utiliza c!digo para cambiar la posici!n del registro actual, debe comprobar las propiedades EO2 y BO2 del ob eto .ecordset para determinar el inicio y el final del mismo. Cuando se desplace al registro EO2 o al BO2, se e ecutar% la acci!n indicada por el )alor de la propiedad BO2Action o EO2Action. Por e emplo, se puede establecer la propiedad EO2Action para a/adir un nue)o registro autom%ticamente. -i se establece la propiedad EO2Action a EO2, ninguna acci!n ser% tomada cuando se desplace al registro EO2. Cuando se desplace pasando un registro los registros BO2 o EO2, se producir% un error en tiempo de e ecuci!n. En la siguiente ilustraci!n se muestra c!mo las propiedades BO2 y EO2 determinan los l#mites del ob eto .ecordset.

Para emplear el ob eto .ecordset de un control #ata determinado, se debe especificar la propiedad .ecordset del control $ata, como se muestra en el siguiente c!digo. $ata3.:ecordset.Mo)e'e,t IMue)e el registro actual al siguiente 6f $ata3.:ecordset.E7F "&en $ata3.:ecordset.Mo)eLast 2so de las Propiedades y M<todos de un :ecordset 2tilice los m<todos y las propiedades del ob eto .ecordset para recuperar informaci!n del con unto de registros, desplazarse por los registros y agregar, actualizar o eliminar registros. #as Propiedades ," y E" Las propiedades BO2 y EO2 del ob eto .ecordset indican si la posici!n del registro actual es antes del primer registro o despu<s del ?ltimo registro dentro del con unto de registros. -i no &ay registros en el recordset, entonces el )alor de las propiedades BO2 y EO2 es 'r&e. El Mtodo -dd;e> del $ecordset Para agregar un nue)o registro a un recordset, se emplea el m<todo Add:e<. Cuando se e ecuta el m<todo Add:e<, (isual +asic limpia los controles enlazados y establece la propiedad EditMode del control #ata a dbEdit@dd. El nue)o registro no ser% a/adido a la base de datos &asta que sea e ecutado e,pl#citamente un m<todo 4pdate.ecord o 4pdate, o &asta que el usuario se mue)a a otro registro. El siguiente c!digo muestra como agregar un nue)o registro a un recordset. Pri)ate -ub cmd@gregarCClic*() $ata3.:ecordset.@dd'eA

El Mtodo %pdate$ecord del Control *ata El m<todo 4pdate.ecord se emplea para grabar el registro actual a una base de datos. El siguiente c!digo muestra como grabar el registro actual y actualizar la base de datos. Pri)ate -ub cmd5rabarCClic*() $ata3.2pdate:ecord El Mtodo Cancel%pdate del Control *ata El m<todo Cancel4pdate se emplea para cancelar un m<todo Add:e< o Edit y reno)ar o refrescar los controles enlazados con datos del recordset. Por e emplo, si un usuario &a modificado los campos de un formulario, pero toda)#a no los &a actualizado, el m<todo Cancel4pdate refrescar% los campos con los datos originales del recordset. -i un usuario selecciona un bot!n Agregar de un formulario, y luego decide no agregar el registro, el m<todo Cancel4pdate cancelar% la operaci!n y )isualizar% el registro actual. El siguiente c!digo muestra como cancelar la agregaci!n o edici!n de un registro. Pri)ate -ub cmdCancelarCClic*() $ata3.Cancel2pdate El Mtodo *elete del $ecordset Para eliminar un registro de una base de datos, se emplea el m<todo #elete. El registro eliminado permanecer% como el registro actual &asta que el usuario se mue)a a un registro diferente, como se muestra en el siguiente c!digo. Pri)ate -ub cmdEliminarCClic*() $ata3.:ecordset.$elete $ata3.:ecordset.Mo)e'e,t 6f $ata3.:ecordset.E7F "&en $ata3.:ecordset.Mo)eLast End 6f End -ub Nota3 #a base de datos ;eptuno tiene definidas reglas de integridad referencial 8ue impiden eliminar registros relacionados6

4so del Asistente para 2orm&larios de #atos El @sistente para Formularios de $atos es una utilidad de (isual +asic que genera formularios de datos simples que emplean el control #ata. -e puede emplear el @sistente para Formularios de $atos para construir r%pidamente formularios para una aplicaci!n de base de datos. Para cargar el @sistente para Formularios de $atos, se emplea la orden Administrador de Complementos del men? Complementos. 4so de los E*entos del Control #ata El control #ata proporciona tres e)entos que puede utilizar para me orar la aplicaci!n de base de datos8 (alidate, Error y :eposition. $ic&os e)entos permiten omitir parte del comportamiento predeterminado del control #ata. %sar el Evento )alidate 2tilice el e)ento (alidate para comprobar los datos antes de guardar un registro en la base de datos. Este e)ento se produce usto antes de que (isual +asic escriba en la base de datos los cambios procedentes de los controles enlazados y de que )uel)a a colocar el puntero del registro actual en otro registro de la base de datos. Puede utilizar el e)ento (alidate para pedir al usuario que confirme los cambios realizados. !intaxis El e)ento (alidate tiene la siguiente sinta,is8 Pri*ate /&+ #ata E7alidate (inde! As Integer, action As Integer, save As Integer) "l #rgumento #ction El argumento action indica la operaci!n que pro)oc! el e)ento (alidate. El e)ento (alidate se produce como resultado de realizar las operaciones siguientes8

Mo*e2irst, Mo*ePre*io&s, Mo*e:ext, Mo*e%ast Add:e< 4pdate #elete 2ind Establecer la propiedad Boo9mar9 Cerrar la base de datos $escargar el formulario

Para cancelar cualquiera de estas acciones, asigne al argumento action el )alor )b$ata@ctionCancel.

"l #rgumento !a$e El argumento save indica si )a a guardarse o no el registro. -i save es 'r&e, los datos enlazados &an cambiado. Para cancelar la acci!n de guardar puede asignar a save el )alor 2alse. El siguiente c!digo pide al usuario que confirme los cambios &ec&os a la base de datos. -i el usuario responde 'o, los cambios ser%n cancelados.

%sar el Evento $eposition 2tilice el e)ento :eposition para modificar la apariencia de un formulario o realizar una acci!n necesaria cuando se desplace a un nue)o registro. Este e)ento tiene lugar cuando (isual +asic desplaza el puntero del registro actual a otro registro de la base de datos. "ambi<n se produce la primera )ez que se abre la base de datos. Modi%icar la a&ariencia de un %ormulario Para cambiar la manera en que un formulario muestra informaci!n bas%ndose en el registro seleccionado en ese momento &ay que utilizar el e)ento :eposition. Por e emplo, puede modificar el t#tulo del control #ata de forma que se muestre el registro n?mero n. Para )er el n?mero del registro actual, utilice la propiedad A+sol&tePosition del ob eto .ecordset. El n?mero de registro es relati)o a cero, por lo que el primer registro es el 0. El siguiente c!digo muestra como )isualizar el n?mero del registro actual. Pri)ate -ub $ata3C:eposition() $ata3.Caption D M:egistro 'SM P $ata3.:ecordset.@bsolutePosition T 3 End -ub Tratar los cam ios al des&la'arse a un nue$o registro

Cuando un usuario se desplaza a un nue)o registro mediante el control #ata, puede que los datos del formulario tengan que presentarse de una forma distinta en el caso del nue)o registro. Por e emplo, es posible que en un formulario que muestre registros de empleados &aya distintas opciones dependiendo de s# los empleados son fi os, temporales o si traba an por &oras. Cada registro mostrar% la informaci!n sobre un empleado distinto, cuyas opciones pueden no ser las mismas para todos los registros. Para que se seleccione la opci!n correcta para cada registro, escriba c!digo en el e)ento :eposition. El c!digo siguiente utiliza el e)ento :eposition para modificar la apariencia de un formulario.

Esta ilustraci!n muestra el formulario basado en el c!digo anterior.

%sar el Evento Error El e)ento Error tiene lugar cuando un usuario interact?a con el control #ata y se produce un error de acceso a datos. 2tilice el e)ento Error para agregar tratamiento de errores personalizado al control #ata. Por e emplo, si un usuario modifica un campo y despu<s &ace clic en el control #ata para desplazarse al siguiente registro, el control #ata actualizar% el registro actual. -i se produce un error de acceso a datos durante la actualizaci!n, se producir% el e)ento Error. Los )alores de los campos enlazados no cambian tras producirse un error. El usuario puede corregir los )alores y &acer clic en el control #ata para tratar de actualizar nue)amente el registro. Mostrar un mensa(e de error &ersonali'ado

-i no coloca c!digo para tratar errores en el e)ento Error y se produce un error cuando un usuario interact?a con el control #ata, (isual +asic muestra el mensa e de error y el programa contin?a e ecut%ndose. -i no desea que se muestre el mensa e de error est%ndar, puede asignar al argumento :esponse el )alor 0 y mostrar un mensa e de error personalizado como se muestra en el siguiente c!digo.

4so de Controles Enla$ados a #atos Acti*eF @dem%s de los controles enlazados intr#nsecos, (isual +asic ofrece )arios controles Acti*eF enlazados a datos. En esta parte del curso se describen algunos controles @cti)eU enlazados a datos a)anzados.

%sar el Control *,<rid El control de cuadr#cula enlazada a datos (control #B(rid) permite que los usuarios de su aplicaci!n de base de datos traba en con )arios registros a la )ez. Mostrar m)lti&les registros #B(rid es un control @cti)eU que muestra una serie de filas y columnas que representan registros y campos de un ob eto .ecordset. Cuando asigne a la propiedad #ata/o&rce del control #B(rid un control #ata, el control #B(rid se llenar% autom%ticamente de datos y se establecer%n autom%ticamente sus encabezados de columna a partir del con unto de registros del control #ata. @l contrario que la mayor#a de los controles enlazados a datos, el control #B(rid le permite )er y modificar )arios registros simult%neamente. En la siguiente ilustraci!n se muestra un formulario que utiliza un control #B(rid para presentar registros procedentes de la base de datos 'eptuno.

Para a)adir el control #B(rid a &n proyecto

3. ;acer clic en la orden Componentes del men? Proyecto. 4. En la fic&a Controles, seleccionar Microso1t #ata Bo&nd (rid Control, y luego &acer clic en Aceptar. El control #B(rid tiene )arias propiedades que especifican c!mo se comporta el control. Por e emplo, si asigna a la propiedad Allo<4pdate el )alor 'r&e, un usuario puede modificar los datos del control. "ambi<n puede establecer propiedades para columnas indi)iduales del control #B(rid. Puede cambiar el t#tulo de la columna, cambiar el campo de datos al que se enlaza la columna, agregar )alores predeterminados, etc.

Para esta+lecer propiedades de col&mnas

3. 7prima el bot!n secundario del rat!n sobre el control #B(rid. 4. ;aga clic en la orden Propiedades. 9. ;aga clic en Col&mnas. Puede cambiar el t#tulo de la columna, cambiar el campo de datos al que se enlaza la columna, agregar )alores predeterminados, etc. Para establecer los encabezados de las columnas del control #B(rid, luego de &aberlo enlazado a un control #ata, oprima el bot!n secundario del rat!n sobre el control en tiempo de dise/o, y luego &aga clic en la orden .ec&perar campos. * tener + esta lecer el texto de la celda actual 2tilice la colecci!n Col&mns del control #B(rid para recuperar el te,to de la celda seleccionada actualmente en tiempo de e ecuci!n. Por e emplo8 Msg+o, $+5rid3.Columns($+5rid3.Col)."e,t

Para cambiar la informaci!n del control $+5rid, cambie el ob eto :ecordset asociado. Por e emplo, si el control #B(rid est% enlazado al recordset $ata3, se e ecutar#a el siguiente c!digo8 $ata3.:ecordset.Edit $ata3.:ecordset.Fields(M'ombreProductoM) D M$isco duroM $ata3.:ecordset.2pdate ,sar el e$ento Be%ore,&date El e)ento +efore2pdate tiene lugar antes de que se mue)an datos desde un control #B(rid al b?fer de copia del control #ata. Puede )alidar los datos y cancelar la actualizaci!n si es necesario.

%sar el Control MS le!<rid El control M/2lex(rid proporciona caracter#sticas a)anzadas para la presentaci!n de datos en una cuadr#cula. Es similar al control #B(rid aunque, cuando se enlaza a un control #ata, el control M/2lex(rid muestra datos de s!lo lectura. Puede utilizar el control M/2lex(rid para combinar filas o columnas de informaci!n y as# agrupar la informaci!n relacionada. En la siguiente ilustraci!n se muestran registros agrupados por 6d. de pedido en la tabla $etalles de pedidos.

Para com+inar celdas

3. Establezca la propiedad MergeCells a un )alor diferente a cero. 4. Establezca las propiedades arreglo Merge.o<@A y MergeCol@A a 'r&e para las filas y columnas que desee combinar. Por e emplo, para combinar las celdas en la tabla $etalles de pedidos, a/ada el siguiente c!digo al formulario donde se encuentra el control M/2lex(rid.

Pri)ate -ub FormCLoad() M-Fle,5rid3.MergeCells D fle,MergeFree M-Fle,5rid3.MergeCol(0) D "rue End -ub

%sar el Control *,Combo Puede utilizar el control de cuadro de lista enlazado a datos (#B%ist) o el cuadro combinado enlazado a datos (#BCom+o) para presentar autom%ticamente una lista de )alores de un :ecordset. Esto resulta ?til para proporcionar )alores )%lidos al usuario. * tener in%ormaci-n de una ta la de )s.ueda "ambi<n puede utilizar estos controles en aplicaciones de Mtabla de b?squedaM. Por e emplo, puede presentar una lista de nombres de categor#a )%lidos (en )ez de 6d.) y utilizar el 6d. correspondiente cuando el usuario agregue o modifique datos. La ilustraci!n siguiente muestra un formulario que utiliza el control #BCom+o para presentar nombres de categor#as de la tabla Productos.

"sta lecer &ro&iedades del control DBCom o Para determinar el )alor que se presenta en el control #BCom+o, asigne a la propiedad .o</o&rce un nombre de control #ata y a la propiedad %ist2ield un nombre de campo. El cuadro combinado enlazado a datos contiene todos los )alores de ese campo. Para determinar qu< campo de la base de datos se actualiza cuando un usuario cambia un )alor, establezca las propiedades #ata/o&rce y #ata2ield. Para establecer la relaci!n entre la tabla que contiene los )alores de b?squeda y la tabla que se est% modificando realmente, establezca la propiedad Bo&ndCol&mn.

También podría gustarte