Contenu connexe
Similaire à Manual visual-basic-6-0
Similaire à Manual visual-basic-6-0 (20)
Plus de cristianconchetumare
Plus de cristianconchetumare (15)
Manual visual-basic-6-0
- 1. DEPARTAMENTO DE INFORMÁTICA
VISUAL BASIC 6.0
Iniciar un proyecto en Visual Basic
Se deben ejecutar los siguientes pasos para iniciar la aplicación:
1. Seleccionar el botón Inicio de Windows
2. Elegir la carpeta Programas
3. Localizar la carpeta Microsoft Visual Studio 6.0
4. Dar clic sobre el icono Microsoft Visual Basic 6.0
Luego de haber iniciado Visual Basic
debemos indicarle a la aplicación que tipo
de proyecto nuevo deseamos crear.
Elegimos del cuadro de diálogo Nuevo
Proyecto la opción EXE estándar que se
encuentra en la cejilla Nuevo, finalmente
presionamos el botón Abrir.
Profesor David Molina S.© 2009 1
- 2. COLEGIO MARISTA DE ALAJUELA
Descripción de la pantalla Principal
Barra de
Barra Menús
Estándar
Explorador de
proyectos
Cuadro de
Herramientas
Ventana de
Formulario Propiedades
Ventana
Posición del
formulario
1. Explorador de proyectos: permite visualizar los elementos (formularios, módulos, etc.)
que contiene un determinado proyecto.
2. Ventana de Propiedades: muestra los elementos que caracterizan a un determinado objeto
en tiempo de diseño y permite modificarlos.
3. Ventana Posición del formulario: permite establecer en que lugar de la pantalla aparecerá
un determinado formulario.
4. Cuadro de Herramientas: muestra los objetos estándares que pueden ser agregados a un
formulario. Se puede agregar más objetos e inclusive separarlos por categorías.
Profesor David Molina S.© 2009 2
- 3. DEPARTAMENTO DE INFORMÁTICA
Objetos del Cuadro de Herramientas
Entre los objetos más usados del Cuadro de Herramientas están los siguientes:
Nombre del Objeto Icono Descripción
Label Cuadros de texto o etiquetas.
Campos donde el usuario puede
TextBox
digitar datos.
Subdivisiones dentro de un
Frame
formulario.
CommandButton Botones que efectúan acciones.
Casillas de verificación que
CheckBox
permiten la selección múltiple.
Botones de opción que solo
OptionButton
permiten una única selección.
Campo de datos que posee una
ComboBox
lista desplegable con opciones.
Campo de datos con barras de
ListBox
desplazamiento.
Barra de desplazamiento
HScrollBar
horizontal.
VScrollBar Barra de desplazamiento vertical.
Cronómetro para ejecutar
Timer
acciones por lapsos.
ComboBox, se usa para
DriveListBox
seleccionar una unidad de disco.
ListBox, permite seleccionar
DirListBox directorios de una unidad de
disco.
ListBox, se utiliza para
FileListBox seleccionar archivos de una
unidad de disco.
PictureBox, agrega una imagen
PictureBox con el tamaño establecido cuando
se genera el objeto.
Image, agrega una imagen y la
Image
muestra en su tamaño original.
Profesor David Molina S.© 2009 3
- 4. COLEGIO MARISTA DE ALAJUELA
Agregar un objeto a un Form
Para agregar un objeto lo seleccionamos del Cuadro de Herramientas y damos un clic sobre él
mismo, de seguido sin soltar el botón del mouse se arrastra sobre el Form, para determinar el
tamaño del objeto y finalmente soltamos el botón izquierdo del mouse.
También se puede agregar objetos dando doble clic sobre ellos en el Cuadro de Herramientas y
luego modificar el tamaño.
La ventana de propiedades
Luego de agregar un objeto a un formulario y seleccionarlo, podemos observar como en la
ventana de propiedades se cargan los atributos propios de dicho objeto que pueden ser
modificados en tiempo de diseño. Por ejemplo al agregar un objeto de tipo Label, la ventana de
propiedades se vería de la siguiente manera:
Nombre del objeto: Label1
Tipo de objeto: Label
La lista de atributos de un
objeto se puede ver en
orden alfabético o por
categorías.
Lista de atributos del
objeto
Información general de un
atributo seleccionado de la
lista
Profesor David Molina S.© 2009 4
- 5. DEPARTAMENTO DE INFORMÁTICA
Propiedades del Form
Propiedades en tiempo de ejecución más comunes del Form:
Nombre de la Propiedad Descripción
BackColor Cambia el color de fondo.
Caption Establece el texto en la barra de Título.
Activa o desactiva los botones de minimizar,
ControlBox
maximizar y cerrar.
Consigue colocar un icono junto al texto de la
Icon
barra de titulo.
MaxButton Activa o desactiva el botón maximizar.
MinButton Activa o desactiva el botón minimizar.
Picture Permite establecer una imagen como fondo.
Propiedades del Label
Propiedades en tiempo de ejecución más comunes del Label:
Nombre de la Propiedad Descripción
Ajusta el texto a la izquierda, derecha o al
Alignment
centro.
AutoSize Ajusta el tamaño del cuadro de texto.
BackColor Establece un color de fondo.
Caption Modifica el texto del Label.
Si se encuentra en False no permite modificar
Enabled
el texto en modo de ejecución.
Permite elegir el tipo de letra dentro del
Font
TextBox.
ForeColor Color del texto.
Establece si por defecto el TextBox se
Visible
muestra.
Profesor David Molina S.© 2009 5
- 6. COLEGIO MARISTA DE ALAJUELA
Propiedades del TextBox
Propiedades en tiempo de ejecución más usuales del TextBox:
Nombre de la Propiedad Descripción
Justifica el texto a la izquierda, derecha o al
Alignment
centro.
Si se encuentra en False no permite modificar
Enabled
el texto.
Se utiliza para elegir el tipo de letra dentro del
Font
TextBox.
ForeColor Color del texto.
Si se encuentra en False no permite modificar
Locked
el texto pero sí seleccionarlo.
Establece el número de dígitos máximos que
MaxLength se pueden digitar, si está en cero no hay límite
de dígitos.
Permite que el texto sea agregado en más de
MultiLine
una línea.
Convierte el TextBox en un campo de clave,
es decir, todos los dígitos serán sustituidos por
PasswordChar
el carácter que se coloque en este campo, el
usual es el asterisco (*).
Agrega barras de desplazamiento al TextBox.
ScrollBars
La opción Multicine debe estar en True.
TabIndex Indica el orden de tabulación del TextBox.
Inserta el texto que tendrá el TextBox por
Text
defecto.
Agrega texto de ayuda sobre que datos se
ToolTipText deben digitar en el campo. El texto aparece
cuando se coloca el cursor cerca del TextBox.
Establece si por defecto el TextBox se
Visible
muestra.
Profesor David Molina S.© 2009 6
- 7. DEPARTAMENTO DE INFORMÁTICA
Propiedades del CommandButton
Propiedades en tiempo de ejecución más comunes del CommandButton:
Nombre de la Propiedad Descripción
Caption Modifica el texto del CommandButton.
Si se encuentra en False no permite utilizar el
Enabled
CommandButton.
Se emplea para elegir el tipo de letra dentro
Font
del CommandButton.
Indica el orden de tabulación del
TabIndex
CommandButton.
Agrega texto de ayuda sobre la función del
ToolTipText botón. El texto aparece cuando se coloca el
cursor cerca del CommandButton.
Establece si por defecto el CommandButton
Visible
se muestra.
Orden de Tabulación de los objetos
Cuando se agrega en un Form objetos, conforme se van adicionando, se les asigna un valor en la
propiedad TabIndex. Esta propiedad establece el orden en que serán accesados o enfocados
durante la ejecución cuando se presione la tecla de Tabulación. En caso de que el desplazamiento
no sea el deseado basta con variar el valor de la propiedad TabIndex.
En el siguiente ejemplo se muestran tres campos y el valor de la propiedad TabIndex en cada
campo.
Al iniciar la aplicación el
cursor se posiciona aquí. TabIndex: 0
Al presionar la tecla Tab el
cursor se posiciona aquí. TabIndex: 1
Al presionar la tecla Tab,
nuevamente, el cursor se TabIndex: 2
posiciona aquí.
Profesor David Molina S.© 2009 7
- 8. COLEGIO MARISTA DE ALAJUELA
Eventos de los objetos
Para poder programar un evento en un determinado objeto (Form, TextBox, Label, Command
Button, etc), se da doble clic sobre el elemento, cargando así la ventana de código:
Nombre del Procedimiento del
objeto. objeto donde se va a
programar.
En la imagen anterior podemos ver la ventana de código para programar un evento del objeto
Command1 cuando sea presionado.
Cualquier línea de código que tenga como primer carácter un apóstrofo ( ' ) se convierte en
comentario, es decir no será tomado en cuenta cuando se compile el código. Esta opción es muy
útil para documentar las aplicaciones o desactivar alguna línea de código de forma temporal.
Si deseamos cambiar el evento donde vamos a programar, solo es necesario dar un clic en la
flecha de procedimientos (por defecto siempre se carga el evento Clic) y elegir el nuevo evento.
Profesor David Molina S.© 2009 8
- 9. DEPARTAMENTO DE INFORMÁTICA
Tipos de datos
Todos los lenguajes de programación manipulan los datos de una manera determinada
dependiendo del tipo que éste sea. A continuación se muestran los tipos de datos más usados:
Tipo Rango
Boolean True o False
Byte 0 a 255
Integer -32.768 a 32767
Long -2.147.483.648 a 2.147.483.647
Currency -922.337.203.685.477,5808 a
922.337.203.685.477,5807
Single -3.402823E+308 a 3.402823E+308
Double -1.79769313486232E+308 a
1.79769313486232E+308
String 1 a 65.400 caracteres
Declaración de variables
Las variables son espacios en memoria donde podemos almacenar un dato de un determinado
tipo. Para declarar una variable debemos utilizar la siguiente sintaxis:
Dim <nombre de la variable> As <tipo de dato>
Conversión de datos
Las siguientes Funciones nos permiten convertir el valor de un campo o variable a otro tipo de
dato. Cuando se asignan valores que se encuentran en un TextBox, por ejemplo, es necesario
convertir el dato del TextBox al tipo de dato de la variable, ya que los TextBox manejan todos los
datos como String.
Nombre de la Función Tipo de dato al que convierte
CBool (expresión) Booleano
CByte (expresión) Byte
CCur (expresión) Currency
CDbl (expresión) Double
CInt (expresión) Integer
CLng (expresión) Long
CSng (expresión) Single
CStr (expresión) String
Profesor David Molina S.© 2009 9
- 10. COLEGIO MARISTA DE ALAJUELA
Propiedades del ComboBox
Propiedades en tiempo de ejecución más comunes del ComboBox:
Nombre de la Propiedad Descripción
Si se encuentra en False no permite utilizar el
Enabled
ComboBox
Permite elegir el tipo de letra dentro del
Font
ComboBox
TabIndex Indica el orden de tabulación del ComboBox
List Permite agregar elementos al ComboBox
Si se encuentra en False no permite modificar
Locked
el texto pero sí seleccionarlo.
Sorted Muestra los elementos de la lista en orden
Text Establece el texto por defecto en el ComboBox
Agrega texto de ayuda sobre la función del
ToolTipText ComboBox. El texto aparece cuando se coloca
el cursor cerca del objeto.
Visible Establece si por defecto el ComboBox se
muestra.
Agregar elementos al ComboBox en tiempo de Diseño
Luego de agregar un objeto ComboBox a un Form, se debe modificar la propiedad List del
ComboBox como se muestra a continuación:
1. Clic sobre la
flecha de la
propiedad
2. Agregamos el
dato y presionamos
la tecla Enter
Profesor David Molina S.© 2009 10
- 11. DEPARTAMENTO DE INFORMÁTICA
Repetimos el procedimiento para agregar más elementos al ComboBox.
El ComboBox en tiempo de ejecución se verá como se muestra en la siguiente imagen:
Agregar elementos al ComboBox en tiempo de Ejecución
Los elementos que se agregan en tiempo de diseño siempre se cargarán cada vez que se ejecute
una aplicación, para agregar elementos en tiempo de ejecución debemos programar un evento que
lo realice, por ejemplo en un botón. Es importante tomar en cuenta que cuando el programa se
cierra y se vuelve a abrir, solo los elementos que estén establecidos en tiempo de diseño
aparecerán en el ComboBox.
Luego de agregar un ComboBox y CommandButton a un Form debemos agregar el siguiente
código al evento clic del CommandButton.
Profesor David Molina S.© 2009 11
- 12. COLEGIO MARISTA DE ALAJUELA
El método AddItem del objeto Combo1 realiza la acción de agregar a la lista de opciones el texto
que este digitado en el espacio del Combo1. La segunda línea limpia el texto digitado.
Nuestra aplicación se muestra en la siguiente imagen:
Agregamos texto y presionamos el botón Agregar:
Propiedades del ListBox
A continuación se muestran las propiedades en tiempo de ejecución más comunes del ListBox:
Nombre de la Propiedad Descripción
Si se encuentra en False no permite utilizar el
Enabled
ListBox.
Permite elegir el tipo de letra dentro del
Font
ListBox.
TabIndex Indica el orden de tabulación del ListBox.
List Agrega elementos al ListBox.
Activa la posibilidad de seleccionar más de un
MultiSelect
elemento de la lista.
Sorted Muestra los elementos de la lista en orden.
Agrega un checkbox a cada elemento de la
Style
lista.
Agrega texto de ayuda sobre la función del
ToolTipText ListBox. El texto aparece cuando se coloca el
cursor cerca del objeto.
Visible Establece si por defecto el ListBox se muestra.
Profesor David Molina S.© 2009 12
- 13. DEPARTAMENTO DE INFORMÁTICA
Agregar elementos al ListBox en tiempo de Diseño
Luego de agregar un objeto ListBox a un Form, se debe modificar la propiedad List del ListBox
como se muestra a continuación:
2. Agregamos el 1. Damos clic
dato y presionamos sobre la flecha de
la tecla Enter. la propiedad.
Repetimos el procedimiento para agregar más elementos al ListBox.
El ListBox en tiempo de ejecución se verá como en la siguiente imagen:
Agregar elementos al ListBox en tiempo de Ejecución
Para agregar elementos en tiempo de ejecución tenemos que utilizar un TextBox y programar un
evento para que se realice la acción. Al igual que el ComboBox, los elementos agregados en
tiempo de ejecución a un ListBox, no serán almacenados.
Luego de agregar un TextBox, un ComboBox y un CommandButton a un Form debemos agregar
el siguiente código al evento clic del CommandButton.
Profesor David Molina S.© 2009 13
- 14. COLEGIO MARISTA DE ALAJUELA
El método AddItem del objeto List1 realiza la acción de agregar a la lista de opciones el texto que
este digitado en el Text1. La segunda línea limpia el texto digitado.
Nuestra aplicación se muestra en la siguiente imagen:
Agregamos texto y presionamos el botón Agregar:
Función MsgBox
Esta opción nos permite cargar un cuadro de mensaje en algún evento y controlar todos los
elementos de dicho cuadro.
La sintaxis de la Función MsgBox es la siguiente:
MsgBox “Texto del Mensaje”, <icono>,”Texto de la barra de titulo”
Profesor David Molina S.© 2009 14
- 15. DEPARTAMENTO DE INFORMÁTICA
A continuación se muestran los tipos de iconos más utilizados:
Estilo Descripción Icono
vbCritical Coloca un icono de mensaje crítico
vbExclamation Coloca un icono de advertencia
vbInformation Coloca un icono de Información
vbQuestion Coloca un icono de Interrogación
Algunos ejemplos de los cuadros de mensaje son los siguientes:
MsgBox "Sistema no responde", vbCritical, "Error en la Aplicación"
MsgBox "Los datos fueron guardados", vbInformation, "Control de Datos"
MsgBox "El total es: " & Total, vbInformation, "Control de Datos"
Profesor David Molina S.© 2009 15
- 16. COLEGIO MARISTA DE ALAJUELA
MsgBox "Este es un mensaje" & Chr(13) & "con doble línea de texto", , "Ejemplo Doble Línea"
Función InputBox
Esta opción permite cargar un cuadro de diálogo, el cual le admite al usuario digitar datos que
son almacenados en una variable.
La sintaxis de la Función InputBox es la siguiente:
< variable> = InputBox (“Texto del Mensaje”, ”Texto de la barra de titulo”,”dato por defecto”)
La variable a la que se le asigna los valores que son digitados por el usuario, debe ser declarada
previamente. A continuación se muestran ejemplos del uso de los cuadros de diálogo:
Nombre = InputBox ("Digite el nombre del usuario", "Nombre del Usuario", "user")
Edad = InputBox ("¿Cúal es su edad?", "Obtener Edad", "0")
Profesor David Molina S.© 2009 16
- 17. DEPARTAMENTO DE INFORMÁTICA
Ciclos
Los ciclos son un conjunto de sintaxis que permiten repetir una o más acciones hasta un
determinado límite. A continuación analizaremos el manejo de los ciclos en Visual Basic.
Ciclo For
Para utilizar un ciclo For es necesario declarar una variable y asignarle el valor inicial, luego
debemos indicar el valor final. Por defecto el rango de valores que tenga el ciclo irá aumentando
de uno en uno, si queremos variar esta condición debemos agregar la palabra Step y el valor del
incremento que deseamos.
La sintaxis del ciclo For es la siguiente:
For <nombre de la variable> = <valor inicial> To <valor final> Step <valor del incremento>
<acción 1>
<acción 2>
<acción …>
Next
Algunos ejemplos del uso del ciclo For son los siguientes:
For contador = 1 To 5
MsgBox "El valor del contador es: " & contador
Next
For contador = 1 To 10 Step 2
MsgBox "El valor del contador es: " & contador
Next
For contador = 0 To 100 Step 10
MsgBox "El valor del contador es: " & contador
Next
Ciclo While
Este ciclo realiza las acciones una determinada cantidad de veces, con base en una condición que
se evalúa, si esta condición es verdadera se ejecutan una vez más las acciones. Para este ciclo es
necesario tener una variable que cambie cada vez que se ejecuten las acciones para poder
controlar el ciclo, si esta variable no existe el ciclo se realizará infinitamente y provocará un
problema en la aplicación.
Profesor David Molina S.© 2009 17
- 18. COLEGIO MARISTA DE ALAJUELA
La sintaxis del ciclo While es la siguiente:
While (<condición>)
<acción 1>
<acción 2>
<acción …>
Wend
Analicemos el siguiente ejemplo:
Dim contador As Integer
contador = 1
While (contador <= 5)
InputBox ("Digite el nombre del cliente # " & contador)
contador = contador + 1
Wend
Se declara una variable “contador” de tipo entero y se inicializa en 1. El ciclo mostrara un
InputBox solicitando el nombre del cliente y el número que corresponde a este cliente, tomando
en cuenta el valor actual de la variable “contador”.Luego se incrementa el valor de la variable en
uno, está línea de sintaxis es muy importante, en su ausencia, provocaría que el ciclo se repita en
forma infinita. El incremento no necesariamente debe ser en uno, ya que si deseamos, por
ejemplo, mostrar un conteo de dos en dos, el valor del incremento es dos.
Otros ejemplos del ciclo While:
Dim contador As Integer
contador = 0
MsgBox "Valores del 1 al 20 de 2 en 2"
While (contador <= 20)
MsgBox (contador)
contador = contador + 2
Wend
Dim valor As Double
Dim contador As Double
Dim factorial As Double
valor = InputBox ("Digite un número para obtener su factorial")
contador = 1
factorial = valor
While (contador < valor)
factorial = factorial * contador
contador = contador + 1
Wend
MsgBox "El factorial de " & valor & " es: " & factorial
Profesor David Molina S.© 2009 18
- 19. DEPARTAMENTO DE INFORMÁTICA
Ciclo Do
En el ciclo Do las instrucciones se ejecutan hasta que una condición se cumpla. Al igual que el
ciclo While es necesario una variable de control del ciclo para evitar que este se repita de forma
infinita.
Sintaxis del ciclo Do:
Do Until (<condición>)
<acción 1>
<acción 2>
<acción …>
Loop
Analicemos el siguiente ejemplo:
Dim valor_secreto As Integer
Dim valor_jugador As Integer
valor_secreto = 5
valor_jugador = 0
Do Until (valor_secreto = valor_jugador)
valor_jugador = InputBox("Advine el valor secreto")
Loop
Se declaran dos variables enteras y hasta que una no sea igual a la otra se repetirá el ciclo. Otro
ejemplo de ciclo Do es el siguiente:
Dim total As Integer
Dim contador As Integer
total = 0
valor = 0
contador = 1
Do Until (contador > 5)
valor = InputBox("Digite el valor del producto # " & contador)
total = total + valor
contador = contador + 1
Loop
MsgBox "El total es: " & total
Profesor David Molina S.© 2009 19
- 20. COLEGIO MARISTA DE ALAJUELA
Instrucciones de Selección
Las instrucciones de selección permiten verificar si un dato cumple o no una condición que se
establezca y tiene la capacidad de ejecutar diferentes acciones, dependiendo del resultado de la
revisión.
Instrucción If
Esta instrucción permite verificar si un dato cumple una condición, si se cumple se lleva a cabo
una acción de lo contrario, si se desea, se ejecuta otra acción.
La sintaxis de la instrucción If es:
If (<condición>) Then
<acción1>
<acción2>
<acción…>
Else
<acción1>
<acción2>
<acción…>
End if
Esta instrucción puede presentar algunas variantes, como por ejemplo, que si no se cumple la
condición no ocurre ninguna acción; o que hayan varias instrucciones if anidadas. A continuación
se muestra un ejemplo con dichas variantes:
If ( total>10 ) Then
MsgBox “El valor es mayor a 10”
end if
If ( valor=0 ) Then
MsgBox “El valor es 0”
Else
If ( valor>0 ) Then
MsgBox “El valor es positivo”
Else
MsgBox “El valor es negativo”
End if
End if
Profesor David Molina S.© 2009 20
- 21. DEPARTAMENTO DE INFORMÁTICA
Instrucción Select
Ejecuta un grupo de acciones dependiendo de los posibles valores que pueda tener una variable y
si no concuerda con ningún valor también puede ejecutar alguna acción.
La sintaxis de esta instrucción es la siguiente:
Select Case <variable>
Case <posible valor o valores>
<acción1>
<acción2>
<acción…>
Case Else
<acción1>
<acción2>
<acción…>
End Select
Algunos ejemplos de la instrucción Select son los siguientes:
Select Case Text1
Case 1 To 10
MsgBox "El número se encuentra entre 1 y 10"
Case 11, 12, 13, 14, 15
MsgBox "El número se encuentra entre 11 y 15"
Case Else
MsgBox "El número es mayor a 15"
End Select
Select Case Text1
Case "NOMBRE"
NOMBRE = InputBox ("DIGITE EL NOMBRE")
MsgBox NOMBRE
Case "APELLIDO 1"
APELLIDO1 = InputBox ("DIGITE EL APELLIDO 1")
MsgBox APELLIDO1
Case "APELLIDO 2"
APELLIDO2 = InputBox ("DIGITE EL APELLIDO 2")
MsgBox APELLIDO2
Case "EDAD"
EDAD = InputBox ("DIGITE LA EDAD")
MsgBox EDAD
Case Else
MsgBox "Opción no es válida"
End Select
Profesor David Molina S.© 2009 21
- 22. COLEGIO MARISTA DE ALAJUELA
Validación de Datos
Cuando desarrollamos aplicaciones que manipulan datos para almacenarlos en algún archivo o
base de datos es necesario verificar que estos datos correspondan con lo solicitado. A
continuación se muestra una pequeña aplicación con sus respectivas validaciones y el código
necesario:
Nombre del Campo Código de la Validación
Dim dato As Integer
On Error GoTo Errores
dato = CInt(Text1)
Errores:
Identificación If Err.Number = 13 Then
MsgBox "La identificación no es válida"
Text1.SetFocus
Text1.SelLength = 0
End If
Dim dato As Integer
On Error GoTo Errores
dato = CInt(Text2)
If (Text2 < 0) Then
MsgBox "Salario Base no es válido"
Salario Base End If
Errores:
If Err.Number = 13 Then
MsgBox "Salario Base no es válido"
End If
Profesor David Molina S.© 2009 22
- 23. DEPARTAMENTO DE INFORMÁTICA
Dim dato As Integer
On Error GoTo Errores
dato = CInt(Text3)
If (Text3 < 0) Then
MsgBox "Años de laborar no es válido"
Años de Laborar End If
Errores:
If Err.Number = 13 Then
MsgBox "Años de laborar no es válido"
End If
Dim dato As Integer
On Error GoTo Errores
dato = CInt(Text4)
If (Text4 < 0) Then
MsgBox "Anualidad no es válida"
Anualidad End If
Errores:
If Err.Number = 13 Then
MsgBox "Anualidad no es válida"
End If
Dim dato As Integer
On Error GoTo Errores
dato = CInt(Text5)
If (Text5 < 0) Then
MsgBox "Comisiones no es válida"
Comisiones End If
Errores:
If Err.Number = 13 Then
MsgBox "Comisiones no es válida"
End If
En el caso de esta pequeña aplicación, todos los datos digitados deben ser numéricos, por lo que
para validar que en el campo no haya un carácter, se declara en todos los casos una variable dato
a la cual se le asigna el resultado de la función CInt, que toma el dato digitado y lo convierte en
valor entero para almacenar en la variable. Si esto no ocurre, como en el caso de que sea una
letra, Visual Basic mostraría una pantalla de error como la siguiente:
Profesor David Molina S.© 2009 23
- 24. COLEGIO MARISTA DE ALAJUELA
Para sustituir una pantalla de este tipo por un Cuadro de Mensaje con las indicaciones que
deseamos, debemos conocer el número del error, que en nuestro caso es el número 13. En el
evento donde se está programando la validación es necesario colocar la instrucción:
On Error GoTo <lista de errores>
En el espacio <lista de errores> podemos utilizar cualquier nombre, en el ejemplo se utilizó
Errores, como identificador. Luego se coloca el identificador y el código necesario para validar
como se muestra en uno de los casos:
Errores:
If Err.Number = 13 Then
MsgBox "Comisiones no es válida"
End If
Otra validación presente en esta aplicación, se realiza en los campos Salario Base, Años de
laborar, Anualidad y comisiones. Estos campos además de ser numéricos deben ser mayores a 0
por lo que se utiliza el siguiente código para dicho fin:
If (Text5 < 0) Then
MsgBox "Comisiones no es válida"
End If
Como se puede notar la instrucción If y la función MsgBox es vital para corroborar que los datos
de las ampliaciones sean los correctos.
Profesor David Molina S.© 2009 24
- 25. DEPARTAMENTO DE INFORMÁTICA
Subprogramas
Los subprogramas son un conjunto de instrucciones a las que se le asigna un nombre y por el cual
pueden ser invocadas. Esto permite, por ejemplo, tener una sola validación y llamarla cada vez
que sea necesario.
La sintaxis de los subprogramas es la siguiente:
Sub <nombre del subprograma> ( )
<acción1>
<acción2>
<acción…>
End Sub
La sintaxis de invocación es:
Call <nombre del subprograma>
Un ejemplo de un Subprograma y su invocación es el siguiente:
Sub Validar ( )
If (Err.Number=13) then
MsgBox “Datos no son correctos”
End If
End Sub
Call Validar
Un ejemplo detallado del uso de los Subprogramas es la siguiente aplicación que calcula
ecuaciones cuadráticas:
Profesor David Molina S.© 2009 25
- 26. COLEGIO MARISTA DE ALAJUELA
Variables
Globales
Subprograma
Discriminante
Subprograma
Sol_X1
Subprograma
Sol_X2
Subprograma
Validar
Profesor David Molina S.© 2009 26
- 27. DEPARTAMENTO DE INFORMÁTICA
En esta aplicación se puede notar que la mayoría del código no se encuentra declarado en un
evento sino en una parte destinada a las declaraciones globales, esto implica que todo el código
que sea colocado en esta parte se podrá acceder en cualquier momento y los valores de las
variables se mantendrán en memoria hasta que la aplicación se finalice.
Las funciones de las variables en esta aplicación son las siguientes.
Nombre de la Variable Función
Si los datos son correctos su valor se mantiene
Band en False sino se vuelve True y detiene la
ejecución.
A Almacena el valor del campo Text1.
B Almacena el valor del campo Text2.
C Almacena el valor del campo Text3.
Almacena el valor que se obtiene al calcular el
Dis
discriminante.
Almacena el valor que se obtiene al calcular la
X1
primera solución de la ecuación.
Almacena el valor que se obtiene al calcular la
X2
segunda la solución de la ecuación.
Las funciones de los subprocesos son las siguientes:
Nombre del Subproceso Función
Calcula el valor del discriminante con las
Discriminante variables A, B y C. Lo almacena en la variable
Dis.
Calcula el valor de la primera solución de la
Sol_X1 ecuación con las variables A, B, C y Dis. Lo
almacena en la variable X1.
Calcula el valor de la segunda solución de la
Sol_X2 ecuación con las variables A, B, C y Dis. Lo
almacena en la variable X2.
Verifica que los valores en los campos Text1,
Text2 y Text3 sean números y los almacena en
Validar las variables A, B y C. Si los datos no son
correctos no se ejecutan el resto de los
Subprogramas.
Los Subprogramas pueden utilizar parámetros. Los parámetros son datos con los que se trabaja en
una aplicación y que son enviados a un Subprograma para que este se ejecute y realice alguna
operación con ellos.
Profesor David Molina S.© 2009 27
- 28. COLEGIO MARISTA DE ALAJUELA
Un ejemplo detallado del uso de los Subprogramas con parámetros es la siguiente aplicación para
calcular un promedio de notas:
Profesor David Molina S.© 2009 28
- 29. DEPARTAMENTO DE INFORMÁTICA
Funciones
Las funciones tienen un comportamiento similar a los Subprocesos, con la particularidad de que
si se desea, retornan un valor que es asignado a una variable. A continuación la sintaxis de una
Función.
Function <nombre de la función> ( ) as <tipo de dato que se retorna>
<acción1>
<acción2>
<acción…>
End Function
Un ejemplo de una aplicación utilizando una función es el siguiente:
Profesor David Molina S.© 2009 29
- 30. COLEGIO MARISTA DE ALAJUELA
Módulos Globales
En los temas anteriores hemos visto como declarar variables, procedimientos y funciones que
pueden ser utilizadas en cualquier parte del código de un Form. Sin embargo si tuviéramos más
de un Form y quisiéramos, por ejemplo, utilizar la Función Validar que se encuentra en la parte
de declaraciones Globales de la Form1 en la Form2, tendríamos que recurrir a los módulos
globales, en dicho módulo colocaríamos todo el código que posiblemente utilicemos en distintos
lugares.
Para crea un módulo dentro de un proyecto realizamos los siguientes pasos:
1. Un clic con el botón derecho del mouse sobre el Explorador de proyectos, en el menú
emergente elegimos la opción agregar y luego el módulo.
Profesor David Molina S.© 2009 30
- 31. DEPARTAMENTO DE INFORMÁTICA
2. En el cuadro de diálogo que aparece, presionamos sobre el botón Abrir.
3. Se cargara una pantalla de módulo en blanco.
Profesor David Molina S.© 2009 31
- 32. COLEGIO MARISTA DE ALAJUELA
A partir de que tenemos el módulo podemos agregar cualquier elemento y para invocarlo desde
una Form se escribe primero el nombre del módulo, un punto y el elemento que deseamos
llamar.
La siguiente aplicación calcula el salario base de un empleado con base a la siguiente tabla de
salarios:
Hora Diurno Nocturno
Laborada 1000 1200
Extra 500 600
Luego la aplicación permite calcular el Salario Neto y generar la cuota mensual de un préstamo,
si el empleado cuenta con uno.
Form1
Propiedad Locked: True
Propiedad Enabled: False
Form2
Profesor David Molina S.© 2009 32
- 33. DEPARTAMENTO DE INFORMÁTICA
Código en Form1:
Private Sub Command1_Click()
On Error GoTo Errores
ID = Text1
If (Combo1.Text <> "Diurno" And Combo1.Text <> "Nocturno") Then
MsgBox "HORARIO NO ES VÁLIDO"
Exit Sub
End If
If (Module1.Validar_sindatos(ID) = True) Then
MsgBox "DEBE DIGITAR UNA IDENTIFICACIÓN"
Exit Sub
End If
If (Module1.Validar_sindatos(Text2) = True) Then
MsgBox "DEBE DIGITAR HORAS LABORADAS"
Exit Sub
End If
If (Module1.Validar_sindatos(Text3) = True) Then
MsgBox "DEBE DIGITAR HORAS EXTRA"
Exit Sub
End If
If (Combo1.Text = "Diurno") Then
S_BRUTO = ((CSng(Text2) * 1000) + (CSng(Text3) * 500))
Text4 = S_BRUTO
Else
If (Combo1.Text = "Nocturno") Then
S_BRUTO = ((CSng(Text2) * 1200) + (CSng(Text3) * 600))
Text4 = S_BRUTO
End If
End If
If (Module1.Validar_sindatos(Text4) = False) Then
Command2.Enabled = True
End If
Errores:
If (Err.Number = 13) Then
MsgBox "DATOS NO VÁLIDOS"
End If
End Sub
Profesor David Molina S.© 2009 33
- 34. COLEGIO MARISTA DE ALAJUELA
Private Sub Command2_Click()
Form2.Show
End Sub
Código en Form2:
Dim S_NETO As Single
Dim Cargas As Single
Dim Cuota As Single
Sub Calcular_Cuota()
Cuota = 0
Cuota = (CSng(Text4) / CSng(Text6)) + ((CSng(Text5) * CSng(Text4)) / 100)
Text7 = Cuota
End Sub
Private Sub Check1_Click()
If (Check1.Value = 1) Then
Text4.Enabled = True
Text5.Enabled = True
Text6.Enabled = True
Else
Text4.Enabled = False
Text5.Enabled = False
Text6.Enabled = False
Text4.Text = 0
Text5.Text = 0
Text6.Text = 0
Text7.Text = 0
End If
End Sub
Private Sub Command2_Click()
S_NETO = S_BRUTO - (Cargas + Cuota)
Text8 = S_NETO
End Sub
Private Sub Form_Load()
Text1 = ID
Text2 = S_BRUTO
Cargas = (S_BRUTO * 0.09)
Text3 = Cargas
End Sub
Profesor David Molina S.© 2009 34
- 35. DEPARTAMENTO DE INFORMÁTICA
Private Sub Text7_GotFocus()
Call Calcular_Cuota
End Sub
Código en module1
Global S_BRUTO As Single
Global ID As String
Function Validar_sindatos(campo As String) As Boolean
If (campo = "") Then
Validar_sindatos = True
End If
End Function
Programación en otros Eventos
Normalmente hemos programado en los eventos Clic y Change de los objetos. Ahora nos
dedicaremos a revisar los otros eventos que si bien, no san tan usados, pueden resultar muy útiles
en una determinada tarea.
Evento KeyPress del TextBox
Este evento revisa constantemente cada uno de los dígitos que se vayan agregando al TextBox y
con una instrucción If podemos generar alguna acción al momento de que se digite un carácter
que especificamos.
Es muy útil cuando se esta llenando, por ejemplo, un formulario de datos de un cliente, y
deseamos que se avance al siguiente campo cuando se presione la tecla enter.
Profesor David Molina S.© 2009 35
- 36. COLEGIO MARISTA DE ALAJUELA
Evento GotFocus del TextBox
Se ejecuta una acción cuando el cursor esta posicionado dentro del campo de texto. Puede
convertirse en una opción más eficiente para programar eventos que normalmente se
programarían en un CommandButton.
La siguiente aplicación solicita el año actual y el año de nacimiento, al posicionarse en el campo
edad se genera el cálculo respectivo.
Profesor David Molina S.© 2009 36
- 37. DEPARTAMENTO DE INFORMÁTICA
Evento LostFocus del TextBox
Cuando el cursor esta posicionado en un campo y al momento de cambiar a otro objeto se
ejecuta una acción. En el siguiente ejemplo, se hace uso de este evento y de la función UCase,
que convirte el texto a mayúscula. Si se quisiera cambiar texto a minúscula se utiliza la función
LCase.
.
Eventos MouseDown y MouseUp del Label
Se programan acciones cuando se da un clic sostenido sobre un Label y cuando se deja de dar
clic sostenido.
Profesor David Molina S.© 2009 37
- 38. COLEGIO MARISTA DE ALAJUELA
Editor de Menús
Esta herramienta permite crear menús personalizados para las aplicaciones. Para acceder a la
herramienta, se da clic sobre el icono que se encuentra en la barra Estándar y aparece el
siguiente cuadro de diálogo:
Básicamente para crear un Menú debemos llenar los campos Caption (texto en el menú) y Name
(nombre con el que se manipula a nivel de código), es recomendable que sea el mismo para evitar
confusiones.
Veamos un ejemplo para crear un menú “Cuadros de Mensaje” que nos muestra dos casos de la
función MsgBox. Para crear dicho menú seguimos las siguientes instrucciones:
1. Digitamos en Caption: “Cuadros de Mensaje” y el Name: “Cuadros_de_Mensaje”. En
name realizamos una pequeña variante, utilizando el símbolo _ en lugar de los espacios
ya que en esta propiedad no son permitidos.
2. Presionamos sobre el botón Siguiente, y ahora realizamos el mismo procedimiento para
agregar las opciones: “Información” y “Error”.
Profesor David Molina S.© 2009 38
- 39. DEPARTAMENTO DE INFORMÁTICA
Luego de agregar los datos el Editor de menús debe lucir como se muestra a continuación:
3. Como “Información” y “Error” son opciones que van dentro de “Cuadros de Mensaje”,
damos un clic sobre “Información” y presionamos el botón . Ejecutamos el mismo
procedimiento con “Error. El resultado es el siguiente:
Profesor David Molina S.© 2009 39
- 40. COLEGIO MARISTA DE ALAJUELA
Luego de presionar en el botón Aceptar se crea el Menú en la Form. Si presionamos sobre el
menú “Cuadros de Mensaje” se despliega un submenú con las opciones “Información” y “Error”
como se muestra a continuación:
Para programar un evento en la opción “Información” se procede dando un clic sobre el mismo
para que aparezca la pantalla que permitirá agregar el código.
También podemos generar menús que puedan aplicar cambios en las propiedades de un objeto,
por ejemplo, una opción que permita activar o desactivar un campo de texto.
Como ambas opciones no pueden estar activas debe haber una por defecto, en este caso,
“Activar”.Además utilizaremos combinaciones de teclas que nos permitan activar o desactivar
desde el teclado. La opción “Activar” tendrá la combinación “Ctrl+A” y la opción “Desactivar”
la combinación “Ctrl+D”
Profesor David Molina S.© 2009 40
- 41. DEPARTAMENTO DE INFORMÁTICA
El menú y la Form se verán de la siguiente manera:
El código en cada evento es el siguiente:
Profesor David Molina S.© 2009 41
- 42. COLEGIO MARISTA DE ALAJUELA
La siguiente aplicación utiliza diferentes menús para generar cambios de alineación, estilo y
tamaño en un objeto Label.
La opción “Cambiar Texto” invoca al siguiente InputBox:
Profesor David Molina S.© 2009 42
- 45. DEPARTAMENTO DE INFORMÁTICA
Agregar otros objetos al cuadro de Herramientas
Para agregar otros objetos al cuadro de Herramientas realizamos los siguientes pasos:
1. Damos un clic derecho sobre el cuadro de herramientas para desplegar un menú
emergente, en donde elegimos la opción “Componentes”
2. En el cuadro de diálogo “Componentes” tenemos la posibilidad de elegir de una lista los
objetos que deseamos agregar y luego presionar Aceptar. Los objetos correspondientes
serán cargados de inmediato en el Cuadro de Herramientas.
Profesor David Molina S.© 2009 45
- 46. COLEGIO MARISTA DE ALAJUELA
Objeto MaskEdBox
Tiene un comportamiento similar a un TextBox con la particularidad de establecer un Formato o
máscara de entrada. Para utilizarlo se debe agregar el componente: Microsoft Masked Box
Control 6.0
La propiedad Format de este componente permite dar a los datos digitados dentro del
MaskEdBox formatos como los siguientes:
Para elegir el formato se busca en la lista de propiedades el campo Format y luego el tipo de
formato deseado:
Para establecer una máscara de entrada se utiliza la propiedad Mask, que utiliza símbolos para
indicar que tipo de dato se debe digitar.
Símbolo Significado
# Marcador de posición numérico
& Marcador de posición alfanumérico
? Marcador de posición alfabético
. Separador de miles
, Separador decimal
: Separador de hora
/ Separador de Fecha
Profesor David Molina S.© 2009 46
- 47. DEPARTAMENTO DE INFORMÁTICA
Máscara de Entrada Ejemplo
###-### 354-7504
&&&&&& ABC123
????? ABCDE
###.###,## 123.456,78
##:## ?? 10:35 PM
##/##/#### 25/05/1984
Objeto SSTab
Permite crear en un Form fichas que pueden contener objetos. Para utilizar el SSTab es necesario
agregar el componente: Microsoft Tabbed Dialog Control Control 6.0. Las propiedades más
importantes de este control son las siguientes:
Nombre de la Propiedad Descripción
Permite colocar en la parte superior, inferior,
TabOrientation
izquierda o derecha las cejillas de las fichas.
Esta propiedad indica cuantas fichas van a
Tabs
aparecer.
Indica cuantas cejillas se van a mostrar por
TabsPerRow
columna.
La siguiente aplicación permite agregar los datos de un estudiante y luego sus notas en dos
fichas que tiene en común el número de identificación. Se utilizan objetos MaskEdBox para
algunos campos.
Propiedad Mask:
######-#
Propiedad Mask
en blanco
Propiedad Mask:
##/##/####
Propiedad Mask:
TextBox1 con barra de ###-####
desplazamiento vertical
Profesor David Molina S.© 2009 47
- 48. COLEGIO MARISTA DE ALAJUELA
TextBox2
Propiedad Mask:
###,##
TextBox3
Objeto ToolBar e ImageList
Ambos se utilizan en conjunto para crear Barras de Herramientas. Los objetos se encuentran en
el componente: Microsoft Windows Common Control 6.0.
Para crear una Barra de Herramientas, se efectúan los siguientes pasos:
1. Insertar un objeto ImageList y un objeto ToolBar en la Form. No importa donde se ha
colocado el ToolBar o el tamaño que se le dé, ya que éste automáticamente es agregado
en la parte superior de la Form con un tamaño establecido. Con el tamaño del ImageList
ocurre algo similar pues no se puede variar, por otro lado la ubicación no importa porque
este solo es visible en tiempo de diseño.
Profesor David Molina S.© 2009 48
- 49. DEPARTAMENTO DE INFORMÁTICA
2. Damos un clic derecho sobre el ImageList y elegimos la opción propiedades del menú
emergente que aparece para cargar el siguiente cuadro de díalogo:
3. Seleccionamos la cejilla Imágenes para agregar las posibles imágenes de la Barra de
Herramientas.
Profesor David Molina S.© 2009 49
- 50. COLEGIO MARISTA DE ALAJUELA
4. Luego de haber agregado las imágenes para la barra de tareas es importante recordar el
número de Index que se le asigna a cada imagen. Finalmente presionamos el botón
Aceptar.
5. Damos clic con botón derecho del mouse sobre el ToolBar y elegimos la opción
Propiedades. Aparece el siguiente cuadro de diálogo:
Profesor David Molina S.© 2009 50
- 51. DEPARTAMENTO DE INFORMÁTICA
6. La propiedad ImageList se encuentra por defecto en <ninguno>, se debe cambiar a
ImageList1.
7. Para agregar un botón al ToolBar se debe elegir la cejilla Botones y dar clic en Insertar
Botón. En el campo Index, digitamos el número de la imagen que se desea colocar. Para
colocar texto, además de la imagen, se llena el campo Caption.
Una barra de Herramientas se puede visualizar de la siguiente manera:
Profesor David Molina S.© 2009 51
- 52. COLEGIO MARISTA DE ALAJUELA
Objeto MonthView
Se utiliza para insertar un Calendario que permite seleccionar el día, mes y año de una forma
dinámica. No puede variar el tamaño ya que esta establecido por defecto. Para agregarlo es
necesario agregar el componente Microsoft Windows Common Control-2 6.0.
La siguiente aplicación es un ejemplo del uso de este objeto:
CommandButton
con un carácter
Webdings en la
propiedad
Caption.
Profesor David Molina S.© 2009 52
- 54. COLEGIO MARISTA DE ALAJUELA
Objeto DTPicker
Es la unión de un ComboBox con un MonthView. Para utilizarlo se debe activar el componente
Microsoft Windows Common Control-2 6.0.
Manejo de Archivos
Para poder almacenar datos de forma permanente en un dispositivo de almacenamiento
secundario, se puede hacer uso de los archivos, los cuales son una manera rápida y sencilla de
almacenar.
Instrucción Open
Está instrucción es la primera que se utiliza para el trabajo de archivos, establece el nombre del
archivo, el modo de apertura, el número de identificación dentro del código. Los archivos deben
tener una extensión, para el texto se utiliza la extensión .txt y para datos .dat
Un ejemplo del uso de la instrucción Open es el siguiente:
Open “archivo.dat” for Random As #1
Modos de apertura
Modo Descripción
• Si el archivo no existe se crea.
Append • Si el archivo existe y tiene información
se agrega la nueva información al final
del archivo.
Profesor David Molina S.© 2009 54
- 55. DEPARTAMENTO DE INFORMÁTICA
• Si el archivo no existe se genera un
Input error.
• Se abre el archivo para lectura
• Si el archivo no existe se crea.
• Abre un archivo para lectura y
Output escritura.
• Sobrescribe la información si el
archivo existe.
Instrucción Close
Siempre que se abra un archivo dentro de un programa, se debe llegar a un punto en que debe ser
cerrado. La instrucción Close es la encargada de realizar dicha acción. Se pueden cerrar archivos
de dos maneras, especificando el número de archivo o cerrando todos los archivos abiertos en un
determinado momento.
Manejo de archivos de acceso secuencial
En un archivo podemos realizar dos acciones: leer y escribir, estas acciones se reflejan en los
comandos Input y Write o Print. El comando Input se encarga de leer la información mientras
que Write y Print de escribirla, aunque ambos comando varían en la manera en que escriben.
El comando Write delimita todo entre comas, encierra entre comillas los datos de tipo String y a
los datos de tipo fecha entre diesis (#) y escribe la información boolena como #TRUE# y
#FALSE# . Todas estas características facilitan la labor del comando Input.
La sintaxis de los comandos para manejo de archivos de acceso secuencial es la siguiente:
Print # <número del archivo>, <datos para escribir>
Write # <número del archivo>, <datos para escribir>
Input # <número del archivo>, <lugar donde almacenar valores leídos>
Ejemplos:
Print #1, Text1
Write #2, Tex2, Combo1.Text, Text4
Input #1, Dato1
Profesor David Molina S.© 2009 55
- 56. COLEGIO MARISTA DE ALAJUELA
Para comprender mejor el uso de los archivos de acceso secuencial se irá implementando una
aplicación por etapas. La primera etapa consta de un mantenimiento de usuarios que solicita los
datos del empleado y genera un login y clave.
COMPUTO
TESORERIA
RRHH
CONTABILIDAD
AUDITORIA
MERCADEO
La apertura, escritura y cierre del archivo se da en el evento clic del objeto Command1. Los
eventos programados en los objetos Text1, Text2 y Text3 utilizan la función Ucase para
convertir lo que se digite en esos campos en mayúscula. La función Mid utiliza en los eventos
de los campos Text4 y Text5, permite manipular las cadenas de caracteres de los campos
Text1,Text2 y Text3. Los parámetros de dicha función son: la cadena que se va a manipular,
desde cual carácter se va a iniciar y cuantos caracteres se van a copiar.
Profesor David Molina S.© 2009 56
- 57. DEPARTAMENTO DE INFORMÁTICA
La siguiente Form, siempre dentro de la misma aplicación, permite realizar búsquedas de
usuarios.
En la Form de “MANTENIMIENTO DE USUARIOS” se debe agregar un botón que cargue la
Form “BUSQUEDAS”
El código del bóton “Buscar Usuario” es el siguiente:
Profesor David Molina S.© 2009 57
- 58. COLEGIO MARISTA DE ALAJUELA
En esta Form se utiliza una matriz de control para el objeto Option1, esto significa que es el
mismo objeto pero con diferentes estados, cada vez que se presiona sobre alguno de los estados
se le asigna un valor a la variable opcion que esta declarada como global, no se tilda la palabra
para evitar errores de memoria.
La apertura del archivo y su lectura se da en el evento clic del botón Command1, el archivo es
abierto como lectura (Input) ya que en este procedimiento no es necesario escribir ningún nuevo
dato.
Profesor David Molina S.© 2009 58
- 59. DEPARTAMENTO DE INFORMÁTICA
Sin importar que clase de búsqueda se realizan, procedimientos similares en donde se recorre el
archivo de principio a fin y se van comparando los datos para ver si coinciden con los
solicitados. Se utiliza un ciclo While que avanza por el archivo hasta llegar al final. Por cada
avance se compara el campo que se digitó para la búsqueda con el que corresponde dentro del
archivo, si son iguales se agregan todos los datos a la lista.
La instrucción Input utiliza variables para cada campo que conforman un registro. Esto permite
que el recorrido sea línea por línea y permita consultar en cualquier momento cualquier dato
dentro del archivo.
Por último se va a implementar el proceso de eliminación de un usuario que es programado en
un botón dentro de la Form1. Es importante tener presente de que la eliminación en forma
secuencial consiste en tomar todos los datos del archivo menos el que se desea borrar y copiarlos
a un archivo temporal, luego de este archivo a uno nuevo que volverá a ser el principal.
La Form1 debe verse como se muestra a continuación:
El código del botón “Eliminar Usuario” es el siguiente:
Profesor David Molina S.© 2009 59
- 60. COLEGIO MARISTA DE ALAJUELA
Lo primero es asignar a las variables xnom, xap1,ap2 y xdep los datos del usuario que se va a
eliminar. Se abre el archivo “usuarios.dat” como lectura y el archivo “temporal.dat” como
escritura. Se inicia el recorrido del archivo “usuarios.dat” y se va copiando los datos al archivo
temporal excepto el eliminado. Luego se cierran los archivos y se abre a “usuarios.dat” como
escritura, lo que provoca que quede en blanco; por otro lado “temporal.dat” es abierto como
lectura y se procede a copiar la información de este al nuevo “usuarios.dat”.Se cierran los
archivos y para dejar en blanco a “temporal.dat” se abre por última vez como escritura y se
cierra inmediatamente. El siguiente gráfico muestra como se manipulan los archivos
“usuarios.dat” y “temporal.dat”.
Estado del Archivo
Descripciones
usuarios.dat temporal.dat
El archivo “usuarios” contiene
todos los datos. El archivo
“temporal” se encuentra vacío.
Se inicia el copiado de datos
del archivo “usuarios” a
“temporal”.
El archivo “temporal”
contiene los mismos datos que
“usuarios” excepto el usuario
que se deseaba borrar.
El archivo “usuarios” es
creado de nuevo para que
quede vacío.
Se inicia el copiado de datos
del archivo “temporal” a
“usuarios”.
El archivo “temporal” se crea
de nuevo para que quede
vacío. El archivo “usuarios”
contiene los datos actualizados
Profesor David Molina S.© 2009 60
- 61. DEPARTAMENTO DE INFORMÁTICA
Manejo de Bases de Datos
La implementación de una base de datos para el almacenamiento permite que las aplicaciones
sean más eficientes y los datos más fáciles de manejar. Visual Basic por si solo no tiene un
motor de bases de datos sino que se conecta a motores de bases de datos externos y en conjunto
se manipulan los datos. Visual Basic tiene la posibilidad de enlazarse con poderosos sistemas
como Oracle y SQL-Servers así como también puede hacerlo con motores sencillos como
Access. Las bases de datos le dan un nuevo enfoque a las aplicaciones y aunque su dificultad
depende del motor que se utiliza, las posibilidades de diseño y desarrollo son muy amplias.
Las tecnologías para las conexiones también pueden ser muy variadas, pero entre ellas sobre
sale la tecnología ADO, la cual se utilizara para conectar a una base de datos en Access. Otro
elemento importante del manejo de bases de datos es SQL, que se convierte en el lenguaje
intermedio entre ambas aplicaciones (Visual Basic y Access).
El siguiente ejemplo dirigido incluye la creación de una base de datos en Access, la conexión
con Visual Basic y el envío de transacciones a la base de datos.
1. Se crea una carpeta en la raíz del disco duro con el nombre de “Matricula” y dentro de
ella las subcarpetas “BD”, “Forms”, “Proyecto” y “Módulos”. La estructura de carpetas
debe ser como la mostrada a continuación:
2. Se debe ingresar a Access y construir una base de datos en blanco con el nombre de
“matricula” y almacenarla dentro de la subcarpeta BD de la carpeta Matricula.
3. Se crean las siguientes tablas dentro de la base de datos, todos los campos son de tipo
texto y tamaño 50.
Profesor David Molina S.© 2009 61
- 62. COLEGIO MARISTA DE ALAJUELA
Se diseñan las siguientes Forms y se guardan con los nombres que se indican en la subcarpeta
Forms de la carpeta Matricula.
Form1
Nombre para guardar: Estudiantes
Mask: # # # - # # # #
Icon: (Ninguno)
BorderStyle: 3-Fixed Dialog
MultiLine: True
ScrollBars: 2-Vertical
Form2
Nombre para guardar: Profesores
Mask: # # # - # # # #
Icon: (Ninguno)
BorderStyle: 3-Fixed Dialog
MultiLine: True
ScrollBars: 2-Vertical
Profesor David Molina S.© 2009 62
- 63. DEPARTAMENTO DE INFORMÁTICA
Form3
Nombre para guardar: Cursos
Icon: (Ninguno)
BorderStyle: 3-Fixed Dialog
Form4
Nombre para guardar: Matricula
Icon: (Ninguno) Form5
BorderStyle: 3-Fixed Dialog Nombre para guardar: Ingreso
PasswordChar: *
Icon: (Ninguno)
BorderStyle: 3-Fixed Dialog
Profesor David Molina S.© 2009 63
- 64. COLEGIO MARISTA DE ALAJUELA
Form6
Nombre para guardar: Usuarios
Más Adelante se
explicará la razón por
la que se programan
estos eventos
Form7
Nombre para guardar: Menu
Las letras de fondo del Form Menu son objetos Image y los archivos que contienen dichas letras
se encuentran en la ruta: c:Archivos de programaMicrosoft OfficeMediaCntCD1Animated
Profesor David Molina S.© 2009 64
- 65. DEPARTAMENTO DE INFORMÁTICA
Para enviar una transacción desde Visual Basic a la base de datos en Access es necesaria una
función que debe ser declarada en un módulo y variables globales propias de ADO.
• La variable CN es de tipo ADODB.Connection y es la que se encarga de iniciar la
conexión para efectuar una transacción.
• Las variables RS y RS2 de tipo ADODB.Recordset es la que permite recorrer los registros
de las tablas en la base de datos. De estas variables se pueden tener todas las que se
necesiten
• En las variables SQL y SQL2 se almacena la sintaxis de la acción que se desea ejecutar
sobre la base de datos. De estas variables se pueden tener todas las que se necesiten
• La variable PASO contiene la ruta de ubicación de la base de datos y parámetros para la
conexión.
• La función Trans recibe como parámetro una instrucción SQL y retorna un valor
boolenao.
• El método BeginTrans inicia el proceso de comunicación, el método Execute envía a la
base de datos la instrucción SQL, por último el método CommitTrans termina la
transacción y guarda los cambios.
Más adelante se explicará el uso de la función Trans dentro de la aplicación que se esta
diseñando y en las bases de datos en general.
Profesor David Molina S.© 2009 65
- 66. COLEGIO MARISTA DE ALAJUELA
Para establecer la conexión entre un formulario y una base de datos se debe agregar un objeto
Adodc para obtener la ruta y parámetros de la base de datos. Se debe activar el componente:
“Microsoft ADO Data Control 6.0 (OLEDB)”.
Profesor David Molina S.© 2009 66
- 67. DEPARTAMENTO DE INFORMÁTICA
A continuación se va a obtener la ruta de la base de datos agregando el objeto Adodc en la Form
Ingreso (este paso se puede realizar desde cualquier Form) y luego presionando el botón derecho
sobre dicho objeto para ingresar a las propiedades.
Clic aquí para generar la
cadena de conexión
Profesor David Molina S.© 2009 67
- 68. COLEGIO MARISTA DE ALAJUELA
Este es el proveedor
para bases de datos en
Access
Clic aquí para
continuar
Clic aquí para
buscar la base de
datos
Luego de elegir
la base de datos,
se verifica la
conexión
Por último clic
en Aceptar
Profesor David Molina S.© 2009 68
- 69. DEPARTAMENTO DE INFORMÁTICA
Luego de haberse generado la cadena de conexión, se
selecciona y se presiona la combinación de teclas ctrl. +
C para copiarla, por último clic en aceptar para volver a
la Form.
Cuando se regresa a la Form se elimina el objeto Adodc ya que no se necesita y a continuación
se le asigna a la variable PASO la cadena de conexión que se copió del objeto Adodc, está
asignación se programa en el evento Load de la Form. La cadena de conexión debe ir encerrada
entre comillas dobles (“ ”). Además se debe agregar la sintaxis que genere la apertura de la
variable PASO. Esta acción se lleva acabo con el método Open de la variable CN quedando el
comando: CN.Open PASO
En el evento Unload del Form se debe cerrar la conexión para ello, solo basta con escribir la
instrucción: CN.Close. De esta manera se garantiza que la conexión este disponible durante todo
el tiempo que el Form este abierto y que se cierre al finalizar el trabajo con la Form.
Profesor David Molina S.© 2009 69
- 70. COLEGIO MARISTA DE ALAJUELA
Hasta este punto ya se han realizado las tareas básicas para conectar Visual Basic con una base
de datos, ahora depende de los elementos de los Form y los campos de las tablas para programar
eventos. Se inicia con el Form de Ingreso. En este caso al presionar el botón Ingresar se debe
consultar la tabla Acceso para verificar si el usuario y la clave son correctos o no. El código para
realizar dicha tarea se muestra a continuación:
Se inicia el código declarando una bandera (b1) que se activa si se ha ingresado al sistema de lo
contrario su estado False provoca un mensaje de error. Se declara el SQL que en este caso
selecciona todos los campos de la tabla acceso.
El RecordSet, que nos permite el desplazamiento por toda la tabla, abre la sintaxis SQL en la base
de datos utilizando la variable de conexión.
El ciclo Do se encarga de recorrer la tabla Acceso hasta que encuentre el final. Como el
RecordSet se encarga del desplazamiento en la tabla, se indica con la expresión “RS!<nombre del
campo>” el campo al que se desea tener acceso y se compara con los que digitó el usuario, de
existir una coincidencia se cierra la pantalla de ingreso, se abre el menú principal de la conexión,
se activa la bandera en True para evitar que muestre un mensaje de error y se finaliza el ciclo. La
última sentencia (RS.Close) finaliza el uso del RecordSet. En el caso de la Form Ingreso solo se
necesita consultar la existencia de datos, por lo tanto no es necesario invocar la función Trans.
Profesor David Molina S.© 2009 70
- 71. DEPARTAMENTO DE INFORMÁTICA
La siguiente Form que se va a programar es la de “Mantenimiento de Usuarios”. Nuevamente, en
los eventos Load y Unload se han colocado las acciones antes explicadas, sin embargo en esta
Form el evento Load tiene una llamada a la función Update como se muestra en la imagen.
Para uso interno en esta Form se declaró una variable y las siguientes funciones:
Profesor David Molina S.© 2009 71
- 72. COLEGIO MARISTA DE ALAJUELA
Los eventos Agregar, Eliminar, Buscar y Modificar se programan de la siguiente manera:
El código de los eventos de mantenimiento (Agregar, Eliminar, Buscar, Modificar) en las otras
Forms, son muy similares, cambian en la cantidad y tipo de datos que se manipulan. En el
ANEXO 1 se encuentra el código completo de la aplicación.
Profesor David Molina S.© 2009 72
- 73. DEPARTAMENTO DE INFORMÁTICA
Creación de proyectos ejecutables
Un proyecto ejecutable no es otra cosa que un archivo .exe, este método es conveniente usarlo
solo si los proyectos son pequeños (calculadoras, agendas, etc.)
Si se usa dicho método en proyectos muy grandes, él mismo presentará errores al ejecutarlo.
Para generar dicha función se debe desplegar el menú archivo y descender hasta la opción
Generar proyecto1.exe. Si ya se le ha puesto nombre al proyecto aparecerá la palabra Generar
seguida por el nombre del proyecto.
Cuando se ha seleccionado dicha opción se despliega la siguiente ventana de diálogo, desde
donde se indica la ubicación y el nombre del nuevo archivo ejecutable.
Profesor David Molina S.© 2009 73
- 74. COLEGIO MARISTA DE ALAJUELA
Empaquetado de proyectos
Cuando los proyectos son de un tamaño apreciable, es conveniente usar el método de
empaquetamiento para poder transportar y ejecutar dichos proyectos. Esto se logra usando el
Asistente para empaquetado y distribución que se encuentra ubicado en la carpeta de acceso de
Visual Basic que está en el menú Inicio.
En la siguiente imagen se muestra la forma de llegar a dicha aplicación:
Profesor David Molina S.© 2009 74
- 75. DEPARTAMENTO DE INFORMÁTICA
Cuando se da clic en Herramientas de Microsoft Visual Basic 6.0 aparece la opción Asistente
para empaquetado y distribución.
Al ejecutar dicho asistente se visualiza la ventana desde donde se selecciona el proyecto a
empaquetar y luego solo se siguen los pasos sugeridos.
Profesor David Molina S.© 2009 75
- 76. COLEGIO MARISTA DE ALAJUELA
ANEXO 1
CÓDIGO DE LA APLICACIÓN
DEL SISTEMA DE MATRÍCULA
Profesor David Molina S.© 2009 76