manual visual basic 6.0

83
MODULO: DESARROLLO DE SISTEMAS BÁSICOS DE INFORMACIÓN SUBMODULO: ELABORAR SISTEMAS DE INFORMACIÓN MEDIANTE UN LENGUAJE DE PROGRAMACIÓN VISUAL

Upload: lider68

Post on 30-Jul-2015

572 views

Category:

Documents


6 download

DESCRIPTION

Manual Visual Basic 6.0 Nivel Medio

TRANSCRIPT

Page 1: Manual Visual Basic 6.0

MODULO:DESARROLLO DE

SISTEMAS BÁSICOS DE INFORMACIÓN

SUBMODULO:ELABORAR SISTEMAS DE

INFORMACIÓN MEDIANTE UN LENGUAJE DE PROGRAMACIÓN

VISUAL

Page 2: Manual Visual Basic 6.0

UNIDAD 1INTRODUCCIÓN A VISUAL BASIC 6.0

1.- MANIPULAR EL ENTORNO DE DESARROLLO DEL LENGUAJE DE PROGRAMACIÓN VISUAL.1.1 ENTORNO DE

DESARROLLO1.1.1. BARRA DE TITULO1.1.2. BARRA DE MENUS1.1.3. BARRA DE

HERRAMIENTAS1.1.4. EXPLORADOR DE

PROYECTOS1.1.5. POSICIÓN DEL

FORMULARIO1.1.6. VENTANA DE

PROPIEDADES1.1.7. CAJA DE CONTROLES1.1.8. DISEÑADOR DE

FORMULARIOS

UNIDAD 2 MANEJO DE FORMULARIOS DE VISUAL BASIC 6.0

2.- REALIZAR EL DISEÑO DE LA INTERFAZ GRAFICA PARA EL PROYECTO PROPUESTO2.1 GENERALIDADES

2.1.1. DEFINICIÓN DE PROYECTO, FORMULARIO Y EVENTO

Page 3: Manual Visual Basic 6.0

2.1.2. PASOS PARA DESARROLLAR UNA APLICACIÓN DE WINDOWS

2.2 CONTROL DE FORMULARIOS

2.2.1. CREACIÓN2.2.2. MOVER Y AJUSTAR TAMAÑO

2.3. DISEÑO DEL PROYECTO (PARTE CREATIVA)2.3.1. DISEÑAR EL FORMULARIO DEL MENU PRINCIPAL2.3.2. DISEÑAR EL FORMULARIO DEL MENU PRINCIPAL2.3.3. DISEÑAR LOS FORMULARIOS2.3.4. VINCULAR LOS FORMULARIOS DEL PROYECTO.

UNIDAS 3 PRINCIPIOS BÁSICOS DE PROGRAMACIÓN

3.1 ELEMENTOS DEL LENGUAJE:

3.1.1. CONSTANTES 3.1.2. VARIABLES3.1.3. TIPOS DE DATOS3.1.4. TIPOS DE OPERADORES

3.1.4.1. ARITMETICOS Y CONCATENACIÓN3.1.4.2. RELACIONALES3.1.4.3. LÓGICOS

3.2. ESTRUCTURAS DE CONTROL3.2.1. SELECTIVAS

3.2.1.1. IF… THEN… ELSE 3.2.1.2. SELECT CASE

3.2.2. REPETITIVAS3.2.2.1. FOR NEXT 3.2.2.2. WHILE WEND

3.3. MANIPULAR ARREGLOS (ARRAYS)3.4. CREAR COLECCIONES DE OBJETOS

UNIDAD 4ELABORACIÓN Y MANIPULACIÓN DE UNA BASE DE DATOS CON V.B. 6.0

4.1. CREACIÓN DE UNA BASE DE DATOS4.1.1. TIPOS DE DATOS QUE SOPORTAN LAS TABLAS

4.2. VINCULACIÓN DE UNA TABLA CON UN FORMULARIO4.3. MANIPULACIÓN DE LOS DIFERENTES TIPOS DE DATOS EN LAS

TABLAS4.4. CREACIÓN DE CONSULTAS CON SQL4.5. CREAR EL PROCESO PARA ALTAS DE DATOS

Page 4: Manual Visual Basic 6.0

4.6. CREAR EL PROCESO PARA BAJAS DE DATOS4.7. CREAR EL PROCESO DE MODIFICACIÓN DE DATOS4.8. CREAR EL PROCESO PARA CONSULTA DE DATOS4.9. CREAR EL PROCESO PARA CREAR INFORMES.4.10.DISEÑO DE UN MENÚ

4.10.1 PASOS PARA DESARROLLAR UN MENÚ

UNIDAD 5VERIFICAR EL FUNCIONAMIENTO DEL SISTEMA DE INFORMACIÓN

5.1. REALIZAR PRUEBAS AL SISTEMA DE INFORMACIÓN5.2. VALIDAR EL SISTEMA DE INFORMACIÓN5.3. CREAR EL ARCHIVO EJECUTABLE5.4. EMPAQUETAR EL SISTEMA DE INFORMACIÓN

UNIDAD 6ELABORAR DOCUMENTOS DEL SISTEMA DE INFORMACIÓN

6.1. ELABORAR MANUAL TÉCNICO6.2. ELABORAR EL MANUAL DEL USUARIO.

UNIDAD 1

Page 5: Manual Visual Basic 6.0

INTRODUCCIÓNA VISUAL BASIC

6.0

1.1. ENTORNO DE DESARROLLO

Para comenzar a estudiar cualquier programa, lo mejor es empezar por el análisis de la Interfaz Grafica1; que es la pantalla con la cual nos encontramos y con la que nos tendremos que familiarizar para poder trabajar cómoda y rápidamente. Con más razón si se trata de VB, ya que no es una aplicación, sino un Lenguaje de Programación generador de Aplicaciones.

1 Graphical User Interface, GUI) es un conjunto de imágenes y objetos gráficos para representar la información y acciones disponible en una aplicación para computadoras., las acciones se realizan mediante manipulación directa para facilitar la interacción del usuario con la computadora.

Page 6: Manual Visual Basic 6.0

El Entorno de desarrollo de Visual Basic contiene todas las herramientas necesarias para la creación de aplicaciones. Visual Basic empezó a utilizar un entorno MDI (Interfaz de Múltiples Documentos) que permite trabajar con muchos proyectos simultáneamente (como Microsoft Word o Excel)

EL ÁREA DE TRABAJO:

1.- Barra de titulo 5.- Ventana de propiedades2.- Barra de Menús 6.- Posición del Formulario3.-Barra de Herramientas 7.- Caja de Controles 4.- Explorador de Proyectos 8.- Diseñador de formularios

1.1.1. Barra de Títulos

Es la Barra Horizontal situada en la parte superior en de la pantalla. Que es común a todas las aplicaciones de Windows. En Visual Basic, la barra de titulo informa el nombre del proyecto abierto y el estado del mismo, es decir, si se encuentra en tiempo de diseño2 , de ejecución3 o en pausa.

2 Tiempo de Diseño es el momento en que el programador modela la apariencia de la aplicación sin que la misma se este ejecutando.3 Tiempo de Ejecución es el momento en que la aplicación se esta realizando, Las acciones se realizan a través del código ingresado por el programador.

Page 7: Manual Visual Basic 6.0

1.1.2. Barra de Menús

Visualiza las órdenes que tú utilizas para desarrollar una aplicación. Por medio de esta barra se puede acceder a todas las funciones incorporadas en Visual Basic.

1.1.3. Barra de Herramientas

Facilita un acceso rápido a las órdenes mas comúnmente utilizadas, mediante las barras de herramientas se puede acceder a funciones sin tener que utilizar el menú o un atajo de teclado. El significado de cada botón se muestra al pasar el puntero del ratón por encima de cada uno de ellos.

1.1.4. Explorador de Proyectos

Es el conjunto de todos los archivos (formularios, módulos, clases y recursos) que forman una aplicación. Se utiliza para desplazarse por los formularios y demás componentes de una aplicación, permite acceder al código del diseño de los formularios. En el explorador de proyectos aparecen 2 nombres , el de la izquierda es el nombre del objeto y el de la derecha (entre paréntesis) es el nombre con el que se guardo el objeto en disco.

En el presente ejemplo se puede observar que nos encontramos en el Proyecto número 1 y que cuenta con un solo Formulario. En su parte superior presenta dos botones de

Page 8: Manual Visual Basic 6.0

suma importancia, el primero, al pulsarlo nos muestra la Ventana de Código (a) y el segundo nos muestra la Ventana de Diseño del Formulario (b)

1.1.5 Ventana de Propiedades

A través de esta ventana se puede modificar todas las propiedades de los controles u objetos, en tiempo de diseño y en tiempo de ejecución. Cada objeto lleva asociado un conjunto de propiedades (nombre, posición, tamaño color, etc. )

Esta ventana es una de las más importantes, se compone de la Ventana de Controles:A través de la cual uno puede elegir el control sobre el que se trabajará u observar si en realidad estamos operando sobre el control deseado.

Luego se pueden observar dos solapas; Alfabética y Por Categorías: Esto en realidad es una cuestión de preferencias, en la forma de manejarnos para seleccionar las distintas modificaciones a realizar sobre las Propiedades.

También se pueden modificar sobre la parte derecha de la ventana los distintos Valores.

Page 9: Manual Visual Basic 6.0

Por último, en la parte inferior de la Ventana se puede observar una ayuda sobre la propiedad seleccionada, en este caso nos muestra el Caption (Título)

1.1.6. Posición de Formulario

Permite colocar los formularios de su aplicación en tiempo de diseño utilizando una pequeña representación grafica de la pantalla, muestra la posición exacta donde aparecerá nuestro formulario, dentro de la pantalla. Si nos dirigimos hacia él con el Mouse, automáticamente este se modifica a “cuatro flechas” y podemos arrastrar el formulario al sector exacto de la pantalla en donde nos interesa que aparezca.

Page 10: Manual Visual Basic 6.0

1.1.7. Caja de Controles

Son herramientas que nos permiten colocar los controles en el formulario durante el diseño de la interfaz grafica del usuario (por ejemplo: etiquetas, cajas de texto, botones etc.)

Controles del cuadro de herramientas estándar

1.- Seleccionar objetos Seleccionar objetos es el único elemento del cuadro de elementos que no dibuja un control. Cuando se selecciona, sólo puede cambiar el tamaño o mover un control que ya se haya dibujado en un formulario.

3.- Etiqueta Permite tener texto que no desee que cambie el usuario, como el título debajo de un gráfico.

Cuadro de texto Contiene texto que el usuario puede introducir o cambiar.

Cuadro combinado Permite dibujar un cuadro de lista combinado y un cuadro de texto. El usuario puede elegir un elemento de la lista o introducir un valor en el cuadro de texto.

Page 11: Manual Visual Basic 6.0

Cuadro de lista Se utiliza para mostrar una lista de elementos entre los que puede elegir el usuario. Puede desplazarse por la lista si ésta contiene más elementos de los que se pueden ver en un determinado momento.

Casilla de verificación Crea una casilla que el usuario puede elegir fácilmente para indicar si algo es verdadero o falso o para mostrar varias elecciones cuando el usuario puede elegir más de una.

Botón de opción Permite mostrar varias elecciones entre las que el usuario sólo puede elegir una.

Botón de comando Crea un botón que el usuario puede elegir para realizar la acción de un comando.

Barra de desplazamiento Proporciona una herramienta gráfica para desplazarse rápidamente por una larga lista de elementos o una gran cantidad de información, para indicar la posición actual en una escala o como un dispositivo de entrada o indicador de velocidad o cantidad.

Imagen Muestra una imagen gráfica de un mapa de bits, icono o metaarchivo en el formulario. Las imágenes mostradas en un control Imagen sólo pueden ser decorativas.

Timer Produce de modo automático un evento cada cierto número de milisegundos4. La propiedad más importante de un objeto de

4 Un milisegundo es el período de tiempo que corresponde a la milésima fracción de un segundo (0,001s).viene especificada mediante una "m" minúscula antepuesta al símbolo de la magnitud fundamental, que en el caso del segundo es una letra "s", resultando: 1 ms = 0,001 segundo = 1 milisegundo.

Page 12: Manual Visual Basic 6.0

este tipo es Interval, que determina, precisamente, el intervalo en milisegundos entre eventos consecutivos. La acción que se desea activar debe programarse en el evento Timer de ese mismo control. El control Timer es invisible para el usuario.

1.1.8. Diseñador de Formularios

Es la ventana sobre la que colocaremos los controles de la interfase grafica que el usuario utilizara para comunicarse con la aplicación, permite modelar fácilmente el aspecto de un formulario,

El Formulario es un objeto contenedor de otros objetos. Sobre él y a través de la caja de Herramientas, colocaremos los distintos controles, que se llaman Objetos.

Al hacer doble click sobre el formulario se pasa a otra Ventana, que se denomina Ventana de Código, en la cual se escriben las sentencias necesarias (Código), para que funcione nuestra aplicación, Al hacer doble click sobre el Formulario, o sobre cualquier Objeto que esté contenido dentro del Formulario, entramos automáticamente en esta Ventana.

La misma presenta en la parte superior dos Cajas Desplegables: (a) Nos muestra todos los objetos que tenemos creados

dentro de nuestro proyecto.(b) Muestra todos los eventos posibles para cada uno de los

objetos.(c)Por último podemos observar donde escribiremos nuestras sentencias de código

Page 13: Manual Visual Basic 6.0

UNIDAD 2

MANEJO DE FORMULARIOS DE VISUAL BASIC 6.0

Page 14: Manual Visual Basic 6.0

REALIZAR EL DISEÑO DE LA INTERFAZ GRAFICA

PARA EL PROYECTO PROPUESTO

2.1 Generalidades

2.1.1. Definición dé:

Sistema de Información Basado en una Computadora (informático).-

“Es el Conjunto de objetos o partes que interactúan o están relacionados entre sí con el propósito de realizar un fin común”.

Page 15: Manual Visual Basic 6.0

Es el conjunto de partes interrelacionadas, hardware, software y de Recurso Humano.Un sistema de información es un conjunto organizado de elementos, estos elementos son:

Personas. Datos. Actividades o técnicas de trabajo. Recursos materiales en general (típicamente en la

actualidad, recursos informáticos y de comunicación),

Todo ese conjunto de elementos interactúan entre sí para procesar los datos y la información (incluyendo procesos manuales y automáticos) y distribuirla de la manera más adecuada posible en una determinada organización en función de sus objetivos.

Proyecto.-

Conjunto de acciones específicas necesarias para alcanzar los objetivos y metas definidas por un programa o subprograma, tendientes a la obtención de resultados concretos, y que pueden planificarse, analizarse y ejecutarse administrativamente, en forma independiente. Un proyecto, por definición, está orientado hacia la acción; un conjunto de proyectos conformará un subprograma o programa.

Proyecto son: Plan, Programa e Idea.

Page 16: Manual Visual Basic 6.0

Los proyectos, entendidos como una secuencia de actividades relacionadas entre sí destinadas a lograr un objetivo, en un tiempo determinado, y contando con un conjunto definido de recursos, desde su inicio tienen un proceso bastante bien determinado, generalmente llamado ciclo del proyecto, independientemente del tema a que se refieran, a la duración del proceso y a los actores que intervienen en el mismo.

Análisis de Sistemas.-

“Distinción y separación de las partes de un todo hasta llegar a conocer sus principales elementos.”

El Análisis de Sistemas trata básicamente de determinar los objetivos y límites de un sistema, interpretar su estructura y funcionamiento, marcar las directrices5 que permitan alcanzar los objetivos propuestos y evaluar sus consecuencias. (Es decir que quiero que haga el sistema).Diseño de Sistemas-

5 Guías de acción. Instrucciones o normas generales para la ejecución de algo.

Page 17: Manual Visual Basic 6.0

“Tarea creativa en la que se idea una cosa útil y estética.”

Es definir la arquitectura6 de hardware y software, componentes, módulos y datos de un sistema de cómputo para satisfacer ciertos requerimientos7. Es la etapa posterior al análisis de sistemas.

El diseño de sistemas es la evaluación de las distintas soluciones alternativas y la especificación de una solución detallada a un problema de información.

Desarrollo de Sistemas.-

“Es un proceso continuo, ordenado en fases, a lo largo del tiempo, o de un tiempo determinado, es decir, es un Conjunto de cambios progresivos que se construye con la acción del objeto al interactuar con su medio adaptándose gradualmente”.

6 técnica o el arte de quien realiza el proyecto y dirige la construcción.7 Características que se desea que posea un sistema o un software.

Page 18: Manual Visual Basic 6.0

Todo Desarrollo de Sistemas consta de varias fases, que por lo general se le conoce como “Ciclo de Vida”. Es un proceso por el cual los analistas de sistemas, los ingenieros de software, los programadores, y los usuarios finales juntan ideas y elaboran sistemas de información y aplicaciones informáticas”. El ciclo de vida clásico consta de 4 fases:

análisis de sistemas diseño de sistemas, implantación de sistemas (implementación8) y soporte de sistemas (mantenimiento)

Formulario.-

Un formulario es generalmente una hoja de papel en la que disponemos de lugares en blanco para introducir la información, con un campo separado para cada dato.

Se llama formulario a una plantilla o página con espacios vacíos que han de ser rellenados con alguna finalidad, por ejemplo una solicitud de empleo en la que has de rellenar los espacios libres con la información personal requerida.

También es utilizado en informática para referirse al conjunto de campos solicitados por un determinado programa, los cuales se almacenarán para su posterior uso o manipulación.

Como un complemento, un formulario puede disponer de los llamados botones de comando. Pulsando estos botones se

8 instalar un sistema o diseño informático.

Page 19: Manual Visual Basic 6.0

ejecutarán funciones o tareas que nos ayudarán a manejar la información. Base de Datos.-

Conjunto de información guardada de forma sucesiva y organizada de la cual se puede extraer uno o varios datos necesarios.

En una base de datos electrónica la definición es casi la misma, “Conjunto de información organizada que contiene una colección de los registros donde el sistema puede buscar, reescribir, clasificar, borrar, añadir información y analizar rápidamente”.

Con la diferencia de que trabajamos en la pantalla del monitor; de esta manera podremos ingresar y modificar los datos directamente en el formulario de la pantalla, formulario que habremos diseñado previamente según nuestra necesidad y en el que podremos incluir también material gráfico (fotos) y sonidos.

Evento.-

Un evento es un mensaje que envía un objeto anunciando que ha sucedido algo. Un evento es una señal que comunica a una aplicación que ha sucedido algo importante. Por ejemplo, cuando un usuario hace clic en un control de un formulario, el formulario puede provocar un evento Click y llamar a un procedimiento que controla el evento.

Por ejemplo, son eventos la pulsación de una tecla o el paso del puntero de ratón sobre un objeto. A través de los eventos podemos determinar el comportamiento del objeto con su

Page 20: Manual Visual Basic 6.0

entorno.). Cada formulario y control de Visual Basic tiene un conjunto de eventos predefinidos.

A cada evento le corresponde una sección de código (un procedimiento de evento). Cuando deseamos que un control responda a un evento, escribimos código en el procedimiento de ese evento.

Por ejemplo, la mayoría de los objetos reconocen el evento Click: si un usuario hace clic en un formulario, se ejecuta el código del procedimiento de evento Click del formulario; si un usuario hace clic en un botón de comando, se ejecuta el código del procedimiento de evento Click del botón. El código en cada caso será diferente.

Métodos

Los métodos son operaciones o procedimientos9, llamadas desde programa que realizan tareas típicas, previsibles y comunes. Vienen con el lenguaje y liberan al usuario de la tarea de programarlos. Cada tipo de objeto tiene sus propios métodos.

Por ejemplo, los formularios tienen un método llamado show que permite mostrar una ventana.

9 es el modo de ejecutar determinadas acciones que suelen realizarse de la misma forma, con una serie común de pasos claramente definidos

Page 21: Manual Visual Basic 6.0

2.1.2 PASOS PARA DESARROLLAR UNA APLICACION

INGRESAR AL PROGRAMA:

Al iniciar Visual Basic aparece el cuadro de dialogo NUEVO PROYECTO, Este cuadro de Dialogo tiene tres pestañas con las siguientes opciones:

Nuevo: Crea un nuevo proyecto del tipo establecido. Existente: Permite examinar un proyecto ya creado y

guardarlo. Reciente: Presenta una lista con los últimos proyectos

abiertos

Observa que en la pestaña NUEVO hay varios tipos de proyectos que se pueden crear. El principal a utilizar en nuestro curso será “EXE Stardard”

Page 22: Manual Visual Basic 6.0

Ya abierto Visual Basic, para crear un nuevo proyecto los pasos a seguir son:

1.- Ir al menú “ARCHIVO”2.- Elegir la opción “NUEVO PROYECTO”3.- Seleccionar el tipo de proyecto deseado4.- Hacer clic en botón “ACEPTAR”

GUARDAR UN PROYECTO

Para guardar un proyecto hay que:

1.- Ir al menú “ARCHIVO”2.- Opción “GUARDAR PROYECTO COMO”

Page 23: Manual Visual Basic 6.0

EJECUTAR PROYECTO

1.- Menú Ejecutar2.- Iniciar (F5)

2.2. CONTROL DE FORMULARIOS

2.2.1 Creación

Un formulario es una ventana sobre la que nosotros dibujamos los elementos que el usuario tienen que utilizar para comunicarse con la aplicación, los elementos son los controles; esto es, objetos gráficos que permiten entrar o salir datos: ejemplo: cajas de texto, etiquetas, marcos, listas etc.

Page 24: Manual Visual Basic 6.0

2.2.2 Mover y ajustar tamaño del formulario

Los formularios son ventanas, por lo tanto, para ajustar su tamaño solo hacen falta cuatro propiedades que determinen su ubicación (altura y anchura), estas propiedades son: Left, Top, Height y Width

También para mover el formulario:

1.- Con el botón izquierdo del mouse, sin soltarlo, posicionarse en la parte superior del formulario (barra de titulo del formulario) y llevarlo o al nuevo lugar

Para Cambiar el tamaño se puede hacer de la siguiente manera:

1.- Con el botón izquierdo del mouse, sin soltarlo, apuntar en cualquiera de los puntos que se encuentra en el contorno del formulario y mover hacia delante o atrás para ajustar el tamaño deseado,

Page 25: Manual Visual Basic 6.0

2.3. DISEÑO DEL PROYECTO (PARTE CREATIVA)

Al final del Curso tendrás que presentar un proyecto final, por lo tanto es el momento de “imaginar” lo que quieres realizar con visual basic 6.0, harás una investigación de campo junto con un compañero donde buscaras un sistema de información basado en una computadora y lo ajustaras a lo que deseas hacer.

2.3.1. DISEÑAR EL FORMULARIO DEL MENÚ PRINCIPAL

Dibuja tu Menú Principal, es la presentación de tu sistema

2.3.2. DISEÑAR LOS FORMULARIOS

Dibuja la forma de cómo capturas la información que alimenta tu sistema

2.3.3. VINCULAR LOS FORMULARIOS DEL PROYECTO.

De Manera Grafica, hay que relacionar tus formularios para poder cumplir con la condición de sistema.

Page 26: Manual Visual Basic 6.0

UNIDAD 3

PRINCIPIOS BÁSICOS

Page 27: Manual Visual Basic 6.0

DE PROGRAMACION

3.1. VELEMENTOS DEL LENGUAJE

3.1.1. CONSTANTESEs un valor que no cambia de valor, durante la ejecución de un programaPueden ser de dos maneras : numéricas y de caracteres3.1.2. VARIABLESContiene un valor que puede modificarse o cambiar a lo largo de la ejecución de la aplicación.Pueden ser de dos maneras : numéricas y de caracteres sus atributos son:

NOMBRE.- tiene que comenzar por una letra y una longitud de 255 caracteres.

TIPO.- integer, currency, string, boolean, date, variant. AMBITO.- local (dim, static, redim

modulo (dim o private global (public)La sintaxis de la definición de una variable se muestra a continuación:Dim nombre As tipo

Page 28: Manual Visual Basic 6.0

Static nombre As tipo

3.1.3. TIPOS DE DATOSIdentifica la clase de información que contendrán las variables y constantes en un programa mediante un tipo de datos. Cada uno de estos tienen una característica diferente para el formato de la información y del almacenamiento e la memoria permitiendo así optimizar el rendimiento del sistema.

Tipo Valor DescripciónByte Numéri

coIndica que el valor almacenado será un numero entero positivo entre 0 y 255; por ejemplo, al declarar las siguientes variablesDim a,b,c, As Byte,Algunos Valores que éstas aceptarían son:a = 50b = 0c = 255reserva 1 byte en memoria para almacenar valores de 8 bits.

Boolean Lógico Es usado para señalar que el valor almacenado será un dato lógico (True o False). Por ejemplo, si se realiza la siguiente declaración:

Dim Activado As BoleanLa Variable “Activado” solo puede tomar uno de estos valores:

Activado = TrueActivado = False

Currency Numérico

Establece que la información tendrá un formato de números enteros (positivos y negativos) con un máximo de 15 dígitos a la izquierda del punto decimal y 4 después de este. Reserva 8 bytes en la memoria y generalmente es utilizado con variables que requieren precisión.

Date Fecha Hace referencia a la información de fecha y hora, donde el rango para cada una es : FECHA: 01/01100 y 31/12/9999 para dia/mes/año. Al declarar las siguientes Variables :

Dim fecha_nacimiento, hora_ingreso As DateAlgunos posibles valores que pueden tomar son:

Fecha_nacimiento = “15/03/1972”Hora_ingreso = “10:30:25”

Double Numérico

Usado para indicar que un valor será un numero real o flotante de doble precisión, por

Page 29: Manual Visual Basic 6.0

ejemplo, al declarar:Dim notas as Double

“nota” podría tomar uno de estos valoresnota: = 3.65nota = 0.18nota = 18532320.463Un numero flotante de doble precisión contienen 16 dígitos de precisión; es de gran utilidad al realizar cálculos que requieren total exactitud, por ejemplo, cálculos científicos.

Integer Numérico

Indica que se guardaran numeros enteros (positivos y negativos) comprendidos entre –32768 y 32767. por ejemplo, al declarar la siguiente variable:

Dim Numero_registro As IntegerNumero_registro podria tomar los siguientes Valores:

Numero_registro = 100Numero_registro = 12500

Long Numérico

Almacena valores numéricos (enteros positivos y negativos) que reservan 4 bytes en la memoria. (Es una ampliación de Integer ya que acepta valores entre –2147483648 y 2147483648)

Single Numérico

Define que un datos será un numero flotante de precisión simple, es decir, que el grado de precisión esta sujeto a siete dígitos, por ejemplo, si como resultado de un calculo se genera el siguiente numero, se tendría:

25.678.593.05String Carácte

rPara declarar variables, constantes y otros que almacenen una secuencia de caracteres (letras, números, símbolos o una combinación de ellos)Algunos ejemplos de String podría ser:

Nombre Luis Alfonso Dirección Av. Juárez 1563Edad 25Ciudad México D.f.Pais México

Type Estructura

Define un tipo de datos personalizados por el usuario. Solo puede usarse a nivel de modulo y la sintaxis de su declaración es la siguiente:(Public | Private) Type nomtipo elemento1 As tipo elemento2 As tipo . .

Page 30: Manual Visual Basic 6.0

elementoN As tipoEnd Type

Object Objeto Hace referencia a un objeto de tipo object.Variant Todos Almacena todos los tipos de datos, excepto

cadenas de longitud fija y datos definidos por el usuario; además, efectúa automáticamente las conversiones necesarias según el tipo de datos de ésta; por ejemplo, al declarar Var1 como Variant podría tomar cualquier valor.

Dim Var1 As VariantVar1 podría tomar los siguientes valores:

Var1 = 8520Var1 = “Feliz Navidad”Var1 = 65386763.234

3.1.4. TIPOS DE OPERADORESEs un signo, cadena de caracteres o combinación de estos que realiza calculos o comparaciones sobre diferentes tipos de expresiones.

3.1.4.1 Operadores Aritméticos y concatenaciónSon usados para ejecutar cálculos con expresiones numéricas. Las expresiones son aquellas que permiten ser evaluadas como números, pueden incluir palabras reservadas, constantes, variables y operadores que generen como respuesta un numero.

Nombre Símbolo

Descripción

Exponenciación

(cuando el resultado aparece mas de una vez en la expresión, la operación se realiza de derecha a izquierda.)

^Se utiliza para Generar el resultado de un numero elevado a un exponente y su sintaxis es:Resultado = Base ^ exponenteDonde “Resultado” es la variable en la que se asigna la respuesta de la operación de exponenciacion, por ejemplo:Resultado = 5 ^ 2 => resultado = 25 X = 2 ^ 3 => x = 8Potencia = x ^ y => potencia = xy

Suma

+Se emplea para generar la adición de dos o mas valores numéricos. Su forma de uso es la siguiente:Resultado = sumando1 + sumando2Donde “Resultado” es una variable que almacena la respuesta generada por la suma, por ejemplo:Respuesta = 20 + 30 => respuesta = 50Porcentaje = 0.35 + 1.20 +0.50 => porcentaje =

Page 31: Manual Visual Basic 6.0

2.05

Resta

-Indica la Diferencia entre dos valores numéricas o la negación de un numero. La sintaxis es la siguiente:Resultado = num1 – num2Donde “Resultado” es la variable a la que se asigna la diferencia de los números, por ejemplo:Resp = 30 – 5 => resp = 25Resp1 = 5 – 30 => resp1 = -25-resp => -25

Multiplicación *

Se emplea para generar el producto de dos o mas expresiones numéricas, su forma de uso es:Resultado = factor1 * factor2Donde “Resultado” es una variable que toma la respuesta de la operación por ejemplo: Prod = 7 * 250 => prod = 1720 Prod_1 = 6 * 3 => prod_1 = 180

División con punto flotante /

Tienen como propósito dividir dos expresiones numéricas y obtener un resultado con punto flotante, es decir, con dígitos después del punto. La sintaxis de este operador es:Resultado = dividendo / divisorDonde “Resultado” es una variable que almacena u valor en punto flotante generado por la división, por ejemplo:Resp = 7 /5 => resp = 1.40Div = 10 / 2 => div = 5.00División = 35 /6 => división = 5.833333

División con resultado entero \

Se usa para dividir dos expresiones numéricas y obtener el resultado sin decimales. La sintaxis de esta operación es:Resultado = dividendo \ divisorDonde “Resultado” es una variable que almacena un valor entero generado por la división, por ejemplo:Div = 7 \ 5 => = 1Div1 = 11.82 \ 2 => = 6Resp = 10 \ 2 => = 5División = 35 \ 6 => = 5

Residuo de una División MO

D

Se simboliza mediante la palabra reservada Mod y se utiliza para obtener el residuo de una división; la forma de uso es la siguiente:Resultado = dividiendo Mod divisorDonde “Resultado” es una variable en la que se

Page 32: Manual Visual Basic 6.0

asigna un valor entero (residuo de la división), por ejemplo:Residuo = 6 mod 3 => residuo = 0Res1 = 10 mod 4 => res1 = 2

Concatenacion +,

&

Sirve o es utilizado para concatenar o unir cadenas de caracteres, su sintaxis es: Nueva Cadena =Cadena1 & Cadena2, Ejemplo:A= “Continente”B= “Americano”C= A + B => “Contienente Americano

3.1.4.2. Opereadores Relacionealesestos operadores se emplean para comparar dos expresiones y generar un valor verdadero o falso.Sintaxis:

ExpresionA “Operador_Relacional” expresionB

ExpresionA y expresionB pueden ser una combinación de palabras reservadas, variables, constantes, numeros y operadores que generan un valor verdadero o falso por medio de un “Operador_Relacional”

Operador

Descripción

= Igualdad

<> Diferencia ó Desigualdad

< Menor que

> Mayor que

<= Menor o igual que

>= Mayor o igual que

3.1.4.3- Operadores LógicosSon aquellos que asocian dos expresiones numéricas, de carácter o de comparación que han sido evaluadas como verdaderas o falsas para generar un nuevo valor del mismo tipo. Cuando una expresión se evalua como Verdedera, automáticamente toma un valor de –1 y cuando es falsa toma valor de 0, entonces:

Verdadero = -1 (True)Falso = 0 (False)

Operador

Descripción Prioridad

And Conjunción (y)

2

Or Disyunción 3

Page 33: Manual Visual Basic 6.0

(o)

Not Negación 1

Imp Implicación 6

Xor Exclusión 5

Eqv Equivalencia 5

SintaxisExpresiónA AND ExpresiónB

Se utiliza para evaluar dos o mas expresiones de acuerdo con los siguientes Valores:

ExpresiónA ExpresiónB A AND BVerdadero (-1) Verdadero (-1) Verdadero (-1)Verdadero (-1) Falso (0) Falso (0)Falso (0) Verdadero (-1) Falso (0)Falso (0) Falso (0) Falso (0)

ExpresiónA OR ExpresiónBEs usado para evaluar dos o mas expresiones de acuerdo con los siguientes Valores:

ExpresiónA ExpresiónB A OR BVerdadero (-1) Verdadero (-1) Verdadero (-1)Verdadero (-1) Falso (0) Verdadero (-1)Falso (0) Verdadero (-1) Verdadero (-1)Falso (0) Falso (0) Falso (0)

ExpresiónA NOT exoresiónBEs utilizado para indicar la negación lógica de una expresión.

ExpresiónA A NOT BVerdadero (-1) Falso (0)Verdadero (-1) Verdadero (-1)

Expresión XOR expresionBUtilizado para evaluar una exclusión lógica de dos expresiones de acuerdo con la siguiente tabla.

Page 34: Manual Visual Basic 6.0

ExpresiónA ExpresiónB A XOR BVerdadero (-1) Verdadero (-1) Falso (0)Verdadero (-1) Falso (0) Verdadero (-1)Falso (0) Verdadero (-1) Verdadero (-1)Falso (0) Falso (0) Falso (0)

Expresión EQV expresionBEvalúa una equivalencia lógica de dos expresiones.

ExpresiónA ExpresiónB A EQV BVerdadero (-1) Verdadero (-1) Verdadero (-1)Verdadero (-1) Falso (0) Falso (0)Falso (0) Verdadero (-1) Falso (0)Falso (0) Falso (0) Verdadero (-1)

Expresión IMP expresionBEvalúa la implicación lógica de dos expresiones.

ExpresiónA ExpresiónB A EQV BVerdadero (-1) Verdadero (-1) Verdadero (-1)Verdadero (-1) Falso (0) Falso (0)Falso (0) Verdadero (-1) Falso (0)Falso (0) Falso (0) Verdadero (-1)

Expresión EQV expresionBEvalúa una equivalencia lógica de dos expresiones.

ExpresiónA ExpresiónB A EQV BVerdadero (-1) Verdadero (-1) Verdadero (-1)Verdadero (-1) Falso (0) Falso (0)Falso (0) Verdadero (-1) Falso (0)Falso (0) Falso (0) Verdadero (-1)

Expresión IMP expresionBEvalúa la implicación lógica de dos expresiones.

ExpresiónA ExpresiónB A IMP BVerdadero (-1) Verdadero (-1) Verdadero (-1)Verdadero (-1) Falso (0) Falso (0)Falso (0) Verdadero (-1) Verdadero (-1)Falso (0) Falso (0) Verdadero (-1)

3.2 ESTRUCTURAS DE CONTROLPermiten cambiar la secuencia de instrucciones de un programa y ejecutar varias veces un bloque de las mismas sin necesidad de escribirlas tantas veces como se requiera. Todas las sentencias de control para tomar la decisión de ejecutar , o no un bloque de

Page 35: Manual Visual Basic 6.0

instrucciones dependiendo del resultado de la evaluación de una condición o variable.

3.2.1 ESTRUCTURA DE CONTROL SELETIVAS:

IF THEN ELSE Permite tomar una decisión referente al camino a seguir o acción a ejecutar en un proceso basándose en u resultado (verdadero o falso) de una condición .

SINTAXIS:

IF CONDICION THEN ACCION 1 ELSE ACCION 2END IF

ANIDAMIENTO:

IF CONDICION 1 THEN SENTENCIA 1ELSEIF CONDICION 2 SENTENCIA 2ELSEIF CONDICION NSENTENCIA NEND IF

Ejemplo: Supongamos que al efectuar una compra en un almacen, si adqurimos mas de 100 unidades de un mismos articulo, nos hacen un descuento de 40%; entre 25 y 100, un 20%; entre 10 y 24, un 10%, y no hay descuernto para una adqusicion de menos de 10 unidades. Calcular el importe a pagarIf cantidad > 100 then Importe = cantidad * preciounidad * 0.6Elseif cantidad >= 25 thenImporte = cantidad * preciounidad * 0.8Elseif cantidad >= 10 thenImporte = cantidad * preciounidad * 0.9ElseImporte = cantidad * preciounidad

Page 36: Manual Visual Basic 6.0

SELECT CASE Permite tomar ejecutar una de varias acciones en función del valor de una expresión .

SINTAXIS:

SELECT CASE EXPRESIONCASE LISTA 1SENTENCIA 1CASE LISTA 2SENTENCIA 2CASE ELSESENTENCIA NEND SELECT

circular por una autopista. El vehiculo puede ser una bicicleta, una moto, , un coche o un camion. El importe se calcular{a según los siguientes datos:Un im porte fijo de 25 unid. Para las bicicletasLas motos y los coches pagaran 10 unidades x kmLos camioones pagaran 10 unid. por km + 25 unid. X ton.Ejemplo:Vehiculo:Inputbox (“Clase de Vehiculo)Select Case Lcase(vehiculo) Case “bicicleta”Importe = 25Case “moto”, “coche”Km=Inputbox(“Kilometros:”)Importe= 10 * kmCase “camion”|Km=Inputbox(“Kilometros:”)Tm=Inputbox(“Toneladas:”)Importe= 10 * km + 25 * tmCase ElsePrint “entrada No valida”End Select

3.2.2 ESTRUCTURA DE CONTROL REPETITVAS

FOR NEXT

La sentencia da lugar a un lazo o bucle, y permite ejecutar un conjunto de sentencias cierto numero de veces.

SINTAXIS:

Page 37: Manual Visual Basic 6.0

FOR VAR= EXPRESION1 TO EXPRESION 2 STEP EXPRESION 3SENTENCIASNEXT VAR

Ejemplo:Dim i as integer, suma as IntegerFor I=1 to 99 step 2Suma =suma + INext iPrint suma

WHILE WEND

Repite la ejecución de un conjunto de sentencias mientras una condición dada sea cierta. La condición se verifica antes de ejecutarse el conjunto de sentencias.

SINTAXIS:

WHILE CONDICIONSENTENCIASWEND

Ejemplo:Dim n as IntegerN= 1While n<=10Print n;N= n + 1Wend

Page 38: Manual Visual Basic 6.0

UNIDAD 4

ELABORACIÓN Y MANIPULACIÓN

DE UNA BASE DE DATOS CON V.B.

6.0

Page 39: Manual Visual Basic 6.0

4.1. CREACIÓN DE UNA BASE DE DATOS

El uso de estas bases de datos surgió por la necesidad de mantener una gran cantidad de datos bien organizados, de forma que sea posible consultaros rápidamente para convertirlos en información útil.Nos ocuparemos de las bases de datos ACCESS, ya que son las mas populares para manejar bases d datos de pequeño y mediano tamaño.

ESTRUCTURA DE UNA BASE DE DATOS

En una base de datos lo más importante es la estructura, es decir, la forma en la que se organizan los datos en su interior. Si el diseño es incorrecto, no será posible aprovechar toda la potencia que nos puede brindar la base, y en varios casos tendremos un rendimiento insuficiente. Crear un diseño adecuado para una base de datos compleja no es tarea fácil; de hecho, es un tema que se estudia en el ámbito universitario o profesional.

VEAMOS LOS PRINCIPALES COMPONENTES DE UNA BASE DE DATOS:

Tablas. Representan un conjunto de datos de un mismo tipo y tema. Por ejemplo. Una tabla llamada tbIDeudores podría contener los datos de todos los deudores de una empresa .

Campos. Cada tabla puede tener· varios campos, y cada uno representa una característica del tema de la tabla. Por ejemplo, en la tabla de deudores podríamos usar tres campos: Nombre, Apellido, Saldo.

Registros. Son los datos en sí, que están guardados en la tabla. Por ejemplo, un registro podría ser Nombre: Luis, Apellido: Pérez, Saldo: -5000.

USANDO ACCESS

Abrimos Access y elegimos "Crear una nueva base de datos usando" "Base de datos de Access en blanco" 

Page 40: Manual Visual Basic 6.0

 Lo guardamos, por ejemplo, en "mis documentos", con el nombre "db1.mdb" Después creamos una tabla en vista diseño 

 Ingresen los mismos datos que ven a continuación, ya que estos son los datos (la tabla) que vamos a usar para programar. 

Page 41: Manual Visual Basic 6.0

 Guarden la tabla con el nombre "Tabla1" Ahora ingresamos los datos en la tabla: 

 Y ahora lo mas importante. Para no tener inconvenientes de compatibilidad vamos a hacer lo siguiente: "Herramientas -> Utilidades de las base de datos -> Convertir base de datos -> A una versión anterior de la base de datos de Access..." 

Page 42: Manual Visual Basic 6.0

Guardamos con el nombre "base1.mdb" Esta base de datos llamada "base1.mdb" es la q vamos a usar en Visual Basic. No usaremos la otra (db1) por motivos de compatibilidad. En definitiva, ambas bases de datos son iguales, solo cambia la versión

Page 43: Manual Visual Basic 6.0

4.1.1 TIPOS DE DATOS QUE SOPORTAN LAS TABLAS.

A continuación se muestran los tipos de campos que soporta Access para las tablas, así también como características y el tipo de dato que se puede almacenar en ellos.

TIPO DE CAMPO DESCRIPCIÓN

Texto

En este tipo de campo se puede almacenar texto o combinaciones de texto y números, así como números que no requieran cálculos, como los números de teléfono o códigos postales. Este campo puede soportar un máximo de 255 caracteres, aunque el tamaño se puede controlar en la propiedad Tamaño del campo que se vera a continuación

MemoSe utiliza para almacenar texto extenso o de gran longitud, como notas o descripciones. También puede llevar combinación de texto y números. Puede soportar hasta 65535 caracteres.

Numérico

Se utiliza para almacenar datos numéricos que pueden ser utilizados en todo tipo de operaciones matemáticas, excepto operaciones monetarias(para este tipo de operaciones se utiliza el tipo de campo Monetario), utilizaremos la propiedad Tamaño del campo para definir el tipo numérico especificado

Fecha/Hora

Sirven para almacenar fechas y horas. Puede establecer valores de fecha y hora desde el año 100 hasta el 9999. Los formatos se establecerán en la propiedad Formato correspondiente a este tipo de campo.

Moneda

Los campos de este tipo se utilizan para almacenar valores monetarios. Para los números almacenados en este tipo de campo se tiene una precisión de 15 dígitos a la izquierda de la coma decimal y 4 dígitos a la derecha.

Autonumerico

Este tipo de campo almacena exclusivamente números secuenciales (en incrementos de uno), o números aleatorios insertados automáticamente por Access cuando se agrega un registro.

Si / No Son campos que solo contienen uno de dos valores, como: Si/No, Verdadero/Falso, Activado/Desactivado

Objeto OLE

En este campo se pueden insertar objetos de cualquier tipo creados en otros programas, como imágenes, sonidos u otros. Incluso se puede insertar documentos de Microsoft Word u hojas de cálculo de Microsoft Excel mediante el protocolo OLE.

HipervinculoTipo de campo que sirve para almacenar hipervinculos. Un hipervinculo puede ser una ruta de acceso a una ubicación de red local, o una dirección URL para acceder a una pagina Web.

Asistente para búsquedas

Crea un campo que permite elegir un valor de otra tabla o de una lista de valores mediante un cuadro combinado. Al introducir los datos de manera manual en una tabla, se inicia un asistente que permite definirlo de manera automática.

Page 44: Manual Visual Basic 6.0

4.2. VINCULACIÓN DE DE UNA TABLA CON UN FORMULARIO.

Bases de datos ADO

Terminada la introducción teórica, vamos a meternos de lleno en el manejo de bases de datos desde Visual Basic, usando la nueva tecnología ADO. En la práctica hay dos formas de acceder a una base de datos desde Visual Basic.

Mediante un control de: datos ADO (ADO Data Control)Mediante código, utilizando los objetos de datos ActiveX (ADO)

La primera forma es la más sencilla y didáctica para empezar, pero no es tan flexible como la segunda. Mediante el control de datos podemos conectarnos a una base de datos, configurando la conexión con sencillos asistentes desde la ventana de propiedades (aunque esto también se puede hacer con código). En cambio, para utilizar código Íntegramente, escribiremos sentencias como ésta:

Dim conexion As ADODB.Connection Dim rst As ADODB.RecórasetSet Conexion = New ADODBB.conection . . .

Set rst = Conexion.Execute ("SELECT * FROM tblDeudores WHERE Saldo < -1500")

Primero veremos las funciones del control de datos, y luego pasaremos al código.

EL CONTROL DE DATOS ADO

Éste es un control como cualquier otro, y se carga en la caja de he-rramientas que Visual Basic utiliza para diseñar un formulario. Como el control no es estándar, hay que agregado pulsando CTRL+T o mediante el menú Proyecto Componentes. Debemos seleccionar el control "Microsoft ADO Data Control 6.0 (OLE DB)" como se ve en la Figura.

Page 45: Manual Visual Basic 6.0

Antes de usar el control de datos ADO, hay que agregarlo a la caja de controles.

A partir de ahora, podemos agregar un control de datos ADO a cualquier formulario, como normalmente lo hacemos. Una vez allí, el contra] tiene la siguiente apariencia. El nombre predeterminado del control es "Adodc1" (ADO Data Control 1).

Configurar la conexión

Lo primero que debemos hacer con el control es configurar la conexión, es decir, indicarle cómo y de dónde obtener los datos. Para esto, la propiedad más importante es ConnectionString. Esta propiedad permite definir una cadena de conexión, en la cual se indican todas las características de la misma. Podemos ingresar esta propiedad manualmente en la ventana de propiedades, o utilizar el botón con los tres puntos que se muestra en la Figura.

Luego de hacer clic sobre dicho botón, veremos una ventana (Ver Figura) que nos permite establecer tres orígenes de datos diferentes:

Page 46: Manual Visual Basic 6.0

Use Data Link File (usar un archivo de enlace). Nos permite abrir un archivo (con extensión VOL o DSN) con la configuración de la conexión a una base de datos.

Use ODBC Data Source Name (usar origen de datos ODBC). Permite utilizar una configuración OOBC ya creada.

Use COnnection String (usar cadena de conexión). Permite definir una cadena de conexión para cualquier tipo de acceso que necesitemos.

Nosotros vamos a elegir la tercera opción (Use Connection String). Una vez que la seleccionamos, debemos pulsar el botón Generar para iniciar otro asistente que nos permita generar la preciada cadena.

En el primer paso de este asistente podemos observar una lista de proveedores OLE DB (ver Figura) de los cuales generalmente vamos a usar uno: el proveedor para bases de datos Access.

Page 47: Manual Visual Basic 6.0

Como vamos a acceder a una base de datos Access, elegimos Microsoft Jet 4.0 OLE DB Providery seguimos adelante con Next, o vamos a la pestaña siguiente (Connection). Este Último paso es muy sencillo, ya que sólo debemos seleccionar el nombre de la base de datos.

Mediante la pestaña Advanced podemos modificar algunos parámetros avanzados; la pestaña All permite modificar todos los valores de la conexión. Una vez que terminamos, pulsamos el botón Aceptar para volver al cuadro anterior, donde volvemos a pulsar el mismo botón.

Page 48: Manual Visual Basic 6.0

Luego, en la propiedad ConnectionString debería quedar cargada la cadena de conexión que construimos, como podemos verificar en la ventana de propiedades.

OBTENER REGISTROS DE LA CONEXIÓN

Cuando la conexión ya está creada, lo principal es obtener un conjunto de registros para trabajar, como los de una tabla o una consulta. Si una base de datos tuviese más de una tabla o consulta, deberíamos seleccionar sólo una de ellas.

Para hacerla tenemos que establecer la propiedad RecordSource del control de daros ADO. Esta propiedad también dispone de un práctico asistente que nos ayudará (ver Figura).

Allí debemos establecer tres campos:

Command Type (Tipo de comando). Indica si lo que vamos a acceder es una tabla, una consulta SQL, o cualquier procedimiento almacenado en la base de datos. Aquí podemos elegir entre 4 opciones:

Opción 1 - adCmdToxl.- Vamos a obtener un grupo de registros que satisfaga una COnlulta SOL.

2 - adCmdTable.- Vamos a acceder a los registros de una tabla.

4 – adCmtStoredProc.- Vamos a acceder a los registros que seon devueltos por un procedimiento almacenado en la base de datas.

8 – adCmdUnknow.- Desconocido. Puede ser cualquiera de las anteriores, pero no "es conveniente usar esta opción, ya que ADO pierde tiempo en determinar el tipo de operación (acceder a una tabla, ejecutar una consulta, etc.).

Page 49: Manual Visual Basic 6.0

Table or Stored Procedurc Name (Tabla o procedimiento). Si vamos a acceder a una tabla (adCmdTable), aquí debemos indicar su nombre. Este campo es un combo desplegable que muestra las tablas y consultas disponibles en la base de datos.

Comnmand Text SQL (una sentencia SQL). Si vamos a obtener un grupo de registros a una consulta nueva (adCmdText), aquí debemos escribir la sentencia SQL correspondiente.

Una vez que establecimos esta propiedad, se modifica automáticamente la propiedad CommandType del control de datos para que contenga el tipo de acceso adecuado (adCmdText. adCmdTable, etc.). Esta propiedad también se puede modificar directamente, sin pasar por el asistente de la propiedad RecordSource.

HAY QUE SABERLO PROPIEDADES RECORDSOURCE y COMMANDTYPE Mediante los propiedades RecordSource y CommandType podemos acceder a los registros de uno tabla, consulta o procedimiento de una base de datos.

MOSTRAR LOS DATOS

Después de lograr el acceso a los datos, lo más lógico es que necesitemos mostrarlos. Para hacerla podemos usar alguno de los controles estándar, que pueden "enlazarse" o "engancharse" con el control de datos.

Esto se puede realizar mediante las propiedades DataSource y DataField de esos controles, que pueden ser cajas de texto, etiquetas, combos y controles de imagen, entre otros. La primera propiedad, DataSource, indica el nombre del control de datos del cual colgarse, y la segunda, DataField, el campo del cual obtener los datos. Una vez que el control de datos tiene otro control (o controles) enlazado, se habilitan las flechas laterales del mismo, permitiéndole al usuario desplazarse por los datos.

El objeto Recordset'

Cuando utilizamos un control de datos, éste obtiene cierta cantidad de registros de una base de datos. No importa si estos registros vienen de una tabla o de una consulta; el hecho es que hay un grupo de registros que podemos acceder, modificar, contar, eliminar, y mucho más.

Todas estas acciones están disponibles a través de un objeto llamado Recordset (significa conjunto de registros), que es parte de cualquier control de datos. Por ejemplo:

Page 50: Manual Visual Basic 6.0

Adodcl.Recordset Datos.Recordset

Ambas instrucciones se refieren al objeto Recordset de dos controles de datos. Como todo objeto, un Recordset tiene sus propiedades y métodos, algunos de los cuales se describen brevemente a continuación:

Propiedad

AbsolutePosition.- Indica la posición del registro actual. RecordCount.- La cantidad de registros accedidos en la última acciónMaxRecords.- Limita la cantidad de registros que puede llegar a devolver una acciónActiveConnection.- Es el objeto que contiene todos los datos de la conexión actual del control BOF.- Un valor booleano que indica si estamos en el primer registroEOF.- Un valor booleano que indica si estamos justo después del último registroFields.- Objeto que contiene información acerca de los campos, incluyendo los datos del registro actual Filter.- Permite filtrar los datos que se cargan en el control, mediante una expresión SQL

Método

AddNew.- Agrega un registro Edit.- Permite editar los campos del registro actual Delete.- Elimino el registro actualUpdate.- Graba los datos que están siendo editados o agregados Close.- Cierra el Recorset y libera la memoria ocupada por el mismoMoveFirst.- Mueve el puntero al primer registroMoveLast.- Mueve el puntero al último registroMoveNext.- Se mueve al próximo registroMovePrevious.- Se mueve al registro anteriorRefresh.- Actualiza los datos del control

Por ejemplo:

Datos.Recordset.Absoluteposition

Esto devuelve la posición del registro actual dentro del conjunto. 4.3. MANIPULACIÓN DE LOS DIFERENTES TIPOS DE DATOS EN LAS TABLAS

Agregar un registro

Page 51: Manual Visual Basic 6.0

Una de las posibles acciones a realizar en un Recordset es la de agregar un registro. Para esto, basta con seguir tres sencillos pasos:

1. Utilizar el método AddNew del Recordset, para indicarle que vamos a crear un nuevo registro.

2. Cargar en el objeto Fields del Recordset los valores de todos los campos del registro nuevo.

3. Llamar al métOdo Updatc para dar por finalizada la operación.

Editar un registro

Editar el regisrro actual de un Recordset no es complicado. Básicamente, es lo mismo que crear uno nuevo, salvo que en este caso se utiliza el método Edit en lugar de AddNew.

Eliminar el registro

Eliminar el registro actual es de lo más fácil, pero peligroso. Para hacerlo se utiliza el método Delete del Recordset, por ejemplo:

Datos.Recordset.Delete

Hay que tener en cuenta que este método elimina siempre el registro actual. Si queremos eliminar un registro en especial, primero debemos buscarlo en el Recordset, y una vez que lo encontramos, llamar al método Delete.

Buscar un registro

Una vez que nos conectamos con una base de datos y obtenemos un conjunto de registros de la misma, una de las operaciones más comunes es la de buscar datos. Por ejemplo, supongamos que queremos ubicar a la persona 'Jose Luis Ramirez", para eliminarla de la tabla. Para tal fin podemos utilizar el método Find de cualquier Recordset:

Datos.Recordset.Find Criterio, FilaComienzo, Direccion, BookmarkCo-

El significado de sus parámetros es el siguiente:

Método

Criterio.- Criterio de búsqueda. Es una expresión que indica que condición debe cumplir un registro para ser localizado.

Page 52: Manual Visual Basic 6.0

FilaComienzo Indica cuántos registros obviar de la búsqueda, a partir de la posición actual, o la de BookmarkComienzo (si se especifica uno). Direccion Indica la dirección en la cual buscar. Si usamos la constante adSearchForward nos movemos hacia delante, y si usamos la constante adSeerchBockward, vamos en sentido inverso.

BookmarkComienzo Permite comenzar la búsqueda a partir de un registro especial que haya sido marcodo.

Veamos un ejemplo:

Datos.Recordset.MoveFirst Datos.Recordset.Find "Nombre='Jose Luis''', 0, adSearchForward

Aquí buscamos un registro en el cual el campo Nombre sea igual a Jose Luis, comenzando a partir de la primera posición (para eso usamos MoveFirst) y explorando hacia adelante. Nótese que las cadenas dentro de la expresión se encierran entre comillas simples.

HAY QUE SABERlO En este tipo de expresiones, las cadenas siempre van entre comillas simples.

El criterio puede llegar a ser más complicado, por ejemplo:

"Nombre='Jose Luis' AND Apellido='Ramirez'"

Aquí el criterio busca un registro que cumple condiciones sobre dos campos: Nombre y Apellido (para esto usamos el operador lógico AND). "Nombre LIKE 'J*'"

Busca todos los registros en los cuales el campo Nombre comience con la letra j (nótese que hay comillas simples).

"Saldo < -1000"

Busca todos los registros con un campo Saldo menor a-1000 pesos.

"Fecha> #14/07/1979#" Busca todos los registros con un campo Fecha que sea superior al 14 de julio de 1999. Para usar fechas en este tipo de expresiones, debemos encerrarlas entre dos numerales (#).

Atención En estas expresiones, las fechas se encierran entre dos numerales, por ejemplo: #15/06/1976#.

Page 53: Manual Visual Basic 6.0

Luego de ejecutar el método Find, la posición actual dentro del Recordset se actualiza para que apunte al registro encontrado (si hubo alguno). Si no se encuentra ningún registro que satisfaga el criterio indicado, la propiedad EOF del Recordset toma el valor True (verdadero) Y el puntero se ubica justo después del último registro. Podemos usar esta propiedad par determinar si la búsqueda fue exitosa o no.

Filtrar datos

Otra operación muy común es la de filtrar datos. Filtrar se refiere a dejar en el Recordset sólo los registros que cumplan con una determinada condición. Por ejemplo, si queremos mostrar un listado sólo con los deudores cuyo saldo sea inferior a una cierta cantidad de dinero, es ideal aplicar un filtro. Los filtros se pueden aplicar mediante la propiedad Filter del Recordset:

Datos.Recordset.Fi1ter = Criterio

El criterio es una expresión del mismo tipo que la que vimos con el método Find, Por ejemplo:

Datos.Recordset.Fi1ter = “Nombre LlKE 'J*'”

Luego de establecer la propiedad Filter como se ve en el ejemplo, el Recordset pasaria a contener solo los registros que cumplan con la condiciÓn indicada (que empiecen con la letra J).

HAY QUE SABERlO La propiedad Filter también puede establecerse en tiempo de diseño, mediante la ventana de propiedades.

Si una vez que aplicamos un filtro queremos volver a ver todos los registros del Recordset, debemos darle el valor "" (una cadena vacía) a la propiedad Filter, y luego usar el método Refresh del control de datos, que se encarga de actualizar los datos que éste posee.

Mostrar un listado con los datos: el DataGrid

Al comienzo del capítulo decíamos quc una tabla se representaba visualmente por un listado con forma de grilla, en el cual las filas eran los registros y las columnas los campos. Generar este tipo de listados en Visual Basic no es complicado, ya que Microsoft prOvee de un control especial llamado Data Grid.

Dado que éste no es un control estándar que se encuentra en la caja de herramientas, debemos agregarlo desde la ventana de componentes (CTRL+T, o menÚ ProjectjComponents), eligiendo "Microsoft DataGrid

Page 54: Manual Visual Basic 6.0

Control 6.0 (OLEDB)". Una vez hecho esto, el ícono aparece en la caja de herramientas.

Este control permite engancharse con un Data Control para mostrar todos los datos de Recordset activo (que pueden ser los datos de una tabla, una consulta, un conjunto de datos filtrados, o lo que necesitemos). Su uso es muy sencillo:

Una vez que tenemos un control de datos ADO conectado a una base de datos, agregamos un DataGrid al formulario.

Vamos a sus propiedades y establecemos DataSource para que apunte al conlrol de datos.

Sobre el DataGrid ubicado en el formulario, hacemos click derecho y elegimos la opción Retrieve Fields (Recuperar campos) del menÚ con textual que aparece. Ahora, el listado se modifica y cada columna pasa a ser un campo en particular.

En la Figura se ve la apariencia de un DataGrid en tiempo de diseño. Para modificar Su apariencia tenemos dos opciones básicas:

En la ventana de propiedades, elegir la propiedad Custom. Allí podemos cambiar varios aspectos del listado: el título de cada columna, el tamaño de las mismas, la forma de selección, el formato de los datos que aparecen, y mucho más.

Sobre el DataGrid ubicado en el formulario, hacer clic derecho y elegir la opción Edil. Esto permite agregar columnas nuevas, cambiar el orden de las existentes, modificar su tamaño, etc.

Una vez que tenemos configurado el DataGrid, podemos ejecutar el programa y ver el listado. Si en alguna celda cambiamos un valor, éste también se modificará en la base de datos, ya que el control se encuentra "enganchado" a la misma. Para evitar que suceda, podemos cambiar la propiedad AllowUpdate del DataGrid a False.

Si, por el contrario, queremos un listado más interactivo donde el usuario tenga la posibilidad de cargar datos nuevos y modificar o eliminar los existentes. podemos usar las propiedades AllowAddNew, AllowDelete y AllowCpdate en True.

Page 55: Manual Visual Basic 6.0

4.11.CREACION DE CONSULTAS CON SQL

Bueno, ahora q tenemos abierta la base de datos, vamos a realizar unas consultas utilizando ordenes SQL. Por lo tanto podriamos declarar una variable para almacenar nuestra sentencia SQL. Dim SQL As String Ya estamos listos para aplicar SQL..

SENTENCIAS DE SELECCIÓN O CONSULTAS Bien, SQL permite realizar consultas mediante sentencias de selección "SELECT".Lo q hace esta sentencia SELECT es tomar datos de una base de datos para devolverlos a quien se lo pidió (en nuestro caso quien se lo pide es el objeto TBL). SELECT consta de seis cláusulas: las dos primeras obligatorias (SELECT y FROM) y las otras opcionales (WHERE, GROUP BY, HAVING, UNION, ORDER BY). SELECT y FROMFUNCIONES DE AGRUPAMIENTOWHEREGROUP BYHAVINGUNIONORDER BYCONSULTAS A MAS DE UNA TABLA 

    SELECT y FROM Veamos, con un ejemplo, como funciona: SQL = "SELECT * FROM tabla1" Set TBL = BDD.OpenRecordset(SQL)   'TBL almacena todos los valores de la tabla Nuestra orden SQL es: seleccionar (SELECT) todos los campos (*) de (FROM) la tabla1.

Page 56: Manual Visual Basic 6.0

 Ahora vamos a mostrar en la lista lo q almacenamos. TBL.MoveFirst  'nos posicionamos en el primer registro de la tablaDo Until TBL.EOF  ''La propiedad EOF se pone TRUE cuando se a llegado al final de la tabla   List1.AddItem TBL("nombre")   TBL.MoveNext   'pasamos al siguiente registroLoop De esta manera, al ejecutar, nos debe aparecer en la lista todos los nombres de la tabla. Si queremos mostrar "nombre" "apellido": TBL.MoveFirstDo Until TBL.EOF   List1.AddItem TBL("nombre") & " " & TBL("apellido")   TBL.MoveNextLoop Si queremos listar "nombre" "apellido" tiene "edad": TBL.MoveFirstDo Until TBL.EOF   List1.AddItem TBL("nombre") & " " & TBL("apellido") & " tiene " & TBL("edad")   TBL.MoveNextLoop Qué sucede si solo quería tomar de la tabla1 los campos nombre y edad (no el apellido). En este caso la sentencia SQL quedaría: SQL = "SELECT nombre,edad FROM tabla1" Por lo tanto el formato de la sentencia SELECT hasta ahora es: SELECT campo1,campo2,...,campoN FROM nombre_de_la_tabla NOTA: si ya terminamos de trabajar con la tabla y con la base de datos las podemos cerrar de la siguiente manera: TBL.Close   'cierra tablaBDD.Close  'cierra base de datos   FUNCIONES DE AGRUPAMIENTO

Page 57: Manual Visual Basic 6.0

 Las funciones de agrupamiento son: DISTINCT: Dijimos q si usabamos el * nos seleccionaba todos los campos. También hay un operador llamado DISTINCT, éste elimina las filas o registros duplicados del resultado de la consulta. Esto se ve bien en el siguiente ejemplo: SQL = "SELECT DISTINCT edad FROM tabla1"  'almacena todas las edades sin repetirlasSet TBL = BDD.OpenRecordset(SQL)TBL.MoveFirstDo Until TBL.EOF   List1.AddItem TBL("edad")   TBL.MoveNextLoop COUNT: Este operador nos devuelve la cantidad de valores en una columna. Por ejemplo, COUNT(nombre) devolverá el número de registros con valores no nulos en el campo nombre. Pero si usamos COUNT(*), nos devuelve el número de registros incluyendo aquellos registros con valores nulos. SQL = "SELECT COUNT(*) FROM tabla1"   'para saber la cantidad de registros (incluye los nulos)Set TBL = BDD.OpenRecordset(SQL)

List1.AddItem TBL("expr1000")  'expr1000 es el name del item de TBL q almacena el resultado del operador de agrupamiento SUM: Devuelve la suma total de los valores de una expresión de columna o campo NUMERICA (si no es numerica les da error!) . Por ejemplo, SUM(edad) devolverá la sumatoria de las edades. SQL = "SELECT SUM(edad) FROM tabla1"   'sumatoria de las edadesSet TBL = BDD.OpenRecordset(SQL)

List1.AddItem TBL("expr1000") AVG: Devuelve el promedio de los valores de una expresión de columna. Por ejemplo, AVG(edad) devolverá el promedio de las edades. Esto seria dividir SUM(edad)/COUNT(edad). SQL = "SELECT AVG(edad) FROM tabla1"  MAX: Devuelve el valor más alto de los contenidos en una expresión de columna. 

Page 58: Manual Visual Basic 6.0

Si hacemos: SQL = "SELECT MAX(edad) FROM tabla1"  Nos dirá la edad mas alta.  MIN: Si hay un MAX, por q no puede haber un MIN? ya se habran dado cuenta lo q hace.Entonces, si SQL = "SELECT MIN(edad) FROM tabla1"  Nos dirá la edad mas baja. EJEMPLO: quiero saber cuántos registro tengo, cual es la menor edad y cual es el promedio de todas las edades Dim BDD As DatabaseDim TBL As RecordsetDim SQL As String

Set BDD = OpenDatabase("c:\mis documentos\base1.mdb")SQL = "SELECT COUNT(*), MIN(edad), AVG(edad) FROM tabla1"Set TBL = BDD.OpenRecordset(SQL)

List1.AddItem "total de reg: " & TBL("expr1000")List1.AddItem "MINIMA EDAD: " & TBL("expr1001")List1.AddItem "PROMEDIO EDADES: " & TBL("expr1002")

TBL.CloseBDD.Close     WHERE Con WHERE indicamos condiciones para la selección de ciertos registros. Veamos un ejemplo: Antes q nada nuestra sentencia SELECT quedaría asi: SELECT campo1,campo2,...,campoN FROM nombre_de_la_tabla WHERE condicion1 AND condicion2 AND ... AND condicionN Dim BDD As DatabaseDim TBL As RecordsetDim SQL As String

Set BDD = OpenDatabase("c:\mis documentos\base1.mdb")SQL = "SELECT * FROM tabla1 WHERE edad < 30"Set TBL = BDD.OpenRecordset(SQL)

Page 59: Manual Visual Basic 6.0

TBL.MoveFirstDo Until TBL.EOFList1.AddItem TBL("edad")TBL.MoveNextLoopTBL.CloseBDD.Close Con esta instrucción decimos q: seleccione (SELECT) todos los campos (*) de (FROM) tabla1 q cumplan la condición (WHERE) edad < 30    GROUP BY Esta cláusula se utiliza para agrupar segun lo q especifiquemos. Por ejemplo, podemos listar todos los datos de nuestra tabla1, pero agrupados por edad.  SQL = "SELECT edad, nombre, apellido FROM tabla1 GROUP BY edad,nombre, apellido"Set TBL = BDD.OpenRecordset(SQL)

TBL.MoveFirstDo Until TBL.EOFList1.AddItem TBL("nombre") & " " & TBL("apellido") & " tiene " & TBL("edad")TBL.MoveNextLoop Entonces el formato es: GROUP BY expresion1, expresión2, ..., expresiónN. IMPORTANTE: Todas las expresiones deben coincidir con lo q pusimos en SELECT. Por lo tanto lo siguiente no funciona: SQL = "SELECT * FROM tabla1 GROUP BY edad,nombre, apellido"  'no se puede agrupar mediante los campos seleccionados con *

SQL = "SELECT edad FROM tabla1 GROUP BY apellido" SQL = "SELECT nombre, apellido, edad FROM tabla1 GROUP BY edad"    HAVING 

Page 60: Manual Visual Basic 6.0

Asi como la cláusula WHERE especifica condiciones para la selección de registros, HAVING especifica condiciones para el agrupamiento (GROUP BY). Por lo tanto HAVING funciona solo si se especifica un GROUP BY. SQL = "SELECT edad, nombre, apellido FROM tabla1 GROUP BY edad,nombre, apellido HAVING edad<30" Con este ejemplo agrupamos según la edad, pero solo los q su campo edad es menos a 30.     UNION Con este operador lo q hacemos es juntar dos resultados de dos sentencias SELECT diferentes. El resultado de la union son todos los registros devueltos en ambas sentencias, y los registros repetidos se omiten a no ser q utilicemos la palabra ALL. La forma es: SELECT sentencia1 UNION ALL SELECT sentencia2     'sentencia1 debe coincidir con sentencia2 veamos q sucede si hacemos lo siguiente SQL = "SELECT * FROM tabla1 UNION SELECT * FROM tabla1"Set TBL = BDD.OpenRecordset(SQL)

TBL.MoveFirstDo Until TBL.EOFList1.AddItem TBL("nombre") & " " & TBL("apellido") & " tiene " & TBL("edad")TBL.MoveNextLoop En este caso unimos la tabla1 con la misma tabla1, por lo tanto todos los resultados son repetidos y se omiten.Veamos q pasa con ALL SQL = "SELECT * FROM tabla1 UNION ALL SELECT * FROM tabla1"Set TBL = BDD.OpenRecordset(SQL)

TBL.MoveFirstDo Until TBL.EOFList1.AddItem TBL("nombre") & " " & TBL("apellido") & " tiene " & TBL("edad")

Page 61: Manual Visual Basic 6.0

TBL.MoveNextLoop Otra vez todos los datos se repiten pero en este caso le decimos q no omita ninguno, por lo tanto cada valor de la tabla1 estará repetido dos veces. Hacer esto no tiene sentido, es decir q la union debería ser con la selección de dos tablas diferentes.     ORDER BY Para ordenar los resultados utilizamos ORDER BY. Cuando omitimos esta cláusula, los resultados se ordenan por el primer campo que sea clave en el índice que se haya utilizado. Veamos las siguientes sentencias: SQL = "SELECT * FROM tabla1 ORDER BY edad ASC" ' ordenado por edad en forma ascendente SQL = "SELECT * FROM tabla1 ORDER BY edad" ' ordenado por edad, por defecto lo ordena en forma ascendente SQL = "SELECT * FROM tabla1 ORDER BY edad DESC" ' ordenado por edad en forma descendente SQL = "SELECT * FROM tabla1 ORDER BY 1"  'ordenado por el primer campo de la tabla SQL = "SELECT nombre, apellido, edad FROM tabla1 ORDER BY 3,2,1" 'ordenado por edad, apellido y nombre Entonces podemos indicar el nombre_de_campo, número_de_campo y si es ASCendente o DESCendente.     CONSULTAS A MAS DE UNA TABLA Supongamos q tenemos una base de datos con dos tablas llamadas tabla1 y tabla2. Tabla1 tiene como campos nombre, apellido y edad. Mientras q la tabla2 tiene nombre y email.

Page 62: Manual Visual Basic 6.0

 Bien, por ejemplo yo podria querer los emails de las personas q estan en ambas tablas, esto es q el nombre de la tabla1 tiene q ser igual al nombre de la tabla2.Veamos como lo indicamos... SQL = "SELECT tabla1.nombre,email FROM tabla1,tabla2 WHERE tabla1.nombre=tabla2.nombre"Set TBL = BDD.OpenRecordset(SQL)

TBL.MoveFirstDo Until TBL.EOFList1.AddItem TBL("nombre") & " " & TBL("email")TBL.MoveNextLoop

Nuestra sentencia SQL quedo así: 1- Indicamos los campos a seleccionar (SELECT). Observar q el campo nombre aparece en las dos tablas, por lo tanto debemos indicar de q tabla los voy a seleccionar (tabla1.nombre). Por el contrario el campo email solo aparece en la tabla2, por lo tanto no hace falta indicarle de q tabla lo queremos ya q es obvio de cual va a ser.2- Despues indicamos cuales tablas van a ser consultadas (FROM). Le indicamos q tabla1, tabla2. El orden es importante porq de cada registro de la primer tabla se efectua una busqueda en la segunda.3- por ultimo indicamos la condición (WHERE). Decimos q el campo nombre de la tabla1 debe ser igual al de la tabla2. Ahora vamos a ver el mismo ejemplo pero usando ALIAS. Un alias es un nombre temporal q le asignamos a una tabla. Por ejemplo a la tabla1 la podemos llamar t1 y a la tabla2 t2. De esta manera es mas facil escribir t1 q tabla1. SQL = "SELECT t1.nombre,email FROM tabla1 t1,tabla2 t2 WHERE t1.nombre=t2.nombre"En el FROM escribimos nombre_tabla alias_tabla. En el resto de la sentencia usamos el alias en vez de el nombre. Ahora, supongamos q tenemos una tercer tabla q contiene nombre y telefono como campos. Queremos consultar los campos nombre, email y telefonos. SQL = "SELECT t1.nombre,email,telefono FROM tabla1 t1,tabla2 t2, tabla3 t3 WHERE t1.nombre = t2.nombre AND t1.nombre = t3.nombre" Lo importante de estas consultas es el orden en q se escriben las tablas luego del FROM, ya q esto va a influir en la velocidad de la consulta.

Page 63: Manual Visual Basic 6.0

Para terminar la sección de consultas vamos a ver las SELECT ANIDADAS. Esto es una SELECT dentro de otra. Es muy simple. Veamos un ejemplo. SQL = "SELECT t1.nombre,email,telefono FROM tabla1 t1,tabla2 t2, tabla3 t3 WHERE t1.nombre = t2.nombre AND t1.nombre = t3.nombre AND (SELECT COUNT(*) FROM tabla1)< 100"Es la misma condición anterior solo q se agrego una condición mas: (SELECT COUNT(*) FROM tabla1)< 100, esto es, q la tabla1 tenga menos de 100 registros. Entonces cuando insertamos una nueva SELECT dentro de otra, debemos ponerla entre parentesis.

UNIDAD 5

DISEÑO DE MENÚS Y

ELABORACIÓN DE REPORTES

Page 64: Manual Visual Basic 6.0

5.1 DISEÑO DE UN MENUEL EDITOR DE MENUS

El Menú o Barra de Menú es la segunda línea de cualquier ventana Windows, donde pueden verse distintos nombres. La Barra de Menú es un componente de un Formulario.

La Barra de Menú puede tener tantas palabras como se desee, y sobre cada palabra, puede desplegarse un Menú desplegable con mas palabras. Sobre cada una de estas puede a su vez desplegarse otro conjunto de palabras, etc. con lo que se puede conseguir una cantidad de palabras tan grande como necesitemos.

Page 65: Manual Visual Basic 6.0

Para cada palabra se produce el evento click. Cada palabra de la Barra de Menú lleva anexo un único procedimiento, que se ejecutará al hacer click sobre la palabra. Pero en las palabras que sirven para desplegar un menú no tiene sentido que se ponga ningún código en su procedimiento, ya que están ahí justamente para desplegar otras palabras. Será en las palabras finales donde se colocará el código correspondiente.

En las figuras anteriores pueden verse tres formas distintas de ver el mismo Menú. En la primera figura el Menú está sin desplegar. En la segunda figura puede verse un árbol de Menú largo, desplegado en su totalidad. En la tercera puede verse el Menú desplegable de la palabra Archivo de la Barra de Menú. Puede apreciarse en este menú desplegable una línea que separa las palabras Guardar Como y SALIR. Esta línea separadora es muy práctica para separar dos temas distintos dentro de un Menú desplegable. Tan distintos como las operaciones de Abrir y Guardar respecto a la última orden del menú desplegable que es SALIR de la aplicación.

5.1.1. PASOS PARA DESARROLLAR UN MENU

Para crear un menú debe usarse el Editor de Menú, que se encuentra en la Barra de Menú de VB en Herramientas | Editor de menús. Le aparecerá el siguiente cuadro. (En principio vacío)

Page 66: Manual Visual Basic 6.0

Cada palabra del menú tiene su Caption (La palabra que aparece en el menú), su Name (Nombre), y puede tener Index (si existen varias palabras con el mismo Name). Para introducir estas propiedades basta con teclearlas directamente en cada una de las casillas al efecto del cuadro del editor de menús. Para colocar el cursor de escritura en una u otra casilla, puede hacerse bien con el cursor del ratón, bien con el tabulador. Para pasar a la siguiente línea de edición (crear una nueva palabra), basta con pulsar ENTER.

Existen otras propiedades aparte del Caption y Name que se introducen directamente en las casillas al efecto.

HelpContextID Igual que esta propiedad en el resto de los controles, permite introducir un número de contexto para la ayuda de Windows.

Enabled. Habilitado. Si se quita la marca de esa casilla, esa palabra aparecerá por defecto deshabilitada. Esta propiedad puede leerse y cambiarse en tiempo de ejecución, por lo que esta propiedad puede usarse para deshabilitar ciertas funciones de la aplicación, dependiendo de la evolución de la propia aplicación. La presentación en el menú cuando está deshabilitada es con color pálido. Visible. Como su nombre indica, que sea visible o no lo sea. Puede cambiarse en tiempo de ejecución.

WindowList Indica si esa palabra es la que va a mostrar todos los formularios abiertos en una aplicación de documentos múltiples (MDI). Al hacer click sobre esta palabra, se desplegará un submenú con todos los Caption de los Formularios hijo abiertos en ese momento. Solamente puede existir una palabra en un menú con esta propiedad activada. Esta propiedad no puede variarse en tiempo de ejecución.

Page 67: Manual Visual Basic 6.0

Para cambiar una de estas propiedades en tiempo de ejecución, basta con citar por su nombre a esa palabra (por su Name, no por su Caption), e igualar a True o False su valor :

nmuDocumentos.Visible = False

El nombre usado para nombrar a una de las palabras del menú puede ser cualquiera. Sin embargo es prudente usar un nombre que nos pueda identificar, por una parte, que ese nombre corresponde a una de las palabras del menú, y por otra, a que palabra se refiere. La solución puede ser cualquiera. El autor de estos apuntes propone poner las letras mnu (o menu - recomiendo no usar acentos e los Names de VB), seguido del Caption de esa palabra.

Otras propiedades

Shortcut Atajo. Esta propiedad admite varias combinaciones de teclas para acceder al procedimiento click de esa palabra sin necesidad de usar el ratón. Las combinaciones de teclas posibles se muestran haciendo click en la flecha hacia abajo que tiene esa casilla. Se desplegará una lista con todas ellas. Para elegir una de estas combinaciones, basta con hacer click sobre la línea que la contiene. Esta combinación de teclas aparecerá en el menú, al lado de la palabra (Véase figura siguiente, SALIR Ctrl + X)

NegotiatePosition. Establece un valor que determina si los controles Menu de nivel superior se muestran en la barra de menús mientras un objeto vinculado o incrustado de un formulario está activo y mostrando sus menús. No está disponible en tiempo de ejecución. Puede tener los valores 0 (Predeterminado) Ninguno. El menú no se muestra en la barra de menús cuando el objeto está activo.1 Izquierda. El menú se muestra a la izquierda de la barra de menús cuando el objeto está activo.2 Medio. El menú se muestra en medio de la barra de menús cuando el objeto está activo.3 Derecha. El menú se muestra a la derecha de la barra de menús cuando el objeto está activo.

El menú editado con los datos de la figura anterior tendrá esta forma en tiempo de ejecución :

Observe que tiene cuatro palabras en la línea superior, y que “colgando” de la primera aparece un menú desplegable. Para conseguir un menú desplegable fíjese en la figura del Editor, en la parte de abajo donde están todos los Caption de las palabras del menú. Observará que algunas de ellas (&Edicion, Documentos, Ayuda - Hay otra que no se vé, &Archivo) están completamente a la izquierda de la ventana, y las demás están separadas de la parte izquierda por unos guiones. Las palabras que están

Page 68: Manual Visual Basic 6.0

completamente a la izquierda son las que figurarán en la barra de menú de forma permanente. Las que están separadas (tabuladas) corresponden a las que aparecerán en los menús desplegables. Como es lógico, un menú desplegable debe colgar de una palabra de las de la barra de menú. La palabra de la que cuelga el submenú es la palabra sin tabular inmediatamente anterior.

Para tabular las palabras, hay que hacer click en el botón en forma de flecha a la derecha que está sobre la ventana de edición :

Situandonos sobre una de las líneas ya editadas, y haciendo click sobre el botón con flecha hacia la izquierda, quitamos la tabulación.

Los botones con flecha hacia arriba o abajo nos permiten variar el orden de las líneas ya editadas.

Podemos hacer varios niveles de submenús a base de introducir varias tabulaciones. Al comienzo de este capítulo puede ver un ejemplo de ello.

Quedan un par de cosas. Una de ellas es el carácter & que está delante de los Caption de Archivo y Edición. Este carácter nos permite acceder al procedimiento click de esa palabra pulsando la tecla Alt + la tecla correspondiente a la letra que está detrás del carácter &. Justamente la letra que está subrayada en la palabra del menú.

El carácter & no tiene porqué ir precisamente al comienzo de la palabra. Puede ir en el medio de la palabra. De esta forma se subrayará una letra intermedia.

Otra cosa. Puede verse en el menú desplegado de la figura anterior una línea entre Guardar Como y SALIR. Esta línea, que solamente tiene efectos estéticos, se logra introduciendo como Caption un guión ( - ). El editor de menús solamente le permite el guión en una palabra de menú desplegable (Tabulada). No se olvide de poner el Name incluso para este guión.

NOTA MUY IMPORTANTE

Siempre se recomienda poner la orden de SALIR en la primera palabra de la barra de Menú. Bien que esa primera palabra sea Salir o que esté en el menú desplegable de la primera palabra de la Barra de Menú, en este último caso, separada mediante una línea separadora. (Vea The Windows Interface Guidelines for Software Design, pág.124)

POPUP MENÚS

Un PopUpMenú o Menú Emergente es un menú que despliega en cualquier punto de un Formulario (MDI o normal) con varias opciones. Es normal en los procesadores de texto que se obtenga un menú emergente pulsando el botón derecho del ratón, donde aparecen las tres palabras mágicas de Copiar, Cortar y Pegar.

Page 69: Manual Visual Basic 6.0

Para crear un menú emergente o PopUpMenu es necesario tener en el menú de ese formulario una palabra de la que se despliegue un submenú con las mismas palabras que queremos que aparezcan en el PopUpMenu.

Por ejemplo, en el menú que hemos editado como ejemplo anteriormente, existía una palabra Edición, de la que se desplegaba el Submenú Copiar, Cortar y Pegar. Si analizamos la edición realizada, las palabras tenían el siguiente Caption y Name :

Caption Name Tabulada

Edición mnuEdicion NOCopiar mnuCopiar SICortar mnuCortarSIPegar mnuPegarSI

Recuerde que las palabras del menú que estaban tabuladas son las que aparecían en el menú desplegable. Esas mismas serán las que aparezcan en el PopUpMenu.

Para ello utilizaremos el Método PopupMenu. Este método pesenta un menú emergente en un objeto MDIForm o Form en la posición actual del mouse o en las coordenadas especificadas.

La sintaxis de este método es la siguiente :

NombreFormulario.PopupMenu nombremenú, indics, x, y, negrita

Donde NombreFormulario es el nombre del formulario donde presentamos el PopUpMenu. Puede omitirse.

Nombremenú. Este parámetro es requerido. Es el Name de la palabra del menú de donde cuelga el menú desplegable. La palabra del menú a que se refiere Nombremenú debe tener al menos un submenú.

Indics. Parámetro opcional. Un valor o constante que especifica la posición y el comportamiento del menú emergente, como se describe a continuación :

Constante (posición) ValorDescripción

vbPopupMenuLeftAlign 0 (Predeterminado) El lado izquierdo del menú sesitúa en x.

vbPopupMenuCenterAlign 4 El menú emergente se centra en x.vbPopupMenuRightAlign 8 El lado derecho del menú se sitúa en x.

Constante (comportamiento) ValorDescripción

Page 70: Manual Visual Basic 6.0

vbPopupMenuLeftButton 0 (Predeterminado) Los elementos delmenú emergente sólo reaccionan a los clic del mouse cuando se use el botón primario del mouse.

vbPopupMenuRightButton 2 Los elementos del menú emergentereaccionan a los clic del mouse cuando se usen los botones primario o secundario.

Para combinar la los valores de indics de posición y comportamiento basta con sumar los valores.

Nota El parámetro indics no tiene efecto en las aplicaciones que se ejecuten bajo Microsoft Windows versión 3.0 o anteriores.

X, y Parámetro(s) opcionales que especifican las coordenadas x e y donde va a aparecer el menú emergente. Si no se especifican, aparecerá donde esté el puntero del mouse. Las unidades de medida de las coordenadas x e y se definen mediante la propiedad ScaleMode.

negrita. Parámetro opcional que especifica el nombre de un control menú del menú emergente para presentar su título en negrita. Si se omite, ningún control del menú aparece en negrita.

Nota. Este argumento funciona solamente en las aplicaciones que se ejecuten bajo Windows 95. La aplicación ignora este argumento cuando se ejecute bajo versiones de 16 bits de Windows o Windows NT 3.51 y anteriores.

La forma mas habitual de presentar un menú emergente es mediante el botón derecho del ratón. Concretamente en el editor Word que estoy utilizando para escribir estos apuntes ocurre cuando se levanta el botón derecho del ratón. Es decir, en el evento MouseUp, con la condición de que Button=2. Imaginemos que queremos presentar en un menú emergente las palabras Cortar, Copiar y Pegar del ejemplo anterior, que colgaban en el menú de la palabra Edición. (Vea mas atrás). Queremos también que la palabra Copiar salga resaltada en negrita. Iríamos al procedimiento MouseUp del Formulario y escribiríamos :

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = 2 ThenPopupMenu mnuEdicion, , , , mnuCopiarEnd IfEnd Sub

Observe que se ha omitido el nombre del Formulario (Opcional), el parámetro indics, y las coordenadas x e y (el menú emergente aparecerá donde esté situado el cursor del ratón). Observe también que las comas separadoras de los parámetros hay que colocarlas.

Cuando se presenta un menú emergente, el código que sigue a la llamada al método PopupMenu no se ejecuta hasta que el usuario elige un comando del menú (en cuyo caso se ejecuta antes el código del procedimiento de evento Click) o cancela el menú. Además, sólo puede presentarse un menú emergente al mismo tiempo; por lo tanto, las llamadas a este

Page 71: Manual Visual Basic 6.0

método se ignoran si el menú emergente está presentado actualmente o si un menú desplegable está abierto.

Si queremos presentar un menú emergente es necesario tener ese menú en el menú del formulario. El problema puede ser que no queramos que esté en la barra de menú. No es problema. Ponga la propiedad Visible del elemento del menú desde el que se va a desplegar el submenú a False. No se verá ya en la barra de menú ni esa palabra ni el submenú que de ella se despliega. Eso sí, las palabras del submenú deben tener la propiedad Visible = True. Si les pone esa propiedad a False, no se verán en el menú emergente. Puede aprovechar esta circunstancia para hacer menús emergentes con mas o menos elementos, según las necesidades de su aplicación. También puede poner la propiedad Enabled a False si así lo precisa. No puede activar la propiedad WindowList en un elemento que forma parte de un menú emergente.

5.1 CREAR REPORTES