Sei sulla pagina 1di 54

Curso de Visual Basic (parte 2)

CONTINUACION DEL EJEMPLO DEL CURSO 1 Lo que habr que hacer ahora es asociar codigo a cada uno de los botones que es de donde se van a realizar las operaciones: Para el botn Calcular que es el que nos mostrar el resultado segn la operacin seleccionada, he utilizado la instruccin If Then Else que vimos en el captulo anterior:

El botn Limpiar Datos nos va a servir para borrar de una forma rpida los datos introducidos por el usuario el resultado preparando los controles para introducir nuevos datos! El cdigo que tendremos que introducir es mu simple:

El botn Salir nicamente contendr la sentencia End.

4 -Formularios.
Los formularios tienen sus propios eventos, propiedades m"todos con los que se puede controlar su apariencia comportamiento! El primer paso para dise#ar un formulario consiste en establecer sus propiedades! Puede establecer las propiedades de un formulario en tiempo de dise#o en la ventana Propiedades o en tiempo de e$ecucin, escribiendo cdigo! Nota En tiempo de diseo, que es cualquier momento mientras est desarrollando una aplicacin en el entorno de %isual &asic, se traba$a con formularios controles, se establecen propiedades se escribe cdigo para los eventos! Tiempo de ejecucin es cualquier momento mientras se e$ecuta realmente la aplicacin se interacta con ella como lo hara un usuario!

4.1- Estableciendo las Propiedades ms importantes de los formularios.


'uchas propiedades de un formulario afectan a su apariencia fsica! La propiedad Caption determina el te(to que muestra la barra de ttulo del formulario la propiedad Icon establece el icono que aparece cuando se minimiza un formulario! Las propiedades MaxButton MinButton determinan si el formulario se puede ma(imizar o minimizar! )ambiando la propiedad BorderSty e puede controlar el comportamiento de cambio de tama#o del formulario! Las propiedades !ei"#t $idt# determinan el tama#o inicial de un formulario, mientras que las propiedades Le%t Top determinan la ubicacin del formulario en relacin con la esquina superior izquierda de la pantalla! )on la propiedad $indo&State puede establecer si el formulario se inicia en estado ma(imizado, minimizado o normal! La propiedad Na'e establece el nombre con el que har referencia al formulario en el cdigo! *e forma predeterminada, cuando se agrega un formulario por primera vez a un pro ecto, su nombre es +orm,, +orm-,

etc! Es conveniente establecer la propiedad Na'e a algo ms significativo, como .frmEntr / para un formulario de entrada de pedidos! La me$or manera de familiarizarse con las numerosas propiedades de los formularios es e(perimentar! )ambie algunas propiedades de un formulario en la ventana Propiedades e$ecute la aplicacin para ver su efecto! Puede aprender ms sobre cada propiedad si la selecciona presiona +, para ver 0 uda conte(tual!

4.2- Eventos y Mtodos de los formularios.


)omo ob$etos que son, los formularios pueden e$ecutar m"todos responder a eventos! El evento 1esize de un formulario se desencadena siempre que se cambia el tama#o de un formulario, a sea por una accin del usuario o a trav"s del cdigo! Esto permite realizar acciones como mover o cambiar el tama#o de los controles de un formulario cuando han cambiado sus dimensiones! El evento 0ctivate se produce siempre que un formulario se convierte en el formulario activo2 el evento *eactivate se produce cuando otro formulario u otra aplicacin se convierte en activo! Estos eventos son adecuados para iniciar o finalizar acciones del formulario! Por e$emplo, en el evento 0ctivate podra escribir cdigo para resaltar el te(to de un determinado cuadro de te(to2 con el evento *eactivate podra guardar los cambios efectuados en un archivo o en una base de datos! Para hacer visible un formulario se invoca el m"todo S#o&: +orm-!3ho4 Para descargar un formulario 5cerrarlo6, se invoca al m"todo Un oad: +orm-!7nload 7nload 'e 8'e significa el +ormulario activo! Para ocultar un formulario 5pero de$arlo activo en memoria6 se invoca al m"todo !ide: +orm-!9ide :nvocar el m"todo S#o& tiene el mismo efecto que establecer a True la propiedad (i)i* e del formulario! 'uchos m"todos de un formulario implican te(to o grficos! Los m"todos Print, Line, Circ e Re%re)# son tiles para imprimir o dibu$ar directamente en la superficie de un formulario!

4.3- Establecer el formulario de arranque de la aplicaci n.


*e forma predeterminada, el primer formulario de la aplicacin es el formulario inicial! )uando la aplicacin inicia la e$ecucin, se presenta este formulario 5el primer cdigo que se e$ecuta es el del evento +orm;:nitialize

de dicho formulario6! 3i quiere presentar un formulario diferente cuando se inicie la aplicacin, debe cambiar el formulario inicial! Para ca'*iar e %or'u ario inicia ,! -! <! En el men Proyecto, eli$a Propiedade) de proyecto! Eli$a la ficha +enera ! En el cuadro de lista O*,eto inicia , seleccione el formulario que desee que sea el nuevo formulario inicial! =! Eli$a Aceptar! Inicio )in %or'u ario inicia 0lgunas veces puede desear que la aplicacin se inicie sin cargar ningn formulario! Por e$emplo, puede que desee e$ecutar cdigo que cargue un archivo de datos despu"s presentar uno de entre varios formularios, segn el contenido de dicho archivo! Puede hacerlo creando un procedimiento Su* llamado 'ain en un mdulo estndar, como en el siguiente e$emplo: 3ub 'ain56 *im int3tatus 0s :nteger > Llamar a un procedimiento de funcin para comprobar el estado > del usuario! int3tatus ? @et7ser3tatus > 'ostrar un formulario inicial distinto segn el estado! :f int3tatus ? , Ahen frm'ain!3ho4 Else frmPass4ord!3ho4 End :f Este procedimiento tiene que ser un procedimiento Su* no puede estar en un mdulo de formulario! Para establecer el procedimiento Su* Main como ob$eto inicial, en el men Proyecto eli$a Propiedade) de proyecto, seleccione la ficha +enera seleccione Su* Main en el cuadro O*,eto inicia !

5 -Combo Box (lista combo)


7n control Co'*oBox combina las caractersticas de un control TextBox un control Li)tBox2 los usuarios pueden introducir informacin en la parte del cuadro de te(to o seleccionar un elemento en la parte de cuadro de lista del control! Para agregar o eliminar elementos en un control Co'*oBox, use el m"todo AddIte' o Re'o-eIte'! Establezca las propiedades Li)t, Li)tCount Li)tIndex para permitir a un usuario tener acceso a los

elementos de un control Co'*oBox! )omo alternativa, puede agregar elementos a la lista mediante la propiedad Li)t en tiempo de dise#o! Nota 7n evento 3croll ocurrir en un control Co'*oBox slo cuando se desplace el contenido de la parte desplegable del Co'*oBox, no cada vez que cambie el contenido del Co'*oBox! Por e$emplo, si la parte desplegable de un Co'*oBox contiene cinco elementos el elemento superior est resaltado, no ocurrir un evento 3croll hasta que presione seis veces la flecha hacia aba$o 5o una vez la tecla 0% PB@6! *espu"s de eso, ocurrir un evento 3croll por cada pulsacin de la tecla de flecha hacia aba$o! 3in embargo, si despu"s presiona la tecla de flecha hacia arriba, no ocurrir un evento 3croll hasta que presione seis veces la tecla de flecha hacia arriba 5o una vez la tecla 1E PB@6! *espu"s de eso, cada vez que presione la tecla de flecha hacia arriba se producir un evento 3croll! Eventos: Evento )hange Evento )licC Evento *bl)licC Evento *rag*rop Evento *ragDver Evento *rop*o4n Evento @ot+ocus Eventos Ee *o4n Ee 7p Evento Ee Press Evento Lost+ocus Evento DLE)omplete*rag Evento DLE*rag*rop Evento DLE*ragDver Evento DLE@ive+eedbacC Evento DLE3et*ata Evento DLE3tart*rag Evento 3croll

'"todos: '"todo 0dd:tem '"todo 1efresh '"todo )lear 5)lipboard, )ombo&o(, List&o(6 '"todo 1emove:tem '"todo *rag '"todo 3et+ocus '"todo 'ove '"todo 3ho4FhatsAhis '"todo DLE*rag '"todo GDrder Propiedades: Propiedad 0ppearance Propiedad List:nde( Propiedades &acC)olor +ore)olor Propiedad LocCed Propiedad )ontainer Propiedad 'ouse:con Propiedad *ata)hanged Propiedad 'ousePointer Propiedad *ata+ield Propiedad Hame Propiedad *rag:con Propiedad He4:nde( Propiedad *rag'ode Propiedad DLE*rag'ode Propiedad Enabled Propiedad DLE*rop'ode Propiedad +ont Propiedad Parent Propiedades +ont&old, +ont:talic, +ont3triCethru +ont7nderline Propiedad +ontHame Propiedades 3elLength, 3el3tart Propiedad +ont3ize Propiedad 3orted

3elAe(t 5)ontroles 0ctiveI6

Propiedades 9eight Fidth Propiedad 3t le Propiedad 9elp)onte(t:* Propiedad Aab:nde( Propiedad hFnd Propiedad Aab3top Propiedad :nde( 5)ontrol 0rra 6 Propiedad Aag Propiedad :ntegral9eight Propiedad Ae(t Propiedad :tem*ata Propiedad AoolAipAe(t Propiedades Left Aop Propiedad Aop:nde( Propiedad List Propiedad %isible Propiedad List)ount Propiedad FhatsAhis9elp:* Propiedades 3elLength, 3el3tart 3elAe(t

6- List Box (lista).


7n control Li)tBox muestra una lista de elementos entre los cuales el usuario puede seleccionar uno o ms! 3i el nmero de elementos supera el nmero que puede mostrarse, se agregar automticamente una barra de desplazamiento al control Li)tBox! 3i no se selecciona ningn elemento, el valor de la propiedad Li)tIndex ser J,! El primer elemento de la lista es Li)tIndex K el valor de la propiedad Li)tCount siempre es uno ms que el ma or valor de Li)tIndex! Para agregar o eliminar elementos de un control Li)tBox, use el m"todo AddIte' o Re'o-eIte'! Establezca las propiedades Li)t, Li)tCount Li)tIndex para permitir que un usuario tenga acceso a elementos del Li)tBox! Aambi"n puede agregar elementos a la lista mediante la propiedad Li)t en tiempo de dise#o! Eventos Evento )licC Evento *bl)licC Evento *rag*rop Evento *ragDver Evento @ot+ocus Evento :tem)hecC Eventos Ee *o4n Evento Ee Press Evento Lost+ocus Eventos 'ouse*o4n 'ouse7p Evento 'ouse'ove Evento DLE)omplete*rag Evento DLE*rag*rop Evento DLE*ragDver Evento DLE@ive+eedbacC Evento DLE3et*ata Evento DLE3tart*rag Evento 3croll

Ee 7p

'"todos '"todo 0dd:tem '"todo 1efresh '"todo )lear 5)lipboard, )ombo&o(, List&o(6 '"todo 1emove:tem '"todo *rag '"todo 3et+ocus '"todo 'ove '"todo 3ho4FhatsAhis '"todo DLE*rag '"todo GDrder Propiedades

Propiedad 0ppearance Propiedad 'ousePointer Propiedades &acC)olor +ore)olor Propiedad 'ulti3elect Propiedad )olumns 5List&o(6 Propiedad Hame Propiedad )ontainer Propiedad He4:nde( Propiedad *ata)hanged Propiedad DLE*rag'ode Propiedad *ata+ield Propiedad DLE*rop'ode Propiedad *ata3ource Propiedad Parent Propiedad *rag:con Propiedad 3el)ount Propiedad *rag'ode Propiedad 3elected Propiedad Enabled Propiedad 3orted Propiedad +ont Propiedad 3t le Propiedades +ont&old, +ont:talic, +ont3triCethru +ont7nderline Propiedad +ontHame Propiedad Aab3top Propiedad +ont3ize Propiedad Aag Propiedades 9eight Fidth Propiedad Ae(t Propiedad 9elp)onte(t:* Propiedad AoolAipAe(t Propiedad hFnd Propiedad Aop:nde( Propiedad :nde( 5)ontrol 0rra 6 Propiedad %isible Propiedad :tem*ata Propiedad FhatsAhis9elp:* Propiedades Left Aop Propiedad Aab:nde( Propiedad List Propiedad List)ount Propiedad List:nde( Propiedad 'ouse:con

7- Timer (cro !metro)


7n control Ti'er puede e$ecutar cdigo a intervalos peridicos produciendo un evento Aimer! El control Ti'er, invisible para el usuario, resulta til para el procesamiento de fondo! Ho puede establecer la propiedad Ena* ed de un Ti'er para una seleccin mltiple de controles que no sean controles Ti'er! Ho e(iste ningn lmite prctico en cuanto al nmero de controles Ti'er activos que puede tener en %isual &asic L!K e$ecutndose en Findo4s ML o en Findo4s HA! Eventos: Evento Aimer

Propiedades:
Propiedad Enabled Propiedad Hame Propiedad :nde( 5)ontrol 0rra 6 Propiedad Parent Propiedad :nterval Propiedad Aag
Propiedades Left Aop

"- #$ape (%i&ura).


S#ape es un control grfico que se muestra como un rectngulo, un cuadrado, una elipse, un crculo, un rectngulo redondeado o un cuadrado redondeado! 7tilice controles S#ape en tiempo de dise#o en lugar de o adems de invocar los m"todos Circ e Line en tiempo de e$ecucin! Puede dibu$ar un control S#ape en un contenedor, pero no puede actuar como contenedor! El efecto de establecer la propiedad BorderSty e depende del valor de la propiedad Border$idt#! 3i Border$idt# no es , BorderSty e no es K N, BorderSty e se establece a ,! '"todos: '"todo 'ove '"todo 1efresh '"todo GDrder

Propiedades: Propiedades &acC)olor +ore)olor Propiedad &acC3t le Propiedad &order)olor Propiedad &order3t le Propiedad &orderFidth Propiedad )ontainer Propiedad *ra4'ode Propiedad +ill)olor Propiedad +ill3t le

Propiedades 9eight Fidth Propiedad :nde( 5)ontrol 0rra 6 Propiedades Left Aop Propiedad Hame Propiedad Parent Propiedad 3hape Propiedad Aag Propiedad %isible

'- Li e (l( ea).


Line es un control grfico que se muestra como una lnea horizontal, vertical o diagonal! Puede utilizar un control Line en tiempo de dise#o para dibu$ar lneas en formularios! En tiempo de e$ecucin puede utilizar un control Line en lugar del m"todo Line, o adems de "l! Las lneas dibu$adas con el control Line permanecen en el formulario aunque la propiedad AutoRedra& sea .a )e! Los controles Line pueden mostrarse en formularios, en cuadros de imagen en marcos! Ho puede utilizar el m"todo Mo-e para mover un control Line en tiempo de e$ecucin, pero s se puede mover o cambiar de tama#o alterando sus propiedades /1, /0, 11 e 10! El efecto de establecer la propiedad BorderSty e depende del valor de la propiedad Border$idt#! 3i Border$idt# no es , BorderSty e no es K N, BorderSty e se establecer a ,! '"todos:

Mtodo Refresh Mtodo ZOrder


Propiedades: Propiedad &order)olor Propiedad Hame

Propiedad &order3t le Propiedad &orderFidth Propiedad )ontainer Propiedad *ra4'ode Propiedad :nde( 5)ontrol 0rra 6

Propiedad Parent Propiedad Aag Propiedad %isible Propiedades I,, O,, I-

O-

)*- +ma&e (ima&e )


7tilice el control I'a"e para mostrar un grfico! 7n control I'a"e puede mostrar un grfico desde un mapa de bits, un icono o un metarchivo, as como un metarchivo me$orado, un archivo PPE@ o archivos @:+! El control I'a"e utiliza menos recursos del sistema actualiza con ms rapidez que un control PictureBox, pero slo admite un subcon$unto de las propiedades, los eventos los m"todos de PictureBox! 7se la propiedad Stretc# para determinar si el grfico se escala para a$ustarse al control o viceversa! 0unque puede colocar un control I'a"e dentro de un contenedor, un control I'a"e no puede actuar como contenedor! Eventos: Evento )licC Evento *bl)licC Evento *rag*rop Evento *ragDver Eventos 'ouse*o4n Evento 'ouse'ove '"todos: '"todo *rag '"todo 'ove '"todo DLE*rag Evento DLE)omplete*rag Evento DLE*rag*rop Evento DLE*ragDver Evento DLE@ive+eedbacC 'ouse7p Evento DLE3et*ata Evento DLE3tart*rag '"todo 1efresh '"todo 3ho4FhatsAhis '"todo GDrder Propiedad 'ouse:con Propiedad 'ousePointer Propiedad Hame Propiedad DLE*rag'ode Propiedad DLE*rop'ode Propiedad Parent Propiedad Picture Propiedad 3tretch Propiedad Aag Propiedad AoolAipAe(t 6 Propiedad %isible Propiedad FhatsAhis9elp:*

Propiedades: Propiedad 0ppearance Propiedad &order3t le Propiedad )ontainer Propiedad *ata)hanged Propiedad *ata+ield Propiedad *ata3ource Propiedad *rag:con Propiedad *rag'ode Propiedad Enabled Propiedades 9eight Fidth Propiedad :nde( 5)ontrol 0rra Propiedades Left Aop

))- ,ata (acceso a bases de datos)


Proporciona acceso a datos almacenados en bases de datos mediante uno de los tres tipos de ob$etos Record)et! El control Data le permite desplazarse de un registro a otro, as como presentar manipular datos de los registros en controles enlazados! 3in un control Data los controles enlazados a datos 5vinculados6 de un formulario no pueden tener acceso a los datos automticamente! Puede realizar la ma ora de las operaciones de acceso a datos utilizando el control Data sin escribir cdigo! Los controles enlazados a datos vinculados a un control Data presentan automticamente los datos de uno o varios campos del registro actual o, en algunos casos, de un con$unto de registros situado a ambos lados del registro actual! El control Data realiza todas sus operaciones sobre el registro actual! 3i el control Data recibe instrucciones para desplazarse a un registro diferente, todos los controles enlazados pasan automticamente los posibles cambios al control Data para que los guarde en la base de datos! *espu"s, el control Data se desplaza al registro solicitado pasa los datos del registro actual a los controles enlazados, en los que se presentan! El control Data administra automticamente una serie de contingencias entre las que se inclu en los con$untos de registros vacos, la insercin de nuevos registros, la modificacin actualizacin de registros e(istentes, la administracin de ciertos tipos de errores! 3in embargo, en aplicaciones ms sofisticadas es necesario interceptar algunas condiciones de error que el control Data no puede administrar! Por e$emplo, si el motor de base de datos 'icrosoft Pet tiene un problema al tener acceso al archivo de base de datos, no tiene el permiso adecuado o no puede e$ecutar la consulta, se producir un error interceptable! 3i el error se produce antes de que se inicien los procedimientos de la aplicacin o se trata de errores internos, se desencadenar el evento Error!

)2- Co troles e la-ados


Los controles DBLi)t, DBCo'*o, DB+rid MS. ex+rid son capaces de administrar con$untos de registros cuando estn enlazados a un control Data! Aodos estos controles permiten presentar o manipular varios registros a la vez! Los controles incorporados Picture, La*e , TextBox, C#ec2Box, I'a"e, OLE, Li)tBox Co'*oBox tambi"n son controles enlazados a datos se pueden enlazar a un nico campo de un Record)et administrado por un control Data! En las ediciones Profesional Empresarial se encuentran disponibles otros controles enlazados a datos como Ma)2edEdit Ric#TextBox2 otros proveedores tambi"n ofrecen controles adicionales!

12.1 !uncionamiento
7na vez iniciada la aplicacin, %isual &asic utiliza las propiedades del control Data para abrir la base de datos seleccionada, crear un ob$eto Data*a)e crear un ob$eto Record)et! Las propiedades Data*a)e Record)et

del control Data hacen referencia a los ob$etos Data*a)e Record)et reci"n creados, que se pueden manipular de forma independiente del control Data, con o sin controles enlazados! El control Data se inicializa antes del evento +orm;Load inicial del formulario en el que se encuentra! 3i se producen errores durante esta fase de inicializacin, se produce un error no interceptable! )uando %isual &asic utiliza el motor de base de datos Pet para crear un Record)et, no se pueden producir otras operaciones o eventos de %isual &asic hasta que se termine la operacin! 3in embargo, otras aplicaciones basadas en Findo4s pueden seguir en e$ecucin mientras se est creando el Record)et! 3i el usuario presiona )A1LQ:HAE1 mientras el motor Pet est generando un Record)et, la operacin termina, se produce un error interceptable la propiedad Record)et del control Data se establece a Hothing! En tiempo de dise#o, la segunda vez que se presiona )A1LQ:HAE1 hace que %isual &asic presente la ventana Depuraci3n! Puede manipular el control Data con el mouse 5ratn6, desplazndose de un registro a otro, o al principio o al final del Record)et! Las propiedades EO.Action BO.Action determinan lo que ocurre cuando el usuario se desplaza al principio o al final de un Record)et con el mouse! Ho puede establecer el enfoque en un control Data!

12.2 "alidaci n
El evento (a idate la propiedad DataC#an"ed se utilizan para realizar comprobaciones de ltima hora sobre los registros que se van a escribir en la base de datos!

12.3 #b$etos de acceso a datos


En los procedimientos puede utilizar los ob$etos de acceso a datos Data*a)e Record)et creados por el control Data! )ada ob$eto Data*a)e Record)et tiene sus propias propiedades m"todos, puede escribir procedimientos que utilicen dichas propiedades m"todos para manipular sus datos! Por e$emplo, el m"todo Mo-eNext de un ob$eto Record)et desplaza el registro actual al siguiente registro dentro del Record)et! Para invocar este m"todo, podra utilizar el cdigo siguiente: *ata,!1ecordset!'oveHe(t El control Data puede tener acceso a cualquiera de los tres tipos de ob$etos Record)et del motor Pet versin <!K! 3i no selecciona el tipo de con$unto de registros, se crea un Record)et de tipo d naset! En muchos casos, el tipo predeterminado la configuracin del ob$eto Record)et creado son mu ineficientes! Es decir, puede que no necesite un cursor actualizable totalmente desplazable de con$unto de claves para tener acceso a los datos! Por e$emplo, un Record)et de tipo snapshot, de slo lectura unidireccional se creara con ms rapidez que el cursor predeterminado! 0segrese de elegir el tipo ms eficiente, as como las propiedades Exc u)i-e, Option) ReadOn y adecuadas a su situacin! Para seleccionar un tipo de Record)et especfico, establezca la propiedad Record)etType del control Data a: Record)etType (a or Con)tante Aable K -*RSTypeTa* e * naset , -*RSTypeDyna)et 5Predeterminado6

3napshot

-*RSTypeSnap)#ot

12.4 Ediciones Profesional y Empresarial


En lo que concierne al acceso a datos, la principal diferencia entre las ediciones de 0prendiza$e, Profesional Empresarial de %isual &asic es la capacidad de crear nuevos ob$etos de acceso a datos! En la Edicin estndar no puede declarar 5con la palabra clave Di'6 variables como ob$etos de acceso a datos dentro del cdigo! Esto significa que slo el control Data puede crear ob$etos Data*a)e Record)et! En las ediciones Profesional Empresarial de %isual &asic versin L!K puede crear un ob$eto Record)et asignarlo a la propiedad Record)et de un control Data! )ualquier control enlazado que est" conectado al control Data permitir manipular los registros del Record)et que ha creado! 0segrese de que las propiedades Data.ie d de los controles enlazados est"n establecidas a nombres de campo vlidos dentro del nuevo Record)et!

12.% &onsultas almacenadas


Dtra opcin importante al utilizar el control Data es la posibilidad de e$ecutar consultas almacenadas! 3i antes ha creado un ob$eto 4ueryDe%, el control Data puede e$ecutarlo crear un Record)et mediante las propiedades S4L, Connect otras del ob$eto 4ueryDe%! Para e$ecutar un 4ueryDe%, establezca la propiedad RecordSource del control Data al nombre del 4ueryDe% utilice el m"todo Re%re)#! 3i el 4ueryDe% almacenado contiene parmetros, tiene que crear el Record)et pasarlo al control Data!

12.' (ratamiento de )#!*E#!


El control Data tambi"n puede administrar lo que ocurre cuando se encuentre con un Record)et sin registros! 'odificando la propiedad EO.Action puede programar el control Data para que pase al modo 0ddHe4 de forma automtica! Puede programar el control Data para que se a$uste automticamente a la parte superior o inferior del formulario primario utilizando la propiedad A i"n! En cualquiera de los casos, el control Data cambia de tama#o horizontalmente para llenar todo el ancho de su formulario primario, siempre que "ste cambie de tama#o! Eventos: Evento *rag*rop Evento *ragDver Evento Error Eventos 'ouse*o4n, 'ouse7p Evento 'ouse'ove Evento DLE)omplete*rag Evento DLE*rag*rop Evento DLE*ragDver Evento DLE@ive+eedbacC Evento DLE3et*ata Evento DLE3tart*rag Evento 1eposition Evento 1esize Evento %alidate

'"todos '"todo *rag '"todo 'ove '"todo DLE*rag '"todo 1efresh

'"todo 3ho4FhatsAhis '"todo 7pdate)ontrols '"todo 7pdate1ecord '"todo GDrder

Propiedades Propiedad 0lign Propiedad +ont3ize Propiedad 0ppearance Propiedades 9eight, Fidth Propiedades &acC)olor, +ore)olor Propiedad :nde( 5'atriz de controles6 Propiedad &D+0ction, ED+0ction Propiedades Left, Aop Propiedad )aption Propiedad 'ouse:con Propiedad )onnect Propiedad 'ousePointer Propiedad *atabase Propiedad Hame Propiedad *atabaseHame Propiedad DLE*rop'ode Propiedad *efault)ursorA pe Propiedad Dptions Propiedad *efaultA pe Propiedad Parent Propiedad *rag:con Propiedad 1eadDnl 50ceso de datos6 Propiedad *rag'ode Propiedad 1ecordset Propiedad Edit'ode Propiedad 1ecordsetA pe Propiedad Enabled Propiedad 1ecord3ource Propiedad E(clusive Propiedad Aag Propiedad +ont Propiedad AoolAipAe(t Propiedades +ont&old, +ont:talic, +ont3triCethru, +ont7nderline Propiedad +ontHame Propiedad FhatsAhis9elp:* Propiedad %isible

). -/0e tos m1s importa tes de los co troles est1 dares. 13.1-&+an,e
0plicable a: )ontrol )ombo&o(, )ontroles 93croll&ar %3croll&ar, )ontrol Label, )ontrol Picture&o(, )ontrol Ae(t&o(

:ndica que el contenido de un control ha cambiado! )mo cundo ha ocurrido este evento vara segn el control: Co'*oBox: cambia el te(to de la parte de cuadro de te(to del control! Dcurre slo si la propiedad Sty e est establecida a K 5*ropdo4n )ombo6 o , 53imple )ombo6 el usuario cambia el te(to o usted cambia la configuracin de la propiedad Text mediante cdigo!

DirLi)tBox: cambia el directorio seleccionado! Dcurre cuando el usuario hace doble clic en un nuevo directorio o cuando usted cambia la configuracin de la propiedad Pat# mediante cdigo! Dri-eLi)tBox: cambia la unidad seleccionada! Dcurre cuando el usuario selecciona una nueva unidad o cuando usted cambia la configuracin de la propiedad Dri-e mediante cdigo! !Scro Bar (Scro Bar 5barras de desplazamiento horizontal vertical6: mueven la parte de cuadro de desplazamiento de la barra de desplazamiento! Dcurre cuando el usuario desplaza o cuando usted cambia la configuracin de la propiedad (a ue mediante cdigo! La*e : cambia el contenido del control La*e ! Dcurre cuando un vnculo **E actualiza los datos o cuando usted cambia la configuracin de la propiedad Caption mediante cdigo! PictureBox: cambia el contenido del control PictureBox! Dcurre cuando un vnculo **E actualiza los datos o cuando usted cambia la configuracin de la propiedad Picture mediante cdigo! TextBox: cambia el contenido del cuadro de te(to! Dcurre cuando un vnculo **E actualiza los datos, cuando un usuario cambia el te(to o cuando usted cambia la configuracin de la propiedad Text mediante cdigo!

Sintaxi) Pri-ate Su* objeto5C#an"e6Rndice A) Inte"erS7 La sinta(is del evento )hange consta de las siguientes partes: Parte De)cripci3n objeto 7na e(presin de ob$eto que da como resultado un ob$eto de la lista 0plicable a! ndice 7n entero que identifica nicamente a un control si est en una matriz de controles! Co'entario) El procedimiento del evento )hange puede sincronizar o coordinar la presentacin de datos entre controles! Por e$emplo, puede utilizar un procedimiento de evento )hange de una barra de desplazamiento para actualizar la configuracin de la propiedad (a ue de la barra de desplazamiento de un control TextBox! D bien, puede utilizar un procedimiento de evento )hange para mostrar datos frmulas en un rea de traba$o los resultados en otra rea! Los procedimientos de evento )hange son tambi"n tiles para actualizar propiedades de controles del sistema de archivos 5DirLi)tBox, Dri-eLi)tBox .i eLi)tBox6! Por e$emplo, puede actualizar la configuracin de la propiedad Pat# para que un control DirLi)tBox refle$e un cambio en la configuracin de la propiedad Dri-e de un control Dri-eLi)tBox! Nota 7n procedimiento de evento )hange puede algunas veces causar un evento en cascada! Esto ocurre cuando el procedimiento de evento )hange del control altera el contenido del control, por e$emplo, estableciendo una propiedad en el cdigo que determina el valor del control, como el valor de la propiedad Text para un control TextBox! Para impedir un evento en cascada: 3i es posible, evite escribir un procedimiento de evento )hange para un control que altere el contenido de ese control! 3i escribe un procedimiento as, asegrese de establecer un indicador que impida cambios posteriores mientras el cambio actual est en curso!

Evite crear dos o ms controles cu os procedimientos de evento )hange se vean afectados entre s, por e$emplo, dos controles TextBox que se actualicen entre s durante sus eventos )hange! Evite utilizar una funcin o una instruccin M)"Box en este evento para los controles !Scro Bar (Scro Bar!

E$emplo del evento &+an,e


Este e$emplo muestra la configuracin num"rica de la propiedad (a ue de una barra de desplazamiento horizontal en un control TextBox! Para probar este e$emplo, cree un formulario con un control TextBox un control !Scro Bar despu"s pegue el cdigo en la seccin *eclaraciones de un formulario que contenga una barra de desplazamiento horizontal 5control !Scro Bar6 un control TextBox! Presione +L haga clic en la barra de desplazamiento horizontal! Private 3ub +orm;Load 56 93croll,!'in ? K 93croll,!'a( ? ,KKK 93croll,!Large)hange ? ,KK 93croll,!3mall)hange ? , End 3ub Private 3ub 93croll,;)hange 56 Ae(t,!Ae(t ? 93croll,!%alue End 3ub > Establece 'in! > Establece 'a(! > Establece Large)hange! > Establece 3mall)hange!

13.2-&lic0plicable a: )ontrol )hecC&o(, )ontrol )ombo&o(, )ontrol )ommand&utton, Db$eto +orm, )ontrol +rame, )ontrol :mage, )ontrol Label, )ontrol List&o(, )ontrol 'enu, )ontrol Dption&utton, )ontrol Picture&o(, )ontrol Ae(t&o(! Dcurre cuando el usuario presiona suelta un botn del mouse 5ratn6 en un ob$eto! Aambi"n puede ocurrir cuando se cambia el valor de un control! Para un ob$eto .or', este evento ocurre cuando el usuario hace clic en un rea en blanco o en un control desactivado! Para un control, este evento ocurre cuando el usuario: 9ace clic en un control con el botn primario o secundario del mouse! )on un control C#ec2Box, Co''andButton, Li)tBox o OptionButton, el evento )licC slo ocurre cuando el usuario hace clic con el botn primario del mouse! 3elecciona un elemento de un control Co'*oBox o Li)tBox, a sea presionando las teclas de direccin o haciendo clic con el botn del mouse!

Presiona la &0110 E3P0):0*D10 cuando un control Co''andButton, OptionButton o C#ec2Box tiene el enfoque! Presiona EHA101 cuando un formulario tiene un control Co''andButton con su propiedad De%au t establecida a True! Presiona E3) cuando un formulario tiene un botn Cance ar, un control Co''andButton con su propiedad Cance establecida a True! Presiona una tecla de acceso para un control! Por e$emplo, si el ttulo de un control Co''andButton es TU:rT, al presionar 0LAQ: se desencadena este evento!

Aambi"n puede desencadenar el evento )licC en el cdigo si: Establece la propiedad (a ue de un control Co''andButton a True! Establece la propiedad (a ue de un control OptionButton a True! )ambia el valor de la propiedad (a ue de un control C#ec2Box! Sintaxi) Pri-ate Su* .or'5C ic26 7 Pri-ate Su* objeto5C ic26Rndice A) Inte"erS7 La sinta(is del evento )licC consta de las siguientes partes: Parte De)cripci3n objeto 7na e(presin de ob$eto que da como resultado un ob$eto de la lista 0plicable a! ndice 7n entero que identifica nicamente a un control si est en una matriz de controles! Co'entario) Por lo general se ad$unta un procedimiento de evento )licC a un control Co''andButton, un ob$eto Menu o un control PictureBox para realizar comandos acciones similares a comandos! Para los dems controles aplicables, utilice este evento para desencadenar acciones como respuesta a un cambio en el control! Puede utilizar la propiedad (a ue de un control para comprobar el estado del control desde el cdigo! 9acer clic en un control genera los eventos 'ouse*o4n 'ouse7p adems del evento )licC! El orden en que ocurren estos tres eventos vara de un control a otro! Por e$emplo, para los controles Li)tBox Co''andButton, los eventos ocurren en este orden: 'ouse*o4n, )licC, 'ouse7p! Pero para los controles .i eLi)tBox, La*e o PictureBox, los eventos ocurren en este otro orden: 'ouse*o4n, 'ouse7p )licC! )uando est ad$untando procedimientos para estos eventos relacionados, asegrese de que sus acciones no entran en conflicto! 3i el orden de los eventos es importante en la aplicacin, pruebe el control para determinar el orden de los mismos! Nota Para distinguir entre los botones primario, secundario central del mouse, utilice los eventos 'ouse*o4n 'ouse7p! 3i ha cdigo en el evento )licC, nunca se activar el evento *lb)licC a que de los dos eventos, )licC es el primero que se activa! )omo resultado, el evento )licC intercepta el clic del mouse, por lo que *bl)licC nunca se producir!

E$emplo del Evento &licEn este e$emplo, cada vez que se hace clic en un control PictureBox se mueve diagonalmente por un formulario! Para probar este e$emplo, pegue el cdigo en la seccin *eclaraciones de un formulario que contenga un control PictureBox en la esquina inferior izquierda del mismo, despu"s presione +L haga clic en el control PictureBox! Private 3ub Picture,;)licC 56 Picture,!'ove Picture,!Left Q VLK, Picture,!Aop J LLK End 3ub

13.3- .ot!ocus
0plicable a: )ontrol )hecC&o(, )ontrol )ombo&o(, )ontrol )ommand&utton, , Db$eto +orm )ontroles 93croll&ar %3croll&ar, )ontrol List&o(, )ontrol Dption&utton, )ontrol Picture&o(, )ontrol Ae(t&o(! Dcurre cuando un ob$eto recibe el enfoque, a sea mediante una accin del usuario, como tabular o hacer clic en el ob$eto, o cambiando el enfoque en el cdigo mediante el m"todo Set.ocu)! 7n formulario recibe el enfoque slo cuando todos los controles visibles estn desactivados! Sintaxi) Pri-ate Su* .or'5+ot.ocu)6 7 Pri-ate Su* objeto5+ot.ocu)6Rndice A) Inte"erS7 La sinta(is del evento @ot+ocus consta de las siguientes partes: Parte De)cripci3n objeto 7na e(presin de ob$eto que da como resultado un ob$eto de la lista 0plicable a! ndice 7n entero que identifica de manera nica a un control si est en una matriz de controles! Co'entario) Hormalmente, el procedimiento de evento @ot+ocus se utiliza para especificar las acciones que ocurren cuando un control o un formulario recibe primero el enfoque! Por e$emplo, si ad$unta un procedimiento de evento @ot+ocus a cada control de un formulario puede guiar al usuario mostrndole instrucciones breves o mensa$es en la barra de estado! Aambi"n puede proporcionar avisos visuales activando, desactivando o mostrando otros controles que dependan del control que tiene el enfoque! Nota 7n ob$eto puede recibir el enfoque slo si sus propiedades Ena* ed (i)i* e estn establecidas a True! Para personalizar el interfaz de teclado en %isual &asic para mover el enfoque, establezca el orden de tabulacin o especifique teclas de acceso para controles de un formulario!

E,e'p o de e-ento +ot.ocu) Este e$emplo muestra un mensa$e en la barra de estado cuando un botn de un grupo OptionButton obtiene el enfoque! Para probar este e$emplo, pegue el cdigo en la seccin *eclaraciones de un formulario que contenga dos controles OptionButton un control La*e ! Establezca la propiedad Na'e de ambos controles OptionButton a Dption@roup , despu"s, presione +L haga clic en los controles OptionButton! Private 3ub +orm;Load 56 Label,!0uto3ize ? Arue End 3ub Private 3ub Dption@roup;@ot+ocus 5:nde( 0s :nteger6 3elect )ase :nde( )ase K Label,!)aption ? TLa opcin , tiene el enfoque!T )ase , Label,!)aption ? TLa opcin - tiene el enfoque!T End 3elect End 3ub Private 3ub Dption@roup;Lost+ocus 5:nde( 0s :nteger6 Label,!)aption ? TT End 3ub

13.4- /eyPress
0plicable a: )ontrol )hecC&o(, )ontrol )ombo&o(, )ontrol )ommand&utton, Db$eto +orm )ontroles 93croll&ar %3croll&ar, )ontrol List&o(, )ontrol Dption&utton, )ontrol Picture&o(, )ontrol Ae(t&o(! Dcurre cuando el usuario presiona suelta una tecla! Sintaxi) Pri-ate Su* .or'58eyPre))6keyascii A) Inte"er7 Pri-ate Su* objeto58eyPre))6Rndice A) Inte"er,Skeyascii A) Inte"er7 La sinta(is del evento Ee Press consta de las siguientes partes: Parte De)cripci3n objeto 7na e(presin de ob$eto que da como resultado un ob$eto de la lista 0plicable a! ndice 7n entero que identifica de manera nica a un control si est en una matriz de controles!

keyascii 7n entero que devuelve un cdigo de tecla num"rico 0H3: estndar! keyascii se pasa por referencia2 al cambiarlo se enva un carcter diferente al ob$eto! )ambiar keyascii a K cancela la pulsacin de tecla, de forma que el ob$eto no recibe ningn carcter! Co'entario) El ob$eto que tiene el enfoque recibe el evento! 7n formulario puede recibir el evento slo si no tiene controles visibles activados! 7n evento Ee Press puede implicar a cualquier carcter imprimible del teclado, a la tecla )A1L combinada con un carcter del alfabeto estndar o uno de los caracteres especiales, la tecla EHA101 o 1EA1D)E3D! 7n procedimiento de evento Ee Press es til para interceptar pulsaciones de teclas realizadas en un control TextBox o Co'*oBox! Esto le permite comprobar inmediatamente la validez de las pulsaciones o el formato de los caracteres a medida que se escriben! )ambiar el valor del argumento keyascii cambia el carcter mostrado! Ee Press interpreta las ma sculas minsculas de cada carcter como cdigos de tecla distintos , por tanto, como caracteres diferentes! Nota El nmero 0H3: para la combinacin de teclado )A1LQW es K! Puesto que %isual &asic reconoce un valor keyascii de K como una cadena de longitud cero 5TT6, evite utilizar )A1LQW en sus aplicaciones! E,e'p o de e-ento 8eyPre)) Este e$emplo convierte a ma sculas el te(to escrito en un control TextBox! Para probar este e$emplo, pegue el cdigo en la seccin *eclaraciones de un formulario que contenga un control TextBox , despu"s, presione +L escriba algo en el control TextBox! Private 3ub Ae(t,;Ee Press 5Ee 0scii 0s :nteger6 )har ? )hr5Ee 0scii6 Ee 0scii ? 0sc57)ase5)har66 End 3ub

13.%- 0oad
0plicable a: Db$eto +orm! Dcurre cuando se carga un formulario! Para un formulario de inicio, ocurre cuando una aplicacin se inicia como resultado de una instruccin Load o como resultado de una referencia a una propiedad o control de un formulario descargado! Sintaxi) Pri-ate Su* .or'5Load6 7 Pri-ate Su* MDI.or'5Load6 7

Co'entario) Hormalmente utiliza un procedimiento de evento Load para incluir cdigo de inicializacin para un formulario2 por e$emplo, cdigo que especifica los valores predeterminados de los controles, indica el contenido que se va a cargar en controles Co'*oBox o Li)tBox e inicializa variables a nivel del formulario! El evento Load ocurre tras el evento :nitialize! Nota )uando cree procedimientos para eventos relacionados, como 0ctivate, @ot+ocus, Paint 1esize, asegrese de que sus acciones no entran en conflicto no producen eventos recursivos! E,e'p o de e-ento Load Este e$emplo carga elementos en un control Co'*oBox cuando se carga un formulario! Para probar este e$emplo, pegue el cdigo en la seccin *eclaraciones de un formulario que contenga un control Co'*oBox despu"s presione +L! Private 3ub +orm;Load 56 )ombo,!0dd:tem T'ozartT )ombo,!0dd:tem T&eethovenT )ombo,!0dd:tem T1ocC >n 1ollT )ombo,!0dd:tem T1eggaeT )ombo,!List:nde( ? End 3ub > 0grega elementos a la lista!

> Establece la seleccin predeterminada!

13.'- 0ost!ocus
0plicable a
)ontrol )hecC&o(, )ontrol )ombo&o(, )ontrol )ommand&utton, Db$eto +orm )ontroles 93croll&ar List&o(, )ontrol Dption&utton, )ontrol Picture&o(, )ontrol Ae(t&o(! %3croll&ar, )ontrol

Dcurre cuando un ob$eto pierde el enfoque, a sea por una accin del usuario, como tabular o hacer clic en otro ob$eto, o bien mediante un cambio del enfoque en el cdigo con el m"todo Set.ocu)! Sintaxi) Pri-ate Su* .or'5Lo)t.ocu)6 7 Pri-ate Su* objeto5Lo)t.ocu)6Rndice A) Inte"erS7 La sinta(is del evento Lost+ocus consta de las siguientes partes: Parte De)cripci3n objeto 7na e(presin de ob$eto que da como resultado un ob$eto de la lista 0plicable a! ndice 7n entero que identifica de manera nica a un control si est en una matriz de controles!

Co'entario) 7n procedimiento de evento Lost+ocus resulta especialmente til para comprobar validar actualizaciones! 7tilizar Lost+ocus puede hacer que la validacin tenga lugar conforme el usuario mueve el enfoque del control! Dtro uso para este tipo de procedimiento de evento es activar, desactivar, ocultar mostrar otros ob$etos, como en un procedimiento de evento @ot+ocus! Aambi"n puede invertir o cambiar condiciones que estableci en el procedimiento de evento @ot+ocus del ob$eto!

E$emplo del evento 0ost!ocus


Este e$emplo cambia el color de un control TextBox cuando recibe o pierde el enfoque 5se selecciona con el mouse o la tecla A0&6 muestra el te(to apropiado en el control La*e ! Para probar este e$emplo, pegue el cdigo en la seccin *eclaraciones de un formulario que contenga dos controles TextBox un control La*e , despu"s, presione +L mueva el enfoque entre Ae(t, Ae(t-! Private 3ub Ae(t,;@ot+ocus 56 > 'uestra el enfoque en ro$o! Ae(t,!&acC)olor ? 1@&5-LL, K, K6 Label,!)aption ? TAe(t, tiene el enfoque!T End 3ub Private 3ub Ae(t,;Lost+ocus 56 > 'uestra la p"rdida del enfoque en azul! Ae(t,!&acC)olor ? 1@&5K, K, -LL6 Label,!)aption ? TAe(t, no tiene el enfoque!T End 3ub

13.1- MouseMove
0plicable a:

)ontrol )hecC&o(, )ontrol )ommand&utton, )ontrol *ata, Db$eto +orm, )ontrol +rame, )ontrol :mage, )ontrol Label, )ontrol List&o(, )ontrol Dption&utton, )ontrol Picture&o(, )ontrol Ae(t&o(! Dcurre cuando el usuario mueve el mouse! Sintaxi) Pri-ate Su* .or'5Mou)eMo-e6botn A) Inte"er, mays A) Inte"er, x A) Sin" e, y A) Sin" e7 Pri-ate Su* MDI.or'5Mou)eMo-e6botn A) Inte"er, mays A) Inte"er, x A) Sin" e, y A) Sin" e7 Pri-ate Su* objeto5Mou)eMo-e6Rndice A) Inte"er,S botn A) Inte"er, mays A) Inte"er, x A) Sin" e, y A) Sin" e7

La sinta(is del evento 'ouse'ove consta de las siguientes partes: Parte De)cripci3n objeto 7na e(presin de ob$eto que da como resultado un ob$eto de la lista 0plicable a! ndice 7n entero que identifica de manera nica a un control si est en una matriz de controles! botn 7n entero que corresponde al estado de los botones del mouse en el cual un bit se establece si el botn est presionado! El argumento botn es un campo de bit con los bits correspondientes al botn primario 5bit K6, al botn secundario 5bit ,6 al botn central 5bit -6! Estos bits corresponden a los valores ,, - =, respectivamente! :ndica el estado completo de los botones del mouse2 alguno, todos o ninguno de estos tres bits puede estar establecido, lo que indica que algunos, todos o ninguno de los botones est presionado! mays 7n entero que corresponde al estado de las teclas '0OX3, )A1L 0LA! 7n bit est establecido si la tecla est presionada! El argumento mays es un campo de bits con los bits menos significativos correspondientes a la tecla '0OX3 5bit K6, )A1L 5bit ,6 0LA 5bit - 6! Estos bits corresponden a los valores ,, =, respectivamente! El argumento mays indica el estado de estas teclas! 0lguno, todos o ninguno de los bits puede estar establecido, lo que indica que alguna, todas o ninguna de las teclas est presionada! Por e$emplo, si se presionaron las teclas )A1L 0LA, el valor de shift sera N! x, y 7n nmero que especifica la ubicacin actual del puntero del mouse! Los valores x e y siempre se e(presan en t"rminos del sistema de coordenadas establecido por las propiedades Sca e!ei"#t, Sca e$idt#, Sca eLe%t Sca eTop del ob$eto! Co'entario) El evento 'ouse'ove se genera continuamente a medida que el puntero del mouse se mueve por los ob$etos! 0 menos que otro ob$eto ha a capturado el mouse, un ob$eto reconoce un evento 'ouse'ove siempre que la posicin del mouse est" dentro de sus bordes! E,e'p o de e-ento Mou)eMo-e Este e$emplo muestra una aplicacin de dibu$o simple! El procedimiento de evento 'ouse*o4n funciona con un procedimiento 'ouse'ove relacionado para activar el dibu$o cuando est presionado cualquier botn del mouse! El procedimiento de evento 'ouse7p desactiva el dibu$o! Para probar este e$emplo, pegue el cdigo en la seccin *eclaraciones de un formulario, despu"s presione +L, haga clic en el formulario mueva el mouse mientras est presionado el botn del mismo! *im PaintHo4 0s &oolean > *eclara una variable! Private 3ub +orm;'ouse*o4n 5&utton 0s :nteger, 3hift 0s :nteger, I 0s 3ingle, O 0s 3ingle6 PaintHo4 ? Arue > 0ctiva el dibu$o! End 3ub Private 3ub +orm;'ouse7p 5&utton 0s :nteger, I 0s 3ingle, O 0s 3ingle6 PaintHo4 ? +alse > *esactiva el dibu$o! End 3ub

Private 3ub +orm;'ouse'ove 5&utton 0s :nteger, 3hift 0s :nteger, I 0s 3ingle, O 0s 3ingle6 :f PaintHo4 Ahen P3et 5I, O6 > *ibu$a un punto! End :f End 3ub Private 3ub +orm;Load 56 *ra4Fidth ? ,K > 7tiliza un pincel ms ancho! +ore)olor ? 1@&5K, K, -LL6 > Establece el color de dibu$o! End 3ub

13.2- (imer
0plicable a: )ontrol Aimer Dcurre cuando ha transcurrido un intervalo preestablecido para un control Ti'er! La frecuencia del intervalo se almacena en la propiedad Inter-a del control, que especifica el tiempo en milisegundos! Sintaxi) Pri-ate Su* objeto5Ti'er6Rndice A) Inte"erS7 La sinta(is del evento Aimer consta de las siguientes partes: Parte De)cripci3n objeto 7na e(presin de ob$eto que da como resultado un ob$eto de la lista 0plicable a! ndice 7n entero que identifica de manera nica a un control si est en una matriz de controles! Co'entario) 7tilice este procedimiento de evento para indicar a %isual &asic qu" hacer cada vez que se agote el intervalo de tiempo de un control Ti'er! )uando est" traba$ando con el evento Aimer: La propiedad Inter-a especifica el intervalo entre los eventos Aimer, en milisegundos! 3iempre que la propiedad Ena* ed del control Ti'er est" establecida a True la propiedad Inter-a sea ma or que K, el evento Aimer espera durante el periodo especificado en la propiedad Inter-a !
E,e'p o de e-ento Ti'er

Este e$emplo muestra un relo$ digital! Para probar este e$emplo, pegue el cdigo en la seccin *eclaraciones de un formulario que contenga un control La*e un control Ti'er , despu"s, presione +L!

Private 3ub +orm;Load 56 Aimer,!:nterval ? ,KKK End 3ub Private 3ub Aimer,;Aimer 56 Label,!)aption ? Aime End 3ub

> Establece el intervalo de Aimer!

> 0ctualiza la presentacin de la hora!

Este e$emplo mueve un control PictureBox por un formulario! Para probar este e$emplo, pegue el cdigo en la seccin *eclaraciones de un formulario que contenga un control Ti'er un control PictureBox , despu"s, presione +L! 3i desea obtener un efecto visual me$or puede asignar un mapa de bits al control PictureBox mediante la propiedad Picture! *im *eltaI, *eltaO 0s :nteger > *eclara variables! Private 3ub Aimer,;Aimer 56 Picture,!'ove Picture,!Left Q *eltaI, Picture,!Aop Q *eltaO :f Picture,!Left Y 3caleLeft Ahen *eltaI ? ,KK :f Picture,!Left Q Picture,!Fidth Z 3caleFidth Q 3caleLeft Ahen *eltaI ? J,KK End :f :f Picture,!Aop Y 3caleAop Ahen *eltaO ? ,KK :f Picture,!Aop Q Picture,!9eight Z 3cale9eight Q 3caleAop Ahen *eltaO ? J,KK End :f End 3ub Private 3ub +orm;Load 56 Aimer,!:nterval ? ,KKK > Establece el intervalo! *eltaI ? ,KK > :nicializa variables! *eltaO ? ,KK End 3ub

13.3- 4nload
0plicable a:

Db$eto +orm! Dcurre cuando un formulario est a punto de quitarse de la pantalla! )uando ese formulario se vuelve a cargar, el contenido de todos sus controles se reinicializa! Este evento se desencadena porque un usuario cierra el formulario mediante el comando Cerrar del men Contro o una instruccin Un oad!

Sintaxi) Pri-ate Su* objeto5Un oad6cancelar A) Inte"er7 La sinta(is del evento 7nload consta de las siguientes partes: Parte De)cripci3n objeto 7na e(presin de ob$eto que da como resultado un ob$eto de la lista 0plicable a! cancelar 7n entero que determina si el formulario se quita de la pantalla! 3i cancelar es K, el formulario se quita! Establecer cancelar a cualquier valor distinto de cero impide que el formulario se quite! Co'entario) Establecer cancelar a un valor distinto de cero impide que el formulario se quite, pero no detiene los dems eventos, como la salida del entorno operativo 'icrosoft Findo4s! 7tilice el evento [uer 7nload para detener la salida de Findo4s! 7tilice un procedimiento de evento 7nload para comprobar si el formulario se debe descargar o para especificar acciones que desea que tengan lugar cuando se descargue el formulario! Aambi"n puede incluir cualquier cdigo de validacin a nivel del formulario que pueda necesitar para cerrar el formulario o guardar los datos en un archivo! El evento [uer 7nload ocurre antes que el evento 7nload! El evento 7nload ocurre antes que el evento Aerminate! El evento 7nload puede estar causado por la utilizacin de la instruccin Un oad o porque el usuario eli$a el comando Cerrar del men Contro del formulario, salga de la aplicacin con el botn .ina i9ar tarea de la Lista de tareas, o salga del entorno operativo 'icrosoft Findo4s mientras la aplicacin se est e$ecutando! E,e'p o de e-ento Un oad Este e$emplo muestra un procedimiento simple para cerrar un formulario mientras se avisa al usuario con varios cuadros de mensa$es! En una aplicacin real, puede agregar llamadas a procedimientos Su* de propsito general que emulen el proceso de los comandos Sa ir, +uardar +uardar co'o del men Arc#i-o de %isual &asic! Para probar este e$emplo, pegue el cdigo en la seccin *eclaraciones de un formulario , despu"s, presione +L! 7na vez que se muestre el formulario, presione 0LAQ+= para cerrar el formulario! Private 3ub +orm;7nload 5)ancel 0s :nteger6 *im 'sg, 1esponse > *eclara variables! 'sg ? T\*esea guardar los datos antes de cerrar]T 1esponse ? 'sg&o(5'sg, vb[uestion Q vbOesHo)ancel, T*ilogo )errarT6 3elect )ase 1esponse )ase vb)ancel > Ho se permite cerrar! )ancel ? J, 'sg ? T3e ha cancelado el comando!T )ase vbOes > :ntroduzca cdigo para guardar los datos aqu!

'sg ? T*atos guardados!T> )ase vbHo 'sg ? T*atos no guardados!T End 3elect 'sg&o( 'sg, vbDEDnl , T)onfirmacinT > 'ostrar mensa$e! End 3ub

13.15- 6uery4nload
0plicable a:

Db$eto +orm )oleccin +orms, Db$eto '*:+orm Dcurre antes de que se cierre un formulario o una aplicacin! Sintaxi) Pri-ate Su* .or'54ueryUn oad6cancelar A) Inte"er, modo_descarga A) Inte"er7 Pri-ate Su* MDI.or'54ueryUn oad6cancelar A) Inte"er, modo_descarga A) Inte"er7 La sinta(is del evento [uer 7nload consta de las siguientes partes: Parte De)cripci3n cancelar 7n entero! Establecer este argumento a cualquier valor distinto de K detiene el evento [uer 7nload en todos los formularios cargados detiene el cierre del formulario de la aplicacin! modo_descarga 7n valor o una constante que indica la causa del evento [uer 7nload, tal como se describe en %alores que se pueden obtener! (a ore) :ue )e pueden o*tener El argumento modo_descarga devuelve los siguientes valores: Con)tante (a or De)cripci3n -*.or'Contro Menu K El usuario eligi el comando Cerrar del men Contro del formulario! -*.or'Code , 3e invoc la instruccin Un oad desde el cdigo! (*App$indo&) La sesin actual del entorno operativo 'icrosoft Findo4s est inalizando! -*AppTa)2Mana"er < El 0dministrador de tareas de 'icrosoft Findo4s est cerrando la aplicacin! -*.or'MDI.or' = 7n formulario '*: secundario se est cerrando porque el formulario '*: tambi"n se est cerrando! Co'entario)

Hormalmente este evento se utiliza para asegurarse de que no ha tareas sin finalizar en los formularios incluidos en una aplicacin antes de que esa aplicacin se cierre! Por e$emplo, si un usuario no ha guardado todava algunos datos nuevos de cualquier formulario, su aplicacin puede pedir al usuario que los guarde! )uando una aplicacin se cierra, puede utilizar los procedimientos de evento [uer 7nload o 7nload para establecer la propiedad Cance a True, deteniendo el proceso de cierre! 3in embargo, el evento [uer 7nload ocurre en todos los formularios antes de que se descargue ninguno de ellos el evento 7nload ocurre conforme se descarga cada formulario! E,e'p o de e-ento 4ueryUn oad En este e$emplo, al cerrar un formulario se consulta al operador si realmente quiere salir o no! Aambi"n se chequea si est saliendo del formulario o de toda la aplicacin! > Pegar en la seccin *eclaraciones de +orm,! Private 3ub +orm;[uer 7nload 5)ancel 0s :nteger, 7nload'ode 0s :nteger6 *im 'sg > *eclara la variable! :f 7nload'ode Z K Ahen > 3i sale de la aplicacin! 'sg ? T\1ealmente desea salir de la aplicacin]T Else > 3i slo se cierra el formulario! 'sg ? T\1ealmente desea cerrar el formulario]T End :f > 3i el usuario hace clic en el botn Ho, se detiene [uer 7nload! :f 'sg&o(5'sg, vb[uestion Q vbOesHo, 'e!)aption6 ? vbHo Ahen )ancel ? Arue End 3ub

13.11- "alidate
0plicable a:

)ontrol *ata 3e produce antes de que otro registro se convierta en el registro actual, antes del m"todo Update 5e(cepto cuando se guardan los datos con el m"todo UpdateRecord6 antes de una operacin De ete, Un oad o C o)e! Sintaxi) Pri-ate Su* objeto5(a idate 6Rndice A) Inte"er,S accin A) Inte"er, guardar A) Inte"er7 La sinta(is del evento %alidate consta de las siguientes partes: Parte De)cripci3n objeto 7na e(presin de ob$eto cu o resultado es un ob$eto de la lista 0plicable a

ndice :dentifica el control si se encuentra en una matriz de controles accin 7n entero que indica la operacin que provoca el evento, como se describe en %alores guardar 7na e(presin booleana que especifica si los datos enlazados han cambiado, como se describe en %alores (a ore) Los valores de accin son: Con)tante (a or -*DataActionCance K -*DataActionMo-e.ir)t , -*DataActionMo-ePre-iou) -*DataActionMo-eNext < -*DataActionMo-eLa)t = -*DataActionAddNe& L -*DataActionUpdate N -*DataActionDe ete V -*DataAction.ind ^ -*DataActionBoo2'ar2 M -*DataActionC o)e ,K -*DataActionUn oad ,,

De)cripci3n )ancela la operacin al salir de Su* '"todo Mo-e.ir)t '"todo Mo-ePre-iou) '"todo Mo-eNext '"todo Mo-eLa)t '"todo AddNe& Dperacin Update 5no UpdateRecord6 '"todo De ete '"todo .ind 3e ha establecido la propiedad Boo2'ar2 El m"todo C o)e 3e est descargando el formulario

Los valores de guardar son: (a or De)cripci3n True Los datos enlazados han cambiado .a )e Los datos enlazados no han cambiado Co'entario) El argumento guardar indica inicialmente si los datos enlazados han cambiado! Este argumento puede ser .a )e si los datos del bfer de copia han cambiado! 3i guardar es True cuando este evento termina, se invocan los m"todos Edit UpdateRecord! El m"todo UpdateRecord slo guarda los datos de controles enlazados o del bfer de copia en los que la propiedad DataC#an"ed sea True! Este evento se produce incluso aunque no se ha an modificado los datos de los controles enlazados aunque no e(istan controles enlazados! Puede utilizar este evento para cambiar valores actualizar datos! Aambi"n puede decidir guardar los datos o detener cualquier accin que est" provocando el evento sustituirla por otra accin diferente! Puede cambiar el argumento accin para cambiar una accin por otra! Puede cambiar los diversos m"todos 'ove el m"todo AddNe&, que se pueden intercambiar libremente 5cualquier 'ove en AddNe&, cualquier 'ove en cualquier otro 'ove o AddNe& en cualquier 'ove6! )uando utilice AddNe&, puede utilizar Mo-eNext despu"s e$ecutar otro AddNe& para e(aminar la propiedad EditMode determinar si ha una operacin Edit o AddNe& en curso! El intento de sustituir AddNe& o una accin 'ove en cualquier otra

accin se pasa por alto o genera un error interceptable! 3i se establece accin a K, se puede detener cualquier accin! *entro del cdigo de este evento puede comprobar los datos de cada control enlazado en el que DataC#an"ed sea True! *espu"s puede establecer DataC#an"ed a .a )e para evitar guardar dichos datos en la base de datos! *urante este evento no puede utilizar ningn m"todo 5como Mo-eNext6 en el ob$eto Record)et sub acente!

E$emplo de la propiedad 7ata&+an,ed y del evento "alidate


Este e$emplo ilustra una validacin de datos sencilla! En la tabla 0uthors de la base de datos &iblio!mdb ha dos campos: 0u;:* 0uthor! )omo el valor de 0u;:* se utiliza para identificar de forma nica al autor, este valor no se debe cambiar! El e$emplo no permite que se modifique el campo 0u;:*, que est enlazado a Ae(t,! Private 3ub *ata,;%alidate 50ction 0s :nteger, 3ave 0s :nteger6 :f Ae(t,!*ata)hanged Ahen > )omprueba si los datos han cambiado! 'sg&o( THo puede cambiar el nmero de :d!T Ae(t,!*ata)hanged ? +alse > Ho guarda los datos modificados! End :f ;;; End 3ub

)4- 23todos m1s importa tes de los co troles est1 dares. 14.1- 8dd9tem
0plicable a:

)ontrol)ombo&o(, )ontrolList&o( 0grega un elemento a un control Li)tBox o Co'*oBox; Sintaxi) objeto;AddIte' elemento, ndice La sinta(is del m"todo AddIte' consta de las siguientes partes: Parte De)cripci3n objeto 1equerido! 7na e(presin de ob$eto cu o resultado es un ob$eto de la lista 0plicable a! Elemento 1equerido! e(presin de cadena que especifica el elemento que se va a agregar al ob$eto! ndice Dpcional! Entero que especifica la posicin dentro del ob$eto donde se insertan el elemento o la fila nuevos! Para el primer elemento de un control Li)tBox o Co'*oBox, ndice es K!

Co'entario) 3i se especifica un valor vlido para ndice, elemento se sita en dicha posicin dentro del objeto! 3i se omite ndice, elemento se agrega en la posicin que le corresponda dentro del orden apropiado 5si la propiedad Sorted es True6 o al final de la lista 5si Sorted es .a )e6! Los controles Li)tBox o Co'*oBox que estn enlazados a un control Data no aceptan el m"todo AddIte'!

E$emplo del mtodo 8dd9tem


Este e$emplo utiliza el m"todo AddIte' para agregar ,KK elementos a un cuadro de lista! Para probar este e$emplo, pegue el cdigo en la seccin *eclaraciones de un formulario con un control Li)tBox llamado List,, despu"s presione +L haga clic en el formulario! Private 3ub +orm;)licC 56 *im Entr , :, 'sg > *eclara variables! 'sg ? T9aga clic en 0ceptar para agregar ,KK elementos a su cuadro de lista!T 'sg&o( 'sg > 'uestra el mensa$e! +or : ? , Ao ,KK > )uenta de , a ,KK! Entr ? TEntrada T U : > )rea la entrada! List,!0dd:tem Entr > 0grega la entrada! He(t : 'sg ? T9aga clic en 0ceptar para quitar una de cada dos entradas!T 'sg&o( 'sg > 'uestra el mensa$e! +or : ? , Ao LK > *etermina cmo quitar List,!1emove:tem : > cada elemento He(t : 'sg ? T9aga clic en 0ceptar para quitar todos los elementos del cuadro de lista!T 'sg&o( 'sg > 'uestra el mensa$e! List,!)lear > Limpia el cuadro de lista! End 3ub

14.2- 8dd:e; <#b$eto =ecordset>


0plicable a:

Db$eto 1ecordset! )rea un nuevo registro para un ob$eto Record)et de tipo Aable o * naset! Sintaxi) recordset;AddNe&

El marcador de posicin del recordset es una variable de ob$eto que representa un ob$eto Record)et que se puede actualizar al que puede agregar un registro nuevo! Co'entario) 7tilice el m"todo AddNe& para crear agregar un nuevo registro en el ob$eto Record)et llamado por el recordset! Este m"todo establece los campos a los valores predeterminados si no se especifican valores predeterminados, establece los campos a Nu 5los valores predeterminados especificados pare el Record)et tipo Aable6! *espu"s de modificar el nuevo registro, utilice el m"todo Update para guardar los cambios agregar el registro al Record)et! Ho se producirn cambios en la base de datos hasta que no se utilice el m"todo Update! Precauci3n 3i e$ecuta un AddNe& a continuacin realiza una operacin que desplace otro registro sin usar Update, los cambios se perdern sin previo aviso! 0dems, si cierra el Record)et o finaliza el procedimiento que declara el Record)et o su ob$eto Data*a)e, el nuevo registro los cambios realizados se descartarn sin previo aviso! 3i no se ha desplazado hasta el ltimo registro de su Record)et, los registros agregados a las tablas sub acentes pueden incluirse, si se colocan ms all del registro activo! 3in embargo, si agrega un registro a un Record)et, el registro ser visible en el Record)et se incluir en la tabla sub acente donde estar visible para todos los nuevos ob$etos Record)et! La posicin del nuevo registro depende del tipo de Record)et: En un ob$eto Record)et tipo * naset, los registros se insertan al final del con$unto del Record)et, independientemente de las reglas de clasificacin u orden que estuvieran en vigor cuando se abri el Record)et! En un ob$eto Record)et tipo Aable en el que su propiedad Index se ha a establecido, los registros se insertan en el lugar adecuado dentro del orden definido! 3i no se ha establecido la propiedad Index, los nuevos registros se insertarn al final del Record)et! E,e'p o de '<todo AddNe& En este e$emplo se agrega un regisro nuevo a la tabla 0genda de la base de datos )lientes, tomando los datos desde un formulario que contiene < ca$as de te(to 5t(t)odigo, t(tHombre t(t*ireccion6 un botn para agregar los datos 5cmd0gregar6 Private 3ub cmd0gregar;)licC 56 *im 4sp as ForC3pace 8*imensiono las variables *im &ase as *atabase *im 0genda as 1ecordset

3et 4sp ? *bEngine!ForCspaces5K6 83eteo el espacio de traba$o 3et &ase ? 4sp!Dpen*atabase 5.)lientes!mdb/6 80bro la base de *atos 3et 0genda ? &asede*atos!Dpen1ecordset5.3ELE)A _ +1D' 0genda/6 80bro el 1ecordset 0genda!0ddHe4 0genda`)odigo ? t(t)odigo!Ae(t 0genda`*ireccion ? t(t*ireccion!Ae(t 0genda!Hombre ? t(tHombre!Ae(t 0genda!7pdate 0genda!)lose &ase!)lose Fsp!)lose End 3ub 80grego un registro en blanco 80signo los valores de las ca$as de te(to a los campos

8)ierro el 1ecordset 8)ierro la base de *atos 8)ierro el espacio de traba$o

14.3- &ancel4pdate <#b$eto =ecordset>


0plicanble a: Db$eto 1ecordset! )ancela todas las actualizaciones pendientes del ob$eto Record)et! Sintaxi) recordset;Cance Update tipo La sinta(is del m"todo Cance Update consta de las siguientes partes! Parte De)cripci3n recordset 7na variable de ob$eto que representa el ob$eto Record)et en el que se cancelan las actualizaciones pendientes! Tipo Dpcional! 7na constante que indica el tipo de actualizacin, como se especifica en %alores 5slo espacios de traba$o D*&)*irect6! Co'entario) El m"todo Cance Update cancela todas las actualizaciones pendientes a causa de una operacin Edit o AddNe&! Por e$emplo, si un usuario llama al m"todo Edit o AddNe& sin haber llamado anteriormente al m"todo Update, Cance Update cancelar todos los cambios efectuados despu"s de llamar a Edit o AddNe&!

E,e'p o de '<todo Cance Update 0l mismo e$emplo del Evento AddNe&, le agregamos la opcin de confirmar o volver para atrs la actualizacin al operador, segn la respuesta a una ca$a de mensa$es! Private 3ub cmd0gregar;)licC 56 *im 4sp as ForC3pace 8*imensiono las variables *im &ase as *atabase *im 0genda as 1ecordset 3et 4sp ? *bEngine!ForCspaces5K6 83eteo el espacio de traba$o 3et &ase ? 4sp!Dpen*atabase 5.)lientes!mdb/6 80bro la base de *atos 3et 0genda ? &asede*atos!Dpen1ecordset5.3ELE)A _ +1D' 0genda/6 80bro el 1ecordset 0genda!0ddHe4 0genda`)odigo ? t(t)odigo!Ae(t 0genda`*ireccion ? t(t*ireccion!Ae(t 0genda!Hombre ? t(tHombre!Ae(t 80grego un registro en blanco 80signo los valores de las ca$as de te(to a los campos

:f 'sg&o( 5T0grega el nuevo registro/, vbOesHo6 ? vbOes then 0genda!7pdate Else 0genda!)ancel7pdate End :f 0genda!)lose &ase!)lose Fsp!)lose End 3ub 8)ierro el 1ecordset 8)ierro la base de *atos 8)ierro el espacio de traba$o

14.4- &lear <&lipboard? &ombo )o@? 0ist )o@>


0plicable a: Db$eto )ontrol )ombo&o(, )ontrol List&o(J &orra el contenido de los controles Li)tBox o Co'*oBox! Sintaxi) objeto!C ear

El marcador de posicin objeto representa una e(presin de ob$eto cu o resultado es un ob$eto de la lista 0plicable a! Co'entario) Los controles Li)tBox o Co'*oBox que est"n enlazados a un control Data no aceptan el m"todo C ear! E,e'p o de '<todo C ear Este e$emplo utiliza el m"todo C ear para borrar todos los elementos de un cuadro de lista! Para probar este e$emplo, pegue el cdigo en la seccin *eclaraciones de un formulario con un control Li)tBox llamado List,, despu"s presione +L haga clic en el formulario! Private 3ub +orm;)licC 56 *im Entr , :, 'sg > *eclara variables! 'sg ? T9aga clic en 0ceptar para agregar ,KK elementos a su cuadro de lista!T 'sg&o( 'sg > 'uestra el mensa$e! +or : ? , Ao ,KK > )uenta de , a ,KK! Entr ? TEntrada T U : > )rea la entrada! List,!0dd:tem Entr > 0grega la entrada! He(t : 'sg ? T9aga clic en 0ceptar para quitar cualquier otra entrada!T 'sg&o( 'sg > 'uestra el mensa$e! +or : ? , Ao LK > *etermina cmo quitar List,!1emove:tem : > uno de cada dos He(t : > elementos! 'sg ? T9aga clic en 0ceptar para quitar todos los elementos del cuadro de lista!T 'sg&o( 'sg > 'uestra el mensa$e! List,!)lear > Limpia el cuadro de lista! End 3ub

14.%- &lose <#b$etos 7atabase? =ecordset o Aor-space>


0plicable a: Db$eto *atabase, Db$eto 1ecordset, Db$eto ForCspace!
)ierra un ob$eto *0D 5*ata 0ccess Db$ect6!

Sintaxi) objeto;C o)e

El marcador de posicin objeto es una variable de ob$eto que representa un ob$eto Data*a)e, Record)et o $or2)pace abierto! Co'entario) 3i el ob$eto Data*a)e, Record)et o $or2)pace llamado por objeto est cerrado cuando utiliza C o)e se produce un error en tiempo de e$ecucin! Precauci3n 3i sale de un procedimiento que declara ob$etos Data*a)e o Record)et la base de datos est" cerrada, los cambios no guardados se perdern, todas las transacciones pendientes se anularn se anularn todas las modificaciones pendientes de los datos! 3i intenta cerrar un ob$eto Connection o Data*a)e mientras ha algn ob$eto Record)et abierto, estos ob$etos Record)et se cerrarn las actualizaciones o modificaciones pendientes quedarn anuladas! 3i intenta cerrar un ob$eto $or2)pace mientras ha algn ob$eto Data*a)e abierto, los ob$etos Data*a)e se cerrarn, el cual cerrar sus ob$etos Record)et! La utilizacin del m"todo C o)e en un ob$eto Record)et original o duplicado no afecta al otro ob$eto Record)et! 7na alternativa al m"todo C o)e es establecer el valor de una variable de ob$eto a Not#in" 53et dbsAemp ? Hothing6! E,e'p o de '<todo C o)e 3on vlidos los e$emplos de los m"todos AddNe& *atabase 1ecordset6, Cance Update! 5donde se cierran ob$etos ForCspace,

14.'- &ls
0plicable a:
Db$eto +orm, )ontrol Picture&o(!

&orra los grficos

el te(to generados en tiempo de e$ecucin de los controles .or' o PictureBox!

Binta@is
objeto!C ) El marcador de posicin objeto representa una e(presin de ob$eto cu o resultado es un ob$eto de la lista 0plicable a! 3i se omite objeto, se supone que el objeto es el control .or' que tenga el enfoque!

&omentarios
C ) borra el te(to los grficos generados en tiempo de e$ecucin por instrucciones grficas de impresin! Los mapas de bits de fondo definidos mediante la propiedad Picture los controles colocados en un .or' en tiempo de dise#o no se ven afectados por C )! *espu"s de llamar a C ), las propiedades Current/ Current1 del objeto se restablecen a K! E,e'p o de '<todo C ) Este e$emplo utiliza el m"todo C ) para eliminar la informacin impresa de un formulario! Para probar este e$emplo, pegue el cdigo en la seccin *eclaraciones de un formulario, despu"s presione +L haga clic en el formulario! Private 3ub +orm;)licC 56 *im 'sg > *eclara variable! +ore)olor ? [&)olor5,L6 > Establece el color de primer plano a blanco! &acC)olor ? [&)olor5,6 > Establece el color de fondo a azul! 'sg ? TEsta informacin se imprime en el fondo del formulario!T Print 'sg > :mprime el mensa$e en el formulario! 'sg ? T9aga clic en 0ceptar para borrar la informacin el patrn de fondo T 'sg ? 'sg U Tmostrado en el formulario!T 'sg&o( 'sg > 'uestra el mensa$e! )ls > &orra el fondo del formulario! End 3ub

14.1- &ompact7atabase <#b$eto 7)En,ine>


0plicable a: Db$eto *&Engine )opia, compacta ofrece la posibilidad de cambiar la versin, la secuencia de ordenacin 5slo espacio de traba$o 'icrosoft Pet6! la codificacin!

Binta@is
DBEn"ine;Co'pactData*a)e antiguabasededatos= nuevabasededatos= escenario= opciones, contrasea La sinta(is del m"todo Co'pactData*a)e tiene los siguientes argumentos: -Antiguabasededatos: 7na Strin" que identifica una base de datos e(istente cerrada! Puede ser una ruta completa un nombre de archivo, como T):adb,!mdbT! 3i el nombre de archivo tiene una e(tensin, deber

especificarla! 3i su red lo admite, tambi"n puede especificar una ruta de red, como Taaserver,ashare,adir,adb,!mdbT! -nuevabasededatos: 7n tipo de datos Strin" que es la ruta completa de la base de datos compactada que va a crear! Aambi"n puede especificar una ruta de acceso de red al igual que con antiguabasededatos! Ho puede usar el argumento nuevabasededatos para especificar el mismo archivo de base de datos que antiguabasededatos -Escenario: Dpcional! 7n tipo de datos (ariant que es una e(presin de cadena que se utiliza para especificar la secuencia de ordenacin para crear nuevabasededatos, como se especifica en Dpciones! 3i omite este argumento, el escenario de la nuevabasededatos ser el mismo que el de la antiguabasededatos! Aambi"n puede crear una contrase#a para nuevabasededatos concatenando la cadena de la contrase#a 5que comienza con T2p4d?T6 con una constante del argumento escenario, como este: dbLang3panish U T2p4d?Hueva)ontrase#aT 3i desea utilizar el mismo escenario como antiguabasededatos 5el valor predeterminado6, pero especificar una contrase#a nueva, simplemente escriba una contrase#a en escenario: T2p4d?Hueva)ontrase#aT opciones Dpcional! 7n valor entero que indica una o ms opciones, segn se especifica en Dpciones! Puede combinar opciones sumando las correspondientes constantes! -Contrasea: Dpcional! 7n tipo de datos (ariant que es una e(presin de cadena que contiene una contrase#a, si la base de datos est protegida con contrase#a! La cadena T2p4d?T debe preceder a la propia contrase#a! 3i inclu e una valor de contrase#a en escenario, este valor se ignora! Puede utilizar una de las siguientes constantes en el argumento opciones para especificar si desea o no codificar la base de datos mientras se compacta! Con)tante De)cripci3n d*Encrypt )odifica la base de datos durante la compactacin! D*Decrypt *escodifica la base de datos durante la compactacin! 3i omite una constante de codificacin o si inclu e a la vez d*Decrypt d*Encrypt, nuevabasededatos tendr la misma codificacin que antiguabasededatos Puede usar una de las siguientes constantes en el argumento opciones para especificar la versin del formato de los datos para la base de datos compactada! Esta constante afecta slo a la versin del formato de datos de nuevabasededatos no afecta a la versin de ninguno de los ob$etos definidos por 'icrosoft 0ccess, como formularios e informes! Con)tante De)cripci3n d*(er)ion1> )rea una base de datos que utiliza el motor de base de datos 'icrosoft Pet versin ,!K durante la compactacin! D*(er)ion11 )rea una base de datos que utiliza el motor de base de datos 'icrosoft Pet versin ,!, durante la compactacin! D*(er)ion0> )rea una base de datos que utiliza el motor de base de datos 'icrosoft Pet versin -!K durante la compactacin! D*(er)ion?> )rea una base de datos que utiliza el motor de base de datos 'icrosoft Pet versin <!K 5compatible con la versin <!L6 durante la compactacin!

3lo puede especificar una constante de versin! 3i omite una constante de versin, nuevabasededatos tendr la misma versin que antiguabasededatos! 3lo puede compactar nuevabasededatos a una versin igual o posterior a la de antiguabasededatos Co'entario) 0l cambiar datos de una base de datos, el archivo de base de datos puede fragmentarse utilizar ms espacio en disco del necesario! 1egularmente, puede usar el m"todo Co'pactData*a)e en la base de datos para desfragmentar el archivo de base de datos! La base de datos compactada suele ser ms peque#a e$ecutarse con ms rapidez! Aambi"n puede cambiar la secuencia de ordenacin, la codificacin o la versin del formato de datos, mientras copia compacta la base de datos! Aiene que cerrar antiguabasededatos antes de compactarla! En un entorno multiusuario, los dems usuarios no pueden tener abierta antiguabasededatos mientras usted la compacta! 3i antiguabasededatos no est cerrada o no se encuentra disponible para su uso e(clusivo, se producir un error! Puesto que Co'pactData*a)e crea una copia de la base de datos, deber disponer de espacio suficiente en disco para la base de datos original la duplicada! La operacin de compactacin fracasar si no ha suficiente espacio disponible en disco! La base de datos duplicada nuevabasededatos no tiene por qu" estar en el mismo disco que antiguabasededatos *espu"s de compactar una base de datos, puede eliminar el archivo antiguabasededatos cambiar el nombre del archivo compactado nuevabasededatos por el nombre del archivo original! El m"todo Co'pactData*a)e copia todos los datos valores de permisos de seguridad de la base de datos especificada en antiguabasededatos a la base de datos especificada en nuevabasededatos! 3i utiliza el m"todo Co'pactData*a)e para convertir una base de datos versin ,!x a una versin -!L o <!x, solamente las aplicaciones que utilizan las versiones de 'icrosoft Pet -!L o <!x pueden abrir la base de datos convertida! Precauci3n *ebido a que el m"todo Co'pactData*a)e no convertir ob$etos 'icrosoft 0ccess, no es recomendable utilizar Co'pactData*a)e para convertir una base de datos que contenga dichos ob$etos! Para convertir una base de datos que contenga ob$etos 'icrosoft 0ccess, en el men !erra'ienta), eli$a Uti idade) de a *a)e de dato) despu"s haga clic en Con-ertir *a)e de dato)!

E$emplo de mtodo &ompact7atabase


Este e$emplo utiliza el m"todo Co'pactData*a)e compactar la base de *atos )lientes!mdb! 3ub )ompact*atabaseI56 *&Engine!)ompact*atabase T)lientes!mdbT, .)ompact!mdbT End 3ub

14.2- 7elete <#b$eto =ecordset>


0plicable a:

Db$eto 1ecordset!

Db$etos Record)et: elimina el registro activo de un ob$eto Record)et de tipo * naset o Aable! Para espacios de traba$o D*&)*irect, el tipo de controlador determina si los ob$etos Record)et se pueden actualizar , por tanto, admiten el m"todo De ete!

Sintaxi) recordset;De ete La sinta(is del m"todo De ete utiliza los siguientes argumentos! Ar"u'ento) De)cripci3n recordset 7na variable de ob$eto que identifica un ob$eto Record)et de tipo * naset o Aable abierto, que contiene el registro que desea eliminar!

&omentarios
Puede utilizar el m"todo De ete para eliminar un registro activo de un ob$eto Record)et; Record)et) 7n ob$eto Record)et debe contener un registro activo antes de que utilice el m"todo De ete2 en caso contrario se produce un error en tiempo de e$ecucin! En ob$etos Record)et, De ete elimina el registro activo lo hace inaccesible! 0unque no pueda modificarlo o utilizarlo, el registro eliminado permanecer activo! 3in embargo, una vez que se desplace a otro registro no podr volver a convertir en activo el registro eliminado! Las referencias subsiguientes a un registro eliminado en un Record)et no son vlidas producen un error! 3i la tabla base es la tabla principal en una relacin de eliminacin de cascada, al eliminar el registro activo tambi"n se eliminarn uno o ms registros de una tabla e(terna! Nota Para agregar, modificar o eliminar un registro, debe tener un ndice nico en el registro en el origen de datos de base! 3i no es as, se producir un error TPermiso denegadoT en la llamada al m"todo AddNe&, De ete o Edit en un espacio de traba$o 'icrosoft Pet!

E$emplo de mtodo 7elete


3e necesitan borrar todos los registros de la tabla 0genda 5dentro de la base de datos )lientes6 cu os cdigos de )lientes sean menores a ,K! Private 3ub cmd0gregar;)licC 56 *im 4sp as ForC3pace 8*imensiono las variables *im &ase as *atabase *im 0genda as 1ecordset 3et 4sp ? *bEngine!ForCspaces5K6 83eteo el espacio de traba$o

3et &ase ? 4sp!Dpen*atabase 5.)lientes!mdb/6 80bro la base de *atos 3et 0genda ? &asede*atos!Dpen1ecordset5.3ELE)A _ +1D' 0genda F9E1E 0genda!)odigo Y ,K/6 el 1ecordset
:f Hot 0genda!ED+ 0genda!'ove+irst *o Fhile Hot 0genda!ED+ 0genda!*elete 0genda!'oveHe(t Loop End :f 8si encontr" algn registro 8me muevo al primer registro 8mientras no sea fin de archivo 8elimino el registro 8me desplazo al siguiente registro

80bro

0genda!)lose &ase!)lose Fsp!)lose End 3ub

8)ierro el 1ecordset 8)ierro la base de *atos 8)ierro el espacio de traba$o

14.3- Edit <#b$eto =ecordset>


0plicable a : Db$eto 1ecordset! )opia el registro activo de un ob$eto Record)et al bfer de copia para su posterior edicin! Sintaxi) recordset;Edit El recordset representa el nombre de un ob$eto Record)et abierto registro que desea modificar! que se puede actualizar que contiene el

&omentarios
7na vez que utiliza el m"todo Edit, los cambios realizados en los campos del registro activo son copiados al bfer de copia! *espu"s de realizar los cambios deseados en el registro, utilice el m"todo Update para guardar los cambios! El registro activo permanece activo despu"s de utilizar el m"todo Edit!

Precauci3n 3i modifica un registro a continuacin pasa a otro registro sin utilizar antes Update, los cambios se perdern sin previo aviso! 0dems, si cierra recordset o finaliza el procedimiento que declara el Record)et o el ob$eto Data*a)e o Connection, el registro modificado se descarta sin previo aviso! La utilizacin de Edit produce un error ba$o las siguientes condiciones: Ho ha ningn registro activo! El ob$eto Data*a)e o Record)et se abri de slo lectura! Ho ha campos que se pueden actualizar en el registro! El ob$eto Data*a)e o Record)et se abri para uso en modo e(clusivo por otro usuario 5espacio de traba$o 'icrosoft Pet6! Nota Para agregar, modificar o eliminar un registro, debe tener un ndice nico en el registro en el origen de datos de base! 3i no es as, se producir un error TPermiso denegadoT en la llamada al m"todo AddNe&, De ete o Edit en un espacio de traba$o 'icrosoft Pet, o se producir un error T0rgumento no vlidoT el la llamada al m"todo Update en un espacio de traba$o D*&)*irect!

E$emplo de mtodo Edit


3e necesita asignar la zona , a todos los registros de la tabla 0genda 5dentro de la base de datos )lientes6 cu os cdigos de )lientes sean menores a -K! Private 3ub cmd0gregar;)licC 56 *im 4sp as ForC3pace 8*imensiono las variables *im &ase as *atabase *im 0genda as 1ecordset 3et 4sp ? *bEngine!ForCspaces5K6 83eteo el espacio de traba$o 3et &ase ? 4sp!Dpen*atabase 5.)lientes!mdb/6 80bro la base de *atos 3et 0genda ? &asede*atos!Dpen1ecordset5.3ELE)A _ +1D' 0genda F9E1E 0genda!)odigo Y -K/6 el 1ecordset
:f Hot 0genda!ED+ 0genda!'ove+irst *o Fhile Hot 0genda!ED+ 0genda!Edit 0genda`Gona ? , 0genda!7pdate 0genda!'oveHe(t Loop End :f 8si encontr" algn registro 8me muevo al primer registro 8mientras no sea fin de archivo 8Edito el registro 8me desplazo al siguiente registro

80bro

0genda!)lose &ase!)lose Fsp!)lose

8)ierro el 1ecordset 8)ierro la base de *atos 8)ierro el espacio de traba$o

End 3ub

14.15- Cide
0plicable a:

Db$eto +orm! Dculta un ob$eto .or' pero no lo descarga! Sintaxi) objeto!!ide El marcador de posicin objeto representa una e(presin de ob$eto cu o resultado es un ob$eto de la lista 0plicable a! 3i se omite objeto, se supone que objeto es el formulario que tenga el enfoque!

&omentarios
)uando se oculta un formulario, se quita de la pantalla su propiedad (i)i* e queda establecida a .a )e! Los controles de un formulario oculto no son accesibles para el usuario, pero estn disponibles para la aplicacin de %isual &asic en e$ecucin para otros procesos que se est"n comunicando con la aplicacin mediante **E, as como para los eventos del control Ti'er! )uando se oculta un formulario, el usuario no puede interactuar con la aplicacin hasta que el cdigo del procedimiento de evento que ha provocado la ocultacin del formulario ha a terminado de e$ecutarse! 3i el formulario no est cargado cuando se llama al m"todo !ide, el m"todo !ide carga el formulario pero no lo presenta! E,e'p o de '<todo !ide Este e$emplo utiliza el m"todo !ide para ocultar un formulario! Para probar este e$emplo, pegue el cdigo en la seccin *eclaraciones de un formulario, despu"s presione +L haga clic en el formulario! Private 3ub +orm;)licC 56 *im 'sg > *eclara variable! 9ide > Dculta el formulario! 'sg ? T9aga clic en 0ceptar para que vuelva a aparecer el formulario!T 'sg&o( 'sg > 'uestra el mensa$e! 3ho4 > 'uestra de nuevo el formulario! End 3ub

14.11-Move!irst - Move0ast - Move:e@t D MovePrevious <#b$eto =ecordset>


0plicable a:

Db$eto 1ecordset! 'ueven al registro primero, ltimo, siguiente o anterior de un ob$eto Record)et activo! lo convierten en el registro

Binta@is
recordset;bMo-e.ir)t c Mo-eLa)t Rd*RunA)yncS c Mo-eNext c Mo-ePre-iou)d El marcador de posicin recordset es una variable de ob$eto que representa un ob$eto Record)et abierto!

&omentarios
Precauci3n 3i modifica el registro activo, utilice el m"todo Update para guardar los cambios antes de ir a otro registro! 3i va a otro registro sin actualizar, los cambios se perdern sin previo aviso! 0l abrir un Record)et, el primer registro est activo la propiedad BO. es .a )e! 3i el Record)et no contiene registros la propiedad BO. es True no habr ningn registro activo! 3i el primer o el ltimo registro est activo cuando utiliza Mo-e.ir)t o Mo-eLa)t, el registro activo no cambia! 3i utiliza Mo-ePre-iou) cuando el primer registro est activo, la propiedad BO. es True no habr ningn registro activo! 3i vuelve a utilizar Mo-ePre-iou) se producir un error BO. ser True! 3i utiliza Mo-eNext cuando el ltimo registro est activo, la propiedad EO. es True no habr ningn registro activo! 3i vuelve a utilizar Mo-eNext se producir un error EO. ser True! 3i recordset hace referencia a un ob$eto Record)et de tipo Aable 5slo espacios de traba$o 'icrosoft Pet6, el movimiento seguir el ndice activo! Puede establecer el ndice activo utilizando la propiedad Index! 3i no establece el ndice activo, el orden de los registros devueltos no estar definido! I'portante Puede utilizar el m"todo Mo-eLa)t para llenar completamente un ob$eto Record)et de tipo * naset o 3napshot para obtener el nmero de registros activos en el Record)et! 3in embargo, si utiliza Mo-eLa)t puede hacer ms lentas sus aplicaciones! 3lo debe utilizar Mo-eLa)t para obtener un total de registros si es absolutamente necesario obtener un total e(acto en un Record)et abierto recientemente! Ho puede utilizar los m"todos Mo-e.ir)t, Mo-eLa)t Mo-ePre-iou) en un Record)et de tipo +or4ardJonl ! Para mover la posicin del registro activo en un ob$eto Record)et un nmero especfico de registros hacia adelante o hacia atrs, utilice el m"todo Mo-e! E,e'p o de '<todo) Mo-e.ir)t= Mo-eLa)t= Mo-eNext= Mo-ePre-iou)

Para un e$emplo de uso de los m"todos Mo-e.ir)t Mo-eNext, mire el e$emplo del m"todo Edit! 3e necesita asignar la zona , a todos los registros de la tabla 0genda 5dentro de la base de datos )lientes6 cu os cdigos de )lientes sean menores a -K! Es necesario recorrer la tabla de atrs hacia adelante! Private 3ub cmd0gregar;)licC 56 *im 4sp as ForC3pace 8*imensiono las variables *im &ase as *atabase *im 0genda as 1ecordset 3et 4sp ? *bEngine!ForCspaces5K6 83eteo el espacio de traba$o 3et &ase ? 4sp!Dpen*atabase 5.)lientes!mdb/6 80bro la base de *atos 3et 0genda ? &asede*atos!Dpen1ecordset5.3ELE)A _ +1D' 0genda F9E1E 0genda!)odigo Y -K/6 el 1ecordset
:f Hot 0genda!ED+ 0genda!'oveLast *o Fhile Hot 0genda!&D+ 0genda!Edit 0genda`Gona ? , 0genda!7pdate 0genda!'ovePrevious Loop End :f 8si encontr" algn registro 8me muevo al ltimo registro 8mientras no sea principio de archivo 8Edito el registro 8me desplazo al registro anterior

80bro

0genda!)lose &ase!)lose Fsp!)lose End 3ub

8)ierro el 1ecordset 8)ierro la base de *atos 8)ierro el espacio de traba$o

14.12- #pen7atabase <#b$eto Aor-space>


0plicable a:

Db$eto *&Engine, Db$eto ForCspace! 0bre una base de datos especificada en un ob$eto $or2)pace que la representa! devuelve una referencia al ob$eto Data*a)e

Sintaxi) Set basededatos ? espaciodetrabajo;OpenData*a)e 6nombrebasededatos= opciones= slolectura= conexin7 La sinta(is del m"todo OpenData*a)e consta de las siguientes partes! Ar"u'ento De)cripci3n

basededatos espaciodetrabajo

7na variable de ob$eto que representa el ob$eto Data*a)e que va a abrir! Dpcional! 7na variable de ob$eto que representa el ob$eto $or2)pace e(istente que contendr la base de datos! 3i no inclu e un valor para espaciodetrabajo, OpenData*a)e utiliza el espacio de traba$o predeterminado! !ombrebasededatos 7n tipo de datos Strin" que es el nombre de un archivo de base de datos 'icrosoft Pet e(istente o el nombre del origen de datos 5*3H6 de un origen de datos D*&) e(istente! opciones Dpcional! 7n tipo de datos (ariant que establece varias opciones para la base de datos, como se especifica en %alores! slolectura Dpcional! 7n valor de tipo de datos (ariant 5subtipo Boo ean6 que es True si desea abrir la base de datos con acceso de slo lectura o .a )e 5predeterminado6 si desea abrir la base de datos con acceso de lecturaeescritura! conexin Dpcional! 7n tipo de datos (ariant 5subtipo Strin"6 que especifica informacin variada sobre la cone(in, inclu endo las contrase#as! (a ore) Para los espacios de traba$o 'icrosoft Pet, puede utilizar los siguientes valores para el argumento opciones: (a or De)cripci3n True 0bre la base de datos en modo e(clusivo! .a )e 5Predeterminado6 0bre la base de datos en modo compartido! Co'entario) )uando abre una base de datos, automticamente se agrega a la coleccin Data*a)e)! Estas son algunas consideraciones que debe aplicar cuando utilice nombrebasededatos: 3i hace referencia a una base de datos que a est abierta para acceso en modo e(clusivo por otro usuario, se produce un error! 3i no hace referencia a una base de datos e(istente, se produce un error! El argumento conexin se e(presa en dos partes: el tipo de base de datos, seguido por punto coma 526 los argumentos opcionales! Primero debe proporcionar el tipo de base de datos, como TD*&)2T o T+o(Pro -!L2T! 0 continuacin, os argumentos opcionales sin un orden concreto, separados por punto coma! 7no de los parmetros puede ser la contrase#a 5si ha alguna asignada6! Por e$emplo: T+o(Pro -!L2 p4d?micontrase#aT Para cerrar una base de datos , de este modo, quitar el ob$eto Data*a)e de la coleccin Data*a)e), utilice el m"todo C o)e en el ob$eto ! E,e'p o '<todo OpenData*a)e
Es vlido el mismo e$emplo utilizado para los m"todos Mo-e.ir)t= Mo-eLa)t= Mo-eNext= Mo-ePre-iou);

14.13- #pen=ecordset <#b$eto 7atabase>


0plicable a:

Db$eto *atabase! )rea un nuevo ob$eto Record)et lo a#ade a la coleccin Record)et)!

Sintaxi) Set variable ? objeto;OpenRecord)et 6origen= tipo= opciones= blo"uearmodificaciones7 La sinta(is del m"todo OpenRecord)et consta de las siguientes partes! Ar"u'ento De)cripci3n variable 7na variable de ob$eto que representa el ob$eto Record)et que desea abrir! #bjeto 7na variable de ob$eto que representa un ob$eto e(istente desde el que desea crear el ob$eto Record)et nuevo! #rigen 7n tipo de datos Strin" que especifica el origen de los registros para el nuevo Record)et! El origen puede ser un nombre de tabla, un nombre de consulta o una instruccin 3[L que devuelve registros! Tipo Dpcional! 7na constante que indica el tipo de ob$eto Record)et a abrir, como se especifica en %alores! #pciones Dpcional! 7na combinacin de constantes que especifican las caractersticas del ob$eto Record)et nuevo, como se especifica en %alores! $lo"uearmodificaciones Dpcional! 7na constante que determina el bloqueo para el ob$eto Record)et, como se especifica en %alores! (a ore) Puede utilizar una de las siguientes constantes para el argumento tipo! Con)tante De)cripci3n d*OpenTa* e 0bre un ob$eto Record)et de tipo Aable 5slo espacios de traba$o 'icrosoft Pet6! d*OpenDyna)et 0bre un ob$eto Record)et de tipo * naset 5actualizable6! D*OpenSnap)#ot 0bre un ob$eto Record)et de tipo 3napshot 5slo lectura6 D*Open.or&ardOn y 0bre un ob$eto Record)et de tipo +or4ardJonl ! Nota 3i abre un ob$eto Record)et en un espacio de traba$o 'icrosoft Pet no especifica un tipo, el m"todo OpenRecord)et crea una ob$eto Record)et de tipo Aable, si es posible! 3i especifica una tabla vinculada o una consulta, el m"todo OpenRecord)et crea un ob$eto Record)et!de tipo * naset! Puede utilizar una combinacin de las siguientes constantes para el argumento opciones: @D*AppendOn yA Permite al usuario ane(ar registros nuevos al ob$eto Record)et, pero impide la modificacin o eliminacin de registros e(istentes 5slo ob$etos Record)et de tipo * naset de 'icrosoft Pet6!

@D*SeeC#an"e)A @enera un error en tiempo de e$ecucin si otro usuario est cambiando los datos que usted est modificando!53lo en ob$etos Record)et de tipo 3napshot de 'icrosoft Pet6! Esto es til en aplicaciones donde varios usuarios tiene acceso de lecturaeescritura simultneo a los mismos datos! @D*Deny$riteA Previene que otros usuarios puedan modificar o agregar registros 5slo ob$etos Record)et de 'icrosoft Pet6! @D*DenyReadA Previene que otros usuarios puedan leer datos de una tabla 5slo ob$etos Record)et de tipo Aable de 'icrosoft Pet6! @D*.or&ardOn yA )rea un ob$eto Record)et de tipo +or4ardJonl 5slo ob$etos Record)et de tipo 3napshot de 'icrosoft Pet6! 3e proporciona slo para compatibilidad con versiones anteriores debe utilizar la constante d*Open.or&ardOn y en el argumento tipo en vez de utilizar esta opcin! @D*ReadOn y : Previene que otros usuarios puedan hacer cambios el ob$eto Record)et 5slo 'icrosoft Pet6! La constante d*ReadOn y en el argumento blo"uearmodificaciones reemplaza esta opcin, la cual se proporciona para compatibilidad con versiones anteriores! @d*Incon)i)tent : Permite actualizaciones inconsistentes 5slo ob$etos Record)et de tipo * naset de 'icrosoft Pet6! @D*Con)i)tent : Permite slo actualizaciones consistentes 5slo ob$etos Record)et de tipo * naset de 'icrosoft Pet6! Nota Las constantes d*Con)i)tent d*Incon)i)tent se e(clu en mutuamente el uso de ambos produce un error! Proporcionar un argumento blo"uearmodificaciones cuando el argumento opciones utiliza la constante d*ReadOn y tambi"n produce un error! Puede utilizar las siguientes constantes para el argumento blo"uearmodificaciones:! @d*ReadOn yA Previene que los usuarios hagan cambios al Record)et! Puede utilizar d*ReadOn y en el argumento opciones o en el argumento blo"uearmodificaciones, pero nunca en ambos! 3i lo utiliza en ambos argumentos, se produce un error en tiempo de e$ecucin! @D*Pe))i'i)ticA 7tiliza el bloqueo pesimista para determinar cmo se pueden hacer cambios al ob$eto Record)et en un entorno multiusuario! La pgina que contiene el registro que est modificando est bloqueada mientras utiliza el m"todo Edit 5predeterminado en espacios de traba$o 'icrosoft Pet6! @D*Opti'i)ticA 7tiliza el bloqueo optimista para determinar cmo se pueden hacer cambios al ob$eto Record)et en un entorno multiusuario! La pgina que contiene el registro que est modificando est bloqueada mientras se e$ecuta el m"todo Update! Co'entario) En un espacio de traba$o 'icrosoft Pet, si objeto hace referencia a un ob$eto 4ueryDe% o Record)et de tipo * naset o 3napshot o si origen hace referencia a una instruccin 3[L o un Ta* eDe% que representa una tabla ad$unta, no podr utilizar d*OpenTa* e para el argumento tipo si lo hace, se producir un error interceptable! 3i objeto hace referencia a un Record)et de tipo * naset o 3napshot, el Record)et nuevo es del mismo tipo objeto! 3i objeto hace referencia a un ob$eto Record)et de tipo Aable, el tipo del ob$eto nuevo es un ob$eto

Record)et de tipo * naset! Ho puede abrir ob$etos Record)et nuevos desde ob$etos Record)et de tipo +or4ardJonl ! 7tilice la constante d*SeeC#an"e) en espacio de traba$o 'icrosoft Pet si desea captar los cambios realizados mientras dos o ms usuarios estn modificando o eliminando el mismo registro! Por e$emplo, si dos usuarios empiezan a modificar el mismo registro, el primer usuario que e$ecute el m"todo Update consigue realizar la operacin! )uando el segundo usuario e$ecute el m"todo Update ocurre un error de tiempo de e$ecucin! *el mismo modo, si el segundo usuario intenta utilizar el m"todo De ete para eliminar un registro el primer usuario ha cambiado a el mismo, se produce un error de tiempo de e$ecucin! En general, si al usuario se le presenta este error mientras est actualizando, su cdigo debe actualizar el contenido de los campos leer los valores recientemente modificados! 3i se produce el error durante el proceso de eliminacin, el cdigo puede mostrar al usuario los nuevos datos del registro $unto con un mensa$e que indica que se han modificado recientemente los datos! En este momento, el cdigo puede solicitar una confirmacin de que el usuario desea an eliminar el registro! 0l cerrar un Record)et utilizando el m"todo C o)e, se eliminar automticamente de la coleccin Record)et)!

E$emplo del mtodo #pen=ecordset


Es vlido el mismo e$emplo utilizado para los m"todos Mo-e.ir)t= Mo-eLa)t= Mo-eNext= Mo-ePre-iou);

14.14- =emove9tem
0plicable a:

)ontrol )ombo&o(, )ontrol List&o(! [uita un elemento de un control Li)tBox o Co'*oBox! Ho acepta argumentos con nombre! Sintaxi) objeto;Re'o-eIte' ndice La sinta(is del m"todo Re'o-eIte' consta de las siguientes partes: Parte De)cripci3n objeto 1equerido! 7na e(presin de ob$eto cu o resultado es un ob$eto de la lista 0plicable a! ndice 1equerido! 7n entero que especifica la posicin dentro del ob$eto del elemento o la fila que se va a quitar! Para los primeros elementos de los controles Li)tBox o Co'*oBox, ndice es K! Co'entario) Los controles Li)tBox o Co'*oBox que estn enlazados a un control Data no aceptan el m"todo Re'o-eIte'!

E,e'p o de '<todo Re'o-eIte' Este e$emplo utiliza el m"todo Re'o-eIte' para quitar entradas de un cuadro de lista! Para probar este e$emplo, pegue el cdigo en la seccin *eclaraciones de un formulario que contenga un control Li)tBox llamado List,, despu"s presione +L haga clic en el formulario! Private 3ub +orm;)licC 56 *im Entr , :, 'sg > *eclara variables! 'sg ? T9aga clic en 0ceptar para agregar ,KK elementos al cuadro de lista!T 'sg&o( 'sg > 'uestra el mensa$e! +or : ? , Ao ,KK > )uenta de , a ,KK! Entr ? TEntrada T U : > )rea la entrada! List,!0dd:tem Entr > 0grega la entrada! He(t : 'sg ? T9aga clic en 0ceptar para quitar una de cada dos entradas!T 'sg&o( 'sg > 'uestra el mensa$e! +or : ? , Ao LK > *etermina cmo quitar List,!1emove:tem : > uno de cada dos He(t : > elementos! 'sg ? T9aga clic en 0ceptar para quitar todos los elementos del cuadro de lista!T 'sg&o( 'sg > 'uestra el mensa$e! List,!)lear > &orra el cuadro de lista! End 3ub

14.1%- =epair7atabase <#b$eto 7)En,ine>


0plicable a:

Db$eto *&Engine! :ntenta reparar una base de datos da#ada que accede a base de datos 'icrosoft Pet! Sintaxi) DBEn"ine;RepairData*a)e nombrebasededatos El argumento nombrebasededatos representa un tipo de datos Strin" que es la ruta de acceso el nombre de un archivo de base de datos del motor 'icrosoft Pet e(istente! 3i se omite la ruta, slo se buscar en el directorio activo! Co'entario)

*ebe cerrar la base de datos especificada por nombrebasededatos antes de repararla! En un entorno multiusuario, los dems usuarios no podrn tener abierto nombrebasededatos mientras usted la repara! 3i no est cerrado nombrebasededatos o no est disponible para uso e(clusivo, se producir un error! Este m"todo intenta reparar una base de datos marcada como posiblemente da#ada por una operacin de escritura incompleta! Esto puede ocurrir si una aplicacin que utiliza el motor de base de datos 'icrosoft Pet termina inesperadamente debido a un corte en el suministro el"ctrico o un problema de hard4are! La base de datos no se marcar como posiblemente da#ada si utiliza el m"todo C o)e o si sale de la aplicacin de una manera normal! El m"todo RepairData*a)e tambi"n intenta validar todas las tablas del sistema todos los ndices! 3e descartan los datos que no se puedan reparar! 3i no se puede reparar la base de datos, se produce un error interceptable! )uando intente abrir o compactar una base de datos da#ada, normalmente se producir un error interceptable! En algunas situaciones, sin embargo, puede que no se detecte una base de datos da#ada no se produzca ningn error! Es conveniente ofrecer a los usuarios un m"todo de e$ecutar el m"todo RepairData*a)e en su aplicacin, si la base de datos se comporta de manera impredecible! 0lgunos tipos de bases de datos se pueden da#ar si un usuario termina una aplicacin sin cerrar los ob$etos Data*a)e o Record)et el motor de base de datos 'icrosoft Pet, 'icrosoft Findo4s no tienen la oportunidad de vaciar las memorias de cach" de datos! Para evitar que se da#en las bases de datos, establezca procedimientos para cerrar las aplicaciones apagar los sistemas que aseguren que todas las pginas de la memoria cach" estn guardadas en la base de datos! En algunos casos, puede que sean necesarias fuentes de alimentacin ininterrumpida para evitar p"rdidas de datos por las fluctuaciones del suministro el"ctrico! Nota *espu"s de reparar una base de datos, tambi"n es conveniente compactar la misma utilizando el m"todo Co'pactData*a)e para defragmentar el archivo recuperar espacio en disco!

E$emplo del mtodo =epair7atabase


Este e$emplo intenta reparar la base de datos llamada Heptuno!mdb! 3ub 1epair*atabaseI56 *im err&ucle 0s Error :f 'sg&o(5T\*esea reparar la base de datos Heptuno]T, vbOesHo6 ? vbOes Ahen *&Engine!1epair*atabase THeptuno!mdbT 'sg&o( Tf+in del procedimiento reparar`T End :f End 3ub

14.1'- Bet!ocus

0plicable a )ontrol )hecC&o(, )ontrol )ombo&o(, )ontrol )ommand&utton, Db$eto +orm )ontroles 93croll&ar %3croll&ar, )ontrol List&o()ontrol Dption&utton, )ontrol Picture&o(, )ontrol Ae(t&o(! 'ueve el en%o:ue al control o formulario especificado!

Binta@is
objeto;Set.ocu) El marcador de posicin objeto representa una expre)i3n de o*,eto que da como resultado un ob$eto de la lista 0plicable a! Co'entario) El ob$eto debe ser un ob$eto .or' o un control que pueda recibir el enfoque! *espu"s de invocar el m"todo Set.ocu), cualquier entrada del usuario se dirige al formulario o al control especificado! El enfoque slo se puede mover a un formulario o un control visible! )omo un formulario los controles de un formulario no son visibles hasta que el evento Load del formulario ha terminado, no puede usar en su propio evento Load el m"todo Set.ocu) para mover el enfoque al formulario que se est cargando a menos que use primero el m"todo S#o& para mostrar el formulario antes de que el procedimiento de evento +orm;Load ha a terminado! Aampoco puede mover el enfoque a un formulario o un control si su propiedad Ena* ed es .a )e! 3i la propiedad Ena* ed se ha establecido a .a )e en tie'po de di)eBo, primero debe establecerla a True antes de poder recibir el enfoque mediante el m"todo Set.ocu)!

E$emplo del mtodo Bet!ocus


0l hacer clicC en un botn de comando, setea el foco a la ca$a de te(to t(t)odigo Private 3ub cmd,;)licC56 A(t)odigo!3etfocus End 3ub

14.11- B+o;
0plicable a: Db$eto +orm!
Sintaxi)

objeto;S#o& estilo% formulario_propietario

La sinta(is del m"todo S#o& consta de las siguientes partes: Parte De)cripci3n objeto Dpcional! 7na e(presin de ob$eto cu o resultado es un ob$eto de la lista 0plicable a! 3i se omite objeto, se supone que objeto es el formulario asociado con el mdulo de formulario activo estilo Dpcional! 7n entero que determina si el formulario es modal o no modal! 3i estilo es K, el formulario es no modal2 si estilo es ,, el formulario es modal! formulario_propietario Dpcional! 7na e(presin de cadena que especifica el componente que TposeeT el formulario que se muestra! Para los formularios estndar de %isual &asic, utilice la palabra clave Me! Co'entario) 3i el formulario especificado no est cargado cuando se invoca el m"todo S#o&, %isual &asic lo carga automticamente! )uando S#o& presenta un formulario no modal, contina con la e$ecucin del cdigo que ha a a continuacin! )uando S#o& presenta un formulario modal, el cdigo que ha a continuacin no se e$ecuta hasta que el formulario se oculta o se descarga! )uando S#o& presenta un formulario modal, no ha entradas 5de teclado o del mouse6 e(cepto sobre los ob$etos del formulario modal! El programa debe ocultar o descargar los formularios modales 5normalmente como respuesta a alguna accin del usuario6 antes de que pueda producirse la entrada en otro formulario! 0unque los dems formularios de la aplicacin estn deshabilitados cuando se presenta un formulario modal, los de las dems aplicaciones no lo estn! El formulario inicial de una aplicacin se muestra automticamente despu"s de invocar su evento Load! E,e'p o de '<todo S#o& Este e$emplo utiliza el m"todo S#o& para mostrar un formulario oculto! Para probar este e$emplo, pegue el cdigo en la seccin *eclaraciones de un formulario despu"s presione +L haga clic en el formulario! Private 3ub +orm;)licC 56 *im 'sg > *eclara variable! 9ide > Dculta el formulario! 'sg ? T9aga clic en 0ceptar para que vuelva a aparecer el formulario!T 'sg&o( 'sg > 'uestra el mensa$e! 3ho4 > 'uestra de nuevo el formulario! End 3ub

14.12- 4pdate <#b$eto recordset>


0plicable a Db$eto 1ecordset! @uarda el contenido del bfer de copia en un ob$eto Record)et de tipo * naset o Aable especificado!

Binta@is
recordset;Update 6tipo, obligar 7 La sinta(is del m"todo Update tiene las siguientes partes! Parte De)cripci3n &ecordset 7na variable de ob$eto que representa un ob$eto Record)et abierto que se puede actualizar! Tipo Dpcional! 7na constante que indica el tipo de actualizacin, como se especifica en %alores 5slo espacios de traba$o D*&)*irect6! #bligar Dpcional! 7n valor de tipo Boo ean que indica si se pueden o no obligar los cambios en la base de datos, sin tener en cuenta si los datos base se han cambiado por otro usuario desde la llamada al m"todo AddNe&, De ete o Edit! 3i es True, los cambios se fuerzan los cambios hechos por otros usuarios se sobrescriben! 3i es .a )e 5predeterminado6, los cambios hechos por otros usuarios mientras la actualizacin est pendiente provocarn que falle la actualizacin para aquellos cambios conflictivos!

&omentarios
7tilice Update para guardar el registro activo los cambios que ha a efectuado en "l!

Precauci3n Los cambios realizados en el registro activo se perdern si: 7tiliza el m"todo Edit o AddNe& a continuacin, pasa a otro registro sin actualizarlo previamente mediante Update! 7tiliza Edit o AddNe& , a continuacin, vuelve a usar Edit o AddNe& sin utilizar previamente Update! )ierra el con$unto de registros a los que hace referencia recordset sin utilizar primero Update! )ancela la operacin Edit utilizando el m"todo Cance Update! Para modificar un registro, utilice el m"todo Edit para copiar el contenido del registro activo al bfer de copia! 3i no utiliza Edit en primer lugar, se producir un error cuando utilice Update o intente cambiar el valor de un campo!

En un espacio de traba$o 'icrosoft Pet, cuando el ob$eto Record)et de la propiedad Loc2Edit) establecida como True 5bloqueo pesimista6 en un entorno multiusuario, el registro permanecer bloqueado desde el momento en que se utiliza Edit hasta que se e$ecuta el m"todo Update o se cancele la edicin! 3i la configuracin de la propiedad Loc2Edit) es .a )e 5bloqueo optimista6, el registro se bloquea se compara con el registro previamente modificado $usto antes de se actualizado en la base de datos! 3i ha cambiado el registro desde que utiliz el m"todo Edit, la operacin Update falla!! Para que la operacin Update contine con los cambios, utilice de nuevo el m"todo Update! Para volver al registro, tal como lo cambi el otro usuario, actualice el registro activo usando los m"todos 'ove K! Nota Para agregar, modificar o eliminar un registro, debe haber un ndice nico en el registro del origen de datos base! 3e obtiene no lo ha , se producir un error TPermiso denegadoT en la llamada al m"todo AddNe&, De ete o Edit en un espacio de traba$o 'icrosoft Pet, se producir un error T0rgumento no vlidoT en la llamada al m"todo Update en un espacio de traba$o D*&)*irect!
E,e'p o de '<todo Update

Potrebbero piacerti anche