Fdocuments - in - Manual Practico Visual Basic 60
Fdocuments - in - Manual Practico Visual Basic 60
Fdocuments - in - Manual Practico Visual Basic 60
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 2
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
INDICE GENERAL
MICROSOFT VISUAL BASIC 6.0. PROFESSIONAL
HERRAMIENTA DE MICROSOFT VISUAL STUDIO 6.0.
La primera aplicación
La interfaz de Visual Basic
Proyectos
Administrar proyectos
Establecer opciones de VB
Tiempos de desarrollo
El sistema de Ayuda
El editor de menús
Elementos de menús
Teclas de método abreviado
Eventos de menú
Menús contextuales
Opciones de menú contextual
Introducción
Cuadros predefinidos
Control Diálogo Común
Cuadros personalizados
PAG. 3
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Introducción
Variables
Tipos de datos
Constantes
Operadores de Visual Basic
Estructuras de decisión
Expresiones lógicas
Matriz de controles
Estructuras de repetición
Tipos de procedimientos
Crear procedimientos Sub
Llamar a procedimientos Sub
Crear procedimientos Function
Llamar procedimientos Function
Paso de parámetros
Ámbito de actuación
El control Line
El control Shape
Arrastrar con el ratón
Colocar con el ratón
Introducción
Diseñar la base de datos
Conocer el Administrador
Crear la base de datos
Crear índices
El control Data
Controles enlazados
Recordset
Modificar la Base de datos
Añadir registros
PAG. 4
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Introducción
Cuadrícula enlazada a datos
Consultas en SQL
Criterios complejos
Validar la entrada
Validar con el control Data
Controles especializados
Conectar los controles
Manejadores de error
Archivos de texto
La instrucción FileCopy
Introducción
El Contenedor OLE
Edición del objeto
Objetos insertables
Automatización OLE
Tipos de error
Buscar el error
Seguir paso a paso
La ventana Depuración
Inspección instantánea
Corregir y seguir
Llamadas a procedimientos
PAG. 5
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 6
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
S
eguro Que está impaciente por empezar a programar en Visual Basic. Aunque las
prisas son un buen aliado de una programación de calidad, en este capítulo
vamos a mostrarle cuál es el proceso para crear aplicaciones con Visual Basic.
4.Escribir códigos para aquellos eventos que debe controlar, además de rutinas que realicen
procesos específicos.
A lo largo de este curso aparecerá a realizar cada uno de estos pasos, excepto el primero y
tal vez más importante, que es el análisis de la aplicación.
o debe olvidar que está trabajando en una aplicación Windows 95 como es Visual
Basic y que, muchos de los elementos que deseará incorporar en sus propias
aplicaciones también están presentes en Visual Basic.
En este capítulo viajaremos a través de la interfaz de Visual Basic para conocer las
herramientas de su entorno de programación. El capitulo tiene verdadera importancia ya que éste
es el entorno en que trabajará cuando diseñe sus aplicaciones.
PAG. 7
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Otra serie de botones que aparecen en esta barra de herramientas sirven para establecer
criterios en Tiempo de ejecución Así, podrá indicar la ejecución , interrumpirla finalizarla
, además de establecer otras opciones útiles en el momento de depurar la aplicación que esté
creando.
PAG. 8
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
En la parte superior de la
ventana de código aparece dos
listados de selección: en la de la
izquierda se elige el Objeto al que se
quiere hacer referencia y en la de la
derecha el procedimiento o parte del
código que se quiere programar.
Otros componentes de la interfaz de Visual Basic, es el uso de menú contextual, a los que
se accede con el botón secundario del ratón (normalmente será el botón derecho)
Este tipo de menú es sensible al objeto sobre el que se ha pulsado y permite un acceso
rápido a las opciones más típicas que se utilicen sobre el mismo.
1.3. PROYECTOS
Cuando usted este desarrollando una aplicación con Visual Basic, estará trabajando en un
Proyecto en la “jerga” de Microsoft.
www.detodoprogramacion.com
PAG. 9
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Es decir, un proyecto está compuesto de varios archivos que son los que usted va creando
a medida que desarrolla su aplicación. Así, un proyecto podrá contener uno o más archivos
de formularios, donde se guarda todo lo referente a los formularios o ventanas que vayan creando. Estos
archivos tienen la extensión .FRM y se guardan de forma independiente, uno por cada
formulario.
Es posible que desee agregar funcionalidad a su aplicación que no esté relacionada con
ningún objeto en particular, como puedan ser procesos sobre archivos o utilidades que desee
utilizar en más de un lugar. En estos casos, ese código puede ser escrito en otro tipo de archivos:
archivos de módulos.
Otro tipo de archivos que puede encontrar en un proyecto son los llamados módulos de
clase, cuya extensión es .CLS. Estos módulos son utilizados para crear sus propios objetos, tema
éste que no será tratado en este curso.
En los archivos de recursos (sólo puede existir un archivo de este tipo por proyecto) se
guardan mapas de bits, cadenas de texto u otros datos que se utilizan en la interfaz de su
aplicación. Así en lugar de guardarlos en los ficheros de formularios, tal vez le interese hacerlo en
un archivo de recursos. Un uso típico de estos archivos son las aplicaciones que deben funcionar
en más de un idioma.
Además de todos los archivos que se han comentado, existen los archivos con c ontroles
personalizados, que también pueden estar presentes en un proyecto. Este tipo de controles serán
tratados a lo largo del curso.
Usted puede trabajar a nivel de proyecto a nivel de los archivos que lo componen. Así
existen comandos que afectan a todo el proyecto, como pueden ser las opciones del menú
Archivo Nuevo proyecto, Abrir proyecto, Guardar proyecto Guardar proyecto como.
PAG. 10
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
C ada una de estas opciones trabajan con el conjunto de proyecto. Por ejemplo, al
guardar un proyecto, actualizará el archivo de proyecto y cada uno de los archivos que
lo componen.
Sin embargo, otras opciones como Guardar archivo o Guardar archivo como sólo
afectan al archivo de formulario o módulo que tenga seleccionado.
Visual Basic permite que un mismo archivo está presente en más de un proyecto.
Podría crear un formulario de bienvenida de introducción de datos o tener utilidades en un
módulo independiente y usarlo en más de una aplicación, sin necesidad de crearlos cada vez.
Si desea de tener una copia individual de ese archivo, podrá utilizar el comando Guardar archivo
como una vez lo haya agregado.
Por otra parte, también tiene la posibilidad de eliminar un determinado archivo del
proyecto. En este caso la referencia a ese archivo en el proyecto es suprimida. Utilice el comando
Eliminar archivo y no lo elimine desde el exterior de Visual Basic ya que en este último caso se
produciría un error en el momento de abrir proyecto, al no poder encontrarlo.
Con Agregar proyecto… puede trabajar con varios proyectos dentro de una misma sesión
del entorno de programación.
Así, puede usar un proyecto como borrador donde poder probar su código, y a medida que
lo va depurando, incluirlo en el proyecto ejecutable de la aplicación.
Visual Basic muestra el nombre del proyecto de inicio en negrita dentro de la ventana
Proyecto.
El resultado final de su proyecto debe ser un archivo ejecutable, que podrá tener o no
extensiones en forma de librerías de enlace dinámico (DLL). Visual Basic incorpora una opción
en el menú Archivo que crea un archivo ejecutable a partir de los archivos que componen el
proyecto: Generar archivos EXE. En la última lección del curso tendrá más información
respecto a este asunto.
PAG. 11
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
En Visual Basic podrá definir opciones del entorno de desarrollo del proyecto que está
creando, opciones de formato de código y de manejo de errores. Todas estas opciones
se establecen través del comando Opciones del menú Herramientas, y de Propiedades en el
menú Proyecto.
Al elegir este comando del menú Herramientas, aparece en cuadro de diálogo compuesto
por cinco fichas.
La ficha Formato del editor sirve para establecer la apariencia del código que escriba en
Visual Basic. Aspectos como la fuente utilizada o el color de los distintos elementos del
código,
para poder diferenciarlos, son establecidos en esta ficha.
PAG. 12
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Si desactiva esta casilla, tendrá una mayor libertad en la colocación de los controles, pero
le será más difícil alinearlos.
Si ha activado la anterior casilla, tal vez le interese usar la compilación en segundo plano, con
lo que Visual Basic utiliza el tiempo en el que el procesador está inactivo ( por ejemplo
esperando una respuesta del usuario) para compilar el código de su proyecto. Esto puede producir
una mejora en la velocidad de la aplicación.
PAG. 13
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Una de las opciones más importantes es la de Preguntar si se guardan los cambios ya
que permite guardar los cambios que haya efectuado en su proyecto, antes de ejecutarlo. Es
importante porque es posible que, al ejecutar un proyecto, éste se bloquea y no responda, con
lo que perdería los cambios efectuados desde la última vez que los guardó.
Finalmente, la ficha Avanzada establece algunas opciones que son importantes y que sólo
debe establecer si realmente entiende su significado.
La opción Cargar el proyecto en segundo plano se utiliza para proyectos en los que
existen un gran número de archivos. Con esta opción Visual Basic devuelve el control al
programador de una forma más rápida, sin esperar que se carguen todos los archivos.
PAG. 14
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Cuando usted pulse el botón Iniciar o elige la opción equivalente del menú Ejecutar, se
traslada al tiempo de ejecución, en el que interactúa con la aplicación del mismo modo que lo
hará el usuario final. Este modo le permite comprobar el resultado de su esfuerzo de desarrollo.
Por ello, Visual Basic incorpora un potente sistema de ayuda al que podrá acudir en caso
de necesitar información sobre cualquier situación que le surja en su trabajo.
Este sistema de ayuda forma parte del MSDN (Microsoft Developer Network). MSDN
la referencia esencial para programadores que utilizan las herramientas de desarrollo de
Microsoft. Incluye más de 1 GB de información de programación técnica, código de
ejemplos, etc.
www.detodoprogramacion.com
PAG. 15
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
La ficha Índice permite un acceso más rápido a la información buscada, eso sí, con la
condición de que sea usted quien aporte una información más concreta sobre el tema de búsqueda.
En este caso los temas de ayuda se sitúan en una lista ordenada alfabéticamente y que
aparece en la parte inferior de la ventana. Usted podrá elegir un tema de la lista o escribirlo en la
parte superior. Si existe más de un tema de ayuda relacionado con el texto que ha introducido o
elegido en la lista, aparecerá una nueva ventana en la que deberá elegir el tema concreto.
La ficha Buscar es similar a la ficha Índice ya que tiene que teclear el tema sobre el
que desea información. Sin embargo, permite una búsqueda más amplia al poder introducir
varias
palabras o incluso frases completas. El resultado de la búsqueda se amplía a todos los temas que
puedan estar relacionados con alguna de las palabras introducidas.
Una búsqueda básica de temas se compone de la palabra o frase que desea encontrar.
Puede utilizar expresiones comodín, expresiones anidadas, operadores booleanos, coincidencias
de palabras similares, la lista de resultados anterior o títulos de temas para afinar la búsqueda.
Sin embargo, el uso más frecuente que hará del sistema de ayuda será a través de la
tecla F1. Si desea información sobre alguna propiedad, método, instrucción del lenguaje, etc., la
forma más rápida y cómoda de conseguirla es situar el cursor en dicha palabra y pulsar la tecla F1.
PAG. 16
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
E
l código que escribe en un proyecto de Visual Basic aparecerá siempre en un módulo.
Un módulo es un archivo del proyecto pudiendo ser un módulo de formulario, de
clase o módulo de carácter general.
Los procedimientos son unidades de código, como pequeños programas, escritos para
realizar funciones determinadas, con un propósito bien definido.
PAG. 17
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Si ha escrito código para algún procedimiento de evento, éste aparece en negrita en la lista
Procedimiento: de la ventana de código.
Por otra parte, el código de carácter general o que desea compartir en más de un proyecto,
se sitúa en un módulo general de Visual Basic. El código que aparece en este tipo de módulo no
se relaciona con un objeto determinado sino que tiene carácter general. En los módulos generales
no podrá incluir procedimientos de eventos como en el caso de los módulos de formulario
Por otra parte, es conveniente añadir comentarios a las líneas de código que escriba.
De esta forma podrá entender sus programas aunque haga tiempo que los escribió. Para añadir
un comentario en una línea utilice el carácter (apostrofe) Al introducir este carácter en una
línea, Visual Basic entiende todo lo que le sigue en dicha línea es un comentario y no lo tiene en
cuenta.
A
partir de ahora deberá acostumbrarse a oír hablar de objetos si no es así. Aunque
Visual Basic no presenta todas las características de un lenguaje orientado a un
objeto, usted trabajará con objetos al crear la interfaz de su aplicación.
En este sentido debe entender un objeto como todo elemento o entidad que puede
identificar en su ampliación. Desde un formulario hasta una línea gráfica que dibuje, pasando por
la propia aplicación que también es considerada como un objeto. Un objeto en Visual Basic se
caracteriza por tres componentes: propiedades, métodos y eventos.
Los métodos son pequeños programas que actúan sobre un determinado objeto y que
establecen su comportamiento. Así un objeto puede moverse, ocultarse, etc. Usted podrá utilizar
cualquier método que forme parte del objeto.
Finalmente, un evento es una situación que nos interesa identificar para establecer algún
tipo de respuesta por parte del objeto. Así, podría hacer clic sobre un determinado objeto, creando,
de esta forma, un evento reconocible por el objeto. Que suceda algo o no como respuesta a
este evento dependerá de que haya programado alguna acción en el correspondiente procedimiento
del evento.
PAG. 18
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
C uando dibuje objetos en sus formularios deseará establecer alguna de las propiedades
que presenten. Dicha propiedades son aquellas características, propias del objeto, que
hacen que se distinga un objeto de otro. En este capítulo se le presentan algunas propiedades,
utilizando el caso de un formulario.
• BordesStule : establece el estilo del borde del formulario. Puede indicar que sea un
formulario dimensionable o al estilo de los cuadros de diálogo, que no cambie de
tamaño.
• Caption: establecer el texto que aparece en la barra de título del formulario.
• ControlBox: permite mostrar o no el menú de control de las ventanas de
Windows. Desde este menús podrá cerrar, mover, etc., la ventana
• Enabled : establece si el formulario puede o no responder a los eventos que genere el
usuario.
• Font: establece las características de los objetos de texto que se sitúen en el
formulario.
• Icon: permite cambiar el icono que representa el formulario y que está situado en la
parte izquierda de la barra de título.
• Left, Top, Height y Width: establece la posición en pantalla dl formulario, así como
sus dimensiones. Left es la coordenada x, Top la coordenada y, Height la altura y
Width la anchura.
• MaxButton y MinButton: Permiten indicar si se deben mostrar o no los botones
maximizar y minimizar, respectivamente. Tenga en cuenta que existen estilos de
bordes de formulario (establecidos con la propiedad BorderStyle) que impide que se
muestren los botones, independientemente del valor de las propiedades MaxButton y
MinButton.
• MousePointer: permite modificar la forma del puntero del ratón.
• Nombre: nombre identificativo del formulario. Deberá utilizar este nombre en el
código para referirse al formulario. La convención de nombre puede verse final de
este capítulo.
• Visible: establece si el formulario se mostrará visible o no en tiempo de ejecución. El
mostrarse no visible, no implica que se descargue de memoria.
PAG. 19
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Todas estas propiedades y muchas más están disponibles, en tiempo de diseco, a través de
la ventana Propiedades.
www.detodoprogramacion.com
PAG. 20
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
PAG. 21
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Un método es un componente más del objeto, como lo puede ser una propiedad, que
puede ser utilizado directamente. Para ello deberá llamar al método e indicarle sobre qué objeto
desea aplicarlo, que deberá admitirlo.
Como puede observar, es la misma sintaxis empleada para acceder a una propiedad. Visual
Basic determina lo que quiere hacer a través del nombre que introduzca detrás del punto.
Observe, además, que no existen paréntesis para la lista de parámetros.
Veámoslo con un ejemplo: el método más utilizado sobre un formulario es Show. Este
método permite hacer visible un formulario en pantalla. Si el formulario no está cargado en
memoria lo carga automáticamente y lo muestra.
FrmPrincipal.Show i
donde el parámetro de la i indica la forma en que se muestra el formulario: con valor 0, el
formulario es no modal, es decir, el enfoque puede pasar a otro objeto sin necesidad de
realizar alguna acción sobre el formulario.
En caso de tener valor 1, será necesario realizar alguna acción sobre el formulario
(seguramente tendrá que cerrarlo) para que el enfoque pueda pasar a otra ventana de la aplicación.
PAG. 22
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
El conjunto de eventos reconocible por un objeto está fuertemente ligado con los
procedimientos de evento. Estos procedimientos son unidades de código que le permite
especificar la respuesta que debe dar un objeto ante la ocurrencia de un evento que puede
reconocer
PrivateSubNombreObjeto_NombreEvento([Listade parámetros])
<Introducción>
EndSub
La palabra Private indica que el procedimiento sólo está visible en el módulo actual,
en contraposición a lo que indica Public. Fíjese cono la lista de parámetros puede ser opcional,
pero no así los paréntesis.
GUARDAR UN PROYECTO EN DISCO
mbre tanto al archivo de los formularios que lo compongan, como el de proyecto. Recuerde que los distintos formularios y m
os distintos ficheros que vaya creando en su proyecto de Visual Basic, para tenerlos siempre localizados.
chivo o el botón equivalente de la barra de herramientas .Al guardar el proyecto también se guardarán los formularios del mi
PAG. 23
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 24
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Al usar menús está evitando ocupar mucho espacio en las ventanas ya que estos sólo
aparecen cuando se despliegan explícitamente. Además, puede crear hasta cinco niveles de
menús, por lo que el número, por lo que el número de comandos y posibilidades es
suficientemente amplio.
Este botón sólo estará activo cuando tenga abierto un formulario, ya que en menú siempre
estará asociado con un determinado formulario.
El editor de menús presenta las principales propiedades que se pueden aplicar sobre los
menús.
PAG. 25
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Además, el elemento Fila actúa como un submenú ya que al posicionarse en esta opción se
vuelve a desplegar otro menú, con más elementos de menú, entre los que se encuentra
Mostrar. Fíjese como un elemento de menú puede actuar al mismo tiempo como submenú ( o
título de otro menú)
• Name: es el nombre del control. La estrategia a seguir en este caso puede ser la de
anteponer el prefijo más el texto del título, si es un título de menú. En el caso de ser
un elemento del menú, debería incluir también el texto de su título de menú.
• Cheeckd: establece si debe aparecer una marca de verificación a la izquierda del texto del
objeto menú. Esta marca suele utilizarse cuando desea informar al usuario de la opción
que está activa en un momento determinado.
• Enabled: indica si el objeto podrá recibir eventos del usuario. Si tiene el valor False, el
elemento aparecerá atenuado en el menú.
• Visible: indica si el objeto debe mostrarse o no. Si establece el valor False para esta
propiedad, los elementos situados a la derecha ocupan el lugar del elemento no visible.
• WindowsList: Devuelve o establece un valor que determina si un objeto menú
mantiene una lista de las ventanas MDI secundarias del formulario actual. Los formularios
MDI son tratados en una lección posterior.
Las propiedades Enabled y Visible pueden tomar valor en tiempo de diseño o modificarlos
en tiempo de ejecución. Por ejemplo, si desea que no aparezcan títulos de un menú principal (
y sus elementos) debido a las circunstancias del momento, puede utilizar la propiedad Visible para
ello.
U tilizando los botones de sangría determinará el nivel del objeto menú que tenga
seleccionado. Así, los títulos de menú se sitúan en el nivel superior, mostrándose
en
la lista inferior del editor de menús, lo más a la izquierda posible.
www.detodoprogramacion.com
PAG. 26
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Para crear un separador en un menú lo único que debe hacer es introducir un guión (-)
en la propiedad Caption. Debe saber que no podrá crear un elemento en un nivel inferior
(mayor sangría) inmediatamente después de un separador. Es decir, un elemento de menú no podrá
tener como título de menú a un separador, ya que no tiene sentido que al pasar por un
separador se despliegue otro menú.
PAG. 27
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
A
l introducir el carácter & (ampersand) en el texto de un objeto menú, está creando una
tecla de acceso a dicho objeto. Esta tecla se representa subrayada en el texto del
menú y representa la tecla del tecleado que el usuario puede pulsar para ejecutar la acción.
Dicha tecla se corresponde con la letra que sigue al & en la propiedad Caption del objeto
menú.
Si se trata de un título menú deberá usar la tecla de acceso en combinación con la tecla
[Alt]. Una vez abierto un título de menú y desplegado sus elementos, para acceder rápidamente a
un de ellos, puede usar la tecla de acceso directamente.
Para crear una tecla de método abreviado deberá utilizar la propiedad Shortcut, a la que
puede acceder al crear el menú desde el Editor de menús.
PAG. 28
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
del menú.
C
uando en tiempo de diseño selecciona una opción de menú de un formulario que está
creando, Visual Basic le muestra el procedimiento de evento Click de dicho elemento
En el caso de un título de menú (nivel superior) el procedimiento Click tiene como acción
predeterminada la de mostrar los elementos de menú del nivel inferior, por lo que será
necesario tener que programar esta acción. Esto también es aplicable a los elementos de un menú
que son, a su vez, títulos de submenús.
Si desea realizar otras acciones en los eventos de aquellos objetos que actúan como títulos
de menú, deberá utilizar la ventana de código y elegirlos de la lista.
En la mayoría de ocasiones deberá utilizar una opción del menú para descargar el
formulario y si es la ventana principal de la aplicación, como suele ser el caso, finalizar la
aplicación. Una opción de texto Salir suele ser lo más apropiado.
NOTA: Un este curso no será necesario que realice estos niveles de sangrado si no se le indica expresam
S
i es un usuario experimentado de aplicaciones Windows seguro que habrá utilizado en
alguna ocasión lo que se llama un menú contextual.
Estos menús aparecen cuando hacemos clic con el botón secundario (normalmente el
derecho) del ratón sobre un determinado objeto y suelen presentar opciones que se corresponden
con las acciones más usuales que se realizan con dicho objeto.
A diferencia del menú que ha creado en los capítulos anteriores, un menú contextual puede
aparecer en cualquier ventana de su aplicación.
PAG. 29
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Sin embargo, no debe pensar que un menú contextual se asocia con un determinado objeto
situado en un formulario. Un menú contextual es exactamente igual que un menú desplegable, por
lo que estará asociado a un determinado formulario.
Para mostrar un menú contextual deberá usar el método PopupMenu del formulario
donde lo haya creado. La sintaxis completa es:
Tanto MouseDown como MouseUp permiten comprobar qué botón ha sido pulsado. Esto
se consigue gracias al parámetro Button de su procedimiento evento.
Consultando el valor de dicho parámetro, usted podrá saber cuál ha sido el botón del ratón
pulsado. El siguiente código, situado en procedimiento del evento MouseUp, ilustra esta
situación:
If Button=2 Then
PopupMenumnuArchivo
End If
Fíjese como si necesita diferenciar con qué botón del ratón ha pulsado el Usuario para
realizar alguna acción deberá utilizarlos eventos MouseDown o MotiscUp ya que el evento Click
no lo permite al no tener el parámetro Button.
PAG. 30
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
E l hecho de tener siempre asociado un menú contextual (y cualquier otro menú) con un
determinado formulario, no impide que el menú contextual aparezca cuando se pulsa
sobre uno de los controles situados e en el formulario. Además, puede indicar la ubicación exacta
del menú contextual
Los valores que puede tomar este parámetro respecto a la posición del menú son:
• vbPopupMenuLeftButton (valor 0): los elementos del menú contextual sólo reaccionan
a los clic del ratón cuando se use el botón primario del ratón. Este es el valor
predeterminado.
En definitiva la instrucción:
FrmPrincipal.PopupMenu mnuArchivo, vbPopuMenu Center Align (o su
equivalente frmPrincipal.PompupMenuArchivo, 4), indica que se muestre el menú mnuArchivo,
centrado respecto a la coordenada x del punto donde se pulse (si no se establece el valor de
los
parámetros x e y dichos valores serán donde pulse el usuario con el ratón). Los elementos del
menú deberán ser seleccionados con el ratón (valor predeterminado).
Si desea utilizar más de una constante en el parámetro indicadores, deberá sumar el valor
de cada una de estás. Por ejemplo el valor 6 sería fruto de utilizar las constantes
vbPopupMenuCenterAling (4) y vbPopupMenuRigtbutton (2).
PAG. 31
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
No es necesario introducir todos los parámetros opcionales que se muestran en la sintaxis
completa de métodos, pero tendrá que mantener la misma posición que en la declaración del
método para poder indicar un parámetro situado más a la derecha.
PopupMenu mnuArchivo,,,,mnuArchivoSalir
Para ser coherente con la interfaz de Windows deberá programar la misma acción de salir
al hacer doble clic en el objeto donde haya introducido está instrucción.
PAG. 32
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Cuadro de Diálogo
4.1. INTRODUCCÓN
E
n la mayoría de aplicaciones Windows el usuario hace uso de los cuadros de diálogo
para establecer opciones o introducir información que la aplicación necesita para
realizar la acción indicada por el usuario. De ahí el nombre de esta ventana, ya que establece
un diálogo” entre el usuario y la aplicación para conseguir el objeto perseguido.
Otro uso posible de los cuadros de diálogo es presentar información al usuario. El usuario
puede demandar detalles sobre algún aspecto de la aplicación (por ejemplo el cuadro de diálogo
Acerca de que aparece en la mayoría de aplicaciones) o haber pedido la realización de un
determinado proceso que implica mostrar el resultado en pantalla.
Visual Basic incorpora dos funciones en su lenguaje que le permite agregar cuadros de
diálogo a sus aplicaciones de una forma rápida y sencilla, ya que no tiene que
preocuparse de su diseño, de la carga o cómo es mostrado el cuadro de diálogo.
En contra partida, usted tendrá poco control sobre la apariencia del cuadro de diálogo que ,
por otra parte, será siempre modal.
Recuerde que un formulario es modal cuando se tiene que cerrar (ocultar o descargar)
dicho formulario para que el foco de la aplicación pase a otro formulario. Sin embargo, en un
formulario no modal, el foco puede pasar a otro formulario sin necesidad de realizar ninguna
acción en él.
En una lección anterior usted ya utilizó un cuadro de diálogo predefinido al hacer uso de la
función MsgBox. Ahora completaremos la información que necesita conocer sobre dicha función.
PAG. 33
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
En esta tabla se muestran los valores que puede tomar el parámetro botones:
VbYesNo 4 Botones Sí y No
Si se fija, existen dos tipos de cuadro modales: modal de aplicación y modal de sistema.
PAG. 34
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Cuando un cuadro de diálogo es modal de sistema, todas las aplicaciones que estén
ejecutándose se suspenden hasta que el usuario responda al cuadro de diálogo y, en definitiva, lo
cierre. Este tipo de cuadros de diálogo sólo tiene sentido en situaciones donde el mensaje que
muestran es crítico para el sistema.
El otro cuadro de diálogo predefinido que presenta Visual Basic, se consigue a través de la
función InputBox. Esta función se utiliza cuando necesita que el usuario introduzca alguna
información. Como toda función devuelve el valor, que en este caso de un será la cadena
introducida por el usuario. En el caso de un MsgBox la única información que podrá obtener será
qué botón ha pulsado el usuario para cerrarlo.
donde, aparte del mensaje que aparece en el cuadro de diálogo, puede indicar el título
de éste y la cadena que devolverá la función si no se escribe ninguna. También puede
indicar la
posición en la pantalla del cuadro de diálogo.
NOTA: Si no conoce el concepto de función, podrá encontrarlo, así como la forma de llamarlas en cód
U
n objeto Diálogo Común nos permite mostrar cinco cuadros de diálogo estándar en
nuestra aplicación. Estos cuadros de diálogo se corresponden con los de Abrir,
Guardar como, Imprimir, Fuente y Color que de seguro ha utilizado en alguna aplicación
Windows.
Además, también podemos hacer uso del control diálogo común para invocar el motor de
Ayuda de Windows, de forma que pueda presentar el archivo de ayuda en línea de su aplicación.
PAG. 35
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Al crearse un objeto diálogo común, se sitúa en una posición y con un tamaño estándar. No
es necesario cambiarlo de posición ya que este control no se mostrará en tiempo de ejecución.
Un único objeto diálogo común nos puede servir para utilizar más de un cuadro de diálogo
estándar. Para ello, haremos uso de sus propiedades y utilizaremos el método apropiado en cada
situación, pero siempre sobre el mismo objeto.
PAG. 36
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Para utilizar otros cuadros de diálogo, deberá establecer las propiedades oportunas u
utilizar el método adecuado. A continuación se refieren los métodos disponibles.
Como puede ver, un objeto diálogo común también puede utilizar para llamar al motor de
ayuda de Windows y mostrar así la ayuda en línea de su propia aplicación. Para ello deberá haber
creado un fichero de ayuda compatible con Windows, aspecto éste que está fuera del propósito de
este curso.
With CommonDialog1
.HelpFile = “C:\Vb\vb.hlp”
.HelpCommand = edlHelpContents
ShowHelp
EndWith
Fíjese cómo se establecen ciertas propiedades del cuadro de diálogo común y después
se llama al método ShowHelp para usarlo como motor de ayuda de Windows, diferencia de
ShowSave que mostraba el cuadro de diálogo Guardar Como.
En este caso la propiedad HelpFile indica la ubicación y nombre del archivo de ayuda que
debe mostrarse. Finalmente la propiedad HelpCommand indica cómo debe aparecer, es decir, si
debe aparecer la ficha Contenido, Índice o Buscar. En este caso se mostrará la ficha
Contenido. Busque HelpCommand en el archivo de ayuda de Visual Basic para ver las opciones
que tiene.
A
lo largo de esta lección ha podido utilizar distintos cuadros de diálogo en su
aplicación sin crear ninguno de ellos
Aunque estos cuadros de diálogo son muy interesantes y permiten mostrar en pantalla
cuadros de diálogo apropiados en muchas situaciones, usted también tiene la posibilidad de crear
sus propios cuadros de diálogo.
PAG. 37
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Al elegir dicho valor para la propiedad BorderStyle, Visual Basic ya introduce el valor
False para la propiedad MaxButton y MinButton, que se refiere a la presencia de los botones
maximizar y minimizar, respectivamente.
Además todo cuadro de diálogo debe ser modal, por lo que deberá utilizar el método Show
con único parámetro establecido al valor 1
Cuando incorpore controles a los cuadros de diálogo, es posible que necesite cambiar
el tamaño del formulario. Para ello, simplemente debe arrastrar, en tiempo de diseño, los
lados del formulario, como una ventana Windows redimensionable.
Por otra parte, es muy importante establecer la propiedad BorderStyle para que no se
pueda cambiar el tamaño en tiempo de ejecución. Piense, por ejemplo, qué pasaría al maximizar
un cuadro de diálogo que tiene unos controles situados de forma simétrica respecto al tamaño
utilizado en tiempo de diseño.
TRABAJAR CON FORMULARIOS
En tiempo de ejecución, los formularios no se muestran en pantalla si no se especifica
explícitamente a través del código. Sólo en el caso del formulario inicial esto no es necesario
ya que el código inicial es justamente el contenido en dicho formulario, por lo que se muestra
automáticamente en pantalla al iniciar la ejecución.
Antes de mostrar un formulario en pantalla, debe cargarlo en memoria. Para ello existe la
instrucción Load. Así una línea de código del tipo Loag frmNombre hace en el formulario
frmNombre se cargue en memoria y tenga acceso, así, a todas sus propiedades y métodos.
Si lo que desea es descargarlo de memoria, liberando de esta forma todos los recursos que
haya utilizado, deberá hacer uso de la instrucción Unload.
PAG. 38
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Controles básicos
5.1. INTRODUCCIÓN
A estas alturas del curso ya ha aprendido a crear formularios y a establecer las propiedades
más interesantes de éstos. En esta lección se estudian los controles, que son aquellos
elementos gráficos que aparecen en dichos formularios y que sirven para obtener datos y presentar
la salida que produce la aplicación.
Entre los numerosos controles que presenta Visual Basic, esta lección y la próxima
introduce aquellos que se consideran básicos y que aparecerán prácticamente en todas las
aplicaciones que cree con Visual Basic: etiquetas, cuadros de texto, botones de comando, etc.
Cada uno de estos controles son tratados como objetos en Visual Basic, por lo que no debe
olvidar que tendrán su propio conjunto de propiedades, métodos y eventos.
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tienen
la particularidad de que el usuario no puede modificar dicho texto (aunque el programador sí que
lo puede hacer en tiempo de ejecución). Podrá dibujar etiquetas en sus formularios a través del
control situado en la caja de herramientas.
Sin embargo, los cuadros de texto son el control estándar de entrada de datos en
Visual Basic. Su propósito es el de permitir al usuario introducir aquella información que
necesita la aplicación. El texto que introduzca está a disposición del usuario, pudiendo llegar a
modificarlo. El control de la caja de herramientas le permite dibujar cuadros de texto.
PAG. 39
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Los cuadros de texto son semejantes a las etiquetas, pero con la diferencia que el usuario
puede modificar su contenido. El texto que se introduzca puede ser tanto numérico como
alfanumérico (números y letras).
PAG. 40
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
E
n aquellas ventanas de entrada de datos es muy común tener la combinación de
etiqueta y cuadro de texto. Esto es debido a que un cuadro de texto no tiene la
propiedad Caption que permite crear teclas de acceso.
Por ello, cuando desee permitir un acceso rápido a cierto cuadro de texto, el uso de una
etiqueta asociada es la forma más sencilla de hacerlo. Utilice el carácter & en la propiedad
Caption de la etiqueta asociada y ya habrá creado la tecla de acceso para el cuadro de texto.
Por ello si desea crear teclas de acceso para los cuadros de texto, deberá asegurarse que la
etiqueta asociada al cuadro de texto tenga el valor anterior. En dicha propiedad, al del cuadro
de texto. De esta forma al pulsar [Tab] el foco pasará al cuadro de texto sin pararse en la
etiqueta, que no puede recibirlo.
S
i desea estructurar un formulario en distintas secciones, agrupando controles en éstas
para que la lectura sea más clara, el control que debe utilizar es el control Marco
(Frame).
Dicho control puede tener una intención puramente estética o de legibilidad como sería el
caso mencionado o de mayor necesidad, como podrá ver cuando estudiemos el control casilla de
opción.
PAG. 41
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Para que un objeto marco sea el objeto contenedor de otros objetos dibujados, deberá
haber dibujado primero el objeto marco y después dibujar el resto de objetos en el interior del
objeto marco. Si ya tiene controles dibujados y quiere introducirlos en un marco, entonces deberá
copiarlos o cortarlos y pegarlos en el marco. Así también será el control marco el objeto
contenedor de los objetos pegados.
Los botones de comando son una manera natural e intuitiva de ejecutar acciones en la
aplicación complementan en este sentido el uso de menús, ya sean despegables o
contextuales. Podrá dibujar botón de comando a través del control situado en la caja de
herramientas.
Además, es una regla establecida de hecho en la interfaz de Windows indicar con los
puntos suspensivos ( ... ) que al pulsar un botón se abrirá otra ventana, como sucedía en los
elementos de menú.
www.detodoprogramacion.com
PAG. 42
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
En los cuadros de diálogo normalmente aparecerán los botones los botones Aceptar y
Cancelar mientras que en otras ventanas de la aplicación puede encontrarse con botones como el
de Cerrar, cuya funcionalidad es la de cerrar (ocultar o descargar) el formulario abierto.
Debe diseñar los formularios de forma que los controles que sirvan para lo mismo se
sitúen siempre en la misma posición. Por ejemplo, coloque siempre en el mismo lugar los
botones que permitan cerrar las ventanas, de forma que el usuario llegue a acostumbrarse a verlos
en esa posición y los use de una forma casi impulsiva.
Un buen lugar para estos botones es la parte inferior derecha, como puede observar en
muchas aplicaciones Windows.
Existen dos propiedades que se aplican a los botones comentados que permiten cerrar una
ventana. Si desea cerrar la ventana de forma que las acciones que haya podido hacer no lleguen a
tener efecto (típico en el sentido de un botón Cancelar), será importante establecer la
propiedad Cancel True.
Al establecer esta propiedad permite que el usuario pueda uti1izar tanto el botón Cancelar
como la tecla [Esc].
Sin embargo, si desea que se lleven a cabo las acciones realizadas en la ventana, utilice un
botón Aceptar y establezca su propiedad Defauf a True. De esta forma permitirá utilizarla tecla
[Intro] como si pulsara en dicho botón.
El botón Cerrar suele encontrarse en ventanas donde se realizan acciones sin necesidad de
cerrar la ventana. Su propósito es el de permitir cerrar la ventana cuando el usuario lo decida.
También suele responder a la tecla [Intro]
Recuerde la importancia que tienen los botones que permiten cerrar una ventana, aunque el
usuario también podría utilizaras el botón cerrar de la propia ventana. Este botón debe tener el
mismo sentido que pulsar un botón Cancelar en un cuadro de diálogo o un botón Cerrar x en otro
tipo de ventanas.
C
uando haya situado distintos controles en un formulario y le guste la disposición
obtenida, es una buena idea bloquear los controles para que no puedan moverse de
forma accidental.
Para ello, el menú Formato de Visual Basic facilita la opción Bloquear controles, cuya
presencia se justifica de esta forma.
PAG. 43
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
mo predeterminada. Es decir, si desea consultar o establecer el valor de esa propiedad, no será necesario hacer referencia a la m
predeterminada la propiedad Text. Imagínese que tiene un cuadro de texto de nombre txtNombre, entonces serían equivalente
PAG. 44
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Controles básicos II
6.1. CASILLAS DE VERIFICACIÓN
L
os botones de opción (OptionButton) también permiten presentar opciones al usuario,
pero con la particularidad que sólo podrá seleccionar una de dichas opciones al mismo
tiempo.
Un botón de opción sólo puede presentar dos posibles valores en la propiedad Value:
False, que indica que el botón no está activado, y True, que representa la situación en el que el
botón está activado. El resto de propiedades de este control son similares a otros controles ya
vistos.
PAG. 45
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Así, por ejemplo, podría necesitar indicar si un producto está indicado para hombres o
mujeres y si el pedido está pagado o es contra reembolso.
Si este tipo de situaciones se presenta en su aplicación, tendrá que utilizar un control para
que haga de contenedor cada grupo de botones de opción. Como ya ha podido ver, este
control
puede ser el control Marco (Frame) estudiado en la pasada lección.
Como ocurría en la anterior lección, para que esto funcione, es necesario dibujar los
botones de opción que configuren un grupo independiente en el interior del marco. Si no es así,
seguiría siendo el formulario el objeto contenedor, por lo que no podría seleccionar más de un
botón de opción.
Es importante utilizar los botones de opción sólo en aquellos casos en el que el número de
opciones posibles sea fijo a lo largo de la vida de la aplicación. En caso contrario, la inclusión de
una opción o modificación de alguna de las existentes podría implicar la modificación de partes de
la aplicación que trabajen con dichas opciones, algo no deseable.
O tra forma de presentar opciones al usuario es a través de una lista donde se sitúen
dichas opciones.
Entre las propiedades que debe conocer de un cuadro de lista cabe destacar:
Para que pueda seguir mejor la explicación que se realiza en el curso, presentamos aquí un
gráfico donde puede ver el nombre de cada control que se utiliza.
PAG. 46
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
PrivateSubcmdAgregar_Click()
lstDeportes.Addltem txtDeportes.Text
IbICount = IstDeportes.ListCount
txtDeportes.Text = ""
txtDeportes.SetFocus
EndSub
El método AddItem añadirá el nuevo elemento al final de la lista si ésta no está ordenada o
en el lugar adecuado si está ordenada. También podría indicar en qué lugar (índice) debe
agregarse el nuevo elemento. En este caso la sintaxis completa sería:
Además, como hemos añadido un elemento a la lista, tendremos que actualizar el número
de dichos elementos a través de la etiqueta situada en la parte inferior de nombre IstCount. Esto se
consigue con la línea lbICount=IstDeportes.ListCount, que consulta la propiedad ListCount del
cuadro de lista. Esta propiedad se actualiza al agregar o eliminar elementos de la lista.
PAG. 47
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PrivateSubcmdEliminar_Click0
Dim Indice As Integer
Indice=IstDeportes.ListIndex
Como se ha dicho, RemoveItem necesita que se le indique qué elemento desea eliminar de
la lista. En este caso, dicho elemento será aquel que el usuario haya elegido en la lista y, que
por lo tanto, estará seleccionado en la misma.
Si desea el eliminar todos los elementos de una lista, no es necesario hacerlo de uno en
uno. Utilice el método Clear para hacerlo de un
PrivateSubcmdLimpiar_Click()
IstDeportes.Clear
IbICount.Caption = IstDeportes.ListCount
txtDeportes.SetFocus
EndSub
Como puede observar, lo único que hace es limpiar la lista (utilizar su método Clear),
actualizar el número de elementos y permitir introducir nuevos elementos.
PAG. 48
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Por otra parte, al utilizar el método AddItem en una lista ordenada, es decir, que tenga sus
propiedad Sorted establecida a True, no debe indicar el lugar en el que desea que se inserte el
nuevo elemento, ya que en ese caso puede provocar resultados con ordenaciones impredecibles.
Un cuadro combinado ocupa menos espacio que un cuadro de lista ya que el usuario
deberá desplegarlo para poder elegir la opción deseada. Por otra parte, también podrá
introducir directamente dicha opción (por ello la presencia de un cuadro de texto como parte
del objeto cuadro combinado).
La principal propiedad que debe establecer para un objeto Cuadro combinado es Style.
Además, todas las propiedades y métodos mencionados para los cuadros de lista también
son válidos para los cuadros combinados.
PAG. 49
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 50
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Fundamentos de Programación
7.1. INTRODUCCIÓN
Además ya conoce cuál debe ser la forma adecuada de programar una aplicación en
este entorno de desarrollo: crear la interfaz, establecer propiedades y finalmente escribir código.
7.2. VARIABLES
Una variable puede contener texto, un valor numérico, una fecha o una propiedad de cierto
objeto. En definitiva, es una forma de dar nombre a una porción de datos con la que deseamos
trabajar en nuestro programa.
Las variables se caracterizan por un nombre que las identifica y por un tipo de datos, que
establece el conjunto de valores posibles que pueden contener y operaciones en las que
puede
participar. El valor de una variable puede cambiar a lo largo de la vida de ésta (de ahí el nombre
de variable).
Al declarar una variable se reserva a memoria para ella y se le indica a Visual Basic
qué valores puede contener a través de su tipo de datos. Así Visual Basic podrá realizar
comprobación de tipos y establecer errores en tiempo de compilación.
PAG. 51
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Si desea establecer la declaración de una variable antes de ser utilizada en el código, puede
indicarlo en la ficha Editor del cuadro de diálogo Opciones en el menú Herramientas.
Utilizará variables por diversos motivos: almacenar una entrada del usuario, realizar
cálculos intermedios, establecer la salida en un formulario, etc.
Además, el uso de variables puede hacer más rápida su aplicación. Así, si utiliza en
muchas ocasiones un determinado resultado, es mejor guardarlo en una variable y utilizarla
que tener que volver a establecer dicho resultado, lo que puede implicar distintos cálculos.
Por otra parte, es más rápido el acceso a una variable que a una propiedad de un objeto,
por lo que en muchas ocasiones guardará el valor de una propiedad utilizando una variable.
Veamos un ejemplo.
Dim Variable
Variable= txtEntrada.Text
txtSalida.Text=Variable
En la segunda línea ya utiliza la variable. En este caso sirve para guardar el valor que
existe en un cuadro de texto llamado txtEntrada (representado por su propiedad Text)
En la tercera línea está haciendo justo lo contrario. Utiliza la variable para establecer
el valor de la propiedad Text del cuadro de texto txtSalida.
Variable = 125
txtNúmero.Text =Variable
Fijase que ahora ha establecido Variable a un valor numérico. Sin embargo en las
anteriores líneas lo había establecido a un valor de texto ya que la propiedad Text es de ese tipo de
datos. Analizaremos después este asunto.
PAG. 52
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
operando.
E
l tipo de datos de una variable establece el conjunto válido de valores que ésta puede
tomar, así como el conjunto de operaciones en las que puede tomar parte como
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que
se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos.
Esto también se aplica cuando utiliza las variables sin haberlas declarado previamente.
El tipo Variant es un tipo especial de datos que puede contener cualquier clase de
datos excepto cadenas de longitud fija y tipos definidos por el usuario. Al utilizar variables de este
tipo, no tiene que preocuparse de efectuar conversiones entre tipos para utilizarlas en distintos
contextos, Visual Basic lo hace por usted.
Por ejemplo en el capítulo anterior declaró la variable con Dim Variable, por lo que su
tipo de datos es el Variant.
Pudo asignar texto a dicha variable (a través de la propiedad Text de un cuadro de texto) y
también pudo asignarle un valor numérico (a través de la sentencia Variables=125). Sin embargo,
cuando Variable almacenaba un valor numérico (125) pudo utilizarla para establecer el valor de la
propiedad Text del cuadro de texto (txtNumérico.Text = Variable), sin necesidad de realizar
ninguna conversión.
La flexibilidad del tipo Variant se tiene que pagar con el aumento en el consumo de
memoria y disminución de velocidad que implica dicho tipo de datos. Visual Basic escogerá
automáticamente la representación en memoria más eficiente para dicha variable, guardando
la memoria necesaria, cuando se le asigne un valor.
PAG. 53
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 54
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
7.4. CONSTANTE
S
i en su aplicación encuentra un valor que se repite frecuentemente, es posible que
le interese guardarlo en una constante.
Las constantes son semejantes a las variables, pero con la particularidad de que su valor no
puede cambiar a lo largo de la aplicación. Una constante es utilizada para aumentar la legibilidad
de su código. Por ejemplo en lugar de utilizar el valor3.1415 podría utilizar la constante Pi.
En definitiva deberá darle un nombre a la constante y establecer su valor, que no podrá ser
cambiado en el resto de código.
Para utilizar una constante, deberá declararla previamente, en este caso sí que es
obligatorio. La forma de declararla es a través de la instrucción ConstNombreConstante =
Expresión, donde Expresión será un valor literal (número, texto, fecha, etc.) o un conjunto de
palabras que se evalúen a un valor válido.
Por ejemplo:
Const FestivosSemana = 2
Así, por ejemplo, si quiere cambiar el número de días festivos en una semana para su
aplicación, sólo necesitará modificar el valor en la declaración de la constante y esta modificación
se extenderá a todos los lugares donde se use.
Una constante puede ser utilizada en cualquier lugar donde su valor sea adecuado, así, por
e ejemplo podría utilizar la constante FestivosSemana en la siguiente línea:
Por otra parte, el lenguaje Visual Basic incorpora un gran número de constantes que puede
utilizar directamente en sus programas.
PAG. 55
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Recuerde, por e
ejemplo, que en la anterior
lección utilizó la constante
vbChecked para comprobar
el valor de una casilla de
opción. Dicha constante
pertenece a la librería
VBRUN Objetos y
procedimientos de la
biblioteca de tiempos de ejecución de Visual Basic.
EI Examinador de Objetos disponible a través del menú Ver, permite mostrar todos
los objetos que puede tener disponibles en su proyecto de programación y cuyos orígenes se
muestran activados en el cuadro de diálogo Referencias. También muestra aquellos objetos
creados en el propio proyecto.
PAG. 56
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Recuerde que una constante no puede cambiar su valor después de haber sido declarada.
Intentarlo originaría un error en tiempo de compilación.
E n Visual Basic existe un gran número de operadores que puede utilizar para crear
formulas de cierta complejidad.
Estos operadores trabajan con los operados sobre los que se aplican siempre que el
valor que posean sea compatible con el operador. Hay que tener cuidado en este aspecto ya que
Visual Basic realiza conversiones de tipo implícitas cuando lo necesita, produciendo, en
ocasiones, resultados inesperados.
Los operadores más utilizados en una aplicación Visual Basic son los siguientes:
El operador + es un caso especial. Dicho operador puede actuar con operados de texto
y con operados numéricos, efectuando operaciones distintas (se dice que el operador está
sobrecargado).
En el primer caso realiza lo que se llama concatenación de cadenas, es decir, crea una
cadena nueva al situar la segunda cadena dada inmediatamente después de la primera. Por ejemplo
si realiza la operación "hasta " + “luego", el resultado sería "hasta luego" (fíjese que la
primera cadena contenía espacio en blanco al final).
En el caso de contener valores numéricos, + actúa como el operador suma normal. Es decir
una operación del tipo 1 +2 daría como resultado 3.
Por ello es conveniente utilizar el operador & para concatenar cadenas de caracteres en
lugar del operador +.
Visual Basic realizará conversiones implícitas de tipo para poder utilizar un determinado
operador siempre que los operados tengan una representación válida para este operando.
Así, por ejemplo la operación “4" - “2" no provocaría un error de compilación sino que
daría el resultado 2, ya que tanto la cadena de caracteres “4” como "2" tienen una representación
numérica válida, no así, por ejemplo, la cadena “hola”.
PAG. 57
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 58
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Fundamentos de Programación II
8.1. ESTRUCTURAS DE DECISIÓN
Sin embargo, en muchas ocasiones deseará ejecutar una línea u otra dependiendo de cierta
condición o deseará repetir un número de veces el mismo conjunto de líneas. En estos casos
la introducción de las estructuras de control modifican el flujo normal de la ejecución.
Entre las estructuras de control cabe citar las estructuras de decisión, estudiadas en
este capítulo y las estructuras de repetición, que son analizadas en el siguiente.
If condición1 Then
[instrucciones1]
[ElseIf condición2 Then
[instrucciones2]]
…
[Else
[instruccionesN]]
End If
PAG. 59
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Veamos un ejemplo:
Dim idioma
idioma= Istldioma.ListIndex
lf idioma = 0 Then
MsgBox "Bienvenido"
ElseIf idioma = 1 Then
MsgBox "We1come"
ElseIf idioma = 2 Then
MsgBox "Bienvenue"
Else
MsgBox "Actualmente no hay más idiomas soportados"
EndIf
Por otra parte, es importante darse cuenta que cualquiera de los bloques [instrucción]
puede contener un número arbitrario de instrucciones, incluida la posibilidad de que existan
nuevas instrucciones If-Then-Else.
Cuando existe un gran número de condiciones evaluar, es posible que la instrucción If-
Then-Else se complique de gran manera. En estos casos Visual Basic permite el uso de otra
estructura de decisión: la instrucción Select Case.
Select Case no incorpora mayor potencia al lenguaje, pero hace que el código sea más
legible y eficiente. La sintaxis de la instrucción Select Case es la siguiente:
PAG. 60
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Donde de nuevo los corchetes ([]) representan partes opcionales y donde puede existir un
número indeterminado de cláusulas [Case listaExpresiones].
Esta instrucción evalúa sólo una vez la expresión de comparación y ejecuta el bloque
de instrucciones de la primera cláusula [Case listaExpresiones] cuya listaExpresiones cumpla
con la expresión de comparación.
Veamos como quedaría el código anterior utilizando la instrucción Select Case en lugar de
If-Then-FIse:
Además, la 1ista de expresiones de cada cláusula Case puede ser mucho más complicada.
Así podría referirse a más de un valor, a un rango de valores, etc.
E
l lenguaje de Visual Basic incorpora una serie de operadores de comparación que
son útiles a la hora de establecer condiciones.
Hasta ahora sólo ha usado el operador de igualdad (=) pero existen los siguientes:
PAG. 61
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Igual a
<> Distinto a
> Menor que
< Mayor que
<= Menor o igual que
>= Mayor igual que
Además de esto, puede utilizar los llamados operadores lógicos: And, Or, Not, Xor. Estos
permiten establecer condiciones que dependan de más de un criterio de selección.
Así, la expresión exp1 AND exp2 se evalúa a Verdadero sólo en el caso de que tanto exp1
como exp2 se evalúen a Verdadero. En cualquier otro caso se evalúa a Falso.
La expresión exp1 OR exp2 se evalúa a Verdadero cuando alguna de las expresiones exp1
o exp2 se evalúen a verdadero (fíjese cómo puede pasar que ambas se evalúen a Verdadero).
Finalmente la expresión exp1 XOR exp2 se evalúa a Verdadero sólo en el caso de que una
y sólo una de las expresiones exp1, exp2 se evalúe a Verdadero.
Esta es la forma de crear nuevos controles en tiempo de ejecución, ya que en otro caso
dichos controles no tendrían procedimientos de evento. Sin embargo, al agregar nuevos controles
a una matriz, estos comparten los procedimientos del resto de controles de lar matriz.
Para crear una matriz de controles, debe crear dos controles con el mismo nombre,
entonces Visual Basic le indicará esta circunstancia y le preguntará si desea crear una matriz.
PAG. 62
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Cuando se crea una matriz de controles, usted puede seguir trabajando con cada uno de los
controles de forma individual. Para referirse a un control en particular deberá utilizar la propiedad
Index de dicho control. Dicha propiedad se establece al valor 0 para el primer control creado y se
va incrementando a medida que se crean los nuevos controles.
También puede eliminar un control que haya sido creado en tiempo de ejecución, a través
de la instrucción Unload objeto(índice). Esta instrucción no permite eliminar controles
creados en tiempo de diseño, independientemente de que pertenezcan o no a una matriz de
controles.
PAG. 63
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Otro tipo de estructuras que pueden modificar dicho flujo de ejecución son las estructuras
de repetición, también llamadas bucles. Estas estructuras sirven para repetir una y otra vez un
conjunto de instrucciones.
En definitiva existirán dos tipos de estructuras de repetición: aquellas en las que se conoce
el número de repeticiones y aquellas que dicho número se establece en la propia ejecución.
Donde contador es el nombre de una variable que sirve como contador de las veces que se
ha de ejecutar el bucle. A dicha variable se le asigna un valor inicial y se indica el valor final
o aquel en el que, una vez superado, el bucle no volverá a repetirse.
En el cuerpo del bucle se sitúan el conjunto de instrucciones que deben ejecutarse cada
vez, existiendo la posibilidad de introducir una instrucción Exit For para salir del bucle antes de
que se repita el número de veces establecido.
Finalmente, una vez ejecutada cada una de las instrucciones del cuerpo del bucle se ejecuta
la línea Next contador, en la que se aproxima el valor del contador hacia el valor final en el
número de unidades indicado en el incremento.
Aproximarse puede ser incrementar el valor, si el valor inicial es menor que el valor final,
o decrementarlo, si el valor inicial es mayor que el final. Si no se determina ningún
incremento, Visual Basic toma como valor predeterminado una unidad.
PAG. 64
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Dim i As Integer
For i = 3 To 5
LoadCommand1(i)
Command1 (i).Visible = True
Command1(i).Top = Command1(i-l).Top + 600
Next i
En este caso se utiliza la variable i, de tipo entero, como contador del bucle. Dicho
bucle se ejecutará 3 veces, en las que el valor de i será 3, 4 y 5.
Las instrucciones que forman el cuerpo del bucle crean, en tiempo de ejecución, un botón
de comando nuevo en la matriz de controles. Fíjese cómo el índice de cada uno de los nuevos
botones será justamente el valor del contador en cada pasada del bucle.
Por otra parte se sitúa el nuevo botón de forma que aparezca debajo del botón anterior
en 600 unidades.
En muchas ocasiones desconocerá cuántas veces debe repetir un bucle. En estos casos
deberá utilizar una estructura de repetición que dependa de una condición.
En este sentido puede interesarle repetir un bucle mientras se cumpla o hasta que se
cumpla una condición. En ambas situaciones Visual Basic presenta estructuras adecuadas.
Do [{While / Until}
condición
[Instrucciones]
[ExitDo]
[Instrucciones]
Loop
Puede usar esta sintaxis válida equivalente:
Do
[Instrucciones]
[Exit Do]
Instrucciones]
Loop [{While / Until} condición]
PAG. 65
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Fíjese cómo puede usar bien la palabra While o bien la palabra Until. En el primer caso el
bucle se repite mientras la condición se cumpla; en el segundo caso el bucle se repetirá hasta que
la condición dé el valor Verdadero.
Por otra parte en la primera sintaxis, la condición es comprobada al principio del bucle,
por lo que si no se cumple al iniciarse, entonces el cuerpo del bucle no se ejecutará. Sin embargo,
en la segunda sintaxis, la condición es comprobada a la salida del bucle por lo que por lo
menos una vez es seguro que el cuerpo del bucle se va a ejecutar.
Existen otras estructuras de repetición en el lenguaje que no son tratadas en este capítulo.
Es recomendable utilizar el sistema de ayuda y buscar información sobre repetir instrucciones.
PAG. 66
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Como ya sabe, los procedimientos son unidades de código en las que puede dividir su
programa para facilitar la programación. Un procedimiento es un conjunto de líneas de código que
deben realizar operaciones o tareas bien definidas.
E
n este capitulo aprenderá a crear procedimientos Sub. Para ello utilizaremos el
proyecto Videoclub. vbp, en el que estuvo trabajando en pasadas lecciones.
Estudiaremos el caso en el que un socio del videoclub desea llevarse una determinada
película, es decir, cuando se produce un préstamo.
Así. El usuario introducirá una película, el socio que se la lleva y pulsará el botón Prestar.
La aplicación guardará dicho préstamos y mostrará un mensaje indicando el día de la devolución.
Puede imaginar que necesitaremos calcular el día de devolución. Este proceso puede
depender de muchas circunstancias o ser tan sencillo como el que vamos a mostrar.
PAG. 67
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Podría realizar el cálculo de dicho día en el procedimiento de evento Click del botón
Prestar, pero esto no es muy buena idea.
Piense, por ejemplo, que dicho cálculo puede ser necesitado en otras partes de la
aplicación. Si es así, necesitaría escribir el código correspondiente en cada lugar que se necesite.
¿Qué sucedería si posteriormente se modifican los criterios de dicho cálculo? Tendría que
realizar la modificación en todos y cada uno de los lugares donde se realiza.
En la cabecera del procedimiento se indica el ámbito (si es público o privado) del mismo,
su tipo mediante la palabra Sub, su nombre y la lista de parámetros entre paréntesis.
La lista de parámetros sirve para poder comunicar el procedimiento con el resto del código
de la aplicación. Por ejemplo en el procedimiento que se encarga de calcular el día de devolución
al realizar un préstamo de una película, necesitamos indicarle si la película aprestar es una
novedad o no.
Para ello se utilizará un parámetro que indique de alguna forma dicha circunstancia. Un
parámetro se comporta corno una variable en el cuerpo del procedimiento, pudiendo simplemente
utilizar su valor o incluso modificarlo.
PAG. 68
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
En la figura puede ver cómo quedaría el procedimiento y cuáles son las partes del mismo:
Además, el propósito del procedimiento Sub ha sido claramente definido: calcular el día de
devolución. Este procedimiento no hace ni más ni menos que lo que debe hacer.
La llamada aun procedimiento Sub es igual que cualquier otra instrucción del lenguaje.
Así, para llamar al procedimiento mostrado en el capítulo anterior debería escribir la siguiente
línea.
Como este procedimiento tiene dos parámetros, es necesario llamarlo con dos argumentos:
argnovedad y argdia.
Estos argumentos deben coincidir en la llamada en número y tipo con la definición del
procedimiento. Tanto si especifica en la llamada número distinto de argumentos corno si
alguno de éstos no pueden convertirse al tipo declarado en la definición del procedimiento, se
creará un error de compilación.
PAG. 69
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Por lo tanto necesitará declarar dos variables, del tipo adecuado, en el procedimiento
de evento Click del botón Prestar, para poder llamar al procedimiento CalcularPréstamo.
Para resumir diremos que cuando cree un nuevo procedimiento escribirá las líneas de
código necesarias para llevar a cabo el propósito del mismo y especificará la lista de argumentos
que utilizará en su cuerpo.
Sin embargo la llamada al procedimiento será como una instrucción más del lenguaje,
donde se especificará el nombre del procedimiento seguido, sin paréntesis, de una línea de
argumentos que deberá coincidir en número y tipo con los parámetros de la definición y que darán
valora los parámetros para que se ejecute el cuerpo del procedimiento.
Una vez se llega a la instrucción End Sub del procedimiento, el flujo de ejecución vuelve a
la línea siguiente a la que ocasionó la llamada.
Es posible que alguno de los argumentos utilizados en la llamada, haya sido modificado en
su valor, pudiendo utilizar el nuevo valor en las líneas de código que siguen a la llamada al
procedimiento.
Por lo tanto, en el cuerpo del procedimiento aparecerá una asignación del valor a devolver
con el nombre del procedimiento.
El uso de los procedimientos Function suele estar más restringido que el de los
procedimientos Sub.
PAG. 70
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Además, al tener que devolver un valor asociado al nombre del procedimiento Function, el
procedimiento tiene que tener un tipo de datos. Esto se especifica indicando la cláusula As Tipo al
final de la cabecera del procedimiento, una vez indicada la lista de parámetros. Si no
especifica ningún tipo de datos, se aplicará la misma regla que con las variables, es decir,
tendrá el tipo Variant.
En este capítulo ha podido crear un procedimiento Furiction que realiza el mismo proceso
que un procedimiento Sub. Ha conocido las diferencias entre uno y otro tipo de procedimientos en
cuanto a su definición.
A
sí como la llamada a un procedimiento Sub es como una instrucción más del lenguaje,
la llamada a un procedimiento Function suele estar situada como parte de una
expresión y no como una línea independiente de su código.
PAG. 71
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Si desea utilizar el valor que devuelve el procedimiento Function, como es el caso, deberá
encerrar la lista de argumentos, en la llamada, con paréntesis. Recuerde que esto no es así en
el caso del procedimiento Sub.
Por otra parte, el lenguaje de Visual Basic incorpora un gran número de funciones que
puede utilizar directamente en sus proyectos. En este caso no será necesario realizar la definición
de las mismas, sino que lo único que deberá hacer es llamarlas correctamente.
Utilice el si sistema de ayuda para conocer las numerosas funciones que tiene disponible.
Algunas de ellas, como MsgBox,InputBox, Date, etc. ya las ha utilizado a lo largo del curso.
PAG. 72
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Cuando su proyecto esté compuesto por distintos módulos, ya sean de formulario, de clase
o módulos generales de Visual Basic, es importante delimitar dónde se pueden utilizar y dónde no,
los procedimientos, variables y constantes que tenga definidos o declaradas.
Una declaración de variables del tipo Public NombreVariable As Tipo indica que
dicha variable puede ser utilizada tanto en el módulo donde se realiza la declaración como en el
resto de módulos de la aplicación.
El uso de las palabras Public y Private también puede aplicarse a la definición de los
procedimientos: Public [Sub/Function] NombreProcedimiento () o Private [Sub/Function]
NombreProcedimiento(). El significado es el mismo.
Un caso especial se encuentra cuando declaramos variables en el interior de un
procedimiento. En estos casos, dichas variables sólo pueden ser conocidas por el propio
procedimiento, por lo que no es válida la declaración Public de éstas.
Además, si existe conflictos de nombre, al haber declarado dos variables con el mismo
nombre, una a nivel de módulo y otra a nivel del procedimiento, siempre tendrá preferencia la más
local, es decir, la declarada a nivel de procedimiento.
PAG. 73
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 74
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Efectos Gráficos
10.1. EL CONTROL LINE
Visual Basic incorpora una serie de controles gráficos que permiten la incorporación
de elementos de este tipo a sus formularios. En este capítulo aprenderá a utilizar el control
Line para dibujar líneas.
Si desea agregar líneas a sus formularios, Visual Basic le facilita el control Line en la caja
de herramientas.
Este control tiene pocas propiedades, pudiendo establecer el grosor mediante la propiedad
Border With o el color de la misma mediante BorderColor.
V isual Basic permite dibujar distintas formas a través del control Shape (Forma).
Utilizando dicho control podrá dibujar un círculo, un óvalo, un rectángulo, un
cuadrado, etc.
Podrá dibujar formas en sus formularios a través del botón de la caja de herramientas.
PAG. 75
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Otras propiedades interesantes de este control se refieren al relleno de las formas. Con la
propiedad FillStyle podrá indicar patrón de relleno, es decir, si desea que la forma dibujada
aparezca rellena de líneas verticales, horizontales, etc.
E
n muchas ocasiones habrá podido practicar el arrastre de objetos en las aplicaciones
Windows. Esta es una característica muy utilizada que permite la realización, de una
forma rápida, de procesos que de otra forma pueden necesitar varias acciones para llevarse a cabo.
Visual Basic permite que el programador indique cuándo y cómo un control puede ser
arrastrado con el ratón por la ventana en la que se encuentra.
Los controles situados en dicha ventana podrán darse cuenta que un determinado
control está siendo arrastrado por encima de ellos, presintiéndoles responder de la forma
adecuada.
Si desea permitir que el usuario pueda arrastrar un control en tiempo de ejecución tiene
dos posibilidades: realizar un arrastre automático o controlar cuándo debe empezar dicho arrastre.
Esto se controla mediante la propiedad DragMode del objeto que desea arrastrar.
Esta propiedad tiene dos valores: manual y automático. En el primer caso deberá ser
usted quien controle cuándo debe permitirse arrastrar un control. Normalmente esto dependerá de
alguna circunstancia que será comprobada cuando se pulse en dicho control, es decir, en el evento
MouseDown.
Otra circunstancia que debe tener en cuenta al arrastrar un objeto por la ventana en tiempo
de ejecución, es el aspecto que tendrá el puntero del ratón cuando lo haga.
DragMode y DragIcon son las dos propiedades que debe tener en cuenta a la hora de
permitir el arrastre de objetos en su aplicación. Por otra parte, el evento a tener en cuenta
DragOver.
El evento DragOver sucede cuando el usuario arrastra un objeto por encima de otro.
Es este último, es decir, el destino, el que reconoce el evento DragOver.
PAG. 76
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
El parámetro State indica si el movimiento del ratón, al realizar el arrastre, es para entrar
en el objeto destino o para salir del mismo. Todos estos parámetros están situados en la cabecera
del procedimiento DragOver.
Si State tiene el valor 0, entonces el movimiento del objeto que está siendo arrastrado es
para entrar en el objeto que reconoce el DragOver. En el caso de que State sea igual a uno, el
movimiento de arrastre es hacia afuera, es decir, saliendo. Utilizando el valor de este
parámetro
podrá decidir que debe ocurrir. Por ejemplo, le puede interesar cambiar el icono de un control
imagen destino, etc.
Por lo tanto recuerde: establezca la propiedad DragMode y DragIcon del objeto que va a
ser arrastrado y utilice el evento DragOver del objeto destino del arrastre.
IDENTIFICAR OBJETOS MEDIANTE LA PROPIEDAD TAG
n determinado objeto en tiempo de ejecución. Para ello, existe una propiedad que, establecida en tiempo de diseño le permit
eño en la propiedad Tag, usted podrá consultar dicha propiedad y dependiendo de su valor, realizar una acción u otra.
C
uando el usuario pulsa con el ratón en un objeto y lo mueve, está haciendo un arrastre
o drag del objeto.
Cuando decide soltar el botón del ratón se dice que está colocando el objeto o que está
haciendo un drop del mismo. Cuando esto sucede, el evento DragDrop es generado y reconocido
por el objeto sobre el que se ha soltado.
Es posible que el usuario suelte el botón del ratón sobre otro objeto dibujado o que lo haga
en una zona del formulario vacía. En este último caso es el formulario el que reconoce el
evento DragDrop, mientras que en el primer caso, es el objeto sobre el que se ha soltado.
Usted debe decidir qué sucede cuando el usuario arrastra un objeto y lo suelta sobre otro.
El hecho de soltarlo en una posición distinta a la que se encontraba no implica absolutamente
nada, es decir, el objeto lo cambiará de posición si no lo indica usted expresamente a través de la
programación.
PAG. 77
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
En este caso se aumentará el tamaño del control destino, haciéndolo a través de sus
propiedades Height (altura) y Width (anchura) y no se mostrará en pantalla el objeto
arrastrado, al poner su propiedad Visible a False..
Para Finalizar, vale la pena comentar que puede desear mover un objeto en tiempo de
ejecución arrastrando y soltándolo en la nueva posición. Para ello podrá utilizarlos parámetros del
procedimiento DragDrop y el método Move.
PAG. 78
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Visual Baste puede acceder a distintos formatos de bases de datos. El acceso más sencillo
es a una base de datos creada con el Motor Jet que incorpora Visual Basic y que es
compartido
por Access. Es decir, sí usted crea una base de datos en Access o en el Administrador visual
de datos de Visual Basic, el acceso a la misma será inmediato.
Otro tipo de bases de datos a las que podrá acceder sin más en Visual Basic, son las
llamadas bases de datos ISAM (Método de A Secuencial Indexado) entre las que se
incluyen bases de datos de Btrive, dBASE, FoxPro y Paradox.
El otro tipo de acceso más común es a una base de datos compatible con ODBC
(Conectividad abierta de bases de datos), en las que es necesario un controlador ODBC para
el tipo específico de base de datos. Si posee dicho controlador, el acceso también será
inmediato a través del mismo
A partir de ahora se supone que el alumno ya tiene ciertos conocimientos sobre bases
de datos, en especial con la tecnología de bases de datos relacionales. Si no es así, debería
pensar hacer el curso sobre Access que tenemos disponible.
E
n el resto del curso accederemos a un sólo tipo de bases de datos: las creadas con el
Motor Jet incorporado en Visual Basic y compartido por Access.
Visual Basic 6.0 incorpora la versión 3.51 del Motor Jet de bases de datos (para 32
bits). Este Motor Jet es un completo Sistema Gestor de Bases de Datos con el que podrá crear
y manipular una base de datos.
www.detodoprogramacion.com
PAG. 79
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
La creación de una base de datos es un proceso en el que se pueden diferenciar dos partes:
el análisis y el diseño.
Usted realizará el análisis de la base de datos cuando piense qué necesita almacenar
para tenerlo disponible siempre que lo desee.
El segundo paso es el diseño de la base de datos. Este proceso es dependiente del tipo de
base de datos que vaya a utilizar. En la actualidad no existen dudas: utilizará el tipo relacional.
Al crear una base de datos relaciona tendrá que trabajar con tablas, registros, campos,
índices, relaciones, etc.
V isual Basic incorpora el Administrador visual de datos con el que podrá crear y
establecer las propiedades de las tablas que con formen su base de datos.
El Administrador de datos permite modificar una base de datos ya creada o crear una
PAG. 80
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Las QueryDef son instrucciones SQL, que veremos posteriormente, que han sido
guardadas con un nombre al tener interés en utilizarlas en futuras ocasiones.
En una lección posterior aprenderá más sobre el lenguaje de consulta SQL, por ahora sepa
que SQL es un lenguaje que permite, entre otras cosas, extraer resultados de una base de datos.
Para ver o modificar el diseño o de una determinada tabla, pulse con el botón derecho del
ratón sobre el nombre de la tabla y seleccione Diseñar..., entonces estarán disponible el conjunto
de campos que posee la tabla, además de las principales propiedades de estos campos.
Podrá crear nuevos índices para la tabla modificar los ya existentes. Utilice el botón
Agregar índice de esta ventana.
Otro aspecto importante en la estructura de la base de datos es el conjunto de relaciones
que se hayan establecido.
PAG. 81
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
L
o primero que debe hacer al crear una base de datos es indicar donde se guarda el
archivo de la misma y darle un nombre válido.
Es una buena idea tener todos los archivos que vaya generando su proyecto de Visual
Basic en la misma carpeta, incluyendo el archivo de base de datos que respalde la aplicación.
Una vez ha creado el archivo de base de datos, es el momento de ir creando las tablas que
constituirán la misma.
Es posible, por ejemplo, que desee crear un campo de tipo contador. Estos campos son de
tipo numérico, pero es el sistema el que se encarga de generarlos, asegurando así la unicidad
de dichos valores. Deberá seleccionar un campo de tipo Long y activarla casilla AutoIncrField.
PAG. 82
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
También podrá establecer propiedades más avanzadas como: reglas de validación, valores
por defecto (predeterminado), etc.
E
l siguiente paso a dar debe ser la creación de índices. Sobre todo es muy
importante establecer la clave principal de la tabla, es decir, aquella cuyo valor
será único para
todos los registros de la misma.
Utilice el botón Agregar índices del cuadro Estructura de tabla de la base de datos y
agregue o elimine los índices necesarios.
Al crear un índice, debe indicar el nombre con el que se conocerá y podrá ser utilizado en
el código escrito en Visual Basic, los campos de la tabla que constituirán dicho índice y otras
características como la necesidad de introducir un valor en un campo siempre que se cree
nuevo registro (casilla Required)o la obligatoriedad de que no existan dos o más registros con el
mismo valor en dicho campo (casilla Único).
PAG. 83
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
TABLA ACTORES
-Campos:
Nombre del campo Tipo de datos Tamaño
Nombre actor Texto 100
Registro película Entero largo 4
- Índices:
Nombre del índice Campos que intervienen Clave principal
Clave principal (Nombre actor,
Registro película) Sí
PELICULASACTORES Registro película No
TABLA PELÍCULAS
-Campos:
Nombre del campo Tipo de datos Tamaño
Registro película Entero largo (contador) 4
Título Texto 150
Director Texto 100
Productor Texto 100
Público Texto 25
Género Texto 50
Año Texto 4
- Índices:
PAG. 84
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
TABLA PRÉSTAMO
-Campos:
Nombre del campo Tipo de datos Tamaño
Registro película Entero largo 4
Nif Texto 13
Fecha préstamo Fecha/Hora 8
Fecha devolución Fecha/Hora 8
Devuelto Booleano 1
- Índices:
TABLA SOCIOS
- Campos:
Nombre del camp Tipo de datos Tamaño
Nif Texto 13
Nombre Texto 100
Apellidos Texto 100
Dirección Texto 255
Teléfono Texto 25
Fecha introducción Fecha/Hora 8
- Índices:
PAG. 85
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 86
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
E
n este capítulo aprenderá a utilizar el control Data para crear sencillas aplicaciones de
bases de datos.
Con dicho control podrá acceder a una base de datos, mostrar la información que ésta
posea, modificarla e incluso introducir registros en alguna de tablas. Todo sin
programar ni una línea de código.
El control Data permite establecer la conexión con la base de datos a utilizar y a partir de
entonces cualquier tabla o consulta de dicha base de datos está disponible en su aplicación.
Los pasos a seguir para utilizar una base de datos en su aplicación Visual Basic son:
El control Data tiene cuatro botones al estilo de un reproductor de vídeo. Con los botones
podrá acceder al anterior y posterior registro, respectivamente. Con los botones
accederá al primer y último registro.
Las propiedades del control Data que debe establecer para crear la conexión con la base de
datos son:
• Connect: indica el tipo de base de datos a la que vamos a acceder. Por omisión este
tipo es Access, es decir, una base de datos creada con el Motor jet como aprendió en la
lección anterior.
PAG. 87
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Si conoce la base de datos y el conjunto de datos a los que desea acceder en tiempo de
diseño, podrá utilizar la ventana Propiedades para establecer estas propiedades, en caso contrario
lo podrá hacer en el código que escriba.
CUIDADO CON LA PROPIEDAD DATABASENAME
Hay que tener mucho cuidado al establecer la propiedad DatabaseName. Si indica en esta
propiedad seguirá teniendo ese valor al crear el fichero ejecutable de la aplicación.
os finales, por lo que seguramente se producirá un error en tiempo de ejecución al no poder encontrar la ubicación especifica
lizar el nombre del directorio donde se instalará la aplicación en la propiedad DatabaseName, en lugar de un valor específico
se supone que no es el directorio raíz), representada aquí por el objeto App. El archivo de bases de datos especificado deber
ctorio se actualizará con la elección efectuada por el usuario. En la última lección del curso podrá encontrar más detalles sob
Existen dos propiedades que deberá modificar para enlazar controles con el control Data:
DataSource y DataField.
• DataSource: en esta propiedad indicaremos el control Data que actuará como origen
de datos.
PAG. 88
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Por ejemplo:
txtNif.DataSource = datSocios
txtNif.DataField = "Nif"
indica que se ligue el control txtNif al campo Nif de la tabla SOCIOS, a la que se accede
mediante el control Data datSocios. Este control deberá tener correctamente establecidas las
propiedades Connect, DatabaseName y RecordSource.
12.3. RECORDSETS
A
l utilizar un control Data y establecer la conexión con la base de datos, está indicando
el conjunto de datos sobre los que quiere tener acceso. En Visual Basic a dicho
conjunto de datos se llama Recordset, siendo una propiedad del control Data.
En Visual Basic 6.0 existen tres tipos de Recordscts: Table, Dynaset y Snapshot.
Dicho tipo se establece mediante la propiedad RecordsetType
del control Data, que
predeterminadamente tiene el valor Dynaset.
Un recordset del tipo Dynaset es un conjunto dinámico de registros que representa una
determinada tabla o el resultado de una consulta, según se haya establecido la propiedad
RecordSource del control Data. Puede agregar nuevos registros, modificar los existentes e incluso
eliminar registros y todos estos cambios se reflejarán en la base de datos afectada.
Un recordset de tipo Table representa una determinada tabla de la base de datos. Al crear
un recordset de este tipo estará representando dicha tabla, cargándose en memoria un sólo registro,
que se corresponde con el registro actual. Toda modificación que realice, incluida la eliminación o
introducción de nuevos registros, se verá reflejada en la tabla.
Finalmente el tipo Snapshot crea una copia estática del conjunto de datos al que se accede
mediante el control Data. En este caso no podrá actualizar la base de datos sino sólo mostrar
los datos accedidos.
Tanto el tipo Dynaset como el Snapshot permiten acceder a datos de más de una tabla, no
así el tipo Table en el que sólo podrá trabajar con una tabla.
PAG. 89
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
S
i crea un recordset ya sea del tipo Dynaset o del tipo Table, podrá realizar
modificaciones en la base de datos subyacente sin tener que programar una línea de
código.
T
ambién podrá agregar nuevos registros a una base de datos sin tener que programar
para ello. En este caso deberá situarse en el último registro y moverse al siguiente.
La propiedad EOFAction del control Data de Visual Basic 6.0 que puede tener tres
valores: Move Last, EOF o Add New. Esta propiedad permite establecer lo que ocurre cuando se
llega al final del recordset del control Data.
Si el valor es EOF, deja el registro actual invalidado (ya que dicho registro todavía no
existe) y desactiva el botón que permite desplazarnos al siguiente registro. Deberá controlar esta
situación en su código ya que cualquier intento de acceder a la información del registro actual
producirá un error al no ser un registro válido.
Si posee el valor AddNew entonces cuando se desplace más allá del último registro,
Visual Basic creará un registro nuevo en la base de datos, donde podrá introducir la nueva
información.
Este último valor, Add Nex es el que permite añadir registros a la base de datos
(específicamente a una tabla de la base de datos) sin tener que programar para ello. Recuerde que
para crear registro deberá sobrepasar el último registro que tenga esos momentos
entonces Visual Basic limpiará el valor de los controles enlazados permitiéndole introducirla
información del nuevo registro. Cuando se mueva a otro registro, se añadirá a la base de datos.
PAG. 90
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Al igual que se puede indicar qué debe ocurrir cuando se llega al final de un recordset
también podrá hacerlo cuando se llega al principio mediante la propiedad BOFAction del control
Data.
En esta lección ha aprendido a utilizar el control Data para modificar y añadir datos a una
base de datos sin tener que programar ni una línea de código. En la próxima lección aprenderá a
programar el control Data para realizar dichas operaciones de forma más controlada y
flexible.
PAG. 91
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 92
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
En la lección anterior aprendió a acceder a una base de datos sin necesidad de programar,
sólo estableciendo las propiedades oportunas del control Data.
En esta lección aprenderá a escribir código para realizar procesos que ya hizo en la
anterior lección, pero de una forma más flexible y potente.
El control Data nos permite por el Recordset de una forma rápida y sencilla a
través de sus botones. Sin embargo, en muchas ocasiones deseará escribir código en el que es
necesario moverse a un determinado registro rápidamente.
Nombre.ControlData.Recordset.NombrePropiedad
NombreControlData.Recordset.NombreMétodo
A continuación resumimos los métodos que puede utilizar para desplazarse por el
Recordset.
Podrá utilizar dichos métodos del Recordset para desplazarse por los registros que
muestran los controles enlazados.
PAG. 93
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
El Recordset contiene un registro actual que es aquel cuya información se muestra en los
controles enlazados.
La acción indicada por el valor de las propiedades BOFAction y EOFAction del control
Data, se ejecutan cuando el registro actual se sitúa en los marcadores BOF y EOF,
respectivamente.
E
n muchas ocasiones deseará encontrar un registro determinado. Para localizar registros
puede utilizar los métodos Find cuando trabaje con recordsets de los tipos Dynaset o
Snapshot, o utilizar el método Seek para un recordset del tipo Table.
Para que pueda seguir mejor el curso en pantalla, en la figura siguiente se muestra el
formularlo (y el nombre de cada control) que es utilizado en este y el próximo capítulo. El
formulario permite prestar películas.
PAG. 94
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Como podrá imaginar. Cuando se realiza un préstamo de cierta película, será necesario
controlar que la persona que se la lleva existe en nuestra base de datos. Es decir,
necesitaremos buscar un registro específico en la tabla SOCIOS.
Por ello se ha insertado en el formulario el control Data datSocios, que permite acceder
a la tabla SOCIOS de la base de datos (estableciendo las propiedades DatabaseName y
RecordSource).
With datSocios
.Recordset.FindFirst ¨Nif =´¨& txtNumsocio.Text&¨`¨
lf. Recordset.NoMatch Then
MsgBox “Lo siento, no es un socio válido."
ExitSub
End If
EndWith
Mediante el uso de la estructura With se ahorra el tener que teclear mucho código. Así, en
este caso y hasta que se indique el fin de la estructura con End With, no será necesario incluir
la
palabra datSocios en el código.
Fíjese cómo, si no hubiese utilizado la estructura With, tendría que haber escrito el nombre
del control data: datSocios.Recordset.FindFirst¨Nif= `¨ & txtNumsocio.Text &¨´¨
PAG. 95
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Al utilizar el método FindFirst del recordset, está indicando que se busque el primer
registro del recordset cuyo valor en el campo Nif coincide con el valor que se ha introducido en el
cuadro de texto txtNumsocio, donde el usuario de la aplicación introducirá el Nif del socio.
Por otra parte, fíjese en el uso del operador concatenación & para crear el criterio de
búsqueda. Si por ejemplo, se hubiera introducido el Nif 00.000.001-A en el cuadro de texto, esta
línea quedaría de la siguiente forma:
datSocios.Recordset.FindFirst¨Nif ='00.000.001-A’”
Seguidamente se utiliza el método Nomatch del Recordset para comprobar, una vez
realizada la búsqueda, si se ha encontrado algún registro o no. Si no se ha encontrado, el
método
Nomatch devolverá True por lo que se mostrará mensaje mediante MsgBox y se saldrá
inmediatamente del procedimiento, utilizando ExitSub.
En este caso es lógico que si el número de socio no existe en nuestra base de datos,
salgamos inmediatamente del procedimiento, sin realizar el préstamo de la película.
Fíjese cómo no ha sido necesario utilizar el nombre del control datSocios en las líneas
situadas entre With y End With.
S
i recuerda la lección anterior, podía utilizar el valor AddNew propiedad EOFAction
del control Data para agregar nuevos registros a una tabla.
Esta forma, aunque muy sencilla, sólo es adecuada cuando estamos accediendo a una única
tabla en el recordset.
Una vez introducida dicha información, deberá hacer uso del método Update del
Recordset, con el objetivo de que el nuevo registro se actualice en la tabla. Si no utiliza Update, el
nuevo registro no se agregará finalmente.
www.detodoprogramacion.com
PAG. 96
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
utilizado para agregar los préstamos que se vayan sucediendo. Estudie la estructura de la tabla
PRÉSTAMO si es necesario.
Veamos qué código debe añadir al procedimiento de evento CIick del botón Prestar
para agregar un nuevo registro a la tabla PRÉSTAMO.
Una vez calculado el día de devolución de la película y validado el socio que se la lleva, es
el momento de realizar el préstamo en sí:
Una vez creado el nuevo registro del recordset mediante el método AddNew,
deberemos dar el valor adecuado a los campos de dicho registro. La forma de acceder aun
determinado campo es mediante la sintaxis siguiente:
NombreControlData.Recordset("Nombre Campo")
En definitiva, cada uno de los campos actúa como una propiedad del Recordset, a la
que tenemos que acceder mediante el uso de paréntesis.
En el código anterior se van rellenando el valor de cada campo del nuevo registro de
PRÉSTAMO. En dos ocasiones se ha tenido que utilizar una función para convertir el texto, que
es el tipo de datos de todo cuadro de texto, en el tipo adecuado para que coincida con el tipo
de datos de los campos de la tabla.
Una vez introducidos todos los datos, se utiliza Update y el registro queda insertado en la
tabla.
Debe tener en cuenta que el hecho de añadir un nuevo registro no implica que éste se
convierte automáticamente en el registro actual del recordset.
Si desea que el nuevo registro sea el registro actual puede utilizar la propiedad del
Recordset, LastModified, para indicar el desplazamiento al registro que haya sido el último en
modificarse, que será el nuevo registro añadido.
PAG. 97
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Dim registroActual
registroActual = datPréstamo.Recordset.Bookmark 'Se guarda el registro actual
datPréstamo.Recordset.MoveFirst 'Desplazamos el registro actual
datPréstamo.Recordset.Bookmark=registroActuaI 'Vuelve al marcador guardado
En este capítulo ha aprendido a añadir nuevos registros en una base de datos. Cuando
se añaden nuevos registros o se modifican los ya existentes, es necesario establecer la corrección
de los nuevos valores de los campos
Tenga cuidado después de eliminar un determinado registro, ya que el registro actual sigue
siendo el registro eliminado, por lo que cualquier intento de acceder a la información del registro
actual provocará un error de ejecución.
Por ello es conveniente desplazarse a un registro válido una vez haya utilizado el método
Delete. Por otra parte, no será necesario utilizar Update para hacer efectiva la eliminación.
A continuación se muestra el código que permite eliminar el registro actual del recordset:
PAG. 98
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Finalmente nos movemos al último registro mediante MoveLast, ya que el registro actual
no es válido al haber sido eliminado. En el caso de no existir ningún registro válido,
MoveLast nos situará en el marcador EOF.
Cuando utiliza un control Data y otros controles enlazados para mostrar la información
de la base de datos, puede modificar el valor de los campos y, al trasladarse a otro
registro, dicha modificación se actualiza en la base de datos.
Esta situación la puede reflejar en el código mediante primero el método del recordset Edit
y después la actualización mediante el método Update.
Para permitir una mejor comprensión del curso en pantalla, se muestra aquí el formulario
en el que se está trabajando en este capítulo de la lección. Este formulario refleja la situación en la
que un determinado socio devuelve una película que tenía en préstamo.
PAG. 99
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 100
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
CERRAR UN RECORDSET
El método Close del objeto Recordset cierra un recordset que haya sido previamente creado, liberando lo
PAG. 101
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 102
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
E sta lección finaliza el tratamiento de las bases de datos desde Visual Basic. En las
últimas tres lecciones ha aprendido a crear bases de datos mediante el Administrador
visual de datos, a crear sencillas aplicaciones de bases de datos sin necesidad de escribir código
y a utilizar el objeto Recordset mediante código para realizar aplicaciones más complejas.
Al utilizar dicho control podrá mostrar en cada una de sus columnas un campo y en
cada una de las filas un registro, del recordset al que haya sido enlazado.
El control FlexGrid aparece inicialmente con dos filas y dos columnas. Esta característica
se puede modificar en tiempo de diseño o esperar a que en tiempo de ejecución, cuando se enlace
con un determinado recordset, se ajuste al mismo.
La propiedad que establece el enlace con el correspondiente control Data es, al igual
que en el resto de controles enlazados, DataSource. Sin embargo, no presenta la propiedad
DataField ya que cuando utilice una cuadrícula para mostrar un conjunto de registros, que
seguramente tendrán más de un campo.
PAG. 103
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Otras propiedades interesantes de dicho control son Row y Col que especifican la
celda actual del control.
Otra propiedad interesante es WordWrap, que establecida a True hace que el texto que es
demasiado largo se ajuste a la línea siguiente dentro de la misma celda.
Cuando un control FlexGrid se enlaza a un control Data, los datos se muestran en sólo
lectura, por lo que no es posible modificar o eliminar directamente los datos mostrados.
C uando desee mostrar información que provenga de más de una tabla, no tendrá
más remedio que utilizar el lenguaje SQL para establecerla correspondiente consulta
en la
propiedad RecordSource de un control Data.
SQL es un lenguaje que pretende ser estándar en el acceso a bases de datos relacionales, de
forma que, independientemente del origen de la información, usted pueda acceder a ella a través
de instrucciones SQL.
Este capítulo introduce una pequeña parte de dicho lenguaje, con el que podrá realizar
consultas que permitan mostrar información de tablas de bases de datos. Estas consultas se
conocen como consultas de selección.
Una vez establecida la propiedad RecordSource, debe utilizar el método Refresh del
control Data para crear el objeto Recordset, al haber cambiado la propiedad RecordSource.
En las líneas siguientes se realiza este proceso. Fíjese cómo el usuario habrá
introducido una instrucción SQL en el cuadro de texto Text1, estableciendo el valor de
RecordSource:
Data1.RecordSource = Text1.Text
Data1.Refresh
La instrucción que utilizará para crear consultas de selección SQL es SELECT. Aquí
puede ver la sintaxis de esta instrucción (esta sintaxis está reducida al no presentar la cláusula
GROUP BY).
www.detodoprogramacion.com
PAG. 104
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
SELECT <columnas>
FROM <tablas>
[WHERE <condiciones>]
[ORDER BY <columnas>]
Como puede observar, la instrucción SELECT empieza con dicha palabra y un
conjunto de columnas, es decir, el conjunto de campos que queremos que muestre la consulta
como resultado de la misma.
Seguidamente aparece la cláusula FROM, que identifica las tablas sobre las que se realiza
la consulta. Los campos especificados en la cláusula SELECT deben pertenecer a las tablas
especificadas en FROM.
SELECTTítulo
FROMPELÍCULAS
En este caso ha indicado que se muestre el campo Titulo de los registros situados en la
tabla PELÍCULAS.
Si desea que se muestren más de un campo, deberá separarlos por comas. Y si desea que se
muestren todos los campos de una tabla puede utilizar el carácter*. Así, la siguiente consulta
devolvería todos los campos de la tabla PELICULAS:
SELECT*
FROMPEÚCULAS
Otro ejemplo:
PAG. 105
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Esta consulta es un poco más compleja. En este caso se está indicando que se muestren los
campos Nombre y Fecha introducción de 1os registros situados en la tabla SOCIOS
cuyo Nif exista en algún registro de la tabla PRÉSTAMO.
Segundo: si el nombre de un campo está compuesto por más de una palabra, deberá
utilizar corchetes para delimitarlo como puede ver en el campo Fecha introducción.
Tercero: todas las tablas implicadas aparecen en la cláusula FROM separadas por comas.
Finalmente, si desea ordenar de alguna forma los registros resultado de la consulta, puede
utilizar la cláusula ORDER BY:
SELECTPELÍCULAS.Título,PRÉSTAMO.[Fecha préstamo]
FROM PELICULAS, PRÉSTAMO
WHEREPELÍCULAS.[Registropelicula=PRÉSTAMO.[Registro película]
ORDER BY PRÉSTAMO.[Fecha préstamo]
PAG. 106
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
E
n el curso en pantalla se muestra en ese capítulo el uso de una consulta SQL para
permitir mostrar la fecha de devolución, junto al nombre y apellidos del socio y el
registro de la película de todos los préstamos cuya fecha de devolución ha pasado.
En las tres primeras líneas, correspondientes ala cláusula SELECT, se establece lo que
queremos que se muestre. Fíjese en que el nombre del campo aparece junto a la
correspondiente tabla en la que se encuentra, para evitar cualquier confusión.
En la cláusula FROM se indica las tablas a las que deseamos acceder: SOCIOS y
PRÉSTAMO.
PAG. 107
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
En la siguiente figura puede ver el resultado que produce esta consulta SQL en el estado de
la base de datos utilizada en la aplicación que ha estado diseñando en gran parte del curso.
E
n toda aplicación que utilice datos introducidos por el usuario es fundamental validar
dichos datos y asegurarse así de que sean correctos.
Esta necesidad es mayor si la aplicación interactúa con una base de datos. No debe
permitir que se escriban datos incorrectos en base de datos, sino que antes de actualizarla
deberá establecer el correspondiente nivel de validación.
PAG. 108
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Este primer nivel de validación no suele ser suficiente, también deberá comprobar la
corrección de los datos en sí. No debe permitir que el usuario introduzca lo que quiera sino
que tenga sentido.
Es cuando se pulsa en dicho botón, cuando el código escrito en Visual Basic actúa
para validar la entrada producida.
Sin embargo, podría establecer validación en cada una de las pulsaciones de tecla que
se realice sobre un determinado cuadro de texto, permitiendo, por ejemplo sólo la
introducción de números.
De esta última forma no sería necesario que el usuario pulsara en un determinado botón
para detectar que la información introducida no es correcta, sino que esta validación se haría
mucho antes. Lógicamente esta forma es más costosa en términos de programación.
El evento más utilizado en este aspecto es Validate. Dicho evento sucede en un gran
numero de ocasiones, siempre antes que el registro actual cambie.
PAG. 109
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Así, el código utiliza el parámetro Save y permite confirmar, por parte del usuario. que se
lleve a cabo la modificación que ha realizado. Si se responde No, los cambios no tienen electo al
establecer el valor False del parámetro Save.
Recuerde, por otra parte, que al crear una tabla de una base de datos, puede establecer
algunos criterios de validación. Así, podrá introducir reglas de validación junto al mensaje que
debe aparecer si se infringen, reglas de integridad referencial, etc.
Pida información sobre los eventos Error y Reposition si desea ampliar sus
conocimientos sobre la validación con el control Data.
PAG. 110
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
E n la mayoría de aplicaciones Windows existe una o más opciones en las que el usuario
tiene que interaccionar con el sistema de archivos de su equipo.
Abrir, guardar o buscar un determinado archivo, son situaciones en las que debe ser el
usuario el que se sitúe en el lugar correspondiente en el sistema de archivos.
Usted ya ha aprendido a utilizar el control Diálogo Común para utilizar los cuadros de
diálogo predefinidos Guardar como o Abrir. En esta lección conocerá otros controles que
permiten también tener acceso al sistema de archivos de una forma menos “prefabricada”.
Al dibujar el cuadro de lista de unidades, deberá darle un tamaño adecuado para que se
pueda mostrar cualquier unidad que tenga en su ordenador. En tiempo de diseño se muestra la
etiqueta de la unidad del disco duro de forma que pueda ajustar el control al tamaño de la misma.
Sin embargo, esto no nos asegura que en el equipo del usuario final el tamaño sea
adecuado.
El control Cuadro de lista de unidades incluye las unidades de disco duro, disco
flexible, CD-ROM, etc.
Es conveniente permitir que dicho control muestre tres o cuatro carpetas. Visual Basic, le
muestra en tiempo de diseño, la carpeta en la que se inicia la aplicación y en la que por
defecto, guardará el proyecto.
PAG. 111
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Este último control tiene una propiedad que suele ser interesante establecer. La propiedad
Pattern permite especificar qué tipos de archivos son mostrados en el cuadro de archivos.
En muchas ocasiones sólo deseará mostrar determinados archivos y no todos, como es la
opción predeterminada (*.*).
Puede utilizar los caracteres comodín * y ? al establecerla propiedad Pattern. Estos
caracteres tienen el mismo significado que en el MS-DOS o Windows, para especificar nombres
de archivos.
Estableciendo la propiedad Pattern, por ejemplo, con la cadena *.txt, estará indicando que
se muestren sólo los archivos que tengan dicha extensión (archivos de texto en este caso).También
puede mostrar más de un tipo de archivos, simplemente sepárelos con ;
PAG. 112
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
E
n tiempo de diseño, al dibujar los distintos controles del sistema de, archivos, estos
muestran la unidad y carpeta en la que se crea el proyecto por omisión. También
muestra en el cuadro de archivos, aquellos archivos situados en esta carpeta y que cumplen con la
propiedad Pattern.
Esto tiene el objetivo de permitirle dibujar con más facilidad dichos controles,
estableciendo el tamaño adecuado de los mismos.
Para que los controles estén sincronizados, es decir, cuando cambie de unidad de disco se
muestren las carpetas adecuadas y cuando cambie de carpeta, se muestren los archivos existentes
en la nueva carpeta, es necesario conectar los controles.
Fíjese como un cambio en la unidad de disco debe implicar el cambio de carpeta y, por lo
tanto, de la lista de archivos. Sin embargo cambiar de carpeta sólo implicará que debemos mostrar
la lista de archivos actualizada.
Mediante esta línea de código está actualizando la ruta de acceso del cuadro de directorios,
de forma que muestre las carpetas correspondientes a la unidad seleccionada y que está
especificada en su propiedad Drive.
Deberá entonces actualizar también la lista de archivos del cuadro de archivos para
que muestren los archivos situados en el nuevo directorio. Esto se realiza de la siguiente
forma en el evento Change del cuadro lista de directorios:
PAG. 113
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
De esta forma se actualiza la lista de archivos. Fíjese cómo estamos conectando la unidad
con el directorio y el directorio con el archivo. Y esta conexión se establece en el momento
en que cambia el elemento de nivel superior.
C
uando está escribiendo código en tiempo de diseño, Visual Basic puede detectar
errores sintácticos y avisarle de ellos.
Sin embargo, también pueden suceder errores en tiempo de ejecución. Este tipo de
errores son sucesos inesperados que Visual Basic no puede controlar por sí mismo sino que usted
debe o bien prevenirlos o bien manejarlos.
Ante este tipo de errores, Visual Basic presenta la posibilidad de incorporar lo que se llama
manejador o controlador de error. Los manejadores de error son un conjunto de líneas de
código que sólo debe ejecutarse cuando se produce un error que es interceptado por Visual Basic.
PAG. 114
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
ManejadorError:
IfErr.Number = 68 Then
resp = MsgBox(“El dispositivo no está preparado",
vbAbortRetryIgnore)
If resp = vbRetry
Then Resume
Elself resp = vbAbort Then
Drive1.Drive = Dir1.Path
Resume Next
End If
End If
La primera línea es la etiqueta que representa el nombre del manejador, fíjese como
debe incluir dos puntos al final de la misma.
Nuestro código pregunta si dicho error es el 68 y en ese caso presenta un cuadro de diálogo
en el que se le indica al usuario que el dispositivo no está preparado, dándole la opción de
reintentar, cancelar o ignorar el error (fíjese en el uso de la constante vbAbortRetrylgnore en
la función MsgBox). Si desea utilizar el mensaje estándar, puede utilizar la propiedad Description
de la siguiente forma:
PAG. 115
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
En este caso esto dependerá de lo que desee hacer el usuario. Si desea reintentar la
operación (resp será igual a vbRetry) entonces se ejecuta la instrucción Resume, que vuelve a
ejecutar la misma instrucción que provocó el error.
Si lo que desea es anular la operación (resp será igual a vbAbort), entonces se ejecuta
Resume Next, que lo que hace es devolver él control a la siguiente instrucción que provocó el
error.
En otro caso (resp = vbIgnore), se lleva a cabo la acción aunque sea incorrecta y se sigue,
terminando el procedimiento de evento.
Recuerde: Resume vuelve a ejecutar la línea que provocó el error y ResumeNext lleva el
control a la siguiente de dicha línea.
Debe tener cuidado al escribir el código del manejador de error. Sí sitúa este código al
final del procedimiento, dicho código se ejecutará aunque no se produzca ningún error. Utilice la
instrucción Exit Sub para impedir que esto ocurra cuando no se ha producido ningún error.
PAG. 116
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
E
n los anteriores capítulos ha estado trabajando para programar lo que debería
ocurrir cuando el usuario interacciona con el cuadro de unidades y el directorio.
Es decir,
permiten que se muestren las listas de directorios y archivos actualizadas.
Sin embargo aún no ha indicado qué debe pasar cuando se elige un archivo de la lista
de archivos, que en definitiva, debe ser la acción que desea realizar el usuario.
En este capítulo escribiremos código para que, cuando el usuario haga doble clic en un
determinado archivo de la lista, su contenido se muestre en un cuadro de texto.
Esto es posible porque los archivos que permitimos mostrar son archivos de texto, en
los que sólo aparece texto sin formato.
Aquí puede ver el contenido del procedimiento de evento DblClick de la lista de archivos:
Una vez tenemos en la variable Archivo el nombre y ruta completa del archivo que
deseamos mostrar es necesario abrir dicho archivo. Para ello se utiliza la instrucción Open
La instrucción Open necesita el nombre del archivo a abrir, el modo en el que se va a abrir
dicho archivo, que entre otros valores puede ser en modo lectura o en modo escritura y un número
que se asocia con el archivo para el resto del código.
PAG. 117
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Una vez tenemos abierto el archivo en modo lectura, se utiliza la variable LTexto para
ir almacenando cada una de las líneas del archivo de texto. Para ello se utiliza la instrucción
Line Input, donde se indica el número del archivo y la variable en la que se guarda la línea de
texto.
Seguidamente vamos guardando todo el texto en otra variable, Texto, donde se van
concatenando cada una de las líneas que consta el archivo.
Finalmente se cierra el archivo mediante la instrucción Close. No debe olvidar realizar
dicha instrucción cuando finalice con un archivo.
Por otra parte, el proceso que ha realizado en este capítulo sólo sirve para los archivos
de texto sin formato. Este tipo de archivos no almacena ninguna cabecera ni códigos
especiales y además no deben sobrepasar las 64Kb de tamaño.
PAG. 118
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Deberá haber cerrado el archivo fuente antes de utilizar la instrucción FileCopy, ya que en
caso contrario se producirá un error en tiempo de ejecución. Con la instrucción FileCopy
podrá copiar cualquier archivo, independientemente de su tipo.
Por otra parte es conveniente controlar si la ubicación del archivo destino tiene suficiente
espacio disponible para realizar la copia del archivo. En caso contrario se producirá un error
al intentar hacer la copia, error que debería ser manejado por su código.
PAG. 119
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 120
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Utilización de OLE
16.1. INRODUCCIÓN
Al compartir información, lo que realmente está haciendo es compartir objetos que son
creados por dos o más aplicaciones Windows distintas. Es aquí donde entra en juego el
estándar OLE, que sienta las bases para crear y compartir objetos entre distintas aplicaciones.
Pero además de todo ello, en Visual Basic podrá utilizar los objetos de otras aplicaciones
de la misma forma que cualquier otro objeto de Visual Basic. Podrá establecer o le sus
propiedades, utilizara sus métodos, etc., en lo que es la llamada Automatización OLE.
Windows.
M ediante el uso del control Contenedor OLE, podrá crear formularios de Visual
Basic en los que incluya información proveniente de distintas aplicaciones
Así, si el equipo donde se ejecuta la aplicación posee aplicaciones Windows como la hoja
de cálculo Excel o el procesador de textos Word, no necesitará programar para conseguir que
su aplicación presente la funcionalidad de dichas aplicaciones, sino que podrá utilizarlas
desde su aplicación.
PAG. 121
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
En este cuadro de diálogo aparecen los distintos tipos de objetos que puede insertar en
el formulario. Estos objetos provienen de las aplicaciones compatibles con OLE que tenga
instaladas en su equipo.
Si desea que el objeto insertado aparezca en el formulario como un icono, puede activar la
casilla Mostrar como icono del cuadro de diálogo Insertar objeto.
Por otra parte, puede indicar que el objeto sea incrustrado o vinculado. Como ya debe
conocer, al incrustrar un objeto, se crea una copia y se guarda en la aplicación Visual Basic, por lo
que sólo podrá usarse en ésta.
Además de utilizar el cuadro de diálogo Insertar objeto también puede usar un objeto OLE
en un formulario a través del comando Pegado especial.
PAG. 122
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Dibuje el contenedor OLE, cancele el cuadro diálogo Insertar objeto y utilice el comando
Pegado especial a través del menú contextual del contenedor OLE. Lógicamente habrá tenido que
trasladar el objeto a pegar al Portapapeles de Windows a través de un comando cortar o copiar.
El cuadro Pegado especial es semejante al de Insertar objeto, pero en este caso sólo
permite insertar un tipo de objeto, el que se corresponda con la información situada en el
Portapapeles.
También puede incrustar un objeto, para lo que utilizará la opción Pegar, o vincularlo,
utilizando la opción Pegar vínculo.
Para ello deberá mostrar, en tiempo de ejecución, el cuadro de diálogo Insertar objeto o
Pegado especial mediante métodos del objeto contenedor OLE y establecer las propiedades
oportunas del nuevo objeto insertado.
Fíjese cómo en este caso debe escribir código, que no es necesario al insertar objetos
en tiempo de diseño.
C
uando insertas un objeto a través del control Contenedor OLE, está en disposición de
editar el objeto con la aplicación creadora del mismo. Para ello lo único que tiene que
hacer, en tiempo de ejecución, es doble clic sobre el objeto.
PAG. 123
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
En este sentido es importante indicar que existen aplicaciones que permiten que la edición
sea en el propio control contenedor (conocido como Edición visual) y otras en las que la edición
se produce en un ventana independiente.
Para que la edición del objeto sea en el propio control contenedor OLE, es necesario haber
incrustrado el objeto, ya que toda vinculación producirá que la aplicación servidora se muestre en
una ventana independiente. Por otra parte, si el objeto se representa como un icono en nuestro
formulario, también se presentará en una ventana independiente la aplicación servidora.
• .0: indica que dicho elemento de menú no se verá cuando se edite el objeto,
mostrándose únicamente el menú de la aplicación servidora.
PAG. 124
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Además, es posible que una misma aplicación aporte más de un tipo de objetos insertables.
Por ejemplo Excel permite la inserción de objetos hoja de cálculo y gráficos.
Sin embargo, tenga en cuenta que, al utilizar un objeto insertable como control
personalizado en la caja de herramientas, sólo podrá incrustar un objeto nuevo ya que no tendrá
la opción de utilizar un archivo existente. Pero sí podrá editarlo, en tiempo de ejecución
aplicándose las mismas reglas que en el caso del Control contenedor OLE.
PAG. 125
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
U
na de las características más potentes de la utilización del estándar OLE es la
Automatización OLE.
El estándar OLE permite que las aplicaciones actúen bien como servidores OLE
clientes OLE. Un servidor OLE proporciona objetos que puede utilizar en otras aplicaciones. Un
cliente OLE es una aplicación que utiliza objetos creados en una aplicación distinta, como se
ha mostrado en esta lección.
Visual Basic permite crear aplicaciones que actúen como clientes OLE, pero también, en
su ediciones Profesionales y Empresariales, como servidores OLE.
Al utilizar Automatización OLE, usted puede utilizar los objetos de otras aplicaciones
como si fuera objetos de Visual Basic, estableciendo propiedades y utilizando sus métodos.
Así, puede crear objetos como documentos de Word, hojas de cálculo de Excel o cualquier
otro objeto proveniente de un servidor OLE y utilizarlos en su código.
Dim X As Object
Set X = CreateObject ( “ Word . Basic “ )
X . ArchivoNuevo
X . TamañoFuente 24
X . Insertar “Uso de la Automatización OLE”
En estos casos, el uso del Examinador de objetos permite conocer y pedir ayuda sobre los
componentes de dichos objetos, facilitando la utilización de sus métodos y propiedades de la
forma correcta.
PAG. 126
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Aplicaciones MDI
17.1. UNA APLICACIÓN MDI
En una aplicación MDI, como puede ser Microsoft Excel, existe una ventana
principal, que posee su propio menú y barras de herramientas, y una o más ventanas secundarias,
donde se sitúan los documentos con los que está trabajando.
Además, cuando no existe ninguna ventana secundaria abierta, el menú que presenta la
ventana principal cambia, aportando normalmente menos opciones que cuando existen ventanas
secundarias abiertas.
PAG. 127
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Esto es así porque realmente el menú más completo pertenece a la ventana secundaria y es
el menú que se presenta, cuando no hay ventanas secundarias abiertas, el que pertenece a la
ventana principal.
Cuando una ventana secundaria posee un menú, éste se muestra en el área de menús de la
ventana principal.
En definitiva una aplicación MDI se caracteriza por presentar una ventana principal, que a
partir de ahora llamaremos ventana MDI, y una o más ventanas secundarias que se muestran en
el interior de la ventana MDI.
E
n un proyecto Visual Basic sólo puede existir un formulario MDI en el que se
situarán, en tiempo de ejecución, los formularios secundarios. En tiempo de diseño los
formularios secundarios se muestran independientes del MDI pudiendo incluso tener un tamaño
mayor a éste. Sin embargo, en tiempo de ejecución siempre se mostrarán en el interior del MDI.
Para introducir un formulario MDI, deberá utilizar el menú Insetar y elegir Formulario
MDI ya que el botón que se sitúa en la barra de herramientas para crear nuevos formularios
inserta formularios no MDI.
El formulario MDI puede contener su propia barra de menús, creada en el editor de menús,
pero sólo se mostrará cuando no existan formularios secundarios abiertos que tengan su
propio menú. Normalmente el menú del formulario MDI es un menú con menos opciones
que el
presentado al mostrarse visible un formulario secundario.
Otra de las características de un formulario MDI es la de que sólo podrá dibujar controles
en su interior que posean la propiedad Align. Si intenta dibujar un control que no posee esta
propiedad, Visual Basic le indicará con un mensaje que no es posible. El Control Data o el Cuadro
de imagen (PictureBox) que se utiliza por ejemplo, para crear barras de herramientas en las
aplicaciones MDI, son controles que presentan esta propiedad
PAG. 128
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
El valor inicial de dicha propiedad es False, pudiendo mantenerlo así, lo que significaría,
en una aplicación MDI, que dicho formulario será una ventana independiente ( posiblemente
un cuadro de diálogo) o cambiarlo a True, indicando que será un formulario secundario.
Dicho menú debe contener todas las opciones que presente la aplicación, completando de
esta forma el menú del formulario MDI. Sin embargo es necesario que las opciones del menú
MDI que desee mantener en el secundario también aparezcan en este último ya que lo que
realmente se hace es reemplazar un menú por otro y no completarlo.
Si desea que sea el formulario MDI el formulario inicial del proyecto, utilice el cuadro de
diálogo Opciones del menú Herramientas de Visual Basic. En la ficha Proyecto se puede
establecer esta característica del proyecto.
Elegir el formulario inicial de una aplicación MDI no es una característica sin importancia.
Si el formulario inicial es el formulario secundario, entonces al cargarse este formulario, fruto de
iniciarla aplicación, también se cargará el formulario MDI.
Pero esto no sucede al revés, es decir, al cargarse el formulario MDI no se cargan los
formularios secundarios, proceso que deberá realizar en el código.
Diferencie claramente entre lo que sucede al cargarse un formulario secundario, que carga
automáticamente el formulario MDI, si no lo estaba, y la propiedad del formulario MDI
AutoShowChildren, que permite mostrar automáticamente los formularios secundarios cuando se
cargan.
PAG. 129
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Recuerde que al cargarse un formulario (evento Load) no se muestra en pantalla, sino que
debe hacerlo en el código (por ejemplo mediante el método Show).
A
lo largo de este curso usted ha estado continuamente trabajando con objetos, tanto a
nivel visual, dibujándolos, como a nivel de código, estableciendo propiedades y
utilizando métodos.
En este capítulo se hace inevitable mostrar cómo se pueden crear objetos en tiempo de
ejecución, lo que es la base de la programación orientada a objetos, metodología de
programación que está fuera del propósito de este curso.
Deberá escribir código que permita al usuario de una aplicación MDI crear un nuevo
formulario, seguramente para trabajar con otro documento. Esta opción suele aparecer en el menú
Archivo.
Este código debe ser escrito en un procedimiento que permita realizar este proceso. Fíjese
cómo dicho procedimiento deberá estar disponible tanto para el formulario MDI como para
los formularios secundarios, ya que ambos deben permitir crear formularios nuevos a través
de su menú Archivo.
Este es el código que se utiliza en el curso en pantalla para crear nuevos formularios
secundarios:
PAG. 130
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
En la primera línea del procedimiento (Dim nuevo As New Form1) es donde se encuentra
la declaración y creación del nuevo formulario.
En esta línea se está declarando (Dim) la variable nuevo indicando que es un nuevo
objeto (New) de la clase Form1 (As Form 1).
Es decir, estamos indicando que deseamos crear una copia del formulario Form1, que es el
formulario secundario de la aplicación. A dicha copia del formulario Form1 también se la
llama instancia de la clase Form1.
Al insertar un formulario en tiempo de diseño, está creando una nueva clase que puede
utilizar en su código para crear objetos de la misma (o instancias).
Repase la lección Programación en Visual Basic o acuda al manual del producto si desea
más información.
Fíjese cómo el usuario deberá introducir el título del nuevo formulario para que se muestre
en pantalla, ya que en ese momento es cuando se utiliza su propiedad Caption.
Al crear una nueva instancia de la clase Form1, está creando un formulario totalmente
independiente de los que ha creado en tiempo de diseño, pero con la facultad de compartir o
heredar las características de la clase, es decir, sus propiedades, métodos y eventos.
Programando código para los procedimientos de evento del formulario secundario y de los
controles que se hayan dibujado en él, se asegura que el mismo código será ejecutado por
cada nueva instancia que se cree en ejecución.
El resultado del código se aplicará al formulario que tenga el foco cuando sucede el evento
para el que ha sido programada una determinada respuesta.
C
omo pudo observar en el primer capítulo de la lección, en la mayoría de
aplicaciones MDI existe un menú Ventana el que se listan las ventanas
secundarias que están
abiertas y además permite organizarlas en el área de la ventana principal.
Esta funcionalidad la puede conseguir al crear una aplicación Visual Basic con muy poco
esfuerzo de programación.
PAG. 131
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Por otra parte, si desea introducir opciones para organizar las ventanas secundarias en
el interior del Formulario MDI, simplemente debe utilizar el método Arrange de este
formulario. Fíjese que Arrange es un componente del formulario MDI y, sin embargo, afecta a los
formularios secundarios que estén abiertos.
PAG. 132
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
C
omo ya se ha comentado, al cerrar el formulario MDI, también se cierran los
formularios secundarios. Sin embargo, este enunciado no es del todo exacto. Lo
que
sucede al cerrar el Formulario MDI es que el evento QueryUnload es recibido primero por el
formulario MDI y después por cada uno de los formularlos secundarios que estén abiertos en ese
momento.
www.detodoprogramacion.com
PAG. 133
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
QueryUnload. Si no desea cerrarlo, se cancelará dicho evento por lo que no se llegará a producir
el evento Unload. En las siguientes líneas puede ver el código que consigue esta circunstancia:
Cancel=True
End If
End Sub
Con estas líneas conseguimos que el usuario tenga la posibilidad de confirmar el cierre del
formulario. Fíjese que este código será compartido por cada instancia de Form1 (la clase del
formulario secundario) que se cree en tiempo de ejecución.
Para diferenciar un formulario de otro, se utiliza la palabra clave Me, que se adaptará
en cada caso al formulario activo (el que tiene el foco).
Se comprueba cuál ha sido la respuesta del usuario. En el caso de que éste haya pulsado el
botón No del cuadro de mensaje, entonces debernos cancelar el evento QueryUnload simplemente
estableciendo el parámetro Cancel a True.
Al hacer esto, impedimos que suceda el evento Unload, por lo que no se cierra el
formulario. Tenga en cuenta que, si decide no cerrar un formulario secundario, se cancela el
evento Unload del mismo y del resto de formularios abiertos, incluido el formulario MDI. Deberá
escribir más código para permitir cerrar un formulario y mantener otros abiertos.
Por otra parte seuti1iza en su código la instrucción End, al ejecutarse dicha instrucción, la
aplicación finaliza inmediatamente sin que ocurra ningún evento más, por lo que no suceden
los eventos QueryUload ni Unload.
PAG. 134
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Depurar la Aplicación
18.1. TIPO DE ERROR
Los errores en tiempo de compilación suelen ser los más sencillos de solucionar. Se
deben, en la mayoría de casos, a escribir incorrectamente el nombre de alguna variable o a utilizar
propiedades y métodos sobre objetos que no los poseen.
Otro tipo de errores que pueden suceder al programar una aplicación son los errores en
tiempo de ejecución. Dichos errores se producen cuando Visual Basic encuentra una instrucción
en su código que realiza una operación imposible de ejecutar.
Fíjese cómo la instrucción puede estar correctamente escrita según la sintaxis del lenguaje,
por lo que no se ha detectado en tiempo de compilación y, sin embargo, provocar un error en
tiempo de ejecución.
Puede escribir manejadores de error para controlar este tipo de errores, como ya ha
hecho en una lección anterior.
Finalmente, los errores más difíciles de depurar son los errores lógicos. Estos errores
ocurren cuando una aplicación no funciona de la forma que esperamos. No se produce ningún
error detectable por Visual Basic, sino que simplemente el resultado no es el que pretendemos que
se produzca.
Deberá utilizar las herramientas de depuración de Visual Basic para seguir el código al
ejecutarse y, de esta forma, localizar el error que produce que el resultado no sea el esperado.
PAG. 135
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
El primer paso a seguir una vez detectado que se ha producido un error (en el caso de un
error de carácter lógico deberá ser usted mismo quien detecte el error al ejecutar la
aplicación), es encontrarlo en el código escrito.
Para buscar un error en tiempo de ejecución, tiene dos posibilidades: iniciar la ejecución y
cambiar al modo de interrupción cuando lo crea oportuno o introducir puntos de interrupción
en aquellos lugares del código donde sospeche que se produce el error.
Un punto de interrupción es una línea del código en la que se indica que la ejecución debe
detenerse y pasara al modo Interrumpir, donde usted puede utilizar el entorno de desarrollo.
La línea donde introduzca el punto de interrupción no llegará a ejecutarse, sino que se
interrumpirá antes de hacerlo.
Una vez entra en el modo Interrumpir, Visual Basic presenta la ventana de código
donde introdujo el punto de interrupción, rodeando con un rectángulo la línea que va a ejecutarse y
que lógicamente se corresponde con aquella en la que situó un punto de interrupción.
Una de las herramientas más útiles es poder continuar la ejecución del código línea a
línea. De esta forma podrá localizaren qué línea se produce el error o, si es un error lógico el que
está buscando, cómo se comporta la aplicación paso a paso
Existen tres modalidades distintas en la ejecución paso a paso: paso por instrucciones,
paso por procedimientos y paso hasta salir.
PAG. 136
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Para ejecutar la aplicación paso a paso por instrucciones, deberá pulsas en dicha
opción situada en el menú Depuración. En este caso el código se ejecuta una instrucción cada
vez. Recuerde que en una misma línea puede haber más de una instrucción, por lo que, al usar el
paso por instrucciones, no tiene porqué ejecutarse una línea completa.
Paso a paso por procedimientos es similar al paso por instrucciones, excepto cuando la
instrucción que vaya a ejecutarse sea la llamada a un procedimiento: en el caso del paso por
instrucciones, la siguiente instrucción a ejecutar será la primera del cuerpo del procedimiento;
mientras que en el caso del paso por procedimientos, la llamada al procedimiento será tratada
como una instrucción única, ejecutándose completamente.
Con Paso a paso para salir se ejecuta las demás líneas de una función en laque reside el
punto de ejecución actual. La siguiente instrucción mostrada es la instrucción que sigue a la
llamada a procedimiento. Todo el código se ejecuta entre los puntos de ejecución actual y final.
Sólo está disponible en modo de interrupción.
En la mayoría de ocasiones tendrá que analizar el valor que van tomando las variables y
las propiedades de los objetos que aparecen en su código para comprender por qué se
produce el error que está depurando.
PAG. 137
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
En este cuadro de diálogo podrá especificar la expresión que desea controlar, además
de indicar el ámbito de la misma.
Existen dos tipos de expresiones de ruptura, como puede comprobar en la sección Tipo de
inspección. La diferencia es la condición que debe cumplirse para que Visual Basic entre en
el modo Interrumpir y poder así comprobar el valor de la expresión.
En la figura anterior se está creando una expresión de inspección para la variable Archivo,
es decir, cuando entremos en el modo Interrumpir (a través de un punto de i interrupción por
ejemplo), usted podrá ver el valor en ese instante que tiene almacenado la variable Archivo. Dicho
valor aparecerá en la ventana Inspecciones.
E
xiste una forma más sencilla de comprobar el valor de una determinada expresión
cuando está en el modo Interrumpir, sin necesidad de agregar una expresión de
inspección.
Una vez está en el modo Interrumpir la opción Inspección rápida está disponible en el
menú Depuración. Dicha opción sirve para comprobar el valor de la expresión que tenga
seleccionada en la ventana de código.
Cuando pulse este botón, Visual Basic le informará del valor de dicha expresión en ese
momento, de ahí el nombre de inspección rápida. Si lo desea, podrá agregar esa expresión como
una expresión de inspección más, mostrándose en la ventana Depuración.
PAG. 138
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
T
al vez la característica más potente que presenta Visual Basic en el aspecto de la
depuración de una aplicación, es la posibilidad de corregir el y continuar con la
ejecución como si nada hubiese ocurrido. Es decir, en muchas ocasiones no necesitará terminar la
aplicación para poder corregir un error.
Sin embargo, esto no es siempre posible, teniendo, en ocasiones, que iniciar de nuevo el
proyecto para que la modificación tenga efecto. Visual Basic se lo indicará cuando sea necesario.
Cuando se produce el error, Visual Basic permite pasar al modo Interrumpir. Podrá utilizar
la ventana Inspección y la de código para corregir el error. Si después, al pulsar el botón
Continuar, Visual Basic puede continuar, solucionando el problema, lo hará. En otro caso le
indicará que debe iniciar de nuevo el proyecto.
E
1 último punto que vamos a tratar referente a la depuración de una, aplicación es la
posibilidad de observar las llamadas a los procedimientos que se realizan en la
ejecución de la misma.
Para mostrar las llamadas a procedimientos activos, utilice la opción Pila de llamadas del
menú Ver.
PAG. 139
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 140
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Finalizar la Aplicación
19.1. INTRODUCCIÓN
U
na vez ha concluido el diseño de la aplicación y depurados los errores que ha podido
detectar, es el momento de realizar unos cuantos pasos necesarios para finalizar la
aplicación.
Estos temas serán tratados en esta última lección del curso. Esperamos que este curso haya
servido como una buena introducción a la programación en Visual Basic y que le permita
crear aplicaciones Windows de cierta complejidad, de una forma organizada.
Estas opciones, aunque interesantes mientras está diseñando su proyecto, pueden impedir
encontrar todos los errores que se hayan producido en su aplicación ya que no se ha
compilado
por completo.
Esta circunstancia puede producir que existan errores sin detectar, al no ejecutar todo
el código de la aplicación.
Si esta casilla está activada, la casilla Compilar en segundo plano sirve para que la
compilación del proyecto continúe en tiempo de ejecución cuando la aplicación esté
esperando algún evento.
PAG. 141
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Existe una opción en el menú Ejecutar que permite esta circunstancia. En lugar de
elegir Iniciar, elija Iniciar con compilación completa y el proyecto será completamente
compilado antes de que se inicie, independientemente del valor que tengan las opciones
anteriormente mencionadas.
Toda aplicación Windows será ejecutada al hacer doble clic en un determinado archivo
ejecutable o a través de un acceso directo a dicho archivo.
Al crear el archivo ejecutable, Visual Basic compila completamente el proyecto, por lo que
si no lo había hecho antes, es posible que encuentre nuevos errores de compilación.
Será necesario especificar el nombre que desea dar al archivo ejecutable de la aplicación y
la ubicación de éste. Además, a través del botón Opciones, podrá establecer ciertos valores
descriptivos sobre la versión del archivo ejecutable.
PAG. 142
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
PAG. 143
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Visual Basic incorpora un asistente que le facilite la creación del programa de instalación,
preguntándole en cada uno de los pasos la información que necesite.
Este componente de l paquete Visual Basic aparecerá en el grupo d programas que se crea
al instalar Visual Basic. Si utiliza el menú Inicio de Windows, lo podrá encontrar en el grupo
Programa – Microsoft Visual Basic 6.0 –Herramientas de Microsoft Visual Basic 60.
PAG. 144
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
En el siguiente paso del asistente se le muestra los archivos que serán incluido en el
paquete de instalación. Podrá agregar otros archivos necesarios, como archivos de imagen, base de
datos, etc., Pulsando el botón Agregar.
PAG. 145
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Si el medio de instalación es, por ejemplo, CD.ROM, entonces le interesa guardar los
archivos en un Único archivo .CAB.
PAG. 146
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Como ha podido observar, existen un gran número de archivos que usted no ha creado en
su proyecto y que, sin embargo, es “necesario” distribuir para que la aplicación funcione
correctamente en cualquier equipo que ejecute Windows.
• Crear un programa de instalación de nombre SETUP .EXE que utilizan los usuarios
finales para instalar la aplicación en su equipo. Este programa realizará las preguntas
necesarias al usuario para instalar en el directorio donde desee hacerlo.
PAG. 147
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
• Informa del número de discos si éste es el medio de distribución y del espacio libre
que necesitarán tener el usuario en su disco duro para la instalación.
PAG. 148
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
PAG. 149
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
E1 control de datos ADO es la más moderna tecnología de Microsoft para trabajar con
información almacenada en bases de datos. ADO utiliza la última tecnología de
acceso a datos denominada OLE DB, que ha sido diseñada para proporcionar acceso a un amplio
rango de orígenes de datos, tanto locales como remotos, disponibles en su ordenador.
En esta lección aprenderemos su uso y el del control DataGrid 6.0 (OLE DB) con el que
podremos mostrar y manipular de forma directa la información de una base de datos.
E 1 control Microsoft ADO Data Control 6.0 es un control ActiveX que tendrá que ser
añadido a la caja de herramientas con la opción Componentes del menú Proyecto.
Con el control ADO puede crear de una manera rápida conexiones entre los controles
de enlace de datos ( los que tienen la propiedad DataSource) y proveedores de datos
(cualquier origen de datos escrito para OLE DB).
Con el control Data sólo teníamos que asignar a la propiedad DatabaseName el nombre
de una ruta de una base de datos válida contenida en su sistema, para vincular el formulario con la
base de datos.
En ADO tendrá que realizar un paso preliminar, establecer una conexión con un origen de
datos.
PAG. 150
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Si usa un DSN, haga clic en Usar nombre de origen de datos ODBC y seleccione un
DSN del cuadro o haga clic en Nuevo para crear una n
Si lo que quiere es usar una cadena de conexión, seleccione Usar cadena de conexión
y haga clic en Generar. Utilice el cuadro de diálogo Propiedades de vinculo de datos para crear
una cadena de conexión.
PAG. 151
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Por otra parte puede utilizar los mismos métodos vistos para el control Data para añadir y
eliminar registros así como aquellos que nos permiten movernos por el conjunto de registros. La
modificación de registros se realiza directamente ya que el control ADO no posee el método Edit.
La siguiente tabla resume los eventos más importante de del control de datos ADO.
Para obtener más información, vea el tema de referencia de cada evento en particular, en el sistema
de ayuda.
WillChangeRecordset
Al hacer doble clic sobre el archivo creado aparece el siguiente cuadro de propiedades.
Finalmente pulse el botón Probar conexión para comprobar que la conexión con la base de
datos es satisfactoria.
PAG. 152
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
En la ficha Conexión tiene que indicar el origen de datos que utilice en su aplicación,
en este caso la base de datos Videoclub.
E
muestra una serie de filas y, columnas que representan registros y campos de
un objeto
Recordset. Puede usar DataGrid para crear una aplicación que permita al usuario leer y escribir
en la mayoría de las bases de datos. Puede configurar DataGrid rápidamente en tiempo de diseño
sin ningún código.
PAG. 153
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 154
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
Práctica 1
Práctica 2
Práctica 3
Práctica 4
Práctica 5
Práctica 6
Práctica 7
Práctica 8
Práctica 9
Práctica 10
PAG. 155
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Práctica 11
Práctica 12
Práctica 13
Práctica 14
Práctica 15
Práctica 16
Práctica 17
Práctica 18
Práctica 19
Práctica 20
EJERCICIO FINAL.
PAG. 156
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
1 PRACTICA
INTRODUCCIÓN A VISUAL BASIC
Con el menú Inicio de Windows abra la aplicación WordPad que está en el grupo
Programas-Accesorios.
– Observe como la aplicación se abre en una ventana independiente que puede cambiar de
tamaño, maximizarse o minimizarse, utilizando los botones de la ventana.
– Se abre una nueva ventana. Este tipo de ventanas se llaman cuadro de diálogo porque
se establece una especie de diálogo entre el usuario y la aplicación. Fíjese como este
caso usted puede indicar el formato de fecha.
– Pulse el botón Aceptar. Vuelva a mostrar el mismo cuadro de diálogo. Ahora pulse el
botón Cancelar. Dese cuenta en la diferencia que representa cerrar un cuadro de
diálogo con un botón Aceptar y con otro Cancelar.
– Elija la opción Archivo-Abrir. Pulse la tecla [Esc] El cuadro de diálogo se cierra como si
hubiera pulsado el botón Cancelar.
– Pulse el botón abrir Se vuelve abrir el mismo cuadro de diálogo. Las barras de
herramientas permiten un acceso más rapido a ciertos comandos de menú.
PAG. 157
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 158
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
2 PRÁCTICA
EL ENTORNO DE DESARROLLO
• Inicie Visual Basic a través del menú Inicio de Windows y cree y proyecto exe
estándar. Observe como presenta una ventana que ocupa toda la pantalla y un conjunto de
ventanas ancladas a sus lados. Detrás está situado el escritorio de Windows.
• Cierre la ventana posición del formulario y que Visual Basic pregunte si se desea guardar
el proyecto antes de que se inicie.
• Guarde el proyecto que aparece por omisión al cargar Visual Basic. Cree una carpeta para
este proyecto de nombre Práctica2 de VB. El nombre del proyecto será Práctica2.vbp.
Acepte el nombre que le sugiere Visual Basic para el formularlo.
PAG. 159
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 160
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
3 PRÁCTICA
PROGRAMACIÓN EN VISUAL BASIC
Usted realizará, en las prácticas, algunas tareas que ha visto en el curso aunque no
completamente y otras total mente nuevas.
• Inicie Visual Basic, lo que hará que aparezca un nuevo proyecto en pantalla con un único
formulario.
• Guarde el nuevo proyecto en una carpeta de nombre Videoclub. El nombre del formulario
será Principal.frm y el nombre del proyecto Videoclub.vbp.
PAG. 161
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 162
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
4 PRÁCTICA
TRABAJAR CON MENÚS
– Realice las acciones necesarias para que el único formulario que existe en el proyecto,
tenga el siguiente menú:
Introducir mnuIntroducir
Socio Ctrl+S mnuritroducirSocio
Película Ctrl+P ntroducirPel ícula
Préstamos mnuPréstamos
Prestar película... Ctrl+Z mnuPréstamosPrestarpelícula
Devolver película Ctrl+Y mnuPréstaniosDevolverpelícula
Informes mnuInformes
Prestamos fuera de tiempo
mnuInformesPréstamosfueratiempo
Búsquedas mnuInformesBúsquedas
Buscar película... mnuInfomesBúsquedasBuscarpelícula
Buscar socio... mnuInfomesBúsqtiedasBuscarsocio
Ayuda mnuAyuda
Contenido F 1 mnuAyudaContenido
--------------------- mnuAyudaSep 1
Acerca de mnuAyuda.Acercade
• Guarde el proyecto.
PAG. 163
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 164
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
5 PRÁCTICA
CUADROS DE DIÁLOGO
En esta práctica trabajará con el control Diálogo común para mostrar cuadros de diálogo
estándar de Windows.
• Abra el proyecto VÍdeoclub.vbp. Deberá estar tal como lo dejó en la anterior práctica.
Muestre en pantalla el único formulario que contiene.
• Elija la opción Copia de seguridad... del menú Archivo del formulario. Aparecerá el
procedimiento de evento Click de dicho elemento de menú.
• Inicie el proyecto sin guardar los cambios. Elija Archivo - Copia de seguridad y
compruebe que aparece el cuadro de diálogo Imprimir.
La lista de tipos de archivo permita ver o bien las bases de datos (*.mdb) o bien los
archivos de texto (*.txt) o bien todos los archivos (*.*). Recuerde utilizar el
carácter en la propiedad Filter. Se muestre el cuadro de diálogo Guardar como.
• Elija la opción Copia de seguridad... del menú Archivo. Compruebe que el cuadro de
diálogo presenta las características requeridas. Despliegue la lista de tipos de archivo y vea
que existen las tres posibilidades indicadas.
PAG. 165
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 166
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
6 PRÁCTICA
CONTROLES BÁSICOS
En esta práctica debe crear un formulario nuevo y dibujar los distintos controles para que
tenga el aspecto de la figura.
• El formulario debe presentar las características de un cuadro de diálogo: sin icono yno
redimensionable.
• Ajuste el tamaño y la posición del formulario a la que usted desee para que el
formulario no se vea descompensado.
• El cuadro de texto txtDir debe permitir introducir más de una línea de texto así como
presenta una barra de desplazamiento vertical.
• El botón Cerrar debe responder tanto a pulsar en él como a pulsar la tecla [Esc]. Al
hacerlo, se descargará de memoria el formulario.
PAG. 167
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
• Conecte este formulario con la opción Introducir- Socio del menú del formulario
frmPrincipal creado en una practica anterior.
• Inicie el proyecto guardando los cambios. El nombre del archivo del formularlo será
Detalles Socio.frm.
• Compruebe que al elegir la opción mencionada del menú aparece el nuevo cuadro de
diálogo y el aspecto de los controles dibujados.
• Utilice las teclas de acceso rápido de las etiquetas para comprobar que no reciben el
foco sino que lo hace el cuadro de texto que tiene asociadas.
PAG. 168
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
7 PRÁCTICA
CONTROLES BÁSICOS II
• Inicie Visual Basic con lo que se creará un nuevo proyecto con un único formulario.
• Realice los pasos necesarios para conseguir que el formulario presente un aspecto similar
al de la figura. Se incluye el nombre de cada control, que deberá respetar. El nombre
del formulario es frmCompra.
PAG. 169
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
- Cuando se hace clic en el botón Vaciar se eliminan todos los elementos de la lista
IstCompra; se actualiza la etiqueta IblCuenta y se desactivan tanto el botón cmdDerecha como
cmdIzquierda.
• Guarde el proyecto con el nombre Práctica7 en una nueva carpeta de nombre Práctica7
de VB.
PAG. 170
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
8 PRÁCTICA
FUNDAMENTOS DE PROGRAMACIÓN
operando2 operando l
es decir, primero el segundo operando introducido, después un espacio en blanco y finalmente el
primer operando introducido.
• Debe tener en cuenta que será obligado declarar las variables que necesite antes de su uso
y de que cada variable utilizada debe tener su correspondiente tipo de datos.
PAG. 171
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 172
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
9
PRÁCTICA
FUNDAMENTOS DE PROGRAMACIÓN II
Esta práctica tiene dos partes: en la primera trabajará con estructuras de decisión y en
la segunda con estructuras de repetición. Recuerde que puede haber más de una solución válida.
Estructuras de decisión
• Cree un proyecto nuevo de Visual Basic. El único formulario que contiene debe tener
un aspecto similar al de la figura.
PAG. 173
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
• El cuadro de texto donde se introduce el password solo debe mostrar el carácter * por cada
carácter que introduzca el usuario. Para ello utilice su propiedad PasswordChan.
• Guarde el proyecto en una carpeta nueva de nombre Práctica 9 de VB. El nombre del
proyecto será Práctica9.vbp.
• Ejecute el proyecto y compruebe que funciona bien para todos los casos.
Estructuras de repetición
En este caso no es necesario estar en Visual Basic ya que lo único que necesita es una hoja
de papel y un bolígrafo.
PAG. 174
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
10 PRÁCTICA
FUNDAMENTOS DE PROGRAMACIÓN III
Además utilizará dos funciones que incorpora el lenguaje Visual Basic y que puede utilizar
en sus programas IsDate y WeekDay. La primera permite comprobar si el argumento que se
le
pasa es o no una fecha válida. La segunda nos devuelve un número que indica el día de la semana
correspondiente a una determinada fecha, que se le pasa como argumento.
• Cree un proyecto nuevo y realice los pasos necesarios para que su único formulario tenga
un aspecto similar al de la figura.
• Deberá crear un procedimiento que dada una fecha devuelva una cadena de texto con
el día de la semana correspondiente a dicha flecha ( " Lunes" "Martes". Etc.).
PAG. 175
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Fíjese como este procedimiento deberá transformar el valor numérico que devuelve la función
WeekDay en su correspondiente cadena de texto. Por ejemplo si WeekDa.y, da como resultado 1,
nuestro procedimiento debería devolver la cadena "Lunes" (el primer día de la semana).
PAG. 176
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
11 PRÁCTICA
EFECTOS GRÁFICOS
Esta práctica se divide en dos partes: en la primera dibujaras un control Shape y le dará
algunas propiedades; en la segunda trabajará con las características de arrastrar y colocar (drag &
drop) con el ratón.
• Controles de dibujo
• Inserte un nuevo formulario y realice los pasos necesarios para que su aspecto sea similar
al de la siguiente figura.
• El rectángulo dibujado es un control Shape cuya contorno tiene cierto grosor y es de color
azul.
• El dibujo está insertado en control Image cuya propiedad Picture tiene asignado el
archivo situado en \Common\Graphics\icons\misc\Eye.ico, ya utilizado para la propiedad
I con del formulario principal.
• Este formulario debe mostrarse cuando el usuario seleccione la opción Ayuda -Acerca
de... del formulario principal del proyecto.
PAG. 177
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
• Cree un nuevo proyecto. Realice los pasos necesarios para que su único formulario
muestre un aspecto similar al de la figura.
• Los controles Image imgLibros e imgFeliz pueden arrastrados sin tener que
programar para ello. Además tienen un icono especial cuando son arrastrados. Elija entre
los existentes en las subcarpetas de \icons. El control imgBasura adapta la imagen que
muestra al tamaño del mismo.
PAG. 178
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
12 PRÁCTICA
EL ADMINISTRADOR VISUAL DE DATOS
En esta practica creará la base de datos que se utiliza en el proyecto Videoclub.vbp. Parte
de lo que tiene que hacer ya lo ha podido ver en el curso en pantalla. Antes de iniciar la
práctica léala detenidamente en su totalidad.
• Cree una base de datos nueva (MDB versión 7.0 de Access) con la opción Nuevo... del
menú Archivo del Administrador de datos. Guarde el archivo en la carpeta Videoclub
utilizada en las prácticas. Dele el nombre Videoclub.mdb a la nueva base de datos.
• Cree las cuatro tablas que conforman la base de datos. La estructura de cada una la puede
encontrar en el manual del curso al final de la lección El Administrador visual de datos.
1. Cree la tabla.
2.Introduzca cada de los campos el mismo nombre, tipo de datos y
tamaño que se indica en el manual, si es necesario.
3.Cree el índice de clave principal, el resto de índices será necesario. Recuerde
indicar las propiedades Requerido y único.
• Salga del Administrador de datos y cierre Visual Basic hasta la próxima práctica.
PAG. 179
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 180
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
13 PRÁCTICA
ACCESO A BASE DE DATOS
• Dibuje un control Data en la parte inferior del formularlo, a la izquierda del botón Cerrar.
Este control debe cumplir las siguientes características.
PAG. 181
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Nif: 00.000.003-C
Nombre: Ángel
Apellidos: Bolos Rodríguez
Dirección: Paseo de la Concha, 48. Madrid
Teléfono: (91) 333 33 33
Fecha introducción: 03/03/93
Nif: 00.000.004-D
Nombre: Juan
Apellidos: Infante Ros
Dirección: C/ República Argentina, 128. Valencia.
Teléfono: (96) 444 44 44
Fecha introducción: 04/04/94
Nif: 00.000.005-E
Nombre: Yolanda
Apellidos: Campos Domínguez
Dirección: Avenida del Arena, 3. Barcelona.
Teléfono- (93) 555 55 55
Fecha introducción: 05/05/95
Nif: 00.000.006-F
Nombre: Víctor
Apellidos: Lozano Rincón
Dirección: Avenida de la Plata, 125. Valencia.
Teléfono: (96) 666 66 66
Fecha introducción: 06/06/96
PAG. 182
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
14 PRÁCTICA
PROGRAMAR CON LA BASE DE DATOS
• Inicie Visual Basic y abra el proyecto Videoclub.vbp situado en la carpeta Videoclub, con
el que ha estado trabajando en prácticas anteriores.
• Cree un nuevo formulario y efectúe las acciones necesarias para que tenga un aspecto
similar al de la figura. El nombre del formulario será frmIntPelículas.
• El cuadro de texto txtRegistro no debe estar activado ya que está enlazado a un campo
contador por lo que es el propio sistema el que crea los valores de dicho campo. Al
cargarse el formularlo se añaden a la lista de cboPúblico las opciones Todos los públicos,
Tolerada menores y Mayores 18 años.
PAG. 183
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
• Escriba el código asociado al evento Click del botón Nueva, de forma que cuando se pulse
dicho botón se cree un registro nuevo y se pueda introducir la nueva información en
los controles enlazados.
• Una vez se ha pulsado en el botón Nueva, éste cambia su texto indicando Añadir. Cuando
se pulsa en Añadir es cuando realmente el nuevo registro es excedido a la base de datos.
• Conecte el nuevo formulario con el menú del formulario frmPrincipal de forma que se
muestre cuando se elija la opción Insertar - Película.
• Guarde el proyecto dando el nombre Introducir Películas. frm al archivo del nuevo
formulario. Inicie el proyecto y utilice lee la opción Insertar -Película para introducir las
as siguientes películas:
Registro película: 2
Título: Blade Runner
Director: R. Scott
Productor: M. Deeley
Público: Mayores 18 años
Género: Ciencia ficción
Año: 1982
Registro película: 3
Título: El último emperador
Director: B. Bertolucci
Productor: B. Bertolucci
Público: Todos los públicos
Género: Histórica
Año: 1987
Registro película: 4
Título: Tierra
Director: J. Medem
Productor: J. Medem
Público: Mayores 18 años
Género: Fantástica
Año: 1996
PAG. 184
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
15 PRÁCTICA
OPCIONES AVANZADAS DE BASES DE DATOS
En esta práctica trabajara con el lenguaje SQL para realizar una consulta cuyo resultado se
mostrará en un control FlexGrid.
• Imagínese esta situación: un socio desea saber si en el videoclub existe una determinada
película pero desgraciadamente solo conoce parte del título de la misma. En esta práctica
resolverá este problema.
• Cree un nuevo formulario y real ice las acciones necesarias para que tenga el siguiente
aspecto:
PAG. 185
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Para ello puede utilizar una consulta SQL en la que el criterio de búsqueda no sea la igualdad
sino que se utilice la función LlKE de SQL. Dicha función permite que el criterio no sea tan
restrictivo como la igualdad y además puede utilizar los caracteres comodín * y ?.
Así, por ejemplo, en lugar de indicar un criterio como Título = txtTItulo.Text podría utilizar
otro menos restrictivo como Titulo LIKE *txt Título.Text* con lo que consigue que el
resultado de la búsqueda devuelva aquel las películas en las que las palabras introducidas en
txtTítulo aparezcan en su campo Título, sin importarle en qué lugar.
• Conecte el nuevo formulario con la opción Informes - Búsquedas - Buscar película ...
del menú del formulario frmPrincipal.
• Guarde el proyecto dando el nombre Buscar película.frm al archivo del nuevo formulario
y ejecútelo.
• Compruebe que funciona bien la nueva opción. Así, por siempre, si busca alguna película
que contenga en su título la palabra. El, debería encontrar toda la película El padrino
como El último emperador.
PAG. 186
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
16 PRÁCTICA
TRABAJAR CON ARCHIVOS
En esta práctica utilizará la función FileCopy para realizar la copia de seguridad del archivo
de base de datos Videoclub.mdb.
• Elija la opción Copia de seguridad del menú Archivo de este formulario. Deberá tener el
siguiente código, escrito en una práctica anterior:
Recuerde que utilizó un control Diálogo común para que se muestre el cuadro Guardar como
al elegir esta opción del menú.
• Escriba el código necesario para realizar la copia física del archivo Videoclub. mdb.
Para ello, utilice la función FileCopy fuente, destino donde en este caso, fuente será
"x:\Videoclub\Videoclub.mdb" y destino será el nombre de archivo introducido por el
usuario en el cuadro de diálogo Guardar como (al que podrá acceder a través de la propiedad
filename del control Diálogo común). Y donde x es la unidad de disco en la que esté
guardado el archivo Videoclub.mdb.
• Escriba un manejador de error para el caso de que el error sea el número 61. En este caso
la aplicación debe mostrar un mensaje indicando que el disco de destino está lleno.
PAG. 187
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 188
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
17 PRÁCTICA
UTILIZACIÓN DE OLE
Realice las acciones necesarias para que el único formulario del proyecto presente un
aspecto similar al de la figura.
• El formulario presenta un menú desplegable con una única opción Archivo - Salir.
• Guarde el proyecto como Práctica 17.vbp en una carpeta nueva de nombre Práctica
17 de VB. Ejecútelo y compruebe la edición visual del objeto.
PAG. 189
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
• En ejecución, al editar el objeto, cambie la hoja de datos del gráfico y compruebe como los
nuevos datos se muestran en el gráfico.
• Utilice la revisión ortográfica que proporciona Excel. Podrá utilizar cualquier otra función
que permita realizar el menú de Excel.
PAG. 190
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
18 PRÁCTICA
APLICACIONES MDI
En esta práctica trabajará con formularios MDI y secundarios. Además escribirá código
para crear un menú Ventana y para seguir la secuencia de eventos.
- Cuando no exista ningún formulario abierto sólo existirá la opción Archivo del menú con los
elementos Nuevo y Salir.
- Cuando haya algún formulario secundario abierto, el menú se completará con la opción
Ventana y los elementos anteriormente mencionados de dicho menú.
- Cuando se produzca el evento QueryUnload del formulario MDI, debe aparecer un mensaje
indicando: Evento QueryUnload del formulario MDI.
- Cuando se elija la opción Salir del menú Archivo de la aplicación, no se mostrará ningún
mensaje, terminando inmediatamente la aplicación.
- Cuando se inicie la aplicación se mostrará solo el formulario MDI. Deberá hacer uso de
la opción Nuevo para que aparezca algún formulario secundario.
PAG. 191
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 192
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
19 PRÁCTICA
DEPURAR LA APLICACIÓN
NOTA: Esta lección carece de práctica pudiendo aplicar las técnicas mostradas siempre
que necesite depurar su aplicación..
PAG. 193
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 194
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
20 PRÁCTICA
FINALIZAR LA APLICACIÓN
En esta práctica realizará los pasos necesarios para general el paquete de instalación de la
aplicación VideoClub.
• Acepte la ventana.
PAG. 195
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 196
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
PRÁCTICA FINAL
Esta es la práctica final del curso, en la que tendrá que demostrar conocimientos sobre
distintos temas tratadas en el mismo.
Como la creación de una aplicación completa sería una práctica demasiado extensa, va a trabajar
de nuevo con el proyecto Videoclub.vbp.
• Realice los pasos necesarios para que cuando se está introduciendo una película y se pulse
en el botón Actores... aparezca una nueva ventana, de aspecto similar a la de la figura. El
nombre del nuevo formulario será frmActores.
• Fíjese que si es una película en la que aun no se ha añadido ningún actor, esta lista
estará vacía. Para conseguir la lista de actores utilice una consulta SQL que deberá estar
asociada a un control Data dibujado en este formulario.
PAG. 197
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
• Para crear la lista de actores debe moverse por el recordset creado y añadir cada uno de sus
registros a la lista. Consulte la propiedad EOF del recordset para saber cuándo no existen
más registros.
• No debe permitir que se modifique el valor del cuadro de texto txtRegPelícula. Además,
en este formulario se deberá permitir que el usuario introduzca el nombre del actor en
el cuadro de texto txtNomActor.
• Cuando esto suceda, podrá agregar el nuevo actor a la lista y a la tabla ACTORES.
Esta circunstancia se debe poder hacer de dos formas: pulsando en el botón
Agregar o arrastrando con el ratón el nombre del actor hasta la lista y soltándolo en
ella. Fíjese que tanto en un caso como en otro el proceso tiene que ser el mismo:
añadir tanto a la lista como a la tabla ACTORES. Esta última tarea deberá realizarse a
través de otro control Data dibujado en el mismo formulario.
• Si el usuario decide arrastrar y soltar el nombre del nuevo actor en la lista también deberá
comprobar esta circunstancia antes de intentar agregar el nuevo nombre de actor.
• Una vez se ha añadido un nuevo actor, se limpiará el contenido del cuadro de texto y se le
dará el foco para que se pueda introducir más actores.
PAG. 198
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
PRÁCTICAS COMPLEMENTARIAS
PAG. 199
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 200
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
1 PRACTICA
PRÁCTICAS COMPLEMENTARIAS
– Con el menú Inicio de Windows abra la aplicación Paint, que está en el grupo Programas-
Accesorios.
– Observe cómo la aplicación se abre en una ventana independiente que puede cambiar
de tamaño, maximizarse minimizarse, utilizando los botones de la ventana.
– Se abre una nueva ventana. Este tipo de ventanas se llaman cuadros de diálogo porque
se establece una especie de diálogo entre el usuario y la aplicación. Fíjese corno en este
caso usted puede indicar la ubicación y el nombre del archivo.
– Elija la opción Archivo - Abrir. Pulse la tecla [Ecs]. El cuadro de diálogo se cierra como
si hubiera pulsado el botón Cancelar.
– Cancele el cuadro y salga de Paint con la opción Salir del menú Archivo. Responda
que no al cuadro de mensajes que aparece. En el curso aprenderá muchas de las
técnicas necesarias crear aplicaciones similares a ésta.
PAG. 201
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 202
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
2 PRACTICA
PRÁCTICAS COMPLEMENTARIAS
– Inicie Visual Basic a través del menú Inicio de Windows y cree un proyecto exe estándar.
Observe cómo presenta una ventana que ocupa toda la pantalla y un conjunto de ventanas
ancladas a sus lados.
– Vaya a la ficha Avanzado y active la casilla Entorno de desarrollo SDI, acepte, lea el
mensaje que aparece.
– Guarde el proyecto en una carpeta a la que llamaremos Pracom2, salga de Visual Basic
y Vuelva a entrar para que los cambios en el entorno de desarrollo surtan efecto.
– Sitúelas un poco a la derecha para que no tapen el formulario. Inicie proyecto y fíjese en l
posición del formulario. Posteriormente pulse el botón de terminar de la barra de
Herramientas.
– Vuelva a iniciar el proyecto y, fíjese el la posición del formulario. Ahora está centrado en
la pantalla. Por último intente moverlo ¿No puede, verdad? El valor de la propiedad
Moveable indica si es posible mover el formulario (true) o
PAG. 203
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 204
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
3 PRACTICA
PRÁCTICAS COMPLEMENTARIAS
PAG. 205
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 206
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
4 PRACTICA
PRÁCTICAS COMPLEMENTARIAS
– Vamos a practicar la creación de menús. Para ello nada mejor que fijarnos en una
aplicación de Windows.
– Abra el Bloc de Notas de Windows desde el menú de Inicio. Muestre sus menús y realice
los pasos necesarios para que en el nuevo formulario aparezcan los mismos, en la
misma disposición y con las mismas opciones, que en el Bloc de Notas.
– Una vez terminado el menú, haga clic en la opción del menú creado, Archivo-Salir, e
introduzca el código necesario para que finalice la aplicación al pulsar en esta opción.
– Inicie el proyecto.
PAG. 207
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 208
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
5 PRACTICA
PRÁCTICAS COMPLEMENTARIAS
En esta práctica trabajará con el control Diálogo común para mostrar cuadros de
diálogo estándar de Windows.
– Elija la opción Imprimir del menú Archivo del formulario. Aparecerá el procedimiento de
evento Click de dicho elemento de menú.
– Inicie el proyecto sin guardar los cambios. Elija Archivo- Imprimir y compruebe que
aparece el cuadro de diálogo Imprimir.
- La lista de tipo de archivo permita ver o bien los archivos de texto (*.txt) o bien todos
los archivos(*.*). Recuerde utilizar el carácter en la propiedad Filter. Se muestre el cuadro de
diálogo Abrir.
PAG. 209
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 210
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
6 PRACTICA
PRÁCTICAS COMPLEMENTARIAS
En esta práctica debe crear una nueva aplicación. En el formulario nuevo tiene que dibujar
los distintos controles para que tenga el aspecto de la figura.
– El botón Cerrar debe responder tanto a pulsar en él como a pulsar la tecla [Esc]. Al
hacerlo, se descargará de memoria el formulario.
– Inicie el proyecto guardando los cambios. El nombre del archivo del formulario será
Calculadora.frm.
PAG. 211
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
PAG. 212
www.detodoprogramacion.com
Microsoft Visual Basic 6.0
7 PRACTICA
PRÁCTICAS COMPLEMENTARIAS
– La función Left (cadena, tamaño) Devuelve un tipo Variant (String) que contiene un
número especificado de caracteres del lado izquierdo de una cadena.
– Por su parte Right (cadena, tamaño) realiza la misma operación, pero a la derecha.
– Por último Mid (cadena, inicio, tamaño) extrae un no de caracteres (tamaño) de una
cadena a partir de una posición (inicio).
PAG. 213
www.detodoprogramacion.com
Visual Basic 6.0 Microsoft
Parar =True
– Inicie el proyecto. El texto debe simular una marquesina moviéndose de forma continua.
Label1=Right(label1,Len(label1)-1) + Left(1abel,1)
– Inicie el proyecto y vea los resultados. Fíjese que la propiedad predeterminada de label1 es
caption, que es la que contiene la cadena.
PAG. 214
www.detodoprogramacion.com