Está en la página 1de 59

Especialidad:

COMPUTACIÓN E
INFORMÁTICA
CICLO I

ASIGNATURA:

Programación
Visual I

Lima - Perú
2

SILABO ACADÉMICO
I. Identificadores del programa
Carrera: Computación e Informática – PROGRAMACIÓN VISUAL I (VISUAL BASIC I)
Ciclo: II Código:
Tipo: Curso Sesión: 5 hrs. Sesiones x
Horas: 100
pedagógicas Semana: 2
Totales : 100 Teoría : 20 Práctica : 80

II. Ubicación del programa


Antecedentes Consecuentes
Algoritmos Programación Visual II (Visual Basic II), Taller
de Programación I
Requisitos: Algoritmos

III. Contenidos

Contenido Actividad Semana

I. Fundamentos de programación Usar el pseudo código para


Orientada a objetos representar la solución de un
1. Algoritmo vs programas problema.
2. Algoritmos y Pseudo código Reconocer los conceptos
3. Conceptos fundamentales fundamentales de programación.
3.1. identificadores Aprender a usar las variables y 1
3.2 Tipos de datos constantes.
3.3 Variables Conocer la forma de ingresar a
3.4 Constantes Visual Basic.
4. Ingreso a Visual Basic.
5. Ejercicios
II. Instrucciones básicas de Emplear las instrucciones básicas
programación. de programación.
1. Instrucciones de Asignación Aprender a manejar las
2. Instrucciones de entrada instrucciones de entrada y salida
3. Instrucciones de salida Entender y manejar los 2
4. Operadores aritméticos operadores aritméticos,
5. Operadores relacionales relacionales, lógicos y de
6. Operadores lógicos concatenación.
7. Operadores de concatenación
8. Ejercicios
III. Introducción a la programación Reconocer y entender el entorno
visual Basic de programación de Visual Basic.
1. Conceptos básicos: Objetivos y Reconocer y usar los controles
Propiedades. Nombres de Básicos de Visual Basic para la
Objetos. Eventos, Métodos. Creación de interfaces graficas de
2. Proyectos y Archivos. usuario.
3. El Entorno de Programación Visual Aplicar los conceptos básicos de 3
Basic. programación para la construcción
4. Formularios y Controles Básicos de programas.
(Label, Textbox, Commanbutton)
5. Propiedades, Eventos y Métodos
Principales de los Controles Básicos
6. Funciones de Entrada y Salida
(Inputbox, Msgbox)

Carrera: Computación e Informática Curso: Visual Basic


3
7. Aplicaciones paso paso

IV. Características del Lenguaje Aplicar los conocimientos sobre el


Visual Basic manejo de la información y de los
1. Tipos de Datos tipos de datos.
2. Nombre de Variables Aprender a usar las variables y las
3. Ámbito de las Variables constantes 4
4. Operadores
5. Formularios y Múltiples Formularios
6. Métodos : Show y Hide
7. Comentarios
8. Aplicaciones paso a paso
V. Primera práctica calificada Medir el nivel alcanzado por el
alumno en las primeras cuatro 5
semanas de clase
VI. Estructuras de Control Aprender y evaluar los procesos
Condicional Condicionales
1. Uso del If…….Then Asociar sentencias condicionales
2. Uso del Select Case Anidadas
3. Uso de los controles OptionButton, Analizar y evaluar los procesos
CheckBox y Frame Selectivos 6
4. Los operadores logicos AND, Realizar aplicaciones que permitan
OR,NOT hacer uso de procesos de
5. Ejemplos alternativas
6. Ejercicios

VII. Funciones Incorporadas Reconocer y usar las funciones del


1. Funciones de Fecha-Ejemplos Visual Basic
2. Funciones de Cadena-Ejemplos Aplicar las funciones de Visual
7
3. Funciones de Conversación de Basic en el proyecto
tipo-Ejemplos
4. Otras funciones
VIII. Estructuras de Bucles o Aprender y ejecutar los procesos,
Repetitivas con Condición / repetir mientras una condición
Contador sea Verdadera/falsa.
1. While – Wend Comprender cuales son las
2. Do Loop ventajas de una estructura con 8
3. Formas While y Until respecto a la otra.
4. For ….. Next Aplicar y ejecutar los procesos
5. For Each … Next repetitivos - for

IX. Manejo de lista Aplicar los controles de lista y/o


1. Uso de loa controles listBox y combo en los procesos repetitivos
ComboBox Emplear el poder multiplicado de
2. Métodos AddtIem, Removeltem y anidar procesos repetitivos
Clear 9
3. La propiedad Multiselect
4. Mostrando múltiples columnas de
ingresos
5. Aplicaciones de Bucles

Carrera: Computación e Informática Curso: Visual Basic


4
X. EXAMEN PARCIAL Medir el nivel de conocimiento
alcanzado por los alumnos al
10
finalizar la primera unidad
formativa
XI. Empleo de Controles Avanzados y Reconocer y usar controles
Personalizados Avanzados de Visual Basic como
1. Controles de manejo de archivos los controles de archivos,
(DriveListBox, DirListBox, FileListBox) temporizador y otros controles
11
2. Control temporizador (Timer)
3. Controles Sstab, ProgessBar,
Shape
4. Control CommonDialog
XII. Formularios Múltiples Aplicar t manejar los diferentes
1. Apertura de controles de forma tipos de ventanas
modal Manejar y usar varios formularios
2. La interfaz de Documentos
Múltiples (MOI)
12
3. Propiedades de los formularios
MDI
4. Referencias a los formularios
ActiveFrom y Me}
5. Colocación de Formularios Hijo
XIII. Diseño de Menús Reconocer y Usar los menús en
1. Editor de Menús una aplicación
2. Añadir códigos a los menús 13
3. Menús Contextuales (Menú Popup)
4. Controles : ToolBar, ImageList
XIV. Funciones y Procedimientos Crear y usar las funciones de
(Módulos) usuario en una aplicación
1. definición y creación
2. Uso de parámetros 14
3. Uso de módulos
4. Uso de los Procedimientos y
Funciones : Privados Calificada
XV. SEGUNDA PRACTICA CALIFICADA Medir el nivel alcanzado por los
alumnos durante las sesiones 11 a 15
14
XVI. Arrays de Variables Usar arreglos de datos
1. Definición. Declaración de Arrays 16
2. Arrays : Estáticos y Dinámicos
XVII. Arrays de Controles Usar arreglos de controles con
1. Definición de un arreglo de datos
controles
2. Uso del For Each … Next
3. Uso del Exit For
17
4. Manejo de propiedades y eventos
en un arreglo de controles
5. Uso de los comandos Load y
Unload para la creación de
arreglos de controles dinámicos
XVIII. Controles Activex Crear y usar Controles Activex en
1. Creación de Interfaces mas aplicaciones 18
complejas con controles Activex o
Componentes

Carrera: Computación e Informática Curso: Visual Basic


5
2. Cambiando apariencia de Control
Activex
3. Aplicación
XIX. EXAMEN FINAL Medir el nivel de conocimiento
alcanzado por el alumno durante 19
toda la segunda unidad formativa
XX. EXAMEN SUSTITUTORIO Medir el nivel de conocimiento
alcanzado por el alumno durante 20
todo el curso.

IV. Criterios de evaluación y acreditación


Institucionales de acreditación:
Matriculado
Mensualidad al día
Asistencia mínima de 70% de las clases programadas.
Entrega oportuna de trabajos.
Certificación con calificación mínima de 13.00 (Trece) y Constancia con calificación de
11.00 (Once)

Evaluación del módulo:


Practicas Calificadas (PC) P.U. = (PC+Part)*0.5 + EP 2
Exámenes: parcial (EP), final (EF) S.U. = (PC+Part)*0.5+Trab+EF 3
Trabajos encargados (TE)

Carrera: Computación e Informática Curso: Visual Basic


6

IT - Expert Secretariado Ejecutivo de Sistemas Contabilidad Computarizada Computación e Informática

Diseño Gráfico

COMPUTACIÓN E INFORMÁTICA

Ensamblaje mantenimiento
y Reparación de PC.

Fast Office

Asistente de Gerencia

PROGRAMACION
VISUAL I
Carrera:
Secretariado Computación e Informática
Ejecutivo Curso: Visual Basic
Computarizado
7

CAPITULO I

Introducción a la Programación Visual Basic

El lenguaje de programación BASIC (Beginner's All purpose Symbolic Instruction Code) nació en el
año 1964 como una herramienta destinado a principiantes, buscando una forma sencilla de realizar
programas. Teniendo en cuenta el año de su nacimiento, este lenguaje cubría casi todas las
necesidades para la ejecución de programas.

Los autores fueron los científicos John G. Kemeny (Budapest, 1926 – USA 1992) y Thomas E. Kurtz
(Illinois 1928) Su trabajo original se llamó True BASIC.

Actualmente se está comercializando la versión 6.0 de este producto. Desde su salida al mercado,
cada versión supera y mejora la anterior. Dados los buenos resultados a nivel profesional de este
producto, y el apoyo prestado por el fabricante para la formación de programadores, Visual-Basic se
ha convertido en la primera herramienta de desarrollo de aplicaciones en entorno Windows.

Características Generales de Visual-Basic

Visual-Basic es una herramienta de diseño de aplicaciones para Windows, en la que estas se


desarrollan en una gran parte a partir del diseño de una interface gráfica. En una aplicación Visual
Basic, el programa está formado por una parte de código puro, y otras partes asociadas a los objetos
que forman la interface gráfica.

La creación de un programa bajo Visual Basic lleva los siguientes pasos:

Análisis . Es el studio de las necesidades que han dado origen a la creación de ese programa.
Es lo que se se llama Análisis de la aplicación. Es la primera fase que debe tener siempre un
programa y es tambien la más olvidada entre los programadores noveles. Una aplicación no
se inicia con el teclado, sino sobre un papel.

Creación de un interface de usuario. Este interface será la principal vía de comunicación


hombre máquina, tanto para salida de datos como para entrada. Será necesario partir de una
o varias ventanas - Formularios - a las que le iremos añadiendo los controles necesarios.

Definición de las propiedades de los controles – Se dará la forma, posición, y todas las
características necesarias a los controles que hayamos colocado en ese formulario. Estas
propiedades determinarán la forma estática de los controles, es decir, como son los controles
y para qué sirven.

Generación del código asociado a los eventos que ocurran a estos controles. A la
respuesta a estos eventos (click, doble click, una tecla pulsada, etc.) le llamamos
Procedimiento, y deberá generarse de acuerdo a las necesidades del programa.

- Generación del código del programa. Un programa puede hacerse solamente con la
programación de los distintos procedimientos que acompañan a cada objeto. Sin embargo, VB
ofrece la posibilidad de establecer un código de programa separado de estos eventos. Este
código puede introducirse en unos bloques llamados Módulos, en otros bloques llamados
Funciones, y otros llamados Procedimientos. Estos Procedimientos no responden a un evento
acaecido a un control o formulario, sino que responden a un evento producido durante la
ejecución del programa.
VARIABLES. DEFINICION Y ENTORNO
Basic, desde siempre, al contrario de otros sistemas de programación, no exigió la definición previa de

Carrera: Computación e Informática Curso: Visual Basic


8
una variable. Una variable, como Vd. seguro que conoce, es un nombre que en el programa le
asignamos a un dato. Ese dato podrá cambiar. Piense por ejemplo, en un programa consistente en la
toma de datos de los alumnos de un centro escolar. Existirán varias variables para poder introducir los
datos de los alumnos. Estas variables pueden tener nombre tales como:

Nombre
Apellido1
Teléfono
Salario

La variable Nombre tomará valores distintos según vayamos introduciendo los datos de los distintos
alumnos. Es posible, que a lo largo de la ejecución del programa, esta variable Nombre valga:

José
Pedro
María
Luis

Decíamos que Basic no exige la definición previa de las variables. Otras herramientas exigen que se
haga así. Por lo tanto es normal encontrar, en otros sistemas de programación, que un programa
comienza de la siguiente forma:

Declare Nombre As String Le dice que Nombre es una sucesión de letras


Declare Apellido1 As String
Declare Apellido2 As String
Declare Dirección As String
Declare Teléfono As String Le dice que Teléfono es una sucesión de letras
Declare Salario As Número Le dice que Salario es un número

Por ejemplo, si Basic encuentra estas instrucciones

Salario=50000000
Nombre ="Pedro"
Teléfono = "1234567"

entiende que Salario, Nombre y Teléfono son variables, que Salario es un número (No hemos metido
su valor entre comillas), y que Nombre y Teléfono son sucesiones de caracteres alfanuméricos (su
valor está entre comillas)

El peligro de no declarar las variables no termina en esa posibilidad de error. Cuando no declaramos el
tipo de variables, Visual Basic supone que la variable es de un tipo que soporta cualquier tipo de
datos : una variable tipo Variant. En ese tipo podrá meter cualquier tipo de variable, pero a costa de
ocupar mucho mas espacio en la memoria que si la hubiese declarado con el tipo correcto para el dato
que va a meter en ella.

Basic ha pensado en ese problema, y se puede solucionar con esta que será la primera instrucción
BASIC que vamos a estudiar:

OPTION EXPLICIT

Obliga a declarar previamente las variables que se vayan a usar. De no haberla declarado antes de
usarla, el programa dará una comunicación de error.

Carrera: Computación e Informática Curso: Visual Basic


9
Esta declaración debe ponerla al comienzo de la sección de declaraciones de cada formulario y módulo
que contenga su aplicación. Pero no se preocupe de ello puesto que VB lo ha hecho por Vd. Basta que
lo programe en las opciones del VB. Haga click en Herramientas | Opciones de la barra de menú
del VB y le aparecerá este cuadro, donde debe marcar las casilla Requerir declaración de
variables. A partir de ahora, será VB quien ponga la sentencia Option Explicit en el lugar correcto.

(Fig. 1.1)

TIPOS DE VARIABLES

Las variables pueden ser de los siguientes tipos: (El número indicado en segundo lugar indica el
número de Bytes que ocupa en memoria.)

Tipo de datos Tamaño Caracter


Integer (Entero) 2 bytes %
Long (Entero Largo) 4 bytes &
Single (Simple) 4 bytes !
Double(Doble) 8 bytes #
Currency (Moneda) 8 bytes @
String (Cadena de caracteres) 1 byte por carácter $
Byte 1 byte
Boolean (Boleano) 2 bytes
Date(Fecha) 8 bytes
Object(Objecto) 4 bytes
Variant 16 bytes + 1 byte por cada carácter

Puede declarar el tipo de la variable mediante un carácter después del nombre de la variable. Esta
técnica, obligatoria en Quick-Basic, está en desuso en VB. No es recomendable definir el tipo de esta
forma, pues existe un serio peligro de error. De cualquier forma, eso es potestativo del programador y
de sus costumbres.

Los caracteres que definen cada tipo de variable son:

Carrera: Computación e Informática Curso: Visual Basic


10

% Integer & Long ! Single

# Double @ Currency $ String

Ejemplos Prácticos de declaración de variables

En Visual Basic, cuando declaramos una variable como String (Cadena de caracteres), no es
necesario declarar su longitud. VB aceptará cualquier número de caracteres. Si desea evitar que se
puedan introducir más de un determinado número de caracteres, debe declarar su número. Por
ejemplo :

Dim Var1 as String Var1 puede tener cualquier número de caracteres

Dim Var2 as String * 15 Var2 puede tener un máximo de 15 caracteres.

En este segundo caso, si se introduce como Var2 una cadena de caracteres con mas de 15 caracteres,
Var2 tomará solamente los 15 primeros. Visual basic no presenta ningún aviso de que esa variable
ha omitido los caracteres que han sobrepasado la cifra de 15. Si desea que el usuario conozca esa
circunstancia, debe introducir el código oportuno para producir el aviso.

Tipos de declaración de variables.

Sentencia DIM Es la forma mas común de declarar una variable como


Privada. Puede emplearse en un Procedimiento, Función, Formulario o
Módulo. La sintaxis es de la siguiente forma:

Dim nombrevariableAs Integer (o el tipo que sea)

Declarando una variable con la sentencia DIM, en un formulario, Función, procedimiento o


módulo, el ámbito de la variable será el explicado anteriormente para una variable declarada como
Privada. Es decir, esa variable no sale del formulario, procedimiento ó módulo donde se declaró. Cada
vez que entremos al formulario, procedimiento o módulo, esa variable tomará el valor cero (si es
numérica) o nulo (si es string).

Sentencia PRIVATE Es la forma de declarar una variable como Privada. Puede


emplearse solamente en la sección de declaraciones de un Formulario
o Módulo. La sintaxis es de la siguiente forma:

Private nombrevariableAs Tipovariable

Declarando una variable mediante la sentencia PRIVATE en un Formulario o Módulo, esa variable
puede usarse en todo ese Formulario o Módulo (En todos sus Procedimientos y Funciones), pero NO
fuera del Formulario o Módulo donde se declaró.

La sentencia Private no puede usarse en un procedimiento o función.

Sentencia PUBLIC Es la forma de declarar una variable como Pública. Puede


emplearse solamente en la sección de declaraciones de un Formulario
o Módulo. La sintaxis es de la siguiente forma:

Public nombrevariable As Tipovariable

Declarando una variable de esta forma en la sección de declaraciones de un Módulo, esa variable
puede usarse en cualquier parte del programa citándola simplemente por su nombre.

Carrera: Computación e Informática Curso: Visual Basic


11
Si se declara de esta forma en la sección de declaraciones de un Formulario, esa variable puede
usarse en toda el programa. Para nombrarla, si estamos en el Formulario donde se declaró basta con
citarla por su nombre. Si no estamos en ese Formulario, habrá que citarla por el nombre del
Formulario, seguido del nombre de la variable, separados por un punto :

NombreFormulario.Nombrevariable

En un Módulo puede usarse también la sentencia Global en vez de Public :

Sentencia GLOBAL Declara una variable que es válida en todo el programa.

La sintaxis es:

Global nombrevariableAs tipovariable

La sentencia Global sólo puede usarse en el apartado de declaraciones de un Módulo. Esta sentencia
se mantiene por compatibilidad con versiones anteriores de VB. No la use.

Sentencia STATIC

Como se dijo anteriormente, una variable declarada en un procedimiento pierde su valor al salir de él.
Lo peor es que una vez que el programa vuelva a entrar en ese procedimiento, la variable estará
puesta a cero. Afortunadamente, esto último tiene solución. Si declarásemos una variable en un
procedimiento o función, como estática, esa variable, aunque no la podremos utilizar fuera de ese
procedimiento o función, cuando volvamos a él conservará el valor que tenía cuando lo abandonamos.
Esta declaración como estática se realiza mediante la instrucción Static

Static nombrevariable As tipovariable

En un Formulario (En su sección de declaraciones)

Como Privada (Solamente se puede usar en ese Formulario)

Dim Variable As Tipovariable ó

Private Variable As Tipovariable

Como Pública (Puede usarse en toda la aplicación)

Public Variable As Tipovariable

En un Módulo

Como Privada (Solamente puede usarse en ese Módulo)

Dim Variable As Tipovariable ó

Private Variable As Tipovariable

Como Pública (Puede usarse en toda la aplicación)

Public Variable As Tipovariable ó

Global Variable As Tipovariable

Carrera: Computación e Informática Curso: Visual Basic


12
Error típico de un programador novel de Visual Basic

Creo que esta costumbre viene del lenguaje C. Pero no vale en VB. Se trata de declarar varias
variables juntas en una misma línea :

Dim Variable1, Variable2, Variable3, Variable4 As String

Esta declaración está MAL hecha. Visual Basic interpretará que Variable1, Variable2 y Variable3 son
del tipo Variant, y solamente Variable4 la supone como tipo String

La forma correcta de hacerlo, si queremos declarar esas variables un una sola línea, es la siguiente :

Dim Variable1 As String, Variable2 As String, Variable3 As String, Variable4 As String.

Operadores en Visual Basic

Operadores Matemáticos
Visual Basic puede operar con números tal como lo haría cualquier persona. Conoce las 4 reglas, y
puede utilizar paréntesis de la misma forma que los escribimos sobre el papel.

Los operadores que utiliza para las operaciones básicas son:

+ Suma
- Resta
* Multiplicación
/ División
\ División sin decimales
Mod Resto de una división
^ Eleva a un exponente

Ejemplos

Resultado = 12 + 15 ----> Resultado = 27


Resultado = 15 - 12 ----> Resultado = 3
Resultado = 15 * 12 ----> Resultado = 180
Resultado = 15 / 12 ----> Resultado = 1.25
Resultado = 15 \ 12 ----> Resultado = 1
Resultado = 15 Mod 12----> resultado = 3
Resultado = 12 ^2 ----> Resultado = 144

resultado = ( ( 4 * 3 ) / 2 ) ^ 2 ----> Resultado = 36

Estos operadores se denominan Operadores aritméticos.

Existen otras operaciones que se pueden realizar con números: comparaciones. Los operadores que
realizan comparaciones se denominan Operadores relacionales. El resultado de las operaciones
realizadas con estos operadores solamente admiten dos resultados: True (Cierto) o False (Falso)
Estos operadores son:

= Igual que
<> No igual que
< Menor que
<= Menor o igual que
> Mayor que
>= Igual o mayor que

Estos operadores se suelen utilizar en estructuras de programa donde se tome una decisión.

Carrera: Computación e Informática Curso: Visual Basic


13

El operador = puede usarse también para comparar cadenas o fechas.

Operadores Lógicos

Operador Devuelve True si Devuelve False si

And A=True y B=True Cualquier otro caso

Or A=True o B=True A=False y B=False

Not A=False A=True

CAPITULO II

Características del Lenguaje Visual Basic

Visual-Basic es una herramienta de diseño de aplicaciones para Windows, en la que estas se


desarrollan en una gran parte a partir del diseño de una interface gráfica. En una aplicación Visual -
Basic, el programa está formado por una parte de código puro, y otras partes asociadas a los objetos
que forman la interface gráfica.
Es por tanto un termino medio entre la programación tradicional, formada por una sucesión lineal de
código estructurado, y la programación orientada a objetos. Combina ambas tendencias. Ya que no
podemos decir que VB pertenezca por completo a uno de esos dos tipos de programación, debemos
inventar una palabra que la defina : PROGRAMACION VISUAL.

Entorno de Trabajo de Visual Basic


Visual Basic es un entorno de desarrollo diseñado para la creación de aplicaciones para los entornos
de trabajo Microsoft Windows 95, 98, NT y 2000.
Este lenguaje auna las posibilidades de un lenguaje de alto nivel con las herramientas de diseño
gráfico, lo cual nos dá acceso a todas las funciones de los sistemas anteriormente citados.
Para entrar a desarrollar en visual basic nos vamos al menu

Inicio- Programas – Microsoft Visual Studio 6 – Microsoft Visual Basic 6

OJO: El ejecutable que abre el Visual Basic 6 se llama VB6.EXE

La primera
pantalla que
nos saldra sera

Carrera: Computación e Informática Curso: Visual Basic


14
la sgte:

Aquí escogemos el tipo de proyecto que queremos realizar que en este caso sera EXE STANDARD ya
que es el ideal para crear aplicaciones

OJO: Los otros tipos de proyecto permite crear cosas distintas como por ejemplo

ActiveX Control Crea un control para poder usarlo en tus aplicaciones e incluso en una página WEB.
DLL ActiveX Crea Librerias dinamicas que se podra utilizar desde cualquier lenguaje que tenga
compatibilidad.
Una vez que hemos escogido el proyecto a desarrollar el sistema nos respondera de la siguiente
manera:

Barra de Menu

Barra de Herramientas
standard

Explorador
de
Proyecto

Diseñador de
Formulario

Ventana de
Propiedades

Cuadro de
Herramientas

Los elementos del entrono de desarrollo de Visual Basic son:

Carrera: Computación e Informática Curso: Visual Basic


15
Barra de herramientas: Permite un acceso rápido a los comando más utilizados
Si en caso no se muestra la barra Nos vamos al Menu Ver-Barra de Herramientas-Estándar

Diseñador de formularios Es la ventana en la que se diseñará la interfaz de la aplicación,


en ella se pueden agregar controles gráficos e imágenes. Cada formulario de una aplicación aparecerá
en su propia ventana.
Para mostrarla debemos hacer doble clic al formulario el cual queremos diseñar

Cuadro de herramientas En el cuadro de herramientas podemos encontrar un conjunto de


herramientas que permiten insertar los objetos o controles en el formulario durante en tiempo de
diseño, los objetos más comunes son botones(command), etiqueta (label), cuadros de
imagen(Picture), imágenes(Image), etc...

Si hacemos doble click con el ratón sobre alguno de ellos se insertará automáticamente en la ventana
del formulario.

Un control PictureBox puede mostrar un gráfico a partir de un mapa de bits, un


icono o un metarchivo, así como un metarchivo mejorado, un archivo JPEG o un
archivo GIF. Recorta el gráfico si el control no es lo bastante grande para mostrar
la imagen completa.
Un control Label es un control gráfico que puede utilizar para mostrar texto que el
usuario no podrá cambiar directamente.

Un control TextBox, también denominado control de campo de edición o control de


edición, muestra información introducida en tiempo de diseño, o introducida por el
usuario en tiempo de ejecución.
Un control Frame permite agrupar un conjunto de controles. También puede
utilizar un control Frame para subdividir un formulario funcionalmente; por
ejemplo, para separar grupos de controles OptionButton.

Utilice un control CommandButton para comenzar, interrumpir o terminar un


proceso. Cuando está activado, un CommandButton aparece presionado y se le
denomina botón de comando.
Un control CheckBox muestra un check cuando está activado; el check desaparece
cuando el control CheckBox se desactiva. Utilice este control para ofrecer al usuario
una opción de tipo Verdadero o Falso o Sí o No. Puede utilizar controles CheckBox
en grupos para mostrar múltiples opciones entre las cuales el usuario puede
seleccionar todas, algunas de ellas o ninguna.
Un control OptionButton muestra una opción que se puede activar o desactivar y
también permite colocar un conjunto de alternativas de las cuales se puede
seleccionar una sola a la vez.
Un control ComboBox combina las características de un control TextBox y un
control ListBox; los usuarios pueden introducir información en la parte del cuadro
de texto o seleccionar un elemento en la parte de cuadro de lista del control.
Un control ListBox muestra una lista de elementos entre los cuales el usuario
puede seleccionar uno o más. Si el número de elementos supera el número que
puede mostrarse, se agregará automáticamente una barra de desplazamiento al
control ListBox.
Las barras de desplazamiento (HscrollBar y VscrollBar) permiten explorar
fácilmente una larga lista de elementos o una gran cantidad de información.
Además, proporcionan una representación análoga de la posición actual. Puede
utilizar una barra de desplazamiento como dispositivo de entrada o como indicador
de velocidad o cantidad; por ejemplo, para controlar el volumen de un juego de PC
o para ver el tiempo transcurrido en un proceso temporizado.
Un control Timer puede ejecutar código a intervalos periódicos de tiempo
produciendo un evento Timer, la ejecución de las tareas se hará en segundo plano
sin alterar para nada la ejecución de la aplicación que esta en primer plano, nos
permite simular multitarea.
Un control DriveListBox permite al usuario seleccionar una unidad de disco válida
en tiempo de ejecución. Utilice este control para mostrar una lista de todas las
unidades válidas del sistema de un usuario. Puede crear cuadros de diálogo que
permitan al usuario abrir un archivo de una lista de un disco en cualquier unidad

Carrera: Computación e Informática Curso: Visual Basic


16
disponible.
Un control DirListBox muestra directorios y rutas de acceso en tiempo de
ejecución. Utilice este control para mostrar una lista jerárquica de directorios.
Puede crear cuadros de diálogo que, por ejemplo, permitan a un usuario abrir un
archivo desde una lista de archivos de todos los directorios disponibles.
El control FileListBox encuentra y muestra los archivos del directorio especificado
por la propiedad Path en tiempo de ejecución. Utilice este control para mostrar una
lista de los archivos seleccionados por tipo. Puede crear cuadros de diálogo en la
aplicación que, por ejemplo, permitan al usuario seleccionar un archivo o un grupo
de archivos.
Shape es un control gráfico que se muestra una figura geométrica como un
rectángulo, un cuadrado, una elipse, un círculo, un rectángulo redondeado o un
cuadrado redondeado.

Line es un control gráfico que se muestra líneas de diferente tipo, como por
ejemplo una línea horizontal, vertical o diagonal.

Utilice el control Image para mostrar una imagen. Un control Image puede
mostrar una imagen desde un mapa de bits, un icono o un metarchivo, así como un
metarchivo mejorado, un archivo JPEG o archivos GIF.
Data es un control para enlace de datos con una tabla de una Base de Datos. El
control Data del formulario primario y sus objetos relacionados, permiten relacionar
o enlazarse con la Base de datos mediante los objetos Database y Recordset.

Ventana de propiedades Los objetos tiene asociados unas propiedades que describen sus
atributos, valores, comportamiento y apariencia del objeto.
Para sacar las propiedades se hace clic derecho y propiedades o se pulsa F4.

Explorador de proyectos Contiene la lista de los archivos que forman parte de la aplicación

Ventana editor de código


En esta ventana es donde se incluye el código de la apliación. Se creará una ventana de código para
cada formulario o módulo de la aplicación.
Para tener acceso a la ventana de edició, la forma más sencilla es hacer doble click sobre el formulario
o sobre el objeto al cual quiera incluir código.

Objetos en Visual Basic


Un objeto en Visual Basic se caracteriza por tres componentes: propiedades, métodos y eventos.

NOTA: Los objetos vienen a ser los controles como TextBox, Label, Etc.

Las propiedades son aquellas características o atributos que permiten establecer la apariencia de un
objeto como el color, tamaño, posición, etc... O el estado del mismo: activo, maximizado, ect...
Existen propiedades que sólo están disponibles en tiempo de diseño y otras que sólo están disponibles
en tiempo de ejecución.
Ejemplo de Propiedades: alignment, autosize, caption, name, etc.

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... Puedes utilizar cualquier método que
forme parte del objeto.
Ejemplo de Metodos: show, hide, etc.

Los eventos son las situaciones que se producen y que nos interesan identificar para establecer
algún tipo de de respuesta por parte del objeto. Así, puedes hacer click 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 hayas programado alguna acción en el correspondiente procedimiento
de evento.
Ejemplo de Eventos: click, dobleclicke ,mousemove, keypress, etc.

Carrera: Computación e Informática Curso: Visual Basic


17
Controles Label, TextBox, CommandButton, Frame y sus
Propiedades

* Label o Etiquetas .- Las etiquetas son controles que nos permiten mostrar texto en los
formularios y que tienen la particularidad de que el usuario no puede modificar solo muestra
información acerca de algo.

El control de etiqueta es:


Algunas propiedades del control etiqueta son:

Propiedad Definición

Alignment Establece la alineación del texto de la etiqueta(derecha, izquierda y centro)


Autosize Si su valor es True, el tamaño de la etiqueta se adapta automáticamente a su
contenido
Caption Texto que se visualiza en la etiqueta
BackStyle Establece si el fondo del label sera opaco o transparente.

* TextBox o Caja de Textos.- Los cuadro de texto son el control estándar de entrada de
datos en Visual Basic. Permiten al usuario de la aplicación introducir información.

El control del cuadro de texto es:

Los cuadros de texto son semejantes a las etiquetas, pero con la diferencia que el usuario puede
modificar su contenido. El texto que se introduce puede ser tanto numérico como alfanumérico
(números y letras).
Cuando se recupera un valor de una caja de texto asi se haya ingresado un numero tomará el valor de
una cadena.

A diferencia de la etiqueta, el tamaño del texto es fijo al no permitir la propiedad autosize.

Algunas propiedades del objeto cuadro de texto son:

Propiedad Definición
Alignment Alineación de la información introducida.
Multiline Permite introducir más de una línea de texto en el cuadro
PasswordChar Estable el caracter que se muestra al realizar una entrada en el
control. Sólo se mostrará dicho carácter(Por defecto esta vacio)
ScrollBars Muestra barras de desplazamiento(Esto solo funciona si la propiedad multiline
esta en True)
Text Texto que se visualiza en el control

* Frame o Marcos.- Se utiliza para agrupar ciertos controles.


La única propiedad interesante de un control marco es la propiedad Caption, que se refiere al texto
que se presenta en la parte superior izquierda del control.
El control marco actúa como contenedor de otros controles. Al mover un marco también se mueve los
controles que contenga, para ello deberemos crear primero el marco y despueés los controles que
queremos que contenga dentro del marco.

* Command o Botones.- El botón de comando (CommandButton), es muy sencillo, por lo


que no tienes que establecer muchas propiedades. Con la propiedad Caption establecemos el texto
que aparecerá en el botón. También se pueden crear teclas de acceso al botón.

El uso principal de los botones de comando es realizar acciones en la aplicación.

 Bloquear controles

Cuando estén situados los controles en el formulario se pueden bloquear para que no puedan moverse
de forma accidental.

Carrera: Computación e Informática Curso: Visual Basic


18
Para esto deberemos hacer clic derecho Bloquear Controles
Para desbloquear se hace lo mismo.

Otras Propiedades

Name .- Quizas la mas importante da el nombre al control.


Backcolor .- Establece el color de fondo del control.
Forecolor .- Establece el color del texto del control.
BorderStyle .- Establece el tipo de borde del control.
Visible .- Establece si el control se verá(True) en tiempo de ejecución o no(False).
Picture .- Establece una imagen de fondo al control.
Nota: Si el control es un commandbutton la propiedad STYLE debera estar en 1.- Graphical para que
se pueda ver la imagen lo mismo es para darle un color de Fondo.
Width, Height .- Establece el ancho y el alto del control.(a mayor numero mas ancho o alto)
Font.-Establece la fuente, tamaño, etc.
Enabled.-Permite o no que se puedan realizar acciones sobre el control(esta en True por defecto si
esta en False no se podra utilizar el control)
TabIndex.-Establece el orden de tabulación fijado para el control(Esta propiedad sirve para casi todos
los controles en VB)
TabStop.-Indica si al utilizar el tabulador se puede desplazar entre los controles del formulario
ToolTipText.-Establece un texto que se mostrar cuando se pase el mouse por el control como si fuera
un comentario.
Top .-Establece la distancia que hay desde el borde superior del formulario hasta donde se encuentra
el control
Left .-Establece la distancia que hay desde el borde izquierdo del formulario hasta donde se encuentra
el control
Icon .- Establece la imagen de un icono (Solo esta disponible para los formularios)
MinButton, MaxButton .- Para ver o no ver los botones de minimizar y maximizar (solo para los
formularios)
Moveable .- Si esta en True el Form se podrá mover ,si esta en false será lo contrario(solo para los
formularios)

Convención para nombrar objetos en Visual Basic

OBJETO OBJETO ESPAÑOL PREFIJO


Form Formulario frm
CheckBox Casilla de verificación chk
ComboBox Cuadro combinado cbo
Data-bound combobox Cuadro combinado enlazado a datosdbc
Command Button Botón de comando cmd
Data Control de datos dat
Directory list box Cuadro lista de directorios dir
Drive List Box Cuadro lista de unidades drv
File List Box Cuadro lista de archivos fil
Frame Marco frm
Grid Rejilla grd
Data-bound grid Rejilla enlazada a datos dbg
Horizontal scrollbar Barra de desplazamiento horizontal hsb
Image Imagen img
Label Etiqueta lbl
Line Linea lin
OLE Container Contenedor OLE ole
PictureBox Cuadro de imagen pic
Shape Forma shp
Text Box Cuadro de texto txt
Timer Temporizador tmr
Vertical scroll bar Barra de desplazamiento vertical vsb

La caja de Mensajes. MessageBox o MsgBox

Carrera: Computación e Informática Curso: Visual Basic


19
Las cajas de mensajes o MessageBox, tienen una función clara, que es la de mostrar una
determinada información, aviso, o pregunta para que el usuario tenga conocimiento de ella y actúe.

Hay 2 formas diferentes de mostrar información:

1 - El aviso es sí, que tiene por objetivo mostrar una información de interés.

2 - El aviso con espera de respuesta, que muestra una información esperando que el usuario
seleccione una de las respuestas posibles para que el programa la trate.

Una caja de mensaje, puede ser por ejemplo, la instrucción MsgBox "Hola". Por defecto, la caja de
mensaje será similar a esta:

Debe darse cuenta de algunas cosas:


En primer lugar el mensaje, "Hola" que se escribe a continuación de la palabra MsgBox, también debe
darse cuenta del botón Aceptar que tiene el Focus de la ventana activa y que sólo hay ese botón, y
por último el título de la ventana.
Podemos modificar estos parámetros para alcanzar nuestros objetivos, por eso, vamos a escribir
ahora este código: MsgBox "Hola", ,"Ejemplo" .

El resultado es:

Como podemos apreciar en el código, la caja de mensaje posee un título Ejemplo y el mensaje, pero
es posible que deseemos escribir un mensaje en varias líneas con salto de párrafo. Nada tan fácil
como este código por ejemplo: MsgBox "Hola" & vbCrLf & "Esto es un ejemplo.", , "Ejemplo".
El resultado es:

Supongo que se habrá percatado de que entre el mensaje y el título de la ventana, hemos escrito dos
comas, esto es porque entre las comas, debe ir un número que representará el icono a mostrar.
Existen cuatro iconos diferentes además de la posibilidad de no mostrar ninguno. Los iconos son:

Estos iconos corresponden a los siguientes mensajes:


Mensaje crítico.
Mensaje de pregunta.
Mensaje exclamativo.
Mensaje de información.

Carrera: Computación e Informática Curso: Visual Basic


20

Para mostrar el icono en cuestión o para que Visual Basic lo entienda, es necesario escribir lo
siguiente:

Mensaje crítico. VbCritical ó 16


Mensaje de pregunta. VbQuestion ó 32
Mensaje exclamativo. VbExcalamqtion ó 48
Mensaje de información. VbInformation ó 64

Note que es lo mismo insertar VbCritical o 16.

Vamos a ver un ejemplo añadiendo un icono al último ejemplo:


MsgBox "Hola" & vbCrLf & "Esto es un ejemplo.", VbQuestion , "Ejemplo"

El resultado es:

Ahora bien, es posible que queramos mostrar algún otro botón que o bien no sea el de Aceptar o que
además del botón de Aceptar haya más botones. Para este propósito, tenemos los siguientes
parámetros:

Aceptar vbOKOnly ó 0
Aceptar y Cancelar vbOKCancel ó 1
Anular, Reintentar, Ignorar vbAbortRetryIgnore ó 2
Sí, No y Cancelar vbYesNoCancel ó 3
Sí y No vbYesNo ó 4
Reintentar y Cancelar vbRetryCancel ó 5
Aplicación modal vbApplicationModal ó 0 (Es la caja de mensaje sin
icono)

La forma de hacer esto es sumar al parámetro del icono que queremos mostrar el valor de los botones
que deseamos que aparezcan.
Así por ejemplo:
MsgBox "Hola" & vbCrLf & "Esto es un ejemplo.", VbQuestion + vbYesNo , "Ejemplo"
El resultado es:

Aún así, es posible que deseemos que el Focus lo adquiera otro un botón determinado. Por ejemplo,
en este caso el Focus lo tiene el botón Sí, pero es posible que deseemos que lo tenga el botón No por
ejemplo. Esto se consigue con los siguientes parámetros:

Primer botón predeterminado vbDefaultButton1 ó 0


Segundo botón predeterminado vbDefaultButton2 ó 256
Tercer botón predeterminado vbDefaultButton3 ó 512

Por ejemplo: MsgBox "Hola" & vbCrLf & "Esto es un ejemplo.", VbQuestion + vbYesNo +
vbDefaultButton2, "Ejemplo"

Carrera: Computación e Informática Curso: Visual Basic


21

El resultado es:

Si no se señala el botón predeterminado, Visual Basic seleccionará el primer botón. En caso de


seleccionar como predeterminado un botón que no existe, (por ejemplo el tercero), Visual Basic
seleccionará el primero.

Ahora bien, si decidimos mostrar un mensaje esperando una respuesta, o queremos saber que botón
ha pulsado el usuario, esto lo podemos conseguir mediante el siguiente código de respuestas:

Aceptar vbOK ó 1
Cancelar vbCancel ó 2
Anular vbAbort ó 3
Reintentar vbRetryó 4
Ignorar vbIgnore ó 5
Sí vbYes ó 6
No vbNo ó 7

Así por ejemplo, el siguiente código:

Dim Resp As Integer


Resp = MsgBox("Hola" & vbCrLf & "Esto es un ejemplo.", VbQuestion + vbYesNo + vbDefaultButton2,
"Ejemplo")

If Resp = 6 Then
MsgBox "Ha pulsado SI"
Else
MsgBox "Ha pulsado NO"
End If

Tiene el resultado siguiente:

Si pulsamos el botón Sí obtendremos una acción, y si pulsamos el otro botón otra acción.

Ahora bien, para elegir o seleccionar un evento o acción, el usuario debe saber combinar los códigos,
sabiendo que un MsgBox posee la siguiente sintaxis principal:

MsgBox Mensaje, Botones, Título de la ventana

Carrera: Computación e Informática Curso: Visual Basic


22
InputBox

El InputBox o caja de entrada es otra de las partes más utilizadas para la interacción del usuario con
la aplicación. Es importante que el usuario interactúe con la aplicación para ser el protagonista de
esta.

El InputBox nos permite sacar una caja donde el usuario pasará un parámetro, valor o dato para que
el programa lo trate y lo ejecute.

El mensaje que quiere que aparezca se realiza de forma casi idéntica al MessageBox. Puede escribirse
varias líneas de texto seguidas por la constante de Visual Basic vbCrLf o salto de línea o párrafo.

La sentencia es:

Val = InputBox (Mensaje, Titulo, ValorPredeterminado)

Val almacenará el texto escrito por el usuario, que puede ser una cantidad, cadena string, … etc.

Por ejemplo:
Dim Val As String

Val = InputBox("Deme su nombre", "Ejemplo")


MsgBox "Su nombre es: " & Val

Tiene como resultado:

(El usuario teclea el nombre - Mundo Visual - y hace click en Aceptar. A continuación se muestra el
MsgBox - 2ª línea del código anterior )

Ahora bien, podemos determinar un texto predeterminado a la caja de entrada, como por ejemplo:

Dim Val As String

Val = InputBox("Deme su nombre", "Ejemplo", "Mundo Visual")


MsgBox "Su nombre es: " & Val

Obtendremos como resultado:

Carrera: Computación e Informática Curso: Visual Basic


23

Es importante determinar que si el usuario elige el botón Cancelar, el programa devolverá una cadena
de caracteres igual a 0, es decir, Val ="".

La caja de entrada puede ser sin embargo más personalizada mediante dos parámetros como son la
posición de la ventana de entrada de datos en la pantalla.

Estos parámetros se ponen a continuación del ValorPredeterminado.

CAPITULO III

Estructuras de control

Sentencias condicionales.

Llamamos sentencias condicionales a aquellas que se realizan si se cumple una determinada


condición. Son las sentencias por las que empieza cualquier texto de Basic, y este no va ser menos.

La sentencia condicional más usada es:

Si se cumple una condición Entonces

Realiza estas instrucciones

Si no se cumple

Realiza estas otras instrucciones

Fin de la sentencia.

Así de fácil es programar en Basic. Lo que ocurre es que esta herramienta habla inglés, y lo descrito
anteriormente toma la forma:

If condición Then
Instrucciones
Else
Otras instrucciones
End If

En este ejemplo, o se cumple una condición y ejecuta unas determinadas instrucciones, o no se


cumple, y ejecuta otras instrucciones distintas. Puede ocurrir que, caso de no cumplirse la condicion
primera, se abra un abanico de dos o tres posibilidades. La sentencia condicional tendría entonces la
forma:

If condición 1 Then
Instrucciones
ElseIf Condición 2

Carrera: Computación e Informática Curso: Visual Basic


24
Otras instrucciones
ElseIf Condición 3
Otro juego de instrucciones
Else
Instrucciones que debe realizar caso de no cumplir las condiciones 1, 2 y 3.
End If

Como decíamos anteriormente, este es el tipo de sentencia condicional mas usada.

Existe otra sentencia condicional muy usada: Select Case

Su nombre casi nos define lo que es: Selecciona, dependiendo del caso, un determinado juego de
instrucciones:

Select Case variable ' variable es una variable que puede tomar los valores (p.e.) de 1 a 4

Case 1
Instrucciones a ejecutar en caso de que variable = 1
Case 2
Instrucciones a ejecutar en caso de que variable = 2
Case 3
Instrucciones a ejecutar en caso de que variable = 3
Case 4
Instrucciones a ejecutar en caso de que variable = 4
Case Else
Instrucciones a ejecutar en caso de que variable sea distinta a los valores
anteriores
End Select

Este procedimiento resulta mucho mas sencillo y rápido que las sentencias If Then Else
vistas anteriormente, cuando el margen de elección es mayor que 2.

Puede agrupar varios valores en una misma línea. Por ejemplo, si tiene 100 valores
posibles, y el tratamiento es igual para varios de ellos, puede agruparlos así:

Select Case Valor


Case Is < 20
Instrucciones
Case Is = 20
Instrucciones
Case Is = 21, 22, 23, 24, 25, 26
Instrucciones
Case Is > 26
Instrucciones
End Select

Cuando lo que queremos es elegir un valor, no ejecutar instrucciones como hacíamos anteriormente,
disponemos de otras dos funciones: Choose y Switch.

Switch toma una serie de parámetros, todos por parejas. El primer término de cada pareja es la
expresión a evaluar. El segundo es el valor que tiene que devolver. En realidad Switch es una función
(las funciones las veremos muy pronto)

A = Switch (B=1, 5, B=2, 7, B=3, 11)

Esta instrucción obtiene un valor para A que dependerá del valor que tome B entre los valores posibles
(1, 2 ó 3)

Carrera: Computación e Informática Curso: Visual Basic


25
La sentencia Choose es casi igual, cambia solamente la forma. La misma intrucción anterior puede
realizarse con Choose de la siguiente forma:

A = Choose ( B, 5, 7, 11 )

En estas sentencias, Switch y Choose, si el valor de B no coincide con ninguno de los valores que
se le habían establecido (1, 2 ó 3 en nuestro caso), la sentencia devuelve el valor Nulo ( Null ). Esto
puede producir algún error si no se contempla esa posibilidad.

Las sentencias Switch y Choose no se usan mucho en programación. Parece que los
programadores o no las conocen o se lían (y es comprensible) al utilizarlas. Le garantizo que puede
llegar a ser un gran programador sin necesidad de utilizarlas. Use preferentemente If End If y
Select Case.

Otra sentencia condicional: IIF

Devuelve uno de entre dos valores, dependiendo de la evaluación de una expresión.

Sintaxis Iif (Expresión, SiEsCierto, SiEsFalso)

Expresión es la expresión a evaluar.

SiEsCierto Valor o expresión devuelta si Expresión es True.


SiEsFalso Valor o expresión devuelta si Expresión es False.

Observaciones

IIf siempre evalúa SiEsCierto y SiEsFalso, aunque sólo vaya a devolver una de ellas. Por esta razón,
deberá vigilar que no se produzcan efectos no deseados. Por ejemplo, si al evaluar SiEsFalso se
produce un error de división entre cero, se generará un error aunque Expresión dé como resultado
True.

Como ejemplo, en el formulario de nuestro primer programa introduzca un nuevo botón de comando.
Introduzca también un TextBox. Vea que poco a poco vamos metiendo cosas aunque no las
conocemos todavía. Mas tarde las conocerá. El TextBox tendrá por nombre Text1. Haga doble click
sobre el botón de comando e introduzca el siguiente código :

Private Sub Command2_Click()


Dim MiVariable As String
MiVariable = IIf(Clng(Text1.Text) > 100, "Es mayor", "Es menor")
Label1 = MiVariable
End Sub

Al ejecutar el programa, debe introducir un valor numérico en Text1. Si ese valor numérico es menor
que 100, MiVariable tomará el valor “Es menor” (No se cumple la condición expresada en el primer
parámetro Text1.Text > 1000). Si introduce una cantidad mayor, se cumple esa condición, por lo que
MiVariable tomará el valor “Es mayor”. El valor que toma la variable puede verlo en Label1.

Fíjese que hemos declarado MiVariable como String, ya que va a contener un dato tipo cadena de
caracteres.

Con estas sentencias condicionales es posible realizar bifurcaciones del programa, cambiar las
propiedades de un objeto, obtener resultados de operaciones, ....

Sentencias de bucle.

Es muy común utilizar bucles a lo largo de un programa. Un bucle es una sucesión repetitiva de

Carrera: Computación e Informática Curso: Visual Basic


26
instrucciones, que se estarán realizando mientras se cumpla una condición o mientras no se cumpla
otra condición. Es tan sencillo como esto:

Mientras condición

Instrucciones

Fin del bucle

Existen dos formas de bucle: Una, que realiza un número determinado de recorridos por el bucle. Es el
denominado bucle por contador. Otra, realiza el bucle hasta que se cumpla (o deje de cumplirse) una
condición. Es el llamado bucle por condición.

Bucle por contador

Realiza el bucle tantas veces como le indiquemos. Por ejemplo, en este bucle nos va a
presentar las 26 letras mayúsculas del alfabeto inglés

For N=65 To 90
Label1.caption = Chr ( N )
Next N

Este "programa" nos presentará en una caja (Label) los caracteres cuyo número ASCII vaya desde el
65 (A) al 90 (Z) Comenzará presentando el correspondiente al número 65, e irá presentando
sucesivamente el 66, el 67, etc., hasta llegar al 90, donde se parará.

Bucles por condición

Ejecuta las instrucciones del bucle mientras se cumple una condición

X=0
Do While X < 1000
X=X+1
Loop

El programa toma una variable ( X ) que previamente tuvimos la curiosidad de ponerla a cero, e
incrementa su valor una unidad. Analiza si el valor de X es menor que 1000, y si es cierto, vuelve a
realizar el bucle. Así hasta que X ya no sea menor que 1000. Al dejar de cumplirse que X sea menor
que 1000, sale del bucle. Acabamos de realizar un temporizador, y también de exponer las sentencias
condicionales y los bucles, inicio de cualquier curso de Basic. Como final de lección, se propone un
problema. Con el primer bucle, donde visualizábamos los caracteres A a la Z, posiblemente no nos
diese tiempo de ver cada una de las letras que iban apareciendo en la pantalla, en la etiqueta Label1,
dado que cambiaría con mucha velocidad, y solamente veríamos la Z, que es donde se detuvo el
programa. Podemos poner un temporizador cada vez que presente una letra, y así nos dará tiempo a
verla. Con los dos bucles vistos anteriormente ya podemos hacerlo.

Si lo que queremos es que el programa se ejecute mientras no se cumpla una determinada condición,
la sentencia será:

X=0
Do Until X > 1000
X=X+1
Loop

Observe que la diferencia entre una y otra es la condición, While para indicar Mientras se cumpla
que ... y Until para indicar Mientras no se cumpla que ....

Para terminar bien el programa anterior utilizaremos la condición de While (Mientras se cumpla la

Carrera: Computación e Informática Curso: Visual Basic


27
condición)

For N=65 To 90
Label1.caption = Chr ( N )
Label1.RefreshN ' Refresca la etiqueta
X=0
Do While X < 1000
X=X+1
Loop
Next N

Nos falta la interface gráfica. Para realizarla basta con abrir el VB y sobre el formulario que aparece al
abrirlo, introducir una etiqueta, (Label) que llevará el nombre por defecto de Label1. Solo nos queda
pensar donde introducimos el código anterior. Podemos introducir un botón de comando (Command
Button) que saldrá con el nombre por defecto de Command1. Haga doble click sobre el botón.
Aparecerá el procedimiento Click. Este procedimiento es el que se realiza cuando hacemos click sobre
ese botón. Escriba en ese procedimiento este código.

Private Sub Command1_Click() ' Esta línea sale automáticamente


For N=65 To 90
Label1.caption = Chr ( N )
Label1.RefreshN ' Refresca la etiqueta
X=0
Do While X < 1000 ' Bucle de temporización (*)
X=X+1
Loop
Next N ' Termina el bucle de temporización
End Sub ' Esta línea sale automáticamente

Hemos puesto nuestra primera piedra en Visual Basic. Este ejemplo es muy sencillo. Visual Basic es
tan sencillo como este ejemplo.

(*) Las temporizaciones no se hacen realmente así. El ejemplo anterior no deja de ser una forma
sencilla de detener el programa, para que en los comienzos de su carrera como programador pueda
ver el contenido de una etiqueta. Si lo hiciera de esta forma, su ordenador estaría detenido realizando
una función bastante triste, contar hasta 1000 para luego continuar el programa. Y lo que es peor, en
un ordenador a 300 MHz. Tardaría menos tiempo que en uno a 66. Esta misma función puede hacerla
con Sleep que la verá mas adelante, que es la forma limpia y elegante de hacer una temporización

Formas de salir de un bucle


Para salir de un bucle, podemos esperar a que se complete, bien porque se ha cumplido la condición
(Bucles por condición) o a que se haya llegado al final de la cuenta (Bucles por contador). Pero puede
ocurrir que interese salir del bucle sin haber terminado la ejecución total del mismo, por ejemplo,
porque ya hemos encontrado lo que estabamos buscando, y sería una pérdida de tiempo seguir
ejecutando el bucle cuando ya hemos obtenido lo que buscamos. Para ello, basta con ejecutar la
sentencia Exit Do (Cuando hemos comenzado el bucle con Do Until o Do While, o con Exit For
cuando lo hemos comenzado con For ... To

Ejemplos

En el siguiente ejemplo pretendemos parar el programa cierto tiempo, a la espera que otro equipo se
conecte a través del puerto serie. (Cuando se conecte, el control MSComm1 detectará la señal DSR
que le envía el otro equipo y deberemos salir inmediatamente del bucle para, por ejemplo, atender a
ese puerto serie)

Contador = 0
Do While Contador < 1000

Carrera: Computación e Informática Curso: Visual Basic


28

Contador = Contador + 1
DoEvents
If MSComm1.DSRHolding = True Then Exit Do
Sleep (1000)
Loop

„Aquí comenzamos a atender al puerto serie

En el siguiente ejemplo, deseamos transmitir por el puerto serie una serie de números, del
1 al 1000, pero siempre y cuando que el equipo que está al otro lado de la línea serie esté a
la escucha (Condición MSComm1.DSRHolding = True) Si se desconecta ese equipo, y la
condición pasa de True a False, deseamos salir del bucle:

For I = 1 To 1000
If MSComm1.DSRHolding = False Then Exit Do
MSComm1.Output = Str(I)
Next I

No se preocupe que no entienda esto del MSComm. Lo entenderá perfectamente unos


capítulos mas adelante. Lo importante es que entienda la idea de salir de un bucle por la vía
rápida.

Salir de un procedimiento antes de terminar su ejecución

Y ya que explicamos como se sale de un bucle por la vía rápida, veamos como salir de un
procedimiento usando también esa “vía rápida”.

Para salir de un procedimiento basta con ejecutar la sentencia Exit Sub. En el ejemplo siguiente,
usamos el botón BotonLeerNombre para introducir el dato Nombre en una base de datos. Pero ese
campo puede tener como máximo, 20 caracteres. Si el usuario ha introducido mas de 20 caracteres,
debemos salir del procedimiento donde se introduce ese dato sin ejecutarlo de forma íntegra:

Private Sub BotonLeerNonbre_Click()


Mivariable = Text1.Text
If Len(Mivariable) > 20 Then
MsgBox "El Campo Nombre debe tener como máximo 20 caracteres"
Text1.Text = ""
Exit Sub „Con esta instrucción saldríamos de este procedimiento
Else
'Aqui vendrían las lineas de instrucciones donde trataríamos
'el contenido de Text1, si tuviese menos de 20 caracteres
End If
End Sub

Carrera: Computación e Informática Curso: Visual Basic


29
Ejercicios Propuestos
1. Realizar un programa donde se deberá ingresar el nombre de un alumno y se deberá escoger el
turno en el que estudia (M , T y N) así como también el ciclo (I, II, III, IV, V, VI) y la carrera (CI,
Contabilidad, Secretariado) se deberá calcular el pago de su pensión en base a los siguientes datos:
el precio por carrera es:
CI = 220.00
Contabilidad = 180.00
Secretariado = 170.00
Además que dependiendo del ciclo en el que están se pagara un recargo del precio de
10,20,30,40,50,60. Axial como también si es del turno “M” se deberá recargar 10% mas solo si esta
en I, II, o III ciclo, si es del turno “T” se recarga el 15 % mas solo si esta en I, o II y por ultimo si es
del turno “N” se la hará un descuento del 15 % .Al finalizar solo se debe mostrar el monto de la
pensión.

2. Realizar un programa donde se ingresara por teclado en una caja de texto la hora en formato de
24 horas y en otra caja de texto la cantidad de minutos al hacer clic en un botón deberá salir la hora
en formato de 12 horas por ejemplo si se ingresa 23 en una caja y en la otra 12 el resultado seria
11:12 PM

3. Desarrollar un programa donde se ingrese la cantidad total de minutos hablados por una persona y
escoja el tipo de llamada (Local, Nacional, Internacional).Se visualizara el importe de la llamada
sabiendo que por los 3 primeros minutos se paga S/ 1.00 y por cada minuto adicional se paga 0.50 en
caso sea local si es nacional se incrementa el 25% y si es internacional se incrementa el 60% a los
precios por minuto.

4. Realizar un programa donde se ingrese un número y visualícelo en romano.

5. Realizar un programa donde se ingrese por teclado el día de nacimiento y el mes de nacimiento de
una persona al hacer clic se deberá mostrar su signo zodiacal así como también deberá aparecer la
imagen del signo Zodiacal en un control PictureBox.

CAPITULO IV

Funciones incorporadas de Visual Basic

Funciones de cadena

Se denomina CADENA a una sucesión de caracteres. Una cadena puede tener uno o varios caracteres
alfanuméricos. Una cadena es también una sucesión de números.

Ejemplo de cadenas:

Curso de Visual Basic


abcdefghijklmnopqrstuvwxyz1234567890
123456789

Hagamos una distinción entre una cadena que contenga números y un número. Un número tiene un
valor, pero también tiene una presentación escrita. El valor es algo que estará en el ordenador como
una sucesión de bits. Dependiendo de como lo hayamos declarado, tendrá mas o menos bits. Pero esa
información no es un número legible por el usuario. Lo que sí es legible por el usuario es la
representación en numeración decimal (u octal, o hexadecimal, o incluso en binario) de ese número.
Esa representación del número en un determinado sistema de numeración es una cadena.

Así, el número nueve, que en la memoria del ordenador será una sucesión de bits, nos lo podrá
presentar como:

Carrera: Computación e Informática Curso: Visual Basic


30

9 En numeración decimal
9 En numeración hexadecimal
11 En numeración octal
1001 En numeración binaria

Esas formas de presentarnos el número son CADENAS de caracteres. El valor del número dentro del
ordenador es un NUMERO.

Para presentar un número en la pantalla, el ordenador debe convertirlo previamente a una cadena.

Cuando introducimos un valor numérico por teclado o pantalla, el ordenador para hacer operaciones
con él, debe transformarlo a un número.

Estas consideraciones nos llevan a las dos primeras funciones con cadenas:

Str (número)
Convierte un número a una cadena en numeración decimal.

Val (cadena numérica)


Obtiene el valor (el número) correspondiente a esa cadena.

Ejemplos

Variablenumerica = Val (TextBox1.Text)

Este ejemplo convierte la cadena de caracteres (numéricos) que hubiese en la caja de texto
TextBox1 en un número, y asocia este número a la variable Variablenumerica.
Si el contenido de la caja de textos no fuesen caracteres numérico (abcd, por ejemplo),
Variablenumerica tomaría el valor 0.

Label1.Caption = Str (Variablenumerica)

Este ejemplo pondría en la etiqueta Label1 los caracteres correspondientes al valor que tuviese la
variable Variablenumerica .

Existe una función mas amplia que Str. Se trata de Cstr. Esta función no solamente transforma un
número a una cadena, como hace Str, sino que convierte cualquier tipo de variable a una variable tipo
String (cadena).

Esta función transforma, por ejemplo, una variable tipo Booleana en una variable de cadena,
devolviendo la cadena “Verdadero” si el valor de la variable booleana es True, y “Falso” si es False.

Puede también transformar a una cadena de caracteres el valor de un CheckBox o de un


OptionButton. En estos casos devuelve 0 y 1 para el CheckBox (Desactivado / Activado) y Verdadero ó
Falso para el OptionButton (Activado / Desactivado)

label1.Caption = CStr(booleana) Label1.Caption = Verdadero


Label1.Caption = Falso

Label2 = CStr(Check1.Value) Label2.Caption = 1 si Check1 está activado


Label2.Caption = 0 si Check1 está desactivado

Label3 = CStr(Option1.Value) Label3.Caption = Verdadero


Label3.Caption = Falso

Carrera: Computación e Informática Curso: Visual Basic


31
Si se aplica Cstr a una variable tipo Fecha/Hora devuelve la fecha / Hora en formato corto.

Mas funciones de cadena:

Left (cadena, n)
Extrae los n primeros caracteres de una cadena, comenzando por la izquierda.

Si cadena = Curso de Visual Basic (Para todos los ejemplos)

Resultado = Left (cadena, 10) ----> Resultado = Curso de V

Right (cadena, n)
Extrae lo n últimos caracteres de la cadena

Resultado = Right (cadena, 10) ----> Resultado = sual Basic

Mid (cadena, m, n)
Extrae n caracteres de la cadena, siendo el primer carácter
extraído el que ocupa el lugar m.

(Vea Instrucción Mid mas abajo)

Resultado = Mid (cadena, 3, 10) ----> Resultado = rso de Vis

LCase (cadena)
Devuelve otra cadena igual, pero con todos los caracteres en minúsculas. (LCase =
Lower Case)

Resultado = Lcase (cadena) ----> Resultado = curso de visual basic

UCase (cadena)
Devuelve otra cadena igual, pero con todos loscaracteres en mayúsculas. (UCase =
Upper Case)

Resultado = UCase (cadena) ---->Resultado = CURSO DE VISUAL BASIC

Len (cadena)
Devuelve la longitud de la cadena

Resultado = Len (cadena) ----> Resultado = 21

Space (n)
Devuelve una cadena formada por n espacios.

Resultado = "A" + Space (6)+ "B" ----> Resultado = A B

LTrim Elimina los posibles espacios que tenga una cadena por
Su izquierda.

Rtrim Elimina los posibles espacios que tenga una cadena por
Su derecha.

Trim Elimina los espacios que tenga una cadena, tanto por su
izquierda como por su derecha. (No elimina los espacios
centrales de la cadena)

Carrera: Computación e Informática Curso: Visual Basic


32

Estas tres funciones se emplean para quitar los posibles espacios que pueden resultar de una
entrada de datos. Tienen especial importancia cuando se toman los datos de un archivo o base de
datos, donde fueron introducidos por otro programa.

InStr (cadena, cadena1)


Busca la cadena1 dentro de cadena y devuelve el número de orden dentro de cadena
donde se encuentra la primera letra de cadena1

Resultado = InStr (cadena, "sua") ----> Resultado = 12

StrConv Convierte una cadena de caracteres en otra, según las


instrucciones que le sigan. Puede sustituir a UCase o LCase si la instrucción
es UpperCase o LowerCase respectivamente, o poner la primera letra de todas
las palabras de la cadena en mayúsculas, si la instrucción es ProperCase.

Resultado = StrConv (cadena, UpperCase)


----> Resultado = CURSO DE VISUAL BASIC

Resultado = StrConv (cadena, LowerCase)


----> Resultado = curso de visual basic

Resultado = StrConv (cadena, ProperCase)


----> Resultado = Curso De Visual Basic
Instrucción Mid

Mid puede usarse también para cambiar el contenido de una cadena. Observe la sutileza entre Mid
como Función de cadena y Mid como Instrucción.

La Instrucción Mid reemplaza un número especificado de caracteres en una variable de cadena con
caracteres de otra cadena.

Sintaxis Mid(cadena1, inicio[, longitud]) = cadena2

Mid (cadena, 7,2)=”AB” ---- > Resultado = Curso AB Visual Basic

Si la cadena que vamos a introducir tuviera más caracteres, tomará solamente los primeros

Mid (cadena, 7,2)=”ABCDE” ---- > Resultado = Curso AB Visual Basic

Funciones Asc y Chr

Estas funciones se utilizan para obtener el número ASCII de un carácter, y para, sabiendo el número
ASCII, hallar el carácter correspondiente.

Función Asc

Devuelve el código de carácter correspondiente a la primera letra de una cadena de caracteres.

Sintaxis MiVariable = Asc (Cadena)

Cadena es cualquier expresión de cadena válida. Si la cadena no contiene caracteres, ocurrirá un error
en tiempo de ejecución.

Ejemplo : Label1 = Asc (“ABCD”) Label1 presentará 65

Nota Hay otra función (AscB) que puede usarse con bytes contenidos en una cadena. En lugar de

Carrera: Computación e Informática Curso: Visual Basic


33
devolver el código del carácter para el primer carácter, AscB devuelve el primer byte.

Función Chr

Devuelve el carácter asociado con el código de carácter especificado.

Sintaxis Chr (CódigoCarácter)

El argumento CódigoCarácter es un número en el intervalo de 0 a 255, inclusive, que identifica a un


carácter.

Ejemplo Label1 = Chr (65) Label1 contendrá el carácter A

Como ejemplos de números de caracteres algo especiales se debe señalar el carácter 10 (avance de
línea) y el carácter 13 (Retroceso de carro). La tecla ENTER produce ambos caracteres cada vez que
se pulsa.

Otros caracteres importantes son, el Backspace (carácter 8), y el espacio (carácter 32)

Otras Funciones con números

Int , Fix Devuelven la parte entera de un número con decimales

Int y Fix eliminan la fracción de un número y devuelven el valor entero resultante. La diferencia entre
Int y Fix es que si el número es negativo, Int devuelve el primer entero negativo menor o igual a
número, mientras que Fix devuelve el primer entero negativo mayor o igual a número. Por ejemplo,
Int convierte -8,4 en -9, y Fix convierte -8,4 en -8.

Abs Devuelve el valor absoluto de un número

Sgn Devuelve el signo de un número

Sqr Devuelve la raíz cuadrada de un número

Exp Devuelve el número elevado al exponente


indicado

Log Devuelve el logaritmo natural de ese número

Funciones Trigonométricas

Sin Devuelve el valor del seno de un ángulo


(Expresado en radianes)

Cos Devuelve el coseno de un ángulo (En radianes)

Tan Devuelve la tangente de un ángulo

Atn Devuelve un arco cuya tangente sea el número


(Angulo en radianes)

Función Cdate Convierte una expresión al tipo de datos Date. (Fecha / Hora)

Otras Funciones

Una función curiosa

Carrera: Computación e Informática Curso: Visual Basic


34
Timer Tiempo acumulado Devuelve el tiempo (en segundos) que ha
pasado desde las 12 de la noche.

Generación de números aleatorios

Randomize (Numero) Inicia el generador aleatorio tomando como dato de partida


el Numero. Devuelve el resultado en una variable llamada Rnd.

Randomize Timer

La función Randomize devuelve una variable Rnd con un número comprendido entre 0 y 1
(Nunca será 0 ni 1) Leyendo el valor de la variable sucesivas veces, se puede obtener una sucesión de
números aleatorios. No es necesario ejecutar la instrucción Randomize Timer cada vez que se quiera
obtener un dato de la variable Rnd.

Un ejemplo. Generador de números para la Lotería Primitiva

Supongamos que tenemos un formulario con una etiqueta de nombre Label1, un botón de comando
de nombre Command1. Cuando hagamos click sobre el botón de comando deberá generar un número
comprendido entre el 1 y el 49. En el procedimiento click de Command1 pondremos el siguiente
código:

Private Sub Command1.click

Randomize Timer
A = Rnd * 100
A = CInt(A)
Do While A > 49
A = A - 49
Loop
Do While A < 1
A = A + 49
Loop
Label1.caption = A
End Sub

Funciones con fechas.

Las fechas son cadenas especiales. Visual Basic sabe obtener y tratar la información relativa a la fecha
y la hora. Dispone para ello de una declaración de variable: Date. Una variable declarada como date
puede contener una fecha, una fecha y una hora o una hora solamente.

Date Devuelve la fecha de hoy. Esta fecha la toma del reloj del ordenador.

Time Devuelve la hora actual.

Now Devuelve la fecha y hora actual.

WeekDay Devuelve el día de la semana (En número, 1=Domingo, 2=Lunes,...)

Day Obtiene el día, a partir de una fecha

Month Obtiene el mes a partir de una fecha.

Year Obtiene el año a partir de una fecha.

Hour Obtiene la hora a partir de una hora

Carrera: Computación e Informática Curso: Visual Basic


35

Minute Obtiene el minuto a partir de una hora.

Second Obtiene el segundo a partir de una hora.

DateAdd Añade un intervalo de tiempo a una fecha

DateDiff Obtiene el intervalo de tiempo entre dos fechas

DatePart Devuelve una parte de una fecha(semana, trimestre, etc.)

DateSerial Compone una fecha a partir de parámetros relativos

TimeSerial Compone una hora a partir de parámetros relativos.

DateValue Devuelve una fecha a partir de un dato que se le parezca


y VB pueda obtener de él una fecha válida

Mediante estas instrucciones podemos obtener el dato necesario de una fecha u hora. Por ejemplo,
para obtener el día de hoy solamente:

Día = Day (Now) Día será un número

El día de la semana lo obtendríamos

Diasemana = WeekDay (Now) Diasemana será un número

DateValue, una instrucción que le sacará mucho provecho

Fecha = DateValue (12-07-96)


Fecha = DateValue (12 07 96) Fecha =12/07/96

La función DatePart
Merece estudio aparte. Con esta función podemos averiguar el mes, trimestre, semana, día del año,
etc.

La sintaxis de esta función es :

VariableNumérica = DatePart (Intervalo, fecha[, primerdíasemana[, primerasemanaaño]])

Valor para Intervalo Obtendremos el


q Trimestre
m Mes
y Día del año
d Día
w Día de la semana
ww Semana
h Hora
n Minuto
s Segundo

El parámetro Primerdíasemana puede ser un número o una constante (veremos a lo largo de todo el
curso, que VB usa constantes que son palabras reservadas por VB que generalmente comienzan por
vb) que indica que día es para nosotros el primero de la semana

Constante Número Primer día de la semana


vbSunday 1 Domingo (predeterminado)
vbMonday 2 Lunes

Carrera: Computación e Informática Curso: Visual Basic


36
vbTuesday 3 Martes
vbWednesday 4 Miércoles
vbThursday 5 Jueves
vbFriday 6 Viernes
vbSaturday 7 Sábado

Para el parámetro primerasemanaaño podemos emplear uno de los siguientes números o constantes:

Constante Valor Descripción

vbFirstJan1 1 Empieza con la semana en la que se encuentra el 1 de enero


(predeterminado).
vbFirstFourDays 2 Empieza con la primera semana que tenga al menos cuatro
días en el año nuevo. (Standard ISO 8086)
vbFirstFullWeek 3 Empieza con la primera semana contenida completamente en
el año nuevo.

Por ejemplo, y tomando como referencia para todos los ejemplos el día 22 de Septiembre de 1998,
fecha en la que se ha escrito este texto, (Now = 22/09/1998), tenemos :

Variable = DatePart (“m”, Now) Variable = 10


variable = DatePart ("q", Now) Variable = 3
variable = DatePart ("d", Now) Variable = 22
variable = DatePart ("y", Now) Variable = 265
variable = DatePart ("w", Now) Variable = 3 (Martes, pues el primer día de la semana
era el domingo - Predeterminado)
variable = DatePart ("w", Now, vbMonday) Variable = 2 (Primer día semana = lunes)
variable = DatePart ("ww", Now, vbMonday, vbFirstFourDays)
Variable = 39, que indica el número de la semana dentro del año.

Cuidado con como se escriben las fechas. Una posibilidad es la usada en los ejemplos, pero solamente
vale para el día de hoy. Puede expresar la fecha metiéndola entre dos signos #, pero en ese caso
debe estar expresada en el formato mm/dd/yy (mes/día/año). Ejemplo :

variable = DatePart("ww", #9/22/98#, vbMonday, vbFirstFourDays)

Pero lo mas fácil para el formato de fecha usado en España es meter la fecha entre comillas dobles, y
usar el formato especificado para el país :

variable = DatePart("ww", "22/9/98", vbMonday, vbFirstFourDays)

Con las comillas dobles puede incluso no poner el año. En este caso le pone por defecto, el año en
curso.

variable = DatePart("ww", "22/9", vbMonday, vbFirstFourDays)

Estas tres formas de expresar la fecha funcionan perfectamente, al igual que cuando lo hacíamos con
Now, y el resultado sigue siendo 39.

Función FORMAT

Esta función permite presentar cadenas numéricas o fechas de una determinada forma. Permite
establecer el Formato de esa cadena.

Si recurre a la ayuda de VB acerca de esta función se va a enterar muy poco de lo que puede dar de
sí. La sintaxis que presenta es :

Carrera: Computación e Informática Curso: Visual Basic


37
Format(expresión[, formato[, primerdíadesemana[, primerasemanadelaño]]])

FechadeHoy = Format (Now, “yyyy-mm-dd”)

la variable FechadeHoy tendrá el valor 1998-05-21, que se refiere al día 21 de mayo de 1998, según
el formato recomendado por la norma ISO-8601 para la presentación de fechas. Si hubiésemos puesto
la expresión FechadeHoy = Format (Now, “dd/mm/yy”) , la variable FechadeHoy contendría el valor
21/05/98 referido al día citado.

Las posibilidades de Format llegan también al campo de las cadenas numéricas. Por ejemplo la cifra
123456 se transformará en las siguientes expresiones, según como empleemos la función Format

Variable = Format(123456, "Currency") Variable = 123.456 Pts


Variable = Format(123456, "Standard") Variable = 123.456,00

Veamos ahora con un poco mas de conocimiento la sintaxis de Format

Variable = Format (expresión[, formato[, firstdayofweek[, firstweekofyear]]])

No se complique la vida con el tema del primer día de la semana ni la primera semana del año. No lo
usará con frecuencia. Centrémonos mas en el parámetro Formato. Puede tomar muchos valores.
Veamos los principales. Primero para números

Observe que usamos la expresión Variable = Format (1234567,”Formato”) para todos los ejemplos de
números.

Para poner los números separados por millares :

Variable = Format(1234567, "##,###,###") Variable = 1.234.567

(Cada carácter # indica que ahí va un número. El separador debe ser una coma, no un punto, aunque
esto depende del idioma que esté usando)

Puede poner una de estas expresiones, eso si, siempre entre comillas dobles :

General Number Muestra el número tal como lo tecleó


Currency En formato de la moneda de su sistema operativo
Fixed Sin separador de millar y dos decimales (1234567,00)
Standard Con separador de millares y dos decimales (1.234.567,00)
Percent Multiplica el número por cien y lo presenta cono
porcentaje(123456700,00%)
Scientific Usa notación científica (1,23E+06)
.

Para fechas (Observe que usamos el ejemplo Format(Now, “Formato”) siendo Now la fecha y hora
actual (21/07/98 a las 22:16:00 )

General Date 21/07/98 22:16:00


Long Date martes 21 de julio de 1998
Medium Date 21-jul-98
Short Date 21/07/98
yyyy-mm-dd 1998-05-21
yy-mm-dd 98-07-21
Long Time 22:19:53
Medium Time 10:20 PM
Short Time 22:20
hh :mm :ss 22 :21 :29
hh :mm 22 :21

Carrera: Computación e Informática Curso: Visual Basic


38

CAPITULO V

Formularios Múltiples

Lo que se va a explicar en este capítulo le será bastante familiar aunque nunca haya reparado en ello.
Posiblemente haya utilizado un procesador de texto en el que está escribiendo una carta, y antes de
terminar de escribir esa carta, comienza a escribir otro documento, y posiblemente otro, y tenga los
tres documentos en la pantalla al mismo tiempo, bien en ventanas escalonadas, (cascada), bien en
ventanas en forma de mosaico, o simplemente tapando unas a otras completamente. Los tres
documentos están en su procesador de textos, y puede actuar sobre uno u otro simplemente eligiendo
el deseado mediante el mecanismo que le proporciona su procesador de textos. Este sistema no es ni
mas ni menos que una interface de documentos múltiples. En programación, a este tipo de
aplicaciones las denominamos MDI

Para crear una aplicación MDI debe hacerse mediante un Formulario Padre al que se le añaden
tantos Formularios Hijo como documentos tengamos. Al formulario padre le denominamos
Formulario MDI, y a los formularios hijo en Visual Basic se les denomina formularios MDIChild. En
esta Guía del Estudiante se usarán indistintamente una u otra denominación.

La única diferencia entre un formulario normal y un formulario Hijo es que éste tiene la propiedad
MDIChild a True.

Para realizar una aplicación MDI, lo primero que hay que hacer es introducir en ella un formulario
MDI. Para introducirlo, basta con hacer click en Insertar | Formulario MDI de la barra de menú.
Solamente se puede tener un formulario MDI en una aplicación. Puede observar que una vez que ha
introducido uno, la palabra Formulario MDI del submenú Insertar queda deshabilitada.

Una vez que tiene un formulario MDI puede introducir tantos formularios hijo como desee. Para que
un formulario sea formulario hijo basta con poner a True su propiedad MDIChild.

En una aplicación MDI pueden coexistir formularios hijo y formularios normales.

Propiedades de los formularios MDI

Aparte de las propiedades de un formulario normal, un formulario MDI tiene las siguiente
propiedades :

AutoShowChildren. Muestra los formularios hijo nada mas cargarlos.

Esta propiedad puede verse si se carga un formulario hijo mediante la sentencia :

Load NombreFormularioHijo

Si la propiedad AutoShowChildren está a True, el formulario cargado se verá inmediatamente. Si está


a False, será necesario ejecutar la sentencia NombreFormularioHijo.Show para presentarlo.

ActiveForm Mediante esta propiedad podemos conocer el formulario activo dentro de una
aplicación de documentos múltiples. (El formulario activo es aquel que tiene el foco)

MiVariable = ActiveForm.caption

MiVariable contendrá el Caption (Barra de Titulo) del formulario activo.

ActiveForm.Backcolor = RGB (255,0,0)

pondrá el fondo del formulario activo de color rojo.

Carrera: Computación e Informática Curso: Visual Basic


39
ScrollBars Hace que el Formulario MDI (padre) muestre barras de Scroll para presentar en
toda su extensión a un formulario hijo, cuando las dimensiones de áste superan las de aquel.

Aparte de estas propiedades que diferencian un Formulario MDI de un Formulario normal, los
Formularios MDI presentan otras particularidades.

Inserción de Controles Solamente podrán introducirse en un formulario MDI aquellos controles


que tengan la propiedad Align. (Picture, Data, DBGrid) y solo permiten que se presenten con
alineación a uno de los lados del Formulario (Top, Bottom, Left o Right)

El control Picture puede trabajar como contenedor de otros controles. Por lo tanto, para poder
introducir cualquier control (TextBox, Label, CommandButton ...) será necesario introducir un control
Picture, y sobre el, poner los controles que se necesiten.

Línea de Menú. Cuando existe la línea de Menú en un Formulario MDI y en el Formulario Hijo que
introduzcamos en él, la línea de menú del Formulario MDI se sustituye por la línea de menú del
Formulario Hijo introducido.

Barra de Título. La Barra de Título del Formulario MDI se conserva siempre. Pero si el Formulario
Hijo insertado dentro de él está maximizado (ocupa toda la extensión del Formulario MDI), a la barra
de título se le añadirá la barra de Título del Formulario Hijo entre paréntesis.

Para hacer que un Formulario sea un formulario hijo basta con ponerle su propiedad MDIChild a True.

Puede preparar los formularios hijo uno a uno e introducirlos dentro del formulario MDI según las
necesidades de la aplicación. Este sería el caso de una aplicación con varias pantallas, todas ellas
colocadas sobre una pantalla fija (Formulario MDI) del que se aprovecha quizás alguna parte como
parte común de toda la aplicación (Menú, Título, Barra de herramientas montada sobre un Picture,
etc.)

Puede también darse el caso de introducir un número indeterminado de ventanas iguales para realizar
varias veces la misma función, pero sobre ventanas diferentes. (Caso del procesador de texto que
tiene varias ventanas de texto, cada una con un documento. Lo que desconocemos a priori es el
número de documentos que vamos a editar)

Para el primer caso, será necesario crear cada una de las ventanas, e introducirlas y quitarlas según
pida la aplicación.

En segundo caso, bastará con crear un formulario hijo con todas las partes necesarias para su
correcto funcionamiento, y luego, realizar tantas “fotocopias” de ese formulario como ventanas
necesitemos. Lo que introducimos en la aplicación son precisamente esas “fotocopias”, pero no el
original, que lo seguimos manteniendo intacto para volver a copiarlo si fuese necesario.

A esas “fotocopias” de un formulario las llamamos Instancias. Al original le llamaremos Clase.

En realidad una Clase es la definición de un objeto Visual Basic. Un objeto Visual Basic puede ser un
Formulario, un control, un objeto de acceso a datos.

La Instancia es la réplica de una clase. Puede ser la réplica de un Formulario, de un control o de otro
objeto. La Instancia lleva las mismas Propiedades que la clase. Se dice que hereda las
propiedades. (Excepto la propiedad Visible, que siempre, por defecto, aparece a False). Cuando se
varía una propiedad de una Instancia, no se altera el valor de esa propiedad en la Clase ni en ninguna
de las restantes Instancias.

Después de toda esta teoría, ¿podemos saber como se crea una Clase de un formulario ? O dicho de
manera mas coloquial, ¿Cómo se crea un Formulario para poder hacer varias “fotocopias” de él ?

La respuesta es obligatoriamente mas sencilla que la teoría. Con el formulario vacío que tengamos en
el proyecto (Insertemos un Formulario si fuese necesario) pongámosle todos los controles que
deseemos. Le podemos poner un Menú y cambiar a nuestro antojo todas sus propiedades. Entre ellas,
la propiedad MDIChild. Si vamos a introducir las Instancias de ese Formulario en un Formulario MDI
esa propiedad debe estar a True, y por lo tanto sus Instancias saldrán igualmente con esa propiedad
a True. Pongámosle un nombre y ya está creada la clase. Supongamos que ese nombre es
FormularioHijo

Carrera: Computación e Informática Curso: Visual Basic


40

Para crear ahora Instancias de ese Formulario podemos hacerlo de dos formas :

Declarar una variable tipo Objeto. No se asuste. Para declarar que una variable es un Formulario basta
con declararla de la siguiente forma :

Dim MiVentana As Form

Esta variable debe declararla en sitio adecuado para su aplicación, y el ámbito de esa variable objeto
será el mismo que para cualquier tipo de variable. (Vea Ambito de las Variables) La sentencia a
utilizar para la declaración será Dim, Private, Public o Global tal como se explicó para las variables.

Una vez declarada como variable puede hacerla igual a un objeto existente que servirá de modelo
(Una Clase) que estará definida por un nombre: (P.e. FormularioHijo)

Set MiVentana = New FormularioHjo

Podemos hacer las dos operaciones a un tiempo : declarar y crear la copia :

Dim MiVentana As New FormularioHijo

Una vez creado la instancia del formulario debemos cargarlo en el Formulario Padre. Para cargarlo
debemos emplear la sentencia Load MiVentana, con lo que quedará cargado en la memoria, pero,
dependiendo de como está la propiedad AutoShowChildren del Formulario Padre se mostrará o no
se mostrará. Para que se muestre, independientemente de como esté esa propiedad, basta con
ejecutar MiVentana.Show. En realidad mediante el método Show un formulario no solamente se
muestra, sino que también se carga en la memoria si no estuviese previamente cargado. Por lo tanto
podíamos habernos ahorrado la instrucción anterior para cargarlo Load MiVentana

Es muy práctico poner un Caption distinto a cada formulario que se introduzca, caso de introducirse
varios formularios hijo iguales. El Caption es una propiedad y por lo tanto todas las instancias heredan
el Caption de la Clase. Sería prudente distinguir un formulario de otro mediante su Caption, es decir
mediante su barra de título.

Para ello podemos crear un contador en el mismo procedimiento en el que creamos una nueva
instancia, y poner el Caption de cada nuevo Formulario siguiendo un orden numeral.

Documento 1, Documento 2, Documento 3, etc.

Ese procedimiento quedará de la siguiente forma :

Static contador As Integer


Dim MiVentana As New FormularioHijo
MiVentana.Caption = “Documento “ & Str (contador)
MiVentana.Show

Referencias a los Formularios. ActiveForm y Me

Si queremos nombrar un Formulario Hijo dentro de una aplicación MDI el primer problema con el que
nos encontramos es que todos los formularios hijo (Instancias de la misma Clase) tienen el mismo
nombre. Por lo tanto no podemos nombrarlas con ese nombre, ya que la aplicación no sabría a cual de
ellas nos referimos.

Si el código donde vamos a nombrar ese formulario está fuera de él (P.e. en el Formulario Padre)
deberemos referirnos al formulario hijo mediante ActiveForm. ActiveForm nos va a indicar cual es
el formulario que está actualmente activo. Un formulario está activo cuando estamos trabajando sobre
él. En ese momento tiene el foco. Permanece activo desde que hacemos click con el ratón sobre
cualquiera de sus partes, hasta que activamos otro formulario. Es sencillo reconocer cual es el
formulario activo pues tiene su barra de título con el color vivo.

Cada vez que hacemos una operación sobre una parte de un formulario éste se pondrá activo. Por
ejemplo, si el formulario es un documento de texto, y contiene el texto en un RichTextBox de nombre

Carrera: Computación e Informática Curso: Visual Basic


41
RTB1, si queremos hacer una operación con el texto desde un botón colocado en el formulario
padre (poner en negrita el texto seleccionado), haríamos lo siguiente :

ActiveForm.RTB1.SelBold = True

ya que siempre estaremos seguro de que el Formulario Activo es aquel en el que acabamos de
seleccionar el texto.

Si el botón donde hemos puesto el botón no es el formulario padre, sino el hijo, tenemos un problema
similar. Su nombre será (con los ejemplos anteriores) MiVentana, y pueden existir varios formularios
con ese nombre, tantos como documentos hayamos introducido. No podemos por tanto nombrarlo
con su nombre, pues hay (o puede haber) varios. Tampoco lo podemos nombrar con ActiveForm, ya
que esta propiedad corresponde al Formulario Padre. La solución es nombrarle mediante Me. Me
siempre se refiere al formulario que contiene al procedimiento donde está esa palabra. Por lo tanto, si
tenemos un botón en el formulario hijo con la instrucción :

Me.RTB1.SelBold = True

Me se refiere concretamente a ese formulario.

Colocación de los Formularios Hijo - Método ARRANGE

Mediante el método Arrange podemos distribuir los formularios hijo dentro del formulario padre.
Pueden colocarse en cascada, mosaico horizontal, mosaico vertical o como iconos.

Sintaxis NFMDI.Arrange distribución

donde

NFMDI = Nombre del Formulario MDI

distribución puede tomar los siguientes valores o constantes :

Constante Valor Descripción

vbCascade 0 Dispone todos los formularios MDI secundarios no minimizados


en cascada.
vbTileHorizontal 1 Dispone todos los formularios MDI secundarios no minimizados
en mosaico horizontal.
vbTileVertical 2 Dispone todos los formularios MDI secundarios no minimizados
en mosaico vertical.
VbArrangeIcons 3 Dispone los iconos de los formularios MDI minimizados.

Las ventanas o los iconos se pueden distribuir incluso si el objeto MDIForm está minimizado. Los
resultados son visibles cuando el objeto MDIForm se maximiza.

Posición de los Formularios en el Eje Z - Método ZOrder

Cuando tenemos varios formularios hijo, unos ocultan a los otros. Mucho mas si los formularios están
maximizados. Podemos colocar un formulario hijo en la parte frontal del montón de formularios (para
que se vea completamente) o llevarle a la posición mas atrás mediante el Método ZOrder.

Sintaxis NFH.ZOrder posición

Donde NFH = Nombre del Formulario Hijo

posición puede se 0 ó 1. Si es 0 (o si se omite) el formulario se coloca en primer plano. Si es 1 el


formulario se coloca en el fondo del eje Z.

ZOrder es un método que no solamente se puede emplear con formulario hijo, sino con cualquier
instancia. Puede emplearlo también con cualquier control. Pero lea detenidamente la Ayuda de este
método, ya que no todos los controles la admiten.

Carrera: Computación e Informática Curso: Visual Basic


42
Mostrar los Formularios existentes mediante el Menú -- Propiedad WindowList

Al explicar el Editor de menús casi se pasó por alto una propiedad del menú : WindowList. Cuando
se activa esta propiedad (Puede activarse para una sola palabra del menú. Si se pretende activar
para mas de una dará un error), esa palabra que tiene activada la propiedad WindowList mostrará al
hacer click sobre ella, en un menú desplegable, el Caption (Barra de Título) de todos los formularios
hijo cargados en ese instante en la aplicación. Pueden estar incluso minimizados.

CAPITULO VI

Diseño de Menú

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

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

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

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

Carrera: Computación e Informática Curso: Visual Basic


43
dentro de un Menú desplegable. Tan distintos como las operaciones de Abrir y Guardar respecto a
la última orden del menú desplegable que es SALIR de la aplicación.

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

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

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

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

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

Visible. Como su nombre indica, que sea visible o no lo sea. Puede cambiarse en
tiempo de ejecución.

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

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

Carrera: Computación e Informática Curso: Visual Basic


44
nmuDocumentos.Visible = False

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

Otras propiedades

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

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

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

Observe que tiene cuatro palabras en la línea superior, y que “colgando” de la primera aparece un
menú desplegable. Para conseguir un menú desplegable fíjese en la figura del Editor, en la parte de
abajo donde están todos los Caption de las palabras del menú. Observará que algunas de ellas
(&Edicion, Documentos, Ayuda - Hay otra que no se vé, &Archivo) están completamente a la
izquierda de la ventana, y las demás están separadas de la parte izquierda por unos guiones. Las
palabras que están completamente a la izquierda son las que figurarán en la barra de menú de forma
permanente. Las que están separadas (tabuladas) corresponden a las que aparecerán en los menús
desplegables. Como es lógico, un menú desplegable debe colgar de una palabra de las de la barra de
menú. La palabra de la que cuelga el submenú es la palabra sin tabular inmediatamente anterior.

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

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

Carrera: Computación e Informática Curso: Visual Basic


45

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

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

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

El carácter & no tiene porqué ir precisamente al comienzo de la palabra. Puede ir en el medio de la


palabra. De esta forma se subrayará una letra intermedia.

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

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

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

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

Caption Name Tabulada

Edición mnuEdicion NO
Copiar mnuCopiar SI
Cortar mnuCortar SI
Pegar mnuPegar SI

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

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

La sintaxis de este método es la siguiente :

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

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


omitirse.

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

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

Constante (posición) Valor Descripción

Carrera: Computación e Informática Curso: Visual Basic


46
vbPopupMenuLeftAlign 0 (Predeterminado) El lado izquierdo del menú se
sitúa en x.
vbPopupMenuCenterAlign 4 El menú emergente se centra en x.
vbPopupMenuRightAlign 8 El lado derecho del menú se sitúa en x.

Constante (comportamiento) Valor Descripción

vbPopupMenuLeftButton 0 (Predeterminado) Los elementos del


menú emergente sólo reaccionan a los
clic del mouse cuando se use el botón
primario del mouse.
vbPopupMenuRightButton 2 Los elementos del menú emergente
reaccionan a los clic del mouse cuando se
usen los botones primario o secundario.

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

X, y Parámetro(s) opcionales que especifican las coordenadas x e y donde va a aparecer el menú


emergente. Si no se especifican, aparecerá donde esté el puntero del mouse. Las unidades de medida
de las coordenadas x e y se definen mediante la propiedad ScaleMode.

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

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

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)


If Button = 2 Then
PopupMenu mnuEdicion, , , , mnuCopiar
End If
End Sub

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

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

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

Ejercicio propuesto: un editor de texto, con un menú que diga Copiar | Cortar | Pegar donde
pueda utilizar el portapapeles. Ahora es posible que le cueste un poco de trabajo. Pero este
ejercicio lo va a repetir con casi todas las aplicaciones que realice en su vida profesional.

Carrera: Computación e Informática Curso: Visual Basic


47

CAPITULO VII

Funciones y procedimientos

Procedimientos
Un Procedimiento en Visual Basic es un trozo de código que realiza una determinada tarea. Un
procedimiento es el código que asociamos a un evento de un control (CommandButton_Click,
Form_Load, ...). Un control puede tener por lo tanto, muchos procedimientos asociados. Uno a cada
uno de sus eventos.

Si queremos realizar una determinada tarea en un programa, y esta tarea se repite muchas veces en
ese programa, podemos, por ejemplo, repetir el código tantas veces como sea necesario en los puntos
del programa que así lo pidan. Esto nos llevaría a escribir líneas y líneas repetidas en nuestras
aplicaciones, con el consiguiente incremento de trabajo y del volumen de la aplicación.

Podemos hacer otra cosa mas práctica y elegante. Escribir ese código una sola vez, creando con él un
Procedimiento. Este Procedimiento tendrá un nombre, y cada vez que queramos que se ejecute ese
código bastará con nombrar por ese nombre al Procedimiento.

Un procedimiento puede insertarse en un Módulo o en Formulario. Para crear un Procedimiento basta


con hacer click en la Barra de Menú de VB en Insertar | Procedimiento. Observará que la palabra
Procedimiento del Menú desplegable está deshabilitada si no está abierta ninguna ventana de
código. Para habilitarla, abra la ventana de código del Formulario o Módulo donde quiere insertar el
nuevo Procedimiento.

Una vez hecho Click en Insertar | Procedimiento le aparecerá esta ventana :

En esta ventana debe teclear el nombre que quiere dar al Procedimiento. En tipo debe elegir la opción
Procedimiento (Veremos mas adelante la Función y en otro capítulo las opciones Propiedad y
Evento) y en el Ambito debe elegir Public o Private dependiendo del ámbito que quiera darle :

Public. Se podrá acceder a él desde cualquier Formulario o Módulo del programa.


Dependiendo de donde se haya insertado el Procedimiento (Formulario o Módulo), debe citarse de la
siguiente forma :

Si se ha insertado en un Módulo, puede citarse solamente por su nombre. Puede citarse también por
el nombre del módulo seguido por el nombre del procedimiento, separando ambos por un punto. Si el
procedimiento tiene por nombre NombreProcedimiento y se ha insertado en el Módulo1 puede citarse
de las dos formas siguientes en cualquier parte del programa:

NombreProcedimiento

Carrera: Computación e Informática Curso: Visual Basic


48
Modulo1.NombreProcedimiento

Si se ha insertado en un Formulario, desde ese Formulario basta con citarle por su nombre. Desde
otro Formulario o Módulo, hay que citarlo mediante el nombre del Formulario donde está insertado,
seguido del nombre del procedimiento, separados por un punto.

Private. Si elige este ámbito, sólo se podrá acceder a ese Procedimiento desde el Formulario o
Módulo donde se haya insertado.

La caja de opción (Check) que pone Todas las variables locales como estáticas nos va a poner
todas las variables declaradas dentro del procedimiento como estáticas (No ponen a cero o nulo su
valor cuando salimos y volvemos a entrar en ese procedimiento). Puede ahorrarnos un poco de
código.

El código de los Procedimientos se guarda en el General del Formulario o Módulo donde se han
insertado :

Para llamar a un procedimiento desde cualquier parte del código basta con escribir en una línea el
nombre del procedimiento.

fpublico

Muchos programadores anteponen la palabra Call

Call fpublico

No hace falta poner Call, aunque Visual Basic lo admite. Algunos programadores me dicen que al
poner Call, siempre se enteran mejor de que están llamando a un procedimiento. Me parece muy bien,
y creo que es una buena razón. Pero no existe otra razón para ello.

Los datos que se puedan generar en un procedimiento debe extraerlos de ese procedimiento mediante
variables. Verá que con las funciones es distinto.

Cuando se llama a un procedimiento, se lleva a ese procedimiento la condición de tratamiento de


errores que existe en el procedimiento desde el que se llamó. Por ejemplo:

Private Sub Boton1_Click()


On Error GoTo RutErr

Lineas de código de este procedimiento


„Llamada al Procedimiento Calcula_Dietas

Carrera: Computación e Informática Curso: Visual Basic


49
Calcula_Dietas

Mas líneas de código de este procedimiento

RutErr:
End Sub

Si al ejecutarse el procedimiento Calcula_Dietas ocurre un error, al detectarse ese error interceptable,


el programa salta a ejecutar la línea RutErr del procedimiento Boton1_Click.

Esto puede producirse serios problemas a la hora de depurar su programa. Para evitar que suceda
eso, y que se pare la ejecución del programa en la línea del procedimiento Calcula_Dietas en la que se
produjo el error, inicie este procedimiento con una instrucción que anule la condición de tratamiento
de errores:

Public Sub Calcula_Dietas()


On Error Goto 0
…………….
Ens Sub

Funciones
Una función es una forma especial de realizar un procedimiento. En realidad es un procedimiento al
que le pasamos una o varios parámetros con los que realizará una operación (cualquier operación, no
tiene porqué ser matemática) y obtendrá un resultado de esos parámetros. Este resultado puede
leerse desde otra parte de la aplicación en una variable que tienen el mismo nombre que la función.
La forma de obtener los datos de la función es llamar directamente a esa función, como verá un poco
más adelante.

Para insertar una Función se procede de igual forma que para un Procedimiento, pero marcando el
botón de opción Tipo Función en la caja de diálogo de la figura anterior.

El ámbito de una Función es el mismo que el un Procedimiento. Si se declara Pública puede usarse en
toda la aplicación. Si se declara Privada, solamente en el Formulario o Módulo donde se haya
insertado.

Para llamar a una Función son válidos igualmente los criterios expuestos para los Procedimientos en
cuanto a la sentencia Call.

Parámetros de una Función


Se dijo anteriormente que a una Función se le pasan uno o varios parámetros con los que va a realizar
alguna operación. Al declarar la Función, hay que decirle el nombre de los parámetros que se le van a
pasar, de que tipo son (String, Integer, Boolean, ...) y cómo se le van a pasar (ByVal, ByRef,
ParamArray). Esto hay que introducírselo en la propia declaración

Public Function MiFuncion(ByVal Variable1 as String, ByVal


Variable2 as Integer)

End Function
La función MiFuncion sabe que debe recibir dos parámetros, y que el primero será una cadena de
caracteres y el segundo un integer. Los nombres Variable1 y Variable2 son los nombres que usa la
Función internamente. No tienen porqué coincidir con los nombres que tengan las variables que
contienen esos valores en otras partes del programa.

Una función siempre da un resultado. Este resultado se le introduce en una variable que tiene el
mismo nombre que la función. Esta variable no hace falta declararla, ya que la declaración de la
función lleva implícito que exista una variable con ese nombre.

Carrera: Computación e Informática Curso: Visual Basic


50
Imaginemos que lo que va a hacer la función de este ejemplo es tomar una cadena de caracteres
(Variable1) y obtener de ella otra cadena con los caracteres iniciales de la primera, tantos caracteres
como nos indique la segunda variable (Variable2)

Si, por ejemplo, le pasásemos los valores :

Variable1 = Guía del Estudiante


Variable2 = 14

Obtendríamos como resultado la cadena Guía del Estud

Ya se habrá dado cuenta de que debemos emplear Left para obtener los caracteres iniciales de una
cadena. Nuestra función quedará de la forma :

Public Function MiFuncion(ByVal Variable1 as String, ByVal Variable2 as Integer) As String


MiFuncion =Left (Variable1, Variable2)
End Function

(Observe que hemos añadido la expresión As String al final de la declaración. Esto quiere
significa que le estamos diciendo a la función que su resultado es un String,)

Donde MiFuncion es una variable que se ve en todo el ámbito de la función. Para llamar a la función,
basta con citarla por su nombre y ponerle los parámetros necesarios. Cuando esté tecleando el código,
Visual Basic le invitará a introducir los parámetros citándole su nombre. (En nuestro ejemplo, ByVal
Variable1 as String, ByVal Variable2 as Integer

En cualquier parte del programa podemos poner :

Label1.Caption = MiFuncion (Guía del Estudiante, 14)

y Label1 tomará como Caption la cadena Guía del Estud

Pruebe esto con una pequeña aplicación. En un formulario, ponga un TextBox (Text1) donde va a
introducir la cadena original, otro TextBox donde va a introducir el número de caracteres a tomar, y
un Label (Label1) donde va a ver el resultado. Ponga un Botón de comando (Command1) donde
llamará a la función. Inserte una función (MiFuncion) en ese formulario :

Private Sub Command1_Click()


Label1.Caption = MiFuncion(Text1.Text, Val(Text2.Text))
End Sub

Public Function MiFuncion(ByVal Variable1 As String, ByVal Variable2 As Integer) As String


MiFuncion = Left(Variable1, Variable2)
End Function

Puede pensar que para hacer esta cosa tan elemental no merece la pena hacer una función.
Efectivamente. Bastaría con poner en el botón Command1_Click el siguiente código :

Label1.Caption = Left(Text1.Text, Val(Text2.Text))

y funcionaría igual. Lógicamente, una función debe introducirse cuando vaya a realizar un código un
poco mas complejo, y sobre todo, cuando se va a repetir en muchos procedimientos.

Hemos visto que los parámetros de la función pueden pasarse Por Valor (ByVal), caso del ejemplo
anterior, y Por Referencia (ByRef). ¿Cuál es la diferencia ? La diferencia es que si le pasa un valor
por valor (ByVal) ese valor, aunque lo cambie la función internamente, ese cambio no se manifiesta
fuera de ella. Si se pasa por referencia (ByRef), y la función cambia el valor de esa variable, ese
cambio se mantiene fuera de la función.

Veamos esto de una forma muy sencilla : Vamos a hacer una función que multiplica dos números.
Pero dentro de la función vamos a cambiar uno de esos números, sumándole 2. Una vez realizada la
operación presentamos el valor de los dos factores en dos Label a ver si ha cambiado. Insertemos dos

Carrera: Computación e Informática Curso: Visual Basic


51
funciones, MultiplicaA y MultiplicaB. En MultiplicaA le introducimos los datos Por Valor y en
MultiplicaB por Referencia.

Public Function MultiplicaA(ByVal X1 As Integer, ByVal X2 As Integer) As Integer


x1 = x1 + 2
MultiplicaA = x1 * x2
End Function

Public Function MultiplicaB(ByRef X1 As Integer, ByRef X2 As Integer) As Integer


x1 = x1 + 2
MultiplicaB = x1 * x2
End Function

Las dos funciones son idénticas, excepto en la forma de pasarle los parámetros. Pongamos un Botón
de Comando para multiplicarlo con MultiplicaA y otro con MultiplicaB. Al final del procedimiento click
de cada uno de ellos presentamos las dos variables que se pasan a la función en sendos Label.
Cuando se usa MultiplicaA el valor de X1 (pepe en el CommandButton) se mantiene. En MultiplicaB
cambia al valor pepe+2

Private Sub Command1_Click()


Dim pepe As Integer
Dim juan As Integer
pepe = Val(Text1)
juan = Val(Text2)
Label1 = MultiplicaA(pepe, juan)
Label2 = pepe
Label3 = juan
End Sub

Tras esto, se pone en Lable2 el valor pepe

Private Sub Command2_Click()


Dim pepe As Integer
Dim juan As Integer
pepe = Val(Text1)
juan = Val(Text2)
Label1 = MultiplicaB(pepe, juan)
Label2 = pepe
Label3 = juan
End Sub

Tras esto, se pone en Label2 el valor pepe + 2 (se mantienen el cambio realizado en la función
MultiplicaB x1 = x1 + 2

No queda ahí la cosa. Un valor puede pasarse también por ParamArray. En principio parece que esto
ya es para nota. No es para tanto.

Vamos a ver que sucede cuando queremos realizar una suma. La suma de los importes de varios
productos de un ticket de compra. En principio no sabemos cuantos productos va a comprar un
cliente, por lo tanto no sabemos a priori cuantos parámetros le tenemos que pasar. Para pode pasar
un número indeterminado de parámetros se los pasamos como PamArray :

Public Sub sumacifras(ParamArray cifra())


Dim I As Integer
Dim suma As Integer
For I = LBound(cifra) To UBound(cifra)
suma = suma + CInt(cifra(I))
Next I
Label1.Caption = suma
End Sub

Private Sub Command2_Click()


sumacifras 1, 2, 3, 4, 5, 6, 7, 8
End Sub

Carrera: Computación e Informática Curso: Visual Basic


52

Este código nos suma las cifras 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8

La variable que se pasa con ParamArray debe ser Variant

Existe otra forma de pasar parámetros : Optional

Cuando se declara una función con un determinado número de parámetros, es necesario pasárselos
todos. Si no se hace así, VB nos dará un error. Pero puede que algún parámetro no exista siempre.
Cuando uno o varios de los parámetros que se pasan a una función son opcionales, se le pueden pasar
como Optional.

Se pueden pasar uno o mas parámetros como Optional. Las condiciones para los parámetros
opcionales es que ocupen los últimos lugares y que sean del tipo Variant

Hagamos un ejemplo en el que vamos a poner en un TextBox (TB4) el nombre y apellidos de una
persona. El segundo apellido se lo pasamos como Opcional. La declaración de la función será :

Public Function SUMANOMBRES(NOMBRE As String, APE1 As String, Optional APE2 _


As Variant)
„ Debemos detectar si se le ha pasado el parámetro opcional. Usamos para ello IsMissing
If IsMissing (APE2) Then
TB4.Text = NOMBRE & " " & APE1
Else
TB4.Text = NOMBRE & " " & APE1 & " " & APE2
End If
End Function

Los parámetros los tomamos de tres TextBox (TB1, TB2 y TB3, siendo este último el que es opcional.
En un botón de comando ponemos este código :

Private Sub Command1_Click()


If TB3 <> "" Then
SUMANOMBRES TB1, TB2, TB3
Else
SUMANOMBRES TB1, TB2
End If
End Sub

Salir de una función


La forma natural de salir de una función es cuando se ejecuta todo su código. Al final siempre tiene la
sentencia End Function

Se puede salir de una función antes de que termine. Por ejemplo, si se cumple una determinada
condición, se puede salir de la función mediante la sentencia Exit Function

CAPITULO VIII
Uso del ADO (ActiveX Data Object)

OBJETO CONNECTION.-
Un objeto Connection representa el enlace o la conexión a algún manejador de Base de Datos.
Para hacer un enlace a un Manejador de Base de Datos debemos declarar una variable de tipo
connection para eso debemos hacer lo siguiente:

1. Primero hacer la referencia al ADO (Nos vamos al menú Proyecto – Referencias y se marca la
opción Microsoft Actives DataObjects 2.5 Library)
Nota : Esta referencia es necesaria para objetos de tipo Connection y recordset.

2. Declarar la variable de tipo Connection

Carrera: Computación e Informática Curso: Visual Basic


53
Dim cn As ADODB.Connection .- donde cn es el nombre de la variable de tipo connection

3. Instanciar la variable de tipo connection


Set cn = New ADODB.Connection .- Se instancia con la palabra NEW , Si la variable no es
instanciada no se podrá utilizar
Nota.- Los pasos 2 y 3 se pueden simplificar en uno solo
Dim cn As New ADODB.Connection .- aqui se esta declarando la variable y a la vez se esta
instanciando (Observen la palabra New)

4. Declarar la ubicación de la variable de tipo connection


cn.CursorLocation = tipo de cursor
Estos pueden ser adUseClient o adUseServer si se escoge aduseClient el cursor se creara al
lado del cliente si se escoge adUseServer el cursor se creara al lado del servidor

5. Abrir la conexión
cn.open “cadena de conexión” .- donde la cadena de conexión puede variar según a que
manejador de base de datos queremos conectarnos
Para Acces La cadena de conexión sería:
"Provider=Microsoft.Jet.OLEDB.4.0;Datasource=d:\micarpeta\Mibase.mdb”
Donde el proveedor indica que la conexión será con Access y el data source indica la ubicación
y el nombre de la base de datos
Para SQL Server la conexión sería:
"Provider=sqloledb;uid=sa;database=Mibase;server=a1_10”
Donde el proveedor indica que la conexión es a SQL el UID hace referencia al usuario del SQL
ya que SQL server maneja usuarios y el usuario SA es el usuario por defecto, Database hace
referencia a la base de datos a la cual se quiere conectar y server el nombre de la maquina
donde se encuentra la base de Datos.

OBJETO RECORDSET.-
Un objeto Recordset representa los registros de una tabla o una consulta a la cual nosotros queremos
acceder. Para manipular la información de una tabla nosotros debemos declarar una variable de tipo
recordset y esta variable contendrá todos los campos y registros de la tabla o la consulta a la cual
queremos acceder.
Ejemplo:
Para utilizar una variable de tipo recordset lo que vamos a hacer es lo siguiente

1. En este caso vamos a trabajar de la mano con la variable de tipo connection entonces lo
primero es declarar,instanciar y abrir una variable de tipo connection

2. Declarar la variable de tipo Recordset


Dim rs As ADODB.Recordset .- donde rs es el nombre de la variable de tipo recordset

3. Instanciar la variable de tipo Recordset


Set rs = New ADODB.Recordset .- Se instancia con la palabra NEW , Si la variable no es
instanciada no se podrá utilizar
Nota.- Los pasos 2 y 3 se pueden simplificar en unos solo
Dim rs As New ADODB.Recordset .- aqui se esta declarando la variable y a la vez se esta
instanciando (Observen la palabra New)

4. Declarar la ubicación de la variable de tipo Recordset


rs.CursorLocation = tipo de cursor estos pueden ser adUseClient o adUseServer si se escoge
aduseClient el cursor se creara al lado del cliente si se escoge adUseServer el cursor se creara
al lado del servidor

5. Abrir la variable de tipo Recordset


rs.open “tabla o consulta sql”,cn ,tipo de cursor, tipo de bloqueo

- donde tabla o consulta sql es el nombre de la tabla o la consulta sql al cual queremos acceder
- cn es el nombre de la variable de tipo connection
- Tipo de cursor hace referencia a como va a trabajar la variable de tipo recordset
- Tipo de Bloqueo hace referencia a como se va a bloquear la tabla cuando un usuario acceda a
la tabla

Carrera: Computación e Informática Curso: Visual Basic


54
Tipos de Cursor del Recordset
Un cursor corresponde a un tipo de restricción aplicable al Recordset, y que señala la forma en que se
podrá recorrer este objeto. Dependiendo de cómo se configuren las propiedades del tipo de cursor del
objeto Recordset, se puede recorrer y actualizar los registros. Los cursores de la base de datos se
comportan como punteros que permiten encontrar un elemento específico de un conjunto de registros.
Los cursores son especialmente útiles para recuperar y examinar registros, y después realizar
operaciones basadas en dichos registros. Si lo que necesitamos es recorrer el Recordset en forma
secuencial, lo mejor es utilizar el cursor por defecto ya que es el que consume menos recursos,
agilizando las operaciones. Por el contrario, si necesitamos recorrer el Recordset de otra forma, estos
son los tipos de cursores existentes:

Tipo de Cursor Valor Descripción


adOpenForwardOnly 0 Es el cursor por defecto y nos permite recorrer el Recordset en
forma secuencial.
adOpenKeySet 1 Permite movernos hacia delante y atrás. Permite observar las
modificaciones en los datos del Recordset , no así si existen
ingresos de nuevos registros.
adOpenDynamic 2 Permite movernos en cualquier sentido, viendo cualquier
modificación, ingreso o eliminación de datos del Recordset.
adOpenStatic 3 Permite movernos en cualquier sentido, pero no se verá ningún
cambio ocurrido en la tabla.

Tipos de Bloqueo del Recordset


Los bloqueos deben ser utilizados casi obligatoramente en Recordset que hacen referencia a bases de
datos con alta concurrencia de usuarios. Mediante la utilización de estos bloqueos podremos controlar
el tipo de acceso que le daremos a los demás usuarios cuando alguien ya se encuentre modificando el
Recordset. Los tipos de bloqueos que podremos utilizar son los siguientes:

Tipo de Bloqueo Valor Descripción


adLockReadOnly 1 Es el bloqueo por defecto y no permite modificar los registros de la
tabla.
adLockPessimisti 2 Una vez que alguien abre la tabla, ésta queda bloqueada para los
c demás usuarios. Con este modo se asegura la integridad de los
datos.
adLockOptimistic 3 La tabla sólo será bloqueada a los demás usuarios mientras se
ejecute una operación Update. De esta forma la tabla se bloqueará
durante mucho menos tiempo que con el método anterior.
adBatchOptimisti 4 Los registros serán actualizados en modo batch.
c

Ejemplo 1:

rs.Open "Alumnos",cn,adOpenDynamic ,adLockOptimistic .-

Aquí se esta abriendo la tabla alumnos de la base de datos a la cual se conecto la variable cn de tipo
de cursor fue adOpenDynamic y el tipo de bloqueo fue adLockOptimistic

Este ejemplo se puede definir también de las siguiente maneras:


rs.Open "Alumnos",cn,2,3 o
rs.Open “Alumnos”,cn
rs.LockType = adLockOptimistic
rs.CursorType = adOpenDynamic

Ejemplo 2:

Rs.Open “Select * from alumnos where sueldo > 100”,cn,2,3

En este ejemplo se esta abriendo la variable rs con una consulta sql


Para acceder a un determinado campo de la variable de tipo recordset se puede hacer de la siguiente
manera:

Carrera: Computación e Informática Curso: Visual Basic


55

Ejemplo: vamos a suponer que la variable rs tiene dos campos cod y nom
Rs(0)
Rs.Fields(0)
Rs!cod
harían referencia al campo cod (va 0 por que es el índice del campo todos los índices empiezan con 0)

Rs(1) ,Rs.Fields(1), Rs!nom .- harían referencia al campo nom


Metodos del Recordset.-
Para mover la variable de tipo Recordset he aquí los métodos que pueden ser empleados:

Método Descripción
MoveFirst Posiciona el cursor en el primer registro
MoveLast Posiciona el cursor en el último registro
MoveNext Avanza el cursor en un registro
MovePrevious Retrasa el cursor en un registro

Las propiedades relacionadas con el movimiento a través del Recordset son las siguientes:

Propiedad Descripción
AbsolutePosition Nos indica el número del registro en el que nos encontramos.
También lo podemos utilizar para movernos a una determinada
posición. Ej.: rs.AbsolutePosition = 5
BOF Es True cuando nos encontramos al principio del Recordset,
antes del primer registro.
EOF Es True cuando nos encontramos al final del Recordset,
después del último registro.
RecordCount Nos señala el número de registros que contiene el objeto
Recordset.

Propiedades y colecciones del Recordset

Ahora que hemos visto los aspectos básicos de un Recordset entregaremos al lector una guía con los
principales métodos asociados a este objeto, de forma que se pueda profundizar en el estudio y
utilización del objeto Recordset.
Método Descripción
AddNew Crea un nuevo registro en el Recordset. Sólo será
insertado en la tabla cuando se aplique el método Update.
Ejemplo:

rs.AddNew
rs(0) = "Rodrigo"
rs(1) = "Rohland"
rs.Update
CancelUpdate Cancela un proceso de actualización, ya sea de creación o
de modificación de registros.
Clone Crea una copia del objeto Recordset. Ejemplo:
Set rs2 = rs.Clone
Close Cierra el objeto Recordset utilizado.
Delete Elimina del Recordset el registro que estemos utilizando
en ese momento.
GetRows Crea un arreglo con el contenido del Recordset. Si quieres
aprender más sobre este método visita.
Move Permite movernos hacia arriba si le indicamos un número
positivo, o hacia abajo si le indicamos uno negativo.
Ejemplo:
rs.Move -2
MoveFirst Nos lleva al primer registro del Recorset.
MoveNext Nos permite recorrer secuencialmente el Recordset,
avanzando un registro hacia adelante.
MoveLast Nos lleva al último registro del Recordset.

Carrera: Computación e Informática Curso: Visual Basic


56
MovePrevious Nos permite recorrer en forma inversa el Recordset,
avanzando un registro hacia atrás. Nos lleva al registro
anterior.
NextRecordSet En algunos casos una consulta SQL puede devolver más
de un Recordset. Con este método borraremos el
Recordset actual y avanzaremos al siguiente.
Open Abre el objeto Recordset, cargando en él los resultados de
la consulta efectuada a una o varias tablas. Ejemplo:
rs.Open SQL, Cn, cursor, bloqueo
Requery Con este método se puede actualizar el objeto Recordset,
observándose los cambios ocurridos en los datos.

Update Actualiza la tabla a la que hace referencia el objeto


Recordset, haciendo efectivos los cambios realizados.

Otras propiedades
Filter .- Sirve para filtrar la variable de tipo recordset
Rs.Filter “Condicion de filtro”
Ejemplo :
rs.Filter = “sueldo > 100” .- aquí se esta filtrando los datos de la variable Rs donde el sueldo sea
mayor a 100 (la condicion va como cadena)
Find .- Sirve para buscar en base a un criterio, esta funcion hace que el puntero se ubique en la
posición del registro que se ha buscado.
Rs.find “Condicion de Busqueda”
Ejemplo :
Rs.Find "cod='A001'" .- Aquí se esta buscando el registro que tenga como codigo el „A001‟ si en caso
existe el puntero se ubica en ese registro caso contrario se va al fin de archivo (EOF toma el avlor de
True)

Ejemplos Demostrativos 1:
Mantenimiento de Datos

Nota: Activar la referencia Microsoft ActiveX Data Objects 2.7 Library

Public cn As String
Sub datos()
Sub main() Text1.Text = RsEmpleados(0)
cn = "Provider=Microsoft.jet.4.0.oledb; Text2.Text = RsEmpleados(1)
data source=c:\sistema\bdventas.mdb" Text3.Text = RsEmpleados(2)
Form1.Show Combo1.Text = RsEmpleados(3)
End Sub Text5.Text = RsEmpleados(4)
Text6.Text = RsEmpleados(5)
Dim RsEmpleados As New Text7.Text = RsEmpleados(6)
ADODB.Recordset Text8.Text = RsEmpleados(7)

Carrera: Computación e Informática Curso: Visual Basic


57
End Sub If rpta = vbYes Then
RsEmpleados.AddNew
Call asignar
Sub limpiar() RsEmpleados.Update
Text1.Text = "" End If
Text2.Text = "" End Sub
Text3.Text = ""
Combo1.Text = "" Private Sub Command7_Click()
Text5.Text = "" Call limpiar
Text6.Text = "" End Sub
Text7.Text = ""
Text8.Text = "" Private Sub Command8_Click()
Text1.SetFocus Call deshabilitar
End Sub End Sub
Sub deshabilitar()
Sub asignar() Text1.Enabled = False
RsEmpleados(0) = Text1.Text Text2.Enabled = False
RsEmpleados(1) = Text2.Text Text3.Enabled = False
RsEmpleados(2) = Text3.Text Combo1.Enabled = False
RsEmpleados(3) = Combo1.Text Text5.Enabled = False
RsEmpleados(4) = Text5.Text Text6.Enabled = False
RsEmpleados(5) = Val(Text6.Text) Text7.Enabled = False
RsEmpleados(6) = Val(Text7.Text) Text8.Enabled = False
RsEmpleados(7) = CDate(Text8.Text)
End Sub End Sub

Private Sub Command1_Click()


RsEmpleados.MoveFirst
Call datos
End Sub Private Sub Command9_Click()
Dim rpta As Integer
Private Sub Command2_Click() rpta = MsgBox("Desea eliminar los datos?",
RsEmpleados.MovePrevious vbQuestion + vbYesNo, "Aviso")
If RsEmpleados.BOF Then If rpta = vbYes Then
RsEmpleados.MoveFirst RsEmpleados.Delete
End If Call deshabilitar
Call datos RsEmpleados.MoveFirst
End Sub Call datos
End If
Private Sub Command3_Click()
RsEmpleados.MoveNext End Sub
If RsEmpleados.EOF Then
RsEmpleados.MoveLast Private Sub Command10_Click()
End If End
Call datos End Sub
End Sub
Private Sub Form_Load()
Private Sub Command4_Click() RsEmpleados.CursorLocation = adUseClient
RsEmpleados.MoveLast RsEmpleados.Open "select * from
Call datos empleados", cn, adOpenDynamic,
End Sub adLockOptimistic
Set DataGrid1.DataSource = RsEmpleados
Private Sub Command5_Click() Combo1.AddItem ("Masculino")
Call limpiar Combo1.AddItem ("Femenino")
End Sub End Sub

Private Sub Command6_Click() Private Sub Form_Unload(Cancel As


Dim rpta As Integer Integer)
rpta = MsgBox("Desea grabar los datos?", Set RsEmpleados = Nothing
vbQuestion + vbYesNo, "Aviso") End Sub

Carrera: Computación e Informática Curso: Visual Basic


58

Ejemplos Demostrativos 2:
En el modulo
Public cn As String
Public RsEmpleados As New ADODB.Recordset
Public Rsclientes As New ADODB.Recordset

Sub main()
cn = "Provider= Microsoft.jet.4.0.oledb; data source=c:\sistema\bdventas.mdb"
RsEmpleados.CursorLocation = adUseClient
RsEmpleados.Open "select * from empleados", cn, adOpenDynamic, adLockOptimistic
Rsclientes.CursorLocation = adUseClient
Rsclientes.Open "select * from Clientes", cn, adOpenDynamic, adLockOptimistic
Form2.Show
End Sub

Consulta 1:

En el formulario
Private Sub DataCombo1_Change()
RsEmpleados.MoveFirst
Do While True
If RsEmpleados(1) = DataCombo1.Text Then
Text1.Text = RsEmpleados(0)
Text2.Text = RsEmpleados(1)
Text3.Text = RsEmpleados(2)
Text4.Text = RsEmpleados(3)
Text5.Text = RsEmpleados(4)
Text6.Text = RsEmpleados(5)
Text7.Text = RsEmpleados(6)
Text8.Text = RsEmpleados(7)
Exit Do
End If
RsEmpleados.MoveNext
Loop
End Sub
Private Sub Form_Load()

Carrera: Computación e Informática Curso: Visual Basic


59
Set DataCombo1.RowSource = RsEmpleados
DataCombo1.ListField = "nombre"
End Sub

Consulta 2:

En el formulario

Private Sub Command1_Click()


RsEmpleados.Sort = "cod_emp"
End Sub

Private Sub Command2_Click()


RsEmpleados.Sort = "nombre"
End Sub

Private Sub Form_Load()


Set DataGrid1.DataSource = RsEmpleados
DataGrid1.AllowUpdate = False
DataGrid1.AllowAddNew = False
DataGrid1.AllowDelete = False
End Sub
Private Sub Text1_Change()
If Trim(Text1.Text) = "" Then
RsEmpleados.Filter = adFilterNone
RsEmpleados.Requery
Else
RsEmpleados.Filter = ("nombre like '" & Text1.Text & "%" & "'")
If RsEmpleados.RecordCount = 0 Then
MsgBox "No existen empleados...", , "Aviso"
RsEmpleados.Filter = adFilterNone
RsEmpleados.Requery
Text1.Text = ""
End If
End If
End Sub

Carrera: Computación e Informática Curso: Visual Basic

También podría gustarte