Professional Documents
Culture Documents
Introduccin La combinacin de Microsoft Access y Microsoft Visual Basic nos proporciona una excelente herramienta para la creacin de bases de datos (Access) y su acceso (Visual Basic) que nos permite administrar nuestras colecciones de audio, libros, video, etc este e!ercicio nos permitir" concebir y construir bases de datos que se amolden a nuestras necesidades particulares, asumiendo que tienes conocimientos m"s que b"sicos de Visual Basic, sin m"s, manos a la obra #nicio de Visual Basic a) $a% clic en el botn Inicio, se&ala Todos los programas b) $a% clic en Microsoft Visual Studio 6.0, Microsoft Visual Basic 6.0 #nicio del Proyecto a) 'rea una carpeta que ser" exclusiva para el e!ercicio se llamar"( )mi asededatos* para +uardar todos los componentes del proyecto b) ,or el momento no haremos nada con el formulario de inicio 'reacin de la ase de datos a) $a% clic en el botn !omplementos de la barra de herramientas b) $a% clic en "dministrador visual de datos-
P"#ina .
P"#ina 1
P"#ina 5
P"#ina 7
P"#ina 8
P"#ina 9
c) 2n Tipo( selecciona el tipo de datos que contendr" el campo, en nuestro caso ser"n( 4 campo( matricula, tipo de datos( lon+, tama&o( (autom"tico) 4 campo( nombre, tipo de datos( texto, tama&o( 8: 4 campo( carrera, tipo de datos( texto, tama&o( 8: 4 campo( turno, tipo de datos( texto, tama&o( 1: d) 2n Tama+o( selecciona la cantidad de caracteres (incluyendo espacios) que tendr" el campo (ver arriba) y ha% clic en "ceptar e) ,ara a+re+ar los otros campos de la tabla, ha% clic en "gregar campo y repite los pasos desde el punto )c)* (;ombre, <ipo y <ama&o) para cada campo que tendr" la tabla
P"#ina =
P"#ina >
i) ?epite los pasos 3desde el punto )a)* para cada ta la que tendr" la base de datos
P"#ina @
P"#ina .:
b) / se mostrar" la ca!a &ynaset con el nombre de la tabla, en nuestro caso( "lumnos $a% clic en "gregar para empe%ar a introducir la informacin en los campos del primer re+istro
c) 'uando termines de introducir la informacin en la Bltima ca!a de texto, ha% clic en "ctuali-ar ?epite los pasos para cada registro de la Ta la
d) ?epite los pasos para introducir la informacin para cada ta la de la ase de datos
P"#ina ..
P"#ina .1
f) Ci no se pueden ver los re+istros de la tabla, si+nifica que no se conectaron correctamente el control &ata y las ca.as de texto, simplemente revisa las conexiones una por una
P"#ina .5
P"#ina .7
P"#ina .8
a) $a% clic con el botn derecho del ratn sobre el formulario y ha% clic en el *ditor de men;s-
P"#ina .9
c) 2n !aption introduce el nombre (que se mostrar" en el formulario) del menB d) 2n $ame introduce el nombre que utili%ar" Visual Basic e) $a% clic en el botn Siguiente para crear otro menB f) $a% clic en el botn con la flec#a #acia la derec#a y aparecer"n cuatro puntos, lo cual indica que el si+uiente ren+ln ser" una opcin del men; +) 2n S#ortcut selecciona la combinacin de teclas que se podr"n usar para activar la opcin de menB correspondiente h) ?epite los pasos para crear cada opcin del men;
$ota( aqu6 declaramos una variable (m) que representar" el nBmero del re+istro (matricula) que estemos buscando 2s de vital importancia de que te ase+ures de que en la l6nea subrayada la palabra )Matr6cula* estA escrita exactamente como llamaste el campo )matricula* al crear la tabla d) Rpcin *liminar, el cual servir" para eliminar un registro de la tabla, el cdi+o es el si+uiente( ,rivate Cub 2liminarM'licK() #f Ms+Box(OSTuieres 2liminar la Matr6cula ;Bmero( O L <ext. L OUO, .9 V 7) H 9 <hen 0ata. ?ecordset 0elete 0ata. ?efresh <ext. CetEocus Ms+Box OCe 2limin la Matr6culaO, vb'ritical, OAviso #mportanteO 2lse Ms+Box O;o se 2limin la Matr6cula ;Bmero( O L <ext., vb2xclamation, OAviso #mportanteO 2nd #f 2nd Cub Ahora corre tu pro+rama con la tecla /2 dir6+ete al formulario y ahora podr"s a+re+ar, +uardar, buscar y eliminar re+istros de la tabla Alumnos de la base de datos de Access mediante Visual Basic
P"#ina .>
P"#ina .@
P"#ina 1:
d) 2n la ventana aparece un peque&o icono de un reporte al cual puedes cambiarle el nombre f"cilmente seleccion"ndolo y modificando su propiedad ($ame) por otro como ?eportes, etc
e) M"s aba!o se puede ver otro ob!eto, un cilindro 4el cual representa a la base de datos4 con una clavi!a elActrica llamado !onnection1 al cual tambiAn puedes cambiarle el nombre modificando su propiedad ($ame) por otro como Alumnos, Maestros, etc
P"#ina 1.
f) Ahora ha% clic con el botn derecho del ratn sobre la !onnection1 (ahora llamada Alumnos) y ha% clic en Propiedades+) / aparecer" la ca!a Propiedades de v<nculo de datos, ha% clic en la opcin !onexin
P"#ina 11
P"#ina 15
P"#ina 17
i) / aparecer" la ca!a Seleccionar origen de datos, ha% clic en la opcin >rigen de datos de e(uipo
!) Celecciona el tipo de base de datos en donde se cre la base de datos, en nuestro caso MS "ccess &ata ase y ha% doble clic ah6
P"#ina 18
l) / aparecer" la ca!a Seleccionar ase de datos, locali%a la carpeta o unidad de disco en donde se halla tu base de datos, seleccinala y ha% clic en "ceptar
P"#ina 19
/a creamos la conexin de los reportes con la base de datos, ahora vamos a crear un comando para el reporte
P"#ina 1=
P"#ina 1>
b) / ense+uida aparecer" un ob!eto llamado !ommand1, al cual le puedes cambiar su nombre modificando su propiedad ($ame)
c) ,ara motivos de identificacin llamaremos el !ommand1 ?epalumnos, ya que nos ser" Btil para identificar el reporte de alumnos
P"#ina 1@
P"#ina 5:
P"#ina 5.
/a puedes cerrar el *ntorno de &atos (0ata 2nvironment) para crear ahora la estructura del reporte
P"#ina 51
$ota( 2n caso de que no se halle disponible la opcin "gregar &ata 0eport en el menB Proyecto, hay que activarla desde Proyecto, !omponentes, &ise+adores y hacer clic en &ata 0eport y otro clic en "ceptar
P"#ina 55
b) Ahora ha% clic en 0pt:a el y coloca etiquetas con los t6tulos de los encabe%ados de la tabla en *nca e-ado de p@gina (Ceccin1) modificando sus propiedades !aption, /ont, /ore!olor, etc a tu +usto c) Ahora ha% clic en 0ptTextBox y coloca ca!as de texto en &etalle (Ceccin.) d) Al terminar de colocar las ca!as de texto que muestran el texto( ;o enla%ado, ha% clic en cualquier parte vac6a del &ata0eport y ha% clic en la ca!ita +ris situada ba!o el icono de la barra de titulo del 0ata ?eport, para mostrar las propiedades del &ata0eport
P"#ina 57
e) $a% clic en la propiedad &ataSource y selecciona el &ata*nvironment1 que previamente llamamos reportes, y en la propiedad &ataMem er selecciona el !ommand1 que llamamos 0epalumnos $ota( ,odemos crear varios reportes 3si hay varias tablas4 en el mismo &ata *nvironment f) Ahora selecciona la primera ca!a de texto y ha% clic en la ca!ita +ris situada ba!o el icono de la barra de titulo del 0ata ?eport, para mostrar las propiedades de la ca!a de texto (0ptTextBox9, y modifica sus propiedades como si+ue( &ataMem er( el nombre del reporte (0epalumnos) y en &ata/ield( selecciona el campo que corresponda de la tabla y repite los pasos para cada ca!a de texto para que se vea m"s o menos as6
P"#ina 58
P"#ina 59
P"#ina 5=
$ota( 2n caso de ser necesario puedes estirar las ca!as de texto para que se puedan ver los datos, o modificar la propiedad 0ig#tMargin del 0ata ?eport se+Bn tus necesidades particulares ,uedes crear una base de datos con varias tablas, diferentes formularios y diferentes reportes se+Bn prefieras, sinceramente espero que haya sido de tu interAs el e!ercicio y sirva para que te adentres en el mundo de la pro+ramacin y las bases de datos
P"#ina 5>
2n esta se+unda parte del e!ercicio, vamos a controlar el acceso al pro+rama, de manera que solamente accesen el sistema, usuarios que previamente se hayan re+istrado como tales, tambiAn se crear" la opcin para que los interesados se auto re+istren y puedan hacer uso del pro+rama, por lo que vamos a crear( a) Nna pantalla de Inicio, que se ver" inmediatamente antes de iniciar el pro+rama b) Nna pantalla de Bienvenida, con opciones para entrar al pro+rama o re+istrarnos si es que no somos usuarios re+istrados para accesar el pro+rama c) Nna pantalla de *ntrada, para acceder al pro+rama como usuario re+istrado d) Nna pantalla de 0egistro, en donde se re+istrar"n los usuarios que quieran entrar el pro+rama
,ara que esta pantalla se vea inmediatamente antes que inicie el pro+rama hay que hacer lo si+uiente( a) Celecciona el relo! y cambia su propiedad Interval a .::
P"#ina 5@
b) $a% doble clic en el relo! y escribe el si+uiente cdi+o( ,rivate Cub <imer.M<imer() Ctatic J As #nte+er JHJV. #f J H 1: <hen frmCplash $ide Bienvenida ChoI <imer. 2nabled H Ealse 2nd #f 2nd Cub Aqu6 sencillamente declaramos una variable que se incrementar" de uno en uno y al lle+ar a 1: se ocultar" la pantalla de inicio y mostrar" otro formulario, en nuestro caso el formulario de Bienvenida, y deshabilitar" el relo! ,ara que el pro+rama inicie con el formulario que acabamos de crear( c) $a% clic en Proyecto, Propiedades de proyecto- y se abrir" la ca!a de di"lo+o, Propiedades del proyecto d) 2n la opcin )eneral, > .eto inicial, selecciona el formulario frmSplas# y ha% clic en "ceptar
a) 2l cdi+o del botn 0egistrarse es( ,rivate Cub 'ommand.M'licK() Bienvenida $ide ?e+istro ChoI 2nd Cub L.I. PATRICIA GALICIA HERNN E! P"#ina 7:
P"#ina 7.
P"#ina 71
P"#ina 75
P"#ina 77
La tabla debe llamarse )usuarios* y sus campos deben ser definidos como tipo texto y tama&o 8:, tal como se ve en la ca!a *structura de la ta la mostrada aba!o
P"#ina 78
2n la tabla reciAn creada y si+uiendo el procedimiento p"+inas mostrado arriba, re+istra un Bnico usuario, preferentemente tB nombre y como contrase&a nuevamente tB nombre, esto por motivos de prueba
P"#ina 79
f) Ahora volvamos al formulario llamado 0egistro, este contiene un control &ata que hay que conectar 4 A la base de datos, usando su propiedad &ata asename, y 4 A la tabla usuarios, usando su propiedad 0ecordSource ;o hay que olvidar cambiar su propiedad Visi le a /alse
Ci todo ha resultado bien, al iniciar nuestro pro+rama, este iniciar" con la pantalla de Inicio, ense+uida se mostrar" la pantalla de Bienvenida, en donde tenemos dos opciones( al oprimir el botn *ntrar, debe mostrarse la pantalla de *ntrada y si se presiona el botn 0egistrarse, debe mostrarse la pantalla de 0egistro La cual reconocer" al usuario re+istrado y no permitir" la entrada al sistema de personas no re+istradas 'omo tenemos un usuario re+istrado podremos probar su funcionalidad Fracias por todos los alentadores mensa!es electrnicos recibidos de tanta +ente, como siempre estoy a la orden para su+erencias y recomendaciones
P"#ina 7=
,ara el propsito del e!ercicio vamos a modificar la pantalla de opciones para que ten+a una apariencia seme!ante a como se ve aba!o
2n este formulario, modifica el menB para que conten+a opciones para las pantallas de bBsqueda antes mencionadas, por cuestiones de f"cil identificacin las llamA como se ven en la pantalla 2l formulario contiene al medio un ob!eto Picture conteniendo una ilustracin
P"#ina 7>
2n el !uadro de #erramientas ha% doble clic en el ob!eto StatusBar para que se mueva al formulario, una ve% ah6, ha% doble clic con el botn derecho del ratn en el ob!eto StatusBar y ha% clic en Propiedades
P"#ina 7@
2n la ca!a de di"lo+o P@ginas de propiedades, opcin Paneles, ha% clic en el botn Insertar panel en dos ocasiones (para tener un total de tres paneles), el ob!eto StatusBar muestra un panel, de manera que hay que insertar los paneles en donde se mostrar" la #ora, la fec#a y la activacin de la tecla de May;sculas ,odr"s ver los paneles insertados mediante hacer clic en las flec#as i-(uierda y derec#a de la opcin Index Los paneles deben mostrar en la opcin Style( 2 s rTime, 6 s r&ate y 1 s r!aps respectivamente para que se vea como la ilustracin del formulario opciones mostrada arriba ,uedes experimentar con las otras opciones a tu +usto
P"#ina 8:
2l formulario debe tener un menB con la opcin Volver a >pciones como se muestra aba!o
P"#ina 8.
P"#ina 81
P"#ina 85
P"#ina 87
Al i+ual que el e!ercicio anterior, el formulario debe tener un menB con la opcin Volver a >pciones a) 2l cdi+o del formulario B;s(uedasD es( ,rivate Cub EormMLoad() MCElexFrid. 'olDidth(:) H 5:: MCElexFrid. 'olDidth(.) H >:: MCElexFrid. 'olDidth(1) H 1.:: MCElexFrid. 'olDidth(5) H 18:: MCElexFrid. 'olDidth(7) H .::: 2nd Cub ,rivate Cub EormMNnload('ancel As #nte+er) 'ancel H . Ms+Box O$a% 'lic en ArchivoO, vb#nformation, OPAviso #mportanteQO 2nd Cub b) 2l cdi+o del men; Volver a >pciones es( ,rivate Cub volveraopcionesM'licK() Busquedas1 $ide Rpciones ChoI 2nd Cub
P"#ina 88
P"#ina 89
Al i+ual que el e!ercicio anterior, el formulario debe tener un menB con la opcin Volver a >pciones a) 2l cdi+o del formulario B;s(uedas3 es( ,rivate Cub EormMLoad() MCElexFrid. 'olDidth(:) H 5:: MCElexFrid. 'olDidth(.) H >:: MCElexFrid. 'olDidth(1) H 1.:: MCElexFrid. 'olDidth(5) H 18:: MCElexFrid. 'olDidth(7) H .::: 2nd Cub ,rivate Cub EormMNnload('ancel As #nte+er) 'ancel H . Ms+Box O$a% 'lic en ArchivoO, vb#nformation, OPAviso #mportanteQO 2nd Cub b) 2l cdi+o del men; Volver a >pciones es( ,rivate Cub volverM'licK() Busquedas5 $ide Rpciones ChoI 2nd Cub L.I. PATRICIA GALICIA HERNN E! P"#ina 8=
Al i+ual que el e!ercicio anterior, el formulario debe tener un menB con la opcin Volver a >pciones a) 2l cdi+o del formulario B;s(uedas6 es( ,rivate Cub EormMLoad() MCElexFrid. 'olDidth(:) H 5:: MCElexFrid. 'olDidth(.) H >:: MCElexFrid. 'olDidth(1) H 1.:: MCElexFrid. 'olDidth(5) H 18:: MCElexFrid. 'olDidth(7) H .::: 2nd Cub ,rivate Cub EormMNnload('ancel As #nte+er) 'ancel H . Ms+Box O$a% 'lic en ArchivoO, vb#nformation, OPAviso #mportanteQO 2nd Cub b) 2l cdi+o del men; Volver a >pciones es( ,rivate Cub volverM'licK() Busquedas7 $ide Rpciones ChoI 2nd Cub L.I. PATRICIA GALICIA HERNN E! P"#ina 8@
P"#ina 9:
Al i+ual que el e!ercicio anterior, el formulario debe tener un menB con la opcin Volver a >pciones a) 2l cdi+o del formulario B;s(uedas2 es( ,rivate Cub EormMLoad() MCElexFrid. 'olDidth(:) H 5:: MCElexFrid. 'olDidth(.) H >:: MCElexFrid. 'olDidth(1) H 1.:: MCElexFrid. 'olDidth(5) H 18:: MCElexFrid. 'olDidth(7) H .::: 2nd Cub ,rivate Cub EormMNnload('ancel As #nte+er) 'ancel H . Ms+Box O$a% 'lic en ArchivoO, vb#nformation, OPAviso #mportanteQO 2nd Cub b) 2l cdi+o del men; Volver a >pciones es( ,rivate Cub volverM'licK() Busquedas8 $ide Rpciones ChoI 2nd Cub L.I. PATRICIA GALICIA HERNN E! P"#ina 9.
P"#ina 91
Al i+ual que el e!ercicio anterior, el formulario debe tener un menB con la opcin Volver a >pciones a) 2l cdi+o del formulario B;s(uedas6 es( ,rivate Cub EormMLoad() MCElexFrid. 'olDidth(:) H 5:: MCElexFrid. 'olDidth(.) H >:: MCElexFrid. 'olDidth(1) H 1.:: MCElexFrid. 'olDidth(5) H 18:: MCElexFrid. 'olDidth(7) H .::: 2nd Cub ,rivate Cub EormMNnload('ancel As #nte+er) 'ancel H . Ms+Box O$a% 'lic en ArchivoO, vb#nformation, OPAviso #mportanteQO 2nd Cub b) 2l cdi+o del men; Volver a >pciones es( ,rivate Cub volverM'licK() Busquedas9 $ide Rpciones ChoI 2nd Cub L.I. PATRICIA GALICIA HERNN E! P"#ina 95
P"#ina 98
Al i+ual que el e!ercicio anterior, el formulario debe tener un menB con la opcin Volver a >pciones a) 2l cdi+o del formulario B;s(uedas' es( ,rivate Cub EormMLoad() MCElexFrid. 'olDidth(:) H 5:: MCElexFrid. 'olDidth(.) H >:: MCElexFrid. 'olDidth(1) H 1.:: MCElexFrid. 'olDidth(5) H 18:: MCElexFrid. 'olDidth(7) H .::: 'ombo. Add#tem O'arreraO 'ombo. Add#tem O<urnoO 2nd Cub ,rivate Cub EormMNnload('ancel As #nte+er) 'ancel H . Ms+Box O$a% 'lic en ArchivoO, vb#nformation, OPAviso #mportanteQO 2nd Cub
P"#ina 99
P"#ina 9@
Al i+ual que el e!ercicio anterior, el formulario debe tener un menB con la opcin Volver a >pciones a) 2l cdi+o del formulario B;s(uedasE es( ,rivate Cub EormMLoad() MCElexFrid. 'olDidth(:) H 5:: MCElexFrid. 'olDidth(.) H >:: MCElexFrid. 'olDidth(1) H 1.:: MCElexFrid. 'olDidth(5) H 18:: MCElexFrid. 'olDidth(7) H .::: 2nd Cub ,rivate Cub EormMNnload('ancel As #nte+er) 'ancel H . Ms+Box O$a% 'lic en ArchivoO, vb#nformation, OPAviso #mportanteQO 2nd Cub ,rivate Cub EormMActivate() <ext. CetEocus 2nd Cub
P"#ina =:
P"#ina =.
Al i+ual que el e!ercicio anterior, el formulario debe tener un menB con la opcin Volver a >pciones a) 2l cdi+o del formulario B;s(uedasF es( ,rivate Cub EormMLoad() MCElexFrid. 'olDidth(:) H 5:: MCElexFrid. 'olDidth(.) H >:: MCElexFrid. 'olDidth(1) H 1.:: MCElexFrid. 'olDidth(5) H 18:: MCElexFrid. 'olDidth(7) H .::: 2nd Cub ,rivate Cub EormMNnload('ancel As #nte+er) 'ancel H . Ms+Box O$a% 'lic en ArchivoO, vb#nformation, OPAviso #mportanteQO 2nd Cub
P"#ina =1
P"#ina =5
P"#ina =7
Al i+ual que el e!ercicio anterior, el formulario debe tener un menB con la opcin Volver a >pciones a) 2l cdi+o del formulario B;s(uedas10 es( ,rivate Cub EormMLoad() MCElexFrid. 'olDidth(:) H >:: MCElexFrid. 'olDidth(.) H 17:: MCElexFrid. 'olDidth(1) H 18:: MCElexFrid. 'olDidth(5) H .::: 0ata. ?ecordCource H OalumnosO 0ata. ?efresh Label1 H O<otal de ?e+istros de la 'onsulta( O L (MCElexFrid. ?oIs) 4 . L OO 2nd Cub ,rivate Cub EormMNnload('ancel As #nte+er) 'ancel H . Ms+Box O$a% 'lic en ArchivoO, vb#nformation, OPAviso #mportanteQO 2nd Cub
P"#ina =8
e) 2l cdi+o del formulario Modificar es( 2n )eneral declaramos la variable( ,rivate a(7) As Ctrin+
P"#ina =9
P"#ina ==
Al i+ual que el e!ercicio anterior, el formulario debe tener un menB con la opcin Volver a >pciones a) 2l cdi+o del com o ox1 es( ,rivate Cub 'ombo.M0rop0oIn() Rn 2rror ?esume ;ext 0o Nntil 0ata1 ?ecordset 2RE 'ombo. Add#tem 0ata1 ?ecordset Eields(OcarreraO) 0ata1 ?ecordset Move;ext Loop 2nd Cub b) 2l cdi+o del botn !ontar !arreras es( ,rivate Cub 'ommand.M'licK() 0ata1 ?ecordCource H Oselect count(carrera) as carreras from alumnos Ihere carrera H YO L 'ombo. L OYO 0ata1 ?efresh 2nd Cub L.I. PATRICIA GALICIA HERNN E! P"#ina =>
P"#ina =@
Al i+ual que el e!ercicio anterior, el formulario debe tener un menB con la opcin Volver a >pciones a) 2l cdi+o del botn :a Suma de Matr<culas es( ,rivate Cub 'ommand.M'licK() 0ata1 ?ecordCource H Oselect sum(matricula) as suma from alumnosO 0ata1 ?efresh 2nd Cub
P"#ina >:
Al i+ual que el e!ercicio anterior, el formulario debe tener un menB con la opcin Volver a >pciones a) 2l cdi+o del botn B;s(ueda por /ec#a es( ,rivate Cub 'ommand.M'licK() 0ata. ?ecordCource H Oselect X from alumnos Ihere fechaMinscripcion betIeen ]O L 0<,icKer. Value L O] and ]O L 0<,icKer1 Value L O]O 0ata. ?efresh Label9 H O<otal de ?e+istros de la bBsqueda( O L (MCElexFrid. ?oIs) 4 . L OO #f 0ata. ?ecordset ?ecord'ount H : <hen Ms+Box O;o $ay ?e+istros con estos ,ar"metrosO V vb'rLf V O,or Eavor ?evisa tus 0atosO, vb#nformation, OPAviso #mportanteQO 2nd #f L.I. PATRICIA GALICIA HERNN E! P"#ina >.
P"#ina >1
2n parte del e!ercicio, veremos al+unas formas muy sencillas de imprimir el resultado de las consultas que se muestran em el MCElexFrid, quiero mencionar que aunque pudieramos emplear un solo formulario, para los e!ercicios, por cuestin de sencille% en la explicacin usaremos m"s de uno ,ara este e!ercicio crea un formulario con cuatro etiquetas, cuatro ca!as de texto, un MCElexFrid, tres botones y un control 0ata, cuya propiedad Visi le debe ser cambiada a /alse, para que se vea m"s o menos como se ve aba!o
P"#ina >5
,rivate Cub EormMNnload('ancel As #nte+er) 'ancel H . Ms+Box O$a% 'lic en ArchivoO, vb#nformation, OPAviso #mportanteQO 2nd Cub b) 2l cdi+o del botn >cultar 0egistros es( ,rivate Cub 'ommand.M'licK() MCElexFrid. 'lear 2nd Cub c) 2l cdi+o del botn Mostrar 0egistros es( ,rivate Cub 'ommand1M'licK() 0ata. ?ecordCource H OalumnosO 0ata. ?efresh Dith MCElexFrid. Eor a H . <o ?oIs 4 . ?oI H a Eor B H . <o 'ols 4 . 'ol H B 'ellBacK'olor H ##f((a Mod 1) H ., Val(L$':EEEE), Val(L$':EE':)) 'ellEontBold H <rue 'ellEore'olor H L$EE:::: ;ext B ;ext a 2nd Dith 2nd Cub d) 2l cdi+o del botn Imprimir 0egistros Seleccionados es( ,rivate Cub 'ommand5M'licK() ,rinter ,rint MCElexFrid. 'lip ,rinter 2nd0oc 2nd Cub L.I. PATRICIA GALICIA HERNN E! P"#ina >7
P"#ina >8
P"#ina >9
P"#ina >=