Visual Basic 6. Curso De Introducción Autor

Preview only show first 6 pages with water mark for full document please download

Transcript

mailxmail - Cursos para compartir lo que sabes Visual Basic 6. Curso de introducción Autor: Gabriel Martín Gutiérrez [Ver curso online] Descubre miles de cursos como éste en www.mailxmail.com 1 mailxmail - Cursos para compartir lo que sabes Presentación del curso Tutorial de Visual Basic 6. El primer punto de este curso serán los controles y formularios que son los elementos gráficos que forman parte de las aplicaciones en Visual Basic. Luego, veremos el entorno de programación y la sintaxis Visual Basic, analizando lo que son, comentarios, sentencias, variables, tipos de datos, operadores, sentencias de control, además de las funciones y procedimientos. Más adelante estudiaremos el Editor de Menús de Visual Basic, el manejo de errores en Visual Basic y el acceso a bases de datos, desarrollando la teoría de acceso a datos DAO, una introducción a SQL, y el comentario ADO. Desarrollaremos la creación de un control data, controles Dbgrid, el botón cmdConsultasVisitas, entre otros elementos que, como parte del conjunto, te dejarán un curso introductorio serio y completo de Visual Basic. Visita más cursos como este en mailxmail: [http://www.mailxmail.com/cursos-informatica] [http://www.mailxmail.com/cursos-programacion] ¡Tu opinión cuenta! Lee todas las opiniones de este curso y déjanos la tuya: [http://www.mailxmail.com/curso-visual-basic-6-introduccion/opiniones] Cursos similares Cursos Valoración Alumnos Vídeo Algoritmos en QBASIC. Manual Este manual de QBASIC es una colección linkografica y bibliográfica sobre el uso de QBASIC frente a la propuesta de solucionar los casos más comunes d... [26/10/09] 3.046 Webs dinámicas con PHP El lenguaje PHP es un lenguaje de programación de estilo clásico, nada que ver con el HTML, XML o WML. Se parece mucho más al Java o Javascript pero, a diferencia de esto... [10/09/04] 12.181 C# Curso de Programación Curso Básico de programación en C#, este curso básico abarcará desde las bases del lenguaje hasta nuestros primeros pasos con aplicaciones web, acceso a bases de datos de... [14/07/05] 10.393 Access con Visual Basic Microsoft Access con Visual Basic, aprende a crear una base de datos en Access usando Visual Basic. Veremos también cómo crear tablas e introducir... [01/07/09] 7.197 Sistema operativo. Windows 98 Aprende con nuestro curso acerca del sistema operativo Windows 98, te enseñaremos las variadas funciones que tiene este software y que te ayudará a... [28/04/09] 1.197 Descubre miles de cursos como éste en www.mailxmail.com 2 mailxmail - Cursos para compartir lo que sabes 1. Formulario y controles (1/2) [ http://www.mailxmail.com/curso-visual-basic-6-introduccion/formulario-controles-1] CURSO DE INTRUDUCCIÓN A VISUAL BASIC 6 Formularios y Controles Los elementos gráficos que forman parte de las aplicaciones en Visual Basic son controles que están contenidos en formularios (ventanas), y tanto los controles como los formularios tienen propiedades. Ejemplos de controles son: Botones, cajas de texto, cajas de selección desplegables, etiquetas, menús, etc. Los controles y los formularios son entidades genéricas de las que puede haber varios ejemplares concretos en cada programa, estas entidades genéricas 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, tamaño, 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 identificación de cada uno de ellos. Para establecer el nombre de los objetos existe una convención muy aceptada que consiste en usar tres letras minúsculas que identifican al control, seguidas por otras letras (la primera mayúscula), 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 botón derecho del `mouse´ y seleccionando la opción `Propiedades´ o bien, pulsando la tecla F4. Descubre miles de cursos como éste en www.mailxmail.com 3 mailxmail - Cursos para compartir lo que sabes Descubre miles de cursos como éste en www.mailxmail.com 4 mailxmail - Cursos para compartir lo que sabes 2. Formulario y controles (2/2) [ http://www.mailxmail.com/curso-visual-basic-6-introduccion/formulario-controles-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 combinación de teclas, recibir o perder el foco, etc. Cada vez que se realiza un evento, Visual Basic arranca una determinada función o procedimiento que realiza la acción 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 botón derecho del ´mouse´ y se elige la opción `Ver Código´, accediéndose 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 acción que se está programando esta se debe elegir en la parte superior derecha de la pantalla en la que se escribe el código. Cuando el programa se esté ejecutando, el resultado de hacer click sobre el botón programado será el sacar un mensaje por pantalla de la manera siguiente: La creación de objetos, el establecimiento de sus propiedades y la programación de sus eventos se realiza cuando se está diseñando el proyecto, esto es en tiempo de diseño y el resultado de la labor de diseño y programación se pone de manifiesto cuando se ejecuta el programa, esto es en tiempo de ejecución. Para ejecutar un programa que se está diseñando se selecciona la opción de menú `Ejecutar´ > `Iniciar´, o pulsando la tecla F5. Descubre miles de cursos como éste en www.mailxmail.com 5 mailxmail - Cursos para compartir lo que sabes Cada aplicación que se empieza a desarrollar es un proyecto que comprende otras componentes más sencillas como los formularios y los módulos (conjuntos de funciones). Para guardar un proyecto, hay que tener en cuenta que se compone de varios ficheros (dos como mínimo), que deben ser guardados con el nombre adecuado y en el directorio adecuado. Existe siempre un fichero de proyecto, con extensión .vbp (Visual Basic Proyect) que se crea o modifica con la opción `Archivo´ > `Guardar Proyecto´ que contiene toda la información de conjunto de la aplicación. Además hay que crear un fichero por cada formulario del proyecto .frm y otro por cada módulo de la aplicación .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. Descubre miles de cursos como éste en www.mailxmail.com 6 mailxmail - Cursos para compartir lo que sabes 3. Entorno de programación Visual Basic [ http://www.mailxmail.com/...rso-visual-basic-6-introduccion/entorno-programacion-visual-basic] Entorno de Programación 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 más 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 opción de menú `Proyecto´ > `Componentes´ desplegándose un cuadro que permite insertar los nuevos controles que se quieran utilizar. Cuando se ha terminado la programación de la aplicación hay que crear el programa ejecutable para ser distribuido e instalado en los PC´s que vayan a usar dicho programa. Para crear el fichero ejecutable con extensión .exe se usa la opción de menú `Archivo´ > `Crear *.exe´. Descubre miles de cursos como éste en www.mailxmail.com 7 mailxmail - Cursos para compartir lo que sabes 4. Sintaxis Visual Basic. Sentencias. Variables y tipos de datos [ http://www.mailxmail.com/...troduccion/sintaxis-visual-basic-sentencias-variables-tipos-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 programación en Visual Basic son: a) Comentarios. En Visual Basic, todo lo contenido en una sentencia a la derecha del carácter comilla simple (`) en una línea es un comentario y no es tenido en cuenta. Los comentarios son muy útiles para facilitar la comprensión del código utilizado sobre todo en proyectos complejos donde resulta imprescindibles para revisiones posteriores del código. b) Sentencias en más de una línea. En ocasiones las sentencias son complejas y es necesario escribirlas en más de una línea para que entren en la pantalla, para ello hay que dejar un espacio en blanco al final de la línea y escribir el carácter guión inferior (_) Ej.) lblEtiqueta.Caption = "Esta es una etiqueta de descripción de " _ "un ejemplo de una sentencia en dos líneas" c) Varias Sentencias en una sola línea. Para escribir varias sentencias en una sola línea 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 ejecución de una aplicación. Posee dos partes, un nombre o identificador y un valor que será su contenido. Los tipos de datos básicos que se pueden almacenar en una variable son los siguientes: d.1) Tipos Numéricos Se usan para representar cantidades numéricas 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 Descubre miles de cursos como éste en www.mailxmail.com 8 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 representación en coma fija, se usa para representar valores decimales que tengan a lo sumo 15 dígitos de parte entera y cuatro de parte decimal. Descubre miles de cursos como éste en www.mailxmail.com 9 mailxmail - Cursos para compartir lo que sabes 5. Sintaxis Visual Basic. Declaración y ámbito de las variables [ http://www.mailxmail.com/...6-introduccion/sintaxis-visual-basic-declaracion-ambito-variables] La siguiente tabla contiene una representación de distintos tipos de datos. Declaración y ámbito de las variables. Declarar una variable consiste en avisar al programa de la existencia de la misma, dándola un nombre y un tipo. La declaración 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 módulo. 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 están definidas dentro de un procedimiento o función y sólo son accesibles en ese procedimiento o función 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 módulo *.bas o de un formulario de la aplicación usando la palabra Public. Para acceder a las variables definidas como públicas en un formulario hay que especificar el formulario en el que fueron creadas pero si se definen en un módulo no es necesario, basta con el nombre para hacer uso de ellas. La declaración de variables se realiza de la siguiente forma: { Dim / Static / Private / Public ] nombreVariable as Tipo. Ej: Dim Letra as String Static Permanente as Integer Descubre miles de cursos como éste en www.mailxmail.com 10 mailxmail - Cursos para compartir lo que sabes Static Permanente as Integer Public Valor as Integer Private Logico as Boolean Si se usa la declaración Static, entonces la variable conserva su valor mientras se está ejecutando el resto del código. Por ejemplo, si en el evento click de un botón escribimos: Private Sub Boton_Click() Static Acumulado Acumulado = Acumulado + 7 MsgBox Acumulado End Sub Con el código del ejemplo anterior, en tiempo de ejecución al pulsar el botón por primera vez aparece un mensaje con el valor 7, si se vuelve a pulsar el botón, el mensaje será 14, si se vuelve a pulsar será 21, y así se irá incrementando en sucesivas ocasiones que se pulse el botón, es decir, la variable declarada como Static va conservando su valor al entrar en el procedimiento sin inicializarlo a cero como ocurriría si se hubiese declarado con Dim en cuyo caso el mensaje sería siempre 7. Descubre miles de cursos como éste en www.mailxmail.com 11 mailxmail - Cursos para compartir lo que sabes 6. Sintaxis Visual Basic. Declaración y ámbito de las variables. Operadores [ http://www.mailxmail.com/...ion/sintaxis-visual-basic-declaracion-ambito-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 información o dato que se toma en cada momento, es pues un tipo muy flexible pero su uso debe restringirse pues ocupa más memoria y requieren más 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 más de 255 caracteres 3.-El nombre debe ser único en su campo de visibilidad (procedimiento, módulo, etc.) 4.- No puede ser una palabra reservada. e) Operadores. En la siguiente tabla se representan operadores soportados por Visual Basic, usados para la realización de operaciones aritméticas, lógicas, relacionales, etc. Descubre miles de cursos como éste en www.mailxmail.com 12 mailxmail - Cursos para compartir lo que sabes Descubre miles de cursos como éste en www.mailxmail.com 13 mailxmail - Cursos para compartir lo que sabes 7. Sentencias de control. Sentencia If, Then, Else, End If [ http://www.mailxmail.com/...c-6-introduccion/sentencias-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 según 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 más sentencias. Su representación es así: En la representación anterior, si se cumple la primera condición, es decir condicion1 = True, entonces el programa continua su ejecución 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 evalúa condicion3 y así se continúa hasta el encontrar un Else If (puede haber tantos como se precisen) que contenga una condición verdadera para ejecutar su grupo de sentencias. Si ninguna condición de las evaluadas es cierta, se ejecuta el Grupo de Sentencias de la cláusula Else. En esta sentencia de control las únicas cláusulas obligatorias son If Then pudiéndose prescindir si es necesario de Else, Else If Then y End If Descubre miles de cursos como éste en www.mailxmail.com 14 mailxmail - Cursos para compartir lo que sabes Descubre miles de cursos como éste en www.mailxmail.com 15 mailxmail - Cursos para compartir lo que sabes 8. Sentencias SELECT CASE, FOR, NEXT [ http://www.mailxmail.com/...curso-visual-basic-6-introduccion/sentencias-select-case-for-next] f.2) Sentencia SELECT CASE: Permite ejecutar una de entre varias acciones en función del valor de una expresión. Su representación general es la siguiente: En la representación anterior expresion es una expresión numérica o alfanumérica 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 relación expresion combinación 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 número de sentencias un cierto número de veces. Su forma general es: Descubre miles de cursos como éste en www.mailxmail.com 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, volviéndose a efectuar la comparación 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 después de cada ejecución se decrementa su valor según lo especificado en expresion3. Descubre miles de cursos como éste en www.mailxmail.com 17 mailxmail - Cursos para compartir lo que sabes 9. Sentencia DO&WHILE... LOOP [ http://www.mailxmail.com/curso-visual-basic-6-introduccion/sentencia-do-while-loop] f.4) Sentencia DO...WHILE... LOOP Este bucle repite la ejecución de un conjunto de sentencias mientras una condición dada sea cierta La condicion puede ser evaluada antes o después de ejecutarse el conjunto de sentencias. Sus posibles formas son: En esta primera forma si condición es True se ejecuta el grupo de sentencias y se sigue ejecutando hasta que condición sea False. La evaluación de la condición 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 condición, repitiéndose la ejecución 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. Descubre miles de cursos como éste en www.mailxmail.com 18 mailxmail - Cursos para compartir lo que sabes Descubre miles de cursos como éste en www.mailxmail.com 19 mailxmail - Cursos para compartir lo que sabes 10. Sentencia DO... UNTIL... LOOP [ http://www.mailxmail.com/curso-visual-basic-6-introduccion/sentencia-do-until-loop] f.5) Sentencia DO... UNTIL... LOOP Repite la ejecución de un conjunto de sentencias hasta que una condición dada sea cierta, es decir a diferencia de While, el bucle se repite mientras la condición sea falsa y se sale del mismo cuando es verdadera. Tiene dos formas generales: En esta primera forma si condición es False se ejecuta el grupo de sentencias y se sigue ejecutando hasta que condicion sea True. La evaluación de la condición 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, repitiéndose la ejecución 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. Descubre miles de cursos como éste en www.mailxmail.com 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. Descubre miles de cursos como éste en www.mailxmail.com 21 mailxmail - Cursos para compartir lo que sabes 11. Programas informáticos. Funciones [ http://www.mailxmail.com/...urso-visual-basic-6-introduccion/programas-informaticos-funciones] g) Funciones y Procedimientos. Los programas informáticos suelen tener una gran cantidad de líneas de código (cientos e incluso miles), por ello a medida que aumentan su tamaño pueden convertirse en sistemas poco manejables si no fuera por la modularización, que es un proceso consistente en dividir un programa muy grande en una serie de módulos mucho más pequeños y manejables, a estos módulos se les denomina en Visual Basic con el nombre de Procedimientos y Funciones. Los Procedimientos y Funciones se usan para realizar tareas comunes múltiples veces sin necesidad de tener que repetir código. 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 expresión, mientras que los procedimientos realizan una tarea pero no devuelven ningún valor de retorno. g.1) Funciones. Tienen la siguiente forma general: NombreFuncion es el nombre de la función que se usa para invocarla, parametros son los argumentos de la función 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 función, también es opcional puesto que hay funciones que no devuelven ningún valor. Dentro del grupo de sentencias que contiene la función puede existir una salida de la misma mediante Exit Funcition. También suele existir una asignación al nombre de la función de una expresión, y esta expresión será el valor devuelto por la función. La función anterior suma los parámetros a y b, así esta función puede ser llamada desde otra parte del programa de la siguiente forma: Dim Resultado as Integer Resultado = Suma (7,8) Msgbox Resultado Una vez ejecutada estas sentencias saldrá por pantalla el valor 15. Se observa que la función retorna un valor y que se usa en una expresión, en la que ese valor de retorno se le asigna a la variable Resultado. Descubre miles de cursos como éste en www.mailxmail.com 22 mailxmail - Cursos para compartir lo que sabes Cuando se llama a una función, en principio, el número y los tipos de los argumentos de la llamada debe ser igual al número y los tipos de los parámetros de la función, en caso contrario se producirían errores de programa, así las siguientes llamadas a la función suma serían erróneas. Resultado = Suma ("Luis", "Pepe") `Da error puesto que los argumentos no son enteros Resultado = Suma (7,8,15) `Da error puesto que el número de argumentos es incorrecto. Descubre miles de cursos como éste en www.mailxmail.com 23 mailxmail - Cursos para compartir lo que sabes 12. Programas informáticos. Procedimientos [ http://www.mailxmail.com/...visual-basic-6-introduccion/programas-informaticos-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 sería Exit Sub. A diferencia de una función, los procedimientos no pueden ser usados en una expresión puesto que no devuelven ningún valor, simplemente realizan una tarea, así la forma de llamar un procedimiento sería: Para sacar por pantalla la raíz cuadrada de un número 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 expresión, entonces da error. Lo siguiente sería erróneo: Dim Valor as Double Dim Resultado as Double Valor = 48 Resultado = RaizCuadrada Valor `No se puede usar un procedimiento en una asignación. 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. Descubre miles de cursos como éste en www.mailxmail.com 24 mailxmail - Cursos para compartir lo que sabes Tabla de Funciones matemáticas Descubre miles de cursos como éste en www.mailxmail.com 25 mailxmail - Cursos para compartir lo que sabes 13. Editor de menús en Visual Basic [ http://www.mailxmail.com/curso-visual-basic-6-introduccion/editor-menus-visual-basic] EDITOR DE MENUS EN VISUAL BASIC. En Visual Basic podemos crear aplicaciones que estén gobernadas a través de un menú, es decir, como los típicos programas del entorno Windows, para ello Visual Basic dispone del Editor de Menús. Para acceder al Editor de Menús debemos pulsar en `Herramientas > Editor de Menús´ o pulsar sobre el formulario el botón derecho del mouse y seleccionar la opción `Editor de Menús´, entonces se accede a un cuadro como el siguiente: Para ir añadiendo opciones al menú se va rellenando la caja de texto Caption en la que se indica el identificador con el que se verá la opción en la pantalla, también se rellena la caja de texto Name en la que se indica el nombre que tiene la opción (que será el que se usa para programar las acciones que ocurran al pulsar sobre ella, al ser una opción de menú conviene que empiece por mnu seguido de mas letras, la primera en mayúscula) y una vez hecho esto si se quiere añadir otra opción se pulsa en el botón `Siguiente´ y se procede de la misma forma y así sucesivamente. Procediendo de la manera descrita anteriormente, se crearán menús simples, es decir, que no tienen submenús asociados. Para crear submenús, simplemente se añaden, tal como se describe en el párrafo 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 número máximo 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 opción del submenú y en la propiedadCaption se escribe un guión y se le da cualquier nombre en Name, así se habrá generado la separación entre las opciones. Dentro del cuadro de menú también se pueden marcar o desmarcar las opciones Enabled Enabled y Visible, lo que hará que la opción esté Activa y Visible si las opciones Descubre miles de cursos como éste en www.mailxmail.com 26 mailxmail - Cursos para compartir lo que sabes están marcadas o Inactiva ó Invisible según la opción que esté desmarcada. En principio el nombre Name, que se asigna a cada opción de menú debe ser el mismo, 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 combinación de teclas que al ser pulsadas acceden directamente a la opción del submenú sin necesidad de pulsar sobre él con el ratón. Una vez que se ha diseñado el menú, hay que añadir el código necesario para que realice las tareas que se deseen. Los ítems (opciones) de los menús admiten sólo un evento evento, el click que se produce cuando son seleccionados por medio del ratón o del teclado. Para añadir el código se selecciona en tiempo de diseño el ítem correspondiente y se abre la ventana de código que corresponde al evento click de esa opción de menú, procediendo en ese momento a programar en ella la tarea que se desea se realice cuando en tiempo de ejecución se seleccione esta opción. La siguiente imagen muestra como quedaría el menú creado en el Editor de Menús que se muestra en la imagen anterior. Descubre miles de cursos como éste en www.mailxmail.com 27 mailxmail - Cursos para compartir lo que sabes 14. Visual Basic. Manejo de errores (1/2) [ http://www.mailxmail.com/...curso-visual-basic-6-introduccion/visual-basic-manejo-errores-1 ] 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 ejecución 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 algún tipo de acción, como pudiera ser simplemente el lanzar un aviso por pantalla indicando el error que se ha producido permitiendo que el programa continúe ejecutándose. Cuando se realiza una aplicación pueden presentarse distintos tipos de errores, entre ellos: errores de sintaxis y errores de ejecución. 1 . -Los errores de sintaxis son el resultado de escribir incorrectamente una sentencia. Si se producen estos errores la aplicación no se puede ejecutar pues el intérprete de Visual Basic no entiende ese trozo de programa, por ello se detectan en tiempo de diseño y se resuelven de forma sencilla pues se marcan automáticamente con un color distinto. 2 . -Los errores durante la ejecución ocurren cuando al ejecutar una aplicación una sentencia intenta una operación que es imposible de realizar (ej.: una división entre cero). Estos errores terminan con la ejecución del programa si no son tratados adecuadamente, y para manipularlos se dispone de la sentencia On Error. Ej.: Tenemos una aplicación con tres cajas de texto, de nombre txtSumando0, txtSuamando1 y txtSuma y un botón llamado cmdSuma en el que programamos lo siguiente: Cuando se inicie la aplicación si en la primera caja de texto ponemos el número 5 y en la segunda el 6, entonces al pulsar el botón de suma en la tercera se rellenará con el número 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 Descubre miles de cursos como éste en www.mailxmail.com 28 mailxmail - Cursos para compartir lo que sabes es por ejemplo "PEPE" en la primera caja de texto y 7 en la segunda, entonces se producirá un error que de no ser tratado nos echa de la aplicación, concretamente el mensaje antes de terminar con la ejecución será el que se ve en la siguiente imagen: Nota: Completamos esta explicación en el siguiente capítulo. Descubre miles de cursos como éste en www.mailxmail.com 29 mailxmail - Cursos para compartir lo que sabes 15. Visual Basic. Manejo de errores (2/2) [ http://www.mailxmail.com/...curso-visual-basic-6-introduccion/visual-basic-manejo-errores-2 ] Ahora bien, si al principio del procedimiento del botón se hubiese usado la sentencia On Error se podría continuar con la ejecución del programa, quedando la programación 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 algún error de ejecución, 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 después del nombre se ponen dos puntos (:) para indicar que se trata de una etiqueta. La programación que se ha escrito es en este caso muy simple, y lo que hace es detectar que si el número del error (los errores en Visual Basic tienen asociado un número) es distinto de cero (si el número 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 indicación del número de error cometido y la descripción que Visual Basic hace del mismo, y una vez visto el mensaje se continua con la aplicación, 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, sólo se describe el mismo y se continua con Descubre miles de cursos como éste en www.mailxmail.com 30 mailxmail - Cursos para compartir lo que sabes la aplicación, porque así se programó en la etiqueta Indice, ahora bien podrían 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 función Resume. Descubre miles de cursos como éste en www.mailxmail.com 31 mailxmail - Cursos para compartir lo que sabes 16. Visual Basic. Acceso a base de datos. Control data [ http://www.mailxmail.com/...-basic-6-introduccion/visual-basic-acceso-base-datos-control-data] ACCESO A BASES DE DATOS. Visual Basic proporciona los elementos necesarios para la construcción 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 representación en el formulario es la siguiente: Este control nos permite acceder a distintos tipos de bases de datos (Access, dBase, Paradox, etc.). Las propiedades más importantes del control data a las que se accede seleccionando el control y pulsando la tecla de función 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 instrucción 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 instrucción 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 continuación toda la teoría 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: Presentación en pantalla del contenido de una tabla de una base de datos Access y creación de controles que nos permitan manipular la misma, moviéndonos a través de los registros, eliminando unos, añadiendo otros nuevos, buscando los que cumplan determinadas condiciones, etc., etc.... Descubre miles de cursos como éste en www.mailxmail.com 32 mailxmail - Cursos para compartir lo que sabes 17. Crear un control data (1/6) [ http://www.mailxmail.com/curso-visual-basic-6-introduccion/crear-control-data-1] 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 recién creado. La tabla Personal tiene los siguientes campos: Nif, Nombre, Apellido1, Apellido2, Dirección, Cpostal, Municipio, Provincia. Ahora para referirnos a un campo concreto del conjunto de registros Recordset al que se tiene acceso se haría 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 métodos 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 atrás 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 Descubre miles de cursos como éste en www.mailxmail.com 33 mailxmail - Cursos para compartir lo que sabes 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 datVisitas. Descubre miles de cursos como éste en www.mailxmail.com 34 mailxmail - Cursos para compartir lo que sabes 18. Crear un control data (2/6) [ http://www.mailxmail.com/curso-visual-basic-6-introduccion/crear-control-data-2] Una vez realizado lo anterior (capítulo precedente) se pulsa en el botón derecho del mouse sobre la caja de texto recién creada, eligiendo la opción Copiar dentro del menú que se depliega en ese momento, y se vuelve a pulsar el botón derecho del mouse eligiendo en esta ocasión la opción 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 opción 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 convendría 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 teníamos creada pasará a nombrarse como txtPersonal(0), su valor Index es 0. Volvemos a desplegar el menú con el botón derecho del mouse tantas veces como sea necesario para seleccionar la opción 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 estarían vinculadas al mismo campo, concretamente Nif, por ello en cada una se cambia la propiedadDataField 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: Dirección DataField: CPostal DataField: Municipio DataField: Provincia Una vez hecho esto creamos cuatro botones con las siguientes propiedades: Primer botón: Name: cmdPrimero Caption: Primer Registro Segundo botón: Name: cmdSiguiente Caption: Siguiente Registro Tercer botón: Name: cmdAnterior Caption: Registro Anterior Cuarto botón: Name: cmdUltimo Descubre miles de cursos como éste en www.mailxmail.com 35 mailxmail - Cursos para compartir lo que sabes Caption: Último Registro 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 haría así: Delante de cada caja de texto se crearía una etiqueta en la que se escribe el nombre del campo cuyo contenido se muestra. Descubre miles de cursos como éste en www.mailxmail.com 36 mailxmail - Cursos para compartir lo que sabes 19. Crear un control data (3/6) [ http://www.mailxmail.com/curso-visual-basic-6-introduccion/crear-control-data-3] Con lo anterior (capítulo precedente) al ejecutar el programa se tendría una aplicación 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 atrás usando los botones recién creados y también 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 podría tener el programa anterior sería 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 tendría sentido el pulsar en el botón de `Siguiente Registro´ o si estamos en el primero hacerlo en el botón 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 sería conveniente tener en cuenta la situación 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 cambiarían su programación quedando de la siguiente forma: La explicación a este cambio de programación del botón es: La tabla de datos en Access reserva un registro para indicar que se está al final del fichero, este registro Descubre miles de cursos como éste en www.mailxmail.com 37 mailxmail - Cursos para compartir lo que sabes Access reserva un registro para indicar que se está al final del fichero, este registro es posterior al último que a nuestros efectos sería válido, por tanto si estamos en el último registro válido y nos movemos hacia delante accedemos al registro que contiene la marca EOF de final de fichero lo cual no tendría sentido, por tanto en ese caso nos situamos en el último registro válido que es donde estábamos antes de mover hacia delante, para hacerlo se usa el método MoveLast y luego se indica por pantalla. La explicación a este cambio de programación del botón 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 sería válido, por tanto si estamos en el primer registro válido y nos movemos hacia atrás accedemos al registro que contiene la marca BOF de principio de fichero lo cual no tendría sentido, por tanto en ese caso nos situamos en el primer registro válido que es donde estábamos antes de mover hacia atrás, para hacerlo se usa el método MoveFirst y luego se indica por pantalla. Descubre miles de cursos como éste en www.mailxmail.com 38 mailxmail - Cursos para compartir lo que sabes 20. Crear un control data (4/6) [ http://www.mailxmail.com/curso-visual-basic-6-introduccion/crear-control-data-4] Creemos dos nuevos botones que al pulsarlos nos permitan añadir y eliminar registros de la tabla de datos, para ello se usan los métodos AddNew que añade un nuevo registro y el método Delete que borra el registro actual. Las propiedades de estos dos nuevos botones serán: Botón para añadir registros: Caption: Añadir Registro Name: cmdAñade Botón para eliminar registros: Caption: Eliminar Registro Name: cmdElimina La programación de estos botones será: Al pulsar en el botón cmdAñade, se vacían todas las cajas de texto y habrá que escribir en ellas los valores correspondientes al nuevo registro que vamos a añadir a la tabla de datos, sólo cuando se escriba en alguna de las cajas de texto se realiza efectivamente la adición del nuevo registro. Al pulsar el botón cmdElimina, el registro actual, el que se está viendo en ese momento en pantalla es borrado de la tabla de datos mediante el método Delete, pero además se pone la sentencia datVisitas.Refresh para que refresque el conjunto de datos, y por ello, como estábamos 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 botón no puede proceder a la eliminación del registro produciéndose un error que finalizaría la ejecución de la aplicación, para evitar lo anterior se usa la sentenciaOn Error que permite manejar el error que se produce, que en este caso es el que tiene como número el 3021. Una forma posible como quedaría la programación de este botón sería ahora: Descubre miles de cursos como éste en www.mailxmail.com 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á vacía, además hace referencia a la tabla por su nombre porque se lo hemos indicado con datVisitas.Recordset.Name datVisitas.Recordset.Name. El mensaje sería como el de la imagen siguiente: Descubre miles de cursos como éste en www.mailxmail.com 40 mailxmail - Cursos para compartir lo que sabes 21. Crear un control data (5/6) [ http://www.mailxmail.com/curso-visual-basic-6-introduccion/crear-control-data-5] 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 sería como la siguiente imagen: Cuando se crea un control Data, Visual Basic ofrece por defecto el tipo Dynaset. En función del tipo de Recordset elegido la forma de tratar los datos (buscar, moverse, etc.) se hace de distinta forma. Las características más importantes de los tres tipos son las siguientes: 0- Table: Con este tipo de Recordset sólo 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 rápidas búsquedas de registros. Cuando se cambian datos, estos están disponibles para otros usuarios de forma automática. 1- Dynaset: Conjunto dinámico 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 Descubre miles de cursos como éste en www.mailxmail.com 41 mailxmail - Cursos para compartir lo que sabes tabla tal como ocurre con el tipo Table. Una desventaja es que no se pueden usar índices para las búsquedas. 2- Snapshot: Conjunto estático 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 información en la que los datos no serán modificados. Una vez conocidos los distintos tipos de Recordset que se pueden usar y las características principales de los mismos, añadiremos dos nuevos botones al ejemplo que estamos desarrollando, uno para realizar búsquedas y otro para efectuar modificaciones de datos. Botón para realizar búsquedas: Caption: Buscar Name: cmdBuscar El botón recién 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 búsquedas. 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. Descubre miles de cursos como éste en www.mailxmail.com 42 mailxmail - Cursos para compartir lo que sabes 22. Crear un control data (6/6) [ http://www.mailxmail.com/curso-visual-basic-6-introduccion/crear-control-data-6] El tipo Table es el único que permite usar los índices de una tabla de una base de datos para realizar las búsquedas, 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 búsquedas se usan los métodosIndex 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 quedarían 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 línea de código del botón cmdBuscar, entonces se buscaría de manera rápida el primer registro cuyo NIF es el "02154879L", y los datos del mismo son los que se presentarían en pantalla, ahora bien, si no hay ningún registro entonces se produciría un error. Para evitar que el error producido al no encontrar el NIF buscado termine la ejecución de la aplicación se puede controlar con el métodoNoMatch, que indica que no se ha encontrado el registro buscado. Añadiríamos la siguiente sentencia al botón: Con esto se indica que en el caso de no encontrar el registro, saque un mensaje por pantalla indicándolo y se sitúe en el primer registro, así no saltará el error. Tal como quedaría la programación del botón cmdBuscar, sólo se podría realizar la búsqueda de un determinado NIF, lo cual no resultaría muy útil, para evitar esta situación 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 programación del botón de búsqueda quedaría así: En la programación del botón, ahora no se indica que busque un NIF concreto y Descubre miles de cursos como éste en www.mailxmail.com 43 mailxmail - Cursos para compartir lo que sabes 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 índice NIF, pero puede que en la tabla haya más índices que pueden ser usados para realizar búsquedas, 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 tendríamos 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 habría que indicar al botón de búsqueda cmdBuscar, ya no sólo 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 programación del botón de búsqueda cambiaría nuevamente para quedar de la siguiente forma: En este momento las búsquedas son mucho más dinámicas puesto que podemos seleccionar distintos índices y distintos valores para realizarlas. Con esta forma de buscar se accede al primer registro que cumpla la condición especificada, y los registros quedan ordenados según el índice usado. Convendría en el botón anterior usar también una sentencia On Error para controlar los distintos errores que se pudieran producir, como el que ocurriría si en txtIndice se indica un nombre de índice distinto a los que tiene la tabla de datos. Descubre miles de cursos como éste en www.mailxmail.com 44 mailxmail - Cursos para compartir lo que sabes 23. Crear un control data. Botón de modificaciones (1/4) [ http://www.mailxmail.com/...al-basic-6-introduccion/crear-control-data-boton-modificaciones-1 ] Hasta aquí se ha diseñado un programa que permite acceder a una tabla de una base de datos, editar sus registros, moverse a través de ellos, eliminarlos, añadir otros nuevos, realizar búsquedas y modificarlos. La última tarea, la de modificación de registros se realiza sin más que escribir en la caja de texto correspondiente el valor de modificación, sin embargo esta no es una buena manera de realizar los cambios, es preferible y más seguro tener un botón 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 visión 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 botón que se encargue de las modificaciones son: 1 ° ) . - En el diseño actual del ejercicio las cajas de texto txtPersonal(0), txtPersonal(1),....,txtPersonal(7), estaban vinculadas al control datVisitas a través de la propiedad DataSource y de DataField para así descargar en las cajas de texto de manera automática los campos de la tabla de datos, sin embargo en la nueva orientación del ejercicio esto no es adecuado, por ello se vacían de contenido las propiedades DataSource y DataField de todas las cajas de texto. 2 ° ) . - Como ya no se descargan automáticamente 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 botón que crearemos para las modificaciones. El procedimiento se puede establecer en un modulo o en el Formulario y lo llamaremos siempre que se necesite. Podríamos crearlo en el Formulario así: Este procedimiento descarga el valor de cada campo en una caja de texto. Lo mismo se podría escribir de una forma más 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 quedaría así: 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 Descubre miles de cursos como éste en www.mailxmail.com 45 mailxmail - Cursos para compartir lo que sabes descargar un valor Null en una caja de texto se produce un error, por ello, afinando más la forma anterior del procedimiento, este quedaría 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 método IsNull. Descubre miles de cursos como éste en www.mailxmail.com 46 mailxmail - Cursos para compartir lo que sabes 24. Crear un control data. Botón de modificaciones (2/4) [ http://www.mailxmail.com/...al-basic-6-introduccion/crear-control-data-boton-modificaciones-2 ] 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 búsquedas, debemos incluir en sus códigos de programación una llamada al procedimiento Edición recién creado puesto que las cajas de texto ya no se actualizan por si solas, así esos botones no sólo nos deben situar en el registro correspondiente de la tabla de datos, sino que además deben editarlo para que el usuario lo vea en pantalla y sepa donde está situado. Los códigos de programación de estos botones quedarían así: Descubre miles de cursos como éste en www.mailxmail.com 47 mailxmail - Cursos para compartir lo que sabes En la programación de estos botones, en algunos se ha usado On Error para detectar y controlar errores y en otros no, convendría no obstante incluir el controlador de errores en todos ellos. Descubre miles de cursos como éste en www.mailxmail.com 48 mailxmail - Cursos para compartir lo que sabes 25. Crear un control data. Botón de modificaciones (3/4) [ http://www.mailxmail.com/...al-basic-6-introduccion/crear-control-data-boton-modificaciones-3 ] 4 ° ) . - Para modificar el contenido de los registros se crea un nuevo botón 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" Además es necesario que las sentencias en las que se indican los valores nuevos que toman los campos se encierren entre los métodos Edit y Update, así para que la asignación de la cadena de caracteres "Antonio" se efectuase correctamente, no bastaría con la sentencia anterior, sino que quedaría de la siguiente forma: datVisitas.Recordset.Edit datVisitas.Recordset!Nombre = "Antonio" datVisitas.Recordset.Update Para modificar más de un campo, se indican todas las sentencias de modificación entre Edit y Update. datVisitas.Recordset.Edit datVisitas.Recordset!Nombre = "Antonio" datVisitas.Recordset!Nif = "08369548K" datVisitas.Recordset!Apellido1 = "Sánchez" datVisitas.Recordset!Municipio = "Sevilla" datVisitas.Recordset.Update En el caso del botón 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 código de este botón quedaría así: Al pulsar este botón se actualizan los valores de la tabla de datos, para ello hemos usado el Descubre miles de cursos como éste en www.mailxmail.com 49 mailxmail - Cursos para compartir lo que sabes método Edit y Update entre los cuales hay que indicar las modificaciones de campos para que estas tengan efecto. Descubre miles de cursos como éste en www.mailxmail.com 50 mailxmail - Cursos para compartir lo que sabes 26. Crear un control data. Botón de modificaciones (4/4) [ http://www.mailxmail.com/...al-basic-6-introduccion/crear-control-data-boton-modificaciones-4 ] 5 ° ) . - En el botón para añadir registros los cambios a realizar no son tan pequeños como en los anteriores, esta acción cambia de forma sustancial. Al pulsar este botón lo primero que se debe hacer es vaciar todas las cajas de texto en las que se indicarán los valores de los campos del nuevo registro, y una vez hecho esto habrá de procederse a añadirlo realmente, por ello creamos otro botón que se hace visible al pulsar el primero y que lo llamaremos cmdConfirmarAñadir. La programación del primer botón para añadir registros quedaría así: En el código 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 botón creado para confirmar que se añade el registro. En este momento se rellenan los campos del nuevo registro que se quiere crear y al terminar se pulsa en el botón de confirmación para hacer efectiva la adicción del nuevo registro. El código de programa del botón de confirmar quedaría así: En este control se vuelve a usar el bucle For para ir añadiendo a cada campo lo indicado en las cajas de texto y este bucle está contenido entre los métodos AddNew y Update necesarios para que el proceso funcione de manera correcta. Una vez añadido el registro el propio botón de confirmación se autoesconde. Descubre miles de cursos como éste en www.mailxmail.com 51 mailxmail - Cursos para compartir lo que sabes 27. Crear un control data. Control Dbgrid (1/3) [ http://www.mailxmail.com/...o-visual-basic-6-introduccion/crear-control-data-control-dbgrid-1] 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 además existe la posibilidad de visualizar el contendido total de la tabla de datos, para ello se puede usar el controlDbgrid. Este control no está disponible por defecto en Visual Basic, sino que hay que agregarlo al proyecto, para ello se accede a la opción de menú `Proyecto > Componentes´ y se obtiene el siguiente cuadro: En el cuadro anterior se pulsa en el botón Examinar y se busca el archivo dbgrid32.ocx con lo que se dispondrá de una nueva opción 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 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 recién creado la tabla de datos Personal con todos sus campos. Si se quiere ver sólo alguno de los campos de la tabla de datos o se quiere cambiar la posición en que se visualizan, entonces, en tiempo de diseño se pulsa en el botón derecho del ratón sobre el control y seleccionando `Propiedades´ accedemos a un cuadro para personalizar el aspecto del control dbgrid, como el de la siguiente imagen: Descubre miles de cursos como éste en www.mailxmail.com 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. Descubre miles de cursos como éste en www.mailxmail.com 53 mailxmail - Cursos para compartir lo que sabes 28. Crear un control data. Control Dbgrid (2/3) [ http://www.mailxmail.com/...o-visual-basic-6-introduccion/crear-control-data-control-dbgrid-2] Después de tener una forma de acceder a la visualización de todos los datos de la tabla a través de dbDatVisitas y otra para acceder a uno en concreto con las cajas de texto y botones diseñados anteriormente, una forma de situarse en un registro en particular, aparte de usando en botón cmdBuscar, sería accediendo a la totalidad de los registros a través 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 diseñadas y con los datos del registro seleccionado, para hacer esto, en primer lugar convendría colocar en un contenedor, por ejemplo un controlframe las cajas de texto y botones para visualización de registros, este frame diseñarle 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 visualización de los registros. El evento Dbclick del control dbDatVisitas queda con el siguiente código: Con esto, al hacer doble click en tiempo de ejecución 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á aquél 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 edición del registro. Toda la ejecución del ejercicio se ha realizado hasta ahora a partir de un control 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, además 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 estarán relacionadas por un campo común, 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á añadirse ningún 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, serán: Nif, PrecioVisita, DuraciónVisita, FechaVisita, TipoDiaVisita. Para completar el ejercicio añadiremos 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 estén sólo las realizadas por un determinado Nif. Descubre miles de cursos como éste en www.mailxmail.com 54 mailxmail - Cursos para compartir lo que sabes determinado Nif. Los dos nuevos botones se crean dentro del control fraData, y tendrán las siguientes propiedades: Botón para alta de visitas: Caption: Nueva Visita Name: cmdNuevaVisita Botón para consultar visitas: Caption: Consultar Visitas Name: cmdConsultaVisitas Descubre miles de cursos como éste en www.mailxmail.com 55 mailxmail - Cursos para compartir lo que sabes 29. Crear un control data. Control Dbgrid (3/3) [ http://www.mailxmail.com/...o-visual-basic-6-introduccion/crear-control-data-control-dbgrid-3] Con el primer botón 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 cómo hacerlo. La imagen siguiente muestra un control frame que contiene los elementos necesarios para dar de alta en la tabla Visitas. Con el nuevo botón cmdConsultaVisitas se accede a las visitas realizadas a lo largo del tiempo por una determinada persona, estas visitas se presentarán en pantalla a través 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 conexión se establecerá en el código del botón cmdConsultaVisitas. En el botón 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 instrucción 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 información de una tabla pudiéndose seleccionar una, varias o todas las columnas (campos) de la tabla. Puede incluir varias cláusulas opcionales y como mínimo debe incluir la cláusula obligatoria From From a través de la cual se especifica la tabla o tablas a las que se va a acceder para obtener sus columnas (campos). Puede incluir también la cláusula Order By que indica la columna o columnas que se van a usar para ordenar los datos. Puede además incluir la cláusula Where para especificar la condición que han de cumplir los registros que forman parte de la consulta. Para crear una consulta obteniendo información de los campos Nif y PrecioVisita de la tabla Visitas ordenada por Nif, se haría así: Select Nif, PrecioVisita From Visitas Order By Nif. Descubre miles de cursos como éste en www.mailxmail.com 56 mailxmail - Cursos para compartir lo que sabes Si ahora queremos restringir la consulta anterior sólo para aquellos registros que cumplan una condición, por ejemplo Nif = "01545454X", entonces lo especificamos con la cláusula Where Wherequedando 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 símbolo asterisco (*). Para obtener la consulta anterior con todos los campos, quedaría así: Select * From Visitas Where Nif = `01545454X´ Order By Nif. Descubre miles de cursos como éste en www.mailxmail.com 57 mailxmail - Cursos para compartir lo que sabes 30. Crear un control data. cmdConsultaVisitas (1/2) [ http://www.mailxmail.com/...sual-basic-6-introduccion/crear-control-data-cmdconsultavisitas-1] Una vez conocido como se crea la consulta, el código para ello se programa en el botón cmdConsultasVisitas, pero antes creamos un nuevo control dbgrid que llamamos dbConsulta que se asocia al control datConsulta para presentar por pantalla los registros seleccionados. Después de crear este nuevo control, el código de cmdConsultaVisitas será: Todas las sentencias del botón aparecen comentadas en el propio código, obsérvese no obstante, que en la creación 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 condición 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, obsérvese que el último carácter 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 varía en función 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 carácter es una comilla simple (´), para encerrar el valor del Nif. Con todo lo anterior, al pulsar en el botón cmdConsultaVisitas, se accede a un control dbgrid que contiene una consulta de las visitas realizadas por una persona concreta. Descubre miles de cursos como éste en www.mailxmail.com 58 mailxmail - Cursos para compartir lo que sabes 31. Crear un control data. cmdConsultaVisitas (2/2) [ http://www.mailxmail.com/...sual-basic-6-introduccion/crear-control-data-cmdconsultavisitas-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 tecnología 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 podría 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 accedía a una base de datos llamada "C:\Curso\Visitas.mdb" y dentro de esa base de datos la tabla `Personal´. Esto también se puede hacer sin ningún 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: También Visual Basic incorpora otra tecnología de acceso a datos llamada ADO que se podría 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 iniciación a la gestión 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 capítulo hemos llegado al final del curso. Visita más cursos como este en mailxmail: [http://www.mailxmail.com/cursos-informatica] [http://www.mailxmail.com/cursos-programacion] ¡Tu opinión cuenta! Lee todas las opiniones de este curso y déjanos la tuya: [http://www.mailxmail.com/curso-visual-basic-6-introduccion/opiniones] Descubre miles de cursos como éste en www.mailxmail.com 59 mailxmail - Cursos para compartir lo que sabes Cursos similares Cursos PHP y MySQL. Aplicaciones Web: base de datos MySQL II (octava parte) Programación de aplicaciones Web con PHP y MySQL. Continuando con el estudio de la Base de datos MySQ, aprende sobre el SQL (Lenguaje de consultas estructu... [02/12/08] Valoración Alumnos Vídeo 1.710 C# Curso de Programación Curso Básico de programación en C#, este curso básico abarcará desde las bases del lenguaje hasta nuestros primeros pasos con aplicaciones web, acceso a bases de datos de... [14/07/05] 10.393 Bases de Datos en C# El curso incluye el código necesario para acceder a las bases de datos y realizar consultas de selección y de acción.... [05/04/07] 7.240 Webs dinámicas con PHP El lenguaje PHP es un lenguaje de programación de estilo clásico, nada que ver con el HTML, XML o WML. Se parece mucho más al Java o Javascript pero, a diferencia de esto... [10/09/04] 12.181 Sistema operativo. Windows 98 Aprende con nuestro curso acerca del sistema operativo Windows 98, te enseñaremos las variadas funciones que tiene este software y que te ayudará a... [28/04/09] 1.197 Descubre miles de cursos como éste en www.mailxmail.com 60