Está en la página 1de 45

Karen Espinoza Sanhueza

1
INTRODUCCIN A VISUAL BASIC

Bienvenidos a Visual Basic

Bienvenidos a Microsoft Visual Basic, la manera ms rpida y sencilla de crear
aplicaciones para Microsoft Windows. Tanto si es un profesional experimentado como
un recin llegado a la programacin en Windows, Visual Basic le proporciona un juego
completo de herramientas que facilitan el desarrollo rpido de aplicaciones.

Qu es Visual Basic? La palabra "Visual" hace referencia al mtodo que se utiliza
para crear la interfaz grfica de usuario (GUI). En lugar de escribir numerosas lneas
de cdigo para describir la apariencia y la ubicacin de los elementos de la interfaz,
simplemente puede arrastrar y colocar objetos prefabricados en su lugar dentro de la
pantalla. Si ha utilizado alguna vez un programa de dibujo como Paint, ya tiene la
mayor parte de las habilidades necesarias para crear una interfaz de usuario efectiva.

La palabra "Basic" hace referencia al lenguaje BASIC (Beginners All-Purpose
Symbolic Instruction Code), un lenguaje utilizado por ms programadores que ningn
otro lenguaje en la historia de la informtica o computacin. Visual Basic ha
evolucionado a partir del lenguaje BASIC original y ahora contiene centenares de
instrucciones, funciones y palabras clave, muchas de las cuales estn directamente
relacionadas con la interfaz grfica de Windows. Los principiantes pueden crear
aplicaciones tiles con slo aprender unas pocas palabras clave, pero, al mismo
tiempo, la eficacia del lenguaje permite a los profesionales acometer cualquier objetivo
que pueda alcanzarse mediante cualquier otro lenguaje de programacin de Windows.

El lenguaje de programacin Visual Basic no es exclusivo de Visual Basic. La
Edicin para aplicaciones del sistema de programacin de Visual Basic, incluida en
Microsoft Excel, Microsoft Access y muchas otras aplicaciones Windows, utilizan el
mismo lenguaje. El sistema de programacin de Visual Basic, Scripting Edition
(VBScript) para programar en Internet es un subconjunto del lenguaje Visual Basic. La
inversin realizada en el aprendizaje de Visual Basic le ayudar a abarcar estas otras
reas.

Si su objetivo es crear un pequeo programa para su uso personal o para su
grupo de trabajo, un sistema para una empresa o incluso aplicaciones distribuidas de
alcance mundial a travs de Internet, Visual Basic dispone de las herramientas que
necesita.

Las caractersticas de acceso a datos le permiten crear bases de datos y
aplicaciones cliente para los formatos de las bases de datos ms conocidas,
incluidos Microsoft SQL Server y otras bases de datos de mbito empresarial.
Las tecnologas ActiveX le permiten utilizar la funcionalidad proporcionada por
otras aplicaciones, como el procesador de textos Microsoft Word, la hoja de clculo
Microsoft Excel y otras aplicaciones Windows. Puede incluso automatizar las
aplicaciones y los objetos creados con la Edicin profesional o la Edicin
empresarial de Visual Basic.
Las capacidades de Internet facilitan el acceso a documentos y aplicaciones a
travs de Internet desde su propia aplicacin.
La aplicacin terminada es un autntico archivo .exe que utiliza una biblioteca de
vnculos dinmicos (DLL) de tiempo de ejecucin que puede distribuir con toda
libertad.

El entorno integrado de Visual Basic

El entorno de trabajo en Visual Basic se denomina frecuentemente entorno
integrado de desarrollo o IDE, ya que integra muchas funciones diferentes como el
diseo, modificacin, compilacin y depuracin en un entorno comn. En las

Karen Espinoza Sanhueza
2
herramientas de desarrollo ms tradicionales, cada una de esas funciones funcionara
como un programa diferente, cada una con su propia interfaz.




El entorno integrado de desarrollo de Visual Basic (IDE) consta de los siguientes
elementos.

Barra de mens Presenta los comandos que se usan para trabajar con Visual
Basic. Adems de los mens estndar Archivo, Edicin, Ver, Ventana y Ayuda, se
proporcionan otros mens para tener acceso a funciones especficas de
programacin como Proyecto, Formato o Depuracin.

Mens contextuales Contienen accesos directos a acciones que se realizan con
frecuencia. Para abrir un men contextual, haga clic con el botn secundario del
mouse en el objeto que est usando. La lista especfica de opciones disponibles en
el men contextual depende de la parte del entorno en la que se hace clic con el
botn secundario del mouse. Por ejemplo, el men contextual que aparece cuando
hace clic con el botn secundario del mouse en el cuadro de herramientas le
permite mostrar el cuadro de dilogo Componentes, ocultar el cuadro de
herramientas, acoplar o desacoplar el cuadro de herramientas, o agregar una
ficha personalizada al cuadro de herramientas.

Barras de herramientas Proporcionan un rpido acceso a los comandos usados
normalmente en el entorno de programacin. Haga clic en un botn de la barra de
herramientas para llevar a cabo la accin que representa ese botn. De forma
predeterminada, al iniciar Visual Basic se presenta la barra de herramientas
Estndar. Es posible activar o desactivar otras barras de herramientas adicionales

Karen Espinoza Sanhueza
3
para modificar, disear formularios desde el comando Barras de herramientas
del men Ver.
Las barras de herramientas se pueden acoplar debajo de la barra de mens o
pueden flotar si selecciona la barra vertical del borde izquierdo y la arrastra
fuera de la barra de mens.

Cuadro de herramientas Proporciona un conjunto de herramientas que
puede usar durante el diseo para colocar controles en un formulario. Adems del
diseo del cuadro de herramientas predeterminado, puede crear su propio diseo
personalizado si selecciona Agregar ficha en el men contextual y agrega
controles a la ficha resultante.

Ventana Explorador de proyectos Enumera los formularios y mdulos del
proyecto actual. Un proyecto es la coleccin de archivos que usa para generar una
aplicacin.

Ventana Propiedades Enumera los valores de las propiedades del control o
formulario seleccionado. Una propiedad es una caracterstica de un objeto, como
su tamao, ttulo o color.

Examinador de objetos Enumera los objetos disponibles que puede usar en su
proyecto y le proporciona una manera rpida de desplazarse a travs del cdigo.
Puede usar el Examinador de objetos para explorar objetos en Visual Basic y otras
aplicaciones, ver qu mtodos y propiedades estn disponibles para esos objetos, y
pegar cdigo de procedimientos en su aplicacin.

Karen Espinoza Sanhueza
4
Diseador de formularios Funciona como una ventana en la que se personaliza el
diseo de la interfaz de su aplicacin. Agregue controles, grficos e imgenes a un
formulario para crear la apariencia que desee. Cada formulario de la aplicacin
tiene su propia ventana diseador de formulario.

Ventana Editor de cdigo Funciona como un editor para escribir el cdigo de la
aplicacin. Se crea una ventana editor de cdigo diferente para cada formulario o
mdulo del cdigo de la aplicacin.
Ventana Posicin del formulario La ventana Posicin del formulario le
permite colocar los formularios de su aplicacin utilizando una pequea
representacin grfica de la pantalla.

Controles de Visual Basic

En la figura siguiente se enumeran los controles intrnsecos del cuadro de
herramientas de Visual Basic.




















Cuadro de imagen (PictureBox) Presenta mapas de bits, iconos o metarchivos de
Windows, archivos JPEG o GIF. Tambin presenta texto o acta como contenedor visual
para otros controles.

Etiqueta (Label) Presenta texto con el que el usuario no puede interactuar ni
modificar.

Cuadro de texto (TextBox) Proporciona un rea para escribir o presentar texto.

Marco (Frame) Proporciona un contenedor visual y funcional para otros controles.

Botn de comando (CommandButton) Ejecuta un comando o una accin cuando un
usuario hace clic en l.

Casilla de verificacin (CheckBox) Presenta una opcin de tipo Verdadero o Falso, o
S o No. Puede activar varias casillas de verificacin en un mismo formulario al mismo
tiempo.

Botn de opcin (OptionButton) El control OptionButton, como parte de un grupo
de opciones con otros botones de opcin, presenta varias opciones entre las que el
usuario slo puede elegir una.


Karen Espinoza Sanhueza
5
Cuadro combinado (ComboBox) Combina un cuadro de texto y un cuadro de lista.
Permite que el usuario escriba una seleccin o seleccione un elemento de una lista
desplegable.

Cuadro de lista (ListBox) Presenta una lista de elementos entre los que el usuario
puede elegir.

Barras de desplazamiento Vertical y Horizontal (ScrollBar y VscrollBar)
Permite que un usuario agregue barras de desplazamiento a controles que no las
tienen de forma automtica. (No son las barras de desplazamiento incorporadas que
se incluyen en muchos controles.)

Cronmetro (Timer) Ejecuta eventos peridicos a intervalos de tiempo especificados.
Cuadro de lista de unidad (DriveListBox) Presenta unidades de disco vlidas y
permite que el usuario las seleccione.

Cuadro de lista de directorios (DirListBox) Presenta directorios y rutas de acceso, y
permite que el usuario los seleccione.

Cuadro de lista de archivo (FileListBox) Presenta una lista de archivos y permite
que el usuario los seleccione.
Forma (Shape) Agrega un rectngulo, un cuadrado, una elipse o un crculo a un
formulario, marco o cuadro de imagen.

Lnea (Line) Agrega un segmento de lnea recta a un formulario.

Imagen (Image) Presenta mapas de bits, iconos o metarchivos de Windows, archivos
JPEG o GIF, y acta como un botn de comando cuando se hace clic en l.

Control Data (Control Data) Proporciona acceso a datos almacenados en bases
de datos

Contenedor OLE (OLE) Incrusta datos en una aplicacin de Visual Basic.

Controles ActiveX estndar

Visual Basic contiene varios controles ActiveX (llamados controles ActiveX
estndar) que permiten agregar caractersticas avanzadas a las aplicaciones. Los
controles ActiveX tienen la extensin nombre de archivo .ocx y puede utilizarlos en un
proyecto si los agrega manualmente al cuadro de herramientas.
Conceptos y trminos fundamentales de Visual Basic

Objeto : Un objeto es una entidad que tiene asociado un conjunto de mtodos, eventos
y propiedades. Hay muchas clases de objetos, y por tanto, puede llegar a haber tantos
mtodos, eventos y propiedades distintas como objetos diferentes.

Ejemplo : Una caja de texto (TextBox) en la cual podemos escribir cualquier lnea es un
objeto.

Mtodo : Los mtodos son funciones internas de un determinado objeto que permite
realizar funciones sobre l o sobre otro objeto.
Ejemplo : Deseamos poner en la ventana Windows de nuestra aplicacin "Hola mundo",
por tanto pondremos el mtodo -> Form1.Print "Hola mundo"

Evento : Un evento es una atencin que realiza un programa, rutina, objeto o
llamada para que nuestro programa lo trate. Un programa Visual Basic es un POE
(Programa orientado a eventos).
Ejemplo en Visual Basic: El click con el ratn sobre un botn.


Karen Espinoza Sanhueza
6
Formulario : Un formulario es una ventana. La ventana Windows de cualquier
aplicacin.
Podemos abrir tantas ventanas como queramos en nuestro proyecto, pero el
nombre de las ventanas debe ser distinto. Por defecto como ya hemos visto, la ventana
que se abre en Visual Basic tiene el nombre de Form1.

Mdulo : Un proyecto Visual Basic no slo est compuesto de Formularios, sino
tambin de lo que se denominan mdulos. Un mdulo es un fichero Visual Basic donde
escribimos parte del cdigo de nuestro programa.

Propiedades : Son los datos que hacen referencia a un objeto o formulario.
Ejemplo : Color de fondo del formulario, Fuente de texto de un TextBox, .
















































Karen Espinoza Sanhueza
7

INTRODUCCION A LAS VARIABLES, CONSTANTES Y TIPOS DE DATOS

Variables

En Visual Basic puede utilizar variables para almacenar valores temporalmente
durante la ejecucin de una aplicacin. Las variables tienen un nombre (la palabra que
utiliza para referirse al valor que contiene la variable) y un tipo de dato (que
determina la clase de datos que la variable puede almacenar).

Declaracin de variables

Declarar una variable es decirle al programa algo de antemano. Se declara una
variable mediante la instruccin Dim, proporcionando un nombre a la variable:
Dim nombre_variable [As tipo]

El nombre de una variable:

Debe comenzar con una letra.
No puede incluir un punto o un carcter de declaracin de tipo.
No debe exceder de 255 caracteres.
Debe ser nica en el mismo alcance, que es el intervalo desde el que se puede hacer
referencia a la variable: un procedimiento, formulario, etc.

La clusula opcional As tipo de la instruccin Dim le permite definir el tipo de dato
o de objeto de la variable que va a declarar. Los tipos de datos definen el tipo de
informacin que almacena la variable. Algunos ejemplos de tipos de datos son String,
Integer y Currency. Las variables tambin pueden contener objetos de Visual Basic u
otras aplicaciones. Algunos ejemplos de tipos de objeto de Visual Basic, o clases, son
Object, Form1 y TextBox.

Declaracin implcita

No tiene por qu declarar una variable antes de utilizarla. Por ejemplo, podra
escribir el siguiente cdigo: TempVal = Abs(num)

SafeSqr = Sqr(TempVal)

Visual Basic crea automticamente una variable con ese nombre, que puede
utilizar como si la hubiera declarado explcitamente. Aunque es cmodo, puede
provocar errores sutiles en el cdigo si se equivoca de nombre de variable. Por
ejemplo, suponga que ha escrito: TempVal = Abs(num)
SafeSqr = Sqr(TemVal)

A primera vista, parece igual. Pero como se ha escrito errneamente la variable
TempVal en la segunda lnea, la funcin devolver siempre cero. Cuando Visual Basic
encuentra un nombre nuevo, no puede averiguar si realmente desea declarar una
variable nueva o simplemente ha escrito de forma errnea una variable existente, por
lo que crea una variable nueva con ese nombre.

Declaracin explcita

Para evitar problemas al equivocarse de nombre en las variables, puede estipular
que Visual Basic le avise siempre que encuentre un nombre que no se haya declarado
explcitamente como una variable.





Karen Espinoza Sanhueza
8
Para declarar variables de forma explcita

Incluya esta instruccin en la seccin Declaraciones del mdulo de clase, de
formulario o estndar:
Option Explicit
o bien

En el men Herramientas, elija Opciones, haga clic en la ficha Editor y active
la opcin Declaracin de variables requerida. Esto inserta automticamente la
instruccin Option Explicit en los mdulos nuevos, pero no en los ya creados, por lo
que tendr que agregar manualmente Option Explicit a los mdulos existentes en el
proyecto.

Si hubiera tenido efecto dicha instruccin en el mdulo de formulario o
estndar que contiene la funcin SafeSqr, Visual Basic habra reconocido TempVal y
TemVal como variables no declaradas y habra generado error. Debera, por tanto,
declarar explcitamente TempVal:

Dim TempVal
TempVal = Abs(num)
SafeSqr = Sqr(TemVal)

Como la instruccin Option Explicit le ayuda a interceptar esta clase de
errores, es conveniente utilizarla en todo el cdigo.

Constantes

Hay dos orgenes para las constantes:
Constantes intrnsecas o definidas por el sistema proporcionadas por aplicaciones
y controles. Las constantes de Visual Basic se muestran en Visual Basic (VB), Visual
Basic para aplicaciones (VBA) y las bibliotecas de Objeto de acceso de datos (DAO)
en el Examinador de objetos. Otras aplicaciones que proporcionan bibliotecas de
objetos, como Microsoft Excel y Microsoft Project, tambin proporcionan una lista
de constantes que puede utilizar con sus objetos, mtodos y propiedades. Tambin
se definen constantes en la biblioteca de objetos de cada control ActiveX.
Las constantes simblicas o definidas por el usuario se declaran mediante la
instruccin Const.

Creacin de sus propias constantes

La sintaxis para declarar una constante es la siguiente:

[Public|Private] Const nombre_constante[As tipo] = expresin

El argumento nombre_constante es un nombre simblico vlido (las reglas son las
mismas que para crear nombres de variable) y expresin est compuesta por
constantes y operadores de cadena o numricos; sin embargo, no puede utilizar
llamadas a funciones en expresin.

Una instruccin Const puede representar una cantidad matemtica o de fecha y
hora:

Const conPi = 3.14159265358979
Public Const conMaxPlanetas As Integer = 9
Const conFechaSalida = #1/1/99#

Se puede utilizar tambin la instruccin Const para definir constantes de cadena:


Karen Espinoza Sanhueza
9
Public Const conVersion = "07.10.A"
Const conNombreClave = "Enigma"

Puede colocar ms de una declaracin de constante en una nica lnea si las
separa con comas:

Public Const conPi = 3.14, conMaxPlanetas = 9, conPobMundial =
6E+09

A menudo, la expresin del lado derecho del signo igual ( = ) es un nmero o
cadena literal, pero tambin puede ser una expresin que d como resultado un
nmero o una cadena (aunque la funcin no puede contener llamadas a funciones).
Puede incluso definir constantes en trminos de constantes previamente definidas:

Const conPi2 = conPi * 2


Tipos de datos

Todas las variables tienen un tipo de dato que determina la clase de datos que
pueden almacenar.

De forma predeterminada, si no proporciona un tipo de dato, la variable toma el
tipo de dato Variant. El tipo de dato Variant es como un camalen; puede representar
diferentes tipos de datos en distintas situaciones. No tiene que convertir estos tipos de
datos cuando los asigne a una variable Variant: Visual Basic realiza automticamente
cualquier conversin necesaria.

Sin embargo, si sabe que una variable almacenar siempre un tipo de dato
determinado, Visual Basic tratar de forma ms eficiente los datos si declara la
variable con ese tipo. Por
ejemplo, se representa mejor una variable que va almacenar nombres de personas
como el tipo de dato String, ya que un nombre est siempre compuesto de caracteres.

Los tipos de datos se aplican a otras cosas adems de a las variables. Cuando
asigna un valor a una propiedad, dicho valor tiene un tipo de dato; los argumentos de
las funciones tienen tambin tipos de datos. De hecho, todo lo relacionado con datos en
Visual Basic tiene un tipo de dato.

Tipos de datos numricos

Visual Basic proporciona varios tipos de datos numricos: Integer, Long (entero
largo), Single (signo flotante de simple precisin), Double (signo flotante de doble
precisin) y Currency. Utilizar un tipo de dato numrico emplea normalmente menos
espacio de almacenamiento que un tipo Variant.
Si sabe que una variable siempre va a almacenar nmeros enteros (como 12) en
vez de nmeros fraccionarios (como 3,57), declrela como un tipo Integer o Long. Las
operaciones con enteros son ms rpidas y estos tipos consumen menos memoria que
otros tipos de datos. Resultan especialmente tiles como variables de contador en
bucles For...Next.

Si la variable contiene una fraccin, declrela como variable Single, Double o
Currency. El tipo de dato Currency acepta hasta cuatro dgitos a la derecha del
separador decimal y hasta quince dgitos a la izquierda; es un tipo de dato de signo
fijo adecuado para clculos monetarios. Los nmeros de signo flotante (Single y
Double) tienen ms intervalo que Currency, pero pueden estar sujetos a pequeos
errores de redondeo.



Karen Espinoza Sanhueza
10
El tipo de dato String

Si tiene una variable que siempre contendr una cadena y nunca un valor
numrico, puede declararla del tipo String:
Private S As String

As podr asignar cadenas a esta variable y manipularla mediante funciones de
cadena:
S = "Base de datos"

De forma predeterminada, una variable o argumento de cadena es una cadena de
longitud variable; la cadena crece o disminuye segn le asigne nuevos datos. Tambin
puede declarar cadenas de longitud fija. Especifique una cadena de longitud fija con
esta sintaxis: String * tamao

Por ejemplo, para declarar una cadena que tiene siempre 50 caracteres de
longitud, utilice un cdigo como este:

Dim NombreEmp As String * 50

Si asigna una cadena con menos de 50 caracteres, NombreEmp se rellenar con
espacios en blanco hasta el total de 50 caracteres. Si asigna una cadena demasiado
larga a una cadena de longitud fija, Visual Basic simplemente truncar los caracteres.

El tipo de dato Boolean

Si tiene una variable que siempre contendr solamente informacin del tipo
verdadero y falso, s y no o activado o desactivado, puede declararla del tipo Boolean.
El valor predeterminado de Boolean es False. En el siguiente ejemplo, blnEjecutando es
una variable Boolean que almacena un simple s o no.

Dim blnEjecutando As Boolean
If Recorder.Direction = 1 Then
blnEjecutando = True ' Comprueba si la cinta est en marcha.
End if

El tipo de dato Date

Los valores de fecha y hora pueden almacenarse en el tipo de dato especfico
Date.
Convertir tipos de datos

Visual Basic proporciona varias funciones de conversin que puede utilizar para
convertir valores en tipos de datos especficos. Por ejemplo, para convertir un valor a
Currency, utilice la funcin CCur:

PagoPorSemana = CCur(horas * PagoPorHora)

Funciones de conversin Convierten una expresin en
Cbool Boolean
Cbyte Byte
Ccur Currency
Cdate Date
CDbl Double
Cint Integer
CLng Long
CSng Single
CStr String
Cvar Variant

Karen Espinoza Sanhueza
11

Nota Los valores que se pasan a una funcin de conversin deben ser vlidos para el
tipo de dato de destino o se producir un error. Por ejemplo, si intenta convertir un
tipo Long en un Integer, el tipo Long debe estar en el intervalo vlido del tipo de dato
Integer.
INTRODUCCION A LAS ESTRUCTURAS DE CONTROL

Estructuras de decisin

Las estructuras de control le permiten controlar el flujo de ejecucin del
programa. Si no se controla mediante instrucciones de control de flujo, la lgica del
programa fluir por las instrucciones de izquierda a derecha y de arriba a abajo.
Aunque se pueden escribir algunos programas sencillos con un flujo unidireccional y
aunque se puede controlar parte del flujo mediante operadores para regular la
precedencia de las operaciones, la mayor parte del poder y utilidad de un lenguaje de
programacin deriva de su capacidad de cambiar el orden de las instrucciones
mediante estructuras y bucles.

Los procedimientos de Visual Basic pueden probar condiciones y, dependiendo de
los resultados de la prueba, realizar diferentes operaciones. Entre las estructuras de
decisin que acepta Visual Basic se incluyen las siguientes:

1. If...Then

Use la estructura If...Then para ejecutar una o ms instrucciones basadas en una
condicin. Puede utilizar la sintaxis de una lnea o un bloque de varias lneas:

If condicin Then instruccin If condicin Then
instrucciones
End If

Condicin normalmente es una comparacin, pero puede ser cualquier expresin
que d como resultado un valor numrico. Visual Basic interpreta este valor como
True o False; un valor numrico cero es False y se considera True cualquier valor
numrico distinto de cero. Si condicin es True, Visual Basic ejecuta todas las
instrucciones que siguen a la palabra clave Then. Puede utilizar la sintaxis de una
lnea o de varias lneas para ejecutar una instruccin basada en una condicin.

Observe que el formato de una nica lnea de If...Then no utiliza la instruccin
End If. Si desea ejecutar ms de una lnea de cdigo cuando condicin sea True, debe
utilizar la sintaxis de bloque de varias lneas If...Then...End If.

If cualquierFecha < Now Then
cualquierFecha = Now
Timer1.Enabled = False ' Desactiva el control Timer.
End If

2. If...Then...Else

Utilice un bloque If...Then...Else para definir varios bloques de instrucciones, uno
de los cuales se ejecutar:

If condicin1 Then
[bloque de instrucciones 1]
[ElseIf condicin2 Then
[bloque de instrucciones 2]] ...
[Else
[bloque de instrucciones n]]
End If

Karen Espinoza Sanhueza
12

Visual Basic evala primero condicin1. Si es False, Visual Basic procede a evaluar
condicin2 y as sucesivamente, hasta que encuentre una condicin True. Cuando
encuentra una condicin True, Visual Basic ejecuta el bloque de instrucciones
correspondientes y despus ejecuta el cdigo que sigue a End If. Opcionalmente, puede
incluir un bloque de instrucciones Else, que Visual Basic ejecutar si ninguna de las
condiciones es True.

If...Then...ElseIf es un caso especial de If...Then...Else. Observe que puede tener
cualquier nmero de clusulas ElseIf o ninguna. Puede incluir una clusula Else sin
tener en cuenta si tiene o no clusulas ElseIf. Por ejemplo:

Dim Nmero, Dgitos, MiCadena
Nmero = 53 ' Inicializa variable.
If Nmero < 10 Then
Dgitos = 1
ElseIf Nmero < 100 Then ' La condicin es True, por lo que se ejecuta la siguiente
instruccin.
Dgitos = 2
Else
Dgitos = 3
End If

Observe que siempre puede agregar ms clusulas ElseIf a la estructura
If...Then. Sin embargo, esta sintaxis puede resultar tediosa de escribir cuando cada
ElseIf compara la misma expresin con un valor distinto. Para estas situaciones, puede
utilizar la estructura de decisin Select Case.

3. Select Case

Visual Basic proporciona la estructura Select Case como alternativa a
If...Then...Else para ejecutar selectivamente un bloque de instrucciones entre varios
bloques de instrucciones. La instruccin Select Case ofrece posibilidades similares a la
instruccin If...Then...Else, pero hace que el cdigo sea ms legible cuando hay varias
opciones.

La estructura Select Case funciona con una nica expresin de prueba que se
evala una vez solamente, al principio de la estructura. Visual Basic compara el
resultado de esta expresin con los valores de cada Case de la estructura. Si hay una
coincidencia, ejecuta el bloque de instrucciones asociado a ese Case:
Select Case expresin_prueba
[Case lista_expresiones1
[bloque de instrucciones 1]]
[Case lista_expresiones2
[bloque de instrucciones 2]]
.
.
[Case Else
[bloque de instrucciones n]]
End Select

Cada lista_expresiones es una lista de uno o ms valores. Si hay ms de un valor
en una lista, se separan los valores con comas. Cada bloque de instrucciones contiene
cero o ms instrucciones. Si ms de un Case coincide con la expresin de prueba, slo
se ejecutar el bloque de instrucciones asociado con la primera coincidencia. Visual
Basic ejecuta las instrucciones de la clusula (opcional) Case Else si ningn valor de la
lista de expresiones coincide con la expresin de prueba.

Dim Nmero

Karen Espinoza Sanhueza
13
Nmero = 8 ' Inicializa variable.
Select Case Nmero ' Evala Nmero.
Case 1 To 5 ' Nmero entre 1 y 5.
Print "Entre 1 y 5"
Case 6, 7, 8 ' Nmero entre 6 y 8.
Print "Entre 6 y 8"
Case Is > 8 And Nmero < 11 ' Nmero es 9 10.
Debug.Print "Mayor que 8"
Case Else ' Otros valores.
Print "No est entre 1 y 10"
End Select

Observe que la estructura Select Case evala una expresin cada vez al principio
de la estructura. Por el contrario, la estructura If...Then...Else puede evaluar una
expresin diferente en cada instruccin ElseIf. Slo puede sustituir una estructura
If...Then...Else con una estructura Select Case si la instruccin If y cada instruccin
ElseIf evala la misma expresin.

Estructuras de bucle

Las estructuras de bucle le permiten ejecutar una o ms lneas de cdigo
repetidamente. Las estructuras de bucle que acepta Visual Basic son:

1. Do...Loop

Utilice el bucle Do para ejecutar un bloque de instrucciones un nmero indefinido
de veces. Hay algunas variantes en la instruccin Do...Loop, pero cada una evala una
condicin numrica para determinar si contina la ejecucin. Como ocurre con
If...Then, la condicin debe ser un valor o una expresin que d como resultado False
(cero) o True (distinto de cero).
En el ejemplo de Do...Loop siguiente, las instrucciones se ejecutan siempre y
cuando condicin sea True:
Do While condicin
instrucciones
Loop

Cuando Visual Basic ejecuta este bucle Do, primero evala condicin. Si condicin
es False (cero), se salta todas las instrucciones. Si es True (distinto de cero), Visual
Basic ejecuta las instrucciones, vuelve a la instruccin Do While y prueba la condicin
de nuevo.
Por tanto, el bucle se puede ejecutar cualquier nmero de veces, siempre y cuando
condicin sea distinta de cero o True. Nunca se ejecutan las instrucciones si condicin
es False inicialmente.
Otra variante de la instruccin Do...Loop ejecuta las instrucciones primero y
prueba condicin despus de cada ejecucin. Esta variacin garantiza al menos una
ejecucin de instrucciones:

Do
instrucciones
Loop While condicin

En este ejemplo se muestra cmo se pueden utilizar las instrucciones Do...Loop. La
instruccin interna Do...Loop hace un bucle 10 veces, establece el valor del indicador a
False y sale prematuramente mediante la instruccin Exit Do. El bucle externo sale
inmediatamente al comprobar el valor del indicador.

Dim Comprobar, Contador
Comprobar = True: Contador = 0 ' Inicializa variables.
Do ' Bucle externo.

Karen Espinoza Sanhueza
14
Do While Contador < 20 ' Bucle interno.
Contador = Contador + 1 ' Incrementa el contador.
If Contador = 10 Then ' Si la condicin es verdadera.
Comprobar = False ' Establece el valor a False.
Exit Do ' Sale del bucle interno.
End If
Loop
Loop Until Comprobar = False ' Sale inmediatamente del bucle externo.

Hay otras dos variantes anlogas a las dos anteriores, excepto en que repiten el
bucle siempre y cuando condicin sea False en vez de True.

Hace el bucle cero o ms veces Hace el bucle al menos una vez
Do Until condicin Do
Instrucciones instrucciones
Loop Loop Until condicin

2. For...Next

Los bucles Do funcionan bien cuando no se sabe cuntas veces se necesitar
ejecutar las instrucciones del bucle. Sin embargo, cuando se sabe que se van a ejecutar
las instrucciones un nmero determinado de veces, es mejor elegir el bucle ForNext.
A diferencia del bucle Do, el bucle For utiliza una variable llamada contador que
incrementa o reduce su valor en cada repeticin del bucle. La sintaxis es la siguiente:

For contador = iniciar To finalizar [Step incremento]
instrucciones
Next [contador]
'Los argumentos contador, iniciar, finalizar e incremento son todos numricos.

Nota El argumento incremento puede ser positivo o negativo. Si incremento es
positivo, iniciar debe ser menor o igual que finalizar o no se ejecutarn las
instrucciones del bucle. Si incremento es negativo, iniciar debe ser mayor o igual que
finalizar para que se ejecute el cuerpo del bucle. Si no se establece Step, el valor
predeterminado de incremento es 1. Al ejecutar el bucle For, Visual Basic:
1. Establece contador al mismo valor que iniciar.
2. Comprueba si contador es mayor que finalizar. Si lo es, Visual Basic sale del bucle.
(Si incremento es negativo, Visual Basic comprueba si contador es menor que
finalizar.)
3. Ejecuta instrucciones.
4. Incrementa contador en 1 o en incremento, si se especific.
5. Repite los pasos 2 a 4.

En este ejemplo se utiliza la instruccin For...Next para crear una cadena que
contiene 10 instancias de nmeros del 0 al 9, donde cada cadena est separada de la
otra por un espacio en blanco. El bucle externo utiliza una variable de contador de
bucle cuyo valor disminuye en uno cada vez que se ejecuta el bucle.













Karen Espinoza Sanhueza
15
Dim Palabras, Caracteres, MiCadena
For Palabras = 10 To 1 Step -1 ' Establece 10 repeticiones.
For Caracteres = 0 To 9 ' Establece 10 repeticiones.

MiCadena = MiCadena & Caracteres ' Agrega un nmero a la cadena.
Next Caracteres ' Incrementa el contador

MiCadena = MiCadena & " " ' Agrega un espacio.
Next Palabras

3. While...Wend

Ejecuta una serie de intrucciones mientras una condicin dada sea True.

While condicin
[intrucciones]
Wend

Si condicin es True, todas las instrucciones se ejecutan hasta que se encuentra la
instruccin Wend. Despus, el control vuelve a la instruccin While y se comprueba de
nuevo condicin. Si condicin es an True, se repite el proceso. Si no es True, la
ejecucin se reanuda con la instruccin que sigue a la instruccin Wend.
Los bucles While...Wend se pueden anidar a cualquier nivel. Cada Wend coincide
con el While ms reciente.
En este ejemplo se utiliza la instruccin While...Wend para incrementar una
variable de contador. Las instrucciones del bucle se ejecutan mientras la condicin sea
True.

Dim Contador
Contador = 0 ' Inicializa la variable.
While Contador < 20 ' Comprueba el valor del Contador.
Contador = Contador + 1 ' Incrementa Contador.
Wend ' Finaliza el bucle End While cuando Contador >
19.
Debug.Print Contador ' Imprime 20 en la ventana Depuracin.

Salida de una estructura de control

La instruccin Exit le permite salir directamente de un bucle For, un bucle Do, un
procedimiento Sub o un procedimiento Function. La sintaxis de la instruccin Exit es
sencilla: Exit For puede aparecer tantas veces como sea necesario dentro de un bucle
For y Exit Do puede aparecer tantas veces como sea necesario dentro de un bucle Do:

For contador = iniciar To finalizar [Step incremento]
[bloque de instrucciones]
[Exit For]
[bloque de instrucciones]
Next [contador[, contador] [,...]]

Do [{While | Until} condicin]
[bloque de instrucciones]
[Exit Do]
[bloque de instrucciones]
Loop

La instruccin Exit Do funciona con todas las variantes de la sintaxis del bucle Do.
En este ejemplo se utiliza la instruccin Exit para salir del bucle For...Next,
Do...Loop y de un procedimiento Sub.


Karen Espinoza Sanhueza
16

VALIDAR LA ENTRADA

Validar Informacin de campos

Puede impedir algunos errores de introduccin de datos y mejorar la facilidad de
uso de su aplicacin si valida la informacin a medida que sta se introduce en los
campos de la aplicacin.

Restringir las opciones mediante controles

Una forma de garantizar que los datos son vlidos consiste en restringir el
nmero de opciones entre las que puede elegir un usuario. Por ejemplo, puede utilizar
un cuadro de lista para permitir que los usuarios seleccionen un nombre de producto
en un formulario. Como los usuarios deben elegir en una lista predefinida, no pueden
escribir un nombre de producto no vlido.

Tambin puede emplear botones de opcin para un nmero reducido de opciones
mutuamente exclusivas o bien puede utilizar casillas de verificacin para opciones de
tipo booleano.

Usar la propiedad MaxLength

La propiedad MaxLength determina la longitud mxima de una cadena en un
cuadro de texto. El sistema emite un aviso acstico cuando el usuario intenta escribir
una cadena que excede la longitud mxima. Si desea mostrar un mensaje de error,
necesita interceptar la pulsacin en el evento KeyPress.

Usar la propiedad Locked

La propiedad Locked determina si los usuarios pueden modificar o no los datos de
un cuadro de texto. Si Locked tiene el valor True, los usuarios slo podrn ver y copiar
datos en un cuadro de texto.

Usar el evento KeyPress para validar datos

Puede utilizar los eventos KeyPress, KeyDown y KeyUp para validar datos a medida
que el usuario escribe. Es posible impedir que el usuario escriba ciertos caracteres (por
ejemplo, puede limitar la introduccin de datos a valores numricos exclusivamente).
Tambin puede modificar datos a medida que se escriben (por ejemplo, puede
convertir todos los caracteres a maysculas).

El evento KeyPress se produce siempre que el usuario escribe un carcter ASCII
estndar. Esto no incluye la mayora de las teclas especiales, como las teclas de
funcin, las teclas de direccin o la tecla SUPR. Para responder a estas teclas, utilice
los eventos KeyDown y KeyUp.

El ejemplo de cdigo siguiente convierte a maysculas todos los caracteres a
medida que el usuario los escribe:

Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub




Karen Espinoza Sanhueza
17
Herramientas de depuracin

Visual Basic proporciona herramientas interactivas para buscar errores de
tiempo de ejecucin y errores en la lgica del programa. Puede tener acceso a todas
las herramientas de depuracin mediante el men Depuracin o la barra de
herramientas Depuracin.
Entre las caractersticas de depuracin de Visual Basic se incluyen las
siguientes:
Puntos de interrupcin y expresiones de interrupcin Establezca un punto de
interrupcin para detener la ejecucin de un programa. Puede establecer un punto
de interrupcin en tiempo de diseo o en tiempo de ejecucin mientras se
encuentre en modo de interrupcin.
Opciones de paso Utilice las opciones de paso para ejecutar fragmentos del
cdigo, de instruccin en instruccin o de procedimiento en procedimiento.


Tratar los errores en tiempo de ejecucin

Cualquiera que sea el diseo de su aplicacin, se producirn errores de tiempo de
ejecucin. Los usuarios olvidan insertar discos en las unidades de disco, los sistemas se
quedan sin memoria y los archivos no estn donde espera encontrarlos. Si agrega a su
aplicacin cdigo eficaz de tratamiento de errores, crear una aplicacin ms robusta.

Descripcin del proceso de tratamiento de errores

El proceso de tratamiento de errores implica los siguientes pasos:
1. Activar una interceptacin de errores que especifique a dnde se bifurcar la
ejecucin cuando se produzca un error.
2. Escribir el cdigo de tratamiento de errores.
3. Salir del cdigo de tratamiento de errores.

La instruccin On Error GoTo activa una interceptacin de errores y especifica
a dnde saltar la ejecucin cuando se produzca un error. Si se produce un error de
tiempo de ejecucin, la ejecucin continuar en la etiqueta indicada por la instruccin
On Error Go To. El controlador de errores ejecuta el cdigo de tratamiento de errores,
seguido de una instruccin Resume que indica dnde debe continuar el proceso.


FUNCION MSGBOX

Las cajas de mensajes o MessageBox, tienen una funcin clara, que es la de
mostrar una determinada informacin, aviso, o pregunta para que el usuario tenga
conocimiento de ella y acte.

Hay 2 formas diferentes de mostrar informacin:

1 - El aviso es s, que tiene por objetivo mostrar una informacin de inters.
2 - El aviso con espera de respuesta, que muestra una informacin 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 instruccin 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 continuacin de la palabra
MsgBox, tambin debe darse cuenta del botn Aceptar que tiene el Focus de la ventana
activa y que slo hay ese botn, y por ltimo el ttulo de la ventana.


Karen Espinoza Sanhueza
18
Podemos modificar estos parmetros para alcanzar nuestros objetivos, por eso,
vamos a escribir ahora este cdigo: MsgBox "Hola", ,"Ejemplo" .
El resultado es, el que se visualiza en la siguiente figura:

Como podemos apreciar en el cdigo, la caja de mensaje posee un ttulo
Ejemplo y el mensaje, pero es posible que deseemos escribir un mensaje en varias
lneas con salto de prrafo. Nada tan fcil como este cdigo por ejemplo: MsgBox
"Hola" & vbCrLf & "Esto es un ejemplo.", , "Ejemplo".

El resultado es, el que se visualiza en la siguiente figura:

Habr observado en la expresin anterior que se ha utilizado vbCrLf (Visual
Basic Carriage Return Line Feed, VB retorno de carro y avance de lnea) Vea mas
adelante la aclaracin de esta expresin. Con ella logramos introducir un salto de
lnea.

Supongo que se habr percatado de que entre el mensaje y el ttulo de la
ventana, hemos escrito dos comas, esto es porque entre las comas, debe ir un nmero
que representar el icono a mostrar. Existen cuatro iconos diferentes adems de la
posibilidad de no mostrar ninguno. Los iconos son:

Estos iconos corresponden a los siguientes mensajes:
Mensaje crtico.
Mensaje de pregunta.
Mensaje exclamativo.
Mensaje de informacin.

Para mostrar el icono en cuestin o para que Visual Basic lo entienda, es
necesario escribir lo siguiente:
Mensaje crtico. VbCritical 16
Mensaje de pregunta. VbQuestion 32
Mensaje exclamativo. VbExcalamqtion 48
Mensaje de informacin. VbInformation 64

Note que es lo mismo insertar VbCritical o 16.

Vamos a ver un ejemplo aadiendo un icono al ltimo ejemplo:

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

Ahora bien, es posible que queramos mostrar algn otro botn que o bien no
sea el de Aceptar o que adems del botn de Aceptar haya ms botones. Para este
propsito, tenemos los siguientes parmetros:

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
Aplicacin modal vbApplicationModal 0 (Es la caja de mensaje sin
icono)
La forma de hacer esto es sumar al parmetro 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 ,


Karen Espinoza Sanhueza
19
"Ejemplo"

El resultado es, el que se visualiza en la siguiente figura:

An as, es posible que deseemos que el Focus lo adquiera otro botn
determinado. Por ejemplo, en este caso el Focus lo tiene el botn S, pero es posible que
deseemos que lo tenga el botn No por ejemplo. Esto se consigue con los siguientes
parmetros:

Primer botn predeterminado vbDefaultButton1 0
Segundo botn predeterminado vbDefaultButton2 256
Tercer botn predeterminado vbDefaultButton3 512
Por ejemplo: MsgBox "Hola" & vbCrLf & "Esto es un ejemplo.",
VbQuestion + vbYesNo + vbDefaultButton2, "Ejemplo"

El resultado es, el que se visualiza en la siguiente figura:

Si no se seala el botn predeterminado, Visual Basic
seleccionar el primer botn. En caso de seleccionar como
predeterminado un botn 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 botn ha pulsado el usuario, esto lo podemos conseguir mediante
el siguiente cdigo 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 cdigo:

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 botn S obtendremos una accin, y si pulsamos el otro botn otra
accin. Ahora bien, para elegir o seleccionar un evento o accin, el usuario debe saber
combinar los cdigos, sabiendo que un MsgBox posee la siguiente sintaxis principal:

MsgBox Mensaje, Botones, Ttulo de la ventana





Karen Espinoza Sanhueza
20
FUNCION INPUTBOX

El InputBox o caja de entrada es otra de las partes ms utilizadas para la
interaccin del usuario con la aplicacin. Es importante que el usuario interacte con
la aplicacin para ser el protagonista de esta.

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

El mensaje que quiere que aparezca se realiza de forma casi idntica al
MessageBox. Puede escribirse varias lneas de texto seguidas por la constante de Visual
Basic vbCrLf o salto de lnea o prrafo.
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 continuacin
se muestra el MsgBox - 2 lnea del cdigo 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, la
siguiente figura:

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












Karen Espinoza Sanhueza
21
EJERCICIOS

1. Hallar la suma de los diez primeros nmeros pares.



























INICIO
I = 0
S = 0
I = I + 2
S = S + I
I = 20
IMPRIMIR S
FIN
No
S

Karen Espinoza Sanhueza
22
2. Hallar la suma de los 100 primeros nmeros impares












INICIO
I = -1
S = 0
I = I + 2
S = S + I
I = 199
IMPRIMIR S
FIN
No
S

Karen Espinoza Sanhueza
23

3. Hallar los 100 primeros nmeros pares e impares








































INICIO
p= 0
I= -1
p = p + 2
i = i + 2
I = 199
IMPRIMIR p, i
FIN
No
S

Karen Espinoza Sanhueza
24

4. Dado un nmero contestar si es positivo o negativo






























INICIO
LEER N
N>0
EL NUMERO N
ES POSITIVO
EL NUMERO N
ES NEGATIVO
FIN

Karen Espinoza Sanhueza
25
5. Hallar el cuadrado de los 100 primeros nmeros pares














































INIC
C = 0
I = I + 2
C = I * I
I = 200
NUMERO I
CUADRAD
FIN
N
S
I = 0

Karen Espinoza Sanhueza
26

6. Hallar el factorial de un nmero








































INICI
F = 1
I = 0
I = I + 1
F = F * I
I = N
EL FACTORIAL
DE N ES P
FIN
N
S
INGRESE

Karen Espinoza Sanhueza
27
7. Considere que no existe la operacin de multiplicar, suponga que se desea multiplicar
los nmeros a y b (a * b). Disee un algoritmo que implemente dicha operacin.





















INICI
LEER

LEER
VALOR = 0
I = 1, SEGUNDO
VALOR = VALOR + PRIMERO
A * B = VALOR
FIN

Karen Espinoza Sanhueza
28
8. Desarrollar un algoritmo que permita ingresar dos nmeros e imprima el cuadrado del
nmero mayor





















INICIO
LEER
A>B
FIN
X = 0
X = A * A X = B * B
IMPRIMIR

Karen Espinoza Sanhueza
29
9. Escriba un procedimiento, que dado un mes me permita conocer el nmero de das que
posee dicho mes











































INICIO
MES
INGRESE MES
IMPRIMIR 31 DIAS IMPRIMIR 31 DIAS IMPRIMIR 31 DIAS
ENERO, MARZO,
MAYO, JULIO,
AGOSTO, OCTUBRE,
FEBRERO
ABRIL, JUNIO,
SEPTIEMBRE,
NOVIEMBRE
FIN

Karen Espinoza Sanhueza
30

10. Escriba un procedimiento que dada una edad permita indicar el descuento a efectuar.
Hasta los 12 aos no se paga pasaje (100% Descuento), entre los 13 y los 20 aos el
descuento es del 10%, entre 21 y 44 aos no se realiza descuento (0%), y las personas
mayores de 45 aos pagan el 50%. (Utilice la estructura de seleccin If).









































FIN
DESCUENTO
DEL 100 %
DESCUENTO
DEL 10 %
INICIO
LEER EDAD
EDAD<=12
EDAD<=20
S N
DESCUENTO
DEL 10 %

EDAD<=4
DESCUENTO
DEL 0 %
S N
S N

Karen Espinoza Sanhueza
31
Proyecto 1: Audiencias (Utilizacin de ADO)


1. Confeccione la siguiente Base de datos

TABLA AUDIENCIAS



TABLA PERSONAL



TABLA USUARIO



2. Declare las siguientes variables en un modulo

Global mybd As New Connection
Global mirec As New Recordset
Global mirec2 As New Recordset
Global RutBus As String
Global micampo As String, mitexto As String
Global nombresol As String, motivo As String, respuesta As String

Function valida_rut(Rut As String) As Boolean
On Error GoTo salto

Dim suma As Integer, resto As String
suma = Mid(Rut, 1, 1) * 3 + Mid(Rut, 2, 1) * 2
suma = suma + Mid(Rut, 4, 1) * 7 + Mid(Rut, 5, 1) * 6 + Mid(Rut, 6, 1) * 5
suma = suma + Mid(Rut, 8, 1) * 4 + Mid(Rut, 9, 1) * 3 + Mid(Rut, 10, 1) * 2
resto = 11 - (suma Mod 11)
If resto = "11" Then
resto = "0"
ElseIf resto = "10" Then
resto = "K"

Karen Espinoza Sanhueza
32
End If
If resto = Mid$(Rut, 12, 1) Then
valida_rut = True
Else
valida_rut = False
End If

salto:
Exit Function
End Function




3. Entrada










Option Explicit

Private Sub Form_Load()
mybd.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Proyecto 1
Agenda\Bd\Audiencias.mdb;Persist Security Info=False"
End Sub

Private Sub Login_GotFocus()
Login.BackColor = &HC0C000
End Sub

Private Sub Login_LostFocus()
Login.BackColor = &HFFFFFF
End Sub

Private Sub Login_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Password.SetFocus
End If
End Sub

Private Sub Password_GotFocus()
Password.BackColor = &HC0C000
End Sub

Private Sub Password_LostFocus()
Password.BackColor = &HFFFFFF
End Sub

Private Sub Password_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Aceptar.SetFocus
End If
End Sub

Karen Espinoza Sanhueza
33

Private Sub Aceptar_Click()
If Login <> "" And Password <> "" Then
mirec.Open "select * from usuarios where Login = '" & (Login) & "' and Password=
'" & (Password) & "'", mybd, adOpenKeyset, adLockOptimistic, adCmdText
If mirec.RecordCount > 0 Then
Men.Show
Unload Me
Else
MsgBox "Usuario no valido"
End If
mirec.Close
Else
MsgBox "Valores en blanco"
End If
End Sub

Private Sub Cancelar_Click()
End
End Sub








































Karen Espinoza Sanhueza
34
4. Mantenedor Usuarios
Option Explicit
Dim Bandera As Integer
Dim s As String

Sub controles(A As Boolean, b As Boolean)
Agregar.Enabled = b
Eliminar.Enabled = b
Modificar.Enabled = b
Buscar.Enabled = b
Aceptar.Enabled = A
Cancelar.Enabled = A
Rut.Enabled = A
Nombre.Enabled = A
Login.Enabled = A
Password.Enabled = A
Primero.Enabled = b
Ultimo.Enabled = b
Anterior.Enabled = b
Siguiente.Enabled = b
End Sub

Sub Limpiar()
Rut = "__.___.___-_"
Nombre = ""
Login = ""
Password = ""
End Sub

Sub asignar()
mirec!Rut = Rut
mirec!Nombre = Nombre
mirec!Login = Login
mirec!Password = Password
End Sub


Karen Espinoza Sanhueza
35
Sub Mostrar()
If mirec.RecordCount > 0 Then
Rut = mirec!Rut
Nombre = mirec!Nombre
Login = mirec!Login
Password = mirec!Password
End If
End Sub

Private Sub Form_Activate()
If RutBus <> "" Then
mirec.MoveFirst
s = "Rut = '" & (RutBus) & "'"
mirec.Find s
End If
Mostrar
End Sub

Private Sub Form_Load()
mirec.Open "select * from usuarios", mybd, adOpenKeyset, adLockOptimistic,
adCmdText
Mostrar
End Sub

Private Sub Form_Unload(Cancel As Integer)
On Error GoTo salto
mirec.Close
salto:
Exit Sub
End Sub

Private Sub Rut_GotFocus()
Rut.BackColor = &HC0C000
End Sub

Private Sub Rut_LostFocus()
Rut.BackColor = &HFFFFFF
If Not valida_rut(Rut) Then
respuesta = MsgBox("Rut Invalido, Desea Reintentar", 4 + 32, "ValRut 2008")
If respuesta = 6 Then
Rut = "__.___.___-_"
Rut.SetFocus
Else
Cancelar_Click
End If
End If
End Sub

Private Sub Rut_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Nombre.SetFocus
End If
End Sub

Private Sub Nombre_GotFocus()
Nombre.BackColor = &HC0C000
End Sub



Karen Espinoza Sanhueza
36
Private Sub Nombre_LostFocus()
Nombre.BackColor = &HFFFFFF
End Sub

Private Sub Nombre_KeyPress(KeyAscii As Integer)
If Asc(UCase(Chr(KeyAscii))) < Asc("A") Or Asc(UCase(Chr(KeyAscii))) > Asc("Z") Then
If KeyAscii <> 8 And KeyAscii <> 13 And KeyAscii <> 209 And KeyAscii <> 241
And KeyAscii <> 32 And KeyAscii <> 225 And KeyAscii <> 233 And KeyAscii <> 237
And KeyAscii <> 243 And KeyAscii <> 250 Then
KeyAscii = 0
Beep
End If
If KeyAscii = 13 Then
Login.SetFocus
End If
End If
End Sub

Private Sub Login_GotFocus()
Login.BackColor = &HC0C000
End Sub

Private Sub Login_LostFocus()
Login.BackColor = &HFFFFFF
End Sub

Private Sub Login_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Password.SetFocus
End If
End Sub

Private Sub Password_GotFocus()
Password.BackColor = &HC0C000
End Sub

Private Sub Password_LostFocus()
Password.BackColor = &HFFFFFF
End Sub

Private Sub Password_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Aceptar.SetFocus
End If
End Sub
Private Sub Primero_Click()
If mirec.RecordCount > 0 Then
mirec.MoveFirst
End If
Mostrar
End Sub









Karen Espinoza Sanhueza
37
Private Sub Siguiente_Click()
If mirec.RecordCount > 0 Then
mirec.MoveNext
If mirec.EOF Then
mirec.MoveLast
End If
End If
Mostrar
End Sub

Private Sub Anterior_Click()
If mirec.RecordCount > 0 Then
mirec.MovePrevious
If mirec.BOF Then
mirec.MoveFirst
End If
End If
Mostrar
End Sub

Private Sub Ultimo_Click()
If mirec.RecordCount > 0 Then
mirec.MoveLast
End If
Mostrar
End Sub

Private Sub Agregar_Click()
controles True, False
Limpiar
mirec.AddNew
Rut.SetFocus
Bandera = 1
End Sub

Private Sub Eliminar_Click()
If Rut <> "" And Nombre <> "" And Login <> "" Then
respuesta = MsgBox(" Esta Seguro ?", vbYesNo)
If respuesta = vbYes Then
If mirec.RecordCount > 1 Then
mirec.Delete
mirec.MoveFirst
mirec.Requery
Limpiar
Mostrar
Else
MsgBox "Lo siento, debe haber al menos un registro"
End If
End If
Else
MsgBox "Valores en Blanco"
End If
End Sub







Karen Espinoza Sanhueza
38
Private Sub Modificar_Click()
If Rut <> "" And Nombre <> "" And Login <> "" Then
controles True, False
Rut.SetFocus
Bandera = 2
Else
MsgBox "Seleccione registro a modificar"
End If
End Sub

Private Sub Buscar_Click()
ConsultaUsuario.Show
End Sub

Private Sub Aceptar_Click()
If Bandera = 1 Then
If Rut <> "" And Nombre <> "" And Login <> "" Then
mirec2.Open "select * from usuarios where rut = '" & (Rut) & "'", mybd,
adOpenKeyset, adLockOptimistic, adCmdText
If mirec2.RecordCount = 0 Then
asignar
mirec.Update
MsgBox "listo"
Else
MsgBox "Usuario ya ingresado"
mirec.CancelUpdate
End If
mirec2.Close
Else
MsgBox "Valores en Blanco"
Exit Sub
End If
End If
If Bandera = 2 Then
If Rut <> "" And Nombre <> "" And Login <> "" Then
s = "rut = '" & Rut & "'"
mirec2.Open "select * from usuarios where rut = '" & (Rut) & "'", mybd,
adOpenKeyset, adLockOptimistic, adCmdText
If mirec2.RecordCount = 0 Then
asignar
mirec.Update
Else
If mirec2.RecordCount = 1 And mirec2!Rut = mirec!Rut Then
asignar
mirec.Update
Else
MsgBox "Rut Duplicado"
Mostrar
End If
End If
mirec2.Close
Else
MsgBox "valores en blanco"
End If
End If
controles False, True
Bandera = 0
End Sub


Karen Espinoza Sanhueza
39
Private Sub Cancelar_Click()
controles False, True
Limpiar
End Sub

Private Sub Salir_Click()
Unload Me
End Sub


Karen Espinoza Sanhueza
40

5. Buscador


Option Explicit

Sub Forma()
If UCase(Combo1.Text) = UCase("Cualquier parte del Campo") Then
mitexto = "%" & Text1 & "%"
ElseIf UCase(Combo1.Text) = UCase("Comienzo del Campo") Then
mitexto = Text1 & "%"
Else
mitexto = Text1
End If
End Sub

Sub Criterio()
Forma
If Text1.Visible Then
Adodc1.RecordSource = "select Rut, Nombre, login from Usuarios where " &
micampo & " like '" & (mitexto) & "'"
Else
Adodc1.RecordSource = "select * from Usuarios"
End If
Adodc1.Refresh
End Sub

Private Sub Form_Load()
mitexto = Text1
micampo = "Nombre"
End Sub

Private Sub Form_Unload(Cancel As Integer)
Adodc1.Recordset.Close
End Sub




Karen Espinoza Sanhueza
41
Private Sub Option1_Click(Index As Integer)
If Index = 3 Then
Text1.Visible = False
Else
Text1.Visible = True
End If
micampo = Option1(Index).Caption
Criterio
End Sub

Private Sub Combo1_Click()
Criterio
End Sub


Private Sub Combo1_GotFocus()
Combo1.BackColor = &HC0C000
End Sub

Private Sub Combo1_LostFocus()
Combo1.BackColor = &HFFFFFF
End Sub

Private Sub Combo1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text1.SetFocus
End If
End Sub

Private Sub Text1_Change()
Criterio
End Sub

Private Sub Text1_GotFocus()
Text1.BackColor = &HC0C000
End Sub

Private Sub Text1_LostFocus()
Text1.BackColor = &HFFFFFF
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Volver.SetFocus
End If
End Sub

Private Sub Volver_Click()
DataGrid1.Col = 0
If DataGrid1.Text <> "" Then
RutBus = DataGrid1.Text
ElseIf DataGrid1.VisibleRows > 1 Then
DataGrid1.Row = 1
RutBus = DataGrid1.Text
End If
Unload Me
Usuario.Show
End Sub

Karen Espinoza Sanhueza
42

6. Reserva de Audiencias


Option Explicit

Dim tablapersonal As New Recordset
Dim tablaaudiencias As New Recordset
Dim tablabusqueda As New Recordset
Dim hora As Date
Dim respuesta As String

Sub Limpiar()
hora = "08:00"
MSFlexGrid1.Row = 0
While hora < "19:30"
MSFlexGrid1.Row = MSFlexGrid1.Row + 1
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = ""
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = ""
hora = DateAdd("n", 30, hora)
Wend
End Sub







Karen Espinoza Sanhueza
43
Sub asignar_horarios()
hora = "08:00"
While hora < "19:30"
MSFlexGrid1.AddItem Format(hora, "hh:mm")
hora = DateAdd("n", 30, hora)
Wend
End Sub

Sub mostrar_audiencias()
hora = "08:00"
MSFlexGrid1.Col = 0
MSFlexGrid1.Row = 0
tablabusqueda.Open "Select * from Audiencias where nombre = '" & (Lisper) & "' and
fecha = FORMAT('" & (Calendar1) & "') order by hora asc", mybd, adOpenKeyset,
adLockOptimistic, adCmdText
If tablabusqueda.RecordCount > 0 Then
tablabusqueda.MoveFirst
While hora < "19:30"
MSFlexGrid1.Row = MSFlexGrid1.Row + 1
If Format(tablabusqueda!hora) = Format(hora) Then
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = tablabusqueda!nombresol
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = tablabusqueda!motivo
MSFlexGrid1.Col = 0
tablabusqueda.MoveNext
If tablabusqueda.EOF Then tablabusqueda.MoveLast
End If
hora = DateAdd("n", 30, hora)
Wend
End If
tablabusqueda.Close
End Sub

Sub initcombo1()
tablapersonal.Open "select * from personal", mybd, adOpenKeyset,
adLockOptimistic, adCmdText
If tablapersonal.RecordCount > 0 Then
Lisper.Text = tablapersonal!Nombre
End If
tablapersonal.Close
End Sub

Private Sub Form_Load()
Calendar1 = Date
asignar_horarios
initcombo1
Label1 = Format(Calendar1, "Long Date")
mostrar_audiencias
End Sub

Private Sub MSFlexGrid1_Click()
MSFlexGrid1.Col = 0
tablabusqueda.Open "select * from audiencias where Nombre = '" & (Lisper.Text) & "'
and fecha = FORMAT('" & (Calendar1) & "') and hora = '" & (MSFlexGrid1.Text) & "'",
mybd, adOpenKeyset, adLockOptimistic, adCmdText
If tablabusqueda.RecordCount > 0 Then
respuesta = MsgBox("Desea Eliminar la Reserva", 4 + 32, "Agen 2008")
If respuesta = 6 Then

Karen Espinoza Sanhueza
44
tablabusqueda.Delete
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = ""
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = ""
respuesta = MsgBox("Reserva Eliminada", 0 + 64, "Agen 2008")
End If
End If
tablabusqueda.Close
End Sub

Private Sub MSFlexGrid1_DblClick()
Dim n As String

On Error GoTo paso
tablaaudiencias.Open "select * from audiencias", mybd, adOpenKeyset,
adLockOptimistic, adCmdText
MSFlexGrid1.Col = 0
DatAu.Show 1
If nombresol <> "" And Lisper <> "" Then
tablaaudiencias.AddNew
tablaaudiencias!Nombre = Lisper
tablaaudiencias!fecha = Calendar1
tablaaudiencias!hora = MSFlexGrid1.Text
tablaaudiencias!nombresol = nombresol
tablaaudiencias!motivo = motivo
tablaaudiencias.Update
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = nombresol
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = motivo
End If
tablaaudiencias.Close
Exit Sub

paso:
respuesta = MsgBox("Error en el ingreso ", 0 + 64, "Agen 2008")
Exit Sub
End Sub

Private Sub Calendar1_Click()
Label1 = Format(Calendar1, "Long Date")
Limpiar
mostrar_audiencias
End Sub

Private Sub lisper_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Limpiar
mostrar_audiencias
End If
End Sub

Private Sub Lisper_Click(Area As Integer)
If Area <> 0 Then
Label1 = Format(Calendar1, "Long Date")
Limpiar
mostrar_audiencias
End If

Karen Espinoza Sanhueza
45
End Sub



Private Sub Salir_Click()
Unload Me
End Sub


7. Ingreso Reservas

Option Explicit

Private Sub NueNom_GotFocus()
NueNom.BackColor = &HC0C000
End Sub

Private Sub NueNom_LostFocus()
NueNom.BackColor = &HFFFFFF
End Sub


Private Sub NueMot_GotFocus()
NueMot.BackColor = &HC0C000
End Sub

Private Sub NueMot_LostFocus()
NueMot.BackColor = &HFFFFFF
End Sub


Private Sub Aceptar_Click()
nombresol = NueNom
motivo = NueMot
Unload Me
End Sub

Private Sub Cancelar_Click()
nombresol = ""
motivo = ""
Unload Me
End Sub