Vous êtes sur la page 1sur 60

mailxmail - Cursos para compartir lo que sabes

Visual Basic 6. Curso de introduccin


Autor: Gabriel Martn Gutirrez

mailxmail - Cursos para compartir lo que sabes

Presentacin del curso


Tutorial de Visual Basic 6. El primer punto de este curso sern los controles y formularios que son los elementos grficos que forman parte de las aplicaciones en Visual Basic. Luego, veremos el entorno de programacin y la sintaxis Visual Basic, analizando lo que son, comentarios, sentencias, variables, tipos de datos, operadores, sentencias de control, adems de las funciones y procedimientos. Ms adelante estudiaremos el Editor de Mens de Visual Basic, el manejo de errores en Visual Basic y el acceso a bases de datos, desarrollando la teora de acceso a datos DAO, una introduccin a SQL, y el comentario ADO. Desarrollaremos la creacin de un control data, controles Dbgrid, el botn cmdConsultasVisitas, entre otros elementos que, como parte del conjunto, te dejarn un curso introductorio serio y completo de Visual Basic.

mailxmail - Cursos para compartir lo que sabes

1. Formulario y controles (1/2)


CURSO DE INTRUDUCCIN A VISUAL BASIC 6 Formularios y Controles Los elementos grficos que forman parte de las aplicaciones en Visual Basic son controles que estn contenidos en formularios (ventanas), y tanto los controles como los formularios tienen propiedades. Ejemplos de controles son: Botones, cajas de texto, cajas de seleccin desplegables, etiquetas, mens, etc. Los controles y los formularios son entidades genricas de las que puede haber varios ejemplares concretos en cada programa, estas entidades genricas son las clases mientras que cada ejemplar de una clase son los objetos. Cada formulario y cada control tiene un conjunto de propiedades que define su aspecto (color, tamao, tipo de letra, etc.), como responde a las acciones del usuario (si est activo o no lo est), etc. Cada objeto tiene un nombre que lo identifica, por medio del cual se hace referencia al mismo, estos nombres son definidos por defecto por Visual Basic en el momento de ser creados, pero no son en principio adecuados y deben ser renombrados por el programador para permitir una mejor identificacin de cada uno de ellos. Para establecer el nombre de los objetos existe una convencin muy aceptada que consiste en usar tres letras minsculas que identifican al control, seguidas por otras letras (la primera mayscula), libremente elegidas por el usuario teniendo en cuenta el uso que se le va a dar al objeto. Algunas abreviaturas usuales para nombrar los controles son: cmd frm lbl opt mnu fra > Command button > Form > Label > Option button > Menu > Frame.

Una vez creado el objeto, se puede acceder a sus propiedades pulsando en el botn derecho del `mouse y seleccionando la opcin `Propiedades o bien, pulsando la tecla F4.

mailxmail - Cursos para compartir lo que sabes

mailxmail - Cursos para compartir lo que sabes

2. Formulario y controles (2/2)


Los controles responden a los eventos (acciones realizadas por el usuario), de tal forma que el programador decide que ocurre cuando se realiza un evento sobre un control. Son eventos programables hacer click, doble click, pasar el mouse, pulsar una tecla o combinacin de teclas, recibir o perder el foco, etc. Cada vez que se realiza un evento, Visual Basic arranca una determinada funcin o procedimiento que realiza la accin programada por el usuario para responder a ese evento en concreto. Para acceder a los distintos eventos que pueden ser programados sobre un control se hace doble click sobre el mismo o se pulsa en el botn derecho del mouse y se elige la opcin `Ver Cdigo, accedindose a una pantalla en la cual se programa lo que ocurrir cuando se produzca el evento. Cada control puede tener varios eventos programables, por ello para seleccionar la accin que se est programando esta se debe elegir en la parte superior derecha de la pantalla en la que se escribe el cdigo.

Cuando el programa se est ejecutando, el resultado de hacer click sobre el botn programado ser el sacar un mensaje por pantalla de la manera siguiente:

La creacin de objetos, el establecimiento de sus propiedades y la programacin de sus eventos se realiza cuando se est diseando el proyecto, esto es en tiempo de diseo y el resultado de la labor de diseo y programacin se pone de manifiesto cuando se ejecuta el programa, esto es en tiempo de ejecucin. Para ejecutar un programa que se est diseando se selecciona la opcin de men `Ejecutar > `Iniciar, o pulsando la tecla F5. Cada aplicacin que se empieza a desarrollar es un proyecto que comprende otras componentes ms sencillas como los formularios y los mdulos (conjuntos de

mailxmail - Cursos para compartir lo que sabes


funciones). Para guardar un proyecto, hay que tener en cuenta que se compone de varios ficheros (dos como mnimo), que deben ser guardados con el nombre adecuado y en el directorio adecuado. Existe siempre un fichero de proyecto, con extensin .vbp (Visual Basic Proyect) que se crea o modifica con la opcin `Archivo > `Guardar Proyecto que contiene toda la informacin de conjunto de la aplicacin. Adems hay que crear un fichero por cada formulario del proyecto .frm y otro por cada mdulo de la aplicacin .bas o .cls. Hay que tener claro el lugar donde se guardan estos ficheros para que sean usados correctamente por el proyecto cuando se vuelva a abrir.

mailxmail - Cursos para compartir lo que sabes

3. Entorno de programacin Visual Basic


Entorno de Programacin Visual Basic Cuando se inicia un proyecto en Visual Basic 6.0. se accede a una pantalla como la siguiente:

En esta pantalla hay un men, una barra de herramientas para acceso a algunas de las opciones ms usuales del men y un cuadro de controles disponibles para ser usados en el proyecto. Los controles inicialmente cargados en este cuadro NO son todos los disponibles en Visual Basic, existe la posibilidad de acceder a nuevos controles para su uso en el proyecto, para ello hay que usar la opcin de men `Proyecto> `Componentes desplegndose un cuadro que permite insertar los nuevos controles que se quieran utilizar.

Cuando se ha terminado la programacin de la aplicacin hay que crear el programa ejecutable para ser distribuido e instalado en los PCs que vayan a usar dicho programa. Para crear el fichero ejecutable con extensin .exe se usa la opcin de men `Archivo > `Crear *.exe.

mailxmail - Cursos para compartir lo que sabes

4. Sintaxis Visual Basic. Sentencias. Variables y tipos de datos


SINTAXIS VISUAL BASIC. Un programa est constituido por variables que contienen datos sobre los que se trabaja y por sentencias que operan sobre estos datos. Algunos aspectos a tener en cuenta a la hora de escribir sentencias de programacin en Visual Basic son: a) Comentarios. En Visual Basic, todo lo contenido en una sentencia a la derecha del carcter comilla simple (`) en una lnea es un comentario y no es tenido en cuenta. Los comentarios son muy tiles para facilitar la comprensin del cdigo utilizado sobre todo en proyectos complejos donde resulta imprescindibles para revisiones posteriores del cdigo. b) Sentencias en ms de una lnea. En ocasiones las sentencias son complejas y es necesario escribirlas en ms de una lnea para que entren en la pantalla, para ello hay que dejar un espacio en blanco al final de la lnea y escribir el carcter guin inferior (_) Ej.) lblEtiqueta.Caption = "Esta es una etiqueta de descripcin de " _ "un ejemplo de una sentencia en dos lneas" c) Varias Sentencias en una sola lnea. Para escribir varias sentencias en una sola lnea es necesario escribir dos puntos (:) entre sentencia y sentencia. Ej.) a= 7: b= 87: d) Variables y Tipos de Datos. Los programas usan variables, para guardar valores temporalmente, as se puede entender una variable como una entidad que permite almacenar valores temporalmente durante la ejecucin de una aplicacin. Posee dos partes, un nombre o identificador y un valor que ser su contenido. Los tipos de datos bsicos que se pueden almacenar en una variable son los siguientes: d.1) Tipos Numricos Se usan para representar cantidades numricas enteras (integer y long) y decimales (single y double). d.2) Tipo Byte. Representa una cantidad entre 0 y 255 y se pueden hacer con el las mismas operaciones que con los enteros, salvo la resta. d.3) Tipo String Se usa para representar cadenas de caracteres

mailxmail - Cursos para compartir lo que sabes


Se usa para representar cadenas de caracteres d.4) Tipo Bolean. Permite representar valores del tipo True/False. d.5) Tipo Date. Se usa para representar Fechas d.6) Tipo Currency. Es un formato de representacin en coma fija, se usa para representar valores decimales que tengan a lo sumo 15 dgitos de parte entera y cuatro de parte decimal.

mailxmail - Cursos para compartir lo que sabes

5. Sintaxis Visual Basic. Declaracin y mbito de las variables


La siguiente tabla contiene una representacin de distintos tipos de datos.

Declaracin y mbito de las variables. Declarar una variable consiste en avisar al programa de la existencia de la misma, dndola un nombre y un tipo. La declaracin de variables es aconsejable pero no obligatoria salvo que se fuerce a Visual Basic a declarar todas las variables mediante la sentencia Option Explicit al principio de cada mdulo. Las variables tienen un mbito que delimita las partes del programa desde donde se pueden usar, as hay variables de tipo local y variables de tipo global. Las variables locales son aquellas que estn definidas dentro de un procedimiento o funcin y slo son accesibles en ese procedimiento o funcin donde se definieron, as una variable local es reinicializada cada vez que se entra en el procedimiento. Las variables de tipo global son aquellas que son accesibles desde cualquier parte del programa. Para hacer que una variable sea global, hay que declararla en la parte general de un mdulo *.bas o de un formulario de la aplicacin usando la palabra Public. Para acceder a las variables definidas como pblicas en un formulario hay que especificar el formulario en el que fueron creadas pero si se definen en un mdulo no es necesario, basta con el nombre para hacer uso de ellas. La declaracin de variables se realiza de la siguiente forma: { Dim / Static / Private / Public ] nombreVariable as Tipo. Ej: Dim Letra as String Static Permanente as Integer

10

mailxmail - Cursos para compartir lo que sabes


Public Valor as Integer Private Logico as Boolean Si se usa la declaracin Static, entonces la variable conserva su valor mientras se est ejecutando el resto del cdigo. Por ejemplo, si en el evento click de un botn escribimos: Private Sub Boton_Click() Static Acumulado Acumulado = Acumulado + 7 MsgBox Acumulado End Sub Con el cdigo del ejemplo anterior, en tiempo de ejecucin al pulsar el botn por primera vez aparece un mensaje con el valor 7, si se vuelve a pulsar el botn, el mensaje ser 14, si se vuelve a pulsar ser 21, y as se ir incrementando en sucesivas ocasiones que se pulse el botn, es decir, la variable declarada como Static va conservando su valor al entrar en el procedimiento sin inicializarlo a cero como ocurrira si se hubiese declarado con Dim en cuyo caso el mensaje sera siempre 7.

11

mailxmail - Cursos para compartir lo que sabes

6. Sintaxis Visual Basic. Declaracin y mbito de las variables. Operadores


La siguiente tabla muestra para los distintos tipos de declaraciones, el lugar donde se realizan y la accesibilidad que producen.

Si una variable se usa sin haberla declarado previamente, toma por defecto el tipo Variante que se adapta a la informacin o dato que se toma en cada momento, es pues un tipo muy flexible pero su uso debe restringirse pues ocupa ms memoria y requieren ms tiempo de CPU que el resto de variables. Recordemos no obstante que se puede forzar a Visual Basic a declarar todas las variables usando la sentencia Option Exp Option Explicit. Las restricciones para poner el nombre a una variable son las siguientes: 1.-Debe empezar por una letra 2.-No puede tener ms de 255 caracteres 3.-El nombre debe ser nico en su campo de visibilidad (procedimiento, mdulo, etc.) 4.- No puede ser una palabra reservada. e) Operadores. En la siguiente tabla se representan operadores soportados por Visual Basic, usados para la realizacin de operaciones aritmticas, lgicas, relacionales, etc.

12

mailxmail - Cursos para compartir lo que sabes

13

mailxmail - Cursos para compartir lo que sabes

7. Sentencias de control. Sentencia If, Then, Else, End If


f) Sentencias de Control Las sentencias o estructuras de control, permiten tomar decisiones y realizar un proceso en repetidas veces. Son las denominadas bifurcaciones y bucles. Estas estructuras son muy importantes puesto que son las encargadas de controlar el flujo de un programa segn los requerimientos del mismo. En Visual Basic se dispone de las siguientes: f.1) Sentencia IF....THEN.....ELSE....END IF Permite ejecutar condicionalmente una o ms sentencias. Su representacin es as:

En la representacin anterior, si se cumple la primera condicin, es decir condicion1 = True, entonces el programa continua su ejecucin por el Grupo1 de Sentencias, si no se cumple, pasa a evaluar condicion2, y si es cierta se ejecuta el Grupo 2 de Sentencias y si es falsa evala condicion3 y as se contina hasta el encontrar un Else If (puede haber tantos como se precisen) que contenga una condicin verdadera para ejecutar su grupo de sentencias. Si ninguna condicin de las evaluadas es cierta, se ejecuta el Grupo de Sentencias de la clusula Else. En esta sentencia de control las nicas clusulas obligatorias son If Then pudindose prescindir si es necesario de Else, Else If Then y End If

14

mailxmail - Cursos para compartir lo que sabes

15

mailxmail - Cursos para compartir lo que sabes

8. Sentencias SELECT CASE, FOR, NEXT


f.2) Sentencia SELECT CASE: Permite ejecutar una de entre varias acciones en funcin del valor de una expresin. Su representacin general es la siguiente:

En la representacin anterior expresion es una expresin numrica o alfanumrica y etiqueta1, etiqueta2, etc., puede adoptar las formas siguientes: 1.2.3.4.expresion, expresion,...., expresion (de 1 a n veces) expresion To expresion Is operador de relacin expresion combinacin de las anteriores separadas por comas.

En el siguiente ejemplo se muestra una sentencia Select Case en la que se usan las cuatro formas anteriores.

f.3) Sentencia FOR.....NEXT: La sentencia For da lugar a un bucle, y permite ejecutar un nmero de sentencias un cierto nmero de veces. Su forma general es:

16

mailxmail - Cursos para compartir lo que sabes

Este tipo de bucles se usan principalmente para recorrer un rango discreto de valores. Estos bucles son especialmente tiles para recorrer matrices. El funcionamiento es el siguiente: primero se asigna el valor de la expresion1 a la variable y se comprueba si su valor es mayor o menor que expresion2. En caso de ser menor se ejecutan las Sentencias y una vez ejecutadas la variable se incrementa en el valor de expresion3 o en 1 si no hay Step, volvindose a efectuar la comparacin entre la variable y la expresion2 y as sucesivamente hasta que el valor de la variable es mayor que expresion2 y en ese caso se sale del bucle. Todo lo anterior se produce en el caso de ser expresion3 un valor positivo, si fuera negativo las sentencias se ejecutan cuando el valor de la variable es mayor que el de expresion2 y despus de cada ejecucin se decrementa su valor segn lo especificado en expresion3.

17

mailxmail - Cursos para compartir lo que sabes

9. Sentencia DO&WHILE... LOOP


f.4) Sentencia DO...WHILE... LOOP Este bucle repite la ejecucin de un conjunto de sentencias mientras una condicin dada sea cierta La condicion puede ser evaluada antes o despus de ejecutarse el conjunto de sentencias. Sus posibles formas son:

En esta primera forma si condicin es True se ejecuta el grupo de sentencias y se sigue ejecutando hasta que condicin sea False. La evaluacin de la condicin se realiza antes de ejecutar las sentencias, por tanto el rango posible de veces que se ejecutan estas ser de 0 a n, es decir, puede que el bucle no llegue a ejecutarse nunca.

En esta segunda forma, primero se ejecuta una vez el grupo de sentencias y luego se va evaluando condicin, repitindose la ejecucin de las sentencias mientras sea True, por tanto con esta forma el bucle al menos se ejecuta una vez, es decir su rango ser de 1 a n.

18

mailxmail - Cursos para compartir lo que sabes

19

mailxmail - Cursos para compartir lo que sabes

10. Sentencia DO... UNTIL... LOOP


f.5) Sentencia DO... UNTIL... LOOP Repite la ejecucin de un conjunto de sentencias hasta que una condicin dada sea cierta, es decir a diferencia de While, el bucle se repite mientras la condicin sea falsa y se sale del mismo cuando es verdadera. Tiene dos formas generales:

En esta primera forma si condicin es False se ejecuta el grupo de sentencias y se sigue ejecutando hasta que condicion sea True. La evaluacin de la condicin se realiza antes de ejecutar las sentencias, por tanto el rango posible de veces que se ejecutan estas ser de 0 a n, es decir, puede que el bucle no llegue a ejecutarse nunca.

En esta segunda forma, primero se ejecuta una vez el grupo de sentencias y luego se va evaluando condicion, repitindose la ejecucin de las sentencias mientras sea False, por tanto con esta forma el bucle al menos se ejecuta una vez, es decir su rango ser de 1 a n.

20

mailxmail - Cursos para compartir lo que sabes

Nota. En los bucles For, Until, While es posible establecer una salida del bucle al margen de las dadas en las condiciones para recorrer el mismo, esto se hace con la sentencias Exit For, Exit Do.

21

mailxmail - Cursos para compartir lo que sabes

11. Programas informticos. Funciones


g) Funciones y Procedimientos. Los programas informticos suelen tener una gran cantidad de lneas de cdigo (cientos e incluso miles), por ello a medida que aumentan su tamao pueden convertirse en sistemas poco manejables si no fuera por la modularizacin, que es un proceso consistente en dividir un programa muy grande en una serie de mdulos mucho ms pequeos y manejables, a estos mdulos se les denomina en Visual Basic con el nombre de Procedimientos y Funciones. Los Procedimientos y Funciones se usan para realizar tareas comunes mltiples veces sin necesidad de tener que repetir cdigo. La diferencia fundamental entre ambos es que las funciones, al ser llamadas, ejecutan una serie de sentencias y suelen devolver un valor de retorno, por tanto pueden ser usadas en una expresin, mientras que los procedimientos realizan una tarea pero no devuelven ningn valor de retorno. g.1) Funciones. Tienen la siguiente forma general:

NombreFuncion es el nombre de la funcin que se usa para invocarla, parametros son los argumentos de la funcin que se han de pasar cuando se invoca, se indica encerrado entre corchetes [ ] puesto que es opcional, puede haber funciones con argumentos y otras sin argumentos. As Tipo, es el valor que retorna la funcin, tambin es opcional puesto que hay funciones que no devuelven ningn valor. Dentro del grupo de sentencias que contiene la funcin puede existir una salida de la misma mediante Exit Funcition. Tambin suele existir una asignacin al nombre de la funcin de una expresin, y esta expresin ser el valor devuelto por la funcin.

La funcin anterior suma los parmetros a y b, as esta funcin puede ser llamada desde otra parte del programa de la siguiente forma: Dim Resultado as Integer Resultado = Suma (7,8) Msgbox Resultado

22

mailxmail - Cursos para compartir lo que sabes


Una vez ejecutada estas sentencias saldr por pantalla el valor 15. Se observa que la funcin retorna un valor y que se usa en una expresin, en la que ese valor de retorno se le asigna a la variable Resultado. Cuando se llama a una funcin, en principio, el nmero y los tipos de los argumentos de la llamada debe ser igual al nmero y los tipos de los parmetros de la funcin, en caso contrario se produciran errores de programa, as las siguientes llamadas a la funcin suma seran errneas. Resultado = Suma ("Luis", "Pepe") `Da error puesto que los argumentos no son enteros Resultado = Suma (7,8,15) `Da error puesto que el nmero de argumentos es incorrecto.

23

mailxmail - Cursos para compartir lo que sabes

12. Programas informticos. Procedimientos


g.2) Procedimientos.

NombreProcedimiento es el nombre que se usa para invocarlo, parametros son los argumentos que se pasan al procedimiento y son opcionales, pudiendo no existir. Al igual que en el caso de las funciones, puede haber una sentencia dentro del cuerpo del procedimiento que provoque la salida del mismo, que sera Exit Sub. A diferencia de una funcin, los procedimientos no pueden ser usados en una expresin puesto que no devuelven ningn valor, simplemente realizan una tarea, as la forma de llamar un procedimiento sera:

Para sacar por pantalla la raz cuadrada de un nmero usando este procedimiento se puede hacer as: Dim Valor as Double Valor = 48 Raizcuadrada Valor `El resultado obtenido es presentar un mensaje en pantalla con la raiz `cuadrada de 48. Si realizamos la llamada al procedimiento en una expresin, entonces da error. Lo siguiente sera errneo: Dim Valor as Double Dim Resultado as Double Valor = 48 Resultado = RaizCuadrada Valor `No se puede usar un procedimiento en una asignacin. Visual Basic tiene definidas una serie de funciones que pueden resultar de utilidad, algunas de ellas se presentan en las tablas siguientes: Tabla de Funciones para el manejo de caracteres.

24

mailxmail - Cursos para compartir lo que sabes

Tabla de Funciones matemticas

25

mailxmail - Cursos para compartir lo que sabes

13. Editor de mens en Visual Basic


EDITOR DE MENUS EN VISUAL BASIC. En Visual Basic podemos crear aplicaciones que estn gobernadas a travs de un men, es decir, como los tpicos programas del entorno Windows, para ello Visual Basic dispone del Editor de Mens. Para acceder al Editor de Mens debemos pulsar en `Herramientas > Editor de Mens o pulsar sobre el formulario el botn derecho del mouse y seleccionar la opcin `Editor de Mens, entonces se accede a un cuadro como el siguiente:

Para ir aadiendo opciones al men se va rellenando la caja de texto Caption en la que se indica el identificador con el que se ver la opcin en la pantalla, tambin se rellena la caja de texto Name en la que se indica el nombre que tiene la opcin (que ser el que se usa para programar las acciones que ocurran al pulsar sobre ella, al ser una opcin de men conviene que empiece por mnu seguido de mas letras, la primera en mayscula) y una vez hecho esto si se quiere aadir otra opcin se pulsa en el botn `Siguiente y se procede de la misma forma y as sucesivamente. Procediendo de la manera descrita anteriormente, se crearn mens simples, es decir, que no tienen submens asociados. Para crear submens, simplemente se aaden, tal como se describe en el prrafo anterior, nuevas opciones y se sangran pulsando en la flecha derecha, as se indica a Visual Basic que el elemento es parte de un submen del elemento por encima de l. El nmero mximo de niveles permitido es de cuatro. En ocasiones resulta conveniente separar dentro de un submen distintas opciones del mismo, para ello se crea entre las opciones que se desee separar, una nueva opcin del submen y en la propiedad Caption se escribe un guin y se le da cualquier nombre en Name, as se habr generado la separacin entre las opciones. Dentro del cuadro de men tambin se pueden marcar o desmarcar las opciones Enabled Enabled y Visible, lo que har que la opcin est Activa y Visible si las opciones estn marcadas o Inactiva Invisible segn la opcin que est desmarcada. En principio el nombre Name, que se asigna a cada opcin de men debe ser el mismo,

26

mailxmail - Cursos para compartir lo que sabes


salvo en los casos en que se rellene la caja de texto Index, en ese caso dos opciones pueden tener la misma propiedad Name pero deben tener un valor distinto en Index para diferenciar una de otra. La propiedad Shorcut permite establecer una combinacin de teclas que al ser pulsadas acceden directamente a la opcin del submen sin necesidad de pulsar sobre l con el ratn. Una vez que se ha diseado el men, hay que aadir el cdigo necesario para que realice las tareas que se deseen. Los tems (opciones) de los mens admiten slo un evento evento, el click que se produce cuando son seleccionados por medio del ratn o del teclado. Para aadir el cdigo se selecciona en tiempo de diseo el tem correspondiente y se abre la ventana de cdigo que corresponde al evento click de esa opcin de men, procediendo en ese momento a programar en ella la tarea que se desea se realice cuando en tiempo de ejecucin se seleccione esta opcin. La siguiente imagen muestra como quedara el men creado en el Editor de Mens que se muestra en la imagen anterior.

27

mailxmail - Cursos para compartir lo que sabes

14. Visual Basic. Manejo de errores (1/2)


MANEJO DE ERRORES EN VISUAL BASIC. En ocasiones cuando se ejecuta un programa suceden errores que en el caso de no ser tratados adecuadamente pueden poner fin a la ejecucin del mismo, lo cual resulta totalmente inadecuado, por ello en Visual Basic se puede tratar estos errores para que en el caso de producirse se realice algn tipo de accin, como pudiera ser simplemente el lanzar un aviso por pantalla indicando el error que se ha producido permitiendo que el programa contine ejecutndose. Cuando se realiza una aplicacin pueden presentarse distintos tipos de errores, entre ellos: errores de sintaxis y errores de ejecucin. 1 . -Los errores de sintaxis son el resultado de escribir incorrectamente una sentencia. Si se producen estos errores la aplicacin no se puede ejecutar pues el intrprete de Visual Basic no entiende ese trozo de programa, por ello se detectan en tiempo de diseo y se resuelven de forma sencilla pues se marcan automticamente con un color distinto. 2 . -Los errores durante la ejecucin ocurren cuando al ejecutar una aplicacin una sentencia intenta una operacin que es imposible de realizar (ej.: una divisin entre cero). Estos errores terminan con la ejecucin del programa si no son tratados adecuadamente, y para manipularlos se dispone de la sentencia On Error. Ej.: Tenemos una aplicacin con tres cajas de texto, de nombre txtSumando0, txtSuamando1 y txtSuma y un botn llamado cmdSuma en el que programamos lo siguiente:

Cuando se inicie la aplicacin si en la primera caja de texto ponemos el nmero 5 y en la segunda el 6, entonces al pulsar el botn de suma en la tercera se rellenar con el nmero 11 que es la suma de los dos anteriores. Ahora si lo que escribimos es por ejemplo "PEPE" en la primera caja de texto y 7 en la segunda, entonces se

28

mailxmail - Cursos para compartir lo que sabes


producir un error que de no ser tratado nos echa de la aplicacin, concretamente el mensaje antes de terminar con la ejecucin ser el que se ve en la siguiente imagen:

Nota: Completamos esta explicacin en el siguiente captulo.

29

mailxmail - Cursos para compartir lo que sabes

15. Visual Basic. Manejo de errores (2/2)


Ahora bien, si al principio del procedimiento del botn se hubiese usado la sentencia On Error se podra continuar con la ejecucin del programa, quedando la programacin de una forma parecida a lo siguiente:

La primera sentencia del procedimiento anterior On Error Goto Indice, le est indicando al programa que en el caso de encontrarse algn error de ejecucin, el que sea, se vaya a la etiqueta marcada con el nombre Indice: y ejecute las sentencias que contiene. En este caso la etiqueta marcada con el nombre Indice la hemos situado al final del procedimiento y despus del nombre se ponen dos puntos (:) para indicar que se trata de una etiqueta. La programacin que se ha escrito es en este caso muy simple, y lo que hace es detectar que si el nmero del error (los errores en Visual Basic tienen asociado un nmero) es distinto de cero (si el nmero de error es cero eso indica que no hay error), es decir, si se ha producido un error lance un mensaje por pantalla con la indicacin del nmero de error cometido y la descripcin que Visual Basic hace del mismo, y una vez visto el mensaje se continua con la aplicacin, es decir no nos saca del programa. El mensaje que se visualiza es el que se muestra en la imagen siguiente:

En el caso anterior al detectar el error, slo se describe el mismo y se continua con

30

mailxmail - Cursos para compartir lo que sabes


la aplicacin, porque as se program en la etiqueta Indice, ahora bien podran haberse especificado otras sentencias dentro de la etiqueta que tratasen el error de otra manera, por ejemplo devolviendo el control del programa a una sentencia determinada, para ello se usa la funcin Resume.

31

mailxmail - Cursos para compartir lo que sabes

16. Visual Basic. Acceso a base de datos. Control data


ACCESO A BASES DE DATOS. Visual Basic proporciona los elementos necesarios para la construccin de aplicaciones que se dediquen a gestionar bases de datos. EL CONTROL DATA. El control Data puede tomarse directamente de la caja de controles iniciales que proporciona Visual Basic y su representacin en el formulario es la siguiente:

Este control nos permite acceder a distintos tipos de bases de datos (Access, dBase, Paradox, etc.). Las propiedades ms importantes del control data a las que se accede seleccionando el control y pulsando la tecla de funcin F4 son: 1.- Connect: Se indica el tipo de base de datos con la que se va a trabajar, en nuestro caso usaremos Access. 2.- DataBaseName: Se especifica el lugar y el nombre de la base de datos a la que se quiere acceder. Ej.: C:\VB6\Biblio.mdb 3.- DataSource: Indica el conjunto de registros (tabla, consulta o instruccin SQL) con la que se va a trabajar. Una vez establecidas estas tres propiedades del control data (el tipo de base de datos, la base de datos, y el conjunto de registros -tabla, consulta o instruccin SQL-) ya podemos acceder a los datos contenidos en los campos de esos registros para trabajar con ellos. Para hacer referencia al conjunto de registros con los que vamos a trabajar se escribe el nombre del control data seguido de un punto (.) y de la palabra reservada Recordset. A continuacin toda la teora de acceso a datos se ir presentando a la vez que se indican los pasos para crear un Ejemplo con control Data que permita entre otras cosas las siguientes: Presentacin en pantalla del contenido de una tabla de una base de datos Access y creacin de controles que nos permitan manipular la misma, movindonos a travs de los registros, eliminando unos, aadiendo otros nuevos, buscando los que cumplan determinadas condiciones, etc., etc....

32

mailxmail - Cursos para compartir lo que sabes

17. Crear un control data (1/6)


Creamos un control data con los siguientes valores: Name: datVisitas Caption: Personal DatabaseName : C: \Curso\Visitas.mdb DataSource: Personal Hemos creado el control data datVisitas para acceder a una base de datos ubicada en el directorio Curso cuyo nombre es Visitas.mdb y que tiene una tabla llamada Pesonal a la que accedemos con el control data recin creado. La tabla Personal tiene los siguientes campos: Nif, Nombre, Apellido1, Apellido2, Direccin, Cpostal, Municipio, Provincia. Ahora para referirnos a un campo concreto del conjunto de registros Recordset al que se tiene acceso se hara as: datVisitas.Recordset!Nif datVisitas.Recordset!Nombre datVisitas.Recordset!Apellido1 datVisitas.Recordset!Apellido2 ...... ...... Para poder seleccionar el registro de la tabla al que queremos acceder se usan los mtodos MoveFirst, MoveLast, MoveNext, MovePrevious. datVisitas.Recordset.Movefirst > Nos situamos en el primer registro de la tabla datVisitas.RecordsetMovelast > Nos situamos en el ltimo registro de la tabla datVisitas.RecordsetMoveNext > Nos situamos en el siguiente registro de la tabla datVisitas.Recordset.MovePrevious > Nos situamos en el registro anterior. Para presentar en pantalla el contenido de un registro concreto de la tabla Personal y poder movernos por el resto desde el primero hasta el ltimo y hacia delante y hacia atrs se puede hacer as: Se crea una caja de texto con las siguientes propiedades: Name: txtPersonal Text: `Se borra el contenido, se deja en blanco DataSource: datVisitas DataField: Nif Con la propiedad DataSource de la caja de texto se vincula la misma a un control Data, en este caso con datVisitas que es el que se est usando. Con la propiedad DataField la caja de texto queda vinculada al campo que se especifique del conjunto de registros a los que se accede con el control Data, en este caso el campo Nif de la tabla Personal, que es la tabla a la que se accede con

33

mailxmail - Cursos para compartir lo que sabes


datVisitas.

34

mailxmail - Cursos para compartir lo que sabes

18. Crear un control data (2/6)


Una vez realizado lo anterior (captulo precedente) se pulsa en el botn derecho del mouse sobre la caja de texto recin creada, eligiendo la opcin Copiar dentro del men que se depliega en ese momento, y se vuelve a pulsar el botn derecho del mouse eligiendo en esta ocasin la opcin Pegar, en ese momento Visual Basic lanza un mensaje indicando que ya existe un control igual al que vamos a agregar y pregunta si se desea crear una matriz de controles, si elegimos la opcin NO, entonces se crea un control Text igual al anterior en todas sus propiedades salvo en el nombre, pero si se elige SI se crea un control igual incluso en el nombre pero con una propiedad Index distinta para diferenciar uno de otro, en este caso convendra elegir SI y el resultado es que la caja de texto nueva se llamar txtPersonal(1), su valor Index es 1, y la que ya tenamos creada pasar a nombrarse como txtPersonal(0), su valor Index es 0. Volvemos a desplegar el men con el botn derecho del mouse tantas veces como sea necesario para seleccionar la opcin Pegar y crear tantas cajas de texto como campos tienen los registros de la tabla Personal, en este caso 8, es decir se crear desde txtPersonal(0) hasta txtPersonal(7). En este momento se tienen los ocho controles necesarios para presentar en pantalla el valor de cada uno de los campos, sin embargo todas las cajas de texto estaran vinculadas al mismo campo, concretamente Nif, por ello en cada una se cambia la propiedad DataField para asociar cada una a un campo distinto, quedando as: TxtPersonal(0) TxtPersonal(1) TxtPersonal(2) TxtPersonal(3) TxtPersonal(4) TxtPersonal(5) TxtPersonal(6) TxtPersonal(7) > > > > > > > > DataField: Nif DataField: Nombre DataField: Apellido1 DataField: Apellido2 DataField: Direccin DataField: CPostal DataField: Municipio DataField: Provincia

Una vez hecho esto creamos cuatro botones con las siguientes propiedades: Primer botn: Name: cmdPrimero Caption: Primer Registro Segundo botn: Name: cmdSiguiente Caption: Siguiente Registro Tercer botn: Name: cmdAnterior Caption: Registro Anterior Cuarto botn: Name: cmdUltimo Caption: ltimo Registro

35

mailxmail - Cursos para compartir lo que sabes


Una vez creados estos botones los programamos para que al pulsar sobre ellos se acceda al primer registro, al siguiente, al anterior y al ltimo, esto se hara as:

Delante de cada caja de texto se creara una etiqueta en la que se escribe el nombre del campo cuyo contenido se muestra.

36

mailxmail - Cursos para compartir lo que sabes

19. Crear un control data (3/6)


Con lo anterior (captulo precedente) al ejecutar el programa se tendra una aplicacin que accede a los registros de una tabla de una base de datos y permite moverse por ellos del primero al ltimo, hacia delante y hacia atrs usando los botones recin creados y tambin mediante el control Data de nombre datVisitas. Para moverse en la tabla igual que se hace con los botones se puede usar directamente el control Data tal como se indica en la siguiente imagen:

La apariencia que podra tener el programa anterior sera algo as:

Cuando se est recorriendo un conjunto de registros, un Recordset es interesante detectar los momentos en los que se llega al principio o al final del conjunto, concretamente, en el caso anterior si estamos en el ltimo registro no tendra sentido el pulsar en el botn de `Siguiente Registro o si estamos en el primero hacerlo en el botn de `Registro Anterior. La marca que indica si estamos en el primer registro del Recordset es BOF y la que indica que hemos llegado al ltimo es EOF. En el ejemplo actual sera conveniente tener en cuenta la situacin del registro que estamos visualizando en los casos de ser el primero o el ltimo, lo cual afecta a los botones cmdSiguiente y cmdAnterior, que cambiaran su programacin quedando de la siguiente forma:

La explicacin a este cambio de programacin del botn es: La tabla de datos en Access reserva un registro para indicar que se est al final del fichero, este registro es posterior al ltimo que a nuestros efectos sera vlido, por tanto si estamos en el

37

mailxmail - Cursos para compartir lo que sabes


ltimo registro vlido y nos movemos hacia delante accedemos al registro que contiene la marca EOF de final de fichero lo cual no tendra sentido, por tanto en ese caso nos situamos en el ltimo registro vlido que es donde estbamos antes de mover hacia delante, para hacerlo se usa el mtodo MoveLast y luego se indica por pantalla.

La explicacin a este cambio de programacin del botn es: La tabla de datos en Access reserva un registro para indicar que se est al inicio del fichero, este registro es anterior al primero que a nuestros efectos sera vlido, por tanto si estamos en el primer registro vlido y nos movemos hacia atrs accedemos al registro que contiene la marca BOF de principio de fichero lo cual no tendra sentido, por tanto en ese caso nos situamos en el primer registro vlido que es donde estbamos antes de mover hacia atrs, para hacerlo se usa el mtodo MoveFirst y luego se indica por pantalla.

38

mailxmail - Cursos para compartir lo que sabes

20. Crear un control data (4/6)


Creemos dos nuevos botones que al pulsarlos nos permitan aadir y eliminar registros de la tabla de datos, para ello se usan los mtodos AddNew que aade un nuevo registro y el mtodo Delete que borra el registro actual. Las propiedades de estos dos nuevos botones sern: Botn para aadir registros: Caption: Aadir Registro Name: cmdAade Botn para eliminar registros: Caption: Eliminar Registro Name: cmdElimina La programacin de estos botones ser:

Al pulsar en el botn cmdAade, se vacan todas las cajas de texto y habr que escribir en ellas los valores correspondientes al nuevo registro que vamos a aadir a la tabla de datos, slo cuando se escriba en alguna de las cajas de texto se realiza efectivamente la adicin del nuevo registro.

Al pulsar el botn cmdElimina, el registro actual, el que se est viendo en ese momento en pantalla es borrado de la tabla de datos mediante el mtodo Delete, pero adems se pone la sentencia datVisitas.Refresh para que refresque el conjunto de datos, y por ello, como estbamos situados en un registro y este ya no existe nos situamos en el primero. Si se van eliminando registros y llega un momento que no hay ninguno, entonces al pulsar en este botn no puede proceder a la eliminacin del registro producindose un error que finalizara la ejecucin de la aplicacin, para evitar lo anterior se usa la sentencia Error que permite manejar el On error que se produce, que en este caso es el que tiene como nmero el 3021. Una forma posible como quedara la programacin de este botn sera ahora:

39

mailxmail - Cursos para compartir lo que sabes

Al producirse un error, el control del programa pasa a las sentencias de la etiqueta Indice, en ese momento si detecta que el error es el 3021, es decir se est intentando borrar un registro y no hay nada que borrar, entonces saca un mensaje por pantalla indicando que la tabla `Personal est vaca, adems hace referencia a la tabla por su nombre porque se lo hemos indicado con datVisitas.Recordset.Name datVisitas.Recordset.Name El mensaje sera como el de la imagen siguiente: .

40

mailxmail - Cursos para compartir lo que sabes

21. Crear un control data (5/6)


Tipos de Recordset. Hasta este momento hemos establecido las propiedades Name, Caption, DatabaseName y RecordSource de un control Data que ha accedido a una tabla de una base de datos; en este momento establecemos una nueva propiedad que es RecordsetType que indica el tipo de objeto Recordset que se va a crear y que puede ser uno de los tres siguientes: 0- Table 1- Dynaset 2- Snapshot La pantalla de propiedades del control data para seleccionar el tipo de Recordset sera como la siguiente imagen:

Cuando se crea un control Data, Visual Basic ofrece por defecto el tipo Dynaset. En funcin del tipo de Recordset elegido la forma de tratar los datos (buscar, moverse, etc.) se hace de distinta forma. Las caractersticas ms importantes de los tres tipos son las siguientes: 0- Table: Con este tipo de Recordset slo podemos acceder a una tabla existente en la base de datos, pero NO a una consulta. Los Table son los nicos tipos que soportan ndices, es decir, se puede indicar el ndice de la tabla que vamos a usar y lograr con ello rpidas bsquedas de registros. Cuando se cambian datos, estos estn disponibles para otros usuarios de forma automtica. 1- Dynaset: Conjunto dinmico de registros de una o varias tablas o de una o varias consultas existentes en la base de datos. Una ventaja de Dynaset frente a Table es que podemos crear un conjunto de datos de varias tablas o consultas y no de una nica tabla tal como ocurre con el tipo Table. Una desventaja es que no se pueden usar ndices para las bsquedas.

41

mailxmail - Cursos para compartir lo que sabes


2- Snapshot: Conjunto esttico de registros de una o varias tablas o de una o varias consultas existentes en la base de datos. La principal diferencia con Dynaset es que no permite actualizaciones, por ello suele usarse para hacer listados o visualizar informacin en la que los datos no sern modificados. Una vez conocidos los distintos tipos de Recordset que se pueden usar y las caractersticas principales de los mismos, aadiremos dos nuevos botones al ejemplo que estamos desarrollando, uno para realizar bsquedas y otro para efectuar modificaciones de datos. Botn para realizar bsquedas: Caption: Buscar Name: cmdBuscar El botn recin creado se usar para acceder a registros que cumplan una serie de condiciones. En este momento hay que decidir el tipo de objeto Recordset que se va a usar para efectuar las bsquedas. Elegimos el tipo Table, ya que estamos trabajando nicamente sobre una tabla de una base de datos, por tanto se establece en el control Data datVisitas la propiedad 0-Table en RecordsetType.

42

mailxmail - Cursos para compartir lo que sabes

22. Crear un control data (6/6)


El tipo Table es el nico que permite usar los ndices de una tabla de una base de datos para realizar las bsquedas, en este caso, usaremos el ndice NIF establecido previamente en la tabla personal que nos permitir buscar los registros con un NIF determinado. Para realizar estas bsquedas se usan los mtodosIndex y Seek, el primero para indicar el ndice que se va a usar y el segundo para establecer el valor que se va a buscar en el campo afectado por el ndice indicado. Las sentencias quedaran as: `Para indicar que vamos a usar el indice NIF datVisitas.Recordset.Index = "NIF" `Para buscar un NIF concreto, por ejemplo el "02154879L" datVisitas.Recordset.SeeK "=", "02154879L" Si las dos sentencias anteriores se ponen en la lnea de cdigo del botn cmdBuscar, entonces se buscara de manera rpida el primer registro cuyo NIF es el "02154879L", y los datos del mismo son los que se presentaran en pantalla, ahora bien, si no hay ningn registro entonces se producira un error. Para evitar que el error producido al no encontrar el NIF buscado termine la ejecucin de la aplicacin se puede controlar con el mtodo NoMatch, que indica que no se ha encontrado el registro buscado. Aadiramos la siguiente sentencia al botn:

Con esto se indica que en el caso de no encontrar el registro, saque un mensaje por pantalla indicndolo y se site en el primer registro, as no saltar el error. Tal como quedara la programacin del botn cmdBuscar, slo se podra realizar la bsqueda de un determinado NIF, lo cual no resultara muy til, para evitar esta situacin hay que crear un mecanismo de entrada de datos que permita al usuario indicar en cada momento el NIF a buscar, para esto se puede crear una nueva caja de texto que podemos llamar txtBusqueda en la que especificar el NIF que se quiere encontrar, entonces la programacin del botn de bsqueda quedara as:

En la programacin del botn, ahora no se indica que busque un NIF concreto y siempre el mismo, sino que lo que busca es lo que se escriba en la nueva caja de texto txtBusqueda. En este momento se puede buscar cualquier NIF usando el

43

mailxmail - Cursos para compartir lo que sabes


texto txtBusqueda. En este momento se puede buscar cualquier NIF usando el ndice NIF, pero puede que en la tabla haya ms ndices que pueden ser usados para realizar bsquedas, ya que puede interesar buscar por municipio, provincia, nombre, etc... Supongamos que en la tabla Personal hay un ndice por cada campo que tiene el mismo nombre que ese campo, es decir tendramos los siguientes ndices: Nif, Nombre, Apellido1, Apellido2, Direccion, Municipio, Localidad y Provincia. Por tanto podemos usar esos ndices para buscar en los distintos campos de la tabla de datos, para ello habra que indicar al botn de bsqueda cmdBuscar, ya no slo la cadena que se desea encontrar sino el ndice que hay que utilizar, para conseguir esto creamos una nueva entrada de datos en la que se especifique ese ndice, esto se puede hacer creando otra caja de texto que llamaremos txtIndice en la que especificaremos el ndice deseado. Una vez hecho esto, la programacin del botn de bsqueda cambiara nuevamente para quedar de la siguiente forma:

En este momento las bsquedas son mucho ms dinmicas puesto que podemos seleccionar distintos ndices y distintos valores para realizarlas. Con esta forma de buscar se accede al primer registro que cumpla la condicin especificada, y los registros quedan ordenados segn el ndice usado. Convendra en el botn anterior usar tambin una sentencia On Error para controlar los distintos errores que se pudieran producir, como el que ocurrira si en txtIndice se indica un nombre de ndice distinto a los que tiene la tabla de datos.

44

mailxmail - Cursos para compartir lo que sabes

23. Crear un control data. Botn de modificaciones (1/4)


Hasta aqu se ha diseado un programa que permite acceder a una tabla de una base de datos, editar sus registros, moverse a travs de ellos, eliminarlos, aadir otros nuevos, realizar bsquedas y modificarlos. La ltima tarea, la de modificacin de registros se realiza sin ms que escribir en la caja de texto correspondiente el valor de modificacin, sin embargo esta no es una buena manera de realizar los cambios, es preferible y ms seguro tener un botn que nos permita confirmar o rechazar los cambios que hemos ido realizando al escribir nuevos valores en la caja de texto, esto implica no obstante, una visin distinta del ejercicio que venimos realizando y que afectar en alguna medida a casi todos los botones programados en el mismo. Los cambios a realizar antes de crear el botn que se encargue de las modificaciones son: 1 ) . - En el diseo actual del ejercicio las cajas de texto txtPersonal(0), txtPersonal(1),....,txtPersonal(7), estaban vinculadas al control datVisitas a travs de la propiedad DataSource y de DataField para as descargar en las cajas de texto de manera automtica los campos de la tabla de datos, sin embargo en la nueva orientacin del ejercicio esto no es adecuado, por ello se vacan de contenido las propiedades DataSource y DataField de todas las cajas de texto. 2 ) . - Como ya no se descargan automticamente los datos en las cajas de texto debido al cambio producido en el punto 1, entonces hay que realizar la descarga de otra manera, esto lo haremos mediante un procedimiento que asigne a cada caja de texto el valor correspondiente del campo al que representa en el registro actual, de esta manera, al escribir en la caja de texto no se modifica directamente en la tabla de datos, dejando esta tarea al nuevo botn que crearemos para las modificaciones. El procedimiento se puede establecer en un modulo o en el Formulario y lo llamaremos siempre que se necesite. Podramos crearlo en el Formulario as:

Este procedimiento descarga el valor de cada campo en una caja de texto. Lo mismo se podra escribir de una forma ms sencilla, ya que el valor Index que identifica las distintas cajas de texto se corresponde con el lugar que ocupan los campos en la tabla de datos, as aprovechando esta circunstancia, el procedimiento quedara as:

45

mailxmail - Cursos para compartir lo que sabes

En esta nueva forma de escribir el procedimiento hemos usado el bucle For para recorrer los campos de la base de datos y las cajas de texto e ir haciendo la descarga. En ocasiones los campos de las tablas de datos contienen valores Nulos, en ese caso cuando se va a descargar un valor Null en una caja de texto se produce un error, por ello, afinando ms la forma anterior del procedimiento, este quedara as:

En esta nueva forma, antes de realizar la descarga se comprueba si el valor es distinto de Null y en solo en ese caso se realiza no haciendo nada en caso contrario. Para detectar si un campo contiene un valor Null se usa el mtodo IsNull.

46

mailxmail - Cursos para compartir lo que sabes

24. Crear un control data. Botn de modificaciones (2/4)


3 ) . - En los botones para situarnos en el primer registro, en el siguiente al activo, en el anterior, en el ltimo y en el de realizar las bsquedas, debemos incluir en sus cdigos de programacin una llamada al procedimiento Edicin recin creado puesto que las cajas de texto ya no se actualizan por si solas, as esos botones no slo nos deben situar en el registro correspondiente de la tabla de datos, sino que adems deben editarlo para que el usuario lo vea en pantalla y sepa donde est situado. Los cdigos de programacin de estos botones quedaran as:

47

mailxmail - Cursos para compartir lo que sabes

En la programacin de estos botones, en algunos se ha usado On Error para detectar y controlar errores y en otros no, convendra no obstante incluir el controlador de errores en todos ellos.

48

mailxmail - Cursos para compartir lo que sabes

25. Crear un control data. Botn de modificaciones (3/4)


4 ) . - Para modificar el contenido de los registros se crea un nuevo botn que llamamos cmdModificar. En genereal, para modificar un registro hay que indicar los valores que toman los campos que queremos modificar en ese registro, por ejemplo si se quiere cambiar el valor del campo Nombre de un registro hay que indicar el nuevo valor que este campo va a tener, por ejemplo "Antonio", esto se hace as: datVisitas.Recordset!Nombre = "Antonio" Adems es necesario que las sentencias en las que se indican los valores nuevos que toman los campos se encierren entre los mtodos Edit y Update, as para que la asignacin de la cadena de caracteres "Antonio" se efectuase correctamente, no bastara con la sentencia anterior, sino que quedara de la siguiente forma: datVisitas.Recordset.Edit datVisitas.Recordset!Nombre = "Antonio" datVisitas.Recordset.Update Para modificar ms de un campo, se indican todas las sentencias de modificacin entre Edit y Update. datVisitas.Recordset.Edit datVisitas.Recordset!Nombre = "Antonio" datVisitas.Recordset!Nif = "08369548K" datVisitas.Recordset!Apellido1 = "Snchez" datVisitas.Recordset!Municipio = "Sevilla" datVisitas.Recordset.Update En el caso del botn cmdModificar, cuando se pulse se modifica el registro actual de la tabla de datos con lo escrito en ese momento en las cajas de texto, es decir, ahora ya no basta con escribir un nuevo valor en una caja de texto para actualizar los datos de la tabla sino que hay que pulsar en cmdModificar. El cdigo de este botn quedara as:

49

mailxmail - Cursos para compartir lo que sabes

Al pulsar este botn se actualizan los valores de la tabla de datos, para ello hemos usado el mtodo Edit y Update entre los cuales hay que indicar las modificaciones de campos para que estas tengan efecto.

50

mailxmail - Cursos para compartir lo que sabes

26. Crear un control data. Botn de modificaciones (4/4)


5 ) . - En el botn para aadir registros los cambios a realizar no son tan pequeos como en los anteriores, esta accin cambia de forma sustancial. Al pulsar este botn lo primero que se debe hacer es vaciar todas las cajas de texto en las que se indicarn los valores de los campos del nuevo registro, y una vez hecho esto habr de procederse a aadirlo realmente, por ello creamos otro botn que se hace visible al pulsar el primero y que lo llamaremos cmdConfirmarAadir. La programacin del primer botn para aadir registros quedara as:

En el cdigo anterior se usa el bucle For para ir recorriendo todas las cajas de texto y vaciarlas y una vez hecho esto se hace visible el nuevo botn creado para confirmar que se aade el registro. En este momento se rellenan los campos del nuevo registro que se quiere crear y al terminar se pulsa en el botn de confirmacin para hacer efectiva la adiccin del nuevo registro. El cdigo de programa del botn de confirmar quedara as:

En este control se vuelve a usar el bucle For para ir aadiendo a cada campo lo indicado en las cajas de texto y este bucle est contenido entre los mtodos AddNew AddNew y Update necesarios para que el proceso funcione de manera correcta. Una vez aadido el registro el propio botn de confirmacin se autoesconde.

51

mailxmail - Cursos para compartir lo que sabes

27. Crear un control data. Control Dbgrid (1/3)


Con todo lo anterior hemos desarrollado un ejercicio de dos formas distintas, la segunda mejor que la primera que nos permite acceder y manipular el contenido de una base de datos. Hasta aqu, siempre se ha accedido a los registros uno a uno, pero adems existe la posibilidad de visualizar el contendido total de la tabla de datos, para ello se puede usar el control Dbgrid. Este control no est disponible por defecto en Visual Basic, sino que hay que agregarlo al proyecto, para ello se accede a la opcin de men `Proyecto > Componentes y se obtiene el siguiente cuadro:

En el cuadro anterior se pulsa en el botn Examinar y se busca el archivo dbgrid32.ocx dbgrid32.ocx con lo que se dispondr de una nueva opcin dentro del cuadro, que hay que seleccionar y que es la siguiente:

Una vez seleccionada esta, se dispone en el cuadro de controles del proyecto de un nuevo elemento para crear controles Dbgrid en los formularios. El control Dbgrid Dbgrid presenta el contenido del control Data al que est asociado lo que se determina en la propiedad DataSource del Dbgrid. En el proyecto que se est desarrollando podemos crear un control Dbgrid al que llamamos dbDatVisitas y se asocia al control Data datVisitas, con ello se visualiza en el control recin creado la tabla de datos Personal con todos sus campos. Si se quiere ver slo alguno de los campos de la tabla de datos o se quiere cambiar la posicin en que se visualizan, entonces, entiempo de diseo se pulsa en el botn derecho del ratn sobre el control y seleccionando `Propiedades accedemos a un cuadro para personalizar el aspecto del control dbgrid, como el de la siguiente imagen:

52

mailxmail - Cursos para compartir lo que sabes

El aspecto de un control dbgrid presentando los datos del control Data al que est asociado ser como el que sigue:

Si se desea que No se puedan cambiar los datos de los campos directamente, es necesario poner la propiedad AllowUpdate a False.

53

mailxmail - Cursos para compartir lo que sabes

28. Crear un control data. Control Dbgrid (2/3)


Despus de tener una forma de acceder a la visualizacin de todos los datos de la tabla a travs de dbDatVisitas y otra para acceder a uno en concreto con las cajas de texto y botones diseados anteriormente, una forma de situarse en un registro en particular, aparte de usando en botn cmdBuscar, sera accediendo a la totalidad de los registros a travs de dbDatVisitas y una vez situados en el que se desee haciendo doble click sobre l presentar todas las cajas de texto y botones ya diseadas y con los datos del registro seleccionado, para hacer esto, en primer lugar convendra colocar en un contenedor, por ejemplo un control frame las cajas de texto y botones para visualizacin de registros, este frame disearle con la propiedad Visible a False y cuando se hace el doble click en en dbgrid se hace visible el frame e invisible el dbgrid. Lo hacemos as: Creamos un control llamado fraData con la propiedad Visible a False, dentro del cual pegamos las etiquetas, botones, cajas de texto, etc., usadas para la visualizacin de los registros. El evento Dbclick del control dbDatVisitas queda con el siguiente cdigo:

Con esto, al hacer doble click en tiempo de ejecucin sobre dbDatVisitas, en primer lugar se hace una llamada al procedimiento `Edicion que edita en las cajas de texto los valores de los campos del registro en el que estemos situados, que ser aqul sobre el que se hizo el doble click, y luego se hace Visible el control fraData y se esconde dbDatVisitas para situarnos en la pantalla de edicin del registro. Toda la ejecucin del ejercicio se ha realizado hasta ahora a partir de un control Data Data con la propiedad RecordsetType a Table, y accediendo a una tabla ya creada dentro de una base de datos. Ahora vamos a usar un nuevo control Data con la propiedad RecordsetType en Dynaset para acceder ya no a una tabla sino a una `consulta de una tabla. En la base de datos Visitas.mdb, adems de la tabla de Personal, hay otra tabla llamada Visitas. Supongamos que esta base de datos se est usando para llevar el control de las personas que visitan un museo, dando de alta en la tabla Personal a los nuevos visitantes y en la tabla Visitas las veces que cada visitante accede al museo, as las tablas estarn relacionadas por un campo comn, el Nif, de esta forma cuando un visitante llega al museo se teclea su Nif, accediendo a sus datos personales en caso de haber realizado alguna visita anterior y dando de alta los datos de la nueva visitas. Si por el contrario es la primera visita realizada entonces hay que dar de alta tanto los datos personales como los de la visita. No podr aadirse ningn registro a la tabla Visitas con un determinado Nif, mientras este Nif no est dado de alta en la tabla Personal. Los campos de la tabla Visitas, sern: Nif, PrecioVisita, DuracinVisita, FechaVisita,

54

mailxmail - Cursos para compartir lo que sabes


Los campos de la tabla Visitas, sern: Nif, PrecioVisita, DuracinVisita, FechaVisita, TipoDiaVisita. Para completar el ejercicio aadiremos dos controles Data nuevos y dos nuevos botones, para acceder a la tabla Visitas y dar de alta las nuevas visitas que se vayan produciendo y para acceder a una consulta de las tabla Visitas en la que estn slo las realizadas por un determinado Nif. Los dos nuevos botones se crean dentro del control fraData, y tendrn las siguientes propiedades: Botn para alta de visitas: Caption: Nueva Visita Name: cmdNuevaVisita Botn para consultar visitas: Caption: Consultar Visitas Name: cmdConsultaVisitas

55

mailxmail - Cursos para compartir lo que sabes

29. Crear un control data. Control Dbgrid (3/3)


Con el primer botn se accede a un control frame que contenga las cajas de texto y botones necesarios para dar de alta un nuevo registro en la tabla Visitas, para acceder a esta tabla se usa un nuevo control Data en tipo Table que podemos llamar datAltaVisitas. El procedimiento para hacer esto es igual que para dar de alta nuevos registros en la tabla de Personal ya descrito anteriormente, por ello no se detalla cmo hacerlo. La imagen siguiente muestra un control frame que contiene los elementos necesarios para dar de alta en la tabla Visitas.

Con el nuevo botn cmdConsultaVisitas se accede a las visitas realizadas a lo largo del tiempo por una determinada persona, estas visitas se presentarn en pantalla a travs de un control dbgrid asociado a un nuevo control Data que llamaremos datConsulta, en el que en su propiedad RecordsetType se pondr Dynaset y se dejar en blanco la propiedad RecordSource ya que ahora no se conectar con una tabla o consulta ya definida, sino que esta conexin se establecer en el cdigo del botn cmdConsultaVisitas. En el botn cmdConsultasVisitas se establecer una cadena de caracteres, que se pasar a la propiedad RecordSource del control Data para acceder a la consulta de datos que en cada momento se pida. La cadena creada, en realidad es una instruccin en el lenguaje de bases de datos SQL, por ello es necesario conocer algo de este lenguaje, concretamente la sentencia Select: La sentencia Select permite consultar informacin de una tabla pudindose seleccionar una, varias o todas las columnas (campos) de la tabla. Puede incluir varias clusulas opcionales y como mnimo debe incluir la clusula obligatoria From a travs de la cual se especifica la tabla o tablas a las que se va a acceder para obtener sus columnas (campos). Puede incluir tambin la clusula Order By que indica la columna o columnas que se van a usar para ordenar los datos. Puede adems incluir la clusula Where para especificar la condicin que han de cumplir los registros que forman parte de la consulta.

56

mailxmail - Cursos para compartir lo que sabes


Para crear una consulta obteniendo informacin de los campos Nif y PrecioVisita de la tabla Visitas ordenada por Nif, se hara as: Select Nif, PrecioVisita From Visitas Order By Nif. Si ahora queremos restringir la consulta anterior slo para aquellos registros que cumplan una condicin, por ejemplo Nif = "01545454X", entonces lo especificamos con la clusula Where quedando la consulta as: Select Nif, PrecioVisita From Visitas Where Nif = "01545454X" Order By Nif. Si se quiere obtener una consulta de todos los campos de la tabla Visitas se pueden escribir todos ellos o bien usar el smbolo asterisco (*). Para obtener la consulta anterior con todos los campos, quedara as: Select * From Visitas Where Nif = `01545454X Order By Nif.

57

mailxmail - Cursos para compartir lo que sabes

30. Crear un control data. cmdConsultaVisitas (1/2)


Una vez conocido como se crea la consulta, el cdigo para ello se programa en el botn cmdConsultasVisitas, pero antes creamos un nuevo control dbgrid que llamamos dbConsulta que se asocia al control datConsulta para presentar por pantalla los registros seleccionados. Despus de crear este nuevo control, el cdigo de cmdConsultaVisitas ser:

Todas las sentencias del botn aparecen comentadas en el propio cdigo, obsrvese no obstante, que en la creacin de la cadena consulta, primero se escribe una parte entre comillas dobles, luego se concatena con el valor que tenga la caja de texto txtPersonal(0) y luego se vuelve a concatenar con otra parte escrita directamente entre comillas dobles. Lo anterior ha de ser as para especificar la condicin que ha de cumplir la consulta, que no es otra que el campo Nif de la tabla Visitas sea igual al campo Nif del registro de la tabla Personal actual, que es el que en ese momento contiene la caja de texto txtPersonal(0). La cadena Consulta se crea pues, concatenando las tres partes siguientes: 1.- "SELECT * FROM VISITAS WHERE NIF = `" Se escribe la primera parte de la sentencia entre comillas dobles, obsrvese que el ltimo carcter encerrado entre comillas dobles es una comilla simple (`) para que al concatenar todas las partes el valor del Nif aparezca encerrado entre comillas simples. 2.- txtPersonal(0) Esta segunda parte vara en funcin del valor que contenga la caja de texto txtPersonal(0), cuyo contenido es lo que se concatenar para crear la cadena. 3.- "' ORDER BY FechaVisita" Tercera parte escrita al igual que la primera entre comillas dobles en la que el primer carcter es una comilla simple (), para encerrar el valor del Nif. Con todo lo anterior, al pulsar en el botn cmdConsultaVisitas, se accede a un

58

mailxmail - Cursos para compartir lo que sabes


control dbgrid que contiene una consulta de las visitas realizadas por una persona concreta.

59

mailxmail - Cursos para compartir lo que sabes

31. Crear un control data. cmdConsultaVisitas (2/2)


Hasta aqu el ejercicio que nos ha permitido acceder y manipular datos de una base de datos de formas distintas y usando valores distintos en la propiedad RecordsetType de los controles Data. Este es un ejercicio muy simple especialmente en lo que se refiere a las consultas. Nota: El ejercicio anterior se ha realizado usando la tecnologa de acceso a datos DAO (Data Access Object) y usando los controles que Visual Basic ofrece para esta forma de acceso a datos, tales como el control data, sin embargo se podra haber desarrollado sin usar el control data sino creando variables que permiten conectarse con bases de datos, crear conjuntos de registros, etc. Ej.: En el ejercicio desarrollado, el primer control Data acceda a una base de datos llamada "C:\Curso\Visitas.mdb" y dentro de esa base de datos la tabla `Personal. Esto tambin se puede hacer sin ningn control data de la siguiente forma:

As, para referirnos por ejemplo al campo Nombre de la tabla de personal, en el ejemplo lo hemos hecho de la siguiente forma:

Tambin Visual Basic incorpora otra tecnologa de acceso a datos llamada ADO que se podra haber usado para realizar este ejercicio. El motivo fundamental por el que se ha elegido usar el control Data de DAO como elemento fundamental para desarrollar este ejercicio es que este es un curso de iniciacin a la gestin de bases de datos desde Visual Basic, y todo lo aprendido aqu ser de utilidad si se desea desarrollar aplicaciones con DAO sin usar apenas el control Data o utilizando ADO. NOTA: Con este captulo hemos llegado al final del curso.

60

Vous aimerez peut-être aussi