Está en la página 1de 86

Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic

Parte 1: Introduccin al Desarrollo de


Aplicaciones con Visual Basic

Qu es Visual Basic?
Visual Basic es un ambiente gr!ico de desarrollo de aplicaciones para el sistema operati"o #icroso!t
$indo%s& 'as aplicaciones creadas con Visual Basic estn basadas en ob(etos ) son mane(adas por
e"entos& Visual Basic se deri"a del lengua(e Basic* el cual es un lengua(e de programacin
estructurado& +in embargo* Visual Basic emplea un modelo de programacin mane(ada por e"entos&
'as Aplicaciones Procedurales
,n las aplicaciones tradicionales o procedurales* es la aplicacin -uien controla -ue porciones de
cdigo se e(ecuta* ) la secuencia en -ue este se e(ecuta& 'a e(ecucin de la aplicacin se inicia con la
primera l.nea de cdigo* ) sigue una ruta prede!inida a tra"s de la aplicacin* llamando procedimientos
seg/n sea necesario&
'as Aplicaciones #ane(adas por ,"entos
,n las aplicaciones mane(adas por e"entos* la e(ecucin no sigue una ruta prede!inida& ,n "e0 de esto*
se e(ecutan di!erentes secciones de cdigo en respuesta a e"entos& 'os e"entos se desencadenan por
acciones del usuario* por mensa(es del sistema o de otras aplicaciones& 'a secuencia de e"entos
determina la secuencia en -ue el cdigo se e(ecuta& ,s por esto -ue la ruta -ue sigue el cdigo de la
aplicacin es di!erente cada "e0 -ue se e(ecuta el programa&
1na parte esencial de la programacin mane(ada por e"entos es el escribir cdigo -ue responda a los
posibles e"entos -ue pueden ocurrir en una aplicacin& Visual Basic !acilita la implementacin del
modelo de programacin mane(ada por e"entos&
Qu es un ob(eto?
2ada !ormulario 3"entana4* men/ o control -ue se crea con Visual Basic es un mdulo autocontenido
llamado objeto. 'os blo-ues bsicos de construccin de una aplicacin con Visual Basic son los
ob(etos& 2ada ob(eto tiene un con(unto de caracter.sticas ) un comportamiento de!inido 3propiedades,
mtodos y eventos) -ue lo di!erencian de otros tipos de ob(eto& ,n otras palabras* un ob(eto !ormulario
5a sido dise6ado para cumplir determinada !uncin en una aplicacin* ) no es lo mismo -ue un ob(eto
men/&
Propiedades
,l con(unto de datos -ue describen las caracter.sticas de un ob(eto se le conoce como sus
propiedades. Para un !ormulario tenemos por e(emplo* las propiedades BackColor 3color de !ondo4*
Height 3altura4&
Algunas propiedades no solo determinan el aspecto -ue tiene el ob(eto* sino -ue adems pueden
determinar su comportamiento7 por e(emplo* la propiedad MaButton establece si el !ormulario tendr o
no el botn Maximizar. 'a presencia o ausencia de este botn determinar si el !ormulario se puede o
no ma8imi0ar&
Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales 1 1
Formulario&;ombre<=!rm,ntrada=
Formulario&>.tulo<=Bien"enidos a :estin ) +istemas=
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
#todos
'os mtodos son un con(unto de procedimientos -ue permiten -ue un ob(eto e(ecute una accin o tarea
sobre s. mismo& Por e(emplo* para un !ormulario tenemos el mtodo Hide -ue 5ar -ue el !ormulario se
oculte7 o el mtodo !ho" -ue 5ar -ue el !ormulario se "uel"a a mostrar&
,"entos
1n evento es una accin -ue es reconocida por el ob(eto& 1n e"ento ocurre 3se dispara4 como
resultado de la interaccin del usuario con el ob(eto& >ambin puede dispararse debido a la e(ecucin
de cdigo 3sentencias4 o como resultado de la interaccin de otro ob(eto con el ob(eto de poseedor del
e"ento& Para un !ormulario tenemos por e(emplo7 el e"ento #oad -ue se dispara cuando se carga el
!ormulario7 o el e"ento Click para un botn de comando* se dispara cuando se 5ace clic sobre l&
Qu papel cumplen las propiedades* mtodos ) e"entos?
>oda aplicacin necesita una inter!a0 de usuario* la parte "isual a tra"s de la cual el usuario interact/a
con la aplicacin& 'os blo-ues bsicos de construccin de una inter!a0 de usuario son los !ormularios )
los controles& Visual Basic utili0a tcnicas de programaci$n visual para dise6ar las aplicaciones&
Para dise6ar esta "entana 3Formulario4* del con(unto de ob(etos de Visual Basic seleccionamos un
ob(eto tipo %ormulario 3Form4& 'uego a la propiedad &ombre 3;ame4 le asignamos el "alor
'rm(ntrada) a la propiedad *+tulo le asignamos el "alor Bienvenidos a ,esti$n y !istemas.
Dentro del !ormulario se colocan los controles& Para -ue el usuario pueda ingresar un dato 3por e(emplo*
la contrase6a4 colocamos en la "entana un control tipo Cuadro de *eto 3>e8tBo847 a continuacin
establecemos su propiedad &ombre en ttContrase-a, ) su propiedad .ass"ordChar es un ?
3asterisco4 para -ue el dato ingresado sea reempla0ado por asteriscos slo en la pantalla* para -ue no
se pueda "isuali0ar&
Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales @ @
2uadro&;ombre<=t8t2ontrase6a=
2uadro&Pass%ord25ar<=?=
Botn&;ombre<=cmdIngresar=
Botn&>.tulo<=Ingresar=
Botn&;ombre<=cmd'impiar=
Botn&>.tulo<='impiar=
(vento Hacer/Click
2uadro&t8t1suario&>e8to<==
2uadro&t8t2ontrase6a&>e8to<==
2uadro&t8t1suario&,stablecer,n!o-ue34
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
Para obtener el botn Ingresar seleccionamos un control tipo Bot$n de Comando 32ommandButton4* )
lo colocamos en la "entana& 'uego cambiamos sus propiedades7 a la propiedad &ombre le asignamos
cmd0ngresar, ) a la propiedad *+tulo le asignamos 0ngresar.
+e desea -ue cuando el usuario 5aga clic en el botn #impiar, se borre cual-uier dato -ue el usuario
5a)a ingresado en los Cuadros de *eto, ) -ue el punto de insercin se ubi-ue en el cuadro
tt1suario. Para -ue esto ocurra debemos programar el e"ento Hacer/Click del botn de comando
cmd#impiar.
,l e"ento debe e(ecutar dos sentenciar para cambiar la propiedad *eto de cada uno de los cuadros de
te8to* ) luego in"ocar al mtodo (stablecer(n'o2ue3) del cuadro de te8to tt1suario.
,l ,ntorno Integrado de Desarrollo 3ID,4
2uando se inicia Visual Basic* se crea un pro)ecto nue"o con un !ormulario& ,l ID, de Visual Basic
consta de los siguientes elementos:
Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales A A
Barra de #en/s ) Barra
de Berramientas
Dise6ador de !ormularios
,8plorador de
Pro)ectos
2uadro de
Berramientas
Ventana de
2digo
Ventana de
Propiedades
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
Barra de Mens
Presenta los comandos -ue se usan para traba(ar con Visual Basic& Adems de los men/s estndar
4rchivo, (dici$n, Ver, Ventana y 4yuda, contiene otros men/s para tener acceso a !unciones
espec.!icas de programacin* como .royecto, %ormato o 5epuraci$n.
Barra de Herramientas
Permite un acceso directo 3solo un clic4 a muc5as de las operaciones ms !recuentes utili0adas durante
el desarrollo de aplicaciones&
Cuadro de Herramientas
2ontiene todos los ob(etos ) controles -ue se pueden a6adir a los !ormularios para crear aplicaciones&
Diseador de Formularios
Funciona como una "entana en la -ue se puede personali0ar el dise6o de la inter!a0 de usuario
3"entana4 de una aplicacin&
Explorador de Proyectos
'ista de los arc5i"os 3!ormularios* mdulos* etc&4 del pro)ecto actual& 1n .royecto es una coleccin de
arc5i"os -ue utili0a para construir una aplicacin&
entana de Propiedades
'ista los "alores de las propiedades del !ormulario o control seleccionado -ue pueden ser modi!icados
durante el dise6o del !ormulario o control&
entana de C!digo
Funciona como un editor para escribir el cdigo 3sentencias4 de la aplicacin&
Cbtencin de A)uda del +istema
Visual Basic proporciona una "ariedad de recursos para a)udarle a encontrar la in!ormacin -ue
necesite cuando se encuentre traba(ando dentro del entorno de desarrollo&
"yuda en l#nea
Visual Basic proporciona una amplia a)uda en l.nea& ,l arc5i"o de A)uda contiene muc5o cdigo de
e(emplo -ue se puede copiar directamente a una aplicacin&
'a a)uda de Visual Basic es sensible al conte8to& Para emplear la a)uda sensible al conte8to en la
"entana de cdigo* escriba la palabra para la cual desea in!ormacin* ) luego presione %6& Por e(emplo*
si desea in!ormacin acerca de la sentencia 7pen* escriba 7pen ) presione F1&
$i%ros en Pantalla
Adems de la a)uda sensible al conte8to* el 2D9DC# de Visual Basic inclu)e una "ersin en l.nea de
la documentacin impresa para Visual Basic& Para acceder a los 'ibros en Pantalla* 5aga clic en #ibros
en .antalla dentro del men/ 4yuda de Visual Basic&
$a entana de C!digo
'a "entana o editor de cdigo de Visual Basic proporciona de manera automtica in!ormacin rele"ante
a medida -ue se ingresa cdigo& Por e(emplo* si se escribe el nombre de un control* seguido de un
punto* las propiedades ) mtodos para ese control sern mostrados automticamente en un cuadro de
lista& 'uego se puede escoger la propiedad o mtodo deseado para completar la sentencia&
Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales E E
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
2uando se ingresa el nombre de una !uncin en la "entana de cdigo* Visual Basic automticamente
proporciona el !ormato o sinta8is de la !uncin&
2mo se a6aden controles al !ormulario?
Para a6adir controles a un !ormulario tenemos dos mtodos:
M&todo '
>eniendo el cuadro de Berramientas o un Formulario "isible, 5aga doble clic en el control -ue desea
a6adir en el Cuadro de Herramientas( los controles se ubican en el centro del !ormulario* uno encima de
otro* luego 5a) -ue mo"erlos a la posicin deseada dentro del !ormulario&
M&todo )
1& Baga clic sobre el control en el 2uadro de Berramientas&
@& 1bi-ue el puntero del #ouse 3una cru04 sobre el !ormulario en la es-uina superior i0-uierda donde
desea colocar el control&
A& Dealice un clic sostenido mientras arrastra el puntero a la es-uina superior derec5a donde colocar
el control&
E& +uelte el botn del #ouse&
,stos cuatro pasos se repiten con cada control -ue desea a6adir al !ormulario&
>erminolog.a de Visual Basic
2on!orme traba(e con Visual Basic* necesitar estar !amiliari0ado con los siguientes trminos:
*rmino 5e'inici$n
>iempo de dise6o ,s el momento en el -ue se constru)e la aplicacin&
>iempo de e(ecucin ,s el momento en el cual e(ecutamos e interactuamos con la aplicacin
como lo 5ar.a el usuario&
Formulario 1n !ormulario sir"e como una "entana -ue puede personali0ar como la
inter!a0 de su aplicacin o como un cuadro de dilogo -ue usa para
obtener in!ormacin del usuario& 1n !ormulario puede e8istir
indi"idualmente o puede ser"ir como un documento dentro de una
inter!a0 de documento m/ltiple 3#DI4
*rmino 5e'inici$n
2ontroles Depresentacin gr!ica de ob(etos tales como botones* cuadros de lista*
cuadros de edicin* etc&* con los -ue el usuario interact/a para
proporcionar in!ormacin a la aplicacin&
Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales F F
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
Cb(etos 1n trmino general usado para describir todos los !ormularios )
controles -ue !orman parte de la aplicacin&
Propiedades 'os "alores de un ob(eto* tales como tama6o* t.tulo* color* etc&
#todos 'as acciones -ue un ob(eto puede reali0ar sobre s. mismo&
,"entos +on acciones reconocidas por un !ormulario o control& 'os e"entos
ocurren a medida -ue el usuario interact/a con los ob(etos de la
aplicacin&
Programacin controlada
por e"entos 2uando un programa es controlado por e*entos( usted escribe cdigo
-ue se e(ecuta en respuesta a e"entos in"ocados por el usuario& Di!iere
de la programaci!n procedural( en la cual el programa comien0a en la
primera l.nea de cdigo ) sigue un !lu(o de!inido llamando
procedimientos cuando es necesario& 'a programacin controlada por
e"entos es la esencia de las inter!aces gr!icas de usuario7 el usuario
acciona ) el cdigo responde&
Qu es un pro)ecto?
2uando desarrolla una aplicacin* Visual Basic crea un arc5i"o especial llamado 4rchivo de .royecto
para administrar todos los dems arc5i"os de la aplicacin&
,l 4rchivo de .royecto es simplemente una lista de todos los arc5i"os ) ob(etos asociados con el
pro)ecto* as. como in!ormacin sobre las opciones del entorno& ,sta in!ormacin se actuali0a cada "e0
-ue se guarda el pro)ecto& >odos los arc5i"os ) ob(etos tambin se pueden compartir con otros
pro)ectos& 1n pro)ecto est compuesto por los siguientes arc5i"os:
*ipo de archivo (tensi$n 5escripci$n
Pro)ecto &"bp Deali0a el seguimiento de todos los componentes de la
aplicacin&
Formulario &!rm &!r8 Inclu)e el !ormulario* los ob(etos sobre el !ormulario ) el cdigo
-ue se e(ecuta cuando ocurre un e"ento en el !ormulario&
#dulo estndar &bas 2ontiene procedimientos !ub ) %unction -ue pueden ser
in"ocados por cual-uier !ormulario u ob(eto sobre el !ormulario&
3opcional4
*ipo de archivo (tensi$n 5escripci$n
2ontroles
Personali0ados &oc8 2ontroles adicionales a los controles estndar proporcionados
por #icroso!t u otras empresas& 3opcional4
#dulo de clase &cls 2ontiene la de!inicin de clase* mtodos ) propiedades de un
nue"o tipo de ob(eto& 3opcional4
Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales G G
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
Decursos &res 2ontiene in!ormacin binaria usada por la aplicacin& +on
usados generalmente cuando se crean programas para
m/ltiples lengua(es&
3opcional4
2uando 5a completado todos los arc5i"os del pro)ecto puede con"ertir el pro)ecto en un arc5i"o
e(ecutable 3&e8e4&
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.
Pasos para crear una aplicacin
,l proceso de creacin de una aplicacin Visual Basic puede descomponer en una serie de siete pasos&
1& 2rear la inter!a0 de usuario
1sted crea una inter!a0 dibu(ando controles ) ob(etos sobre un !ormulario& A !in de 5acer -ue su cdigo
sea ms !cil de leer ) depurar* debe luego asignar nombres a los ob(etos usando con"enciones de
nombres estndar&
@& ,stablecer las propiedades de los ob(etos de la inter!a0
'uego de a6adir ob(etos al !ormulario* se establece las propiedades de los ob(etos& Puede establecer
"alores iniciales )a sea usando la "entana de propiedades en tiempo de dise6o o escribiendo cdigo
para modi!icar las propiedades en tiempo de e(ecucin&
A& ,scribir cdigo para los e"entos
'uego de establecer las propiedades iniciales para el !ormulario ) cada ob(eto* a6ada el cdigo -ue se
e(ecutar en respuesta a los e"entos& 'os e"entos ocurren cuando di!erentes acciones ocurren sobre
un control u ob(eto& Por e(emplo* clic es un e"ento -ue puede ocurrir para un botn de comando&
E& :uardar el pro)ecto
2uando crea el pro)ecto* aseg/rese de darle un nombre usando el comando ,uardar .royecto como
del men/ 4rchivo. :uarde su pro)ecto !recuentemente con!orme a6ada cdigo& Al guardar un pro)ecto
se guardan cada !ormulario ) mdulo de cdigo en el pro)ecto&
F& Probar ) depurar la aplicacin
2on!orme a6ada cdigo al pro)ecto* puede usar el comando 0niciar en la Barra de Berramientas para
e(ecutar su aplicacin ) "er su comportamiento& >ambin puede usar las 5erramientas de depuracin
para "eri!icar errores ) modi!icar cdigo&
G& 2rear un arc5i"o e(ecutable
Al completar su pro)ecto* crear un arc5i"o e(ecutable usando el comando ,enerar 8.ee del
men/ 4rchivo.
Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales H H
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
H& 2rear una aplicacin de instalacin
Debido a -ue su arc5i"o e(ecutable depende de otros arc5i"os* tales como el arc5i"o en tiempo de
e(ecucin de Visual Basic 3VbrunFIIA@&dll4* algunos arc5i"os C2J ) arc5i"os D'' adicionales
re-ueridos por la aplicacin o por los controles Acti"eJ&
2on"enciones para los nombres de los ob(etos
'os ob(etos deben lle"ar nombres con un pre!i(o co5erente -ue !acilite la identi!icacin del tipo de
ob(eto& A continuacin se o!rece una lista de con"enciones recomendadas para algunos de los ob(etos
permitidos poro Visual Basic&
*ipo de control .re'ijo (jemplo
Panel AD pnl pnl:rupo
Botn animado ani aniBu0n
2asilla de "eri!icacin c5K c5K+lo'ectura
2uadro combinado* cuadro lista desplegable cbo cboIngls
Botn de comando cmd cmd+alir
Dilogo com/n dlg dlgArc5i"oAbrir
2omunicaciones com comFa8
2ontrol de datos dat datBiblio
2uadro combinado enla0ado a datos dbcbo dbcbo'engua(e
2uadr.cula enla0ada a datos dbgrd dbgrdDesultado2onsulta
2uadro de lista enla0ado a datos dblst dblst>ipo>area
2uadro de lista de directorios dir dirCrigen
2uadro de lista de unidades dr" dr"Destino
2uadro de lista de arc5i"os !il !ilCrigen
Formulario !rm !rm,ntrada
#arco !ra !ra'engua(e
#edidor gau gau,stado
:r!ico gra graIngresos
2uadr.cula grd grdPrecios
Barra de despla0amiento 5ori0ontal 5sb 5sbVolumen
Imagen 3Image4 img imgIcono
,stado de tecla Ke) Ke)#a)/sculas
,ti-ueta lbl lbl#s(A)uda
'.nea lin linVertical
*ipo de control .re'ijo (jemplo
2uadro de lista lst lst2digoDePol.tica
#ensa(e #API mpm mpm,n"iar#s(
+esin #API mps mps+esin
#2I mci mciV.deo
Formulario #DI secundario mdi mdi;ota
#en/ mnu mnuArc5i"oAbrir
#+ Fle8 :rid msg msg2lientes
#+ >ab mst mstPrimero
Acti"eJ ole oleBo(aDe>raba(o
,s-uema out outDiagramaDeCrg
Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales L L
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
Pen Bedit bed bed;ombre
Pen Bedit 5ed 5edFirma
>ra0o de pluma inK inK#apa
Imagen 3Picture4 pic picV:A
2lip de imagen clp clpBarraDeBerramientas
In!orme rpt rpt:anancias>rimestre1
Forma s5p s5p2.rculo
2uadro de n/mero spn spnPginas
2uadro de te8to t8t t8tApellido
2ronmetro tmr tmrAlarma
Arriba9aba(o upd updDireccin
Barra de despla0amiento "ertical "sb "sbVelocidad
2ontrol desli0ante sld sld,scala
'ista de imgenes ils ils>odoslosIconos
Vista de rbol tre treCrgani0acin
Barra de 5erramientas tlb tlbAcciones
>ab+trip tab tabCpciones
Barra de estado sta staFec5aBora
'ista l"% l"%,ncabe0ados
Barra de progreso prg prg2argarArc5i"o
Dic5>e8Bo8 rt! rt!In!orme
Pre!i(os sugeridos para men/s
'as aplicaciones suelen usar muc5os controles de men/* lo -ue 5ace /til tener un con(unto /nico de
con"enciones de nombres para estos controles& 'os pre!i(os de controles de men/s se deben e8tender
ms all de la eti-ueta inicial Mmnu=* agregando un pre!i(o adicional para cada ni"el de anidamiento* con
el t.tulo del men/ !inal en la /ltima posicin de cada nombre& ,n la tabla siguiente 5a) algunos
e(emplos&
!ecuencia del t+tulo del men9 &ombre del controlador del men9
Arc5i"o Abrir mnuArc5i"adorAbrir
Arc5i"o ,n"iar correo mnuArc5i"o,n"iar2orreo
!ecuencia del t+tulo del men9 &ombre del controlador del men9
Arc5i"o ,n"iar !a8 mnuArc5i"o,n"iarFa8
Formato 2arcter mnuFormato2arcter
A)uda 2ontenido mnuA)uda2ontenido
2uando se usa esta con"encin de nombres* todos los miembros de un grupo de men/s determinado
se muestran uno (unto a otro en la "entana Propiedades de Visual Basic& Adems* los nombres del
control de men/ documentan claramente los elementos del men/ a los -ue estn ad(untos&
Formularios
Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales N N
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
,l !ormulario es el principal medio de comunicacin entre el usuario ) la aplicacin& 'os usuarios
interact/an con los controles sobre el !ormulario para ingresarle datos ) obtener resultados&
Propiedades
BacK2olor 2olor de !ondo del !ormulario&
Border+t)le ,stilo del borde del !ormulario&
2aption >e8to en la barra de t.tulo del !ormulario&
2ontrolBo8 >rueOFalse& Determina si tiene o no el cuadro de control&
,nabled >rueOFalse& Determina si est 5abilitado para responder a las acciones del
usuario&
Icon Icono -ue se muestra cuando el !ormulario est minimi0ado&
'e!t ) >op 1bicacin del !ormulario&
#a8Button >rueOFalse& Determina si tiene o no el botn Maximizar.
#inButton >rueOFalse& Determina si tiene o no el botn Minimizar.
;ame ;ombre del !ormulario&
$indo%+tate ,stado inicial del !ormulario 3normal* ma8imi0ado o minimi0ado4
E*entos
Acti"ate Ccurre cuando el !ormulario se con"ierte en la "entana acti"a&
2licK Ccurre cuando 5ace clic sobre el !ormulario&
Deacti"ate Ccurre cuando el !ormulario de(a de ser la "entana acti"a&
'oad Ccurre cuando se carga un !ormulario&
1nload Ccurre cuando un !ormulario est a punto de descargarse&
M&todos
Bide Cculta el !ormulario&
De!res5 Actuali0a el contenido del !ormulario&
+etFocus 'e entrega el en!o-ue al !ormulario&
+5o% Bace "isible el !ormulario&
Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales 1I 1I
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
2ontroles Bsicos
2on los controles* los usuarios pueden operar ) obtener los resultados de una aplicacin& Puede a6adir
controles a un !ormulario seleccionando la 5erramienta adecuada del Cuadro de Herramientas. ,ntre
los controles ms comunes a utili0ar en una aplicacin tenemos: ,ti-ueta 3'abel4* 2uadro de >e8to
3>e8tBo84 ) Botn de 2omando 32ommandButton4&
Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales 11 11
2ontrol
,ti-ueta
2ontrol 2uadro
de >e8to
2ontrol Botn de
2omando
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
2ontrol ,ti-ueta 3'abel4
+e utili0a para mostrar te8to -ue el usuario no puede modi!icar& :eneralmente para
identi!icar otros controles en el !ormulario o para mostrar instrucciones al usuario&
Propiedades
Alignment Alineacin del te8to dentro del control&
Auto+i0e >rueOFalse& Determina si el tama6o del control se a(usta automticamente al te8to -ue
contiene&
2aption >e8to -ue muestra el control&
;ame ;ombre del control&
Font ,stablece la !uente* estilo ) tama6o para el te8to del control&
2ontrol 2uadro de >e8to 3>e8tbo84
+e utili0a para -ue el usuario le proporcione datos a la aplicacin o para -ue la aplicacin
le de"uel"a la in!ormacin al usuario& ,l te8to -ue se muestra en el control puede ser cambiado por el
usuario&
Propiedades
,nabled >rueOFalse& ,stablece un "alor -ue determina si el control puede responder a e"entos
generados por el usuario&
Font ,stablece la !uentes* estilo ) tama6o para el te8to del control&
'ocKed >rueOFalse& Determina si es posible modi!icar el te8to en el control&
#a8'engt5 ,stablece la longitud m8ima permitida para el te8to en el control&
#ulti'ine ,stablece si el control puede aceptar m/ltiples l.neas de te8to&
;ame ;ombre del control&
Pass%ord25ar 2arcter utili0ado para ocultar el te8to -ue realmente contiene el control&
>e8t >e8to -ue realmente contiene ) muestra el control&
Visible ,stablece si el control ser "isible para el usuario&
E*entos
25ange Ccurre cuando cambia el te8to -ue contiene el control&
:otFocus Ccurre cuando el control recibe el en!o-ue&
Pe)Do%n Ccurre cuando el usuario presiona una tecla mientras el control tiene el en!o-ue&
'ostFocus Ccurre cuando el control pierde el en!o-ue&
M&todos
De!res5 Actuali0a el te8to del control&
+etFocus #ue"e el en!o-ue al control&
2ontrol Botn de 2omando 32ommandbutton4
Permite -ue la aplicacin inicie* interrumpa o termine un proceso&
Propiedades
2ancel >rueOFalse& ,stablece si el botn se comportar como el botn cancelar en el !ormulario
) se in"ocar su e"ento Click cada "e0 -ue se presione la tecla (!C&
Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales 1@ 1@
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
2aption ,stablece el te8to -ue muestra el botn&
De!ault >rueOFalse& ,stablece si el botn se comportar como el botn predeterminado en el
!ormulario&
Font ,stablece la !uente* estilo ) tama6o para el te8to del control&
;ame ;ombre del botn&
Visible >rueOFalse& ,stablece si el botn ser "isible para el usuario&
E*entos
2licK Ccurre cuando se 5ace clic sobre el botn&
M&todos
+etFocus #ue"e el en!o-ue al botn&
,stableciendo Propiedades
Al dise6ar la inter!ase de usuario de una aplicacin Visual Basic* se deben establecer la propiedades
para los controles 3ob(etos4 creados&
Esta%leciendo Propiedades en .iempo de Diseo
Algunas propiedades pueden ser establecidas en tiempo de dise6o& Para establecer estas propiedades
se emplea la "entana de propiedades& Para acceder a la "entana de propiedades* oprima en
botn secundario del ratn sobre un ob(eto* ) luego 5aga clic en .ropiedades& >ambin se
puede obtener el mismo resultado seleccionado el ob(eto ) luego presionando %:&
+i selecciona "arios ob(etos a la "e0 ) accede a la "entana de propiedades* slo se mostrarn las
propiedades -ue son comunes para todos los controles seleccionados& 2ual-uier cambio -ue se 5aga a
una propiedad ser aplicada a todos los controles&
Esta%leciendo Propiedades en .iempo de E-ecuci!n
,n tiempo de e(ecucin* se puede escribir cdigo para establecer u obtener el "alor de una propiedad&
'a siguiente l.nea de cdigo establece a negrita la !uente de un cuadro de te8to llamado t8tData&
txtData.Font.Bold = True ' Establece el texto a negrita
,ste cdigo establece la propiedad *et del cuadro de te8to t8tData
txtData.Text = "Hola mundo" 'Establece el valor del texto
+i se omite el nombre de la propiedad* se establece la propiedad predeterminada del control& 'a
propiedad predeterminada de un cuadro de te8to es la propiedad *et& 'a propiedad predeterminada de
una eti-ueta es la propiedad Caption& 'as siguientes l.neas de cdigo establecen las propiedades
predeterminadas te8t ) caption de un cuadro de te8to ) de una eti-ueta&
txtData = "Se establece la propiedad Text del cuadro de texto"
lblData = "Se establece la propiedad Caption de la etiueta"
/%teniendo Propiedades en .iempo de E-ecuci!n
Puede emplear el siguiente cdigo para obtener el "alor de una propiedad en tiempo de e(ecucin&
Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales 1A 1A
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
Dim s!ombre as String
s!ombre = txt!ame.Text
Procedimientos de ,"ento
Visual Basic in"oca automticamente procedimientos de e"ento en respuesta a acciones del teclado*
del ratn o del sistema& Por e(emplo* los botones de comando tienen un procedimiento de e"ento 2licK&
,l cdigo -ue se escriba en el procedimiento de e"ento 2licK es e(ecutado cuando el usuario 5aga clic
en un botn de comando&
Para abrir la "entana de cdigo* 5aga doble clic en el control o !ormulario* 5aga clic en la orden C$digo
del men/ Ver.
2ada control tiene un con(unto !i(o de procedimientos de e"ento& 'os procedimientos de e"ento para
cada control son mostrados en un cuadro de lista despegable en la "entana de cdigo& ,l siguiente
cdigo muestra el procedimiento de e"ento 2licK para un botn de comando llamado cmdCP&
"rivate Sub cmd#$%Clic&'(
)sgBox "Hola"
End Sub
Crden de >abulacion de los 2ontroles
,l orden de tabulaci$n es el orden en -ue un usuario se mue"e de un control a otro pulsando la tecla
>ab& Por omisin* el orden de tabulacin es igual al orden en -ue se 5an colocado los controles en el
!ormulario&
Para cambiar el orden de tabulacin de los controles de un !ormulario* estable0ca el "alor de la
propiedad *ab0nde de cada control& ,l "alor de esta propiedad "a desde I 5asta n91* siendo n el
n/mero de controles -ue tiene el !ormulario&
0uitar un control del orden de ta%ulaci!n
;ormalmente* presionando la tecla >ab en tiempo de e(ecucin pasamos de un control a otro en el
orden de tabulacin establecido& Podemos -uitar un control del orden de tabulacin si establecemos su
propiedad *ab!top en %alse. 1n control cu)a propiedad *ab!top se 5a establecido en %alse 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 >ab&
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.
>ecla de Acceso Dapido a un 2ontrol
+i el control tiene la propiedad Caption, se le puede asignar una tecla de acceso rpido para
seleccionar el control ) de esta manera el control recibir el en!o-ue cada "e0 -ue se oprima 4#* ;
*eclade4cceso& Para especi!icar la tecla de acceso rpido debe resaltar un carcter de la cadena en la
propiedad Caption colocando delante de este el s.mbolo MQ=. Por e(emplo si el "alor de la propiedad
Caption es la cadena 1suario, ) se desea de!inir la tecla s como la de acceso rpido* deber
Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales 1E 1E
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
establecer la propiedad Caption de la siguiente manera: 1<suario. ,l te8to del control se "er as.
1suario&
Algunos controles* tales como el control Cuadro de *eto, no tiene la propiedad Caption. Para crear
una tecla de acceso para esos controles:
1& 2olo-ue un control (ti2ueta cerca de otro control&
@& ,stable0ca la propiedad Caption del control (ti2ueta para contener la tecla de acceso apropiada&
A& ,stable0ca para el control (ti2ueta un "alor de orden de tabulacin menor en una unidad -ue el de
otro control&
2uando pulse 4#* ; *eclade4cceso del control (ti2ueta* el en!o-ue se mo"er 5acia el otro control
debido a -ue el control (ti2ueta no puede recibir el en!o-ue&
Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales Parte 1: Introduccin al desarrollo con Visual Basic 9 Dann) A& #atta :on0ales 1F 1F
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
Parte @: #ane(o de Formularios
#odulos de Formulario
2ada !ormulario en su aplicacin tiene un mdulo de !ormulario asociado* estos son guardados con una
e8tensin de arc5i"o FD# ) contienen:
'os "alores de las propiedades para el !ormulario ) sus controles&
Declaracin de "ariables en el mbito del !ormulario&
Procedimientos de e"ento ) procedimientos generales en el mbito del !ormulario&
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.
#odulos ,stndar
'os mdulos estndar pueden contener cdigo -ue es com/n a "arios !ormularios en su aplicacin&
,ste cdigo es por omisin p/blico* lo cual signi!ica -ue !cilmente compartido con otros mdulos de
cdigo* tales como un mdulo de !ormulario& ,stos mdulos contienen declaraciones de
procedimientos* tipos ) "ariables& ;o pueden almacenar procedimientos de e"ento por -ue no
contienen ob(etos&
'a Ventana de 2odigo
C!digo es un trmino general para todas las sentencias Visual Basic -ue usted escribe en una
aplicacin: procedimientos de e"ento ) procedimientos generales& ,l cdigo en Visual Basic se escribe
en la "entana de 2digo& ,l editor de te8to es solo un editor A+2II con colores para di!erenciar las
palabras cla"es en el cdigo -ue escribe&
'a entana de C!digo se usa para escribir* mostrar ) editar el cdigo de su aplicacin& Puede abrir una
"entana de cdigo por cada mdulo de su aplicacin* de modo -ue puede !cilmente copiar ) pegar
entre ellos&
Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales 1G 1G
'ista de
Cb(etos
'ista de
,"entos
Botn Ver
Procedimiento
Botn Ver
#dulo
Barra de
Di"isin
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
'a Ventana de Cdigo contiene:
El Cuadro $ista de /%-etos
#uestra el nombre del ob(eto seleccionado& Baga clic en la !lec5a a la derec5a del cuadro Cb(eto para
mostrar una lista de todos los ob(etos asociados con el !ormulario&
El Cuadro $ista de E*entos
#uestra todos los e"entos reconocidos para el !ormulario o control mostrado en el cuadro Cb(eto&
2uando seleccionamos un e"ento* en la "entana de cdigo se muestra el procedimiento de e"ento
asociado con ese e"ento&
$a Barra de Di*isi!n
Desde el men/ entana puede e(ecutar el comando Di*idir para di"idir la "entana de cdigo en dos
partes* cada una de las cuales se despla0a separadamente& Puede entonces "er di!erentes partes de
su cdigo al mismo tiempo& 'a in!ormacin -ue aparece en el cuadro Cb(eto ) Procedimiento se re!iere
al cdigo en la parte -ue tiene el en!o-ue& ,l mismo comando utili0ado para di"idir la "entana puede
utili0arlo para cerrar una de sus partes o tambin lo puede 5acer arrastrando la barra de di"isin 5acia
la parte superior o in!erior de la "entana&
El Bot!n er Procedimiento
,stablece -ue en la "entana de cdigo se edite un procedimiento a la "e0&
El Bot!n er M!dulo Completo
,stablece -ue en la "entana de cdigo se tenga acceso a todos los procedimientos* separados por una
l.nea separadora uno de otro&
,ditando 2digo
1se las caracter.sticas de edicin de Visual Basic para -ue su cdigo sea ms !cil de leer&
5angr#a
1se la sangr.a para di!erenciar partes de su cdigo* tales como estructuras repetiti"as ) condicionales&
Para aplicar sangr.a a una seccin de sentencias de un cdigo use la tecla *ab o el comando 4plicar
sangr+a del men/ (dici$n& +e !orma similar* !hi't R *ab o el comando 4nular sangr+a del men/
(dici$n -uitar una sangr.a a las l.neas seleccionadas& Veamos el siguiente e(emplo:
"rivate Sub cmd*ngresar%Clic&'(
*+ ,en'Trim'txt-suario((=. T/en
txt-suario.SetFocus
Else*+ ,en'Trim'txtContrase0a((=. T/en
txtContrase0a.SetFocus
Else*+ txtContrase0a = 123"S4 T/en
)sgBox 1,a clave ingresada es correcta4
-nload )e
Else
)sgBox 1,a clave ingresada no es v5lida4
txtContrase0a.SelStart=.
txtContrase0a.Sel,engt/= ,en'Trim'txtContrase0a((
Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales 1H 1H
6pta = )sgBox'"7Est5 seguro de eliminar a este cliente8"9 %
vb:uestion ; vb<es!o9 "Con+irmaci=n"(
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
txtContrase0a.SetFocus
End *+
End Sub
Car2cter de Continuaci!n de $#nea
,l carcter subra)ado 3S4 es el carcter de continuacin de l.nea* ) se usa para di"idir una sentencia en
m/ltiples l.neas& ,sto 5ace -ue la sentencia sea ms !cil de leer por-ue est contenida totalmente
dentro de la "entana de cdigo en lugar de e8tenderse 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
e(emplo:
)sgBox ",a clave ingresada no es v5lida"9 %
vb#$#nl> ; vbExclamation9 %
")ensa?e"
Comentarios
,l a6adir documentacin ) comentarios a su cdigo permite comprender me(or lo -ue 5ace el cdigo&
,sto tambin a)uda a comprender el cdigo si necesita "ol"er a re"isarlo en alguna !ec5a posterior& 1n
comentario se inicia con el carcter apstro!e 3T4* de modo -ue todo el te8to -ue contin/e a este
carcter ser ignorado en la e(ecucin de la aplicacin& Veamos el siguiente e(emplo:
"rivate Sub cmd,impiar%Clic&'(
'Este procedimiento limpia la ventana de identi+icaci=n
txt-suario.Text = "" ',impia el cuadro de texto -suario
txtContrase0a.Text = "" ',impia el cuadro de texto Contrase0a
txt-suario.SetFocus ' )ueve el en+oue al cuadro de texto -suario
End Sub
2uadro de #ensa(e ) de ,ntrada
1na de las !ormas ms simples de obtener in!ormacin para ) desde el usuario es utili0ando las
!unciones MagBo e 0npuBo respecti"amente&
Funci!n MsgBox67
'os cuadros de mensa(e o!recen un modo simple ) rpido de consultar a los usuarios por in!ormacin
simple o para permitirles tomar decisiones sobre el camino -ue su programa debe tomar& Puede usar
esta !uncin para mostrar di!erentes tipos de mensa(e ) botones con los cuales el usuario da una
respuesta&
Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales 1L 1L
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
%ormato
#sgBo83 prompt U* buttonsV U* title V U* 5elp!ile* conte8tV 4
,' !ormato de la !uncin #sgBo8 consta de los siguientes argumentos:
Parte Descripcin
Prompt De-uerido& ,8presin de cadena -ue representa el mensa(e en el cuadro de dilogo& 'a
longitud m8ima de prompt es de apro8imadamente 1I@E de caracteres* seg/n el
anc5o de los caracteres utili0ados& +i prompt consta de ms de una l.nea* puede
separarlos utili0ando un carcter de retorno de carro 325r31A4 4 o un carcter de a"ance
de l.nea 325r31I4 4* o una combinacin de caracteres de retorno de carro 9 a"ance de
l.nea 325r31A ) 25r31I4 4 entre cada l.nea ) la siguiente&
Buttons Cpcional& ,8presin numrica -ue corresponde a la suma de los "alores -ue
especi!ican el n/mero ) el tipo de los botones -ue se pretenden mostrar* el estilo de
icono -ue se "a a utili0ar* la identidad del botn predeterminado ) la modalidad del
cuadro de mensa(es& +i se omite este argumento* el "alor predeterminado para buttons
es I&
>itle Cpcional& ,8presin 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&
Belp!ile Cpcional& ,8presin de cadena -ue identi!ica el arc5i"o de A)uda -ue se utili0a para
proporcionar a)uda interacti"a en el cuadro de dilogo& +i se especi!ica 5elp!ile*
tambin se debe especi!icar conte8t&
2onte8t Cpcional& ,8presin numrica -ue es igual al n/mero de conte8to de A)uda asignado
por el autor al tema de A)uda correspondiente& +i se especi!ica conte8t* tambin se
debe especi!icar 5elp!ile&
Valores
,l argumento buttons puede asumir los siguientes "alores:
Constante Valor Descripcin
VbCPCnl) I #uestra solamente el botn Aceptar&
VbCP2ancel 1 #uestra los botones Aceptar ) 2ancelar&
VbAbortDetr)Ignore @ #uestra los botones Anular* Deintentar e Ignorar&
VbWes;o2ancel A #uestra los botones +.* ;o ) 2ancelar&
VbWes;o E #uestra los botones +. ) ;o&
VbDetr)2ancel F #uestra los botones Deintentar ) 2ancelar&
Vb2ritical 1G #uestra el icono de mensa(e cr.tico&
VbQuestion A@ #uestra el icono de pregunta de ad"ertencia&
Constante Valor Descripcin
Vb,8clamation EL #uestra el icono de mensa(e de ad"ertencia&
VbIn!ormation GE #uestra el icono de mensa(e de in!ormacin&
VbDe!aultButton1 I ,l primer botn es el predeterminado&
VbDe!aultButton@ @FG ,l segundo botn es el predeterminado&
VbDe!aultButtonA F1@ ,l tercer botn es el predeterminado&
Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales 1N 1N
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
VbDe!aultButtonE HGL ,l cuarto botn es el predeterminado&
VbApplication#odal I Aplicacin modal7 el usuario debe responder al cuadro de mensa(es
antes de poder seguir traba(ando en la aplicacin actual&
Vb+)stem#odal EING +istema modal7 se suspenden todas las aplicaciones 5asta -ue el
usuario responda al cuadro de mensa(es&
,l primer grupo de "alores 3I a F4 describe el n/mero ) el tipo de los botones mostrados en el cuadro
de dilogo7 el segundo grupo 31G* A@* EL* GE4 describe el estilo del icono* el tercer grupo 3I* @FG* F1@*
HGL4 determina el botn predeterminado ) el cuarto grupo 3I* EING4 determina la modalidad del cuadro
de mensa(es& 2uando se suman n/meros para obtener el "alor !inal del argumento buttons* se utili0a
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 devueltos
Constante Valor Descripcin
VbCK 1 Aceptar
Vb2ancel @ 2ancelar
VbAbort A Anular
VbDetr) E Deintentar
VbIgnore F Ignorar
VbWes G +.
Vb;o H ;o
Nota: 5i desea omitir algn argumento( de%e incluir el delimitador de coma correspondiente o utilizar
argumentos con nom%re.
(jemplos
Str)sg = "7Desea continuar8"
Estilo = vb<es!o ; vbExclamation ; vbDe+aultButton@
StrTitulo = "6esponda"
6pta = )sgBox'str)sg9 Estilo9 StrTitulo (
*+ 6pta= vb<es T/en
AAAAAAAAAAA
AAAAAAAAAAA
Else
AAAAAAAAAAA
AAAAAAAAAAA
End *+
Str)sg = "7Desea continuar8"
iEstilo = vb<es!o ; vbExclamation ; vbDe+aultButton@
StrTitulo = "6esponda"
i6pta = )sgBox' "romptB=str)sg9 TitleB= StrTitulo9 ButtonsB= iEstilo (
Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @I @I
strCodigo = *nputBox'"*ngrese el c=digo del cliente a buscarB"9
% "BCsueda"9 "C,*...D"(
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
*+ i6pta= vb<es T/en
AAAAAAAAAAA
AAAAAAAAAAA
Else
AAAAAAAAAAA
AAAAAAAAAAA
End *+
Funci!n InpuBox67

'a !uncin InputBo8 muestra un mensa(e en un cuadro de dilogo* espera -ue el usuario escriba un
te8to o 5aga clic en un botn ) de"uel"e un tipo +tring con el contenido del cuadro de te8to&
%ormato
InputBo83 prompt U* titleV U* de!aultV U* 8posV U*)posV U* 5elp!ile* conte8tV 4
,l !ormato de la !uncin InpuBo8 consta de los siguientes argumentos con nombre:
Parte Descripcin
Prompt De-uerido& ,8presin de cadena -ue se muestra como mensa(e en el cuadro de
dilogo& 'a longitud m8ima de prompt es de apro8imadamente de 1I@E caracteres*
seg/n el anc5o de los caracteres utili0ados& +i prompt consta de ms de una l.nea*
puede separarlos utili0ando un carcter de retorno de carro 325r31A44* un carcter de
a"ance
Parte Descripcin
de l.nea 325r31I44 o una combinacin de los caracteres de retorno de carro X a"ance de
l.nea 325r31A4 ) 325r31I44 entre cada l.nea ) la siguiente&
>itle Cpcional& ,8presin 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&
De!ault Cpcional& ,8presin de cadena -ue se muestra en el cuadro de te8to como respuesta
predeterminada& +i omite de!ault* se muestra el cuadro de te8to "ac.o&
Jpos Cpcional& ,8presin numrica -ue especi!ica* la distancia en sentido 5ori0ontal entre el
borde i0-uierdo del cuadro de dilogo ) el borde i0-uierdo de la pantalla& +i se omite
8pos* el cuadro de dilogo se centra 5ori0ontalmente&
Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @1 @1
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
Wpos Cpcional& ,8presin numrica -ue especi!ica* la distancia en sentido 5ori0ontal entre el
borde i0-uierdo del cuadro de dilogo ) el borde i0-uierdo de la pantalla& +i se omite
)pos* el cuadro de dilogo se coloca apro8imadamente un tercio de la altura de la
pantalla* desde el borde superior de la misma&
Belp!ile Cpcional& ,8presin de cadena -ue identi!ica el arc5i"o de A)uda -ue se utili0ar para
proporcionar a)uda interacti"a para el cuadro de dilogo& +i se especi!ica 5elp!ile*
tambin deber especi!icar conte8t&
2onte8t Cpcional& ,8presin numrica -ue es el n/mero de conte8to de A)uda asignado por el
autor al tema de A)uda correspondiente& +i se especi!ica conte8t* tambin deber
especi!icarse 5elp!ile&
Comentarios
+i el usuario 5ace clic en Cancelar* la !uncin de"uel"e una cadena de caracteres de longitud cero 3M=4&
Nota: 5i desea omitir algunos argumentos( de%e incluir el delimitador de coma correspondiente o
utilizar argumentos con nom%re.
2onstantes Prede!inidas
Visual Basic reconoce cierta cantidad de constantes prede!inidas -ue pueden se usadas en cual-uier
parte de su cdigo en lugar de "alores numricos& Puede 5acer -ue su cdigo sea ms !cil de leer )
escribir mediante el uso de estas constantes& Adems* los "alores de estas constantes pueden cambiar
en "ersiones posteriores de Visual Basic* su uso permitir -ue su cdigo sea compatible& Por e(emplo*
la propiedad =indo"!tate de un !ormulario puede aceptar las siguientes constantes:
Constante Valor 5escripci$n
Vb;ormal I ;ormal
Vb#inimi0ed 1 #inimi0ado
Vb#a8imi0ed @ #a8imi0ado
Por e(emplo* para establecer el estado del !ormulario 'rm(ntrada en ma8imi0ado* la sentencia ser.a:
+rmEntrada.EindoFState = vb)aximiGed
#ane(o de Formularios
;ormalmente la inte!a0 de una aplicacin est compuesta por "arios !ormularios& 2uando Visual Basic
inicia la aplicacin* automticamente se muestra el !ormulario de arran-ue* mientras -ue los otros
!ormularios deben ser mostrados ) ocultados a tra"s de cdigo& ,l mtodo o !uncin usado depende
de lo -ue deseamos 5acer&
*area Mtodo o 0nstrucci$n
2argar un !ormulario en memoria* pero 1se la sentencia #oad* o 5aga re!erencia a una
sin mostrarlo propiedad o control sobre el !ormulario&
2argar o mostrar el !ormulario& 1se el mtodo !ho"&
#ostrar un !ormulario cargado& 1se el mtodo !ho".
Ccultar u !ormulario 1se el mtodo Hide.
Ccultar un !ormulario ) descargarlo de 1se la sentencia 1nload.
Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @@ @@
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
memoria&
M&todo 5,o9
#uestra un !ormulario& +i el !ormulario no est cargado al momento de e(ecutar el mtodo +5o%* Visual
Basic lo cargar automticamente&
%ormato
;ombreDelFormulario&+5o%
(jemplo
FrmEntrada.S/oF
5entencia $oad
2arga un !ormulario a la memoria* pero no lo muestra&
%ormato
'oad ;ombreDelFormulario
(jemplo
,oad FrmEntrada
E*ento $oad
,l e"ento #oad ocurre cuando el !ormulario es cargado en la memoria& ,sto sucede cuando se usa la
sentencia #oad* o cuando se in"oca el mtodo !ho" ) el !ormulario a/n no est cargado en memoria&
;ormalmente* este e"ento se utili0a para establecer algunas propiedades del !ormulario* los controles
-ue se encuentran en l* o "ariables a ni"el del !ormulario&
(jemplos>
"rivate Sub Form%,oad'(
+rm*ngreso.,e+t = 'Screen.Eidt/ A +rm*ngreso.Eidt/( H @
+rm*ngreso.Top = 'Screen.Heig/t A +rm*ngreso.Heig/t( H @
End Sub
"rivate Sub Form%,oad'(
txt-suario.Text=""
txtContrase0a.Text=""
cmd*ngresar.Enabled=False
End Sub
Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @A @A
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
M&todo Hide
Cculta un !ormulario* pero no lo descarga de memoria&
%ormato
;ombreDelFormulario&Bide
(jemplo>
+rm*ngreso.Hide
5entencia :nload
Descarga un !ormulario de memoria
%ormato
1nload ;ombreDelFormulario
Comentarios
'a descarga de un !ormulario puede ser necesario o con"eniente en a-uellos casos en los -ue la
memoria utili0ada se necesite para alguna otra tarea o cuando sea necesario restablecer las
propiedades a sus "alores originales&
Antes de descargar un !ormulario se e(ecuta el e"ento 1nload 3Form_Unload. +i establece el
argumento Cancelar a *rue en este e"ento* no se descargar el !ormulario&
!ugerencia
1se la palabra Me para re!erirse al !ormulario actual&
Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @E @E
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
(jemplo
I Descarga el +ormulario actual
"rivate Sub cmdCerrarAClic& ' (
-nload )e
End Sub
E*ento :nload
Ccurre cuando un !ormulario est a punto de descargarse& ,ste e"ento se desencadena por-ue un
usuario cierra el !ormulario mediante el comando Cerrar del men/ Control o una sentencia 1nload.
,l parmetro Cancelar, es un entero -ue determina si el !ormulario es descargado& +i Cancelar es I* el
!ormulario se descarga& ,stablecer Cancelar a cual-uier "alor distinto de cero impide -ue el !ormulario
sea descargado&
(jemplo
"rivate Sub Form%-nload'Cancel 2s *nteger(
Dim i6pta 2s *nteger
i6pta = )sgBox'17Esta seguro de cerrar la ventana849 %
Jb<es!o ; vb:uestion9 1)ensa?e4(
*+ i6pta = vb!o T/en
Cancel = True
End *+
End Sub
Formularios #odales ) ;o #odales
1n !ormulario -ue se abre como !odal* no permite -ue el usuario interact/e con otros !ormularios de la
misma aplicacin 5asta -ue no sea cerrado&
1n !ormulario -ue se abre como No !odal* permite al usuario cambiar a otros !ormularios de la misma
aplicacin sin -ue los primeros sean cerrados&
,l argumento "stilo del mtodo #$o% determina si el !ormulario se abre como !odal o No !odal&
(jemplos
' Cargar el +ormulario +rm*ngreso %
como )odal
+rmEntrada.S/oF vb)odal
'Cargar el +ormulario %
+rm*ngreso como !o )odal
+rmEntrada.S/oF vb)odaless
Finali0acin de una Aplicacin
+e puede !inali0ar la e(ecucin de la aplicacin descargando el /ltimo !ormulario de la aplicacin o
usando la sentencia "nd& 'a sentencia "nd termina la e(ecucin de la aplicacin ) descarga todos los
!ormularios& 2uando !inali0a su aplicacin con la sentencia (nd no se desencadena ning/n e"ento de
los !ormularios&
(jemplos
Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @F @F
'ista de men/s
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
I Descarga el +ormulario actual
"rivate Sub cmdCerrarAClic& ' (
-nload )e
End Sub
I FinaliGa la aplicaci=n
"rivate Sub cmdFinaliGarAClic& ' (
End
End Sub
,l ,ditor de men/s
,sta 5erramienta permite crear men/s personali0ados para la aplicacin ) de!inir sus propiedades& Para
ingresar* estando en tiempo de dise6o* 5aga clic en el men/ Herramientas ) luego en la orden (ditor
de Men9s o en el botn e-ui"alente de la barra de 5erramientas estndar&
Nota:
Para poder ingresar el editor de mens no de%e encontrarse en la *entana de c!digo.
/pciones del cuadro de di2logo
Parte Descripcin
2aption 'e permite escribir el nombre del comando o del men/ -ue desea -ue apare0ca en la
barra de men/s o en un men/& +i desea crear una barra separadora en el men/*
escriba un /nico guin 394 en el cuadro 2aption&
Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @G @G
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
Parte Descripcin
Para dar al usuario acceso a tra"s del teclado a un elemento del men/* escriba el
signo Q delante de una letra& ,n tiempo de e(ecucin* esta letra aparecer subra)ada
3el signo Q no ser "isible4 ) el usuario tendr acceso al men/ o al comando si presiona
las
teclas 4#* ) la correspondiente a la letra subra)ada& +i necesita -ue apare0ca en el
men/ el signo Q* deber escribir dos signos Q consecuti"os&
;ame 'e permite escribir un nombre de control para el elemento del men/& ,l nombre de
control es un identi!icador -ue slo se utili0a para tener acceso al elemento del men/
en el cdigo* no aparece en ning/n men/&
Inde8 'e permite asignar un "alor numrico -ue determina la posicin del control en una
matri0 de controles& ,sta posicin no tiene ninguna relacin con la ubicacin del control
en la pantalla&
+5ortcut 'e permite seleccionar una tecla de mtodo abre"iado para cada comando&
Belp2onte8tID 'e permite asignar un "alor numrico /nico para el Id& de conte8to& ,ste "alor se utili0a
para encontrar el tema de A)uda apropiado en el arc5i"o de A)uda identi!icado
mediante la propiedad BelpFile&
;egotiatePosition 'e permite seleccionar la propiedad ;egotiatePosition del men/& ,sta propiedad
determina si el men/ aparece o no en un !ormulario contenedor ) cmo aparece&
25ecKed 'e permite 5acer -ue apare0ca inicialmente una marca de "eri!icacin a la i0-uierda de
un elemento del men/& +e utili0a normalmente para indicar si una opcin de alternar
est acti"ada o no&
,nabled 'e permite seleccionar si el elemento del men/ debe responder a e"entos& Desacti"e
esta opcin si desea -ue el elemento del men/ no est disponible ) apare0ca
atenuado&
Visible 'e permite 5acer -ue un elemento apare0ca en el men/&
$indo%'ist Determina si el control del men/ contiene una lista de !ormularios secundarios #DI
abiertos en una aplicacin #DI&
Flec5a a la derec5a
Pasa el men/ seleccionado a un ni"el in!erior cada "e0 -ue 5ace clic en el botn&
Puede crear 5asta cuatro ni"eles de submen/s&
Flec5a a la i0-uierda
Pasa el men/ seleccionado a un ni"el superior cada "e0 -ue 5ace clic en el botn&
Puede crear 5asta cuatro ni"eles de submen/s&
Flec5a arriba
2ada "e0 -ue se 5ace clic en este botn* el elemento seleccionado del men/ se mue"e
5acia arriba una posicin dentro del mismo ni"el de men/&
Flec5a aba(o
2ada "e0 -ue se 5ace clic en este botn* el elemento seleccionado del men/ se
mue"e 5acia aba(o una posicin dentro del mismo ni"el de men/&
'ista #en/s ,s un cuadro de lista -ue muestra en orden (err-uico todos los elementos del men/&
'os elementos de los submen/s aparecen indentados para indicar su ubicacin o su
ni"el en la (erar-u.a&
+iguiente +elecciona la l.nea siguiente&
Insertar Inserta una l.nea en el cuadro de lista* inmediatamente encima de la l.nea actualmente
Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @H @H
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
Parte Descripcin
seleccionada&
,liminar ,limina Borra la l.nea actualmente seleccionada&
Aceptar 2ierra el ,ditor de men/s ) aplica todos los cambios e!ectuados en el /ltimo !ormulario
seleccionado& ,l men/ est disponible en tiempo de dise6o* pero si selecciona un men/
en la !ase de dise6o* se abre la "entana 2digo para el e"ento 2lic de ese men/ en
lugar de e(ecutarse el cdigo del e"ento&
2ancelar 2ierra el ,ditor de men/s ) cancela todos los cambios&
A6adiendo 2ontroles Adicionales al 2uadro de Berramientas
,l 2uadro de Berramientas contiene los controles intr.nsecos o estndar de Visual Basic& ,s posible
ampliar el cuadro de 5erramientas a6adiendo controles Acti"eJ& 'a edicin pro!esional de Visual Basic
proporciona controles Acti"eJ adicionales& >ambin es posible comprar controles Acti"eJ a terceras
partes&
Para a6adir un control Acti"eJ al cuadro de 5erramientas 5aga lo siguiente:
1& ,n el men/ .royecto* 5aga clic en Componentes& Visual Basic mostrar el cuadro de dilogo
Componentes&
@& ,n la !ic5a Controles* 5aga clic en el control -ue desea incluir* ) luego 5aga clic en 4ceptar& Visual
Basic a6adir el control al cuadro de 5erramientas&
El control .oolBar
1n control *oolbar contiene una coleccin de ob(etos Button utili0ados para crear una barra de
5erramientas asociada a una aplicacin&
Comentarios
;ormalmente* una barra de 5erramientas contiene botones -ue corresponden a elementos de men/ de
una aplicacin* proporcionando una inter!a0 gr!ica al usuario -ue le permite tener acceso a las
!unciones ) comandos empleados con ms !recuencia en esa aplicacin&
,l control *oolbar le permite crear barras de 5erramientas agregando ob(etos Button a una coleccin
Buttons7 cada ob(eto Button puede tener te8to opcional o una imagen* proporcionados por
un control 0mage#ist asociado& Puede mostrar una imagen en un botn con la propiedad
0mage o mostrar te8to con la propiedad Caption* o ambos* para cada ob(eto Button& ,n
tiempo de dise6o puede agregar ob(etos Button al control utili0ando la .?gina de
propiedades del control >oolbar& ,n tiempo de e(ecucin* puede agregar o -uitar botones
de la coleccin Buttons mediante los mtodos 4dd ) @emove&
Para programar el control *oolbar* agregue cdigo al e"ento ButtonClick para -ue responda al botn
seleccionado& >ambin puede determinar el comportamiento ) la apariencia de cada ob(eto
Button mediante la propiedad !tyle& Por e(emplo* si a cuatro botones se les asigna el estilo
Button,roup* slo se podr presionar uno de ellos ) al menos uno estar siempre
presionado&
'a !acilidad de uso se me(ora considerablemente programando descripciones *ool*ip*et de cada
ob(eto Button& Para mostrar in!ormacin sobre 5erramientas* la propiedad !ho"*ips debe
establecerse a >rue&
Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @L @L
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
El Control Image$ist
1n control 0mage#ist contiene una coleccin de ob(etos #ist0mage* a cada uno de los
cuales se puede 5acer re!erencia mediante su .ndice o su cla"e& ,l control 0mage#ist no est
concebido para utili0arlo en solitario* sino como punto de almacenamiento central para proporcionar
cmodamente imgenes a otros controles&
Comentarios
Puede usar el control 0mage#ist con cual-uier control -ue asigne un ob(eto .icture a una propiedad
.icture&
,s posible agregar imgenes de di!erentes tama6os al control 0mage#ist* pero todas se a(ustan al
mismo tama6o& ,l tama6o de los ob(etos de #ist0mage est determinado por uno de los siguientes
"alores:
,l "alor de las propiedades 0mage=idth ) 0mageHeight antes de agregar alguna imagen&
'as dimensiones de la primera imagen agregada&
;o 5a) ninguna limitacin en cuanto al tama6o de la imagen* pero el n/mero total de imgenes -ue se
puede cargar est limitado por la cantidad de memoria disponible&
Durante el dise6o del programa puede agregar imgenes mediante la !ic5a ,eneral del cuadro de
dilogo .ropiedades del control 0mage#ist& ,n tiempo de e(ecucin puede agregar imgenes mediante
el mtodo 4dd para la coleccin #ist0mages&
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.
Inter!a0 de #/ltiples Documentos 3#DI X #ultiple Document Inter!ase4
El /%-eto MDIForm
1n !ormulario #DI es una "entana -ue act/a como !ondo de una aplicacin ) es el contenedor de
!ormularios -ue tienen su propiedad #DI25ild establecida a >rue& Para crear un ob(eto #DIForm* eli(a
4gregar 'ormulario M50 en el men/ .royecto* luego de agregarlo tenga en cuenta lo siguiente:
1na aplicacin slo puede tener un ob(eto #DIForm* pero "arios !ormularios secundarios #DI&
+i un !ormulario secundario #DI tiene men/s* la barra de men/s del !ormulario secundario
reempla0ar automticamente a la barra de men/s del ob(eto #DIForm cuando el !ormulario
secundario #DI est acti"o&
1n !ormulario secundario #DI minimi0ado se mostrar como un icono en el #DIForm&
1n ob(eto #DIForm slo puede contener controles #enu ) PictureBo8* ) controles personali0ados
-ue tengan una propiedad Align& Para colocar otros controles en un #DIForm* puede dibu(ar un
cuadro de imagen en el !ormulario ) despus dibu(ar otros controles dentro del cuadro de imagen&
Puede utili0ar el mtodo Print para mostrar te8to en un cuadro de imagen de un #DIForm* pero no
puede usar este mtodo para mostrar te8to en el #DIForm propiamente dic5o&
1n ob(eto #DIForm no puede ser modal&
'os !ormularios secundarios #DI se dise6an de !orma independiente del #DIForm* pero siempre
estn contenidos en el #DIForm en tiempo de e(ecucin&
Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales @N @N
Fundamentos de Programacin en Visual Basic Fundamentos de Programacin en Visual Basic
Formulario secundario MDI
1n !ormulario contenido dentro de un !ormulario #DI en una aplicacin con inter!a0 de m/ltiples
documentos 3#DI4& Para crear un !ormulario secundario* estable0ca su propiedad #DI25ild a >rue&
Propiedad MDIC,ild
De"uel"e o establece un "alor -ue indica si un !ormulario debe mostrarse como !ormulario secundario
#DI dentro de un !ormulario #DI& ,s de slo lectura en tiempo de e(ecucin& 'os "alores admitidos para
la propiedad #DI25ild son:
Valor 5escripci$n
>rue ,l !ormulario es #DI secundario ) se mostrar dentro del !ormulario #DI primario&
False 3Predeterminado4 ,l !ormulario no es #DI secundario&
Comentarios
1tilice esta propiedad al crear una aplicacin con inter!a0 de m/ltiples documentos 3#DI4& ,n tiempo de
e(ecucin* los !ormularios -ue tengan establecida a >rue esta propiedad se mostrarn dentro de un
!ormulario #DI& 'os !ormularios #DI secundarios pueden ma8imi0arse* minimi0arse ) despla0arse*
siempre dentro del !ormulario #DI primario& 2uando traba(e con !ormularios #DI secundarios* tenga en
cuenta lo siguiente:
,n tiempo de e(ecucin* cuando un !ormulario #DI secundario se ma8imi0a* su t.tulo se combina
con el del !ormulario #DI primario&
,n tiempo de dise6o* los !ormularios #DI secundarios se muestran de la misma !orma -ue el resto
) slo se mostrarn dentro del !ormulario primario en tiempo de e(ecucin& ,l icono de un !ormulario
#DI secundario en la "entana Pro)ecto es distinto de los iconos de otros tipos de !ormularios&
'os !ormularios #DI secundarios no pueden ser modales&
,l entorno operati"o #icroso!t $indo%s controla el tama6o ) la posicin iniciales de los !ormularios
#DI secundarios* a menos -ue los estable0ca espec.!icamente en el procedimiento de e"ento
'oad&
+i se 5ace re!erencia a un !ormulario #DI secundario antes de cargar el !ormulario #DI primario*
ste se cargar automticamente& +in embargo* si se 5ace re!erencia al !ormulario #DI primario
antes de cargar un !ormulario #DI secundario* el !ormulario #DI secundario no se cargar&
Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales Parte @: #ane(o de Formularios 9 Dann) A& #atta :on0ales AI AI
Parte A: >ipos De Datos* 2onstantes
) Variables
>ipos de Datos
1n tipo de dato determina la naturale0a del dominio de "alores -ue puede tomar una "ariable* las
operaciones en -ue puede participar ) el espacio de memoria -ue necesita& 'a tabla siguiente muestra
los tipos de datos* inclu)endo el tama6o de almacenamiento ) el inter"alo&
*ipo de 5ato *ama-o de
4lmacenamiento
@ango
B)te 1 b)te I a @FF
Boolean @ b)tes >rue o False
Integer @ b)tes 9A@&HGL a A@&HGH
'ong
3entero largo4
E b)tes 9@&1EH&ELA&GEL a @&1EH&ELA&GEH
+ingle
3coma !lotanteO
precisin simple4
E b)tes 9A*EI@L@A,AL a 91*EI1@NL,9EF para "alores negati"os7 1*EI1@NL,9
EF a A*EI@L@A,AL para "alores positi"os
Double
3coma !lotanteO
precisin doble4
L b)tes 91*HNHGNA1AELG@A@,AIL a 9E*NEIGFGEFLE1@EH,9A@E para "alores
negati"os7 E*NEIGFGEFLE1@EH,9A@E a 1*HNHGNA1AELG@A@,AIL para
"alores positi"os
2urrenc)
3entero a escala4
L b)tes 9N@@&AAH&@IA&GLF&EHH*FLIL a N@@&AAH&@IA&GLF&EHH*FLIH
Decimal 1E b)tes RO9
HN&@@L&1G@&F1E&@GE&AAH&FNA&FEA&NFI&AAF sin punto decimal7
RO9
H*N@@L1G@F1E@GEAAHFNAFEANFIAAF con @L posiciones a la derec5a
del signo decimal7 el n/mero ms pe-ue6o distinto de cero es
RO9
I*IIIIIIIIIIIIIIIIIIIIIIIIII1
Date L b)tes 1 de enero de 1II a A1 de Diciembre de NNNN
Cb(ect E b)tes 2ual-uier re!erencia a tipo Cb(ect
+tring
3longitud "ariable4
1I b)tes R
longitud de la
cadena
Desde I a @&III millones
+tring
3longitud !i(a4
'ongitud de la
cadena
Desde 1 a GF&EII apro8imadamente
Variant
3con n/meros4
1G b)tes 2ual-uier "alor numrico 5asta el inter"alo de un tipo Double
Variant
3con caracteres4
@@ b)tes R
longitud de la
cadena
,l mismo inter"alo para un tipo +tring de longitud "ariable&
De!inido por el
usuario
3utili0ando >)pe4
;/mero re-uerido
por los elementos
,l inter"alo de cada elemento es el mismo -ue el inter"alo de su tipo
de datos
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
Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales A1 A1
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 "arias !unciones de con"ersin -ue puede utili0ar para con"ertir "alores de
tipos de datos espec.!icos& Por e(emplo* para con"ertir un "alor a Currency, utilice la !uncin Ccur>
"ago"orSemana = Ccur '/oras K "ago"orHora(
'a siguiente tabla muestra las !unciones de con"ersin:
%unciones de
Conversi$n Convierten una epresi$n en
2bool Boolean
2b)te B)te
2cur 2urrenc)
2date Date
2Dbl Double
2int Integer
2'ng 'ong
2+ng +ingle
2+tr +tring
2"ar Variant
2V,rr ,rror
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.
Variables
'as "ariables se utili0an para almacenar "alores temporalmente durante la e(ecucin de una aplicacin&
'as "ariables tienen un nombre 3la palabra -ue utili0a para re!erirse al "alor -ue contiene la "ariable4 )
un tipo de dato 3-ue determina la clase de dato -ue la "ariable puede almacenar4&
"lmacenamiento y recuperaci!n de datos en *aria%les
1tilice una sentencia de asignacin para reali0ar clculos ) asignar el resultado a una "ariable:
#an0anaVendidas < 1I T +e pasa el "alor 1I a la "ariable
#an0anasVendidas < #an0anasVendidas R 1
Cbser"e -ue el signo igual del e(emplo es un operador de asignacin* no un operador de igualdad7 el
"alor '( se asigna a la "ariable ManAanasVendidas.
Declaraci!n de aria%les
Declarar una "ariable es decirle al programa algo de antemano& +e declara una "ariable mediante la
instruccin 5im, proporcionando un nombre a la "ariable* seg/n la siguiente sinta8is:
Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales A@ A@
5im nombre9"ariable U4s tipoV
'as "ariables -ue se declaran en un procedimiento mediante la sentencia 5im slo e8isten mientras se
e(ecuta el procedimiento& 2uando termina el procedimiento* desaparece el "alor de la "ariable& Adems*
el "alor de una "ariable de un procedimiento es local a dic5o procedimiento7 es decir* no puede tener
acceso a una "ariable de un procedimiento desde otro procedimiento& ,stas caracter.sticas le permiten
utili0ar los mismos nombres de "ariables en distintos procedimientos sin preocuparse por posibles
con!lictos o modi!icaciones accidentales&
,l nombre de una "ariable debe cumplir con los siguientes re-uisitos:
Debe comen0ar con una letra&
;o puede incluir un punto o un carcter de declaracin de tipo 3Y*Q*Z*[*\*]4&
;o debe e8ceder de @FF caracteres&
Debe ser /nica en el mismo alcance* -ue es el inter"alo desde el -ue se puede 5acer re!erencia a
la "ariable: un procedimiento* !ormulario* etc&
'a clusula opcional 4s tipo de la sentencia 5im le permite de!inir el tipo de dato o de ob(eto de la
"ariable -ue "a a declarar& 'os tipos de datos de!inen el tipo de in!ormacin -ue almacena la "ariable&
Algunos e(emplos de tipos de datos son !tring, 0nteger ) Currency. 'as "ariables tambin pueden
contener ob(etos de Visual Basic u otras aplicaciones& Algunos e(emplos de tipos de ob(eto de Visual
Basic* o clases* son Cb(ect* Form1 ) >e8tBo8&
Ba) otras !ormas de declarar "ariables:
Declarar una "ariable en la seccin Declaraciones de un mdulo de !ormulario* estndar o de clase*
en "e0 de un procedimiento* 5ace -ue la "ariable est disponible para todos los procedimientos del
mdulo&
Declarar una "ariable mediante la palabra cla"e .ublic 5ace -ue est accesible para toda la
aplicacin&
Declarar una "ariable local mediante la palabra cla"e !tatic conser"a su "alor aun-ue termine el
procedimiento&
Declaraci!n Impl#cita
;o tiene por -u declarar una "ariable antes de utili0arla& Por e(emplo* podr.a escribir una !uncin
donde no 5iciera !alta declarar *empVal antes de utili0arla:
Function 6aLG 'num(
TempJal = 2bs 'num(
6aLG = Sr'TempJal(
End Function
Visual Basic crea automticamente una "ariable con ese nombre* -ue puede utili0ar como si la 5ubiera
declarado e8pl.citamente& Aun-ue es cmodo* puede pro"ocar errores sutiles en el cdigo si se
e-ui"oca de nombre de "ariable& Por e(emplo* suponga -ue 5a escrito esta !uncin:
Function 6aLG 'num(
TempJal = 2bs 'num(
6aLG = Sr 'TemJal(
End Function
Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales AA AA
A primera "ista* parece igual& Pero como se 5a escrito errneamente la "ariable *empVal en la tercera
l.nea* la !uncin de"ol"er siempre cero& 2uando Visual Basic encuentra un nombre nue"o* no puede
a"eriguar si realmente desea declarar una "ariable nue"a o simplemente 5a escrito de !orma errnea
una "ariable e8istente* por lo -ue crea una "ariable nue"a con ese nombre&
Declaraci!n Expl#cita
Para e"itar problemas al e-ui"ocarse de nombre en las "ariables* puede con!igurar Visual Basic para
-ue le a"ise siempre -ue encuentre un nombre -ue no se 5a)a declarado e8pl.citamente como una
"ariable&
Para declarar "ariables de !orma e8pl.cita:
Inclu)a esta sentencia en la seccin Declaraciones Aenerales del mdulo de clase* de !ormulario o
estndar:
#ption Explicit
9 o bien 9
,n el men/ Herramientas, eli(a 7pciones* 5aga clic en la !ic5a (ditor ) acti"e la opcin
5eclaraci$n de variables re2uerida. ,sto inserta automticamente la sentencia 7ption (plicit
en los mdulos nue"os* pero no en los )a creados* por lo -ue tendr -ue agregar manualmente
7ption (plicit a los mdulos e8istentes en el pro)ecto&
+i 5ubiera tenido e!ecto dic5a instruccin en el mdulo de !ormulario o mdulo estndar -ue contiene la
!uncin @a+A, Visual Basic 5abr.a reconocido >empVal ) >emVal como "ariables no declaradas ) 5abr.a
generado errores para ambas& Deber.a* por tanto* declara e8pl.citamente >empVal:
Function 6aLG 'num(
Dim TempJal
TempJal = 2bs 'num(
6aLG = Sr 'TemJal(
End Fuction
"lcance de las aria%les
,l alcance de una "ariable de!ine en -u partes del cdigo son reconocidas& 2uando declara una
"ariable en un procedimiento* slo el cdigo de dic5o procedimiento puede tener acceso o modi!icar el
"alor de la "ariable7 tiene un alcance local al procedimiento& A "eces* sin embargo* se necesita utili0ar
una "ariable con un alcance ms general* como a-uella cu)o "alor est disponible para todos los
procedimientos del mismo mdulo o incluso para todos los procedimientos de toda la aplicacin& Visual
Basic le permite especi!icar el alcance de una "ariable cuando la declara&
(stablecido el alcance de las variables
Dependiendo de cmo se declara* una "ariable tiene como alcance un procedimiento 3local4 o un
mdulo&
4lcance .rivado .9blico
;i"el de procedimiento 'as "ariables son pri"adas ;o es aplicable& ;o
Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales AE AE
al procedimiento donde se puede declarar "ariables
declaran& p/blicas dentro de un
procedimiento&
;i"el de mdulo 'as "ariables son pri"adas 'as "ariables estn
al mdulo donde se disponibles para todos
declaran& los mdulos&
aria%les utilizadas en un procedimiento
'as "ariables al ni"el de procedimiento slo se reconocen en el procedimiento en el -ue se 5an
declarado& +e las conoce tambin como "ariables locales& +e declaran mediante las palabras cla"e
5im o !tatic. Por e(emplo:
Dim intTemp 2s *nteger
9 o bien 9
Static intContador 2s *nteger
'os "alores de "ariables locales declaradas con !tatic e8isten mientras se e(ecuta la aplicacin*
mientras -ue las "ariables declaradas con 5im slo e8isten mientras se e(ecuta el procedimiento&
aria%les utilizadas en un m!dulo
De !orma predeterminada* una "ariable al ni"el de mdulo est disponible para todos los
procedimientos del mdulo* pero no para el cdigo de otros mdulos& 2ree "ariables al ni"el de mdulo
declarndolas con la palabra cla"e .rivate en la seccin 5eclaraciones ,enerales al principio del
mdulo& Por e(emplo:
"rivate intTemp 2s *nteger
Al ni"el de mdulo* no 5a) di!erencia entre .rivate ) 5im, pero es pre!erible usar .rivate por-ue
contrasta con .ublic ) 5ace -ue el cdigo sea ms !cil de comprender&
aria%les utilizadas por todos los m!dulos
Para 5acer -ue una "ariable al ni"el de mdulo est disponible para otros mdulos* utilice la palabra
cla"e .ublic para declararlas& 'os "alores de las "ariables p/blicas estn disponibles para todos los
procedimientos de la aplicacin& Al igual -ue todas las "ariables al ni"el del mdulo* las "ariables
p/blicas se declaran en la seccin 5eclaraciones ,enerales al principio del mdulo& Por e(emplo:
"ublic intTemp 2s *nteger
Nota: ?o puede declarar *aria%les p%licas en un procedimiento( s!lo en la secci!n Declaraciones
)enerales de un m!dulo.
2onstantes
A menudo "er -ue el cdigo contiene "alores constantes -ue reaparecen una ) otra "e0& C puede -ue
el cdigo dependa de ciertos n/meros -ue resulten di!.ciles de recordar 3n/meros -ue* por s. mismos*
no tienen un signi!icado ob"io4&
,n estos casos* puede me(orar muc5o la legibilidad del cdigo ) !acilitar su mantenimiento si utili0a
constantes& 1na constante es un nombre signi!icati"o -ue sustitu)e a un n/mero o una cadena -ue no
Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales AF AF
"ar.a& Aun-ue una constante recuerda ligeramente a una "ariable* no puede modi!icar una constante o
asignarle un "alor nue"o como ocurre con una "ariable& Ba) dos or.genes para las constantes:
2onstantes intr*nsecas o de'inidas por el sistema proporcionadas por Visual Basic&
'as constantes simblicas o de'inidas por el usuario se declaran mediante la instruccin Const.
Creaci!n de sus propias constantes
'a sinta8is para declarar una constante es la siguiente:
B.ublicC.rivateD Const nombreSconstante U4s tipoV E e8presin
,l argumento nom%reBconstante es un nombre simblico "lido 3las reglas son las mismas -ue para
crear nombres de "ariable4 ) expresi!n est compuesta por constantes ) operadores de cadena o
numricos7 sin embargo* no puede utili0ar llamadas a !unciones en expresi!n& 1na instruccin Const
puede representar una cantidad matemtica o de !ec5a ) 5ora:
Const con"i = M.DNDOP@QOMORPSP
"ublic Const con)ax"lanetas 2s *nteger = P
Const conFec/aSalida = TDHDHPOT
+e puede utili0ar tambin la instruccin Const para de!inir constantes de cadena:
"ublic Const conJersion = 1 .S.D..24
Const con!ombreClave = 1Enigma4
Puede colocar ms de una declaracin de constante en una /nica l.nea si las separa con comas:
"ublic Const con"i=M.DN9 con)ax"lanetas=P9 con"ob)undial=QE;.P
A menudo* la e8presin del lado derec5o del signo igual 3 < 4 es un n/mero o cadena literal* pero
tambin puede ser una e8presin -ue d como resultado un n/mero o una cadena 3aun-ue la
expresi!n no puede contener llamadas a !unciones4& Puede incluso de!inir constantes en trminos de
constantes pre"iamente de!inidas:
Const con"i@ = con"i K @
1na "e0 -ue de!ina las constantes* puede colocarlas en el cdigo para 5acerlo ms legible& Por
e(emplo:
Static SistemaSolar 'D To con)ax"lanetas(
*+ num"ersonas U con"op)undial T/en Exit Sub
"lcance de las constantes de+inidas por el usuario
1na instruccin Const tiene igual alcance -ue una declaracin de "ariable ) se le aplican las mismas
reglas:
Para crear una constante -ue slo e8ista en un procedimiento* declrela dentro del procedimiento&
Para crear una constante disponible para todos los procedimientos de un mdulo* pero no para el
cdigo -ue est !uera del mdulo* declrela en la seccin 5eclaraciones ,enerales del mdulo&
Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales AG AG
Para crear una constante disponible en toda la aplicacin* declare la constante en la seccin
5eclaraciones ,enerales de un mdulo estndar ) colo-ue delante de Const la palabra cla"e
.ublic. ;o se pueden declarar las constantes p/blicas en un mdulo de clase o de !ormulario&
E*itar re+erencias circulares
2omo es posible de!inir constantes en trminos de otras constantes* deber tener cuidado para no
establecer un ciclo o re!erencia 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 de!inida en !uncin de la otra& Por
e(emplo:
'En el )=dulo DB
"ublic Const con2 = conB K @ ' Disponible en toda la aplicaci=n
'En el )=dulo @B
"ublic Const conB = con2 H @ ' Disponible en toda la aplicaci=n
+i se produce un ciclo* Visual Basic generar un error cuando intente e(ecutar la aplicacin& ;o puede
e(ecutar el cdigo 5asta -ue resuel"a la re!erencia circular& Para e"itar la creacin de un ciclo* restrin(a
todas las constantes p/blicas a un /nico mdulo o* al menos* al menor n/mero posible de mdulos&
2on"enciones para ;ombres de 2onstantes ) Variables
'as "ariables se deben de!inir siempre con el menor alcance posible& 'as "ariables globales 3p/blicas4
pueden 5acer lgica de una aplicacin mu) di!.cil de entender& 'as "ariables globales tambin 5acen
ms di!.cil mantener ) "ol"er a usar el cdigo&
,n Visual Basic las "ariables pueden tener el alcance siguiente:
4lcance 5eclaraci$n Visible en
;i"el de procedimiento 5im o !tatic en el ,l procedimiento en el
Procedimiento* -ue est declarada
+ubprocedimiento o
Funcin
4lcance 5eclaraci$n Visible en
;i"el de mdulo .rivate en la seccin >odos los procedimientos
Declaraciones Aenerales del mdulo de !ormulario
de un mdulo de o de cdigo
!ormulario o de cdigo
3&!rm* &bas4
:lobal .ublic en la seccin ,n toda de aplicacin
Declaraciones Aenerales
de un mdulo de cdigo
3&bas4
,n una aplicacin de Visual Basic* las "ariables globales se deben usar slo cuando no e8ista ninguna
otra !orma cmoda de compartir datos entre !ormularios& 2uando 5a)a -ue usar "ariables globales* es
con"eniente declararlas todas en un /nico mdulo agrupadas por !unciones ) dar al mdulo un nombre
signi!icati"o -ue indi-ue su !inalidad* como P/blicas&
Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales AH AH
1na prctica de codi!icacin correcta es escribir cdigo modular siempre -ue sea posible& Por e(emplo*
si la aplicacin muestra un cuadro de dilogo* colo-ue todos los controles ) el cdigo necesario para
e(ecutar la tarea del dilogo en un /nico !ormulario& ,sto a)uda a tener cdigo de la aplicacin
organi0ado en componentes /tiles ) minimi0a la sobrecarga en tiempo de e(ecucin&
A e8cepcin de las "ariables globales 3 -ue no se deber.an pasar4* los procedimientos ) !unciones
deben operar slo sobre los ob(etos -ue se les pasan&
Pre+i-os de alcance de *aria%les
A medida -ue aumenta el tama6o del pro)ecto* tambin aumenta la utilidad de reconocer rpidamente
el alcance de las "ariables& ,sto se consigue escribiendo un pre!i(o de alcance de una letra delante del
pre!i(o de tipo* sin aumentar demasiado la longitud del nombre de las "ariables&
4lcance .re'ijo (jemplo
:lobal g gstr;ombre1suario
;i"el de mdulo m mblnProgresoDel2lculo
'ocal del Procedimiento ;inguno dblVelocidad
1na "ariable tiene alcance glo%al si se declara como .ublic en un mdulo estndar o en un mdulo de
!ormulario& 1na "ariable tiene alcance de ni*el de m!dulo si se declara como .rivate en un mdulo
estndar o en un mdulo de !ormulario* respecti"amente&
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 ma)/sculas ) min/sculas* con la letra inicial de cada
palabra en ma)/sculas& Aun-ue las constantes estndar de Visual Basic no inclu)en in!ormacin de
tipo de datos ) el alcance de una constante& Para los nombres de constantes* se deben seguir las
mismas normas -ue para las "ariables& Por e(emplo:
mint)5x,ista-suario I ,Lmite de entradas m5ximas para la
I lista de usuarios
I 'valor entero9 local del m=dulo(
gstr!ueva,Lnea I Car5cter de nueva lLnea
I 'cadena9 global de la aplicaci=n(
aria%les
Declarar todas las "ariables a5orra tiempo de programacin por-ue reduce el n/mero de errores
debidos a nombres de "ariables errados 3por e(emplo* a;ombre1suario>mp !rente a
s;ombre1suario>mp !rente a s;ombre1suario>emp4& ,n la !ic5a (ditor del cuadro de dilogo
7pciones* acti"e la opcin 5eclaraci$n de variables re2uerida. 'a instruccin 7ption (plicit
re-uiere -ue declare todas las "ariables del programa de Visual Basic&
'as "ariables deben lle"ar un pre!i(o para indicar su tipo de datos& Cpcionalmente* ) en especial para
programas largos* el pre!i(o se puede ampliar para indicar el alcance de la "ariable&
Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales AL AL
.ipos de datos de *aria%les
1se los siguientes pre!i(os para indicar el tipo de datos de una "ariable&
*ipo de datos .re'ijo (jemplo
Boolean bln bln,ncontrado
B)te b)t b)tDatosImagen
Cb(eto 2ollection col col$idgets
2urrenc) cur curIngresos
Date 3>ime4 dtm dtmInicio
Double dbl dbl>olerancia
,rror err err;/mDeCrden
Integer int int2antidad
'ong lng lngDistancia
Cb(ect ob( ob(Acti"o
+ingle sng sng#edia
+tring str str;ombreF
De!inido por el usuario udt udt,mpleado
Variant "nt "nt25ecK+um
?om%res descripti*os de *aria%les y procedimientos
,l cuerpo de un nombre de "ariable o procedimiento se debe escribir en ma)/sculas ) min/sculas )
debe tener la longitud necesaria para describir su !uncionalidad& Adems* los nombres de !unciones
deben empe0ar con un "erbo* como Iniciar;ombre#atri0 o 2errarDilogo&
Para nombres -ue se usen con !recuencia o para trminos largos* se recomienda usar abre"iaturas
estndar para -ue los nombres tengan una longitud ra0onable& ,n general* los nombres de "ariables
con ms de A@ caracteres pueden ser di!.ciles de leer en pantalla V:A&
2uando se usen abre"iaturas* 5a) -ue asegurarse de -ue sean co5erentes en toda la aplicacin&
Alterar aleatoriamente entre 2nt ) 2ontar dentro de un pro)ecto pro"oca una con!usin innecesaria&
.ipos de+inidos por el usuario
,n un pro)ecto grande con muc5os tipos de!inidos por el usuario* suele ser /til dar a cada uno de estos
tipos un pre!i(o de tres caracteres& +i estos pre!i(os comien0an con Mu=* ser !cil reconocerlos cuando
se est traba(ando con tipos de!inidos por el usuario& Por e(emplo* Mucli= se podr.a usar como pre!i(o
para las "ariables de un tipo 2liente de!inido por el usuario&
>ipos Adicionales de Variables
3egistros o Estructuras
+on tipos de datos de!inidos por el usuario& ,s bsicamente un con(unto de "arios datos de tipos
elementales agrupados ba(o una denominacin com/n& Debe declararse en la seccin 5eclaraciones
,enerales de un mdulo& +e usa la palabra reser"ada *ype.
Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales AN AN
!intais
.ype ?om%reDel?ue*o.ipo
?om%reDelElemento' "s .ipoDato
?om%reDelElemento) "s .ipoDato
?om%reDelElemento> "s .ipoDato
...
...
End .ype
(jemplo
T>pe 6egEmpleado
EmpC=digo 2s *nteger
Emp!ombre 2s String K N.
EmpCargo 2s String K DO
End T>pe
"rreglo de aria%les
1n arreglo es una coleccin de elementos del mismo tipo con un nombre com/n& 'os elementos son
identi!icados por el nombre com/n ) un .ndice&
!intais
Dim ?om%reDel"rreglo6 Dimensi!n'( Dimensi!n)( ... 7 "s .ipoDeDato
Visual Basic soporta 5asta GI dimensiones& Al declarar las dimensiones se puede indicar un solo
n/mero* en cu)o caso se entiende -ue dic5a dimensin "a de cero 5asta el n/mero indicado& >ambin
es posible indicar e8pl.citamente el inicio ) trmino de la dimensin&
(jemplo
Dim ,istaD '@.( 2s *nteger ' @D elementos9 del . al @.
Dim ,ista@ 'D to @.( 2s *nteger ' @. elementos9 del D al @.
Dim Tabla 'D to D.9 D to @.( 2s String ' Tabla de D. x @.
"rreglos Din2micos
Ba) situaciones en las cuales se desea usar un arreglo* pero al momento del dise6o no se sabe sus
dimensiones& Para este tipo de situaciones Visual Basic permite declaraciones de arreglos del siguiente
modo:
Dim x ' ( 2s *nteger
...
...
6edim x 'lst,ista.,istCount(
Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales EI EI
2uando se redimensiona un arreglo* los "alores almacenados anteriormente se pierden* por-ue cada
elemento es reiniciali0ado con cero o null dependiendo del tipo de dato del elemento& +i se desea
preser"ar los "alores debemos usar la palabra cla"e .reserve en la sentencia de redimensionamiento&
6edim "reserve x ' int!CmeroDeElementos (
CP,DADCD,+
"ritm&ticos
^ ,8ponenciacin
? #ultiplicacin
O Di"isin
Di"isin entera
#od Desiduo entero 3,(m: A #od B4
R +uma
- Desta
Q 2oncatenacin de cadenas
Comparaci!n
< Igual
_` Distinto
#enor -ue
_< #enor o igual
`< #a)or o igual
'iKe 2ompara dos cadenas
? 2ero o ms caracteres 3,(m: cad 'iKe Mma?=4
? 2ual-uier carcter
\ 2ual-uier d.gito 3I9N4
UlistaV cual-uier carcter en lista
UalistaV cual-uier carcter -ue no esta en lista
Is 1sado para comparar dos "ariables de re!erencia a ob(etos
$!gicos
And MW= lgico
Cr MC= lgico
Jor MC= ,8clusi"o
;ot ;egacin
Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales Parte A: >ipos de datos* constantes ) "ariables 9 Dann) A& #atta :on0ales E1 E1
Parte E: ,structuras de 2ontrol
,structuras de 2ontrol
'as estructuras de control le permiten controlar el !lu(o de e(ecucin del programa& >enemos dos tipos
de estructuras de control:
,structuras de decisin
,structuras de bucle
Estructuras de Decisi!n
'os procedimientos de Visual Basic pueden probar condiciones )* dependiendo de los resultados*
reali0ar di!erentes operaciones& ,ntre las estructuras de decisin -ue acepta Visual Basic se inclu)en
las siguientes:
I+....,en
I+....,en...Else
5elect Case
0'...*hen
1se la estructura 0'...*hen para e(ecutar una o ms instrucciones basadas en una condicin& Puede
utili0ar la sinta8is de una l.nea o un blo-ue de "arias l.neas:
I+ condici!n T$en 5entencias
I+ condici!n T$en
5entencias
"nd I+
Condicin normalmente es una comparacin* pero puede ser cual-uier e8presin -ue d como
resultado un "alor numrico& Visual Basic interpreta este "alor como *rue o %alse7 un "alor numrico
cero es %alse ) se considera *rue cual-uier "alor numrico distinto de cero& +i condicin es *rue,
Visual Basic e(ecuta todas las sentencias -ue siguen a la palabra cla"e *hen. Puede utili0ar sinta8is de
una l.nea o de "arias l.neas para e(ecutar una sentencia basada en una condicin* los siguientes dos
e(emplos son e-ui"alentes:
*+ cualuierFec/a V !oF T/en CualuierFec/a = !oF
*+ cualuierFec/a V !oF T/en
CualuierFec/a = !oF
End *+
Cbser"e -ue el !ormato de una /nica l.nea de 0'...*hen no utili0a la instruccin (nd 0'. +i se desea
e(ecutar ms de una l.nea de cdigo cuando condicin sea *rue, debe utili0ar la sinta8is de blo-ue de
"arias l.neas 0'...*hen...(nd 0'.

*+ cualuierFec/a V !oF T/en
Parte E: ,structuras de control 9 Dann) A& #atta :on0ales Parte E: ,structuras de control 9 Dann) A& #atta :on0ales E@ E@
CualuierFec/a = !oF
TimerD.Enabled = False I Desactiva el control Timer.
End *+
*+ c/&2lumno-!*.Jalue=D T/en
txtCosto = Format 'txtCostoK..S.94Fixed4(
txtC=digo.Enabled = True
End *+
0'...*hen...(lse
1tilice un blo-ue 0'...*he...(lse para de!inir "arios blo-ues de sentencias* uno de los cuales se
e(ecutar:
I+ condici!n' T$en
F%lo1ue de sentencias 'G
,"lseI+ condici!n) T$en
F%lo1ue de sentencias )GG ...
,"lse
F%lo1ue de sentencias nGG
"nd I+
Visual Basic e"al/a primero condici$n6. +i es %alse* Visual Basic procede a e"aluar condici$nF ) as.
sucesi"amente* 5asta -ue encuentre una condicin *rue. 2uando encuentra una condicin *rue, Visual
Basic e(ecuta el blo-ue de instrucciones correspondientes ) despus e(ecuta el cdigo -ue sigue a (nd
0'. Cpcionalmente* puede incluir un blo-ue de instrucciones (lse, -ue Visual Basic e(ecutar sin
ninguna de las condiciones es *rue.
0'...*hen...(lse0' es un caso especial de 0'...*hen...(lse. Cbser"e -ue puede tener cual-uier n/mero
de clusula (lse0' o ninguna& Puede incluir una clusula (lse sin tener en cuenta si tiene o no clusula
(lse0'.
Por e(emplo* la aplicacin podr.a reali0ar distintas acciones dependiendo del control en -ue se 5a)a
5ec5o clic de una matri0 de controles de men/:
"rivate Sub mnuCut%Clic& '*ndex 2s *nteger(
*+ *ndex = . T/en I Comando Cortar
Cop>2ctiveControl I ,lama a procedimientos generales
Clear2ctiveControl
Else*+ *ndex = D T/en I Comando Copiar
Cop>2ctiveControl
Else*+ *ndex = @ T/en I Comando Borrar
Clear2ctiveControl
Else I Comando "egar
"aste2ctiveControl
End *+
End Sub
Parte E: ,structuras de control 9 Dann) A& #atta :on0ales Parte E: ,structuras de control 9 Dann) A& #atta :on0ales EA EA
*+ Clave-suario=4DS*4 T/en
I "ermite al usuario entrar al sistema
...
...
Else
I )ostrar un mensa?e advirtiendo error en la clave
...
...
End *+
"rivate Sub DeterminaCondici=n ' (
*+ Jal 'txt"romedio( U=DM T/en
txtCondici=n = 12probado4
Else*+ Jal 'txt"romedio( U= D. T/en
txtCondici=n = 12sistente4
Else
txtCondici=n = 1Desaprobado4
End *+
End Sub
Cbser"e -ue siempre puede agregar ms clusulas (lse0' a la estructura 0'...*hen. +in embargo* esta
sinta8is puede resultar tediosa de escribir cuando cada (lse0' compara la misma e8presin con un "alor
distinto& Para estas situaciones* puede utili0ar la estructura de decisin !elect Case.
!elect Case
Visual Basic proporciona la estructura !elect Case como alternati"a a 0'...*hen...(lse para e(ecutar
selecti"amente un blo-ue de sentencias entre "arios blo-ues& 'a sentencia !elect Case o!rece
posibilidades similares a la instruccin 0'...*hen...(lse, pero 5ace -ue el cdigo sea ms legible cuando
5a) "arias opciones&
'a estructura !elect Case !unciona con una /nica e8presin de prueba -ue se e"al/a una "e0
solamente* al principio de la estructura& Visual Basic compara el resultado de esta e8presin con los
"alores de cada Case de la estructura& +i 5a) una coincidencia* e(ecuta el blo-ue de sentencias
asociado a ese Case>
#elec Case expresi!nBprue%a
,Case listaBexpresiones'
F%lo1ue de sentencias 'GG
,Case listaBexpresiones)
F%lo1ue de sentencias )GG
.
.
.
,Case "lse
F%lo1ue de sentencias nGG
"nd #elect
2ada lista_expresiones es una lista de uno a ms "alores& +i 5a) ms de un "alor en una lista* se
separan los "alores con comas& 2ada blo-.e de sentencias contiene cero o ms instrucciones& +i ms
de un Case coincide con la e8presin de prueba* slo se e(ecutar el blo-ue de instrucciones asociado
Parte E: ,structuras de control 9 Dann) A& #atta :on0ales Parte E: ,structuras de control 9 Dann) A& #atta :on0ales EE EE
con la primera coincidencia& Visual Basic e(ecuta las instrucciones de la clusula 3opcional4 Case (lse
si ning/n "alor de la lista de e8presiones coincide con la e8presin de prueba&
Por e(emplo* suponga -ue agrega otro comando al men/ (dici$n en el e(emplo 0'...*hen...(lse. Podr.a
agregar otra clusula (lse0' o podr.a escribir la !uncin con !elect Case>
"rivate Sub mnuCut%Clic& '*ndex 2s *nteger(
Select Case *ndex
Case . I Comando Cortar
Cop>2ctiveControl I ,lama a procedimientos generales
Clear2ctiveControl
Case D I Comando copiar.
Cop>2ctiveControl
Case @ I Comando borrar.
Clear2ctiveControl
Case M I Comando "egar.
"aste2ctiveControl
Case Else
+rmFind.S/oF I )uestra el cuadro de
I di5logo Buscar.
End Select
End Sub
Select Case Tipo-suario
Case 1Supervisor4
I "roporciona al usuario privilegios de Supervisor
...
...
Case 1-suario4
I "roporciona al usuario privilegios de -suario
...
...
Case Else
I "roporciona al usuario privilegio de invitado
...
...
End Select
Cbser"e -ue la estructura !elect Case e"al/a una e8presin cada "e0 -ue al principio de la estructura&
Por el contrario* la estructura 0'...*hen...(lse puede e"aluar una e8presin di!erente en cada sentencia
(lse0'. +lo puede sustituir una esructura 0'...*hen...(lse con una estructura !elect Case si la
intruccin 0' ) cada instruccin (lse0' e"al/a la misma e8presin&
Parte E: ,structuras de control 9 Dann) A& #atta :on0ales Parte E: ,structuras de control 9 Dann) A& #atta :on0ales EF EF
7tros (jemplos
*+ Jentas U D..... T/en
strDscto = Format '..D.9 1Fixed4(
Else*+ Jentas U O.... T/en
strDscto = Format '...O9 1Fixed4(
Else
strDscto = Format '...@9 1Fixed4(
End *+
Select Case Cantidad
Case D
sngDscto = ...
Case @9 M
sngDscto = ...O
Case N To Q
sngDscto = ..D.
Case Else
sngDscto = ..@.
End Select
int6pta = )sgBox '13uarda cambios antes de salir4 9 vb<es!o(
Select Case int6pta
Case vb<es
3uardarCambios
-nload )e
Case vb!o
-nload )e
End Select
Estrucuras de 3epeticion
'as estructuras de repeticin o bucle le permiten e(ecutar una o ms l.neas de cdigo repetidamente&
'as estructuras de repeticin -ue acepta Visual Basic son:
Do&&&'oop
For&&&;e8t
For ,ac5&&&;e8t
5o...#oop
1tilice el bucle 5o para e(ecutar un blo-ue de sentencias un n/mero inde!inido de "eces& Ba) algunas
"ariantes en la sentencia 5o...#oop, pero cada una e"al/a una condicin numrica para determinar si
Parte E: ,structuras de control 9 Dann) A& #atta :on0ales Parte E: ,structuras de control 9 Dann) A& #atta :on0ales EG EG
contin/a la e(ecucin& 2omo ocurre con 0'...*hen, la condicin debe ser un "alor o una e8presin -ue
d como resultado %alse 3cero4 o *rue 3distinto de cero4&
,n el siguiente e(emplo de 5o...#oop, las sentencias se e(ecutan siempre ) cuando condicin sea
*rue>
Do /$ile condici!n
5entencias
&oop
2uando Visual Basic e(ecuta este bucle 5o, primero e"al/a condicin. +i condicin es %alse 3cero4*
se salta todas las sentencias. +i es *rue 3distinto de cero4 Visual Basic e(ecuta las sentencias* "uel"e
a la instruccin 5o =hile ) prueba la condicin de nue"o&
Por tanto* el bucle se puede e(ecutar cual-uier n/mero de "eces* siempre ) cuando condicin sea
distinta de cero o *rue. ;unca se e(ecutan las sentencias si condicin es %alse inicialmente& Por
e(emplo* este procedimiento cuenta las "eces -ue se repite una cadena destino dentro de otra cadena
repitiendo el bucle tantas "eces como se encuentre la cadena de destino:
Function ContarCadenas 'cadenalarga9 destino(
Dim posici=n9 contador
posici=n = D
Do E/ile *nStr 'posici=n9 cadenalarga9 destino(
posici=n = *nStr 'posici=n9 cadenalarga9 destino(;D
contador = contador ; D
,oop
ContarCadenas = contador
End Function
+i la cadena destino no est en la otra cadena* 0n!tr de"uel"e I ) no se e(ecuta el bucle&
Ctra "ariante de la instruccin 5o...#oop e(ecuta las sentencias primero ) prueba la condicin
despus de cada e(ecucin& ,sta "ariacin garanti0a al menos una e(ecucin de sentencias:
Do
5entencias
&oop /$ile condici!n
Ba) otras dos "ariantes anlogas a las dos anteriores* e8cepto en -ue repiten el bucle siempre )
cuando condicin sea %alse en "e0 de *rue.
Hace el bucle cero o m?s veces Hace el bucle al menos una veA
Do Until condici!n Do
5entencias 5entencias
&oop &oop Until condici!n
Parte E: ,structuras de control 9 Dann) A& #atta :on0ales Parte E: ,structuras de control 9 Dann) A& #atta :on0ales EH EH
%or...&et
'os bucles 5o !uncionan bien cuando no se sabe cuntas "eces se necesitar e(ecutar las sentencias
del bucle& +in embargo* cuando se sabe -ue se "a a e(ecutar las sentencias un n/mero determinado
de "eces* es me(or elegir el bucle %or...&et. A di!erencia del bucle 5o, el bucle %or utili0a una "ariable
llamada contador -ue incrementa o reduce su "alor en cada repeticin del bucle& 'a sinta8is es la
siguiente:
For contador H iniciar To +inalizar F#tep incrementoG
5entencias
Next FcontadorG
'os argumentos contador, iniciar, 'inaliAar e incremento son todos numricos&
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 '. Al e(ecutar el bucle %or, Visual Basic:
1& ,stablece contador al mismo "alor -ue iniciar.
@& 2omprueba si contador es ma)or -ue +inali0ar. +i lo es* Visual Basic sale del bucle& 3+i
incremento es negati"o* Visual Basic comprueba si contador es menor -ue +inali0ar.4
A& ,(ecuta las sentencias.
E& Incrementa contador en 1 o en incremento, si se especi!ic&
F& Depite los pasos @ a E&
,ste cdigo imprime los nombres de todas las !uentes de pantalla disponibles:
"rivate Sub FormAClic& ' (
Dim * 2s *nteger
For i = . To Screen.FontCount
"rint Screen.Fonts 'i(
!ext
End Sub
%or (ach...&et
,l bucle %or (ach...&et es similar al bucle %or...&et, pero repite un grupo de sentencia por cada
elemento de una coleccin de ob(etos o de una matri0 en "e0 de repetir las sentencias un n/mero
especi!icado de "eces& ,sto resulta especialmente /til si no se sabe cuntos elementos 5a) en la
coleccin& Be a-u. la sinta8is del bucle %or (ach...&et>
For "ac$ elemento In grupo
5entencias
Next elemento
Por e(emplo* el siguiente procedimiento !ub abre la base de datos Biblio&mdb ) agrega el nombre de
cada tabla a un cuadro de lista&
Sub ,istTableDe+s ' (
Dim ob?Db 2s Database
Parte E: ,structuras de control 9 Dann) A& #atta :on0ales Parte E: ,structuras de control 9 Dann) A& #atta :on0ales EL EL
Set ob?Db = #penDatabase'"cBH2rc/ivos de programaHDevstudioH" W %
"vbHbiblio.mdb"9 True9 False(
For Eac/ TableDe+ *n ob?Db.TableDe+s ' (
,istD.2dd*tem TableDe+.!ame
!ext TableDe+
End Sub
>enga en cuenta las restricciones siguientes cuando utilice %or (ach...&et>
Para las colecciones* elemento slo puede ser una "ariable Variant, una "ariable 7bject genrica
o un ob(eto mostrado en el ,8aminador de ob(etos&
Para las matrices* elemento slo puede ser una "ariable Variant.
;o puede utili0ar %or (ach...&et con una matri0 de tipos de!inidos por el usuario por-ue un
Variant no puede contener un tipo de!inido por el usuario&
,l siguiente e(emplo 5abilita todos los C.adro de Texto del !ormulario>
"rivate Sub )odoEdici=n ' (
Dim control
For Eac/ control *n +ormD.Controls
*+ T>pe#+ control *s TextBox T/en
Control.Enabled = True
End *+
!ext control
End Sub
5alida de una Estructura de Control
'a instruccin (it le permite salir directamente de un bucle %or o de un bucle 5o. 'a sinta8is de la
sentencia (it es sencilla: (it %or puede aparecer tantas "eces como sea necesario dentro de un
bucle %or ) (it 5o puede aparecer tantas "eces como sea necesario dentro de un bucle 5o>
For contador H iniciar To +inalizar F#tep incrementoG
F%lo1ue sentenciasG
F"xit ForG
F%lo1ue sentenciasG
Next FcontadorG
Do FI/$ile J UntilK condici!nG
F%lo1ue de sentenciasG
F"xit DoG
F%lo1ue de sentenciasG
&oop
Do
F%lo1ue de sentenciasG
F"xit DoG
F%lo1ue de sentenciasG
&oop FI/$ile J UntilK condici!nG
(it %or ) (it 5o son mu) /tiles )a -ue* algunas "eces* resulta apropiado salir inmediatamente de un
bucle sin reali0ar ms iteraciones o sentencias dentro del bucle&
Parte E: ,structuras de control 9 Dann) A& #atta :on0ales Parte E: ,structuras de control 9 Dann) A& #atta :on0ales EN EN
2uando utilice la instruccin (it para salir de un bucle* el "alor de la "ariable contador di!iere*
dependiendo de cmo 5a)a salido del bucle:
2uando termina un bucle* la "ariable contador contiene el "alor del l.mite superior ms el paso&
2uando sale de un bucle prematuramente* la "ariable contador conser"a su "alor seg/n las reglas
usuales del alcance&
2uando sale antes del !inal de una coleccin* la "ariable contador contiene &othing si se trata de
un tipo de dato 7bject ) (mpty si es un tipo de dato Variant.
Parte E: ,structuras de control 9 Dann) A& #atta :on0ales Parte E: ,structuras de control 9 Dann) A& #atta :on0ales FI FI
Parte F: 2ontroles ,stndar Adicionales
) Procedimientos
2ontrol #arco 3Frame4
,ste control permite agrupar otros controles para darle ma)or !uncionalidad a la inter!a0& 'os controles
Botones de 7pci$n necesariamente tienen -ue estar agrupados por el control Marco. Para agrupar
controles* dibu(e primero el control #arco )* a continuacin* dibu(e los controles dentro de #arco&
Propiedades
2aption >.tulo de marco&
,nabled Determina si est 5abilitado para responder a las acciones del usuario&
;ame ;ombre del control&
Visible Determina si el Marco ) los controles -ue contiene estn "isibles o no&
2ontrol 2asilla de Veri!icacin 325ecKBo84
'as casillas de "eri!icacin se utili0an para proporcionar al usuario opciones de tipo +iO;o o
VerdaderoOFalso& 2uando el usuario selecciona una opcin 3acti"a la casilla4* aparece una marca de
"eri!icacin 34 dentro de la casilla&
Propiedades
2aption Descripcin -ue acompa6a a la casilla&
,nabled >rueOFalse& Determina si est 5abilitado para responder a las acciones del
usuario&
;ame ;ombre del control&
Value I X 1nc5ecKed 3Vac.o* no marcado4
1 X 25ecKed 3#arcado4
@ X :ra)ed 3:ris* Inde!inido4
Visible Determina si la casilla est "isible o no&
E*entos
2licK Ccurre cuando el usuario 5ace clic sobre la casilla&
2ontrol Botn de Cpcin 3CptionButton4
Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales F1 F1
,stos controles se utili0an para -ue el usuario seleccione una opcin de un grupo opciones& 'a opcin
seleccionada tiene un punto en el centro&
Propiedades
2aption Descripcin -ue acompa6a a la opcin&
,nabled >rueOFalse& Determina si est 5abilitado para responder a las acciones del
usuario&
;ame ;ombre del control&
Value >rueOFalse* marcado o no marcado&
Visible >rueOFalse& Determina si el botn est "isible o no&
E*entos
2licK Ccurre cuando el usuario 5ace clic sobre el botn&
Arreglo de 2ontroles
2uando creamos un arreglo de controles* todos los controles -ue !orman el arreglo deben tener el
mismo nombre 3Propiedad ;ame4* la propiedad 0nde establece el .ndice de cada control en el arreglo*
esta propiedad comien0a desde I&
1n arreglo de controles es un grupo de controles -ue comparten el mismo:
>ipo de ob(eto
;ombre del control
Procedimientos de e"ento
C!digo m2s +2cil de escri%ir y mantener
'os arreglos de controles 5ace -ue el cdigo sea ms !cil de escribir ) mantener debido a -ue solo
escribe un solo procedimiento de e"ento para todos los controles pertenecientes al arreglo* el
parmetro 0nde del procedimiento de e"ento determina desde -ue control ocurri el e"ento&
Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales F@ F@
C!digo m2s e+iciente
'os arreglos de controles 5acen -ue el cdigo sea ms e!iciente ) me(oran el rendimiento de la
aplicacin debido a -ue usa menos recursos del sistema -ue los controles indi"iduales&
LC!mo se crea un arreglo de controlesM
'uego de crear ) establecer el nombre del primer control* tiene dos alternati"as:
Mtodo 6
1& 2opiar el primer control al portapapeles&
@& 'uego pegar el control de portapapeles en el !ormulario& Visual Basic le preguntar si desea
crear un arreglo de controles&
A& Depita el paso @ 5asta completar el arreglo&
Mtodo F
1& Dibu(e el siguiente control ) estable0ca su nombre igual al del primer control& Visual Basic le
preguntar si desea crear un arreglo de controles&
@& Depita el paso 1 5asta completar el arreglo&
(jemplo
'a inter!a0 mostrada tiene un arreglo de controles para seleccionar el reporte* el procedimiento de
e"ento es el mismo para cual-uier elemento del arreglo&
,l cdigo para el e"ento clic es:
"rivate Sub opt6eporte%Clic&'*ndex 2s *nteger(
Select Case *ndex
Case .9 D
+ra6ango.Enabled = False
lblDesde.Enabled = False
lblHasta.Enabled = False
txtDesde.Enabled = False
txtHasta.Enabled = False
Case @
+ra6ango.Enabled = True
lblDesde.Enabled = True
Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales FA FA
CptDeporte314
CptDeporte3I4
CptDeporte3@4
lblHasta.Enabled = True
txtDesde.Enabled = True
txtHasta.Enabled = True
txtDesde.SetFocus
End Select
End Sub
2ontrol Barra de Despla0amiento
Barra de Despla0amiento Bori0ontal 3B+crollBar4
Barra de Despla0amiento Vertical 3V+crollBar4
+on usuados con !recuencia para permitir rpidos despla0amientos a tra"s de una lista grande de
items& Por e(emplo: arc5i"os* indicadores de posicin actual de una escala de "alores* indicadores de
"olumen en un sistema de audio&
Propiedades
'arge25ange De 1 a A@HGH& 2antidad de cambio cuando el usuario 5ace clic en el despla0amiento
largo&
#a8 #8imo "alor de despla0amiento cuando el botn se encuentra en la posicin ms alta&
Valor predeterminado: A@HGH&
#in #.nimo "alor del despla0amiento cuando el botn se encuentra en la posicin ms ba(a&
Valor predeterminado: I&
;ame ;ombre ddel control&
+mall25ange De 1 a A@HGH& 2antidad de cambio cuando el usuario 5ace clic en la !lec5a de
despla0amiento&
Value Valor actual en la escala de "alores&
E*ento
25ange Ccurre cuando el usuario se despla0a o se cambia el "alor de la propiedad Value&
2ontrol 2uadro de 'ista 3'istBo84
1n 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 despla0amiento al control &ist1ox.
'a propiedad &ist es un arreglo -ue contiene los elementos de la lista* ) comien0a con .ndice I& 'a
propiedad &istCo.nt establece el n/mero total de elementos de la lista& 'a propiedad &istIndex
contiene el .ndice del elemento seleccionado* el cual es un n/mero entre I 3primer elemento4 ) el
n/mero total de elementos en la lista X1 3&istCo.nt 2 '4& +i no se selecciona ning/n elemento* el "alor
de la propiedad &istIndex ser X1&
'a propiedad Ne%Index contiene el .ndice del /ltimo elemento a6adido a la lista& ,sto puede ser /til si
desea 5acer algo con el elemento a6adido* por e(emplo* -ue sea el elemento actualmente
seleccionado&
Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales FE FE
Propiedades
,nabled >rueOFalse& Determina si el control responde a las acciones del usuario&
'ist Arreglo con los elementos de la lista&
'ist2ount ;/mero de elementos de la lista&
'istInde8 ,lemento seleccionado&
#ulti+elect ,stablece si es posible seleccionar "arios elementos o uno solo&
;ame ;ombre del control&
;e%Inde8 Indice del /ltimo elemento a6adido al 2uadro de 'ista&
+elected Arreglo de "alores lgicos paralelo ) del mismo tama6o al arreglo list* indica -ue
elementos 5an sido seleccionados 3>rue4 de la lista& +e utili0a en lugar de #ist0nde
cuando establecemos la propiedad Multiselect en 1 @&
+orted >rueOFalse& ,stablece los elementos se ordenan al!abticamente&
+t)le ,stablece el comportamiento del control&
>e8t De"uel"e el elemento seleccionado en el cuadro de lista7 el "alor de retorno es siempre
e-ui"alente al -ue de"uel"e la e8presin 'ist3'istInde84& ,s de slo lectura en tiempo de
dise6o ) es de slo lectura en tiempo de e(ecucin&
M&todos
AddItem Permite a6adir nue"os elementos a la lista&
Demo"eItem Permite eliminar elementos de la lista&
E*entos
2licK Ccurre cuando el usuario interact/a con el control&
E-emplos
Muestra en el Cuadro de *eto tt,aseosa el elemento seleccionado
"rivate Sub lst3aseosas%Clic&'(
txt3aseosa.Text = lst3aseosas.Text
End Sub
Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales FF FF
lst:aseosas
t8t:aseosa
cmdAgregar
cmd,liminar
4-ade un nuevo elemento al Cuadro de #ista lst,aseosas
"rivate Sub cmd2gregar%Clic&'(
Dim str!uevoElemento 2s String
str!uevoElemento = *nputBox'"*ngrese una nueva gaseosaB"9 %
"!ueva gaseosa"(
*+ Trim'str!uevoElemento( VU "" T/en
lst3aseosas.2dd*tem str!uevoElemento
End *+
End Sub
(limina el elemento actual del Cuadro de #ista lst,aseosas
"rivate Sub cmdEliminar%Clic&'(
*+ lst3aseosas.,ist*ndex VU AD T/en
lst3aseosas.6emove*tem lst3aseosas.,ist*ndex
End *+
End Sub
2ontrol 2uadro 2ombinado 32omboBo84
1n control ComboBo combina las caracter.sticas de un control *etBo ) un control #istBo) los
usuarios pueden introducir in!ormacin en la parte del cuadro de te8to o seleccionar un elemento en la
parte de cuadro de lista del control&
Para agregar o eliminar elementos en un control ComboBo, se usa el mtodo 4dd0tem o
@emove0tem. ,stable0ca las propiedades #ist, #istCount ) #ist0nde para permitir a un usuario tener
acceso a los elementos de un control ComboBo. 2omo alternati"a* puede agregar elementos a la lista
mediante la propiedad #ist en tiempo de dise6o&
Propiedades
,nabled >rueOFalse& Determina si el control responde a las acciones del usuario&
'ist Arreglo con los elementos de la lista&
'ist2ount ;/mero de elementos de la lista
'istInde8 ,lemento seleccionado&
;ame ;ombre del control&
;e%Inde8 Indice del /ltimo elemento a6adido al cuadro de lista&
+orted >rueOFalse& ,stablece si los elementos se ordenan al!abticamente&
+t)le ,stablece el comportamiento del control&
>e8t >e8to -ue contiene el control&
M&todos
AddItem Permite a6adir nue"os elementos a la lista&
Demo"eItem Permite eliminar elementos de la lista&
E*entos
2licK Ccurre cuando el usuario interact/a con la lista del control&
Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales FG FG
25ange Ccurre cuando el "alor de la propiedad *et es modi!icado&
Propiedad 5tyle
,sta propiedad establece el comportamiento del control ComboBo, ) puede tomar los siguientes
"alores:
Constante Valor 5escripci$n
"b2omboDropDo%n I 3Predeterminado4 2uadro combinado desplegable& Inclu)e una lista
desplegable ) un cuadro de te8to&,l 1suario puede seleccionar datos
en la lista o escribir en cuadro de te8to&
"b2ombo+imple 1 2uadro combinado simple& Inclu)e un cuadro de te8to ) una lista* -ue
no se despliega& ,l usuario puede seleccionar datos en la lista o escribir
en el cuadro de te8to& ,l tama6o de un cuadro combinado simple
inclu)e las partes de edicin ) de lista& De !orma predeterminada* el
tama6o de un cuadro combinado simple no muestra ning/n elemento
de la lista& Incremente la propiedad Height para mostrar ms elementos
de la lista&
"b2omboDrop9Do%n'ist @ 'ista desplegable& ,ste estilo slo permite la seleccin desde la lista
desplegable&
E-emplo
,n la siguiente inter!a0 se ilustra el uso del control ComboBo ) la propiedad !tyle.
Muestra la gaseosa seleccionada por el usuario en la eti2ueta lbl,aseosa
"rivate Sub cbo3aseosas%Clic&'(
lbl3aseosa.Caption = cbo3aseosas.Text
End Sub
Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales FH FH
cbo:aseosas
+t)le<I
cbo,ncuestado
s
+t)le<1
cbo2iudades
+t)le<@
lbl:aseosa
lbl,ncuestado
lbl2iudad
4ctualiAa la eti2ueta lbl,aseosa cuando el usuario modi'ica el control cbo,aseosas
"rivate Sub cbo3aseosas%C/ange'(
lbl3aseosa.Caption = cbo3aseosas.Text
End Sub
Muestra el encuestado seleccionado por el usuario en la eti2ueta lbl(ncuestado
"rivate Sub cboEncuestados%Clic&'(
lblEncuestado.Caption = cboEncuestados.Text
End Sub
Muestra en la eti2ueta lblCiudad el elemento seleccionado del control cboCiudades
"rivate Sub cboCiudades%Clic&'(
lblCiudad.Caption = cboCiudades.Text
End Sub
Procedimientos
,8isten dos tipos de procedimientos con los -ue se traba(a en Visual Basic: los procedimientos de
e"ento ) los procedimientos generales&
Procedimientos de ,"ento
Visual Basic in"oca automticamente procedimientos de e"ento en respuesta a acciones del teclado*
del ratn o del sistema& Por e(emplo* los botones de comando tienen un procedimiento de e"ento 2licK&
,l cdigo -ue se escriba en el procedimiento de e"ento 2licK es e(ecutado cuando el usuario 5aga clic
en un botn de comando&
2ada control tiene un con(unto !i(o de procedimientos de e"ento& 'os procedimientos de e"ento para
cada control son mostrados en un cuadro de lista despegable en la "entana de cdigo&
Procedimientos :enerales
'os procedimientos generales son procedimientos !ub o %unction -ue son creados para -ue lle"en a
cabo tareas espec.!icas* estos deben ser in"ocados de manera e8pl.cita&
Para crear un procedimiento general* se debe abrir la "entana de cdigo ) 5acer clic en la orden
4gregar procedimiento del men/ Herramientas& >ambin se puede crear un nue"o procedimiento
escribiendo el encabe0ado de procedimiento !ub* seguido por el nombre del procedimiento* en una
l.nea en blanco dentro de la "entana de cdigo&
+i se tiene cdigo duplicado en "arios procedimientos de e"ento* se puede colocar el cdigo en un
procedimiento general ) luego in"ocar al procedimiento general desde los procedimiento de e"ento&
Procedimientos 5u%
'os procedimientos !ub no retornan "alores& Por e(emplo:
"ublic Sub Seleccionar'Cuadro 2s TextBox(
Cuadro.SelStart = .
Cuadro.Sel,engt/ = ,en'Cuadro.Text(
End Sub
Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales FL FL
'os procedimientos !ub son in"ocados especi!icando slo el nombre del procedimiento* o empleando
la instruccin Call con el nombre del procedimiento& Por e(emplo:
Call Seleccionar'TextD(
+i se emplea la instruccin Call* se debe encerrar la lista de argumentos entre parntesis& +i se omite
Call* tambin se deben omitir los parntesis alrededor de la lista de argumentos&
Procedimientos Function
'os procedimientos %unction de"uel"en "alores& ,n el siguiente e(emplo* el procedimiento %unction
recibe un n/mero ) de"uel"e ese n/mero al cuadrado&
"ublic Function Cuadrado'! 2s *nteger( 2s *nteger
Cuadrado = ! K !
End Function
+i se desea guardar el "alor de"uelto* se debe usar parntesis cuando se in"o-ue a la !uncin* como se
muestra a continuacin:
6esultado = Cuadrado 'O(
+i se omiten los parntesis* se puede ignorar el "alor de"uelto ) no guardarlo en una "ariable& ,sto
puede ser /til si se -uiere e(ecutar una !uncin ) no se desea el "alor de"uelto& Por e(emplo:
Cuadrado O
Alcance del 2digo
Adems de poder declarar cdigo en un mdulo de !ormulario* tambin se puede declarar
procedimientos en un mdulo de cdigo estndar&
'os mdulos de cdigo estndar slo contienen cdigo de Visual Basic* ) son un buen lugar para
almacenar cdigo -ue no es espec.!ico para un solo !ormulario& 'os procedimientos pueden ser
declarados como .rivate 3pri"ados4 o .ublic 3p/blicos4&
'os procedimientos declarados como .rivate pueden ser llamados o in"ocados slo por otros
procedimientos locali0ados en ese !ormulario* mdulo o clase&
'os procedimientos declarados como .ublic en un !ormulario se con"ierten en mtodos del !ormulario&
,l procedimiento puede ser llamado desde cual-uier lugar de la aplicacin especi!icando los nombres
del !ormulario ) del procedimiento&
'os procedimientos declarados como .ublic en un mdulo estn disponibles para toda la aplicacin* )
pueden ser llamados especi!icando el nombre del procedimiento&
Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales FN FN
,l siguiente cdigo declara un procedimiento .ublic&
"ublic Sub )i"roc'(
End Sub
+i se declara el procedimiento en un mdulo de !ormulario* puede ser llamado con el siguiente cdigo&
FormD.)i"roc
+i se declara el procedimiento en un mdulo estndar* puede ser llamado con el siguiente cdigo&
)i"roc
+i se declara un procedimiento con el mismo nombre en dos mdulos estndar* se debe especi!icar el
nombre del mdulo como se muestra en el siguiente cdigo&
)oduleD.)i"roc
1so del ,8aminador de Cb(etos para "er Procedimientos ) 'ibrer.as de
Cb(etos
1na "e0 -ue se 5a a6adido cdigo a una aplicacin se puede emplear el (aminador de objetos para
listar a todos los procedimientos -ue 5an sido creados* pasar rpidamente a un procedimiento
espec.!ico* o pegar una llamada a un procedimiento dentro de una "entana de cdigo&
,l (aminador de objetos "isuali0a las clases -ue estn disponibles desde cual-uier librer.a de
ob(etos a la -ue se 5a establecido una re!erencia& Para "isuali0ar el (aminador de objetos presione
la tecla de !uncin %F&
Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales Parte F: 2ontroles ,stndar Adicionales ) Procedimientos 9 Dann) A& #atta :on0ales GI GI
Parte G: Depuracin* Validacin de Datos
) #anipulacin de ,rrores
2uando desarrolle aplicaciones en Visual Basic* es importante depurar el cdigo escrito ) manipular los
probables errores -ue puedan ocurrir& >ambin es importante pre"enir en lo posible estos errores
"alidando los ingresos de datos a la aplicacin&
Berramientas de Depuracin
Visual Basic proporciona 5erramientas interacti"as para locali0ar errores en tiempo de e(ecucin )
errores en la lgica del programa& +e puede acceder a todas las 5erramientas de depuracin
empleando el men/ 5epuraci$n o la barra de 5erramientas 5epuraci$n& 'as 5erramientas de
depuracin en Visual Basic inclu)en:
Puntos de interrupci!n y expresiones de interrupci!n
,stablece un punto de interrupcin para detener un programa en e(ecucin& +e puede establecer un
punto de interrupcin en tiempo de dise6o o en tiempo de e(ecucin mientras se est en modo de
interrupcin&
Expresiones de inspecci!n
,mplee las e8presiones de inspeccin para e8aminar una "ariable o e8presin en particular& ,l "alor de
cada e8presin de inspeccin es actuali0ado en los puntos de interrupcin
/pciones paso a paso
1se las opciones paso a paso para e(ecutar porciones de cdigo )a sea una instruccin o
procedimiento a la "e0&
Pila de llamadas
,mplee Pila de llamadas para "isuali0ar todas las llamadas a procedimientos acti"as ) rastrear la
e(ecucin de una serie de procedimientos anidados&
$a *entana inmediato
,n modo de interrupcin* se puede probar una sentencia e(ecutable escribindola en la "entana
inmediato& Visual Basic e(ecuta la sentencia inmediatamente de modo -ue se pueda e"aluar el cdigo&
$a *entana locales
,sta "entana automticamente "isuali0a todas las "ariables declaradas en el procedimiento actual*
(unto con sus "alores&
Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales G1 G1
Validacin de Datos
+e puede pre"enir algunos errores en el ingreso de datos ) me(orar el uso de una aplicacin "alidando
in!ormacin mientras es ingresada a los campos de la aplicacin&
3estricci!n de /pciones con Controles
1na manera de asegurar ingresos "lidos es restringiendo el n/mero de opciones -ue 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 !ormulario& Debido a -ue los usuarios deben escoger un
producto de una lista prede!inida* no podrn ingresar un nombre de producto no "lido&
>ambin se pueden usar botones de opcin para un n/mero pe-ue6o de opciones* o casillas de
"eri!icacin para opciones de tipo booleanas&
:so de la propiedad Max$engt,
'a propiedad Ma#ength determina la longitud m8ima de una cadena en un cuadro de te8to& ,l
sistema emitir un sonido 3beep4 cuando el usuario trate de escribir una cadena -ue e8ceda la longitud
m8ima& +i se desea "isuali0ar un mensa(e de error* se necesita interceptar la tecla oprimida en el
e"ento Pe)Press&
:so de la propiedad $ocNed
'a propiedad #ocked determina si los usuarios pueden modi!icar los datos en un cuadro de te8to& +i la
propiedad #ocked es establecida a *rue* los usuarios slo pueden "er ) copiar los datos de un cuadro
de te8to&
:so del E*ento OeyPress para alidar Datos
+e pueden emplear los e"entos Pe)Press* Pe)Do%n ) Pe)1p para "alidar datos mientras el usuario
escribe& +e puede pre"enir -ue el usuario ingrese ciertos caracteres 3por e(emplo* puede limitar el
ingreso de datos a "alores numricos4& +e puede tambin modi!icar los datos mientras son ingresados
3por e(emplo* puede con"ertir todos los caracteres a ma)/sculas4&
,l e"ento Pe)Press tiene lugar cuando el usuario ingresa un carcter A+2II estndar& ,sto no inclu)e la
ma)or.a de la teclas especiales* tales como las teclas de !uncin* las teclas direccionales* o la tecla
D,',>,& Para responder a estas teclas se debe emplear los e"entos Pe)Do%n ) Pe)1p& ,l siguiente
cdigo cambia los caracteres a ma)/sculas mientras el usuario escribe&
"rivate Sub TextD%$e>"ress'$e>2scii as *nteger(
$e>2scii = 2sc'-case'C/r'$e>2scii(((
End Sub
,l siguiente cdigo pre"iene -ue los usuarios ingresen slo "alores numricos en un cuadro de te8to&
"rivate Sub TextD%$e>"ress'$e>2scii 2s *nteger(
*+ $e>2scii VU R T/en ' "ermite el uso de la tecla B2C$S"2CE
*+ $e>2scii V NR #r $e>2scii U OS T/en
$e>2scii = . ' Esteblece el caracter a nulo si est5 %
+uera del rango
End *+
End *+
End Sub
Para "isuali0ar una lista de los "alores A+2II* bus-ue 4!C00 en la a)uda de Visual Basic&
Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales G@ G@
Validacin de In!ormacin a ;i"el de Formulario
Adems de emplear tcnicas a ni"el de campo para "alidar los datos mientras son ingresados* se
puede escribir cdigo -ue "alide los datos en todos los campos de un !ormulario al mismo tiempo& ,n
esta parte del curso se "ern las tcnicas de "alidacin a ni"el de !ormulario soportadas por Visual
Basic&
Ha%ilitando el Bot!n "ceptar
1na !orma de "alidar la in!ormacin del !ormulario ser.a la de asegurar -ue un usuario 5a ingresado los
datos en todos los campos en un !ormulario antes de -ue se le permita continuar& ,sto puede lle"arse a
cabo des5abilitando el botn Aceptar en un !ormulario 5asta -ue el usuario 5a)a llenado todos los
campos* como se muestra a continuacin&
Para comprobar cada tecla oprimida en un !ormulario* se debe establecer la propiedad Gey.revie" de
un !ormulario a *rue& ,l !ormulario recibe primero el e"ento del teclado ) luego lo recibe el control&
,l siguiente cdigo 5abilita el botn Aceptar luego de ingresar datos en todos los campos&
"rivate Sub Form%,oad'(
)e.$e>"revieF = True
cmd2ceptar.Enabled = False
End Sub
"rivate Sub Form%$e>-p'$e>Code 2s *nteger9 S/i+t 2s *nteger(
' Se /abilita el bot=n 2ceptar s=lo si todos los cuadros de texto %
tienen datos
Dim Control2ct 2s Control
For Eac/ Control2ct *n Controls
*+ T>pe#+ Control2ct *s TextBox T/en
*+ Control2ct.Text = "" T/en ' El cuadro de texto est5 vacLo
cmd2ceptar.Enabled = False
Exit Sub
End *+
' Se podrLan veri+icar otro tipo de controles si %
+uera necesario
End *+
!ext
cmd2ceptar.Enabled = True 'Todos los cuadros de texto tienen datos
End Sub
alidaci!n de .odos los Campos de un Formulario
Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales GA GA
1na manera sencilla de "alidar todos los campos de un !ormulario al mismo tiempo es poniendo el
cdigo de "alidacin en el e"ento 2licK del botn 4ceptar& ,n esta caso* la aplicacin le permite al
usuario completar el ingreso de datos en todos los campos del !ormulario ) luego "alidarlos& 'a
aplicacin establece el en!o-ue en el primer campo -ue contiene los datos incorrectos&
,l siguiente cdigo "alida todos los campos numricos del !ormulario mostrado anteriormente&
"rivate Sub cmd2ceptar%Clic&'(
*+ !ot '*s!umeric'txtEdad.Text(( T/en
)sgBox "*ngrese la edad correctamente"
txtEdad.SetFocus
Else*+ !ot '*s!umeric'txtSueldo.Text(( T/en
)sgBox "*ngrese el sueldo correctamente"
txtSueldo.SetFocus
Else
)sgBox "Datos correctos"
-nload )e
End *+
End Sub
:so del E*ento 0uery:nload
,l e"ento Quer)1nload tiene lugar (usto antes del e"ento 1nload cuando el !ormulario es descargado&
,l e"ento Quer)1nload permite determinar como !ue iniciado el e"ento 1nload ) cancelar este e"ento&
,s /til cuando un usuario no 5a completado el ingreso de datos a un !ormulario* o cuando se -uisiera
preguntar al usuario si desea grabar cambios reali0ados antes cerrar el !ormulario&
,l e"ento Quer)1nload tiene los siguientes argumentos:
,l argumento Cancel cancela el e"ento 1nload& +i Cancel se establece a *rue la aplicacin
permanece como estaba antes de -ue se intentara la descarga&
,l argumento 1nloadMode indica como !ue iniciado el e"ento 1nload&
Valores 2ue se pueden obtener
,l argumento 1nloadMode 6modoBdescarga7 de"uel"e los siguientes "alores:
Constante Valor 5escripci$n
Vb%ormControlMenu I ,l usuario eligi el comando Cerrar del men/ Control
del !ormulario&
Vb%ormCode 1 +e in"oc la instruccin 1nload desde el cdigo&
Vb4pp=indo"s @ 'a sesin actual del entorno operati"o #icroso!t
$indo%s est !inali0ando&
Vb4pp*askManager A ,l Administrador de tareas de #icroso!t $indo%s est
cerrando la aplicacin&
Vb%ormM50%orm E 1n !ormulario #DI secundario se est cerrando por-ue
el !ormulario #DI tambin se est cerrando&
,l siguiente cdigo cancela el e"ento 1nload ) pregunta al usuario antes de cerrar el !ormulario&
"rivate Sub Form%:uer>-nload'Cancel as *nteger9 -nload)ode as *nteger(
Dim i6espuesta *nteger
i6espuesta = )sgBox '"76ealmente desea salir8"9 vb<es!o(
*+ i6espuesta = vb!o T/en
Cancel=True
Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales GE GE
End *+
End Sub
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.
#anipulacin de ,rrores en >iempo de ,(ecucin
;o importa lo bien -ue se dise6e una aplicacin* los errores en tiempo de e(ecucin siempre ocurrirn&
'os usuarios ol"idan poner los discos en las unidades* sistemas se e(ecutan con poca memoria* )
arc5i"os no se encuentran donde se supone deber.an estar& A6adiendo cdigo de manipulacin de
errores e!ecti"o a una aplicacin* se crean aplicaciones ms robustas&
Entendiendo el Proceso de Manipulaci!n de Errores
,l proceso de manipulacin de errores in"olucra los siguientes pasos&
1& Babilitar la interceptacin de errores -ue especi!ica 5acia donde se bi!urcar la e(ecucin cuando
ocurra un error&
@& ,scribir el cdigo de manipulacin de errores&
A& +alir del cdigo de manipulacin de errores&
'a instruccin 7n (rror ,o*o 5abilita la interceptacin de errores ) especi!ica 5acia donde saltar la
e(ecucin cuando ocurra un error& +i ocurriera un error en tiempo de e(ecucin* la e(ecucin saltar
5acia la eti-ueta especi!icada por la instruccin 7n (rror ,o*o& ,l manipulador de errores e(ecuta el
cdigo de manipulacin de errores seguido por una instruccin @esume -ue indica donde deber
continuar el proceso&
,l siguiente cdigo muestra como emplear las instrucciones 7n (rror ,o*o ) @esume&
"rivate Sub CommandD%Clic&'(
Dim !ombre2plic 2s String
#n Error 3oTo )anipulaErr
!ombre2plic = *nputBox'"*ngrese el nombre de la aplicaci=nB"(
S/ell !ombre2plic9 vb!ormalFocus
Exit Sub
)anipulaErrB
*+ Err.!umber = OM T/en
)sgBox "!o se encontro la aplicaci=n"
*+ )sgBox'"7Desea intentarlo nuevamente8"9 vb<es!o( %
= vb<es T/en
!ombre2plic = *nputBox %
Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales GF GF
'"*ngrese el nombre de la aplicaci=nB"(
6esume '*ntentar nuevamente
Else
6esume !ext 'E?ecutar la siguiente instrucci=n
End *+
Else
)sgBox "Error desconocido"
End *+
End Sub
,n el cdigo o rutina de manipulacin de errores* se emplean las propiedades ) mtodos del ob(eto (rr
para "eri!icar -ue error ocurri* borrar un "alor de error o desencadenar un error&
$as Propiedades del /%-eto Err
'a propiedad &umber es un entero -ue indica el /ltimo error -ue tu"o lugar& Para determinar -ue error
5a ocurrido* se "eri!ica el "alor de (rr.&umber& ,n algunos casos* se puede corregir un error ) permitir
continuar el proceso sin interrumpir el usuario& ,n otros* se deber noti!icar al usuario de un error* )
tomar alguna accin basada en la respuesta del usuario&
'a propiedad 5escription es una cadena -ue contiene una descripcin del error&
'a propiedad !ource contiene el nombre del ob(eto aplicacin -ue gener el error& ,s /til cuando se
emplea Automati0acin& Por e(emplo* si se traba(a con #icroso!t ,8cel ) genera un error* #icroso!t
,8cel establecer (rr.&umber al cdigo de error apropiado ) establecer (rr.!ource a
(cel.4pplication&
$os M&todos del /%-eto Err
,l mtodo Clear establece el "alor de (rr.&umber a cero& Bsicamente* el mtodo Clear se emplea
borrar e8pl.citamente el ob(eto (rr despus de controlar un error&
,l mtodo @aise genera un error en tiempo de e(ecucin& Por e(emplo* se podr.a emplear este mtodo
para probar el cdigo de manipulacin de errores&
Err.6aise OM '2rc/ivo no encontrado
/pciones de las Instrucci!n 3esume
'a instruccin @esume se emplea para especi!icar donde continuar el proceso de una aplicacin
luego de manipular un error& 'a siguiente tabla lista los tres tipos de instrucciones @esume disponibles
en Visual Basic&
0nstrucci$n 5escripci$n
@esume Degresa a la instruccin -ue gener el error& ,mplee @esume para repetir una
operacin luego de corregir el error&
0nstrucci$n 5escripci$n
@esume &et Degresa a la instruccin inmediatamente siguiente a la -ue gener el error&
@esume l#nea 'a e(ecucin contin/a en la l.nea especi!icada en el argumento obligatorio l.nea&
Nota8
Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales GG GG
5i utiliza una instrucci!n 3es.me en otro sitio 1ue no sea una rutina de manipulaci!n de errores(
ocurre un error.
Des5abilitando la #anipulacin de ,rrores
Puede ser di!.cil depurar cdigo -ue tiene 5abilitada la manipulacin de errores& Visual Basic puede
e(ecutar el cdigo de manipulacin de errores cuando se -uiera ingresar al modo de Interrupcin )
depurar la aplicacin&
Visual Basic proporciona opciones para des5abilitar la manipulacin de errores en el momento de la
depuracin&
Para cambiar como sern manipulados los errores:
1& ,n el men/ Herramientas* 5aga clic en 7pciones&
@& ,n la !ic5a ,eneral* deba(o de 0nterceptaci$n de errores* 5aga clic en la opcin deseada ) luego
en 4ceptar&
'a siguiente tabla describe las opciones de manipulacin de errores disponibles deba(o de
0nterceptaci$n de errores en la !ic5a ,eneral&
7pci$n 5escripci$n
Modo de interrupci$n en todos +i se selecciona esta opcin* Visual Basic ignora
cual-uiera de las instrucciones 7n (rror ,o*o e ingresa
en modo de Interrupcin si tiene lugar alg/n error en
tiempo de e(ecucin&
0nterrupci$n en m$dulos de clase +i se selecciona esta opcin* Visual Basic e(ecutar las
instrucciones 7n (rror ,o*o para manipular errores en
tiempo de e(ecucin&
0nterrupci$n en errores no controlados Visual Basic ingresa a modo de Interrupcin en cual-uier
error para el cual no se 5a)a establecido una rutina de
manipulacin&
2ompilacin de una Aplicacin
1na "e0 !inali0ada la creacin de una aplicacin* se puede crear el arc5i"o e(ecutable para los usuarios&
,sta parte del curso describe como compilar un pro)ecto&
Creaci!n de un "rc,i*o E-ecuta%le
2rear un arc5i"o e(ecutable en Visual Basic es un proceso sencillo&
1& ,n el men/ 4rchivo* 5aga clic en ,enerar H&ombre.royectoI.ee
@& Ingrese el nombre para el arc5i"o e(ecutable&
A& Para a6adir in!ormacin espec.!ica de "ersin:
,n el cuadro de dilogo ,enerar proyecto* 5aga clic en el botn 7pciones& ,n la !ic5a ,enerar
escriba los n/meros de "ersin ) el te8to de in!ormacin de la "ersin * ) luego 5aga clic en
4ceptar&
Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales GH GH
Adems del arc5i"o e(ecutable* se debe de proporcionar di"ersas D''bs ) otros arc5i"os a los
usuarios& +e deber.a crear un programa de instalacin -ue instale la aplicacin en la computadora
del usuario&
(l 4sistente para instalar aplicaciones de Visual Basic 5ace sencilla la tarea de crear discos o
una carpeta de distribucin para una aplicacin& 'os usuarios pueden luego e(ecutar el programa de
instalacin en sus computadoras para instalar ) registrar los arc5i"os apropiados&
Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales Parte G: Depuracin* Validacin* ) #anipulacin de errores 9 Dann) A& #atta :on0ales GL GL
Parte H: 2ontroles ,stndar A"an0ados
) Acceso a Datos
2ontrol 2uadro de 'ista de 1nidades 3Dri"e'istBo84
1n control Dri"e'istBo8 permite al usuario seleccionar una unidad de disco "lida en tiempo de
e(ecucin& 1tilice este control para mostrar una lista de todas las unidades "lidas del sistema de un
usuario& Puede crear cuadros de dilogo -ue permitan al usuario abrir un arc5i"o de una lista de un
disco en cual-uier unidad disponible&
Propiedades
Dri"e De"uel"e o establece la unidad seleccionada en tiempo de e(ecucin& ;o est disponible en
tiempo de dise6o&
'ist 2ontiene la lista de cone8iones de unidad e!ecti"as&
'ist2ount De"uel"e el n/mero de cone8iones con unidades de disco&
'istInde8 De"uel"e o establece el .ndice del elemento seleccionado actualmente en el control& ;o
est disponible en tiempo de dise6o&
E*entos
25ange Ccurre cuando el usuario selecciona una nue"a unidad o cuando se cambia la
con!iguracin de la propiedad Dri"e mediante cdigo&
2ontrol 2uadro de 'ista de Directorios 3Dir'istBo84
1n control Dir'istBo8 muestra directorios ) rutas de acceso en tiempo de e(ecucin& 1tilice este control
para mostrar una lista (err-uica de directorios& Puede crear cuadros de dilogo -ue* por e(emplo*
permitan a un usuario abrir un arc5i"o desde una lista de arc5i"os de todos los directorios disponibles&
Propiedades
'ist 2ontiene una lista de todos los directorios&
'ist2ount De"uel"e el n/mero de subdirectorios del directorio actual&
'istInde8 Indica el .ndice de la ruta de acceso actual&
Pat5 ,l "alor de la propiedad Pat5 es una cadena -ue indica una ruta de acceso* como 2:cCb o
2:c$indo%sc+)stem&
E*entos
25ange Ccurre cuando el usuario 5ace doble clic en un nue"o directorio o cuando se cambia la
con!iguracin de la propiedad Pat5 mediante cdigo&
2ontrol 2uadro de 'ista de Arc5i"os 3File'istBo84
,l control File'istBo8 encuentra ) muestra los arc5i"os del directorio especi!icado por la propiedad Pat5
en tiempo de e(ecucin& 1tilice este control para mostrar una lista de los arc5i"os seleccionados por
tipo& Puede crear cuadros de dilogo en la aplicacin -ue* por e(emplo* permitan al usuario seleccionar
un arc5i"o o un grupo de arc5i"os&
Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales GN GN
Propiedades
File;ame De"uel"e o establece el nombre de un arc5i"o seleccionado&
'ist 2ontiene una lista con los arc5i"os del directorio e8pandido actualmente -ue coinciden con
la propiedad Pattern& ;o se inclu)e la ruta de acceso&
'ist2ount De"uel"e el n/mero de arc5i"os del directorio actual -ue coinciden con el "alor de la
propiedad Pattern&
'istInde8 De"uel"e o establece el .ndice del elemento seleccionado actualmente&
Pat5 ,l "alor de la propiedad Pat5 es una cadena -ue indica una ruta de acceso* como 2:cCb o
2:c$indo%sc+)stem&
Pattern De"uel"e o establece un "alor -ue indica los nombres de arc5i"o mostrados en un control
File'istBo8 en tiempo de e(ecucin&
E*entos
2licK Ccurre cuando el usuario presiona ) suelta un botn del ratn en un control File'istBo8&
2ontrol Imagen 3Image4
,l control Image se utili0a para mostrar un gr!ico& 1n control Image puede mostrar un
gr!ico desde un mapa de bits* un icono o un metarc5i"o* as. como un metarc5i"o me(orado* un arc5i"o
dP,: o arc5i"os :IF&
Propiedades
Picture De"uel"e o establece un gr!ico -ue se mostrar en el control& >ambin se le puede asignar
un gr!ico de"uelto por la !uncin 'oadPicture&
+tretc5 >rueOFalse& De"uel"e o establece un "alor -ue indica si un gr!ico cambia su tama6o para
a(ustarse al de un control Image&
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 'oadPicture34
2arga un gr!ico en un ob(eto Picture* un control PictureBo8 o un control Image&
%ormato>
'oadPicture3?om%reDe"rc,i*oAr2+ico4
>ambin se puede usar la !uncin #oad.icture3) para asignar un icono a un !ormulario o al puntero del
ratn mostrado en pantalla&
(jemplos de la 'unci$n #oad.icture3)>
Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales HI HI
'Establece el icono del +ormulario
Set FormD.*con = ,oad"icture'")**C#!#.*C#"(
'Establece el puntero del rat=n
Screen.)ouse*con = ,oad"icture'")**C#!#.*C#"(
Screen.)ouse"ointer = PP
Creaci$n de un visor de im?genes
(l c$digo para los controles es el siguiente>
"rivate Sub drv-nidad%C/ange'(
dirDirectorio."at/ = drv-nidad.Drive
End Sub
"rivate Sub dirDirectorio%C/ange'(
+il,ista."at/ = dirDirectorio."at/
End Sub
"rivate Sub +il,ista%Clic&'(
*mageD."icture = ,oad"icture'dirDirectorio."at/ W %
"X" W +il,ista.+ilename(
FrameD.Caption = +il,ista.+ilename
FormD.*con = ,oad"icture'dirDirectorio."at/ W %
"X" W +il,ista.+ilename(
End Sub
Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales H1 H1
dr"1nidad
dirDirectorio
!il'ista
Frame1
Image1
2ontrol >empori0ador 3>imer4
1n control *imer puede e(ecutar cdigo a inter"alos peridicos produciendo un e"ento >imer& ,l control
*imer* in"isible para el usuario* resulta /til para el procesamiento de !ondo& ;o e8iste ning/n l.mite
prctico en cuanto al n/mero de controles *imer acti"os -ue se puede tener en Visual Basic F&I
e(ecutndose en $indo%s NF o en $indo%s ;>&
Propiedades
,nabled >rueOFalse& Acti"a o desacti"a el control& +i se desacti"a el control *imer, estableciendo
,nabled a False* se cancelar la cuenta atrs establecida por la propiedad Inter"al del
control&
Inter"al De"uel"e o establece el n/mero de milisegundos entre las llamadas al e"ento >imer de un
control *imer& 'os "alores admitidos para milisegundos son I* -ue desacti"a el control
*imer* o de 1 a GFFAF& ,l m8imo* GFFAF milisegundos* e-ui"ale a poco ms de un minuto&
E*entos
>imer Ccurre cuando 5a transcurrido un inter"alo preestablecido para el control *imer&
(jemplo de uso del control *imer
MinimiAa el
'ormulario y activa el
control temporiAador *imer6
"rivate Sub cmdEstablecer%Clic&'(
FormD.EindoFState = D
TimerD.Enabled = True
End Sub
Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales H@ H@
t8tBora
t8t#ensa(e
cmd,stablece
r
cmd+alir
>imer1
Inter"al<1III
,nabled<False
*ermina la ejecuci$n de la aplicaci$n
"rivate Sub cmdSalir%Clic&'(
End
End Sub
Compara la hora actual con la hora ingresada en el cuadro ttHora cada segundo y muestra el
mensaje establecido en caso de 2ue sean iguales, desactiva el control temporiAador y restaura
la ventana a su tama-o normal.
"rivate Sub TimerD%Timer'(
Dim /ora 2s String
/ora = Format'Time9 "//Bmm"(
*+ /ora = txtHora.Text T/en
Beep
)sgBox txt)ensa?e.Text9 vb#$#nl> ; vb*n+ormation9 ")ensa?e"
TimerD.Enabled = False
FormD.EindoFState = .
End *+
End Sub
Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales HA HA
1so del control Data
,n Visual Basic puede utili0ar el control 5ata para crear aplicaciones de bases de datos para
una gran "ariedad de !ormatos de base de datos& ,l control 5ata interact/a con el motor de base de
datos #icroso!t det ) permite crear aplicaciones preparadas para datos con la m.nima cantidad de
cdigo posible&

Vista :eneral del Acceso a Datos
Antes de traba(ar con la !uncionalidad 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 di"ersas opciones -ue Visual Basic proporciona para acceder a datos&
:so del Motor de Base de Datos Microso+t Pet
'os ob(etos de acceso a datos X Data Access Cb(ects 35474 ) el control 5ata usan el motor de base de
datos #icroso!t det para acceder a bases de datos& ,l motor de base de datos det puede acceder a los
siguientes A tipos de bases de datos&
Bases de datos Jet
,stas bases de datos son creadas ) manipuladas directamente por el motor det& #icroso!t Access )
Visual Basic emplean el mismo motor de base de datos det&
Bases de datos de Mtodo de 4cceso !ecuencial 0ndeado 30!4M)
'os !ormatos de estas bases de datos inclu)en Btrie"e* dBase* #icroso!t Visual Fo8Pro* ) Parado8&
Bases de datos compatibles con 75BC 37pen 5ataBase Connectivity K Conectividad 4bierta
de Base de 5atos)
,stas bases de datos inclu)en las bases de datos clienteOser"idor -ue con!orman el estndar
CDB2* tal como #icroso!t +Q' +er"er& 'a ma)or.a de bases de datos -ue soportan CDB2 pueden
ser accedidas empleando Visual Basic&
/tros m&todos de "cceso a Datos
'os otros mtodos de acceso a datos soportados por Visual Basic inclu)en:
(l control 7rigen de 5atos @emoto 3@emote 5ata !ource)
,ste es un control -ue emplea CDB2 para acceder a bases de datos CDB2 tales como #icroso!t
+Q' +er"er ) Cracle& ,l control 7rigen de 5atos @emoto slo est disponible en la edicin
,mpresarial de Visual Basic&
#ibrer+as 75BC
,stas librer.as permiten -ue se llame a la inter!ace de programacin de aplicaciones 3API4 de
CDB2 directamente ) estn disponibles como un producto separado&
#ibrer+as !L# de Visual Basic
,stas librer.as proporcionan un enlace directo a #icroso!t +Q' +er"er* ) estn disponibles como un
producto separado&
,ntendiendo los 2onceptos Bsicos acerca de las Bases de Datos
Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales HE HE
'a ma)or.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& 1na tabla es un grupo lgico de in!ormacin
relacionada& Por e(emplo* la base de datos ;eptuno contiene una tabla -ue almacena a los empleados*
) otra almacena los pedidos de una compa6.a !icticia&
'a base de datos ;eptuno&mdb es una base de datos de e(emplo incluida con #icroso!t Access&
,lementos de una >abla
'a base de datos ;eptuno contiene un n/mero de tablas -ue agrupan la in!ormacin& ,stas tablas
inclu)en Pedidos* 2lientes* ) ,mpleados&
,n una base de datos det* las !ilas de la tabla son denominadas registros* ) las columnas campos&
$a Cla*e Principal
Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales HF HF
2ada tabla debe de tener una cla"e principal* -ue es un campo 3o una combinacin de campos4 -ue es
/nico para cada registro en la tabla& Por e(emplo* el campo Id,mpleado es la cla"e principal para la
tabla ,mpleados&
1na tabla puede tambin tener cla"es !orneas* -ue son campos -ue 5acen re!erencia a una cla"e
principal de otra tabla& Por e(emplo* en la base de datos ;eptuno* la tabla Pedidos tiene un campo
llamado Id2liente& ,ste campo es una cla"e !ornea por-ue 5ace re!erencia a un cliente de la tabla
2lientes& ,n "e0 de duplicar toda la in!ormacin del cliente por cada pedido* slo se ingresa la cla"e
principal del cliente a -uien pertenece el pedido* como la cla"e principal es /nica por cada cliente* 5a)
un solo cliente por cada pedido* ) un cliente puede tener muc5os pedidos& ,n trminos de una base de
datos* la relacin entre la tabla 2lientes ) la tabla Pedidos es una relacin del tipo uno9a9"arios&
3egistros
1n registro contiene in!ormacin acerca de un solo ingreso en una tabla& :eneralmente* no se desea
-ue dos registros en una tabla tengan los mismos datos& Por e(emplo* un registro en la tabla ,mpleados
contiene in!ormacin acerca de un /nico empleado&
Campos
2ada campo en una tabla contiene una parte de la in!ormacin& Por e(emplo* la tabla ,mpleados
inclu)e campos para el Id del empleado* Apellidos* ;ombre* etc&
Indices
'os .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.& Para 5abilitar un acceso ms rpido a una base de datos* la ma)or.a
de bases de datos emplean uno o ms .ndices& Por e(emplo* la tabla ,mpleados tiene un .ndice para la
columna Id,mpleado&
>raba(ando con el 2ontrol Data
,l control 5ata de Visual Basic permite escribir aplicaciones de bases de datos mu) e!icaces con mu)
poco cdigo&
,n esta parte se aprender a generar aplicaciones de bases de datos con el control 5ata ) el ob(eto
@ecordset asociado& >ambin se aprender como el Asistente para Formularios de Datos puede
construir una aplicacin -ue inclu)e el control 5ata&
>ener Acceso a Datos con el 2ontrol Data
,l control 5ata implementa el acceso a datos mediante el motor de base de datos #icroso!t det& ,sta
tecnolog.a proporciona acceso a muc5os !ormatos de base de datos ) permite crear aplicaciones -ue
mane(an datos sin necesidad de escribir cdigo&
Para crear una aplicacin de base de datos -ue emplee el control 5ata* se siguen los siguientes pasos:
1& A6adir el control 5ata al !ormulario ) establecer las propiedades para especi!icar la base de datos )
la tabla desde la cual se obtendrn los datos&
@& A6adir controles enla0ados a datos al !ormulario* ) establecer las propiedades para enla0ar los
controles al control 5ata para -ue los datos puedan ser mostrados&
1so de 2ontroles ,nla0ados a Datos
2uando un control -ue 5a colocado en un !ormulario se enla0a a datos* se muestran automticamente
los datos de la base de datos en el control enla0ado& +i un usuario cambia los datos de un control
Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales HG HG
enla0ado* dic5os cambios se actuali0arn automticamente en la base de datos en cuanto el usuario se
desplace a otro registro& #uc5os controles intr.nsecos o estndar de Visual Basic permiten ser
enla0ados a datos* como es el caso de los controles CheckBo* 0mage* #abel* .ictureBo* *etBo*
#istBo* ComboBo ) los contenedores 7#(&
'a siguiente ilustracin es un e(emplo de un !ormulario -ue contiene un control 5ata ) dos controles
enla0ados&
,stablecer las Propiedades del 2ontrol Data
'os siguientes pasos describen como conectar un control 5ata a una base de datos&
1& ,speci!icar las base de datos a la cual se -uiere acceder estableciendo la propiedad
5atabase&ame al nombre de la base de datos&
@& Para especi!icar -ue registros recuperar* establecer la propiedad @ecord!ource al nombre de la
tabla dentro de la base de datos* o a una cadena +Q'&
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.
,nla0ar 2ontroles
Despus de establecer los "alores de las propiedades para el control 5ata* es necesario enla0ar al
control 5ata controles indi"iduales ) despus especi!icar -u campo de la tabla mostrar cada control&
1& ,n tiempo de dise6o* establecer la propiedad 5ata!ource del control enla0ado a datos al control
5ata&
@& ,n tiempo de dise6o o en tiempo de e(ecucin* especi!icar -ue campo se desea mostrar en el
control enla0ado estableciendo la propiedad 5ata%ield&
'a propiedad 5ata%ield puede ser establecida en tiempo de dise6o o en tiempo de e(ecucin&
Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales HH HH
1sar las Propiedades ) #todos del 2ontrol Data
Para especi!icar los datos -ue se desean recuperar* se debe establecer las propiedades
5atabase&ame ) @ecord!ource de un control 5ata& Adems* se pueden establecer las siguientes
propiedades ) mtodos&
$a Propiedad Connect
,sta propiedad especi!ica el tipo de base de datos a abrir& Puede incluir argumentos tales como un
nombre de usuario 3user ID4 ) una contrase6a&
$a Propiedad Exclusi*e
'a propiedad (clusive determina si se tiene o no un uso e8clusi"o de la base de datos& +i esta
propiedad se establece a *rue* ) luego se abre sin problemas la base de datos* ninguna otra aplicacin
podr abrirla 5asta -ue sea cerrada&
$a Propiedad 3ead/nly
,sta propiedad determina si se puede o no actuali0ar o grabar cambios en la base de datos& +i no se
tiene planeado 5acer cambios en la base de datos* es ms e!iciente establecer la propiedad @ead7nly
a *rue&
$a Propiedad 3ecordset
'a propiedad @ecordset es un ob(eto -ue contiene el con(unto de registros de"ueltos por el control
5ata& ,sta propiedad contiene a su "e0 propiedades ) mtodos -ue pueden ser usados para traba(ar
con los registros de"ueltos&
$as Propiedades B/F"ction y E/F"ction
,stas propiedades determinan -ue accin tomar el control 5ata cuando las propiedades B7% o (7%
del recordset tomen como "alor *rue&
Por e(emplo* si la propiedad (7%4ction del control 5ata es establecida a "bActionAdd;e%* ) se
emplea el control 5ata para despla0arse* una "e0 -ue se pase el /ltimo registro* el control 5ata
automticamente e(ecutar el mtodo 4dd&e" de modo -ue se pueda a6adir un nue"o registro&
El M&todo 3e+res,
,l mtodo @e'resh renue"a el ob(eto @ecordset& +i se cambia la propiedad @ecord!ource en tiempo
de e(ecucin* se debe in"ocar al mtodo @e'resh para reno"ar el recordset&
,l siguiente cdigo muestra como emplear el mtodo @e'resh&
DataD.6ecordSource = "SE,ECT K F6#) Empleados " W %
"EHE6E Y*dEmpleadoZ = " W txt*dEmp.Text
DataD.6e+res/
,l Cb(eto Decordset
,n una aplicacin de base de datos* los usuarios traba(an con el control 5ata para despla0arse entre
registros dentro de la base de datos& 'os usuarios pueden 5acer clic en los botones del control 5ata
para a"an0ar o retroceder registro a registro o para ir directamente al primer o al /ltimo registro&
L0u& es un 3ecordsetM
Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales HL HL
>odo el con(unto de registros al -ue 5ace re!erencia un control 5ata se denomina con(unto de registros
o @ecordset& ,l @ecordset se almacena en la memoria* trans!irindose al disco si es necesario&
Para manipular el @ecordset* se emplea la propiedad @ecordset del control 5ata& ,l @ecordset
contiene el registro actual& 'a in!ormacin del registro actual es mostrada por los controles enla0ados&
+e puede cambiar la posicin del registro actual 5aciendo clic en el control 5ata o escribiendo cdigo
-ue emplee mtodos del ob(eto @ecordset&
Determinar los l#mites de un 3ecordset
+i utili0a cdigo para cambiar la posicin del registro actual* debe comprobar las propiedades (7% )
B7% del ob(eto @ecordset para determinar el inicio ) el !inal del mismo& 2uando se desplace al registro
(7% o al B7%* se e(ecutar la accin indicada por el "alor de la propiedad B7%4ction o (7%4ction&
Por e(emplo* se puede establecer la propiedad (7%4ction para a6adir un nue"o registro
automticamente& +i se establece la propiedad (7%4ction a (7%* ninguna accin ser tomada cuando
se desplace al registro (7%& 2uando se desplace pasando un registro los registros B7% o (7%* se
producir un error en tiempo de e(ecucin&
,n la siguiente ilustracin se muestra cmo las propiedades B7% ) (7% determinan los l.mites del
ob(eto @ecordset&
Para emplear el ob(eto @ecordset de un control 5ata determinado* se debe especi!icar la propiedad
@ecordset del control Data* como se muestra en el siguiente cdigo&
DataD.6ecordset.)ove!ext ')ueve el registro actual al siguiente
*+ DataD.6ecordset.E#F T/en
DataD.6ecordset.)ove,ast
1so de las Propiedades ) #todos de un Decordset
1tilice los mtodos ) las propiedades del ob(eto @ecordset para recuperar in!ormacin del con(unto de
registros* despla0arse por los registros ) agregar* actuali0ar o eliminar registros&
Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales HN HN
$as Propiedades B/F y E/F
'as propiedades B7% ) (7% del ob(eto @ecordset indican si la posicin del registro actual es antes del
primer registro o despus del /ltimo registro dentro del con(unto de registros& +i no 5a) registros en el
recordset* entonces el "alor de las propiedades B7% ) (7% es *rue&
El M&todo "dd?e9 del 3ecordset
Para agregar un nue"o registro a un recordset* se emplea el mtodo 4dd&e"& 2uando se e(ecuta el
mtodo 4dd&e"* Visual Basic limpia los controles enla0ados ) establece la propiedad (ditMode del
control 5ata a db,ditAdd&
,l nue"o registro no ser a6adido a la base de datos 5asta -ue sea e(ecutado e8pl.citamente un
mtodo 1pdate@ecord o 1pdate* o 5asta -ue el usuario se mue"a a otro registro&
,l siguiente cdigo muestra como agregar un nue"o registro a un recordset&
"rivate Sub cmd2gregar%Clic&'(
DataD.6ecordset.2dd!eF
El M&todo :pdate3ecord del Control Data
,l mtodo 1pdate@ecord se emplea para grabar el registro actual a una base de datos& ,l siguiente
cdigo muestra como grabar el registro actual ) actuali0ar la base de datos&
"rivate Sub cmd3rabar%Clic&'(
DataD.-pdate6ecord
El M&todo Cancel:pdate del Control Data
,l mtodo Cancel1pdate se emplea para cancelar un mtodo 4dd&e" o (dit ) reno"ar o re!rescar los
controles enla0ados con datos del recordset&
Por e(emplo* si un usuario 5a modi!icado los campos de un !ormulario* pero toda".a no los 5a
actuali0ado* el mtodo Cancel1pdate re!rescar los campos con los datos originales del recordset&
+i un usuario selecciona un botn 4gregar de un !ormulario* ) luego decide no agregar el registro* el
mtodo Cancel1pdate cancelar la operacin ) "isuali0ar el registro actual&
,l siguiente cdigo muestra como cancelar la agregacin o edicin de un registro&
"rivate Sub cmdCancelar%Clic&'(
DataD.Cancel-pdate
El M&todo Delete del 3ecordset
Para eliminar un registro de una base de datos* se emplea el mtodo 5elete& ,l registro eliminado
permanecer como el registro actual 5asta -ue el usuario se mue"a a un registro di!erente* como se
muestra en el siguiente cdigo&
"rivate Sub cmdEliminar%Clic&'(
DataD.6ecordset.Delete
DataD.6ecordset.)ove!ext
*+ DataD.6ecordset.E#F T/en
DataD.6ecordset.)ove,ast
End *+
End Sub
Nota8 $a %ase de datos ?eptuno tiene de+inidas reglas de integridad re+erencial 1ue impiden eliminar
registros relacionados.
Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales LI LI
1so del Asistente para Formularios de Datos
,l Asistente para Formularios de Datos es una utilidad de Visual Basic -ue genera !ormularios de datos
simples -ue emplean el control 5ata& +e puede emplear el Asistente para Formularios de Datos para
construir rpidamente !ormularios para una aplicacin de base de datos&
Para cargar el Asistente para Formularios de Datos* se emplea la orden 4dministrador de
Complementos del men/ Complementos&
1so de los ,"entos del 2ontrol Data
,l control 5ata proporciona tres e"entos -ue puede utili0ar para me(orar la aplicacin de base de datos:
Validate* ,rror ) Deposition& Dic5os e"entos permiten omitir parte del comportamiento predeterminado
del control 5ata&
:sar el E*ento alidate
1tilice el e"ento Validate para comprobar los datos antes de guardar un registro en la base de datos&
,ste e"ento se produce (usto antes de -ue Visual Basic escriba en la base de datos los cambios
procedentes de los controles enla0ados ) de -ue "uel"a a colocar el puntero del registro actual en otro
registro de la base de datos& Puede utili0ar el e"ento Validate para pedir al usuario -ue con!irme los
cambios reali0ados&
#intaxis
,l e"ento Validate tiene la siguiente sinta8is:
.rivate !ub 5ata6/Validate 3index 4s 0nteger* action 4s 0nteger* sa*e 4s 0nteger4
"l 4rg.mento 4ction
,l argumento action indica la operacin -ue pro"oc el e"ento Validate& ,l e"ento Validate se produce
como resultado de reali0ar las operaciones siguientes:
Move%irst* Move.revious* Move&et* Move#ast
4dd&e"
1pdate
5elete
%ind
,stablecer la propiedad Bookmark
2errar la base de datos
Descargar el !ormulario
Para cancelar cual-uiera de estas acciones* asigne al argumento action el "alor "bDataAction2ancel&
"l 4rg.mento #a5e
,l argumento sa*e indica si "a a guardarse o no el registro& +i sa*e es *rue* los datos enla0ados 5an
cambiado& Para cancelar la accin de guardar puede asignar a sa*e el "alor %alse&
,l siguiente cdigo pide al usuario -ue con!irme los cambios 5ec5os a la base de datos& +i el usuario
responde ;o* los cambios sern cancelados&
"rivate Sub DataD%Jalidate '2ction 2s *nteger9 Save 2s *nteger(
Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales L1 L1
Dim i6espuesta as *nteger
*+ Save = True T/en
i6espuesta = )sgBox '"7Desea guardar los cambios8" 9 vb<es!o(
*+ i6espuesta = vb!o T/en
Save = False
DataD.-pdateControls '2ctualiGa los campos
End *+
End *+
End Sub
:sar el E*ento 3eposition
1tilice el e"ento Deposition para modi!icar la apariencia de un !ormulario o reali0ar una accin
necesaria cuando se desplace a un nue"o registro&
,ste e"ento tiene lugar cuando Visual Basic despla0a el puntero del registro actual a otro registro de la
base de datos& >ambin se produce la primera "e0 -ue se abre la base de datos&
!odi+icar la apariencia de .n +orm.lario
Para cambiar la manera en -ue un !ormulario muestra in!ormacin basndose en el registro
seleccionado en ese momento 5a) -ue utili0ar el e"ento Deposition& Por e(emplo* puede modi!icar el
t.tulo del control 5ata de !orma -ue se muestre el registro n/mero n&
Para "er el n/mero del registro actual* utilice la propiedad 4bsolute.osition del ob(eto @ecordset& ,l
n/mero de registro es relati"o a cero* por lo -ue el primer registro es el I&
,l siguiente cdigo muestra como "isuali0ar el n/mero del registro actual&
"rivate Sub DataD%6eposition'(
DataD.Caption = "6egistro ![" W DataD.6ecordset.2bsolute"osition ; D
End Sub
Tratar los cambios al despla0arse a .n n.e5o registro
2uando un usuario se despla0a a un nue"o registro mediante el control 5ata* puede -ue los datos del
!ormulario tengan -ue presentarse de una !orma distinta en el caso del nue"o registro&
Por e(emplo* es posible -ue en un !ormulario -ue muestre registros de empleados 5a)a distintas
opciones dependiendo de s. los empleados son !i(os* temporales o si traba(an por 5oras& 2ada registro
mostrar la in!ormacin sobre un empleado distinto* cu)as opciones pueden no ser las mismas para
todos los registros& Para -ue se seleccione la opcin correcta para cada registro* escriba cdigo en el
e"ento Deposition&
,l cdigo siguiente utili0a el e"ento Deposition para modi!icar la apariencia de un !ormulario&
"rivate Sub DataD%6eposition'(
DataD.Caption=DataD.6ecordset.2bsolute"osition
*+ DataD.6ecordset'"*dEmpleado"( U O T/en
optSenior.Jalue = True
Else
opt\unior.Jalue = True
End *+
DataD.Caption = "6egistro ![" W DataD.6ecordset.2bsolute"osition ; D
End Sub
Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales L@ L@
,sta ilustracin muestra el !ormulario basado en el cdigo anterior&
:sar el E*ento Error
,l e"ento ,rror tiene lugar cuando un usuario interact/a con el control 5ata ) se produce un error de
acceso a datos& 1tilice el e"ento ,rror para agregar tratamiento de errores personali0ado al control
5ata&
Por e(emplo* si un usuario modi!ica un campo ) despus 5ace clic en el control 5ata para despla0arse
al siguiente registro* el control 5ata actuali0ar el registro actual& +i se produce un error de acceso a
datos durante la actuali0acin* se producir el e"ento ,rror&
'os "alores de los campos enla0ados no cambian tras producirse un error& ,l usuario puede corregir los
"alores ) 5acer clic en el control 5ata para tratar de actuali0ar nue"amente el registro&
!ostrar .n mensa6e de error personali0ado
+i no coloca cdigo para tratar errores en el e"ento ,rror ) se produce un error cuando un usuario
interact/a con el control 5ata* Visual Basic muestra el mensa(e de error ) el programa contin/a
e(ecutndose&
+i no desea -ue se muestre el mensa(e de error estndar* puede asignar al argumento Desponse el
"alor I ) mostrar un mensa(e de error personali0ado como se muestra en el siguiente cdigo&
"rivate Sub DataD%Error 'DataErr 2s *nteger9 6esponse 2s *nteger(
*+ DataErr = M.@@ T/en 'Error de clave principal duplicada
)sgBox "*ngrese un *d de Empleado Cnico"
txt*dEmp.SetFocus
6esponse = .
Else
6esponse = D ')uestra el mensa?e de error est5ndar
End *+
End Sub
1so de 2ontroles ,nla0ados a Datos Acti"eJ
Adems de los controles enla0ados intr.nsecos* Visual Basic o!rece "arios controles 4ctive8
enla0ados a datos& ,n esta parte del curso se describen algunos controles Acti"eJ enla0ados a datos
a"an0ados&
Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales LA LA
:sar el Control DBArid
,l control de cuadr.cula enla0ada a datos 3control 5B,rid4 permite -ue los usuarios de su aplicacin de
base de datos traba(en con "arios registros a la "e0&
!ostrar m7ltiples registros
5B,rid es un control Acti"eJ -ue muestra una serie de !ilas ) columnas -ue representan registros )
campos de un ob(eto @ecordset& 2uando asigne a la propiedad 5ata!ource del control 5B,rid un
control 5ata* el control 5B,rid se llenar automticamente de datos ) se establecern
automticamente sus encabe0ados de columna a partir del con(unto de registros del control 5ata&
Al contrario -ue la ma)or.a de los controles enla0ados a datos* el control 5B,rid le permite "er )
modi!icar "arios registros simultneamente&
,n la siguiente ilustracin se muestra un !ormulario -ue utili0a un control 5B,rid para presentar
registros procedentes de la base de datos ;eptuno&
.ara a-adir el control 5B,rid a un proyecto
1& Bacer clic en la orden Componentes del men/ .royecto&
@& ,n la !ic5a Controles* seleccionar Microso't 5ata Bound ,rid Control* ) luego 5acer clic en
4ceptar&
,l control 5B,rid tiene "arias propiedades -ue especi!ican cmo se comporta el control& Por e(emplo*
si asigna a la propiedad 4llo"1pdate el "alor *rue* un usuario puede modi!icar los datos del control&
>ambin puede establecer propiedades para columnas indi"iduales del control 5B,rid&
Puede cambiar el t.tulo de la columna* cambiar el campo de datos al -ue se enla0a la columna* agregar
"alores predeterminados* etc&
.ara establecer propiedades de columnas
1& Cprima el botn secundario del ratn sobre el control 5B,rid&
@& Baga clic en la orden .ropiedades&
A& Baga clic en Columnas&
Puede cambiar el t.tulo de la columna* cambiar el campo de datos al -ue se enla0a la columna* agregar
"alores predeterminados* etc&
Para establecer los encabe0ados de las columnas del control 5B,rid* luego de 5aberlo enla0ado a un
control 5ata* oprima el botn secundario del ratn sobre el control en tiempo de dise6o* ) luego 5aga
clic en la orden @ecuperar campos&
8btener 9 establecer el texto de la celda act.al
1tilice la coleccin Columns del control 5B,rid para recuperar el te8to de la celda seleccionada
actualmente en tiempo de e(ecucin& Por e(emplo:
Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales LE LE
)sgBox DB3ridD.Columns'DB3ridD.Col(.Text
Para cambiar la in!ormacin del control DB:rid* cambie el ob(eto Decordset asociado& Por e(emplo* si el
control 5B,rid est enla0ado al recordset Data1* se e(ecutar.a el siguiente cdigo:
DataD.6ecordset.Edit
DataD.6ecordset.Fields'"!ombre"roducto"( = "Disco duro"
DataD.6ecordset.-pdate
Usar el e5ento 1e+oreUpdate
,l e"ento Be!ore1pdate tiene lugar antes de -ue se mue"an datos desde un control 5B,rid al b/!er de
copia del control 5ata& Puede "alidar los datos ) cancelar la actuali0acin si es necesario&
:sar el Control M5FlexArid
,l control M!%le,rid proporciona caracter.sticas a"an0adas para la presentacin de datos en una
cuadr.cula& ,s similar al control 5B,rid aun-ue* cuando se enla0a a un control 5ata* el control
M!%le,rid muestra datos de slo lectura& Puede utili0ar el control M!%le,rid para combinar !ilas o
columnas de in!ormacin ) as. agrupar la in!ormacin relacionada&
,n la siguiente ilustracin se muestran registros agrupados por Id& de pedido en la tabla Detalles de
pedidos&
.ara combinar celdas
1& ,stable0ca la propiedad MergeCells a un "alor di!erente a cero&
@& ,stable0ca las propiedades arreglo Merge@o"3) ) MergeCol3) a *rue para las !ilas ) columnas -ue
desee combinar&
Por e(emplo* para combinar las celdas en la tabla Detalles de pedidos* a6ada el siguiente cdigo al
!ormulario donde se encuentra el control M!%le,rid&
"rivate Sub Form%,oad'(
)SFlex3ridD.)ergeCells = +lex)ergeFree
)SFlex3ridD.)ergeCol'.( = True
End Sub
:sar el Control DBCom%o
Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales LF LF
Puede utili0ar el control de cuadro de lista enla0ado a datos 35B#ist4 o el cuadro combinado enla0ado a
datos 35BCombo4 para presentar automticamente una lista de "alores de un Decordset& ,sto resulta
/til para proporcionar "alores "lidos al usuario&
8btener in+ormacin de .na tabla de b7s-.eda
>ambin puede utili0ar estos controles en aplicaciones de etabla de b/s-uedae&
Por e(emplo* puede presentar una lista de nombres de categor.a "lidos 3en "e0 de Id&4 ) utili0ar el Id&
correspondiente cuando el usuario agregue o modi!i-ue datos&
'a ilustracin siguiente muestra un !ormulario -ue utili0a el control 5BCombo para presentar nombres
de categor.as de la tabla Productos&
"stablecer propiedades del control D1Combo
Para determinar el "alor -ue se presenta en el control 5BCombo* asigne a la propiedad @o"!ource
un nombre de control 5ata ) a la propiedad #ist%ield un nombre de campo&
,l cuadro combinado enla0ado a datos contiene todos los "alores de ese campo& Para determinar -u
campo de la base de datos se actuali0a cuando un usuario cambia un "alor* estable0ca las propiedades
5ata!ource ) 5ata%ield& Para establecer la relacin entre la tabla -ue contiene los "alores de
b/s-ueda ) la tabla -ue se est modi!icando realmente* estable0ca la propiedad BoundColumn&
Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales Parte H: 2ontroles ,stndar A"an0ados ) Acceso a Datos9 Dann) A& #atta :on0ales LG LG

También podría gustarte