Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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:
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!
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!
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 !
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
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
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
Propiedades:
Propiedad Enabled Propiedad Hame Propiedad :nde( 5)ontrol 0rra 6 Propiedad Parent Propiedad :nterval Propiedad Aag
Propiedades Left Aop
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
Propiedad &order3t le Propiedad &orderFidth Propiedad )ontainer Propiedad *ra4'ode Propiedad :nde( 5)ontrol 0rra 6
O-
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
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!
3napshot
-*RSTypeSnap)#ot
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!
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!
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!
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
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!
)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'!
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
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
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
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(!
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
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)!
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!
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
&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!
80bro
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
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
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);
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)!
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
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!
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)!
14.11- B+o;
0plicable a: Db$eto +orm!
Sintaxi)
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
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