reg Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
F TDES
ro o
I 8 xp~ s -
FINDES 1
Fundacioacuten de Inves tigacioacuten para el Desarrollo Profesional
Con tenido
Tema 1 Introduccioacuten a la Programacioacuten 4 Anaacutelisis 4 Algoritmos 5 Programacioacuten Estructurada 6
Tema 2 Entorno de Trabajo de Visual Basic 8 El Entorno de Trabajo 8 Barra de Herramientas 8 Disentildeador de formularios 8 Cu adro de Herramientas 8
entana de Propiedades ~ iquest 8 Ven tana de Proyectos iexcl 9 Ve ntana Editor de Coacutediqo 9
Tema 3 Fundamentos de roqrarnaci oacuteh Rara Visdal Basic i 10 Estr cturas de Coacutedigo 10 Objetos en Visual Basic ~ 11 Establecer propiedades 11
onvenciones para nom brhr objetos de Visual Basic 13 Utilizar Meacutetodos c 14 Entender los Eventos 14 Elaboracioacuten de Menuacutes 15
El editor de menuacutes 15 Elementos del Menuacute ~ 15 Teclas de Meacutetodo Abreviado ~ 16 Eventos del Menuacute 16
Uti lizacioacuten de Cuadros de Diaacutelogo 17 Cuadros de Mensaje (Msgbox) 17 Cuad ro de Entreacuteida Inl)utBox (Fuhci oacuten) 21 Insertando Contreacuteles Baacutesicos 23
Entrada de Datos ~ ~ 23 Control Marco L ~ 24 Botones de Comando r 25 Casillas de verificacioacuten 25 Botones de Opcioacuten 25
Eleme ntos Graacuteficos 26 Cont rolltiacutenelaquo _ 26 Con ro t ape 0gt ~ 0 o o o 26I Sh
Tema4 Estructuras y r=lem ~ntos Fundamentales de ProgramacLoacuten 27 Tipo s de Prccedirnientos 0 27
dmiddotB t middot~ Smiddot ~ ~ i bull 7Crear pr0ce Imlen os uu Llamar al procedimiento Sub _ oo 27 Crear procedimientos Function 28 Llamar al procedimiento Function 28
Variables 29 Ti pos de datos _ _ 30
FINDES 2
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tipos de Datos 31 Constantes 33 Op eradores de Visual Basic 33
Tem a 5 Sentencias o Estructu ras de Control 34 Exp resiones Loacutegicas 34 If Then Else i 35 Se lect Case bull 37 Es ructuras de Repeticioacuten 39 For Next 39 Do Loop 41
Tema 6 Elementos de Admiacuteniacutestracloacute rr deDatos 1 ~ 43 Con ectar con una Base qeDatos iexcl 43 Crear una Base de Datos 45
Tema 7 Manipulacioacuten d~ Archivos 48 Controles Especiatizados I 48 Conectar los controles 49
Tema 8 Manejando los errores 50 ~
losario de Funciones ( 51 Fecha y Hora 51 Matemaacuteticas 55 Informacioacuten 57 Texto 58
~ lt
FINDES 3
Fundacioacuten de Inyestigacioacuten para el Desarrollo Profesional
ema 1 Introduccioacuten a la Programacioacute
Etapas de la programacioacuten ~ Definicioacuten y anaacutelisis del problema ~ Disentildeo del algoritmo ~ Codificacioacuten del programa ~ Depuracioacuten y verificacioacuten ~ Documentacioacuten ~ Mantenimiento
Anaacutelisis El anaacutelisis de sistemas se realiza teniendo presente IQs siguientes objetivos Identif icar las necesidades
~ Evaluar la vialidad delsistema ~ ealiza r un anaacutelisis teacutecnico y econoacutemico ~ signar funciones al software al h ~ r9 ware a 19 gente a la base de datos y a otros
elementos del sistema ~ Establecer restricciones de costo y tieacutempo ~ Crear una definicioacuten del sistema que sea la base para topo el trabajo posterior de
ingenieriacutea
e trata de una transformacioacuten de un concepto dudoso en un conjunto concre to de elementos tangibles Debido eacuteiexcl que durante el anaacutelisis la comunicacioacuten es excepcionalmente densa abundan las oportunidad s deacute mal entendimiento omision s inconsistencias y errores
La identificacioacuten de las necesidades es el punto de partida en la evolucioacuten de un sistema basado en computadora
Para empezar el analiacutesta con baacutese-a un anaacutelisis previo de r~qu e r iacute mientos define los objetivos del sistema la lntorrn aacutecioacuten que se va obtener la intorrnaciacuteoacuten que se va suministrar las fupciones y el reoWmiento req Ll~uumldQ
El analista se asegura de distinguir entre lo que necesita el cliente (elementos criacuteticos para la realizacioacuten) y lo que el cliente quiere (elementos deseables pero no esenciales)
U a vez identificado todos los objetivos el analista realiza una ev~l uacioacute n de la informacioacuten suplementaria iquestExiste la tecnolog iacutea necesaria para constru ir el si tema iquestQueacute r~yurs~ ~1 f~briacioacuten y d~ dw~arroll q ~spe~ ial~s se requertraacutel1 Queacute liacutemites se han impuesto-a los costos y a la agendajetc ~
La informacioacuten recogida durante la etapa de identificacioacuten de las necesidades se especifica en un documento de conceptos del sistema
FINDES 4
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Posterior al anaacutelisis de requerimientos y ya definidos los elementos a ut ilizar se deberaacuten estructurar los algoritmos a utilizar en el sistema planeado
Algoritmos
Sec uencia detallada y loacutegica de pasos para alqanzar un objetivo Lista bien definida ordenada y finit a de operaciones que permite hallar la solucioacuten a un pro blema Dado un estado inici a] Y una entrada a traeacutes de pasos sucesivo y bien definidos se llega a un estado final obteniendo una solucioacuten Los algoritmos so objeto de estudio de la algoritmia
S importancia radica en mostrar la manera middotCiacutee nevar a cabo procesos y resolver mecaacutenicamente problemas matemaacuteticos o de otro tipo Al igual que las func iones m temaacuteticas los algoritmos reciben Un entrada y la tran sforman en una salida comportaacutendose como una Caja negra Sin ernbarqb para que un algoritmo pueda ser considerado como tal dele ser deterrniptstq tener un nuacutemero finito de instrucciones y debe acabar Por deterrnintildeista se entiende que si se sigue el mismo proceso maacutes de una vez se llega siempre al mismo resultado
El concepto de alqoritrno aunque similar y obvlarnent eacute relacionado no debe confundirse con el concepto de programa Mientras el primero es la especificacioacuten de un conjunto de pasos (operaciones instrucciones oacuterdenes ) orientados a la resolucioacuten de un problema el segundo es ese conjunto de operaciones especif icadas en un determinado lenguaje de programacioacuten y para un computador concreto susceptible de ser ejecutado (o compilado o inte rpretaao) Un algoritmo estrictamente hablando no puede ejecutarse hasta que se implementa ya sea en un leng uaje de programacioacuten en un circuito eleacutectrico en un aparato mecaacutenico usando papel y laacutepi z o en alguacuten otro modelo de computacioacuten
Por ejemplo
Algoritmo Suma
Inicia Va riable entera ab c Leer a Ledrb c=a+b Escribir El resultado es 0
~ L
Finar
FINDES 5
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Prog amacioacute E tructurada
La programacioacuten estructurada es una forma de escribir programas de ordenador (programacioacuten de computadora) de manera clara Para ello utiliza uacutenicamente tres estructuras secuencia seleccioacuten e iteracioacuten
Los programas cornputarizados pueden ser esc ritos con un alto grado de estructuracioacuten lo cual les permite ser maacutes faacutecilmente comprensibles en act ividades tal s como pruebas mantenimiento y modificacioacuten de los mismos Mediante la programacioacuten Estructurada tedas las bifurcaciones de control de un programa se
ncuentran estandarizadas d E9 forma tal que es posible leer la codificacioacuten del mis o desde su inicio hasta su terminacioacuten aacuten fo rma c eacutentiacutenua sin tener que saltar de un I gar a otro del programa siguiendo el rastro de la loacutegicordf establecida por el programador como es [a situacioacuten habiacutetuaacute] con codificaciones desaholladas bajo otras teacutecnicas
En programacioacuten Estructurada los programadores ti eben profundizar maacutes que lo usual al proceder a realizar el disentildeo original del programa pero el resultado final es maacutes faacutecil de leer y comprender el objetivo de un programador profesional al escribi r pro ramas de una manera estructurada es realizarlos utilizando solamente un numero de bifurcaciones de control estandarizados
El resu ltado de aplicar la sistemaacutetica y disciplinada manera de elaboracioacuten de programas establecida por la P~og ramac i oacuten Estructurada es una programacioacuten de alta precisioacuten como nunca antes habiacutea s ido lograda
Definiciones
Programacioacuten Estructurada es una teacutecnica en la cual la estructura de un programa es es la interpelacioacuten ae sus partes realit alttah claramente coacutemo es posi~ l e mediante el uso de tres estructuras 199 icas decontrol 0
e ~ ~
Secuenc iaSucesioacuten siacutempiacutee de dds o maacutes operaciones l
setecclon bifurcacioacuten con(jicionaiexclde untildea-orfraacute s operaciones Iteracioacuten Repeticioacuten de una operacioacuten mientras se cumple una condicioacuten
Estos tres tipos de estructuras loacutegicas dey control pueden ser combinados para producir programas que manejen cualquier tarea deprocesamientodeacute intorrnacioacuten
iexcl 1 0
Un programa estructurado estaacute compuesto d~ i segmentos los cuales puedan estar ~
constituidos POr p~as pocas in~trucQioneacutes oacute poacute ~unapaacutegiri a 0imaacutesdeiltOdifi8aCioacute l1 Cada seg ente tiacuteeheacute sOacutelamente una e n tradk~y uria salida esto s segrilentildetos asumiendo que no poseen lazos infinitos y no tienen instrucciones que jamaacutes se ejecuten se
e omi nan programas propios Cuando varios programas propios se combinan utilizando las tres estructuras baacutesicas de control mencionadas anteriormente el resultado es tambieacuten un programa propio
FINDES 6
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Por ejemplo Estructura de programacioacuten de Suma
Inicia Suma ( ) Declara abc es Entero a=5 b=7 c=a+b Escribe El reacutesultado es c
Final
FINDES 7
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 2 E orn d rabajo de Visual Bas ic
El Entorno de rabajo Visual Basic es un entorno de desarrollo disentildeado para la creacioacuten de aplicaciones para lo entornos de trabajo Microsoft Windows 95 98 Y NT Este lenguaje auacutena las posibilidades de-un lenglaje de alto nivel con las herramientas de disentildeo graacutefico lo cual nos da acceso a todas las funciones de los sistemas anteriormente citados Los elementos del entrono de desarrollo de Visual Basic son
Ba ra de Herramie tas ~O=- = =r 0= = - =~ ~+- ~F--~~~- _
Allthite t licic n er ereielt o fo rm~ lo R~pur~i~n Ej _ Jt~ r ~lj l1~ul t Di~g rm1 ti~rran ~n Compfeme l1 t~ ~olmiddot )~iacute1 __ __ _ _ ~ _ __~__ --- c_ bull_ bull_bullbullbull~_ - - --- - -_ - bull - - - - _ bull bull j-o _
11 ~ lt~ 1l ~ 1 - ~ I ~ ~ tB middot middotmiddot 6t 1l t i 00 fiexclj ~~ )OO iI ~ ~ ____ 0 _ bull bullbull _ bullbull_ _~ _ _ bullbullbull__ bullbullbullbull_bullbull _ _ bullbull_bull _ bullbull bull_ ____ _ _ ~~bull bull_ -
Permite un acceso raacutepido a os comandos maacutes utilizados ~
isentildeador de formularlos Es la ventana en la que se disentildearaacute la interfaz de la aplicacioacuten en ella se pueden agregar controles graacuteficos e imaacutegenes Cada formulario de una aplicacioacuten apareceraacute en su propia ventana
Cuadro de Herramientas En el cuadro de herramientas podemos encontrar un conjunto de herramientas que permiten insertar los objetos o controles en el formulario durante en tiempo
iexcl iexcl- (Tde disentildeo los objetos maacutes comunes son botones (command) etiqueta (Iabel) i sectr3 ~ cuadros de image n (Pieture) imaacutegenes (Image) -etc
Si hacemos doble click dQ[l el -ratoacuten sobre alguqo de ellos se insertaraacute l o ~ automaacuteticamente ~ n la-ventana deacutel formulario
1 _1 ~
ltOJ -c-
I ~ ~ Ventana de Prop iedades Los objetos tienen asociados unas propiedades que describen sus atributos valores compo rtamiento y apariencia del objeto
Las opciones d~ estav eacutenfanasoruacute ~ Lista desplegable de objetos Donde podremos visualizar
el nombre de los 0lgtjet9s de la aplicacioacuten ~ Lista de- propiedades del obleto- ~elec~iqna9d middoti Al
sejeccloriat un objeto con la lista desplsgableanteridrmeacuteniacutee mencionada nos apareceraacuten las propiedades del mismo ( ame visible appearence borderstyle etc) En la lista de propiedades se pueden modificar las propiedades del objeto Se puede visualizar de dos formar por categoriacutea o alfabeacuteticamente
FINDES 8
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ventana de Proyectos Contiene la lista de los archivos que forman parte de la aplicacioacuten Los tipos de archivos que se pueden incluir en un proyecto son
gt Arch ivo de Proyecto Es el que rsallza el ectot)seguimiento de todos los fich ero~ que forman parte de la aplicacioacuten Se guarda enlt un fichero con la extensioacutenVBP
gt Arch vo de Recursos Aquiacute se guardan cadenas de texto mapas de bits y demaacutes datos que puedan modificarse sin tener que volver a modificar el coacutedigo Se guardan con una extensioacuten RES o
gt Moacutedulo de Formularlo Contiene controles y coacuted igo soacutelo hay uno por middotformulario Se iexclguardan con extensioacuten FRM
gt Moacutedulo de Clase Son similares a los moacutedulos de formulario Se guardan con la extensi oacuten CLS
gt Moacutedulo Estaacutendar SOacutelo pueden contener coacutedigo T ienen una extensioacuten BAS
gt Cont ro les ActiveX Cont roles que se pueden antildeadir al cuadro de herramientas e lhclulrlos en un formulario
Ventana Ed itor e Coacutedigo En esta ventana es donde se incluyeacute el coacutedigode la aplicacioacuten Se crearaacute una ventana de coacuted igo para cada formulario o moacutedulo de la aplicacioacuten
Para tener acceso la ventana Qe ed i ci~n liexclv forma maacutes sencilla es hacer q oacutebley~lick~ ~obr~ el fo rrD ulano o sobre e l objeto al cual quiera incluir c~digd
I
Proyecto1 (Pro [3 middot For rm ario s
iexcl El F m (Forml
FINDE8 9
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 3 Fundamentos de rogra acioacuten para Vi al asic
Estructuras de Coacutedigo El coacutedigo que escriba en un proyecto de Visual Basic apareceraacute siempre en un moacutedulo
Un moacutedulo es un archivo de proyecto pudJenao s~ r un moacutedulo de formulario de clase o de caraacutecter general como vimos en el capiacutetulo anterior
En cada moacutedulo el coacutedi go se divide en dos secciones dec la aclones y procedim ientos
Los procedimientos son unidades de coacutedigo como pequentildeosproqrarnas escritos para realizar funciones determinadas con un prqpoacutesito bien definido
En cua lquier moacutedulo el preqrarnador dispone de u~a seccioacuten ~spec i a l llamada general en las q e se situacutean las d eacutec larac iacuteones y en la que se puede incluir otros procedimientos creados por el programador
En el apartado declaraciones se puede i n~roduc i r las consta ntes variables y tipo de datos que necesite en su aplicacioacuten (Todos estos conceptos seraacuten tratados a lo largo del curso)
Los procedimientos pueden tener paraacutemetros especiiacuteicados entre pareacute ntesis que le permiten comunicar al procedimientp alguna iniacuteormacloacuteh que necesite o que sea el propio procedimiento quien devuelva alguacuten valor
En un moacutedulo de formulario el coacutedigo que se situacutea se refiere tanto a dicho formulario como al resto de objetos que esteacuten dib]Jjados en eacutel En este tipo de moacutedulos cabe
~~t _
destacar los proeed rnlent rs de everntildeo que se encargan de dar una resp esta programada a los ~VEntordms q~e ocurreacuten erj la aacuteWlicacioacuten iexcl
S has escrito coacutedigo para alguacuten proce diacutemiacuteento de ~ven to eacuteste aparece en negr ta en la lista de procedirnierntildec de la ventaha de codi go
El coacutedigo de caraacutecter generala que puede compartir en maacutes de un proyecto s situacutea en un moacutedulo Qeneral El coacutedigo que aparece en este tipo de moacutedulos no se relaciona con un objeto d~terrnj~age ~i~q qq~ ti~n~ cr~pter Qer~r~IEntoacute~ moacutedutop g~ne ra l es no se pueden incluacuteiacuter procedimientos as et-eacutentoeacuteomo enel caso deacute los moacutedurosde formularlo
Es onveniente a~adiacuter q0nienarios a l~pJiacuten~a~s de coacutedigq qu(3 ~sGriba~ gt de ~s ltl forma podraacutes ehtenJ] ~ r Ips RrOgrameacuteIacutes-eacuteIacute-LUacutelql)e h~ga tierJlPoacute quacutee 10$ escribiste Para antildea ir un
f ~ ~ middotP r laquo ~
comentario en una liacutenea se utiliza el caraacutecter I (apoacutestrofe)
FINDEiS 10
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Objetos n isual Basic Un objeto en Visual Basic se caracteriza por tres componentes propiedades meacutetodos y eventos
Las p ropiedades son aquellas caracteriacutesticas o atributos que permiten establecer el aspecto de un objeto como el color taniantildeo poslcl oacuten etc O el estado del mismo activo maximizado etc Existen propiedades que soacutelo est aacuten disponibles en tiempo de disentildeo y otras que soacutelo estaacuten disponibles en tiempo de ejecucioacuten
Los meacutetodos son pequentildeos p rogramas que actuacutean sobre un determinado objeto y que establecen su comportamiento Asiacute un objeto puede moverse ocultarse e c Puedes utilizar cualquier meacutetodo queacutetorrne parte del objeto ~
Los eventos son las situaciones que se produceny que nos interesan identificar para esta lecer alguacuten tipo de de respuesta porparte del objeto Asiacute puedes hacer click sobre un determinado objeto creando de esta forma un evento reconocible por el objeto Que
1 r ~ d iexclsuceda algo o no como resmuesta a este ~ve n to dependera daque hayas programado alguna acc ioacuten en el correspondiente procedimiento de evento
Es ablecer propiedades Cuando insertas objetos en un ormulario tienes que establecer algunas propiedades que presenta Las propiedades son aquellas caracteriacutesticas propias del objeto que hacen que se distingan de otro objeto
En una aplicacioacuten Windows podemos distinguir diversos tipos de ventanas aunque lo nor al es identificar una ventana inicial que se puede maximizar O minimizar y uno o maacutes cuadros de iaacutelogo cuyo tamantildeo sDele ser fijo Slnernb aacuterqoj debes darte cuenta que las barras de ~ ergll)l i en ~~ s tatn b j ~n son v~ ntana ~fde unordfordfplicacioacuten
Normalmente la ventana lnicial ode arfordf(lqueiexclseraacute la que presente el menuacute principal ~ ~ ~~ iexcl y bull y
for ado por menuacutes desplegaacutebles en uno o maacutes deacute un nivel El resto de v ntanas no deberiacutean contener menuacutes desplegables aunque puede darse el caso
Algunas propiedades de los formularios que se pueden establecer en tiempo de disentildeo son ~
BorderSy1le Establece el estilo del borde del formulario
Captiori (Tex6H Eistqbleacutece eJ teacutext9 que apareceacute eilla liqrra de tiacutetulo del formUlario - r~ e l
Contra Box Permite mostrar o no el menuacute de control de las ventanas de Windows
FINDES 11
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Enab led Establece si el formulario puede responder o no a los eventos que generes
Font Establece las caracteriacutesticas de los objetos de texto que se situacuteen en el formulario
lean Cambia el icono que representa el formulario
Left Top Height Width Establecen la posicioacuten del formulario en la pantalla asiacute como las dimensiones
MaxButton y MinButton Establece si se podraacute maximizar o minimizar el formulario
MousePointer Modl icar el puntero del ratoacuten
Vis bl e Establece si el formulario se mostraraacute visible en tiempo de ejecucioacuten iexcl ~
Wlndow State Establ ece el modo ~ n que se carga inicialmente el form ulario normal maximizado o minimizado
To as esta propiedades estaacuten dlspontbles en tiempo de di se~o traveacutes de la ventana de propiedades
En tiempo de ejecucioacuten se puede cambiar o consultar el valor de algunas propiedades que soacutelo tienen sentido en el tiempo ded eacutesarrouumlo
ombreObjetoNombrePropiedad
FINDES 12
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Convenciones para nombrar bje~os de isual Basic [OBJETO OBJETO ESPANOL iForm middot middot-_middot_middot_- _- iFOrmuacutelariUuml--=------shyI _
iEh ec kB o~----middot--- -------ICasiexcliexcl ia-de middot~e-rifiexclcac i oacute n
iexclComboBox --- ----iexclCuadro com b i~~domiddot
I Datat~-~d--ombobo--- iacuteC ~ad o ombinado enlazado a datos idiexclc------shy[Command Button [Botoacuten de comando - -- - _ crridmiddot ---- shybull I
iexclData fContr()1de datos - -- - ---middot---- -rJatmiddot---shy1____ _- _ ___ ----- I
[Oirsctory list box [Cuadro lista de directorios r=-- - - -_ _- ~---
D rive List Box iexclCuadro lista de unidades ----- shyiexclFile List Box --- -middot-~iCuiexcld r~ Iista~de middot~--~h ivo S middot middot-_ -~_middot middotmiddotffiT middot-- shy __~ A bullbull - ~_iexcl ~_
Frame iexclMarco iexclfrm GrieacuteJ middotRejilla middot-- middot --W~r--middot-middot middot
iOata-bound grid 1 -middot- iexclR~jiexcliexcl imiddotamiddot middote n l a7ada a dat ll~ middot_ dbg
iexclHorizontal scrollbatiacute --rBaiexclr~de des l iamiddot~ a~omiddotiexcloriexcl~o~t8X -_ r[h-s-b-- shy~ ~ iexcl__ alt- _ AAA _ 0_ ~~ ~ __ _ ~
iexclImage iexclImagen [img t 1 - -__ middotNO ~~~bull bull u ~ _ _ ~~ __
f~lconta i ne r middot -~~o r OLE -i =~iexcl iP ictureBox Cuadro de imagen lpic ~
~~~ox m----~to 9 [VertlCalscroilbar iexclBarra de desplazamIento vertical middotmiddot_middotmiddotlt_middotmiddot vsb -
~M
_ ---__-shy 1
------------------I
I
FINDES
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizar Meacutetodos Una vez se ha establecido la parte estructural del formulario se pasa a programar el comportam iento que debe seguir de forma que cumpla con el objetivo para el que desees crearlo utilizando los meacutetodos
Un meacutetodo es un componente maacutes del objeto que puede ser utilizado directamente Para ello debes llamar al meacutetodo e Jndicarle sobre queacute objeto deseas aplicarlo que deberaacute admitirlo
La sintaxis en este caso debe ser NombreObOet ooNombreMetodo[par1 0 arn] donde la lista de paraacutemetros [par1 parn] es opcional decada meacutetodo
Un ejemplo es Si quleres mostrar un form Ulario llamado fnnPrimero la sintaxis Seraacute
frmPr im ero Show 1 El valor 1 nos indica que apareceraacute de forma modal y si el Valor es O apareceraacute de forma no modal
Entender los Eventos El con junto de eventos estaacute predefinido en Viacutesual Basic por lo cual no puedes crear un nuevo evento para los objetos lt
I conjunto de eventos reconocibles por un objeto estaacute ligado con los procedimientos de evento Estos procedimientos son unidades de coacutedigo que le perrniten especificar la
bull bull ~ 1I1t1
respuesta que debe dar uh objeto antildete la ocurrencia de un evento que puede recon ocer
La def inicioacuten del pnoced irniento d~ un ev~to tiene la sigu[en te forma Pr ivate Sub NombreObjetoacuteNombreEvEmtd([Lisectta de piftaacutemetrds]) Instrucciones End Sub
FINDES 14
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Elaboracioacuten de Menuacutes
E ed itor de menuacutes Al usar menuacutes se evita ocupar mucho espacio en las ventanas ya que estos soacutelo aparecen cuando se despliegan expliacutecitamente Ademaacutes se pueden crear hasta cinco niveles de menuacutes por lo que el nuacutemero de comandos y posibilidades es suficientemente amplio
En Visual Basic se trabajo con el editor de menuacutes para crear establecer propiedades y modificar los menuacutes Para acceder a eacutel basta con pulsar elsiguiente botoacuten en la barra de herramientas
Este botoacuten soacutelo estaraacute activo cuando est eacuteaacuteblerto eltormutarlolya que el menuacute siempre estaacute ~ saciado con un determinado formulario
El editor de menuacutes presenta las siguientespropiedades que se pueden aplicar sobre los menuacutes
Capt ion (Texto) Repres~ ri t a es texto qLJe apareceraacute en el menuacute
Name Es el nombre del control Se puede anteponer el prefijo amp maacutes el texto del tiacutetulo del menuacute
Checked Establece si debe a p ~ r~cer una marca de verificacioacuten a la izquierda del texto del objeto del menuacute La marca la puedes utilizar cuando deseas informar de la opcioacuten que estaacute activada en un momento determinado
Enab led Indica si el objeto podraacute recibir eventos del usuario Si tiene el valor False el elemento apareceraacute atenuado en el menuacute
Vis ib le Indica si el objeto debernostrarse o no si se establece estevalor a False los elementos situados a la derecha ocupan el lugar del elemento no vis ible
~) ~
WlndowsList Establece el valor que determina si un objeto de menuacute mantiene una lista de las ventanas MDImiddotsecundarias del tormularloacute actual
Elementos de Menuacute Utilizando los botones eje sangriacutea se puede determinar el nivel del 90jeacutetb hi enDqUe quumlieras stl~cGibnaacute d Asf los tftulos de menuacute se sifuumlan en el nivel sJp~rtor mo traacutendose en la lista inferior del editor de menuacutes lo maacute a la izquierda posible
En muchas aplicaciones se pueden ver unas barras rizontales en los menuacutes desplegables que realizan
la funcioacuten de dividir en secciones dichos menuacutes Este elem nto es conocido como un separador y sirve para separar aquellos comandos del menuacute que tengan
n motivo en comuacuten FINDES
fIfgy iacute _--~- _ _J
~lltl [0 shy middotmiddot- _ (0-bull-3 - C~eacuted iexcl ~~ - ~b1 = r ~middoth~t
15
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Para crear un separador basta con introducir un guioacuten (-) en la propiedad Caption No se puede crear un elemento en un nivel inferior inmediatamente despueacutes de un separador es decir no puedes tener como tiacutetulo de menuacute un separador
Teclas de Meacutetodo Abreviado Al introducir el caraacutecter amp el menuacute estaacute creando una tecla de acceso a dicho objeto Esta tecla se representa subraya daen el texto de menuacute y representa la tecla d I teclado que el usuario puede pulsar para ejecutar la accioacuten Dich a tecla se corresp onde con la letra que sigue al caracter amp en la propiedad Caption del objeacuteto menuacute
Si s rata de un tiacutetulo de menuacute tienes que usar la tecla de acceso en combinacloacuten con la tecla [Alt] Una vez abierto un tituloacute qe menuacute y despleqado sus elementos para acceder raacutepidamente a uno de ellos puedes usar la tecla de acceso directamente
Tenes que tener cuidado en no utilizar las mismas teclas de acceso para elementos de u mi mo nivel de menuacute yaque entonces no funcionaraacuten
El ditor de menuacute tambieacuten admite la incorporacioacuten de teclas d e meacutetodo abreviado Las abreviaturas del menuacute son combinaciones de teclas que se pueden utili a l n lugar de elegir el elemento del menucorrespondiente
ara crear una tecla de meacutetodo abreviado tienes que utilizar la propiedad Shortcut a la que puedes acceder al crear el menuacute desde el editor de menuacutes
Eventos de l Menuacute Cuando en tiempo de disentildeo seleccionamos la opcioacuten de menuacute de un formularlo que estamos creando Visual Basic muestra el procedimiento de evento click de dicho elemento del menuacute
En el caso del tiacutetulo del menuacute el prccediacuternlento click tiene con16 accioacuten predeterminada la de mostrar iacuteosetement os de (nenuacute del nivel inferior por leiacute que no seraacute necesario tener que program ar esta accioacuten Esto tambieacuten sepuede apljea~j a Ist_element s de un menuacute que son a su vez tiacutetulos de submenuacutes
En casi todos los casos tienes que utilizar una operen del menuacute para descargar el formulario d para finalizar la aplicaci oacuten] ~ p QP9iacuteoacuten qe te~tq s - l i r ~uele ser el maacutes apropiado ~
La instruccioacuten Unload descarga de memoria el [ormularioque se especifique Se uedeliexclusar d~ v ri~s f9rn1as QO riexcl ejemplo ~s i e~ta ~ds dentroiexcl deup Form lIam do trmconsutta poacutedremoacutes 1salirmiddot deacute eacutel de dos formas Una es UnloaH e o Unload frmconsulta
FINDES 16
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizacioacuten de uadros de Diaacutelogo
La mayoriacutea de las aplicaciones Windows hacen uso de [os cuadros de d iaacutelogo para establecer las opciones o introducir informacioacuten que necesitan para realizar una accioacuten indicada por el usuario Otro uso posible de los cuadros de diaacutelogo es presentar informacioacuten al usuario
Los cuadros de diaacutelogo se caracterizan por ser modales -y no permitir poder cambiar el tama- o de la ventana ademaacute sno deberaacuten tener una barra de menuacutes despleg ables
Cuadros de Mensaje ( sgbox)
Las cajas de mensajes o Message Box tienen unq funcioacuten clara que es la de mostrar una determinada informacioacuten aviso o prequnta para que el usuario tenga conocimiento de ella y actuacutee
Sintaxis La sintaxis completa de la funcioacuten Msg ox es
sgBox(mensaje[botones][t itulo] [archivoAyuda] [contexto])
MsgBox(prompt[bu~tonsiiexcl[titl e])
Descr peacuteiacuteon I1 Parterompt Req u~rido Expresiqn de cadena que representa el ~p ro rriacute pJ en el cuadro
de di~logo La longitud maacutexima de-promptesdeaprbxirrradamente 1024 caracteres seguacuten el ancho de los caracteres utilizados Si prompt consta de maacutes de una liacutenea puede separarlos utilizando un caraacutecter de retor o de carro (Chr(13)) o un ceacutetraacutecteriexcl de avance de liacutenea (Chr(10)) o na combinaci oacutende caracteres dE retcrn ode carro -ayance de liacutenea (Chr(13) y Ch r(i O)) ent ~e c~da liacuteheay la sigbiknte
buttons Opcional Expresioacuten numeacuterica que corresponde a la suma de los valores que especifican el nuacutemero y el middottipo de los botones que se pretenden
mostrar el e~tiIQ de icqnoacutetqJe ~e va a uacutetUiacute4al la identidad del botoacuten preacuted
1eterrnfhado y la moacutedalidad d eacutel cuadro deacute mensajes sise omite este
argumento el valor predeterminado para buttons es O ti le Opcional Expresioacuten de cadena que se muestra en la barra de iacutetulo del
cuadro de diaacutelogo Si se omite title en la barra de tiacutetulo se coloca el nomb re de la a licacioacuten
FINDE8 17
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
El paraacutemetro botones es de valor numeacuterico y ademaacutes de [os botones que aparecen en el cuadro de diaacutelogo tambieacuten puede indicar el icono que acompantildee al mensaje y el tipo de diaacutelogo modal que es
Cuando un cuadro de diaacutelogo es modal de aplicacioacuten tienes que cerrarlo ara interactuar con otra ventana de la misma aplicacioacuten Cuando es un cuadro de diaacutelogo modal del sistema todas las aplicacioneacutes uumleeacutest n ejecutaacutendose se suspenden hasta que el usuario responda al cuadro de diaacutelogo
Los valores que pueden tomar ef paraacutemetro botones son
VbM 59BoxRight VbMsgBox RtlReading
como la
FINDES 18
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Inves tigacioacuten para el Desarrollo Profesional
Con tenido
Tema 1 Introduccioacuten a la Programacioacuten 4 Anaacutelisis 4 Algoritmos 5 Programacioacuten Estructurada 6
Tema 2 Entorno de Trabajo de Visual Basic 8 El Entorno de Trabajo 8 Barra de Herramientas 8 Disentildeador de formularios 8 Cu adro de Herramientas 8
entana de Propiedades ~ iquest 8 Ven tana de Proyectos iexcl 9 Ve ntana Editor de Coacutediqo 9
Tema 3 Fundamentos de roqrarnaci oacuteh Rara Visdal Basic i 10 Estr cturas de Coacutedigo 10 Objetos en Visual Basic ~ 11 Establecer propiedades 11
onvenciones para nom brhr objetos de Visual Basic 13 Utilizar Meacutetodos c 14 Entender los Eventos 14 Elaboracioacuten de Menuacutes 15
El editor de menuacutes 15 Elementos del Menuacute ~ 15 Teclas de Meacutetodo Abreviado ~ 16 Eventos del Menuacute 16
Uti lizacioacuten de Cuadros de Diaacutelogo 17 Cuadros de Mensaje (Msgbox) 17 Cuad ro de Entreacuteida Inl)utBox (Fuhci oacuten) 21 Insertando Contreacuteles Baacutesicos 23
Entrada de Datos ~ ~ 23 Control Marco L ~ 24 Botones de Comando r 25 Casillas de verificacioacuten 25 Botones de Opcioacuten 25
Eleme ntos Graacuteficos 26 Cont rolltiacutenelaquo _ 26 Con ro t ape 0gt ~ 0 o o o 26I Sh
Tema4 Estructuras y r=lem ~ntos Fundamentales de ProgramacLoacuten 27 Tipo s de Prccedirnientos 0 27
dmiddotB t middot~ Smiddot ~ ~ i bull 7Crear pr0ce Imlen os uu Llamar al procedimiento Sub _ oo 27 Crear procedimientos Function 28 Llamar al procedimiento Function 28
Variables 29 Ti pos de datos _ _ 30
FINDES 2
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tipos de Datos 31 Constantes 33 Op eradores de Visual Basic 33
Tem a 5 Sentencias o Estructu ras de Control 34 Exp resiones Loacutegicas 34 If Then Else i 35 Se lect Case bull 37 Es ructuras de Repeticioacuten 39 For Next 39 Do Loop 41
Tema 6 Elementos de Admiacuteniacutestracloacute rr deDatos 1 ~ 43 Con ectar con una Base qeDatos iexcl 43 Crear una Base de Datos 45
Tema 7 Manipulacioacuten d~ Archivos 48 Controles Especiatizados I 48 Conectar los controles 49
Tema 8 Manejando los errores 50 ~
losario de Funciones ( 51 Fecha y Hora 51 Matemaacuteticas 55 Informacioacuten 57 Texto 58
~ lt
FINDES 3
Fundacioacuten de Inyestigacioacuten para el Desarrollo Profesional
ema 1 Introduccioacuten a la Programacioacute
Etapas de la programacioacuten ~ Definicioacuten y anaacutelisis del problema ~ Disentildeo del algoritmo ~ Codificacioacuten del programa ~ Depuracioacuten y verificacioacuten ~ Documentacioacuten ~ Mantenimiento
Anaacutelisis El anaacutelisis de sistemas se realiza teniendo presente IQs siguientes objetivos Identif icar las necesidades
~ Evaluar la vialidad delsistema ~ ealiza r un anaacutelisis teacutecnico y econoacutemico ~ signar funciones al software al h ~ r9 ware a 19 gente a la base de datos y a otros
elementos del sistema ~ Establecer restricciones de costo y tieacutempo ~ Crear una definicioacuten del sistema que sea la base para topo el trabajo posterior de
ingenieriacutea
e trata de una transformacioacuten de un concepto dudoso en un conjunto concre to de elementos tangibles Debido eacuteiexcl que durante el anaacutelisis la comunicacioacuten es excepcionalmente densa abundan las oportunidad s deacute mal entendimiento omision s inconsistencias y errores
La identificacioacuten de las necesidades es el punto de partida en la evolucioacuten de un sistema basado en computadora
Para empezar el analiacutesta con baacutese-a un anaacutelisis previo de r~qu e r iacute mientos define los objetivos del sistema la lntorrn aacutecioacuten que se va obtener la intorrnaciacuteoacuten que se va suministrar las fupciones y el reoWmiento req Ll~uumldQ
El analista se asegura de distinguir entre lo que necesita el cliente (elementos criacuteticos para la realizacioacuten) y lo que el cliente quiere (elementos deseables pero no esenciales)
U a vez identificado todos los objetivos el analista realiza una ev~l uacioacute n de la informacioacuten suplementaria iquestExiste la tecnolog iacutea necesaria para constru ir el si tema iquestQueacute r~yurs~ ~1 f~briacioacuten y d~ dw~arroll q ~spe~ ial~s se requertraacutel1 Queacute liacutemites se han impuesto-a los costos y a la agendajetc ~
La informacioacuten recogida durante la etapa de identificacioacuten de las necesidades se especifica en un documento de conceptos del sistema
FINDES 4
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Posterior al anaacutelisis de requerimientos y ya definidos los elementos a ut ilizar se deberaacuten estructurar los algoritmos a utilizar en el sistema planeado
Algoritmos
Sec uencia detallada y loacutegica de pasos para alqanzar un objetivo Lista bien definida ordenada y finit a de operaciones que permite hallar la solucioacuten a un pro blema Dado un estado inici a] Y una entrada a traeacutes de pasos sucesivo y bien definidos se llega a un estado final obteniendo una solucioacuten Los algoritmos so objeto de estudio de la algoritmia
S importancia radica en mostrar la manera middotCiacutee nevar a cabo procesos y resolver mecaacutenicamente problemas matemaacuteticos o de otro tipo Al igual que las func iones m temaacuteticas los algoritmos reciben Un entrada y la tran sforman en una salida comportaacutendose como una Caja negra Sin ernbarqb para que un algoritmo pueda ser considerado como tal dele ser deterrniptstq tener un nuacutemero finito de instrucciones y debe acabar Por deterrnintildeista se entiende que si se sigue el mismo proceso maacutes de una vez se llega siempre al mismo resultado
El concepto de alqoritrno aunque similar y obvlarnent eacute relacionado no debe confundirse con el concepto de programa Mientras el primero es la especificacioacuten de un conjunto de pasos (operaciones instrucciones oacuterdenes ) orientados a la resolucioacuten de un problema el segundo es ese conjunto de operaciones especif icadas en un determinado lenguaje de programacioacuten y para un computador concreto susceptible de ser ejecutado (o compilado o inte rpretaao) Un algoritmo estrictamente hablando no puede ejecutarse hasta que se implementa ya sea en un leng uaje de programacioacuten en un circuito eleacutectrico en un aparato mecaacutenico usando papel y laacutepi z o en alguacuten otro modelo de computacioacuten
Por ejemplo
Algoritmo Suma
Inicia Va riable entera ab c Leer a Ledrb c=a+b Escribir El resultado es 0
~ L
Finar
FINDES 5
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Prog amacioacute E tructurada
La programacioacuten estructurada es una forma de escribir programas de ordenador (programacioacuten de computadora) de manera clara Para ello utiliza uacutenicamente tres estructuras secuencia seleccioacuten e iteracioacuten
Los programas cornputarizados pueden ser esc ritos con un alto grado de estructuracioacuten lo cual les permite ser maacutes faacutecilmente comprensibles en act ividades tal s como pruebas mantenimiento y modificacioacuten de los mismos Mediante la programacioacuten Estructurada tedas las bifurcaciones de control de un programa se
ncuentran estandarizadas d E9 forma tal que es posible leer la codificacioacuten del mis o desde su inicio hasta su terminacioacuten aacuten fo rma c eacutentiacutenua sin tener que saltar de un I gar a otro del programa siguiendo el rastro de la loacutegicordf establecida por el programador como es [a situacioacuten habiacutetuaacute] con codificaciones desaholladas bajo otras teacutecnicas
En programacioacuten Estructurada los programadores ti eben profundizar maacutes que lo usual al proceder a realizar el disentildeo original del programa pero el resultado final es maacutes faacutecil de leer y comprender el objetivo de un programador profesional al escribi r pro ramas de una manera estructurada es realizarlos utilizando solamente un numero de bifurcaciones de control estandarizados
El resu ltado de aplicar la sistemaacutetica y disciplinada manera de elaboracioacuten de programas establecida por la P~og ramac i oacuten Estructurada es una programacioacuten de alta precisioacuten como nunca antes habiacutea s ido lograda
Definiciones
Programacioacuten Estructurada es una teacutecnica en la cual la estructura de un programa es es la interpelacioacuten ae sus partes realit alttah claramente coacutemo es posi~ l e mediante el uso de tres estructuras 199 icas decontrol 0
e ~ ~
Secuenc iaSucesioacuten siacutempiacutee de dds o maacutes operaciones l
setecclon bifurcacioacuten con(jicionaiexclde untildea-orfraacute s operaciones Iteracioacuten Repeticioacuten de una operacioacuten mientras se cumple una condicioacuten
Estos tres tipos de estructuras loacutegicas dey control pueden ser combinados para producir programas que manejen cualquier tarea deprocesamientodeacute intorrnacioacuten
iexcl 1 0
Un programa estructurado estaacute compuesto d~ i segmentos los cuales puedan estar ~
constituidos POr p~as pocas in~trucQioneacutes oacute poacute ~unapaacutegiri a 0imaacutesdeiltOdifi8aCioacute l1 Cada seg ente tiacuteeheacute sOacutelamente una e n tradk~y uria salida esto s segrilentildetos asumiendo que no poseen lazos infinitos y no tienen instrucciones que jamaacutes se ejecuten se
e omi nan programas propios Cuando varios programas propios se combinan utilizando las tres estructuras baacutesicas de control mencionadas anteriormente el resultado es tambieacuten un programa propio
FINDES 6
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Por ejemplo Estructura de programacioacuten de Suma
Inicia Suma ( ) Declara abc es Entero a=5 b=7 c=a+b Escribe El reacutesultado es c
Final
FINDES 7
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 2 E orn d rabajo de Visual Bas ic
El Entorno de rabajo Visual Basic es un entorno de desarrollo disentildeado para la creacioacuten de aplicaciones para lo entornos de trabajo Microsoft Windows 95 98 Y NT Este lenguaje auacutena las posibilidades de-un lenglaje de alto nivel con las herramientas de disentildeo graacutefico lo cual nos da acceso a todas las funciones de los sistemas anteriormente citados Los elementos del entrono de desarrollo de Visual Basic son
Ba ra de Herramie tas ~O=- = =r 0= = - =~ ~+- ~F--~~~- _
Allthite t licic n er ereielt o fo rm~ lo R~pur~i~n Ej _ Jt~ r ~lj l1~ul t Di~g rm1 ti~rran ~n Compfeme l1 t~ ~olmiddot )~iacute1 __ __ _ _ ~ _ __~__ --- c_ bull_ bull_bullbullbull~_ - - --- - -_ - bull - - - - _ bull bull j-o _
11 ~ lt~ 1l ~ 1 - ~ I ~ ~ tB middot middotmiddot 6t 1l t i 00 fiexclj ~~ )OO iI ~ ~ ____ 0 _ bull bullbull _ bullbull_ _~ _ _ bullbullbull__ bullbullbullbull_bullbull _ _ bullbull_bull _ bullbull bull_ ____ _ _ ~~bull bull_ -
Permite un acceso raacutepido a os comandos maacutes utilizados ~
isentildeador de formularlos Es la ventana en la que se disentildearaacute la interfaz de la aplicacioacuten en ella se pueden agregar controles graacuteficos e imaacutegenes Cada formulario de una aplicacioacuten apareceraacute en su propia ventana
Cuadro de Herramientas En el cuadro de herramientas podemos encontrar un conjunto de herramientas que permiten insertar los objetos o controles en el formulario durante en tiempo
iexcl iexcl- (Tde disentildeo los objetos maacutes comunes son botones (command) etiqueta (Iabel) i sectr3 ~ cuadros de image n (Pieture) imaacutegenes (Image) -etc
Si hacemos doble click dQ[l el -ratoacuten sobre alguqo de ellos se insertaraacute l o ~ automaacuteticamente ~ n la-ventana deacutel formulario
1 _1 ~
ltOJ -c-
I ~ ~ Ventana de Prop iedades Los objetos tienen asociados unas propiedades que describen sus atributos valores compo rtamiento y apariencia del objeto
Las opciones d~ estav eacutenfanasoruacute ~ Lista desplegable de objetos Donde podremos visualizar
el nombre de los 0lgtjet9s de la aplicacioacuten ~ Lista de- propiedades del obleto- ~elec~iqna9d middoti Al
sejeccloriat un objeto con la lista desplsgableanteridrmeacuteniacutee mencionada nos apareceraacuten las propiedades del mismo ( ame visible appearence borderstyle etc) En la lista de propiedades se pueden modificar las propiedades del objeto Se puede visualizar de dos formar por categoriacutea o alfabeacuteticamente
FINDES 8
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ventana de Proyectos Contiene la lista de los archivos que forman parte de la aplicacioacuten Los tipos de archivos que se pueden incluir en un proyecto son
gt Arch ivo de Proyecto Es el que rsallza el ectot)seguimiento de todos los fich ero~ que forman parte de la aplicacioacuten Se guarda enlt un fichero con la extensioacutenVBP
gt Arch vo de Recursos Aquiacute se guardan cadenas de texto mapas de bits y demaacutes datos que puedan modificarse sin tener que volver a modificar el coacutedigo Se guardan con una extensioacuten RES o
gt Moacutedulo de Formularlo Contiene controles y coacuted igo soacutelo hay uno por middotformulario Se iexclguardan con extensioacuten FRM
gt Moacutedulo de Clase Son similares a los moacutedulos de formulario Se guardan con la extensi oacuten CLS
gt Moacutedulo Estaacutendar SOacutelo pueden contener coacutedigo T ienen una extensioacuten BAS
gt Cont ro les ActiveX Cont roles que se pueden antildeadir al cuadro de herramientas e lhclulrlos en un formulario
Ventana Ed itor e Coacutedigo En esta ventana es donde se incluyeacute el coacutedigode la aplicacioacuten Se crearaacute una ventana de coacuted igo para cada formulario o moacutedulo de la aplicacioacuten
Para tener acceso la ventana Qe ed i ci~n liexclv forma maacutes sencilla es hacer q oacutebley~lick~ ~obr~ el fo rrD ulano o sobre e l objeto al cual quiera incluir c~digd
I
Proyecto1 (Pro [3 middot For rm ario s
iexcl El F m (Forml
FINDE8 9
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 3 Fundamentos de rogra acioacuten para Vi al asic
Estructuras de Coacutedigo El coacutedigo que escriba en un proyecto de Visual Basic apareceraacute siempre en un moacutedulo
Un moacutedulo es un archivo de proyecto pudJenao s~ r un moacutedulo de formulario de clase o de caraacutecter general como vimos en el capiacutetulo anterior
En cada moacutedulo el coacutedi go se divide en dos secciones dec la aclones y procedim ientos
Los procedimientos son unidades de coacutedigo como pequentildeosproqrarnas escritos para realizar funciones determinadas con un prqpoacutesito bien definido
En cua lquier moacutedulo el preqrarnador dispone de u~a seccioacuten ~spec i a l llamada general en las q e se situacutean las d eacutec larac iacuteones y en la que se puede incluir otros procedimientos creados por el programador
En el apartado declaraciones se puede i n~roduc i r las consta ntes variables y tipo de datos que necesite en su aplicacioacuten (Todos estos conceptos seraacuten tratados a lo largo del curso)
Los procedimientos pueden tener paraacutemetros especiiacuteicados entre pareacute ntesis que le permiten comunicar al procedimientp alguna iniacuteormacloacuteh que necesite o que sea el propio procedimiento quien devuelva alguacuten valor
En un moacutedulo de formulario el coacutedigo que se situacutea se refiere tanto a dicho formulario como al resto de objetos que esteacuten dib]Jjados en eacutel En este tipo de moacutedulos cabe
~~t _
destacar los proeed rnlent rs de everntildeo que se encargan de dar una resp esta programada a los ~VEntordms q~e ocurreacuten erj la aacuteWlicacioacuten iexcl
S has escrito coacutedigo para alguacuten proce diacutemiacuteento de ~ven to eacuteste aparece en negr ta en la lista de procedirnierntildec de la ventaha de codi go
El coacutedigo de caraacutecter generala que puede compartir en maacutes de un proyecto s situacutea en un moacutedulo Qeneral El coacutedigo que aparece en este tipo de moacutedulos no se relaciona con un objeto d~terrnj~age ~i~q qq~ ti~n~ cr~pter Qer~r~IEntoacute~ moacutedutop g~ne ra l es no se pueden incluacuteiacuter procedimientos as et-eacutentoeacuteomo enel caso deacute los moacutedurosde formularlo
Es onveniente a~adiacuter q0nienarios a l~pJiacuten~a~s de coacutedigq qu(3 ~sGriba~ gt de ~s ltl forma podraacutes ehtenJ] ~ r Ips RrOgrameacuteIacutes-eacuteIacute-LUacutelql)e h~ga tierJlPoacute quacutee 10$ escribiste Para antildea ir un
f ~ ~ middotP r laquo ~
comentario en una liacutenea se utiliza el caraacutecter I (apoacutestrofe)
FINDEiS 10
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Objetos n isual Basic Un objeto en Visual Basic se caracteriza por tres componentes propiedades meacutetodos y eventos
Las p ropiedades son aquellas caracteriacutesticas o atributos que permiten establecer el aspecto de un objeto como el color taniantildeo poslcl oacuten etc O el estado del mismo activo maximizado etc Existen propiedades que soacutelo est aacuten disponibles en tiempo de disentildeo y otras que soacutelo estaacuten disponibles en tiempo de ejecucioacuten
Los meacutetodos son pequentildeos p rogramas que actuacutean sobre un determinado objeto y que establecen su comportamiento Asiacute un objeto puede moverse ocultarse e c Puedes utilizar cualquier meacutetodo queacutetorrne parte del objeto ~
Los eventos son las situaciones que se produceny que nos interesan identificar para esta lecer alguacuten tipo de de respuesta porparte del objeto Asiacute puedes hacer click sobre un determinado objeto creando de esta forma un evento reconocible por el objeto Que
1 r ~ d iexclsuceda algo o no como resmuesta a este ~ve n to dependera daque hayas programado alguna acc ioacuten en el correspondiente procedimiento de evento
Es ablecer propiedades Cuando insertas objetos en un ormulario tienes que establecer algunas propiedades que presenta Las propiedades son aquellas caracteriacutesticas propias del objeto que hacen que se distingan de otro objeto
En una aplicacioacuten Windows podemos distinguir diversos tipos de ventanas aunque lo nor al es identificar una ventana inicial que se puede maximizar O minimizar y uno o maacutes cuadros de iaacutelogo cuyo tamantildeo sDele ser fijo Slnernb aacuterqoj debes darte cuenta que las barras de ~ ergll)l i en ~~ s tatn b j ~n son v~ ntana ~fde unordfordfplicacioacuten
Normalmente la ventana lnicial ode arfordf(lqueiexclseraacute la que presente el menuacute principal ~ ~ ~~ iexcl y bull y
for ado por menuacutes desplegaacutebles en uno o maacutes deacute un nivel El resto de v ntanas no deberiacutean contener menuacutes desplegables aunque puede darse el caso
Algunas propiedades de los formularios que se pueden establecer en tiempo de disentildeo son ~
BorderSy1le Establece el estilo del borde del formulario
Captiori (Tex6H Eistqbleacutece eJ teacutext9 que apareceacute eilla liqrra de tiacutetulo del formUlario - r~ e l
Contra Box Permite mostrar o no el menuacute de control de las ventanas de Windows
FINDES 11
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Enab led Establece si el formulario puede responder o no a los eventos que generes
Font Establece las caracteriacutesticas de los objetos de texto que se situacuteen en el formulario
lean Cambia el icono que representa el formulario
Left Top Height Width Establecen la posicioacuten del formulario en la pantalla asiacute como las dimensiones
MaxButton y MinButton Establece si se podraacute maximizar o minimizar el formulario
MousePointer Modl icar el puntero del ratoacuten
Vis bl e Establece si el formulario se mostraraacute visible en tiempo de ejecucioacuten iexcl ~
Wlndow State Establ ece el modo ~ n que se carga inicialmente el form ulario normal maximizado o minimizado
To as esta propiedades estaacuten dlspontbles en tiempo de di se~o traveacutes de la ventana de propiedades
En tiempo de ejecucioacuten se puede cambiar o consultar el valor de algunas propiedades que soacutelo tienen sentido en el tiempo ded eacutesarrouumlo
ombreObjetoNombrePropiedad
FINDES 12
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Convenciones para nombrar bje~os de isual Basic [OBJETO OBJETO ESPANOL iForm middot middot-_middot_middot_- _- iFOrmuacutelariUuml--=------shyI _
iEh ec kB o~----middot--- -------ICasiexcliexcl ia-de middot~e-rifiexclcac i oacute n
iexclComboBox --- ----iexclCuadro com b i~~domiddot
I Datat~-~d--ombobo--- iacuteC ~ad o ombinado enlazado a datos idiexclc------shy[Command Button [Botoacuten de comando - -- - _ crridmiddot ---- shybull I
iexclData fContr()1de datos - -- - ---middot---- -rJatmiddot---shy1____ _- _ ___ ----- I
[Oirsctory list box [Cuadro lista de directorios r=-- - - -_ _- ~---
D rive List Box iexclCuadro lista de unidades ----- shyiexclFile List Box --- -middot-~iCuiexcld r~ Iista~de middot~--~h ivo S middot middot-_ -~_middot middotmiddotffiT middot-- shy __~ A bullbull - ~_iexcl ~_
Frame iexclMarco iexclfrm GrieacuteJ middotRejilla middot-- middot --W~r--middot-middot middot
iOata-bound grid 1 -middot- iexclR~jiexcliexcl imiddotamiddot middote n l a7ada a dat ll~ middot_ dbg
iexclHorizontal scrollbatiacute --rBaiexclr~de des l iamiddot~ a~omiddotiexcloriexcl~o~t8X -_ r[h-s-b-- shy~ ~ iexcl__ alt- _ AAA _ 0_ ~~ ~ __ _ ~
iexclImage iexclImagen [img t 1 - -__ middotNO ~~~bull bull u ~ _ _ ~~ __
f~lconta i ne r middot -~~o r OLE -i =~iexcl iP ictureBox Cuadro de imagen lpic ~
~~~ox m----~to 9 [VertlCalscroilbar iexclBarra de desplazamIento vertical middotmiddot_middotmiddotlt_middotmiddot vsb -
~M
_ ---__-shy 1
------------------I
I
FINDES
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizar Meacutetodos Una vez se ha establecido la parte estructural del formulario se pasa a programar el comportam iento que debe seguir de forma que cumpla con el objetivo para el que desees crearlo utilizando los meacutetodos
Un meacutetodo es un componente maacutes del objeto que puede ser utilizado directamente Para ello debes llamar al meacutetodo e Jndicarle sobre queacute objeto deseas aplicarlo que deberaacute admitirlo
La sintaxis en este caso debe ser NombreObOet ooNombreMetodo[par1 0 arn] donde la lista de paraacutemetros [par1 parn] es opcional decada meacutetodo
Un ejemplo es Si quleres mostrar un form Ulario llamado fnnPrimero la sintaxis Seraacute
frmPr im ero Show 1 El valor 1 nos indica que apareceraacute de forma modal y si el Valor es O apareceraacute de forma no modal
Entender los Eventos El con junto de eventos estaacute predefinido en Viacutesual Basic por lo cual no puedes crear un nuevo evento para los objetos lt
I conjunto de eventos reconocibles por un objeto estaacute ligado con los procedimientos de evento Estos procedimientos son unidades de coacutedigo que le perrniten especificar la
bull bull ~ 1I1t1
respuesta que debe dar uh objeto antildete la ocurrencia de un evento que puede recon ocer
La def inicioacuten del pnoced irniento d~ un ev~to tiene la sigu[en te forma Pr ivate Sub NombreObjetoacuteNombreEvEmtd([Lisectta de piftaacutemetrds]) Instrucciones End Sub
FINDES 14
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Elaboracioacuten de Menuacutes
E ed itor de menuacutes Al usar menuacutes se evita ocupar mucho espacio en las ventanas ya que estos soacutelo aparecen cuando se despliegan expliacutecitamente Ademaacutes se pueden crear hasta cinco niveles de menuacutes por lo que el nuacutemero de comandos y posibilidades es suficientemente amplio
En Visual Basic se trabajo con el editor de menuacutes para crear establecer propiedades y modificar los menuacutes Para acceder a eacutel basta con pulsar elsiguiente botoacuten en la barra de herramientas
Este botoacuten soacutelo estaraacute activo cuando est eacuteaacuteblerto eltormutarlolya que el menuacute siempre estaacute ~ saciado con un determinado formulario
El editor de menuacutes presenta las siguientespropiedades que se pueden aplicar sobre los menuacutes
Capt ion (Texto) Repres~ ri t a es texto qLJe apareceraacute en el menuacute
Name Es el nombre del control Se puede anteponer el prefijo amp maacutes el texto del tiacutetulo del menuacute
Checked Establece si debe a p ~ r~cer una marca de verificacioacuten a la izquierda del texto del objeto del menuacute La marca la puedes utilizar cuando deseas informar de la opcioacuten que estaacute activada en un momento determinado
Enab led Indica si el objeto podraacute recibir eventos del usuario Si tiene el valor False el elemento apareceraacute atenuado en el menuacute
Vis ib le Indica si el objeto debernostrarse o no si se establece estevalor a False los elementos situados a la derecha ocupan el lugar del elemento no vis ible
~) ~
WlndowsList Establece el valor que determina si un objeto de menuacute mantiene una lista de las ventanas MDImiddotsecundarias del tormularloacute actual
Elementos de Menuacute Utilizando los botones eje sangriacutea se puede determinar el nivel del 90jeacutetb hi enDqUe quumlieras stl~cGibnaacute d Asf los tftulos de menuacute se sifuumlan en el nivel sJp~rtor mo traacutendose en la lista inferior del editor de menuacutes lo maacute a la izquierda posible
En muchas aplicaciones se pueden ver unas barras rizontales en los menuacutes desplegables que realizan
la funcioacuten de dividir en secciones dichos menuacutes Este elem nto es conocido como un separador y sirve para separar aquellos comandos del menuacute que tengan
n motivo en comuacuten FINDES
fIfgy iacute _--~- _ _J
~lltl [0 shy middotmiddot- _ (0-bull-3 - C~eacuted iexcl ~~ - ~b1 = r ~middoth~t
15
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Para crear un separador basta con introducir un guioacuten (-) en la propiedad Caption No se puede crear un elemento en un nivel inferior inmediatamente despueacutes de un separador es decir no puedes tener como tiacutetulo de menuacute un separador
Teclas de Meacutetodo Abreviado Al introducir el caraacutecter amp el menuacute estaacute creando una tecla de acceso a dicho objeto Esta tecla se representa subraya daen el texto de menuacute y representa la tecla d I teclado que el usuario puede pulsar para ejecutar la accioacuten Dich a tecla se corresp onde con la letra que sigue al caracter amp en la propiedad Caption del objeacuteto menuacute
Si s rata de un tiacutetulo de menuacute tienes que usar la tecla de acceso en combinacloacuten con la tecla [Alt] Una vez abierto un tituloacute qe menuacute y despleqado sus elementos para acceder raacutepidamente a uno de ellos puedes usar la tecla de acceso directamente
Tenes que tener cuidado en no utilizar las mismas teclas de acceso para elementos de u mi mo nivel de menuacute yaque entonces no funcionaraacuten
El ditor de menuacute tambieacuten admite la incorporacioacuten de teclas d e meacutetodo abreviado Las abreviaturas del menuacute son combinaciones de teclas que se pueden utili a l n lugar de elegir el elemento del menucorrespondiente
ara crear una tecla de meacutetodo abreviado tienes que utilizar la propiedad Shortcut a la que puedes acceder al crear el menuacute desde el editor de menuacutes
Eventos de l Menuacute Cuando en tiempo de disentildeo seleccionamos la opcioacuten de menuacute de un formularlo que estamos creando Visual Basic muestra el procedimiento de evento click de dicho elemento del menuacute
En el caso del tiacutetulo del menuacute el prccediacuternlento click tiene con16 accioacuten predeterminada la de mostrar iacuteosetement os de (nenuacute del nivel inferior por leiacute que no seraacute necesario tener que program ar esta accioacuten Esto tambieacuten sepuede apljea~j a Ist_element s de un menuacute que son a su vez tiacutetulos de submenuacutes
En casi todos los casos tienes que utilizar una operen del menuacute para descargar el formulario d para finalizar la aplicaci oacuten] ~ p QP9iacuteoacuten qe te~tq s - l i r ~uele ser el maacutes apropiado ~
La instruccioacuten Unload descarga de memoria el [ormularioque se especifique Se uedeliexclusar d~ v ri~s f9rn1as QO riexcl ejemplo ~s i e~ta ~ds dentroiexcl deup Form lIam do trmconsutta poacutedremoacutes 1salirmiddot deacute eacutel de dos formas Una es UnloaH e o Unload frmconsulta
FINDES 16
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizacioacuten de uadros de Diaacutelogo
La mayoriacutea de las aplicaciones Windows hacen uso de [os cuadros de d iaacutelogo para establecer las opciones o introducir informacioacuten que necesitan para realizar una accioacuten indicada por el usuario Otro uso posible de los cuadros de diaacutelogo es presentar informacioacuten al usuario
Los cuadros de diaacutelogo se caracterizan por ser modales -y no permitir poder cambiar el tama- o de la ventana ademaacute sno deberaacuten tener una barra de menuacutes despleg ables
Cuadros de Mensaje ( sgbox)
Las cajas de mensajes o Message Box tienen unq funcioacuten clara que es la de mostrar una determinada informacioacuten aviso o prequnta para que el usuario tenga conocimiento de ella y actuacutee
Sintaxis La sintaxis completa de la funcioacuten Msg ox es
sgBox(mensaje[botones][t itulo] [archivoAyuda] [contexto])
MsgBox(prompt[bu~tonsiiexcl[titl e])
Descr peacuteiacuteon I1 Parterompt Req u~rido Expresiqn de cadena que representa el ~p ro rriacute pJ en el cuadro
de di~logo La longitud maacutexima de-promptesdeaprbxirrradamente 1024 caracteres seguacuten el ancho de los caracteres utilizados Si prompt consta de maacutes de una liacutenea puede separarlos utilizando un caraacutecter de retor o de carro (Chr(13)) o un ceacutetraacutecteriexcl de avance de liacutenea (Chr(10)) o na combinaci oacutende caracteres dE retcrn ode carro -ayance de liacutenea (Chr(13) y Ch r(i O)) ent ~e c~da liacuteheay la sigbiknte
buttons Opcional Expresioacuten numeacuterica que corresponde a la suma de los valores que especifican el nuacutemero y el middottipo de los botones que se pretenden
mostrar el e~tiIQ de icqnoacutetqJe ~e va a uacutetUiacute4al la identidad del botoacuten preacuted
1eterrnfhado y la moacutedalidad d eacutel cuadro deacute mensajes sise omite este
argumento el valor predeterminado para buttons es O ti le Opcional Expresioacuten de cadena que se muestra en la barra de iacutetulo del
cuadro de diaacutelogo Si se omite title en la barra de tiacutetulo se coloca el nomb re de la a licacioacuten
FINDE8 17
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
El paraacutemetro botones es de valor numeacuterico y ademaacutes de [os botones que aparecen en el cuadro de diaacutelogo tambieacuten puede indicar el icono que acompantildee al mensaje y el tipo de diaacutelogo modal que es
Cuando un cuadro de diaacutelogo es modal de aplicacioacuten tienes que cerrarlo ara interactuar con otra ventana de la misma aplicacioacuten Cuando es un cuadro de diaacutelogo modal del sistema todas las aplicacioneacutes uumleeacutest n ejecutaacutendose se suspenden hasta que el usuario responda al cuadro de diaacutelogo
Los valores que pueden tomar ef paraacutemetro botones son
VbM 59BoxRight VbMsgBox RtlReading
como la
FINDES 18
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tipos de Datos 31 Constantes 33 Op eradores de Visual Basic 33
Tem a 5 Sentencias o Estructu ras de Control 34 Exp resiones Loacutegicas 34 If Then Else i 35 Se lect Case bull 37 Es ructuras de Repeticioacuten 39 For Next 39 Do Loop 41
Tema 6 Elementos de Admiacuteniacutestracloacute rr deDatos 1 ~ 43 Con ectar con una Base qeDatos iexcl 43 Crear una Base de Datos 45
Tema 7 Manipulacioacuten d~ Archivos 48 Controles Especiatizados I 48 Conectar los controles 49
Tema 8 Manejando los errores 50 ~
losario de Funciones ( 51 Fecha y Hora 51 Matemaacuteticas 55 Informacioacuten 57 Texto 58
~ lt
FINDES 3
Fundacioacuten de Inyestigacioacuten para el Desarrollo Profesional
ema 1 Introduccioacuten a la Programacioacute
Etapas de la programacioacuten ~ Definicioacuten y anaacutelisis del problema ~ Disentildeo del algoritmo ~ Codificacioacuten del programa ~ Depuracioacuten y verificacioacuten ~ Documentacioacuten ~ Mantenimiento
Anaacutelisis El anaacutelisis de sistemas se realiza teniendo presente IQs siguientes objetivos Identif icar las necesidades
~ Evaluar la vialidad delsistema ~ ealiza r un anaacutelisis teacutecnico y econoacutemico ~ signar funciones al software al h ~ r9 ware a 19 gente a la base de datos y a otros
elementos del sistema ~ Establecer restricciones de costo y tieacutempo ~ Crear una definicioacuten del sistema que sea la base para topo el trabajo posterior de
ingenieriacutea
e trata de una transformacioacuten de un concepto dudoso en un conjunto concre to de elementos tangibles Debido eacuteiexcl que durante el anaacutelisis la comunicacioacuten es excepcionalmente densa abundan las oportunidad s deacute mal entendimiento omision s inconsistencias y errores
La identificacioacuten de las necesidades es el punto de partida en la evolucioacuten de un sistema basado en computadora
Para empezar el analiacutesta con baacutese-a un anaacutelisis previo de r~qu e r iacute mientos define los objetivos del sistema la lntorrn aacutecioacuten que se va obtener la intorrnaciacuteoacuten que se va suministrar las fupciones y el reoWmiento req Ll~uumldQ
El analista se asegura de distinguir entre lo que necesita el cliente (elementos criacuteticos para la realizacioacuten) y lo que el cliente quiere (elementos deseables pero no esenciales)
U a vez identificado todos los objetivos el analista realiza una ev~l uacioacute n de la informacioacuten suplementaria iquestExiste la tecnolog iacutea necesaria para constru ir el si tema iquestQueacute r~yurs~ ~1 f~briacioacuten y d~ dw~arroll q ~spe~ ial~s se requertraacutel1 Queacute liacutemites se han impuesto-a los costos y a la agendajetc ~
La informacioacuten recogida durante la etapa de identificacioacuten de las necesidades se especifica en un documento de conceptos del sistema
FINDES 4
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Posterior al anaacutelisis de requerimientos y ya definidos los elementos a ut ilizar se deberaacuten estructurar los algoritmos a utilizar en el sistema planeado
Algoritmos
Sec uencia detallada y loacutegica de pasos para alqanzar un objetivo Lista bien definida ordenada y finit a de operaciones que permite hallar la solucioacuten a un pro blema Dado un estado inici a] Y una entrada a traeacutes de pasos sucesivo y bien definidos se llega a un estado final obteniendo una solucioacuten Los algoritmos so objeto de estudio de la algoritmia
S importancia radica en mostrar la manera middotCiacutee nevar a cabo procesos y resolver mecaacutenicamente problemas matemaacuteticos o de otro tipo Al igual que las func iones m temaacuteticas los algoritmos reciben Un entrada y la tran sforman en una salida comportaacutendose como una Caja negra Sin ernbarqb para que un algoritmo pueda ser considerado como tal dele ser deterrniptstq tener un nuacutemero finito de instrucciones y debe acabar Por deterrnintildeista se entiende que si se sigue el mismo proceso maacutes de una vez se llega siempre al mismo resultado
El concepto de alqoritrno aunque similar y obvlarnent eacute relacionado no debe confundirse con el concepto de programa Mientras el primero es la especificacioacuten de un conjunto de pasos (operaciones instrucciones oacuterdenes ) orientados a la resolucioacuten de un problema el segundo es ese conjunto de operaciones especif icadas en un determinado lenguaje de programacioacuten y para un computador concreto susceptible de ser ejecutado (o compilado o inte rpretaao) Un algoritmo estrictamente hablando no puede ejecutarse hasta que se implementa ya sea en un leng uaje de programacioacuten en un circuito eleacutectrico en un aparato mecaacutenico usando papel y laacutepi z o en alguacuten otro modelo de computacioacuten
Por ejemplo
Algoritmo Suma
Inicia Va riable entera ab c Leer a Ledrb c=a+b Escribir El resultado es 0
~ L
Finar
FINDES 5
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Prog amacioacute E tructurada
La programacioacuten estructurada es una forma de escribir programas de ordenador (programacioacuten de computadora) de manera clara Para ello utiliza uacutenicamente tres estructuras secuencia seleccioacuten e iteracioacuten
Los programas cornputarizados pueden ser esc ritos con un alto grado de estructuracioacuten lo cual les permite ser maacutes faacutecilmente comprensibles en act ividades tal s como pruebas mantenimiento y modificacioacuten de los mismos Mediante la programacioacuten Estructurada tedas las bifurcaciones de control de un programa se
ncuentran estandarizadas d E9 forma tal que es posible leer la codificacioacuten del mis o desde su inicio hasta su terminacioacuten aacuten fo rma c eacutentiacutenua sin tener que saltar de un I gar a otro del programa siguiendo el rastro de la loacutegicordf establecida por el programador como es [a situacioacuten habiacutetuaacute] con codificaciones desaholladas bajo otras teacutecnicas
En programacioacuten Estructurada los programadores ti eben profundizar maacutes que lo usual al proceder a realizar el disentildeo original del programa pero el resultado final es maacutes faacutecil de leer y comprender el objetivo de un programador profesional al escribi r pro ramas de una manera estructurada es realizarlos utilizando solamente un numero de bifurcaciones de control estandarizados
El resu ltado de aplicar la sistemaacutetica y disciplinada manera de elaboracioacuten de programas establecida por la P~og ramac i oacuten Estructurada es una programacioacuten de alta precisioacuten como nunca antes habiacutea s ido lograda
Definiciones
Programacioacuten Estructurada es una teacutecnica en la cual la estructura de un programa es es la interpelacioacuten ae sus partes realit alttah claramente coacutemo es posi~ l e mediante el uso de tres estructuras 199 icas decontrol 0
e ~ ~
Secuenc iaSucesioacuten siacutempiacutee de dds o maacutes operaciones l
setecclon bifurcacioacuten con(jicionaiexclde untildea-orfraacute s operaciones Iteracioacuten Repeticioacuten de una operacioacuten mientras se cumple una condicioacuten
Estos tres tipos de estructuras loacutegicas dey control pueden ser combinados para producir programas que manejen cualquier tarea deprocesamientodeacute intorrnacioacuten
iexcl 1 0
Un programa estructurado estaacute compuesto d~ i segmentos los cuales puedan estar ~
constituidos POr p~as pocas in~trucQioneacutes oacute poacute ~unapaacutegiri a 0imaacutesdeiltOdifi8aCioacute l1 Cada seg ente tiacuteeheacute sOacutelamente una e n tradk~y uria salida esto s segrilentildetos asumiendo que no poseen lazos infinitos y no tienen instrucciones que jamaacutes se ejecuten se
e omi nan programas propios Cuando varios programas propios se combinan utilizando las tres estructuras baacutesicas de control mencionadas anteriormente el resultado es tambieacuten un programa propio
FINDES 6
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Por ejemplo Estructura de programacioacuten de Suma
Inicia Suma ( ) Declara abc es Entero a=5 b=7 c=a+b Escribe El reacutesultado es c
Final
FINDES 7
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 2 E orn d rabajo de Visual Bas ic
El Entorno de rabajo Visual Basic es un entorno de desarrollo disentildeado para la creacioacuten de aplicaciones para lo entornos de trabajo Microsoft Windows 95 98 Y NT Este lenguaje auacutena las posibilidades de-un lenglaje de alto nivel con las herramientas de disentildeo graacutefico lo cual nos da acceso a todas las funciones de los sistemas anteriormente citados Los elementos del entrono de desarrollo de Visual Basic son
Ba ra de Herramie tas ~O=- = =r 0= = - =~ ~+- ~F--~~~- _
Allthite t licic n er ereielt o fo rm~ lo R~pur~i~n Ej _ Jt~ r ~lj l1~ul t Di~g rm1 ti~rran ~n Compfeme l1 t~ ~olmiddot )~iacute1 __ __ _ _ ~ _ __~__ --- c_ bull_ bull_bullbullbull~_ - - --- - -_ - bull - - - - _ bull bull j-o _
11 ~ lt~ 1l ~ 1 - ~ I ~ ~ tB middot middotmiddot 6t 1l t i 00 fiexclj ~~ )OO iI ~ ~ ____ 0 _ bull bullbull _ bullbull_ _~ _ _ bullbullbull__ bullbullbullbull_bullbull _ _ bullbull_bull _ bullbull bull_ ____ _ _ ~~bull bull_ -
Permite un acceso raacutepido a os comandos maacutes utilizados ~
isentildeador de formularlos Es la ventana en la que se disentildearaacute la interfaz de la aplicacioacuten en ella se pueden agregar controles graacuteficos e imaacutegenes Cada formulario de una aplicacioacuten apareceraacute en su propia ventana
Cuadro de Herramientas En el cuadro de herramientas podemos encontrar un conjunto de herramientas que permiten insertar los objetos o controles en el formulario durante en tiempo
iexcl iexcl- (Tde disentildeo los objetos maacutes comunes son botones (command) etiqueta (Iabel) i sectr3 ~ cuadros de image n (Pieture) imaacutegenes (Image) -etc
Si hacemos doble click dQ[l el -ratoacuten sobre alguqo de ellos se insertaraacute l o ~ automaacuteticamente ~ n la-ventana deacutel formulario
1 _1 ~
ltOJ -c-
I ~ ~ Ventana de Prop iedades Los objetos tienen asociados unas propiedades que describen sus atributos valores compo rtamiento y apariencia del objeto
Las opciones d~ estav eacutenfanasoruacute ~ Lista desplegable de objetos Donde podremos visualizar
el nombre de los 0lgtjet9s de la aplicacioacuten ~ Lista de- propiedades del obleto- ~elec~iqna9d middoti Al
sejeccloriat un objeto con la lista desplsgableanteridrmeacuteniacutee mencionada nos apareceraacuten las propiedades del mismo ( ame visible appearence borderstyle etc) En la lista de propiedades se pueden modificar las propiedades del objeto Se puede visualizar de dos formar por categoriacutea o alfabeacuteticamente
FINDES 8
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ventana de Proyectos Contiene la lista de los archivos que forman parte de la aplicacioacuten Los tipos de archivos que se pueden incluir en un proyecto son
gt Arch ivo de Proyecto Es el que rsallza el ectot)seguimiento de todos los fich ero~ que forman parte de la aplicacioacuten Se guarda enlt un fichero con la extensioacutenVBP
gt Arch vo de Recursos Aquiacute se guardan cadenas de texto mapas de bits y demaacutes datos que puedan modificarse sin tener que volver a modificar el coacutedigo Se guardan con una extensioacuten RES o
gt Moacutedulo de Formularlo Contiene controles y coacuted igo soacutelo hay uno por middotformulario Se iexclguardan con extensioacuten FRM
gt Moacutedulo de Clase Son similares a los moacutedulos de formulario Se guardan con la extensi oacuten CLS
gt Moacutedulo Estaacutendar SOacutelo pueden contener coacutedigo T ienen una extensioacuten BAS
gt Cont ro les ActiveX Cont roles que se pueden antildeadir al cuadro de herramientas e lhclulrlos en un formulario
Ventana Ed itor e Coacutedigo En esta ventana es donde se incluyeacute el coacutedigode la aplicacioacuten Se crearaacute una ventana de coacuted igo para cada formulario o moacutedulo de la aplicacioacuten
Para tener acceso la ventana Qe ed i ci~n liexclv forma maacutes sencilla es hacer q oacutebley~lick~ ~obr~ el fo rrD ulano o sobre e l objeto al cual quiera incluir c~digd
I
Proyecto1 (Pro [3 middot For rm ario s
iexcl El F m (Forml
FINDE8 9
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 3 Fundamentos de rogra acioacuten para Vi al asic
Estructuras de Coacutedigo El coacutedigo que escriba en un proyecto de Visual Basic apareceraacute siempre en un moacutedulo
Un moacutedulo es un archivo de proyecto pudJenao s~ r un moacutedulo de formulario de clase o de caraacutecter general como vimos en el capiacutetulo anterior
En cada moacutedulo el coacutedi go se divide en dos secciones dec la aclones y procedim ientos
Los procedimientos son unidades de coacutedigo como pequentildeosproqrarnas escritos para realizar funciones determinadas con un prqpoacutesito bien definido
En cua lquier moacutedulo el preqrarnador dispone de u~a seccioacuten ~spec i a l llamada general en las q e se situacutean las d eacutec larac iacuteones y en la que se puede incluir otros procedimientos creados por el programador
En el apartado declaraciones se puede i n~roduc i r las consta ntes variables y tipo de datos que necesite en su aplicacioacuten (Todos estos conceptos seraacuten tratados a lo largo del curso)
Los procedimientos pueden tener paraacutemetros especiiacuteicados entre pareacute ntesis que le permiten comunicar al procedimientp alguna iniacuteormacloacuteh que necesite o que sea el propio procedimiento quien devuelva alguacuten valor
En un moacutedulo de formulario el coacutedigo que se situacutea se refiere tanto a dicho formulario como al resto de objetos que esteacuten dib]Jjados en eacutel En este tipo de moacutedulos cabe
~~t _
destacar los proeed rnlent rs de everntildeo que se encargan de dar una resp esta programada a los ~VEntordms q~e ocurreacuten erj la aacuteWlicacioacuten iexcl
S has escrito coacutedigo para alguacuten proce diacutemiacuteento de ~ven to eacuteste aparece en negr ta en la lista de procedirnierntildec de la ventaha de codi go
El coacutedigo de caraacutecter generala que puede compartir en maacutes de un proyecto s situacutea en un moacutedulo Qeneral El coacutedigo que aparece en este tipo de moacutedulos no se relaciona con un objeto d~terrnj~age ~i~q qq~ ti~n~ cr~pter Qer~r~IEntoacute~ moacutedutop g~ne ra l es no se pueden incluacuteiacuter procedimientos as et-eacutentoeacuteomo enel caso deacute los moacutedurosde formularlo
Es onveniente a~adiacuter q0nienarios a l~pJiacuten~a~s de coacutedigq qu(3 ~sGriba~ gt de ~s ltl forma podraacutes ehtenJ] ~ r Ips RrOgrameacuteIacutes-eacuteIacute-LUacutelql)e h~ga tierJlPoacute quacutee 10$ escribiste Para antildea ir un
f ~ ~ middotP r laquo ~
comentario en una liacutenea se utiliza el caraacutecter I (apoacutestrofe)
FINDEiS 10
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Objetos n isual Basic Un objeto en Visual Basic se caracteriza por tres componentes propiedades meacutetodos y eventos
Las p ropiedades son aquellas caracteriacutesticas o atributos que permiten establecer el aspecto de un objeto como el color taniantildeo poslcl oacuten etc O el estado del mismo activo maximizado etc Existen propiedades que soacutelo est aacuten disponibles en tiempo de disentildeo y otras que soacutelo estaacuten disponibles en tiempo de ejecucioacuten
Los meacutetodos son pequentildeos p rogramas que actuacutean sobre un determinado objeto y que establecen su comportamiento Asiacute un objeto puede moverse ocultarse e c Puedes utilizar cualquier meacutetodo queacutetorrne parte del objeto ~
Los eventos son las situaciones que se produceny que nos interesan identificar para esta lecer alguacuten tipo de de respuesta porparte del objeto Asiacute puedes hacer click sobre un determinado objeto creando de esta forma un evento reconocible por el objeto Que
1 r ~ d iexclsuceda algo o no como resmuesta a este ~ve n to dependera daque hayas programado alguna acc ioacuten en el correspondiente procedimiento de evento
Es ablecer propiedades Cuando insertas objetos en un ormulario tienes que establecer algunas propiedades que presenta Las propiedades son aquellas caracteriacutesticas propias del objeto que hacen que se distingan de otro objeto
En una aplicacioacuten Windows podemos distinguir diversos tipos de ventanas aunque lo nor al es identificar una ventana inicial que se puede maximizar O minimizar y uno o maacutes cuadros de iaacutelogo cuyo tamantildeo sDele ser fijo Slnernb aacuterqoj debes darte cuenta que las barras de ~ ergll)l i en ~~ s tatn b j ~n son v~ ntana ~fde unordfordfplicacioacuten
Normalmente la ventana lnicial ode arfordf(lqueiexclseraacute la que presente el menuacute principal ~ ~ ~~ iexcl y bull y
for ado por menuacutes desplegaacutebles en uno o maacutes deacute un nivel El resto de v ntanas no deberiacutean contener menuacutes desplegables aunque puede darse el caso
Algunas propiedades de los formularios que se pueden establecer en tiempo de disentildeo son ~
BorderSy1le Establece el estilo del borde del formulario
Captiori (Tex6H Eistqbleacutece eJ teacutext9 que apareceacute eilla liqrra de tiacutetulo del formUlario - r~ e l
Contra Box Permite mostrar o no el menuacute de control de las ventanas de Windows
FINDES 11
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Enab led Establece si el formulario puede responder o no a los eventos que generes
Font Establece las caracteriacutesticas de los objetos de texto que se situacuteen en el formulario
lean Cambia el icono que representa el formulario
Left Top Height Width Establecen la posicioacuten del formulario en la pantalla asiacute como las dimensiones
MaxButton y MinButton Establece si se podraacute maximizar o minimizar el formulario
MousePointer Modl icar el puntero del ratoacuten
Vis bl e Establece si el formulario se mostraraacute visible en tiempo de ejecucioacuten iexcl ~
Wlndow State Establ ece el modo ~ n que se carga inicialmente el form ulario normal maximizado o minimizado
To as esta propiedades estaacuten dlspontbles en tiempo de di se~o traveacutes de la ventana de propiedades
En tiempo de ejecucioacuten se puede cambiar o consultar el valor de algunas propiedades que soacutelo tienen sentido en el tiempo ded eacutesarrouumlo
ombreObjetoNombrePropiedad
FINDES 12
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Convenciones para nombrar bje~os de isual Basic [OBJETO OBJETO ESPANOL iForm middot middot-_middot_middot_- _- iFOrmuacutelariUuml--=------shyI _
iEh ec kB o~----middot--- -------ICasiexcliexcl ia-de middot~e-rifiexclcac i oacute n
iexclComboBox --- ----iexclCuadro com b i~~domiddot
I Datat~-~d--ombobo--- iacuteC ~ad o ombinado enlazado a datos idiexclc------shy[Command Button [Botoacuten de comando - -- - _ crridmiddot ---- shybull I
iexclData fContr()1de datos - -- - ---middot---- -rJatmiddot---shy1____ _- _ ___ ----- I
[Oirsctory list box [Cuadro lista de directorios r=-- - - -_ _- ~---
D rive List Box iexclCuadro lista de unidades ----- shyiexclFile List Box --- -middot-~iCuiexcld r~ Iista~de middot~--~h ivo S middot middot-_ -~_middot middotmiddotffiT middot-- shy __~ A bullbull - ~_iexcl ~_
Frame iexclMarco iexclfrm GrieacuteJ middotRejilla middot-- middot --W~r--middot-middot middot
iOata-bound grid 1 -middot- iexclR~jiexcliexcl imiddotamiddot middote n l a7ada a dat ll~ middot_ dbg
iexclHorizontal scrollbatiacute --rBaiexclr~de des l iamiddot~ a~omiddotiexcloriexcl~o~t8X -_ r[h-s-b-- shy~ ~ iexcl__ alt- _ AAA _ 0_ ~~ ~ __ _ ~
iexclImage iexclImagen [img t 1 - -__ middotNO ~~~bull bull u ~ _ _ ~~ __
f~lconta i ne r middot -~~o r OLE -i =~iexcl iP ictureBox Cuadro de imagen lpic ~
~~~ox m----~to 9 [VertlCalscroilbar iexclBarra de desplazamIento vertical middotmiddot_middotmiddotlt_middotmiddot vsb -
~M
_ ---__-shy 1
------------------I
I
FINDES
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizar Meacutetodos Una vez se ha establecido la parte estructural del formulario se pasa a programar el comportam iento que debe seguir de forma que cumpla con el objetivo para el que desees crearlo utilizando los meacutetodos
Un meacutetodo es un componente maacutes del objeto que puede ser utilizado directamente Para ello debes llamar al meacutetodo e Jndicarle sobre queacute objeto deseas aplicarlo que deberaacute admitirlo
La sintaxis en este caso debe ser NombreObOet ooNombreMetodo[par1 0 arn] donde la lista de paraacutemetros [par1 parn] es opcional decada meacutetodo
Un ejemplo es Si quleres mostrar un form Ulario llamado fnnPrimero la sintaxis Seraacute
frmPr im ero Show 1 El valor 1 nos indica que apareceraacute de forma modal y si el Valor es O apareceraacute de forma no modal
Entender los Eventos El con junto de eventos estaacute predefinido en Viacutesual Basic por lo cual no puedes crear un nuevo evento para los objetos lt
I conjunto de eventos reconocibles por un objeto estaacute ligado con los procedimientos de evento Estos procedimientos son unidades de coacutedigo que le perrniten especificar la
bull bull ~ 1I1t1
respuesta que debe dar uh objeto antildete la ocurrencia de un evento que puede recon ocer
La def inicioacuten del pnoced irniento d~ un ev~to tiene la sigu[en te forma Pr ivate Sub NombreObjetoacuteNombreEvEmtd([Lisectta de piftaacutemetrds]) Instrucciones End Sub
FINDES 14
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Elaboracioacuten de Menuacutes
E ed itor de menuacutes Al usar menuacutes se evita ocupar mucho espacio en las ventanas ya que estos soacutelo aparecen cuando se despliegan expliacutecitamente Ademaacutes se pueden crear hasta cinco niveles de menuacutes por lo que el nuacutemero de comandos y posibilidades es suficientemente amplio
En Visual Basic se trabajo con el editor de menuacutes para crear establecer propiedades y modificar los menuacutes Para acceder a eacutel basta con pulsar elsiguiente botoacuten en la barra de herramientas
Este botoacuten soacutelo estaraacute activo cuando est eacuteaacuteblerto eltormutarlolya que el menuacute siempre estaacute ~ saciado con un determinado formulario
El editor de menuacutes presenta las siguientespropiedades que se pueden aplicar sobre los menuacutes
Capt ion (Texto) Repres~ ri t a es texto qLJe apareceraacute en el menuacute
Name Es el nombre del control Se puede anteponer el prefijo amp maacutes el texto del tiacutetulo del menuacute
Checked Establece si debe a p ~ r~cer una marca de verificacioacuten a la izquierda del texto del objeto del menuacute La marca la puedes utilizar cuando deseas informar de la opcioacuten que estaacute activada en un momento determinado
Enab led Indica si el objeto podraacute recibir eventos del usuario Si tiene el valor False el elemento apareceraacute atenuado en el menuacute
Vis ib le Indica si el objeto debernostrarse o no si se establece estevalor a False los elementos situados a la derecha ocupan el lugar del elemento no vis ible
~) ~
WlndowsList Establece el valor que determina si un objeto de menuacute mantiene una lista de las ventanas MDImiddotsecundarias del tormularloacute actual
Elementos de Menuacute Utilizando los botones eje sangriacutea se puede determinar el nivel del 90jeacutetb hi enDqUe quumlieras stl~cGibnaacute d Asf los tftulos de menuacute se sifuumlan en el nivel sJp~rtor mo traacutendose en la lista inferior del editor de menuacutes lo maacute a la izquierda posible
En muchas aplicaciones se pueden ver unas barras rizontales en los menuacutes desplegables que realizan
la funcioacuten de dividir en secciones dichos menuacutes Este elem nto es conocido como un separador y sirve para separar aquellos comandos del menuacute que tengan
n motivo en comuacuten FINDES
fIfgy iacute _--~- _ _J
~lltl [0 shy middotmiddot- _ (0-bull-3 - C~eacuted iexcl ~~ - ~b1 = r ~middoth~t
15
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Para crear un separador basta con introducir un guioacuten (-) en la propiedad Caption No se puede crear un elemento en un nivel inferior inmediatamente despueacutes de un separador es decir no puedes tener como tiacutetulo de menuacute un separador
Teclas de Meacutetodo Abreviado Al introducir el caraacutecter amp el menuacute estaacute creando una tecla de acceso a dicho objeto Esta tecla se representa subraya daen el texto de menuacute y representa la tecla d I teclado que el usuario puede pulsar para ejecutar la accioacuten Dich a tecla se corresp onde con la letra que sigue al caracter amp en la propiedad Caption del objeacuteto menuacute
Si s rata de un tiacutetulo de menuacute tienes que usar la tecla de acceso en combinacloacuten con la tecla [Alt] Una vez abierto un tituloacute qe menuacute y despleqado sus elementos para acceder raacutepidamente a uno de ellos puedes usar la tecla de acceso directamente
Tenes que tener cuidado en no utilizar las mismas teclas de acceso para elementos de u mi mo nivel de menuacute yaque entonces no funcionaraacuten
El ditor de menuacute tambieacuten admite la incorporacioacuten de teclas d e meacutetodo abreviado Las abreviaturas del menuacute son combinaciones de teclas que se pueden utili a l n lugar de elegir el elemento del menucorrespondiente
ara crear una tecla de meacutetodo abreviado tienes que utilizar la propiedad Shortcut a la que puedes acceder al crear el menuacute desde el editor de menuacutes
Eventos de l Menuacute Cuando en tiempo de disentildeo seleccionamos la opcioacuten de menuacute de un formularlo que estamos creando Visual Basic muestra el procedimiento de evento click de dicho elemento del menuacute
En el caso del tiacutetulo del menuacute el prccediacuternlento click tiene con16 accioacuten predeterminada la de mostrar iacuteosetement os de (nenuacute del nivel inferior por leiacute que no seraacute necesario tener que program ar esta accioacuten Esto tambieacuten sepuede apljea~j a Ist_element s de un menuacute que son a su vez tiacutetulos de submenuacutes
En casi todos los casos tienes que utilizar una operen del menuacute para descargar el formulario d para finalizar la aplicaci oacuten] ~ p QP9iacuteoacuten qe te~tq s - l i r ~uele ser el maacutes apropiado ~
La instruccioacuten Unload descarga de memoria el [ormularioque se especifique Se uedeliexclusar d~ v ri~s f9rn1as QO riexcl ejemplo ~s i e~ta ~ds dentroiexcl deup Form lIam do trmconsutta poacutedremoacutes 1salirmiddot deacute eacutel de dos formas Una es UnloaH e o Unload frmconsulta
FINDES 16
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizacioacuten de uadros de Diaacutelogo
La mayoriacutea de las aplicaciones Windows hacen uso de [os cuadros de d iaacutelogo para establecer las opciones o introducir informacioacuten que necesitan para realizar una accioacuten indicada por el usuario Otro uso posible de los cuadros de diaacutelogo es presentar informacioacuten al usuario
Los cuadros de diaacutelogo se caracterizan por ser modales -y no permitir poder cambiar el tama- o de la ventana ademaacute sno deberaacuten tener una barra de menuacutes despleg ables
Cuadros de Mensaje ( sgbox)
Las cajas de mensajes o Message Box tienen unq funcioacuten clara que es la de mostrar una determinada informacioacuten aviso o prequnta para que el usuario tenga conocimiento de ella y actuacutee
Sintaxis La sintaxis completa de la funcioacuten Msg ox es
sgBox(mensaje[botones][t itulo] [archivoAyuda] [contexto])
MsgBox(prompt[bu~tonsiiexcl[titl e])
Descr peacuteiacuteon I1 Parterompt Req u~rido Expresiqn de cadena que representa el ~p ro rriacute pJ en el cuadro
de di~logo La longitud maacutexima de-promptesdeaprbxirrradamente 1024 caracteres seguacuten el ancho de los caracteres utilizados Si prompt consta de maacutes de una liacutenea puede separarlos utilizando un caraacutecter de retor o de carro (Chr(13)) o un ceacutetraacutecteriexcl de avance de liacutenea (Chr(10)) o na combinaci oacutende caracteres dE retcrn ode carro -ayance de liacutenea (Chr(13) y Ch r(i O)) ent ~e c~da liacuteheay la sigbiknte
buttons Opcional Expresioacuten numeacuterica que corresponde a la suma de los valores que especifican el nuacutemero y el middottipo de los botones que se pretenden
mostrar el e~tiIQ de icqnoacutetqJe ~e va a uacutetUiacute4al la identidad del botoacuten preacuted
1eterrnfhado y la moacutedalidad d eacutel cuadro deacute mensajes sise omite este
argumento el valor predeterminado para buttons es O ti le Opcional Expresioacuten de cadena que se muestra en la barra de iacutetulo del
cuadro de diaacutelogo Si se omite title en la barra de tiacutetulo se coloca el nomb re de la a licacioacuten
FINDE8 17
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
El paraacutemetro botones es de valor numeacuterico y ademaacutes de [os botones que aparecen en el cuadro de diaacutelogo tambieacuten puede indicar el icono que acompantildee al mensaje y el tipo de diaacutelogo modal que es
Cuando un cuadro de diaacutelogo es modal de aplicacioacuten tienes que cerrarlo ara interactuar con otra ventana de la misma aplicacioacuten Cuando es un cuadro de diaacutelogo modal del sistema todas las aplicacioneacutes uumleeacutest n ejecutaacutendose se suspenden hasta que el usuario responda al cuadro de diaacutelogo
Los valores que pueden tomar ef paraacutemetro botones son
VbM 59BoxRight VbMsgBox RtlReading
como la
FINDES 18
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Inyestigacioacuten para el Desarrollo Profesional
ema 1 Introduccioacuten a la Programacioacute
Etapas de la programacioacuten ~ Definicioacuten y anaacutelisis del problema ~ Disentildeo del algoritmo ~ Codificacioacuten del programa ~ Depuracioacuten y verificacioacuten ~ Documentacioacuten ~ Mantenimiento
Anaacutelisis El anaacutelisis de sistemas se realiza teniendo presente IQs siguientes objetivos Identif icar las necesidades
~ Evaluar la vialidad delsistema ~ ealiza r un anaacutelisis teacutecnico y econoacutemico ~ signar funciones al software al h ~ r9 ware a 19 gente a la base de datos y a otros
elementos del sistema ~ Establecer restricciones de costo y tieacutempo ~ Crear una definicioacuten del sistema que sea la base para topo el trabajo posterior de
ingenieriacutea
e trata de una transformacioacuten de un concepto dudoso en un conjunto concre to de elementos tangibles Debido eacuteiexcl que durante el anaacutelisis la comunicacioacuten es excepcionalmente densa abundan las oportunidad s deacute mal entendimiento omision s inconsistencias y errores
La identificacioacuten de las necesidades es el punto de partida en la evolucioacuten de un sistema basado en computadora
Para empezar el analiacutesta con baacutese-a un anaacutelisis previo de r~qu e r iacute mientos define los objetivos del sistema la lntorrn aacutecioacuten que se va obtener la intorrnaciacuteoacuten que se va suministrar las fupciones y el reoWmiento req Ll~uumldQ
El analista se asegura de distinguir entre lo que necesita el cliente (elementos criacuteticos para la realizacioacuten) y lo que el cliente quiere (elementos deseables pero no esenciales)
U a vez identificado todos los objetivos el analista realiza una ev~l uacioacute n de la informacioacuten suplementaria iquestExiste la tecnolog iacutea necesaria para constru ir el si tema iquestQueacute r~yurs~ ~1 f~briacioacuten y d~ dw~arroll q ~spe~ ial~s se requertraacutel1 Queacute liacutemites se han impuesto-a los costos y a la agendajetc ~
La informacioacuten recogida durante la etapa de identificacioacuten de las necesidades se especifica en un documento de conceptos del sistema
FINDES 4
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Posterior al anaacutelisis de requerimientos y ya definidos los elementos a ut ilizar se deberaacuten estructurar los algoritmos a utilizar en el sistema planeado
Algoritmos
Sec uencia detallada y loacutegica de pasos para alqanzar un objetivo Lista bien definida ordenada y finit a de operaciones que permite hallar la solucioacuten a un pro blema Dado un estado inici a] Y una entrada a traeacutes de pasos sucesivo y bien definidos se llega a un estado final obteniendo una solucioacuten Los algoritmos so objeto de estudio de la algoritmia
S importancia radica en mostrar la manera middotCiacutee nevar a cabo procesos y resolver mecaacutenicamente problemas matemaacuteticos o de otro tipo Al igual que las func iones m temaacuteticas los algoritmos reciben Un entrada y la tran sforman en una salida comportaacutendose como una Caja negra Sin ernbarqb para que un algoritmo pueda ser considerado como tal dele ser deterrniptstq tener un nuacutemero finito de instrucciones y debe acabar Por deterrnintildeista se entiende que si se sigue el mismo proceso maacutes de una vez se llega siempre al mismo resultado
El concepto de alqoritrno aunque similar y obvlarnent eacute relacionado no debe confundirse con el concepto de programa Mientras el primero es la especificacioacuten de un conjunto de pasos (operaciones instrucciones oacuterdenes ) orientados a la resolucioacuten de un problema el segundo es ese conjunto de operaciones especif icadas en un determinado lenguaje de programacioacuten y para un computador concreto susceptible de ser ejecutado (o compilado o inte rpretaao) Un algoritmo estrictamente hablando no puede ejecutarse hasta que se implementa ya sea en un leng uaje de programacioacuten en un circuito eleacutectrico en un aparato mecaacutenico usando papel y laacutepi z o en alguacuten otro modelo de computacioacuten
Por ejemplo
Algoritmo Suma
Inicia Va riable entera ab c Leer a Ledrb c=a+b Escribir El resultado es 0
~ L
Finar
FINDES 5
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Prog amacioacute E tructurada
La programacioacuten estructurada es una forma de escribir programas de ordenador (programacioacuten de computadora) de manera clara Para ello utiliza uacutenicamente tres estructuras secuencia seleccioacuten e iteracioacuten
Los programas cornputarizados pueden ser esc ritos con un alto grado de estructuracioacuten lo cual les permite ser maacutes faacutecilmente comprensibles en act ividades tal s como pruebas mantenimiento y modificacioacuten de los mismos Mediante la programacioacuten Estructurada tedas las bifurcaciones de control de un programa se
ncuentran estandarizadas d E9 forma tal que es posible leer la codificacioacuten del mis o desde su inicio hasta su terminacioacuten aacuten fo rma c eacutentiacutenua sin tener que saltar de un I gar a otro del programa siguiendo el rastro de la loacutegicordf establecida por el programador como es [a situacioacuten habiacutetuaacute] con codificaciones desaholladas bajo otras teacutecnicas
En programacioacuten Estructurada los programadores ti eben profundizar maacutes que lo usual al proceder a realizar el disentildeo original del programa pero el resultado final es maacutes faacutecil de leer y comprender el objetivo de un programador profesional al escribi r pro ramas de una manera estructurada es realizarlos utilizando solamente un numero de bifurcaciones de control estandarizados
El resu ltado de aplicar la sistemaacutetica y disciplinada manera de elaboracioacuten de programas establecida por la P~og ramac i oacuten Estructurada es una programacioacuten de alta precisioacuten como nunca antes habiacutea s ido lograda
Definiciones
Programacioacuten Estructurada es una teacutecnica en la cual la estructura de un programa es es la interpelacioacuten ae sus partes realit alttah claramente coacutemo es posi~ l e mediante el uso de tres estructuras 199 icas decontrol 0
e ~ ~
Secuenc iaSucesioacuten siacutempiacutee de dds o maacutes operaciones l
setecclon bifurcacioacuten con(jicionaiexclde untildea-orfraacute s operaciones Iteracioacuten Repeticioacuten de una operacioacuten mientras se cumple una condicioacuten
Estos tres tipos de estructuras loacutegicas dey control pueden ser combinados para producir programas que manejen cualquier tarea deprocesamientodeacute intorrnacioacuten
iexcl 1 0
Un programa estructurado estaacute compuesto d~ i segmentos los cuales puedan estar ~
constituidos POr p~as pocas in~trucQioneacutes oacute poacute ~unapaacutegiri a 0imaacutesdeiltOdifi8aCioacute l1 Cada seg ente tiacuteeheacute sOacutelamente una e n tradk~y uria salida esto s segrilentildetos asumiendo que no poseen lazos infinitos y no tienen instrucciones que jamaacutes se ejecuten se
e omi nan programas propios Cuando varios programas propios se combinan utilizando las tres estructuras baacutesicas de control mencionadas anteriormente el resultado es tambieacuten un programa propio
FINDES 6
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Por ejemplo Estructura de programacioacuten de Suma
Inicia Suma ( ) Declara abc es Entero a=5 b=7 c=a+b Escribe El reacutesultado es c
Final
FINDES 7
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 2 E orn d rabajo de Visual Bas ic
El Entorno de rabajo Visual Basic es un entorno de desarrollo disentildeado para la creacioacuten de aplicaciones para lo entornos de trabajo Microsoft Windows 95 98 Y NT Este lenguaje auacutena las posibilidades de-un lenglaje de alto nivel con las herramientas de disentildeo graacutefico lo cual nos da acceso a todas las funciones de los sistemas anteriormente citados Los elementos del entrono de desarrollo de Visual Basic son
Ba ra de Herramie tas ~O=- = =r 0= = - =~ ~+- ~F--~~~- _
Allthite t licic n er ereielt o fo rm~ lo R~pur~i~n Ej _ Jt~ r ~lj l1~ul t Di~g rm1 ti~rran ~n Compfeme l1 t~ ~olmiddot )~iacute1 __ __ _ _ ~ _ __~__ --- c_ bull_ bull_bullbullbull~_ - - --- - -_ - bull - - - - _ bull bull j-o _
11 ~ lt~ 1l ~ 1 - ~ I ~ ~ tB middot middotmiddot 6t 1l t i 00 fiexclj ~~ )OO iI ~ ~ ____ 0 _ bull bullbull _ bullbull_ _~ _ _ bullbullbull__ bullbullbullbull_bullbull _ _ bullbull_bull _ bullbull bull_ ____ _ _ ~~bull bull_ -
Permite un acceso raacutepido a os comandos maacutes utilizados ~
isentildeador de formularlos Es la ventana en la que se disentildearaacute la interfaz de la aplicacioacuten en ella se pueden agregar controles graacuteficos e imaacutegenes Cada formulario de una aplicacioacuten apareceraacute en su propia ventana
Cuadro de Herramientas En el cuadro de herramientas podemos encontrar un conjunto de herramientas que permiten insertar los objetos o controles en el formulario durante en tiempo
iexcl iexcl- (Tde disentildeo los objetos maacutes comunes son botones (command) etiqueta (Iabel) i sectr3 ~ cuadros de image n (Pieture) imaacutegenes (Image) -etc
Si hacemos doble click dQ[l el -ratoacuten sobre alguqo de ellos se insertaraacute l o ~ automaacuteticamente ~ n la-ventana deacutel formulario
1 _1 ~
ltOJ -c-
I ~ ~ Ventana de Prop iedades Los objetos tienen asociados unas propiedades que describen sus atributos valores compo rtamiento y apariencia del objeto
Las opciones d~ estav eacutenfanasoruacute ~ Lista desplegable de objetos Donde podremos visualizar
el nombre de los 0lgtjet9s de la aplicacioacuten ~ Lista de- propiedades del obleto- ~elec~iqna9d middoti Al
sejeccloriat un objeto con la lista desplsgableanteridrmeacuteniacutee mencionada nos apareceraacuten las propiedades del mismo ( ame visible appearence borderstyle etc) En la lista de propiedades se pueden modificar las propiedades del objeto Se puede visualizar de dos formar por categoriacutea o alfabeacuteticamente
FINDES 8
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ventana de Proyectos Contiene la lista de los archivos que forman parte de la aplicacioacuten Los tipos de archivos que se pueden incluir en un proyecto son
gt Arch ivo de Proyecto Es el que rsallza el ectot)seguimiento de todos los fich ero~ que forman parte de la aplicacioacuten Se guarda enlt un fichero con la extensioacutenVBP
gt Arch vo de Recursos Aquiacute se guardan cadenas de texto mapas de bits y demaacutes datos que puedan modificarse sin tener que volver a modificar el coacutedigo Se guardan con una extensioacuten RES o
gt Moacutedulo de Formularlo Contiene controles y coacuted igo soacutelo hay uno por middotformulario Se iexclguardan con extensioacuten FRM
gt Moacutedulo de Clase Son similares a los moacutedulos de formulario Se guardan con la extensi oacuten CLS
gt Moacutedulo Estaacutendar SOacutelo pueden contener coacutedigo T ienen una extensioacuten BAS
gt Cont ro les ActiveX Cont roles que se pueden antildeadir al cuadro de herramientas e lhclulrlos en un formulario
Ventana Ed itor e Coacutedigo En esta ventana es donde se incluyeacute el coacutedigode la aplicacioacuten Se crearaacute una ventana de coacuted igo para cada formulario o moacutedulo de la aplicacioacuten
Para tener acceso la ventana Qe ed i ci~n liexclv forma maacutes sencilla es hacer q oacutebley~lick~ ~obr~ el fo rrD ulano o sobre e l objeto al cual quiera incluir c~digd
I
Proyecto1 (Pro [3 middot For rm ario s
iexcl El F m (Forml
FINDE8 9
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 3 Fundamentos de rogra acioacuten para Vi al asic
Estructuras de Coacutedigo El coacutedigo que escriba en un proyecto de Visual Basic apareceraacute siempre en un moacutedulo
Un moacutedulo es un archivo de proyecto pudJenao s~ r un moacutedulo de formulario de clase o de caraacutecter general como vimos en el capiacutetulo anterior
En cada moacutedulo el coacutedi go se divide en dos secciones dec la aclones y procedim ientos
Los procedimientos son unidades de coacutedigo como pequentildeosproqrarnas escritos para realizar funciones determinadas con un prqpoacutesito bien definido
En cua lquier moacutedulo el preqrarnador dispone de u~a seccioacuten ~spec i a l llamada general en las q e se situacutean las d eacutec larac iacuteones y en la que se puede incluir otros procedimientos creados por el programador
En el apartado declaraciones se puede i n~roduc i r las consta ntes variables y tipo de datos que necesite en su aplicacioacuten (Todos estos conceptos seraacuten tratados a lo largo del curso)
Los procedimientos pueden tener paraacutemetros especiiacuteicados entre pareacute ntesis que le permiten comunicar al procedimientp alguna iniacuteormacloacuteh que necesite o que sea el propio procedimiento quien devuelva alguacuten valor
En un moacutedulo de formulario el coacutedigo que se situacutea se refiere tanto a dicho formulario como al resto de objetos que esteacuten dib]Jjados en eacutel En este tipo de moacutedulos cabe
~~t _
destacar los proeed rnlent rs de everntildeo que se encargan de dar una resp esta programada a los ~VEntordms q~e ocurreacuten erj la aacuteWlicacioacuten iexcl
S has escrito coacutedigo para alguacuten proce diacutemiacuteento de ~ven to eacuteste aparece en negr ta en la lista de procedirnierntildec de la ventaha de codi go
El coacutedigo de caraacutecter generala que puede compartir en maacutes de un proyecto s situacutea en un moacutedulo Qeneral El coacutedigo que aparece en este tipo de moacutedulos no se relaciona con un objeto d~terrnj~age ~i~q qq~ ti~n~ cr~pter Qer~r~IEntoacute~ moacutedutop g~ne ra l es no se pueden incluacuteiacuter procedimientos as et-eacutentoeacuteomo enel caso deacute los moacutedurosde formularlo
Es onveniente a~adiacuter q0nienarios a l~pJiacuten~a~s de coacutedigq qu(3 ~sGriba~ gt de ~s ltl forma podraacutes ehtenJ] ~ r Ips RrOgrameacuteIacutes-eacuteIacute-LUacutelql)e h~ga tierJlPoacute quacutee 10$ escribiste Para antildea ir un
f ~ ~ middotP r laquo ~
comentario en una liacutenea se utiliza el caraacutecter I (apoacutestrofe)
FINDEiS 10
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Objetos n isual Basic Un objeto en Visual Basic se caracteriza por tres componentes propiedades meacutetodos y eventos
Las p ropiedades son aquellas caracteriacutesticas o atributos que permiten establecer el aspecto de un objeto como el color taniantildeo poslcl oacuten etc O el estado del mismo activo maximizado etc Existen propiedades que soacutelo est aacuten disponibles en tiempo de disentildeo y otras que soacutelo estaacuten disponibles en tiempo de ejecucioacuten
Los meacutetodos son pequentildeos p rogramas que actuacutean sobre un determinado objeto y que establecen su comportamiento Asiacute un objeto puede moverse ocultarse e c Puedes utilizar cualquier meacutetodo queacutetorrne parte del objeto ~
Los eventos son las situaciones que se produceny que nos interesan identificar para esta lecer alguacuten tipo de de respuesta porparte del objeto Asiacute puedes hacer click sobre un determinado objeto creando de esta forma un evento reconocible por el objeto Que
1 r ~ d iexclsuceda algo o no como resmuesta a este ~ve n to dependera daque hayas programado alguna acc ioacuten en el correspondiente procedimiento de evento
Es ablecer propiedades Cuando insertas objetos en un ormulario tienes que establecer algunas propiedades que presenta Las propiedades son aquellas caracteriacutesticas propias del objeto que hacen que se distingan de otro objeto
En una aplicacioacuten Windows podemos distinguir diversos tipos de ventanas aunque lo nor al es identificar una ventana inicial que se puede maximizar O minimizar y uno o maacutes cuadros de iaacutelogo cuyo tamantildeo sDele ser fijo Slnernb aacuterqoj debes darte cuenta que las barras de ~ ergll)l i en ~~ s tatn b j ~n son v~ ntana ~fde unordfordfplicacioacuten
Normalmente la ventana lnicial ode arfordf(lqueiexclseraacute la que presente el menuacute principal ~ ~ ~~ iexcl y bull y
for ado por menuacutes desplegaacutebles en uno o maacutes deacute un nivel El resto de v ntanas no deberiacutean contener menuacutes desplegables aunque puede darse el caso
Algunas propiedades de los formularios que se pueden establecer en tiempo de disentildeo son ~
BorderSy1le Establece el estilo del borde del formulario
Captiori (Tex6H Eistqbleacutece eJ teacutext9 que apareceacute eilla liqrra de tiacutetulo del formUlario - r~ e l
Contra Box Permite mostrar o no el menuacute de control de las ventanas de Windows
FINDES 11
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Enab led Establece si el formulario puede responder o no a los eventos que generes
Font Establece las caracteriacutesticas de los objetos de texto que se situacuteen en el formulario
lean Cambia el icono que representa el formulario
Left Top Height Width Establecen la posicioacuten del formulario en la pantalla asiacute como las dimensiones
MaxButton y MinButton Establece si se podraacute maximizar o minimizar el formulario
MousePointer Modl icar el puntero del ratoacuten
Vis bl e Establece si el formulario se mostraraacute visible en tiempo de ejecucioacuten iexcl ~
Wlndow State Establ ece el modo ~ n que se carga inicialmente el form ulario normal maximizado o minimizado
To as esta propiedades estaacuten dlspontbles en tiempo de di se~o traveacutes de la ventana de propiedades
En tiempo de ejecucioacuten se puede cambiar o consultar el valor de algunas propiedades que soacutelo tienen sentido en el tiempo ded eacutesarrouumlo
ombreObjetoNombrePropiedad
FINDES 12
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Convenciones para nombrar bje~os de isual Basic [OBJETO OBJETO ESPANOL iForm middot middot-_middot_middot_- _- iFOrmuacutelariUuml--=------shyI _
iEh ec kB o~----middot--- -------ICasiexcliexcl ia-de middot~e-rifiexclcac i oacute n
iexclComboBox --- ----iexclCuadro com b i~~domiddot
I Datat~-~d--ombobo--- iacuteC ~ad o ombinado enlazado a datos idiexclc------shy[Command Button [Botoacuten de comando - -- - _ crridmiddot ---- shybull I
iexclData fContr()1de datos - -- - ---middot---- -rJatmiddot---shy1____ _- _ ___ ----- I
[Oirsctory list box [Cuadro lista de directorios r=-- - - -_ _- ~---
D rive List Box iexclCuadro lista de unidades ----- shyiexclFile List Box --- -middot-~iCuiexcld r~ Iista~de middot~--~h ivo S middot middot-_ -~_middot middotmiddotffiT middot-- shy __~ A bullbull - ~_iexcl ~_
Frame iexclMarco iexclfrm GrieacuteJ middotRejilla middot-- middot --W~r--middot-middot middot
iOata-bound grid 1 -middot- iexclR~jiexcliexcl imiddotamiddot middote n l a7ada a dat ll~ middot_ dbg
iexclHorizontal scrollbatiacute --rBaiexclr~de des l iamiddot~ a~omiddotiexcloriexcl~o~t8X -_ r[h-s-b-- shy~ ~ iexcl__ alt- _ AAA _ 0_ ~~ ~ __ _ ~
iexclImage iexclImagen [img t 1 - -__ middotNO ~~~bull bull u ~ _ _ ~~ __
f~lconta i ne r middot -~~o r OLE -i =~iexcl iP ictureBox Cuadro de imagen lpic ~
~~~ox m----~to 9 [VertlCalscroilbar iexclBarra de desplazamIento vertical middotmiddot_middotmiddotlt_middotmiddot vsb -
~M
_ ---__-shy 1
------------------I
I
FINDES
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizar Meacutetodos Una vez se ha establecido la parte estructural del formulario se pasa a programar el comportam iento que debe seguir de forma que cumpla con el objetivo para el que desees crearlo utilizando los meacutetodos
Un meacutetodo es un componente maacutes del objeto que puede ser utilizado directamente Para ello debes llamar al meacutetodo e Jndicarle sobre queacute objeto deseas aplicarlo que deberaacute admitirlo
La sintaxis en este caso debe ser NombreObOet ooNombreMetodo[par1 0 arn] donde la lista de paraacutemetros [par1 parn] es opcional decada meacutetodo
Un ejemplo es Si quleres mostrar un form Ulario llamado fnnPrimero la sintaxis Seraacute
frmPr im ero Show 1 El valor 1 nos indica que apareceraacute de forma modal y si el Valor es O apareceraacute de forma no modal
Entender los Eventos El con junto de eventos estaacute predefinido en Viacutesual Basic por lo cual no puedes crear un nuevo evento para los objetos lt
I conjunto de eventos reconocibles por un objeto estaacute ligado con los procedimientos de evento Estos procedimientos son unidades de coacutedigo que le perrniten especificar la
bull bull ~ 1I1t1
respuesta que debe dar uh objeto antildete la ocurrencia de un evento que puede recon ocer
La def inicioacuten del pnoced irniento d~ un ev~to tiene la sigu[en te forma Pr ivate Sub NombreObjetoacuteNombreEvEmtd([Lisectta de piftaacutemetrds]) Instrucciones End Sub
FINDES 14
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Elaboracioacuten de Menuacutes
E ed itor de menuacutes Al usar menuacutes se evita ocupar mucho espacio en las ventanas ya que estos soacutelo aparecen cuando se despliegan expliacutecitamente Ademaacutes se pueden crear hasta cinco niveles de menuacutes por lo que el nuacutemero de comandos y posibilidades es suficientemente amplio
En Visual Basic se trabajo con el editor de menuacutes para crear establecer propiedades y modificar los menuacutes Para acceder a eacutel basta con pulsar elsiguiente botoacuten en la barra de herramientas
Este botoacuten soacutelo estaraacute activo cuando est eacuteaacuteblerto eltormutarlolya que el menuacute siempre estaacute ~ saciado con un determinado formulario
El editor de menuacutes presenta las siguientespropiedades que se pueden aplicar sobre los menuacutes
Capt ion (Texto) Repres~ ri t a es texto qLJe apareceraacute en el menuacute
Name Es el nombre del control Se puede anteponer el prefijo amp maacutes el texto del tiacutetulo del menuacute
Checked Establece si debe a p ~ r~cer una marca de verificacioacuten a la izquierda del texto del objeto del menuacute La marca la puedes utilizar cuando deseas informar de la opcioacuten que estaacute activada en un momento determinado
Enab led Indica si el objeto podraacute recibir eventos del usuario Si tiene el valor False el elemento apareceraacute atenuado en el menuacute
Vis ib le Indica si el objeto debernostrarse o no si se establece estevalor a False los elementos situados a la derecha ocupan el lugar del elemento no vis ible
~) ~
WlndowsList Establece el valor que determina si un objeto de menuacute mantiene una lista de las ventanas MDImiddotsecundarias del tormularloacute actual
Elementos de Menuacute Utilizando los botones eje sangriacutea se puede determinar el nivel del 90jeacutetb hi enDqUe quumlieras stl~cGibnaacute d Asf los tftulos de menuacute se sifuumlan en el nivel sJp~rtor mo traacutendose en la lista inferior del editor de menuacutes lo maacute a la izquierda posible
En muchas aplicaciones se pueden ver unas barras rizontales en los menuacutes desplegables que realizan
la funcioacuten de dividir en secciones dichos menuacutes Este elem nto es conocido como un separador y sirve para separar aquellos comandos del menuacute que tengan
n motivo en comuacuten FINDES
fIfgy iacute _--~- _ _J
~lltl [0 shy middotmiddot- _ (0-bull-3 - C~eacuted iexcl ~~ - ~b1 = r ~middoth~t
15
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Para crear un separador basta con introducir un guioacuten (-) en la propiedad Caption No se puede crear un elemento en un nivel inferior inmediatamente despueacutes de un separador es decir no puedes tener como tiacutetulo de menuacute un separador
Teclas de Meacutetodo Abreviado Al introducir el caraacutecter amp el menuacute estaacute creando una tecla de acceso a dicho objeto Esta tecla se representa subraya daen el texto de menuacute y representa la tecla d I teclado que el usuario puede pulsar para ejecutar la accioacuten Dich a tecla se corresp onde con la letra que sigue al caracter amp en la propiedad Caption del objeacuteto menuacute
Si s rata de un tiacutetulo de menuacute tienes que usar la tecla de acceso en combinacloacuten con la tecla [Alt] Una vez abierto un tituloacute qe menuacute y despleqado sus elementos para acceder raacutepidamente a uno de ellos puedes usar la tecla de acceso directamente
Tenes que tener cuidado en no utilizar las mismas teclas de acceso para elementos de u mi mo nivel de menuacute yaque entonces no funcionaraacuten
El ditor de menuacute tambieacuten admite la incorporacioacuten de teclas d e meacutetodo abreviado Las abreviaturas del menuacute son combinaciones de teclas que se pueden utili a l n lugar de elegir el elemento del menucorrespondiente
ara crear una tecla de meacutetodo abreviado tienes que utilizar la propiedad Shortcut a la que puedes acceder al crear el menuacute desde el editor de menuacutes
Eventos de l Menuacute Cuando en tiempo de disentildeo seleccionamos la opcioacuten de menuacute de un formularlo que estamos creando Visual Basic muestra el procedimiento de evento click de dicho elemento del menuacute
En el caso del tiacutetulo del menuacute el prccediacuternlento click tiene con16 accioacuten predeterminada la de mostrar iacuteosetement os de (nenuacute del nivel inferior por leiacute que no seraacute necesario tener que program ar esta accioacuten Esto tambieacuten sepuede apljea~j a Ist_element s de un menuacute que son a su vez tiacutetulos de submenuacutes
En casi todos los casos tienes que utilizar una operen del menuacute para descargar el formulario d para finalizar la aplicaci oacuten] ~ p QP9iacuteoacuten qe te~tq s - l i r ~uele ser el maacutes apropiado ~
La instruccioacuten Unload descarga de memoria el [ormularioque se especifique Se uedeliexclusar d~ v ri~s f9rn1as QO riexcl ejemplo ~s i e~ta ~ds dentroiexcl deup Form lIam do trmconsutta poacutedremoacutes 1salirmiddot deacute eacutel de dos formas Una es UnloaH e o Unload frmconsulta
FINDES 16
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizacioacuten de uadros de Diaacutelogo
La mayoriacutea de las aplicaciones Windows hacen uso de [os cuadros de d iaacutelogo para establecer las opciones o introducir informacioacuten que necesitan para realizar una accioacuten indicada por el usuario Otro uso posible de los cuadros de diaacutelogo es presentar informacioacuten al usuario
Los cuadros de diaacutelogo se caracterizan por ser modales -y no permitir poder cambiar el tama- o de la ventana ademaacute sno deberaacuten tener una barra de menuacutes despleg ables
Cuadros de Mensaje ( sgbox)
Las cajas de mensajes o Message Box tienen unq funcioacuten clara que es la de mostrar una determinada informacioacuten aviso o prequnta para que el usuario tenga conocimiento de ella y actuacutee
Sintaxis La sintaxis completa de la funcioacuten Msg ox es
sgBox(mensaje[botones][t itulo] [archivoAyuda] [contexto])
MsgBox(prompt[bu~tonsiiexcl[titl e])
Descr peacuteiacuteon I1 Parterompt Req u~rido Expresiqn de cadena que representa el ~p ro rriacute pJ en el cuadro
de di~logo La longitud maacutexima de-promptesdeaprbxirrradamente 1024 caracteres seguacuten el ancho de los caracteres utilizados Si prompt consta de maacutes de una liacutenea puede separarlos utilizando un caraacutecter de retor o de carro (Chr(13)) o un ceacutetraacutecteriexcl de avance de liacutenea (Chr(10)) o na combinaci oacutende caracteres dE retcrn ode carro -ayance de liacutenea (Chr(13) y Ch r(i O)) ent ~e c~da liacuteheay la sigbiknte
buttons Opcional Expresioacuten numeacuterica que corresponde a la suma de los valores que especifican el nuacutemero y el middottipo de los botones que se pretenden
mostrar el e~tiIQ de icqnoacutetqJe ~e va a uacutetUiacute4al la identidad del botoacuten preacuted
1eterrnfhado y la moacutedalidad d eacutel cuadro deacute mensajes sise omite este
argumento el valor predeterminado para buttons es O ti le Opcional Expresioacuten de cadena que se muestra en la barra de iacutetulo del
cuadro de diaacutelogo Si se omite title en la barra de tiacutetulo se coloca el nomb re de la a licacioacuten
FINDE8 17
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
El paraacutemetro botones es de valor numeacuterico y ademaacutes de [os botones que aparecen en el cuadro de diaacutelogo tambieacuten puede indicar el icono que acompantildee al mensaje y el tipo de diaacutelogo modal que es
Cuando un cuadro de diaacutelogo es modal de aplicacioacuten tienes que cerrarlo ara interactuar con otra ventana de la misma aplicacioacuten Cuando es un cuadro de diaacutelogo modal del sistema todas las aplicacioneacutes uumleeacutest n ejecutaacutendose se suspenden hasta que el usuario responda al cuadro de diaacutelogo
Los valores que pueden tomar ef paraacutemetro botones son
VbM 59BoxRight VbMsgBox RtlReading
como la
FINDES 18
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Posterior al anaacutelisis de requerimientos y ya definidos los elementos a ut ilizar se deberaacuten estructurar los algoritmos a utilizar en el sistema planeado
Algoritmos
Sec uencia detallada y loacutegica de pasos para alqanzar un objetivo Lista bien definida ordenada y finit a de operaciones que permite hallar la solucioacuten a un pro blema Dado un estado inici a] Y una entrada a traeacutes de pasos sucesivo y bien definidos se llega a un estado final obteniendo una solucioacuten Los algoritmos so objeto de estudio de la algoritmia
S importancia radica en mostrar la manera middotCiacutee nevar a cabo procesos y resolver mecaacutenicamente problemas matemaacuteticos o de otro tipo Al igual que las func iones m temaacuteticas los algoritmos reciben Un entrada y la tran sforman en una salida comportaacutendose como una Caja negra Sin ernbarqb para que un algoritmo pueda ser considerado como tal dele ser deterrniptstq tener un nuacutemero finito de instrucciones y debe acabar Por deterrnintildeista se entiende que si se sigue el mismo proceso maacutes de una vez se llega siempre al mismo resultado
El concepto de alqoritrno aunque similar y obvlarnent eacute relacionado no debe confundirse con el concepto de programa Mientras el primero es la especificacioacuten de un conjunto de pasos (operaciones instrucciones oacuterdenes ) orientados a la resolucioacuten de un problema el segundo es ese conjunto de operaciones especif icadas en un determinado lenguaje de programacioacuten y para un computador concreto susceptible de ser ejecutado (o compilado o inte rpretaao) Un algoritmo estrictamente hablando no puede ejecutarse hasta que se implementa ya sea en un leng uaje de programacioacuten en un circuito eleacutectrico en un aparato mecaacutenico usando papel y laacutepi z o en alguacuten otro modelo de computacioacuten
Por ejemplo
Algoritmo Suma
Inicia Va riable entera ab c Leer a Ledrb c=a+b Escribir El resultado es 0
~ L
Finar
FINDES 5
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Prog amacioacute E tructurada
La programacioacuten estructurada es una forma de escribir programas de ordenador (programacioacuten de computadora) de manera clara Para ello utiliza uacutenicamente tres estructuras secuencia seleccioacuten e iteracioacuten
Los programas cornputarizados pueden ser esc ritos con un alto grado de estructuracioacuten lo cual les permite ser maacutes faacutecilmente comprensibles en act ividades tal s como pruebas mantenimiento y modificacioacuten de los mismos Mediante la programacioacuten Estructurada tedas las bifurcaciones de control de un programa se
ncuentran estandarizadas d E9 forma tal que es posible leer la codificacioacuten del mis o desde su inicio hasta su terminacioacuten aacuten fo rma c eacutentiacutenua sin tener que saltar de un I gar a otro del programa siguiendo el rastro de la loacutegicordf establecida por el programador como es [a situacioacuten habiacutetuaacute] con codificaciones desaholladas bajo otras teacutecnicas
En programacioacuten Estructurada los programadores ti eben profundizar maacutes que lo usual al proceder a realizar el disentildeo original del programa pero el resultado final es maacutes faacutecil de leer y comprender el objetivo de un programador profesional al escribi r pro ramas de una manera estructurada es realizarlos utilizando solamente un numero de bifurcaciones de control estandarizados
El resu ltado de aplicar la sistemaacutetica y disciplinada manera de elaboracioacuten de programas establecida por la P~og ramac i oacuten Estructurada es una programacioacuten de alta precisioacuten como nunca antes habiacutea s ido lograda
Definiciones
Programacioacuten Estructurada es una teacutecnica en la cual la estructura de un programa es es la interpelacioacuten ae sus partes realit alttah claramente coacutemo es posi~ l e mediante el uso de tres estructuras 199 icas decontrol 0
e ~ ~
Secuenc iaSucesioacuten siacutempiacutee de dds o maacutes operaciones l
setecclon bifurcacioacuten con(jicionaiexclde untildea-orfraacute s operaciones Iteracioacuten Repeticioacuten de una operacioacuten mientras se cumple una condicioacuten
Estos tres tipos de estructuras loacutegicas dey control pueden ser combinados para producir programas que manejen cualquier tarea deprocesamientodeacute intorrnacioacuten
iexcl 1 0
Un programa estructurado estaacute compuesto d~ i segmentos los cuales puedan estar ~
constituidos POr p~as pocas in~trucQioneacutes oacute poacute ~unapaacutegiri a 0imaacutesdeiltOdifi8aCioacute l1 Cada seg ente tiacuteeheacute sOacutelamente una e n tradk~y uria salida esto s segrilentildetos asumiendo que no poseen lazos infinitos y no tienen instrucciones que jamaacutes se ejecuten se
e omi nan programas propios Cuando varios programas propios se combinan utilizando las tres estructuras baacutesicas de control mencionadas anteriormente el resultado es tambieacuten un programa propio
FINDES 6
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Por ejemplo Estructura de programacioacuten de Suma
Inicia Suma ( ) Declara abc es Entero a=5 b=7 c=a+b Escribe El reacutesultado es c
Final
FINDES 7
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 2 E orn d rabajo de Visual Bas ic
El Entorno de rabajo Visual Basic es un entorno de desarrollo disentildeado para la creacioacuten de aplicaciones para lo entornos de trabajo Microsoft Windows 95 98 Y NT Este lenguaje auacutena las posibilidades de-un lenglaje de alto nivel con las herramientas de disentildeo graacutefico lo cual nos da acceso a todas las funciones de los sistemas anteriormente citados Los elementos del entrono de desarrollo de Visual Basic son
Ba ra de Herramie tas ~O=- = =r 0= = - =~ ~+- ~F--~~~- _
Allthite t licic n er ereielt o fo rm~ lo R~pur~i~n Ej _ Jt~ r ~lj l1~ul t Di~g rm1 ti~rran ~n Compfeme l1 t~ ~olmiddot )~iacute1 __ __ _ _ ~ _ __~__ --- c_ bull_ bull_bullbullbull~_ - - --- - -_ - bull - - - - _ bull bull j-o _
11 ~ lt~ 1l ~ 1 - ~ I ~ ~ tB middot middotmiddot 6t 1l t i 00 fiexclj ~~ )OO iI ~ ~ ____ 0 _ bull bullbull _ bullbull_ _~ _ _ bullbullbull__ bullbullbullbull_bullbull _ _ bullbull_bull _ bullbull bull_ ____ _ _ ~~bull bull_ -
Permite un acceso raacutepido a os comandos maacutes utilizados ~
isentildeador de formularlos Es la ventana en la que se disentildearaacute la interfaz de la aplicacioacuten en ella se pueden agregar controles graacuteficos e imaacutegenes Cada formulario de una aplicacioacuten apareceraacute en su propia ventana
Cuadro de Herramientas En el cuadro de herramientas podemos encontrar un conjunto de herramientas que permiten insertar los objetos o controles en el formulario durante en tiempo
iexcl iexcl- (Tde disentildeo los objetos maacutes comunes son botones (command) etiqueta (Iabel) i sectr3 ~ cuadros de image n (Pieture) imaacutegenes (Image) -etc
Si hacemos doble click dQ[l el -ratoacuten sobre alguqo de ellos se insertaraacute l o ~ automaacuteticamente ~ n la-ventana deacutel formulario
1 _1 ~
ltOJ -c-
I ~ ~ Ventana de Prop iedades Los objetos tienen asociados unas propiedades que describen sus atributos valores compo rtamiento y apariencia del objeto
Las opciones d~ estav eacutenfanasoruacute ~ Lista desplegable de objetos Donde podremos visualizar
el nombre de los 0lgtjet9s de la aplicacioacuten ~ Lista de- propiedades del obleto- ~elec~iqna9d middoti Al
sejeccloriat un objeto con la lista desplsgableanteridrmeacuteniacutee mencionada nos apareceraacuten las propiedades del mismo ( ame visible appearence borderstyle etc) En la lista de propiedades se pueden modificar las propiedades del objeto Se puede visualizar de dos formar por categoriacutea o alfabeacuteticamente
FINDES 8
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ventana de Proyectos Contiene la lista de los archivos que forman parte de la aplicacioacuten Los tipos de archivos que se pueden incluir en un proyecto son
gt Arch ivo de Proyecto Es el que rsallza el ectot)seguimiento de todos los fich ero~ que forman parte de la aplicacioacuten Se guarda enlt un fichero con la extensioacutenVBP
gt Arch vo de Recursos Aquiacute se guardan cadenas de texto mapas de bits y demaacutes datos que puedan modificarse sin tener que volver a modificar el coacutedigo Se guardan con una extensioacuten RES o
gt Moacutedulo de Formularlo Contiene controles y coacuted igo soacutelo hay uno por middotformulario Se iexclguardan con extensioacuten FRM
gt Moacutedulo de Clase Son similares a los moacutedulos de formulario Se guardan con la extensi oacuten CLS
gt Moacutedulo Estaacutendar SOacutelo pueden contener coacutedigo T ienen una extensioacuten BAS
gt Cont ro les ActiveX Cont roles que se pueden antildeadir al cuadro de herramientas e lhclulrlos en un formulario
Ventana Ed itor e Coacutedigo En esta ventana es donde se incluyeacute el coacutedigode la aplicacioacuten Se crearaacute una ventana de coacuted igo para cada formulario o moacutedulo de la aplicacioacuten
Para tener acceso la ventana Qe ed i ci~n liexclv forma maacutes sencilla es hacer q oacutebley~lick~ ~obr~ el fo rrD ulano o sobre e l objeto al cual quiera incluir c~digd
I
Proyecto1 (Pro [3 middot For rm ario s
iexcl El F m (Forml
FINDE8 9
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 3 Fundamentos de rogra acioacuten para Vi al asic
Estructuras de Coacutedigo El coacutedigo que escriba en un proyecto de Visual Basic apareceraacute siempre en un moacutedulo
Un moacutedulo es un archivo de proyecto pudJenao s~ r un moacutedulo de formulario de clase o de caraacutecter general como vimos en el capiacutetulo anterior
En cada moacutedulo el coacutedi go se divide en dos secciones dec la aclones y procedim ientos
Los procedimientos son unidades de coacutedigo como pequentildeosproqrarnas escritos para realizar funciones determinadas con un prqpoacutesito bien definido
En cua lquier moacutedulo el preqrarnador dispone de u~a seccioacuten ~spec i a l llamada general en las q e se situacutean las d eacutec larac iacuteones y en la que se puede incluir otros procedimientos creados por el programador
En el apartado declaraciones se puede i n~roduc i r las consta ntes variables y tipo de datos que necesite en su aplicacioacuten (Todos estos conceptos seraacuten tratados a lo largo del curso)
Los procedimientos pueden tener paraacutemetros especiiacuteicados entre pareacute ntesis que le permiten comunicar al procedimientp alguna iniacuteormacloacuteh que necesite o que sea el propio procedimiento quien devuelva alguacuten valor
En un moacutedulo de formulario el coacutedigo que se situacutea se refiere tanto a dicho formulario como al resto de objetos que esteacuten dib]Jjados en eacutel En este tipo de moacutedulos cabe
~~t _
destacar los proeed rnlent rs de everntildeo que se encargan de dar una resp esta programada a los ~VEntordms q~e ocurreacuten erj la aacuteWlicacioacuten iexcl
S has escrito coacutedigo para alguacuten proce diacutemiacuteento de ~ven to eacuteste aparece en negr ta en la lista de procedirnierntildec de la ventaha de codi go
El coacutedigo de caraacutecter generala que puede compartir en maacutes de un proyecto s situacutea en un moacutedulo Qeneral El coacutedigo que aparece en este tipo de moacutedulos no se relaciona con un objeto d~terrnj~age ~i~q qq~ ti~n~ cr~pter Qer~r~IEntoacute~ moacutedutop g~ne ra l es no se pueden incluacuteiacuter procedimientos as et-eacutentoeacuteomo enel caso deacute los moacutedurosde formularlo
Es onveniente a~adiacuter q0nienarios a l~pJiacuten~a~s de coacutedigq qu(3 ~sGriba~ gt de ~s ltl forma podraacutes ehtenJ] ~ r Ips RrOgrameacuteIacutes-eacuteIacute-LUacutelql)e h~ga tierJlPoacute quacutee 10$ escribiste Para antildea ir un
f ~ ~ middotP r laquo ~
comentario en una liacutenea se utiliza el caraacutecter I (apoacutestrofe)
FINDEiS 10
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Objetos n isual Basic Un objeto en Visual Basic se caracteriza por tres componentes propiedades meacutetodos y eventos
Las p ropiedades son aquellas caracteriacutesticas o atributos que permiten establecer el aspecto de un objeto como el color taniantildeo poslcl oacuten etc O el estado del mismo activo maximizado etc Existen propiedades que soacutelo est aacuten disponibles en tiempo de disentildeo y otras que soacutelo estaacuten disponibles en tiempo de ejecucioacuten
Los meacutetodos son pequentildeos p rogramas que actuacutean sobre un determinado objeto y que establecen su comportamiento Asiacute un objeto puede moverse ocultarse e c Puedes utilizar cualquier meacutetodo queacutetorrne parte del objeto ~
Los eventos son las situaciones que se produceny que nos interesan identificar para esta lecer alguacuten tipo de de respuesta porparte del objeto Asiacute puedes hacer click sobre un determinado objeto creando de esta forma un evento reconocible por el objeto Que
1 r ~ d iexclsuceda algo o no como resmuesta a este ~ve n to dependera daque hayas programado alguna acc ioacuten en el correspondiente procedimiento de evento
Es ablecer propiedades Cuando insertas objetos en un ormulario tienes que establecer algunas propiedades que presenta Las propiedades son aquellas caracteriacutesticas propias del objeto que hacen que se distingan de otro objeto
En una aplicacioacuten Windows podemos distinguir diversos tipos de ventanas aunque lo nor al es identificar una ventana inicial que se puede maximizar O minimizar y uno o maacutes cuadros de iaacutelogo cuyo tamantildeo sDele ser fijo Slnernb aacuterqoj debes darte cuenta que las barras de ~ ergll)l i en ~~ s tatn b j ~n son v~ ntana ~fde unordfordfplicacioacuten
Normalmente la ventana lnicial ode arfordf(lqueiexclseraacute la que presente el menuacute principal ~ ~ ~~ iexcl y bull y
for ado por menuacutes desplegaacutebles en uno o maacutes deacute un nivel El resto de v ntanas no deberiacutean contener menuacutes desplegables aunque puede darse el caso
Algunas propiedades de los formularios que se pueden establecer en tiempo de disentildeo son ~
BorderSy1le Establece el estilo del borde del formulario
Captiori (Tex6H Eistqbleacutece eJ teacutext9 que apareceacute eilla liqrra de tiacutetulo del formUlario - r~ e l
Contra Box Permite mostrar o no el menuacute de control de las ventanas de Windows
FINDES 11
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Enab led Establece si el formulario puede responder o no a los eventos que generes
Font Establece las caracteriacutesticas de los objetos de texto que se situacuteen en el formulario
lean Cambia el icono que representa el formulario
Left Top Height Width Establecen la posicioacuten del formulario en la pantalla asiacute como las dimensiones
MaxButton y MinButton Establece si se podraacute maximizar o minimizar el formulario
MousePointer Modl icar el puntero del ratoacuten
Vis bl e Establece si el formulario se mostraraacute visible en tiempo de ejecucioacuten iexcl ~
Wlndow State Establ ece el modo ~ n que se carga inicialmente el form ulario normal maximizado o minimizado
To as esta propiedades estaacuten dlspontbles en tiempo de di se~o traveacutes de la ventana de propiedades
En tiempo de ejecucioacuten se puede cambiar o consultar el valor de algunas propiedades que soacutelo tienen sentido en el tiempo ded eacutesarrouumlo
ombreObjetoNombrePropiedad
FINDES 12
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Convenciones para nombrar bje~os de isual Basic [OBJETO OBJETO ESPANOL iForm middot middot-_middot_middot_- _- iFOrmuacutelariUuml--=------shyI _
iEh ec kB o~----middot--- -------ICasiexcliexcl ia-de middot~e-rifiexclcac i oacute n
iexclComboBox --- ----iexclCuadro com b i~~domiddot
I Datat~-~d--ombobo--- iacuteC ~ad o ombinado enlazado a datos idiexclc------shy[Command Button [Botoacuten de comando - -- - _ crridmiddot ---- shybull I
iexclData fContr()1de datos - -- - ---middot---- -rJatmiddot---shy1____ _- _ ___ ----- I
[Oirsctory list box [Cuadro lista de directorios r=-- - - -_ _- ~---
D rive List Box iexclCuadro lista de unidades ----- shyiexclFile List Box --- -middot-~iCuiexcld r~ Iista~de middot~--~h ivo S middot middot-_ -~_middot middotmiddotffiT middot-- shy __~ A bullbull - ~_iexcl ~_
Frame iexclMarco iexclfrm GrieacuteJ middotRejilla middot-- middot --W~r--middot-middot middot
iOata-bound grid 1 -middot- iexclR~jiexcliexcl imiddotamiddot middote n l a7ada a dat ll~ middot_ dbg
iexclHorizontal scrollbatiacute --rBaiexclr~de des l iamiddot~ a~omiddotiexcloriexcl~o~t8X -_ r[h-s-b-- shy~ ~ iexcl__ alt- _ AAA _ 0_ ~~ ~ __ _ ~
iexclImage iexclImagen [img t 1 - -__ middotNO ~~~bull bull u ~ _ _ ~~ __
f~lconta i ne r middot -~~o r OLE -i =~iexcl iP ictureBox Cuadro de imagen lpic ~
~~~ox m----~to 9 [VertlCalscroilbar iexclBarra de desplazamIento vertical middotmiddot_middotmiddotlt_middotmiddot vsb -
~M
_ ---__-shy 1
------------------I
I
FINDES
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizar Meacutetodos Una vez se ha establecido la parte estructural del formulario se pasa a programar el comportam iento que debe seguir de forma que cumpla con el objetivo para el que desees crearlo utilizando los meacutetodos
Un meacutetodo es un componente maacutes del objeto que puede ser utilizado directamente Para ello debes llamar al meacutetodo e Jndicarle sobre queacute objeto deseas aplicarlo que deberaacute admitirlo
La sintaxis en este caso debe ser NombreObOet ooNombreMetodo[par1 0 arn] donde la lista de paraacutemetros [par1 parn] es opcional decada meacutetodo
Un ejemplo es Si quleres mostrar un form Ulario llamado fnnPrimero la sintaxis Seraacute
frmPr im ero Show 1 El valor 1 nos indica que apareceraacute de forma modal y si el Valor es O apareceraacute de forma no modal
Entender los Eventos El con junto de eventos estaacute predefinido en Viacutesual Basic por lo cual no puedes crear un nuevo evento para los objetos lt
I conjunto de eventos reconocibles por un objeto estaacute ligado con los procedimientos de evento Estos procedimientos son unidades de coacutedigo que le perrniten especificar la
bull bull ~ 1I1t1
respuesta que debe dar uh objeto antildete la ocurrencia de un evento que puede recon ocer
La def inicioacuten del pnoced irniento d~ un ev~to tiene la sigu[en te forma Pr ivate Sub NombreObjetoacuteNombreEvEmtd([Lisectta de piftaacutemetrds]) Instrucciones End Sub
FINDES 14
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Elaboracioacuten de Menuacutes
E ed itor de menuacutes Al usar menuacutes se evita ocupar mucho espacio en las ventanas ya que estos soacutelo aparecen cuando se despliegan expliacutecitamente Ademaacutes se pueden crear hasta cinco niveles de menuacutes por lo que el nuacutemero de comandos y posibilidades es suficientemente amplio
En Visual Basic se trabajo con el editor de menuacutes para crear establecer propiedades y modificar los menuacutes Para acceder a eacutel basta con pulsar elsiguiente botoacuten en la barra de herramientas
Este botoacuten soacutelo estaraacute activo cuando est eacuteaacuteblerto eltormutarlolya que el menuacute siempre estaacute ~ saciado con un determinado formulario
El editor de menuacutes presenta las siguientespropiedades que se pueden aplicar sobre los menuacutes
Capt ion (Texto) Repres~ ri t a es texto qLJe apareceraacute en el menuacute
Name Es el nombre del control Se puede anteponer el prefijo amp maacutes el texto del tiacutetulo del menuacute
Checked Establece si debe a p ~ r~cer una marca de verificacioacuten a la izquierda del texto del objeto del menuacute La marca la puedes utilizar cuando deseas informar de la opcioacuten que estaacute activada en un momento determinado
Enab led Indica si el objeto podraacute recibir eventos del usuario Si tiene el valor False el elemento apareceraacute atenuado en el menuacute
Vis ib le Indica si el objeto debernostrarse o no si se establece estevalor a False los elementos situados a la derecha ocupan el lugar del elemento no vis ible
~) ~
WlndowsList Establece el valor que determina si un objeto de menuacute mantiene una lista de las ventanas MDImiddotsecundarias del tormularloacute actual
Elementos de Menuacute Utilizando los botones eje sangriacutea se puede determinar el nivel del 90jeacutetb hi enDqUe quumlieras stl~cGibnaacute d Asf los tftulos de menuacute se sifuumlan en el nivel sJp~rtor mo traacutendose en la lista inferior del editor de menuacutes lo maacute a la izquierda posible
En muchas aplicaciones se pueden ver unas barras rizontales en los menuacutes desplegables que realizan
la funcioacuten de dividir en secciones dichos menuacutes Este elem nto es conocido como un separador y sirve para separar aquellos comandos del menuacute que tengan
n motivo en comuacuten FINDES
fIfgy iacute _--~- _ _J
~lltl [0 shy middotmiddot- _ (0-bull-3 - C~eacuted iexcl ~~ - ~b1 = r ~middoth~t
15
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Para crear un separador basta con introducir un guioacuten (-) en la propiedad Caption No se puede crear un elemento en un nivel inferior inmediatamente despueacutes de un separador es decir no puedes tener como tiacutetulo de menuacute un separador
Teclas de Meacutetodo Abreviado Al introducir el caraacutecter amp el menuacute estaacute creando una tecla de acceso a dicho objeto Esta tecla se representa subraya daen el texto de menuacute y representa la tecla d I teclado que el usuario puede pulsar para ejecutar la accioacuten Dich a tecla se corresp onde con la letra que sigue al caracter amp en la propiedad Caption del objeacuteto menuacute
Si s rata de un tiacutetulo de menuacute tienes que usar la tecla de acceso en combinacloacuten con la tecla [Alt] Una vez abierto un tituloacute qe menuacute y despleqado sus elementos para acceder raacutepidamente a uno de ellos puedes usar la tecla de acceso directamente
Tenes que tener cuidado en no utilizar las mismas teclas de acceso para elementos de u mi mo nivel de menuacute yaque entonces no funcionaraacuten
El ditor de menuacute tambieacuten admite la incorporacioacuten de teclas d e meacutetodo abreviado Las abreviaturas del menuacute son combinaciones de teclas que se pueden utili a l n lugar de elegir el elemento del menucorrespondiente
ara crear una tecla de meacutetodo abreviado tienes que utilizar la propiedad Shortcut a la que puedes acceder al crear el menuacute desde el editor de menuacutes
Eventos de l Menuacute Cuando en tiempo de disentildeo seleccionamos la opcioacuten de menuacute de un formularlo que estamos creando Visual Basic muestra el procedimiento de evento click de dicho elemento del menuacute
En el caso del tiacutetulo del menuacute el prccediacuternlento click tiene con16 accioacuten predeterminada la de mostrar iacuteosetement os de (nenuacute del nivel inferior por leiacute que no seraacute necesario tener que program ar esta accioacuten Esto tambieacuten sepuede apljea~j a Ist_element s de un menuacute que son a su vez tiacutetulos de submenuacutes
En casi todos los casos tienes que utilizar una operen del menuacute para descargar el formulario d para finalizar la aplicaci oacuten] ~ p QP9iacuteoacuten qe te~tq s - l i r ~uele ser el maacutes apropiado ~
La instruccioacuten Unload descarga de memoria el [ormularioque se especifique Se uedeliexclusar d~ v ri~s f9rn1as QO riexcl ejemplo ~s i e~ta ~ds dentroiexcl deup Form lIam do trmconsutta poacutedremoacutes 1salirmiddot deacute eacutel de dos formas Una es UnloaH e o Unload frmconsulta
FINDES 16
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizacioacuten de uadros de Diaacutelogo
La mayoriacutea de las aplicaciones Windows hacen uso de [os cuadros de d iaacutelogo para establecer las opciones o introducir informacioacuten que necesitan para realizar una accioacuten indicada por el usuario Otro uso posible de los cuadros de diaacutelogo es presentar informacioacuten al usuario
Los cuadros de diaacutelogo se caracterizan por ser modales -y no permitir poder cambiar el tama- o de la ventana ademaacute sno deberaacuten tener una barra de menuacutes despleg ables
Cuadros de Mensaje ( sgbox)
Las cajas de mensajes o Message Box tienen unq funcioacuten clara que es la de mostrar una determinada informacioacuten aviso o prequnta para que el usuario tenga conocimiento de ella y actuacutee
Sintaxis La sintaxis completa de la funcioacuten Msg ox es
sgBox(mensaje[botones][t itulo] [archivoAyuda] [contexto])
MsgBox(prompt[bu~tonsiiexcl[titl e])
Descr peacuteiacuteon I1 Parterompt Req u~rido Expresiqn de cadena que representa el ~p ro rriacute pJ en el cuadro
de di~logo La longitud maacutexima de-promptesdeaprbxirrradamente 1024 caracteres seguacuten el ancho de los caracteres utilizados Si prompt consta de maacutes de una liacutenea puede separarlos utilizando un caraacutecter de retor o de carro (Chr(13)) o un ceacutetraacutecteriexcl de avance de liacutenea (Chr(10)) o na combinaci oacutende caracteres dE retcrn ode carro -ayance de liacutenea (Chr(13) y Ch r(i O)) ent ~e c~da liacuteheay la sigbiknte
buttons Opcional Expresioacuten numeacuterica que corresponde a la suma de los valores que especifican el nuacutemero y el middottipo de los botones que se pretenden
mostrar el e~tiIQ de icqnoacutetqJe ~e va a uacutetUiacute4al la identidad del botoacuten preacuted
1eterrnfhado y la moacutedalidad d eacutel cuadro deacute mensajes sise omite este
argumento el valor predeterminado para buttons es O ti le Opcional Expresioacuten de cadena que se muestra en la barra de iacutetulo del
cuadro de diaacutelogo Si se omite title en la barra de tiacutetulo se coloca el nomb re de la a licacioacuten
FINDE8 17
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
El paraacutemetro botones es de valor numeacuterico y ademaacutes de [os botones que aparecen en el cuadro de diaacutelogo tambieacuten puede indicar el icono que acompantildee al mensaje y el tipo de diaacutelogo modal que es
Cuando un cuadro de diaacutelogo es modal de aplicacioacuten tienes que cerrarlo ara interactuar con otra ventana de la misma aplicacioacuten Cuando es un cuadro de diaacutelogo modal del sistema todas las aplicacioneacutes uumleeacutest n ejecutaacutendose se suspenden hasta que el usuario responda al cuadro de diaacutelogo
Los valores que pueden tomar ef paraacutemetro botones son
VbM 59BoxRight VbMsgBox RtlReading
como la
FINDES 18
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Prog amacioacute E tructurada
La programacioacuten estructurada es una forma de escribir programas de ordenador (programacioacuten de computadora) de manera clara Para ello utiliza uacutenicamente tres estructuras secuencia seleccioacuten e iteracioacuten
Los programas cornputarizados pueden ser esc ritos con un alto grado de estructuracioacuten lo cual les permite ser maacutes faacutecilmente comprensibles en act ividades tal s como pruebas mantenimiento y modificacioacuten de los mismos Mediante la programacioacuten Estructurada tedas las bifurcaciones de control de un programa se
ncuentran estandarizadas d E9 forma tal que es posible leer la codificacioacuten del mis o desde su inicio hasta su terminacioacuten aacuten fo rma c eacutentiacutenua sin tener que saltar de un I gar a otro del programa siguiendo el rastro de la loacutegicordf establecida por el programador como es [a situacioacuten habiacutetuaacute] con codificaciones desaholladas bajo otras teacutecnicas
En programacioacuten Estructurada los programadores ti eben profundizar maacutes que lo usual al proceder a realizar el disentildeo original del programa pero el resultado final es maacutes faacutecil de leer y comprender el objetivo de un programador profesional al escribi r pro ramas de una manera estructurada es realizarlos utilizando solamente un numero de bifurcaciones de control estandarizados
El resu ltado de aplicar la sistemaacutetica y disciplinada manera de elaboracioacuten de programas establecida por la P~og ramac i oacuten Estructurada es una programacioacuten de alta precisioacuten como nunca antes habiacutea s ido lograda
Definiciones
Programacioacuten Estructurada es una teacutecnica en la cual la estructura de un programa es es la interpelacioacuten ae sus partes realit alttah claramente coacutemo es posi~ l e mediante el uso de tres estructuras 199 icas decontrol 0
e ~ ~
Secuenc iaSucesioacuten siacutempiacutee de dds o maacutes operaciones l
setecclon bifurcacioacuten con(jicionaiexclde untildea-orfraacute s operaciones Iteracioacuten Repeticioacuten de una operacioacuten mientras se cumple una condicioacuten
Estos tres tipos de estructuras loacutegicas dey control pueden ser combinados para producir programas que manejen cualquier tarea deprocesamientodeacute intorrnacioacuten
iexcl 1 0
Un programa estructurado estaacute compuesto d~ i segmentos los cuales puedan estar ~
constituidos POr p~as pocas in~trucQioneacutes oacute poacute ~unapaacutegiri a 0imaacutesdeiltOdifi8aCioacute l1 Cada seg ente tiacuteeheacute sOacutelamente una e n tradk~y uria salida esto s segrilentildetos asumiendo que no poseen lazos infinitos y no tienen instrucciones que jamaacutes se ejecuten se
e omi nan programas propios Cuando varios programas propios se combinan utilizando las tres estructuras baacutesicas de control mencionadas anteriormente el resultado es tambieacuten un programa propio
FINDES 6
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Por ejemplo Estructura de programacioacuten de Suma
Inicia Suma ( ) Declara abc es Entero a=5 b=7 c=a+b Escribe El reacutesultado es c
Final
FINDES 7
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 2 E orn d rabajo de Visual Bas ic
El Entorno de rabajo Visual Basic es un entorno de desarrollo disentildeado para la creacioacuten de aplicaciones para lo entornos de trabajo Microsoft Windows 95 98 Y NT Este lenguaje auacutena las posibilidades de-un lenglaje de alto nivel con las herramientas de disentildeo graacutefico lo cual nos da acceso a todas las funciones de los sistemas anteriormente citados Los elementos del entrono de desarrollo de Visual Basic son
Ba ra de Herramie tas ~O=- = =r 0= = - =~ ~+- ~F--~~~- _
Allthite t licic n er ereielt o fo rm~ lo R~pur~i~n Ej _ Jt~ r ~lj l1~ul t Di~g rm1 ti~rran ~n Compfeme l1 t~ ~olmiddot )~iacute1 __ __ _ _ ~ _ __~__ --- c_ bull_ bull_bullbullbull~_ - - --- - -_ - bull - - - - _ bull bull j-o _
11 ~ lt~ 1l ~ 1 - ~ I ~ ~ tB middot middotmiddot 6t 1l t i 00 fiexclj ~~ )OO iI ~ ~ ____ 0 _ bull bullbull _ bullbull_ _~ _ _ bullbullbull__ bullbullbullbull_bullbull _ _ bullbull_bull _ bullbull bull_ ____ _ _ ~~bull bull_ -
Permite un acceso raacutepido a os comandos maacutes utilizados ~
isentildeador de formularlos Es la ventana en la que se disentildearaacute la interfaz de la aplicacioacuten en ella se pueden agregar controles graacuteficos e imaacutegenes Cada formulario de una aplicacioacuten apareceraacute en su propia ventana
Cuadro de Herramientas En el cuadro de herramientas podemos encontrar un conjunto de herramientas que permiten insertar los objetos o controles en el formulario durante en tiempo
iexcl iexcl- (Tde disentildeo los objetos maacutes comunes son botones (command) etiqueta (Iabel) i sectr3 ~ cuadros de image n (Pieture) imaacutegenes (Image) -etc
Si hacemos doble click dQ[l el -ratoacuten sobre alguqo de ellos se insertaraacute l o ~ automaacuteticamente ~ n la-ventana deacutel formulario
1 _1 ~
ltOJ -c-
I ~ ~ Ventana de Prop iedades Los objetos tienen asociados unas propiedades que describen sus atributos valores compo rtamiento y apariencia del objeto
Las opciones d~ estav eacutenfanasoruacute ~ Lista desplegable de objetos Donde podremos visualizar
el nombre de los 0lgtjet9s de la aplicacioacuten ~ Lista de- propiedades del obleto- ~elec~iqna9d middoti Al
sejeccloriat un objeto con la lista desplsgableanteridrmeacuteniacutee mencionada nos apareceraacuten las propiedades del mismo ( ame visible appearence borderstyle etc) En la lista de propiedades se pueden modificar las propiedades del objeto Se puede visualizar de dos formar por categoriacutea o alfabeacuteticamente
FINDES 8
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ventana de Proyectos Contiene la lista de los archivos que forman parte de la aplicacioacuten Los tipos de archivos que se pueden incluir en un proyecto son
gt Arch ivo de Proyecto Es el que rsallza el ectot)seguimiento de todos los fich ero~ que forman parte de la aplicacioacuten Se guarda enlt un fichero con la extensioacutenVBP
gt Arch vo de Recursos Aquiacute se guardan cadenas de texto mapas de bits y demaacutes datos que puedan modificarse sin tener que volver a modificar el coacutedigo Se guardan con una extensioacuten RES o
gt Moacutedulo de Formularlo Contiene controles y coacuted igo soacutelo hay uno por middotformulario Se iexclguardan con extensioacuten FRM
gt Moacutedulo de Clase Son similares a los moacutedulos de formulario Se guardan con la extensi oacuten CLS
gt Moacutedulo Estaacutendar SOacutelo pueden contener coacutedigo T ienen una extensioacuten BAS
gt Cont ro les ActiveX Cont roles que se pueden antildeadir al cuadro de herramientas e lhclulrlos en un formulario
Ventana Ed itor e Coacutedigo En esta ventana es donde se incluyeacute el coacutedigode la aplicacioacuten Se crearaacute una ventana de coacuted igo para cada formulario o moacutedulo de la aplicacioacuten
Para tener acceso la ventana Qe ed i ci~n liexclv forma maacutes sencilla es hacer q oacutebley~lick~ ~obr~ el fo rrD ulano o sobre e l objeto al cual quiera incluir c~digd
I
Proyecto1 (Pro [3 middot For rm ario s
iexcl El F m (Forml
FINDE8 9
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 3 Fundamentos de rogra acioacuten para Vi al asic
Estructuras de Coacutedigo El coacutedigo que escriba en un proyecto de Visual Basic apareceraacute siempre en un moacutedulo
Un moacutedulo es un archivo de proyecto pudJenao s~ r un moacutedulo de formulario de clase o de caraacutecter general como vimos en el capiacutetulo anterior
En cada moacutedulo el coacutedi go se divide en dos secciones dec la aclones y procedim ientos
Los procedimientos son unidades de coacutedigo como pequentildeosproqrarnas escritos para realizar funciones determinadas con un prqpoacutesito bien definido
En cua lquier moacutedulo el preqrarnador dispone de u~a seccioacuten ~spec i a l llamada general en las q e se situacutean las d eacutec larac iacuteones y en la que se puede incluir otros procedimientos creados por el programador
En el apartado declaraciones se puede i n~roduc i r las consta ntes variables y tipo de datos que necesite en su aplicacioacuten (Todos estos conceptos seraacuten tratados a lo largo del curso)
Los procedimientos pueden tener paraacutemetros especiiacuteicados entre pareacute ntesis que le permiten comunicar al procedimientp alguna iniacuteormacloacuteh que necesite o que sea el propio procedimiento quien devuelva alguacuten valor
En un moacutedulo de formulario el coacutedigo que se situacutea se refiere tanto a dicho formulario como al resto de objetos que esteacuten dib]Jjados en eacutel En este tipo de moacutedulos cabe
~~t _
destacar los proeed rnlent rs de everntildeo que se encargan de dar una resp esta programada a los ~VEntordms q~e ocurreacuten erj la aacuteWlicacioacuten iexcl
S has escrito coacutedigo para alguacuten proce diacutemiacuteento de ~ven to eacuteste aparece en negr ta en la lista de procedirnierntildec de la ventaha de codi go
El coacutedigo de caraacutecter generala que puede compartir en maacutes de un proyecto s situacutea en un moacutedulo Qeneral El coacutedigo que aparece en este tipo de moacutedulos no se relaciona con un objeto d~terrnj~age ~i~q qq~ ti~n~ cr~pter Qer~r~IEntoacute~ moacutedutop g~ne ra l es no se pueden incluacuteiacuter procedimientos as et-eacutentoeacuteomo enel caso deacute los moacutedurosde formularlo
Es onveniente a~adiacuter q0nienarios a l~pJiacuten~a~s de coacutedigq qu(3 ~sGriba~ gt de ~s ltl forma podraacutes ehtenJ] ~ r Ips RrOgrameacuteIacutes-eacuteIacute-LUacutelql)e h~ga tierJlPoacute quacutee 10$ escribiste Para antildea ir un
f ~ ~ middotP r laquo ~
comentario en una liacutenea se utiliza el caraacutecter I (apoacutestrofe)
FINDEiS 10
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Objetos n isual Basic Un objeto en Visual Basic se caracteriza por tres componentes propiedades meacutetodos y eventos
Las p ropiedades son aquellas caracteriacutesticas o atributos que permiten establecer el aspecto de un objeto como el color taniantildeo poslcl oacuten etc O el estado del mismo activo maximizado etc Existen propiedades que soacutelo est aacuten disponibles en tiempo de disentildeo y otras que soacutelo estaacuten disponibles en tiempo de ejecucioacuten
Los meacutetodos son pequentildeos p rogramas que actuacutean sobre un determinado objeto y que establecen su comportamiento Asiacute un objeto puede moverse ocultarse e c Puedes utilizar cualquier meacutetodo queacutetorrne parte del objeto ~
Los eventos son las situaciones que se produceny que nos interesan identificar para esta lecer alguacuten tipo de de respuesta porparte del objeto Asiacute puedes hacer click sobre un determinado objeto creando de esta forma un evento reconocible por el objeto Que
1 r ~ d iexclsuceda algo o no como resmuesta a este ~ve n to dependera daque hayas programado alguna acc ioacuten en el correspondiente procedimiento de evento
Es ablecer propiedades Cuando insertas objetos en un ormulario tienes que establecer algunas propiedades que presenta Las propiedades son aquellas caracteriacutesticas propias del objeto que hacen que se distingan de otro objeto
En una aplicacioacuten Windows podemos distinguir diversos tipos de ventanas aunque lo nor al es identificar una ventana inicial que se puede maximizar O minimizar y uno o maacutes cuadros de iaacutelogo cuyo tamantildeo sDele ser fijo Slnernb aacuterqoj debes darte cuenta que las barras de ~ ergll)l i en ~~ s tatn b j ~n son v~ ntana ~fde unordfordfplicacioacuten
Normalmente la ventana lnicial ode arfordf(lqueiexclseraacute la que presente el menuacute principal ~ ~ ~~ iexcl y bull y
for ado por menuacutes desplegaacutebles en uno o maacutes deacute un nivel El resto de v ntanas no deberiacutean contener menuacutes desplegables aunque puede darse el caso
Algunas propiedades de los formularios que se pueden establecer en tiempo de disentildeo son ~
BorderSy1le Establece el estilo del borde del formulario
Captiori (Tex6H Eistqbleacutece eJ teacutext9 que apareceacute eilla liqrra de tiacutetulo del formUlario - r~ e l
Contra Box Permite mostrar o no el menuacute de control de las ventanas de Windows
FINDES 11
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Enab led Establece si el formulario puede responder o no a los eventos que generes
Font Establece las caracteriacutesticas de los objetos de texto que se situacuteen en el formulario
lean Cambia el icono que representa el formulario
Left Top Height Width Establecen la posicioacuten del formulario en la pantalla asiacute como las dimensiones
MaxButton y MinButton Establece si se podraacute maximizar o minimizar el formulario
MousePointer Modl icar el puntero del ratoacuten
Vis bl e Establece si el formulario se mostraraacute visible en tiempo de ejecucioacuten iexcl ~
Wlndow State Establ ece el modo ~ n que se carga inicialmente el form ulario normal maximizado o minimizado
To as esta propiedades estaacuten dlspontbles en tiempo de di se~o traveacutes de la ventana de propiedades
En tiempo de ejecucioacuten se puede cambiar o consultar el valor de algunas propiedades que soacutelo tienen sentido en el tiempo ded eacutesarrouumlo
ombreObjetoNombrePropiedad
FINDES 12
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Convenciones para nombrar bje~os de isual Basic [OBJETO OBJETO ESPANOL iForm middot middot-_middot_middot_- _- iFOrmuacutelariUuml--=------shyI _
iEh ec kB o~----middot--- -------ICasiexcliexcl ia-de middot~e-rifiexclcac i oacute n
iexclComboBox --- ----iexclCuadro com b i~~domiddot
I Datat~-~d--ombobo--- iacuteC ~ad o ombinado enlazado a datos idiexclc------shy[Command Button [Botoacuten de comando - -- - _ crridmiddot ---- shybull I
iexclData fContr()1de datos - -- - ---middot---- -rJatmiddot---shy1____ _- _ ___ ----- I
[Oirsctory list box [Cuadro lista de directorios r=-- - - -_ _- ~---
D rive List Box iexclCuadro lista de unidades ----- shyiexclFile List Box --- -middot-~iCuiexcld r~ Iista~de middot~--~h ivo S middot middot-_ -~_middot middotmiddotffiT middot-- shy __~ A bullbull - ~_iexcl ~_
Frame iexclMarco iexclfrm GrieacuteJ middotRejilla middot-- middot --W~r--middot-middot middot
iOata-bound grid 1 -middot- iexclR~jiexcliexcl imiddotamiddot middote n l a7ada a dat ll~ middot_ dbg
iexclHorizontal scrollbatiacute --rBaiexclr~de des l iamiddot~ a~omiddotiexcloriexcl~o~t8X -_ r[h-s-b-- shy~ ~ iexcl__ alt- _ AAA _ 0_ ~~ ~ __ _ ~
iexclImage iexclImagen [img t 1 - -__ middotNO ~~~bull bull u ~ _ _ ~~ __
f~lconta i ne r middot -~~o r OLE -i =~iexcl iP ictureBox Cuadro de imagen lpic ~
~~~ox m----~to 9 [VertlCalscroilbar iexclBarra de desplazamIento vertical middotmiddot_middotmiddotlt_middotmiddot vsb -
~M
_ ---__-shy 1
------------------I
I
FINDES
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizar Meacutetodos Una vez se ha establecido la parte estructural del formulario se pasa a programar el comportam iento que debe seguir de forma que cumpla con el objetivo para el que desees crearlo utilizando los meacutetodos
Un meacutetodo es un componente maacutes del objeto que puede ser utilizado directamente Para ello debes llamar al meacutetodo e Jndicarle sobre queacute objeto deseas aplicarlo que deberaacute admitirlo
La sintaxis en este caso debe ser NombreObOet ooNombreMetodo[par1 0 arn] donde la lista de paraacutemetros [par1 parn] es opcional decada meacutetodo
Un ejemplo es Si quleres mostrar un form Ulario llamado fnnPrimero la sintaxis Seraacute
frmPr im ero Show 1 El valor 1 nos indica que apareceraacute de forma modal y si el Valor es O apareceraacute de forma no modal
Entender los Eventos El con junto de eventos estaacute predefinido en Viacutesual Basic por lo cual no puedes crear un nuevo evento para los objetos lt
I conjunto de eventos reconocibles por un objeto estaacute ligado con los procedimientos de evento Estos procedimientos son unidades de coacutedigo que le perrniten especificar la
bull bull ~ 1I1t1
respuesta que debe dar uh objeto antildete la ocurrencia de un evento que puede recon ocer
La def inicioacuten del pnoced irniento d~ un ev~to tiene la sigu[en te forma Pr ivate Sub NombreObjetoacuteNombreEvEmtd([Lisectta de piftaacutemetrds]) Instrucciones End Sub
FINDES 14
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Elaboracioacuten de Menuacutes
E ed itor de menuacutes Al usar menuacutes se evita ocupar mucho espacio en las ventanas ya que estos soacutelo aparecen cuando se despliegan expliacutecitamente Ademaacutes se pueden crear hasta cinco niveles de menuacutes por lo que el nuacutemero de comandos y posibilidades es suficientemente amplio
En Visual Basic se trabajo con el editor de menuacutes para crear establecer propiedades y modificar los menuacutes Para acceder a eacutel basta con pulsar elsiguiente botoacuten en la barra de herramientas
Este botoacuten soacutelo estaraacute activo cuando est eacuteaacuteblerto eltormutarlolya que el menuacute siempre estaacute ~ saciado con un determinado formulario
El editor de menuacutes presenta las siguientespropiedades que se pueden aplicar sobre los menuacutes
Capt ion (Texto) Repres~ ri t a es texto qLJe apareceraacute en el menuacute
Name Es el nombre del control Se puede anteponer el prefijo amp maacutes el texto del tiacutetulo del menuacute
Checked Establece si debe a p ~ r~cer una marca de verificacioacuten a la izquierda del texto del objeto del menuacute La marca la puedes utilizar cuando deseas informar de la opcioacuten que estaacute activada en un momento determinado
Enab led Indica si el objeto podraacute recibir eventos del usuario Si tiene el valor False el elemento apareceraacute atenuado en el menuacute
Vis ib le Indica si el objeto debernostrarse o no si se establece estevalor a False los elementos situados a la derecha ocupan el lugar del elemento no vis ible
~) ~
WlndowsList Establece el valor que determina si un objeto de menuacute mantiene una lista de las ventanas MDImiddotsecundarias del tormularloacute actual
Elementos de Menuacute Utilizando los botones eje sangriacutea se puede determinar el nivel del 90jeacutetb hi enDqUe quumlieras stl~cGibnaacute d Asf los tftulos de menuacute se sifuumlan en el nivel sJp~rtor mo traacutendose en la lista inferior del editor de menuacutes lo maacute a la izquierda posible
En muchas aplicaciones se pueden ver unas barras rizontales en los menuacutes desplegables que realizan
la funcioacuten de dividir en secciones dichos menuacutes Este elem nto es conocido como un separador y sirve para separar aquellos comandos del menuacute que tengan
n motivo en comuacuten FINDES
fIfgy iacute _--~- _ _J
~lltl [0 shy middotmiddot- _ (0-bull-3 - C~eacuted iexcl ~~ - ~b1 = r ~middoth~t
15
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Para crear un separador basta con introducir un guioacuten (-) en la propiedad Caption No se puede crear un elemento en un nivel inferior inmediatamente despueacutes de un separador es decir no puedes tener como tiacutetulo de menuacute un separador
Teclas de Meacutetodo Abreviado Al introducir el caraacutecter amp el menuacute estaacute creando una tecla de acceso a dicho objeto Esta tecla se representa subraya daen el texto de menuacute y representa la tecla d I teclado que el usuario puede pulsar para ejecutar la accioacuten Dich a tecla se corresp onde con la letra que sigue al caracter amp en la propiedad Caption del objeacuteto menuacute
Si s rata de un tiacutetulo de menuacute tienes que usar la tecla de acceso en combinacloacuten con la tecla [Alt] Una vez abierto un tituloacute qe menuacute y despleqado sus elementos para acceder raacutepidamente a uno de ellos puedes usar la tecla de acceso directamente
Tenes que tener cuidado en no utilizar las mismas teclas de acceso para elementos de u mi mo nivel de menuacute yaque entonces no funcionaraacuten
El ditor de menuacute tambieacuten admite la incorporacioacuten de teclas d e meacutetodo abreviado Las abreviaturas del menuacute son combinaciones de teclas que se pueden utili a l n lugar de elegir el elemento del menucorrespondiente
ara crear una tecla de meacutetodo abreviado tienes que utilizar la propiedad Shortcut a la que puedes acceder al crear el menuacute desde el editor de menuacutes
Eventos de l Menuacute Cuando en tiempo de disentildeo seleccionamos la opcioacuten de menuacute de un formularlo que estamos creando Visual Basic muestra el procedimiento de evento click de dicho elemento del menuacute
En el caso del tiacutetulo del menuacute el prccediacuternlento click tiene con16 accioacuten predeterminada la de mostrar iacuteosetement os de (nenuacute del nivel inferior por leiacute que no seraacute necesario tener que program ar esta accioacuten Esto tambieacuten sepuede apljea~j a Ist_element s de un menuacute que son a su vez tiacutetulos de submenuacutes
En casi todos los casos tienes que utilizar una operen del menuacute para descargar el formulario d para finalizar la aplicaci oacuten] ~ p QP9iacuteoacuten qe te~tq s - l i r ~uele ser el maacutes apropiado ~
La instruccioacuten Unload descarga de memoria el [ormularioque se especifique Se uedeliexclusar d~ v ri~s f9rn1as QO riexcl ejemplo ~s i e~ta ~ds dentroiexcl deup Form lIam do trmconsutta poacutedremoacutes 1salirmiddot deacute eacutel de dos formas Una es UnloaH e o Unload frmconsulta
FINDES 16
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizacioacuten de uadros de Diaacutelogo
La mayoriacutea de las aplicaciones Windows hacen uso de [os cuadros de d iaacutelogo para establecer las opciones o introducir informacioacuten que necesitan para realizar una accioacuten indicada por el usuario Otro uso posible de los cuadros de diaacutelogo es presentar informacioacuten al usuario
Los cuadros de diaacutelogo se caracterizan por ser modales -y no permitir poder cambiar el tama- o de la ventana ademaacute sno deberaacuten tener una barra de menuacutes despleg ables
Cuadros de Mensaje ( sgbox)
Las cajas de mensajes o Message Box tienen unq funcioacuten clara que es la de mostrar una determinada informacioacuten aviso o prequnta para que el usuario tenga conocimiento de ella y actuacutee
Sintaxis La sintaxis completa de la funcioacuten Msg ox es
sgBox(mensaje[botones][t itulo] [archivoAyuda] [contexto])
MsgBox(prompt[bu~tonsiiexcl[titl e])
Descr peacuteiacuteon I1 Parterompt Req u~rido Expresiqn de cadena que representa el ~p ro rriacute pJ en el cuadro
de di~logo La longitud maacutexima de-promptesdeaprbxirrradamente 1024 caracteres seguacuten el ancho de los caracteres utilizados Si prompt consta de maacutes de una liacutenea puede separarlos utilizando un caraacutecter de retor o de carro (Chr(13)) o un ceacutetraacutecteriexcl de avance de liacutenea (Chr(10)) o na combinaci oacutende caracteres dE retcrn ode carro -ayance de liacutenea (Chr(13) y Ch r(i O)) ent ~e c~da liacuteheay la sigbiknte
buttons Opcional Expresioacuten numeacuterica que corresponde a la suma de los valores que especifican el nuacutemero y el middottipo de los botones que se pretenden
mostrar el e~tiIQ de icqnoacutetqJe ~e va a uacutetUiacute4al la identidad del botoacuten preacuted
1eterrnfhado y la moacutedalidad d eacutel cuadro deacute mensajes sise omite este
argumento el valor predeterminado para buttons es O ti le Opcional Expresioacuten de cadena que se muestra en la barra de iacutetulo del
cuadro de diaacutelogo Si se omite title en la barra de tiacutetulo se coloca el nomb re de la a licacioacuten
FINDE8 17
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
El paraacutemetro botones es de valor numeacuterico y ademaacutes de [os botones que aparecen en el cuadro de diaacutelogo tambieacuten puede indicar el icono que acompantildee al mensaje y el tipo de diaacutelogo modal que es
Cuando un cuadro de diaacutelogo es modal de aplicacioacuten tienes que cerrarlo ara interactuar con otra ventana de la misma aplicacioacuten Cuando es un cuadro de diaacutelogo modal del sistema todas las aplicacioneacutes uumleeacutest n ejecutaacutendose se suspenden hasta que el usuario responda al cuadro de diaacutelogo
Los valores que pueden tomar ef paraacutemetro botones son
VbM 59BoxRight VbMsgBox RtlReading
como la
FINDES 18
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Por ejemplo Estructura de programacioacuten de Suma
Inicia Suma ( ) Declara abc es Entero a=5 b=7 c=a+b Escribe El reacutesultado es c
Final
FINDES 7
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 2 E orn d rabajo de Visual Bas ic
El Entorno de rabajo Visual Basic es un entorno de desarrollo disentildeado para la creacioacuten de aplicaciones para lo entornos de trabajo Microsoft Windows 95 98 Y NT Este lenguaje auacutena las posibilidades de-un lenglaje de alto nivel con las herramientas de disentildeo graacutefico lo cual nos da acceso a todas las funciones de los sistemas anteriormente citados Los elementos del entrono de desarrollo de Visual Basic son
Ba ra de Herramie tas ~O=- = =r 0= = - =~ ~+- ~F--~~~- _
Allthite t licic n er ereielt o fo rm~ lo R~pur~i~n Ej _ Jt~ r ~lj l1~ul t Di~g rm1 ti~rran ~n Compfeme l1 t~ ~olmiddot )~iacute1 __ __ _ _ ~ _ __~__ --- c_ bull_ bull_bullbullbull~_ - - --- - -_ - bull - - - - _ bull bull j-o _
11 ~ lt~ 1l ~ 1 - ~ I ~ ~ tB middot middotmiddot 6t 1l t i 00 fiexclj ~~ )OO iI ~ ~ ____ 0 _ bull bullbull _ bullbull_ _~ _ _ bullbullbull__ bullbullbullbull_bullbull _ _ bullbull_bull _ bullbull bull_ ____ _ _ ~~bull bull_ -
Permite un acceso raacutepido a os comandos maacutes utilizados ~
isentildeador de formularlos Es la ventana en la que se disentildearaacute la interfaz de la aplicacioacuten en ella se pueden agregar controles graacuteficos e imaacutegenes Cada formulario de una aplicacioacuten apareceraacute en su propia ventana
Cuadro de Herramientas En el cuadro de herramientas podemos encontrar un conjunto de herramientas que permiten insertar los objetos o controles en el formulario durante en tiempo
iexcl iexcl- (Tde disentildeo los objetos maacutes comunes son botones (command) etiqueta (Iabel) i sectr3 ~ cuadros de image n (Pieture) imaacutegenes (Image) -etc
Si hacemos doble click dQ[l el -ratoacuten sobre alguqo de ellos se insertaraacute l o ~ automaacuteticamente ~ n la-ventana deacutel formulario
1 _1 ~
ltOJ -c-
I ~ ~ Ventana de Prop iedades Los objetos tienen asociados unas propiedades que describen sus atributos valores compo rtamiento y apariencia del objeto
Las opciones d~ estav eacutenfanasoruacute ~ Lista desplegable de objetos Donde podremos visualizar
el nombre de los 0lgtjet9s de la aplicacioacuten ~ Lista de- propiedades del obleto- ~elec~iqna9d middoti Al
sejeccloriat un objeto con la lista desplsgableanteridrmeacuteniacutee mencionada nos apareceraacuten las propiedades del mismo ( ame visible appearence borderstyle etc) En la lista de propiedades se pueden modificar las propiedades del objeto Se puede visualizar de dos formar por categoriacutea o alfabeacuteticamente
FINDES 8
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ventana de Proyectos Contiene la lista de los archivos que forman parte de la aplicacioacuten Los tipos de archivos que se pueden incluir en un proyecto son
gt Arch ivo de Proyecto Es el que rsallza el ectot)seguimiento de todos los fich ero~ que forman parte de la aplicacioacuten Se guarda enlt un fichero con la extensioacutenVBP
gt Arch vo de Recursos Aquiacute se guardan cadenas de texto mapas de bits y demaacutes datos que puedan modificarse sin tener que volver a modificar el coacutedigo Se guardan con una extensioacuten RES o
gt Moacutedulo de Formularlo Contiene controles y coacuted igo soacutelo hay uno por middotformulario Se iexclguardan con extensioacuten FRM
gt Moacutedulo de Clase Son similares a los moacutedulos de formulario Se guardan con la extensi oacuten CLS
gt Moacutedulo Estaacutendar SOacutelo pueden contener coacutedigo T ienen una extensioacuten BAS
gt Cont ro les ActiveX Cont roles que se pueden antildeadir al cuadro de herramientas e lhclulrlos en un formulario
Ventana Ed itor e Coacutedigo En esta ventana es donde se incluyeacute el coacutedigode la aplicacioacuten Se crearaacute una ventana de coacuted igo para cada formulario o moacutedulo de la aplicacioacuten
Para tener acceso la ventana Qe ed i ci~n liexclv forma maacutes sencilla es hacer q oacutebley~lick~ ~obr~ el fo rrD ulano o sobre e l objeto al cual quiera incluir c~digd
I
Proyecto1 (Pro [3 middot For rm ario s
iexcl El F m (Forml
FINDE8 9
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 3 Fundamentos de rogra acioacuten para Vi al asic
Estructuras de Coacutedigo El coacutedigo que escriba en un proyecto de Visual Basic apareceraacute siempre en un moacutedulo
Un moacutedulo es un archivo de proyecto pudJenao s~ r un moacutedulo de formulario de clase o de caraacutecter general como vimos en el capiacutetulo anterior
En cada moacutedulo el coacutedi go se divide en dos secciones dec la aclones y procedim ientos
Los procedimientos son unidades de coacutedigo como pequentildeosproqrarnas escritos para realizar funciones determinadas con un prqpoacutesito bien definido
En cua lquier moacutedulo el preqrarnador dispone de u~a seccioacuten ~spec i a l llamada general en las q e se situacutean las d eacutec larac iacuteones y en la que se puede incluir otros procedimientos creados por el programador
En el apartado declaraciones se puede i n~roduc i r las consta ntes variables y tipo de datos que necesite en su aplicacioacuten (Todos estos conceptos seraacuten tratados a lo largo del curso)
Los procedimientos pueden tener paraacutemetros especiiacuteicados entre pareacute ntesis que le permiten comunicar al procedimientp alguna iniacuteormacloacuteh que necesite o que sea el propio procedimiento quien devuelva alguacuten valor
En un moacutedulo de formulario el coacutedigo que se situacutea se refiere tanto a dicho formulario como al resto de objetos que esteacuten dib]Jjados en eacutel En este tipo de moacutedulos cabe
~~t _
destacar los proeed rnlent rs de everntildeo que se encargan de dar una resp esta programada a los ~VEntordms q~e ocurreacuten erj la aacuteWlicacioacuten iexcl
S has escrito coacutedigo para alguacuten proce diacutemiacuteento de ~ven to eacuteste aparece en negr ta en la lista de procedirnierntildec de la ventaha de codi go
El coacutedigo de caraacutecter generala que puede compartir en maacutes de un proyecto s situacutea en un moacutedulo Qeneral El coacutedigo que aparece en este tipo de moacutedulos no se relaciona con un objeto d~terrnj~age ~i~q qq~ ti~n~ cr~pter Qer~r~IEntoacute~ moacutedutop g~ne ra l es no se pueden incluacuteiacuter procedimientos as et-eacutentoeacuteomo enel caso deacute los moacutedurosde formularlo
Es onveniente a~adiacuter q0nienarios a l~pJiacuten~a~s de coacutedigq qu(3 ~sGriba~ gt de ~s ltl forma podraacutes ehtenJ] ~ r Ips RrOgrameacuteIacutes-eacuteIacute-LUacutelql)e h~ga tierJlPoacute quacutee 10$ escribiste Para antildea ir un
f ~ ~ middotP r laquo ~
comentario en una liacutenea se utiliza el caraacutecter I (apoacutestrofe)
FINDEiS 10
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Objetos n isual Basic Un objeto en Visual Basic se caracteriza por tres componentes propiedades meacutetodos y eventos
Las p ropiedades son aquellas caracteriacutesticas o atributos que permiten establecer el aspecto de un objeto como el color taniantildeo poslcl oacuten etc O el estado del mismo activo maximizado etc Existen propiedades que soacutelo est aacuten disponibles en tiempo de disentildeo y otras que soacutelo estaacuten disponibles en tiempo de ejecucioacuten
Los meacutetodos son pequentildeos p rogramas que actuacutean sobre un determinado objeto y que establecen su comportamiento Asiacute un objeto puede moverse ocultarse e c Puedes utilizar cualquier meacutetodo queacutetorrne parte del objeto ~
Los eventos son las situaciones que se produceny que nos interesan identificar para esta lecer alguacuten tipo de de respuesta porparte del objeto Asiacute puedes hacer click sobre un determinado objeto creando de esta forma un evento reconocible por el objeto Que
1 r ~ d iexclsuceda algo o no como resmuesta a este ~ve n to dependera daque hayas programado alguna acc ioacuten en el correspondiente procedimiento de evento
Es ablecer propiedades Cuando insertas objetos en un ormulario tienes que establecer algunas propiedades que presenta Las propiedades son aquellas caracteriacutesticas propias del objeto que hacen que se distingan de otro objeto
En una aplicacioacuten Windows podemos distinguir diversos tipos de ventanas aunque lo nor al es identificar una ventana inicial que se puede maximizar O minimizar y uno o maacutes cuadros de iaacutelogo cuyo tamantildeo sDele ser fijo Slnernb aacuterqoj debes darte cuenta que las barras de ~ ergll)l i en ~~ s tatn b j ~n son v~ ntana ~fde unordfordfplicacioacuten
Normalmente la ventana lnicial ode arfordf(lqueiexclseraacute la que presente el menuacute principal ~ ~ ~~ iexcl y bull y
for ado por menuacutes desplegaacutebles en uno o maacutes deacute un nivel El resto de v ntanas no deberiacutean contener menuacutes desplegables aunque puede darse el caso
Algunas propiedades de los formularios que se pueden establecer en tiempo de disentildeo son ~
BorderSy1le Establece el estilo del borde del formulario
Captiori (Tex6H Eistqbleacutece eJ teacutext9 que apareceacute eilla liqrra de tiacutetulo del formUlario - r~ e l
Contra Box Permite mostrar o no el menuacute de control de las ventanas de Windows
FINDES 11
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Enab led Establece si el formulario puede responder o no a los eventos que generes
Font Establece las caracteriacutesticas de los objetos de texto que se situacuteen en el formulario
lean Cambia el icono que representa el formulario
Left Top Height Width Establecen la posicioacuten del formulario en la pantalla asiacute como las dimensiones
MaxButton y MinButton Establece si se podraacute maximizar o minimizar el formulario
MousePointer Modl icar el puntero del ratoacuten
Vis bl e Establece si el formulario se mostraraacute visible en tiempo de ejecucioacuten iexcl ~
Wlndow State Establ ece el modo ~ n que se carga inicialmente el form ulario normal maximizado o minimizado
To as esta propiedades estaacuten dlspontbles en tiempo de di se~o traveacutes de la ventana de propiedades
En tiempo de ejecucioacuten se puede cambiar o consultar el valor de algunas propiedades que soacutelo tienen sentido en el tiempo ded eacutesarrouumlo
ombreObjetoNombrePropiedad
FINDES 12
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Convenciones para nombrar bje~os de isual Basic [OBJETO OBJETO ESPANOL iForm middot middot-_middot_middot_- _- iFOrmuacutelariUuml--=------shyI _
iEh ec kB o~----middot--- -------ICasiexcliexcl ia-de middot~e-rifiexclcac i oacute n
iexclComboBox --- ----iexclCuadro com b i~~domiddot
I Datat~-~d--ombobo--- iacuteC ~ad o ombinado enlazado a datos idiexclc------shy[Command Button [Botoacuten de comando - -- - _ crridmiddot ---- shybull I
iexclData fContr()1de datos - -- - ---middot---- -rJatmiddot---shy1____ _- _ ___ ----- I
[Oirsctory list box [Cuadro lista de directorios r=-- - - -_ _- ~---
D rive List Box iexclCuadro lista de unidades ----- shyiexclFile List Box --- -middot-~iCuiexcld r~ Iista~de middot~--~h ivo S middot middot-_ -~_middot middotmiddotffiT middot-- shy __~ A bullbull - ~_iexcl ~_
Frame iexclMarco iexclfrm GrieacuteJ middotRejilla middot-- middot --W~r--middot-middot middot
iOata-bound grid 1 -middot- iexclR~jiexcliexcl imiddotamiddot middote n l a7ada a dat ll~ middot_ dbg
iexclHorizontal scrollbatiacute --rBaiexclr~de des l iamiddot~ a~omiddotiexcloriexcl~o~t8X -_ r[h-s-b-- shy~ ~ iexcl__ alt- _ AAA _ 0_ ~~ ~ __ _ ~
iexclImage iexclImagen [img t 1 - -__ middotNO ~~~bull bull u ~ _ _ ~~ __
f~lconta i ne r middot -~~o r OLE -i =~iexcl iP ictureBox Cuadro de imagen lpic ~
~~~ox m----~to 9 [VertlCalscroilbar iexclBarra de desplazamIento vertical middotmiddot_middotmiddotlt_middotmiddot vsb -
~M
_ ---__-shy 1
------------------I
I
FINDES
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizar Meacutetodos Una vez se ha establecido la parte estructural del formulario se pasa a programar el comportam iento que debe seguir de forma que cumpla con el objetivo para el que desees crearlo utilizando los meacutetodos
Un meacutetodo es un componente maacutes del objeto que puede ser utilizado directamente Para ello debes llamar al meacutetodo e Jndicarle sobre queacute objeto deseas aplicarlo que deberaacute admitirlo
La sintaxis en este caso debe ser NombreObOet ooNombreMetodo[par1 0 arn] donde la lista de paraacutemetros [par1 parn] es opcional decada meacutetodo
Un ejemplo es Si quleres mostrar un form Ulario llamado fnnPrimero la sintaxis Seraacute
frmPr im ero Show 1 El valor 1 nos indica que apareceraacute de forma modal y si el Valor es O apareceraacute de forma no modal
Entender los Eventos El con junto de eventos estaacute predefinido en Viacutesual Basic por lo cual no puedes crear un nuevo evento para los objetos lt
I conjunto de eventos reconocibles por un objeto estaacute ligado con los procedimientos de evento Estos procedimientos son unidades de coacutedigo que le perrniten especificar la
bull bull ~ 1I1t1
respuesta que debe dar uh objeto antildete la ocurrencia de un evento que puede recon ocer
La def inicioacuten del pnoced irniento d~ un ev~to tiene la sigu[en te forma Pr ivate Sub NombreObjetoacuteNombreEvEmtd([Lisectta de piftaacutemetrds]) Instrucciones End Sub
FINDES 14
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Elaboracioacuten de Menuacutes
E ed itor de menuacutes Al usar menuacutes se evita ocupar mucho espacio en las ventanas ya que estos soacutelo aparecen cuando se despliegan expliacutecitamente Ademaacutes se pueden crear hasta cinco niveles de menuacutes por lo que el nuacutemero de comandos y posibilidades es suficientemente amplio
En Visual Basic se trabajo con el editor de menuacutes para crear establecer propiedades y modificar los menuacutes Para acceder a eacutel basta con pulsar elsiguiente botoacuten en la barra de herramientas
Este botoacuten soacutelo estaraacute activo cuando est eacuteaacuteblerto eltormutarlolya que el menuacute siempre estaacute ~ saciado con un determinado formulario
El editor de menuacutes presenta las siguientespropiedades que se pueden aplicar sobre los menuacutes
Capt ion (Texto) Repres~ ri t a es texto qLJe apareceraacute en el menuacute
Name Es el nombre del control Se puede anteponer el prefijo amp maacutes el texto del tiacutetulo del menuacute
Checked Establece si debe a p ~ r~cer una marca de verificacioacuten a la izquierda del texto del objeto del menuacute La marca la puedes utilizar cuando deseas informar de la opcioacuten que estaacute activada en un momento determinado
Enab led Indica si el objeto podraacute recibir eventos del usuario Si tiene el valor False el elemento apareceraacute atenuado en el menuacute
Vis ib le Indica si el objeto debernostrarse o no si se establece estevalor a False los elementos situados a la derecha ocupan el lugar del elemento no vis ible
~) ~
WlndowsList Establece el valor que determina si un objeto de menuacute mantiene una lista de las ventanas MDImiddotsecundarias del tormularloacute actual
Elementos de Menuacute Utilizando los botones eje sangriacutea se puede determinar el nivel del 90jeacutetb hi enDqUe quumlieras stl~cGibnaacute d Asf los tftulos de menuacute se sifuumlan en el nivel sJp~rtor mo traacutendose en la lista inferior del editor de menuacutes lo maacute a la izquierda posible
En muchas aplicaciones se pueden ver unas barras rizontales en los menuacutes desplegables que realizan
la funcioacuten de dividir en secciones dichos menuacutes Este elem nto es conocido como un separador y sirve para separar aquellos comandos del menuacute que tengan
n motivo en comuacuten FINDES
fIfgy iacute _--~- _ _J
~lltl [0 shy middotmiddot- _ (0-bull-3 - C~eacuted iexcl ~~ - ~b1 = r ~middoth~t
15
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Para crear un separador basta con introducir un guioacuten (-) en la propiedad Caption No se puede crear un elemento en un nivel inferior inmediatamente despueacutes de un separador es decir no puedes tener como tiacutetulo de menuacute un separador
Teclas de Meacutetodo Abreviado Al introducir el caraacutecter amp el menuacute estaacute creando una tecla de acceso a dicho objeto Esta tecla se representa subraya daen el texto de menuacute y representa la tecla d I teclado que el usuario puede pulsar para ejecutar la accioacuten Dich a tecla se corresp onde con la letra que sigue al caracter amp en la propiedad Caption del objeacuteto menuacute
Si s rata de un tiacutetulo de menuacute tienes que usar la tecla de acceso en combinacloacuten con la tecla [Alt] Una vez abierto un tituloacute qe menuacute y despleqado sus elementos para acceder raacutepidamente a uno de ellos puedes usar la tecla de acceso directamente
Tenes que tener cuidado en no utilizar las mismas teclas de acceso para elementos de u mi mo nivel de menuacute yaque entonces no funcionaraacuten
El ditor de menuacute tambieacuten admite la incorporacioacuten de teclas d e meacutetodo abreviado Las abreviaturas del menuacute son combinaciones de teclas que se pueden utili a l n lugar de elegir el elemento del menucorrespondiente
ara crear una tecla de meacutetodo abreviado tienes que utilizar la propiedad Shortcut a la que puedes acceder al crear el menuacute desde el editor de menuacutes
Eventos de l Menuacute Cuando en tiempo de disentildeo seleccionamos la opcioacuten de menuacute de un formularlo que estamos creando Visual Basic muestra el procedimiento de evento click de dicho elemento del menuacute
En el caso del tiacutetulo del menuacute el prccediacuternlento click tiene con16 accioacuten predeterminada la de mostrar iacuteosetement os de (nenuacute del nivel inferior por leiacute que no seraacute necesario tener que program ar esta accioacuten Esto tambieacuten sepuede apljea~j a Ist_element s de un menuacute que son a su vez tiacutetulos de submenuacutes
En casi todos los casos tienes que utilizar una operen del menuacute para descargar el formulario d para finalizar la aplicaci oacuten] ~ p QP9iacuteoacuten qe te~tq s - l i r ~uele ser el maacutes apropiado ~
La instruccioacuten Unload descarga de memoria el [ormularioque se especifique Se uedeliexclusar d~ v ri~s f9rn1as QO riexcl ejemplo ~s i e~ta ~ds dentroiexcl deup Form lIam do trmconsutta poacutedremoacutes 1salirmiddot deacute eacutel de dos formas Una es UnloaH e o Unload frmconsulta
FINDES 16
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizacioacuten de uadros de Diaacutelogo
La mayoriacutea de las aplicaciones Windows hacen uso de [os cuadros de d iaacutelogo para establecer las opciones o introducir informacioacuten que necesitan para realizar una accioacuten indicada por el usuario Otro uso posible de los cuadros de diaacutelogo es presentar informacioacuten al usuario
Los cuadros de diaacutelogo se caracterizan por ser modales -y no permitir poder cambiar el tama- o de la ventana ademaacute sno deberaacuten tener una barra de menuacutes despleg ables
Cuadros de Mensaje ( sgbox)
Las cajas de mensajes o Message Box tienen unq funcioacuten clara que es la de mostrar una determinada informacioacuten aviso o prequnta para que el usuario tenga conocimiento de ella y actuacutee
Sintaxis La sintaxis completa de la funcioacuten Msg ox es
sgBox(mensaje[botones][t itulo] [archivoAyuda] [contexto])
MsgBox(prompt[bu~tonsiiexcl[titl e])
Descr peacuteiacuteon I1 Parterompt Req u~rido Expresiqn de cadena que representa el ~p ro rriacute pJ en el cuadro
de di~logo La longitud maacutexima de-promptesdeaprbxirrradamente 1024 caracteres seguacuten el ancho de los caracteres utilizados Si prompt consta de maacutes de una liacutenea puede separarlos utilizando un caraacutecter de retor o de carro (Chr(13)) o un ceacutetraacutecteriexcl de avance de liacutenea (Chr(10)) o na combinaci oacutende caracteres dE retcrn ode carro -ayance de liacutenea (Chr(13) y Ch r(i O)) ent ~e c~da liacuteheay la sigbiknte
buttons Opcional Expresioacuten numeacuterica que corresponde a la suma de los valores que especifican el nuacutemero y el middottipo de los botones que se pretenden
mostrar el e~tiIQ de icqnoacutetqJe ~e va a uacutetUiacute4al la identidad del botoacuten preacuted
1eterrnfhado y la moacutedalidad d eacutel cuadro deacute mensajes sise omite este
argumento el valor predeterminado para buttons es O ti le Opcional Expresioacuten de cadena que se muestra en la barra de iacutetulo del
cuadro de diaacutelogo Si se omite title en la barra de tiacutetulo se coloca el nomb re de la a licacioacuten
FINDE8 17
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
El paraacutemetro botones es de valor numeacuterico y ademaacutes de [os botones que aparecen en el cuadro de diaacutelogo tambieacuten puede indicar el icono que acompantildee al mensaje y el tipo de diaacutelogo modal que es
Cuando un cuadro de diaacutelogo es modal de aplicacioacuten tienes que cerrarlo ara interactuar con otra ventana de la misma aplicacioacuten Cuando es un cuadro de diaacutelogo modal del sistema todas las aplicacioneacutes uumleeacutest n ejecutaacutendose se suspenden hasta que el usuario responda al cuadro de diaacutelogo
Los valores que pueden tomar ef paraacutemetro botones son
VbM 59BoxRight VbMsgBox RtlReading
como la
FINDES 18
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 2 E orn d rabajo de Visual Bas ic
El Entorno de rabajo Visual Basic es un entorno de desarrollo disentildeado para la creacioacuten de aplicaciones para lo entornos de trabajo Microsoft Windows 95 98 Y NT Este lenguaje auacutena las posibilidades de-un lenglaje de alto nivel con las herramientas de disentildeo graacutefico lo cual nos da acceso a todas las funciones de los sistemas anteriormente citados Los elementos del entrono de desarrollo de Visual Basic son
Ba ra de Herramie tas ~O=- = =r 0= = - =~ ~+- ~F--~~~- _
Allthite t licic n er ereielt o fo rm~ lo R~pur~i~n Ej _ Jt~ r ~lj l1~ul t Di~g rm1 ti~rran ~n Compfeme l1 t~ ~olmiddot )~iacute1 __ __ _ _ ~ _ __~__ --- c_ bull_ bull_bullbullbull~_ - - --- - -_ - bull - - - - _ bull bull j-o _
11 ~ lt~ 1l ~ 1 - ~ I ~ ~ tB middot middotmiddot 6t 1l t i 00 fiexclj ~~ )OO iI ~ ~ ____ 0 _ bull bullbull _ bullbull_ _~ _ _ bullbullbull__ bullbullbullbull_bullbull _ _ bullbull_bull _ bullbull bull_ ____ _ _ ~~bull bull_ -
Permite un acceso raacutepido a os comandos maacutes utilizados ~
isentildeador de formularlos Es la ventana en la que se disentildearaacute la interfaz de la aplicacioacuten en ella se pueden agregar controles graacuteficos e imaacutegenes Cada formulario de una aplicacioacuten apareceraacute en su propia ventana
Cuadro de Herramientas En el cuadro de herramientas podemos encontrar un conjunto de herramientas que permiten insertar los objetos o controles en el formulario durante en tiempo
iexcl iexcl- (Tde disentildeo los objetos maacutes comunes son botones (command) etiqueta (Iabel) i sectr3 ~ cuadros de image n (Pieture) imaacutegenes (Image) -etc
Si hacemos doble click dQ[l el -ratoacuten sobre alguqo de ellos se insertaraacute l o ~ automaacuteticamente ~ n la-ventana deacutel formulario
1 _1 ~
ltOJ -c-
I ~ ~ Ventana de Prop iedades Los objetos tienen asociados unas propiedades que describen sus atributos valores compo rtamiento y apariencia del objeto
Las opciones d~ estav eacutenfanasoruacute ~ Lista desplegable de objetos Donde podremos visualizar
el nombre de los 0lgtjet9s de la aplicacioacuten ~ Lista de- propiedades del obleto- ~elec~iqna9d middoti Al
sejeccloriat un objeto con la lista desplsgableanteridrmeacuteniacutee mencionada nos apareceraacuten las propiedades del mismo ( ame visible appearence borderstyle etc) En la lista de propiedades se pueden modificar las propiedades del objeto Se puede visualizar de dos formar por categoriacutea o alfabeacuteticamente
FINDES 8
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ventana de Proyectos Contiene la lista de los archivos que forman parte de la aplicacioacuten Los tipos de archivos que se pueden incluir en un proyecto son
gt Arch ivo de Proyecto Es el que rsallza el ectot)seguimiento de todos los fich ero~ que forman parte de la aplicacioacuten Se guarda enlt un fichero con la extensioacutenVBP
gt Arch vo de Recursos Aquiacute se guardan cadenas de texto mapas de bits y demaacutes datos que puedan modificarse sin tener que volver a modificar el coacutedigo Se guardan con una extensioacuten RES o
gt Moacutedulo de Formularlo Contiene controles y coacuted igo soacutelo hay uno por middotformulario Se iexclguardan con extensioacuten FRM
gt Moacutedulo de Clase Son similares a los moacutedulos de formulario Se guardan con la extensi oacuten CLS
gt Moacutedulo Estaacutendar SOacutelo pueden contener coacutedigo T ienen una extensioacuten BAS
gt Cont ro les ActiveX Cont roles que se pueden antildeadir al cuadro de herramientas e lhclulrlos en un formulario
Ventana Ed itor e Coacutedigo En esta ventana es donde se incluyeacute el coacutedigode la aplicacioacuten Se crearaacute una ventana de coacuted igo para cada formulario o moacutedulo de la aplicacioacuten
Para tener acceso la ventana Qe ed i ci~n liexclv forma maacutes sencilla es hacer q oacutebley~lick~ ~obr~ el fo rrD ulano o sobre e l objeto al cual quiera incluir c~digd
I
Proyecto1 (Pro [3 middot For rm ario s
iexcl El F m (Forml
FINDE8 9
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 3 Fundamentos de rogra acioacuten para Vi al asic
Estructuras de Coacutedigo El coacutedigo que escriba en un proyecto de Visual Basic apareceraacute siempre en un moacutedulo
Un moacutedulo es un archivo de proyecto pudJenao s~ r un moacutedulo de formulario de clase o de caraacutecter general como vimos en el capiacutetulo anterior
En cada moacutedulo el coacutedi go se divide en dos secciones dec la aclones y procedim ientos
Los procedimientos son unidades de coacutedigo como pequentildeosproqrarnas escritos para realizar funciones determinadas con un prqpoacutesito bien definido
En cua lquier moacutedulo el preqrarnador dispone de u~a seccioacuten ~spec i a l llamada general en las q e se situacutean las d eacutec larac iacuteones y en la que se puede incluir otros procedimientos creados por el programador
En el apartado declaraciones se puede i n~roduc i r las consta ntes variables y tipo de datos que necesite en su aplicacioacuten (Todos estos conceptos seraacuten tratados a lo largo del curso)
Los procedimientos pueden tener paraacutemetros especiiacuteicados entre pareacute ntesis que le permiten comunicar al procedimientp alguna iniacuteormacloacuteh que necesite o que sea el propio procedimiento quien devuelva alguacuten valor
En un moacutedulo de formulario el coacutedigo que se situacutea se refiere tanto a dicho formulario como al resto de objetos que esteacuten dib]Jjados en eacutel En este tipo de moacutedulos cabe
~~t _
destacar los proeed rnlent rs de everntildeo que se encargan de dar una resp esta programada a los ~VEntordms q~e ocurreacuten erj la aacuteWlicacioacuten iexcl
S has escrito coacutedigo para alguacuten proce diacutemiacuteento de ~ven to eacuteste aparece en negr ta en la lista de procedirnierntildec de la ventaha de codi go
El coacutedigo de caraacutecter generala que puede compartir en maacutes de un proyecto s situacutea en un moacutedulo Qeneral El coacutedigo que aparece en este tipo de moacutedulos no se relaciona con un objeto d~terrnj~age ~i~q qq~ ti~n~ cr~pter Qer~r~IEntoacute~ moacutedutop g~ne ra l es no se pueden incluacuteiacuter procedimientos as et-eacutentoeacuteomo enel caso deacute los moacutedurosde formularlo
Es onveniente a~adiacuter q0nienarios a l~pJiacuten~a~s de coacutedigq qu(3 ~sGriba~ gt de ~s ltl forma podraacutes ehtenJ] ~ r Ips RrOgrameacuteIacutes-eacuteIacute-LUacutelql)e h~ga tierJlPoacute quacutee 10$ escribiste Para antildea ir un
f ~ ~ middotP r laquo ~
comentario en una liacutenea se utiliza el caraacutecter I (apoacutestrofe)
FINDEiS 10
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Objetos n isual Basic Un objeto en Visual Basic se caracteriza por tres componentes propiedades meacutetodos y eventos
Las p ropiedades son aquellas caracteriacutesticas o atributos que permiten establecer el aspecto de un objeto como el color taniantildeo poslcl oacuten etc O el estado del mismo activo maximizado etc Existen propiedades que soacutelo est aacuten disponibles en tiempo de disentildeo y otras que soacutelo estaacuten disponibles en tiempo de ejecucioacuten
Los meacutetodos son pequentildeos p rogramas que actuacutean sobre un determinado objeto y que establecen su comportamiento Asiacute un objeto puede moverse ocultarse e c Puedes utilizar cualquier meacutetodo queacutetorrne parte del objeto ~
Los eventos son las situaciones que se produceny que nos interesan identificar para esta lecer alguacuten tipo de de respuesta porparte del objeto Asiacute puedes hacer click sobre un determinado objeto creando de esta forma un evento reconocible por el objeto Que
1 r ~ d iexclsuceda algo o no como resmuesta a este ~ve n to dependera daque hayas programado alguna acc ioacuten en el correspondiente procedimiento de evento
Es ablecer propiedades Cuando insertas objetos en un ormulario tienes que establecer algunas propiedades que presenta Las propiedades son aquellas caracteriacutesticas propias del objeto que hacen que se distingan de otro objeto
En una aplicacioacuten Windows podemos distinguir diversos tipos de ventanas aunque lo nor al es identificar una ventana inicial que se puede maximizar O minimizar y uno o maacutes cuadros de iaacutelogo cuyo tamantildeo sDele ser fijo Slnernb aacuterqoj debes darte cuenta que las barras de ~ ergll)l i en ~~ s tatn b j ~n son v~ ntana ~fde unordfordfplicacioacuten
Normalmente la ventana lnicial ode arfordf(lqueiexclseraacute la que presente el menuacute principal ~ ~ ~~ iexcl y bull y
for ado por menuacutes desplegaacutebles en uno o maacutes deacute un nivel El resto de v ntanas no deberiacutean contener menuacutes desplegables aunque puede darse el caso
Algunas propiedades de los formularios que se pueden establecer en tiempo de disentildeo son ~
BorderSy1le Establece el estilo del borde del formulario
Captiori (Tex6H Eistqbleacutece eJ teacutext9 que apareceacute eilla liqrra de tiacutetulo del formUlario - r~ e l
Contra Box Permite mostrar o no el menuacute de control de las ventanas de Windows
FINDES 11
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Enab led Establece si el formulario puede responder o no a los eventos que generes
Font Establece las caracteriacutesticas de los objetos de texto que se situacuteen en el formulario
lean Cambia el icono que representa el formulario
Left Top Height Width Establecen la posicioacuten del formulario en la pantalla asiacute como las dimensiones
MaxButton y MinButton Establece si se podraacute maximizar o minimizar el formulario
MousePointer Modl icar el puntero del ratoacuten
Vis bl e Establece si el formulario se mostraraacute visible en tiempo de ejecucioacuten iexcl ~
Wlndow State Establ ece el modo ~ n que se carga inicialmente el form ulario normal maximizado o minimizado
To as esta propiedades estaacuten dlspontbles en tiempo de di se~o traveacutes de la ventana de propiedades
En tiempo de ejecucioacuten se puede cambiar o consultar el valor de algunas propiedades que soacutelo tienen sentido en el tiempo ded eacutesarrouumlo
ombreObjetoNombrePropiedad
FINDES 12
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Convenciones para nombrar bje~os de isual Basic [OBJETO OBJETO ESPANOL iForm middot middot-_middot_middot_- _- iFOrmuacutelariUuml--=------shyI _
iEh ec kB o~----middot--- -------ICasiexcliexcl ia-de middot~e-rifiexclcac i oacute n
iexclComboBox --- ----iexclCuadro com b i~~domiddot
I Datat~-~d--ombobo--- iacuteC ~ad o ombinado enlazado a datos idiexclc------shy[Command Button [Botoacuten de comando - -- - _ crridmiddot ---- shybull I
iexclData fContr()1de datos - -- - ---middot---- -rJatmiddot---shy1____ _- _ ___ ----- I
[Oirsctory list box [Cuadro lista de directorios r=-- - - -_ _- ~---
D rive List Box iexclCuadro lista de unidades ----- shyiexclFile List Box --- -middot-~iCuiexcld r~ Iista~de middot~--~h ivo S middot middot-_ -~_middot middotmiddotffiT middot-- shy __~ A bullbull - ~_iexcl ~_
Frame iexclMarco iexclfrm GrieacuteJ middotRejilla middot-- middot --W~r--middot-middot middot
iOata-bound grid 1 -middot- iexclR~jiexcliexcl imiddotamiddot middote n l a7ada a dat ll~ middot_ dbg
iexclHorizontal scrollbatiacute --rBaiexclr~de des l iamiddot~ a~omiddotiexcloriexcl~o~t8X -_ r[h-s-b-- shy~ ~ iexcl__ alt- _ AAA _ 0_ ~~ ~ __ _ ~
iexclImage iexclImagen [img t 1 - -__ middotNO ~~~bull bull u ~ _ _ ~~ __
f~lconta i ne r middot -~~o r OLE -i =~iexcl iP ictureBox Cuadro de imagen lpic ~
~~~ox m----~to 9 [VertlCalscroilbar iexclBarra de desplazamIento vertical middotmiddot_middotmiddotlt_middotmiddot vsb -
~M
_ ---__-shy 1
------------------I
I
FINDES
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizar Meacutetodos Una vez se ha establecido la parte estructural del formulario se pasa a programar el comportam iento que debe seguir de forma que cumpla con el objetivo para el que desees crearlo utilizando los meacutetodos
Un meacutetodo es un componente maacutes del objeto que puede ser utilizado directamente Para ello debes llamar al meacutetodo e Jndicarle sobre queacute objeto deseas aplicarlo que deberaacute admitirlo
La sintaxis en este caso debe ser NombreObOet ooNombreMetodo[par1 0 arn] donde la lista de paraacutemetros [par1 parn] es opcional decada meacutetodo
Un ejemplo es Si quleres mostrar un form Ulario llamado fnnPrimero la sintaxis Seraacute
frmPr im ero Show 1 El valor 1 nos indica que apareceraacute de forma modal y si el Valor es O apareceraacute de forma no modal
Entender los Eventos El con junto de eventos estaacute predefinido en Viacutesual Basic por lo cual no puedes crear un nuevo evento para los objetos lt
I conjunto de eventos reconocibles por un objeto estaacute ligado con los procedimientos de evento Estos procedimientos son unidades de coacutedigo que le perrniten especificar la
bull bull ~ 1I1t1
respuesta que debe dar uh objeto antildete la ocurrencia de un evento que puede recon ocer
La def inicioacuten del pnoced irniento d~ un ev~to tiene la sigu[en te forma Pr ivate Sub NombreObjetoacuteNombreEvEmtd([Lisectta de piftaacutemetrds]) Instrucciones End Sub
FINDES 14
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Elaboracioacuten de Menuacutes
E ed itor de menuacutes Al usar menuacutes se evita ocupar mucho espacio en las ventanas ya que estos soacutelo aparecen cuando se despliegan expliacutecitamente Ademaacutes se pueden crear hasta cinco niveles de menuacutes por lo que el nuacutemero de comandos y posibilidades es suficientemente amplio
En Visual Basic se trabajo con el editor de menuacutes para crear establecer propiedades y modificar los menuacutes Para acceder a eacutel basta con pulsar elsiguiente botoacuten en la barra de herramientas
Este botoacuten soacutelo estaraacute activo cuando est eacuteaacuteblerto eltormutarlolya que el menuacute siempre estaacute ~ saciado con un determinado formulario
El editor de menuacutes presenta las siguientespropiedades que se pueden aplicar sobre los menuacutes
Capt ion (Texto) Repres~ ri t a es texto qLJe apareceraacute en el menuacute
Name Es el nombre del control Se puede anteponer el prefijo amp maacutes el texto del tiacutetulo del menuacute
Checked Establece si debe a p ~ r~cer una marca de verificacioacuten a la izquierda del texto del objeto del menuacute La marca la puedes utilizar cuando deseas informar de la opcioacuten que estaacute activada en un momento determinado
Enab led Indica si el objeto podraacute recibir eventos del usuario Si tiene el valor False el elemento apareceraacute atenuado en el menuacute
Vis ib le Indica si el objeto debernostrarse o no si se establece estevalor a False los elementos situados a la derecha ocupan el lugar del elemento no vis ible
~) ~
WlndowsList Establece el valor que determina si un objeto de menuacute mantiene una lista de las ventanas MDImiddotsecundarias del tormularloacute actual
Elementos de Menuacute Utilizando los botones eje sangriacutea se puede determinar el nivel del 90jeacutetb hi enDqUe quumlieras stl~cGibnaacute d Asf los tftulos de menuacute se sifuumlan en el nivel sJp~rtor mo traacutendose en la lista inferior del editor de menuacutes lo maacute a la izquierda posible
En muchas aplicaciones se pueden ver unas barras rizontales en los menuacutes desplegables que realizan
la funcioacuten de dividir en secciones dichos menuacutes Este elem nto es conocido como un separador y sirve para separar aquellos comandos del menuacute que tengan
n motivo en comuacuten FINDES
fIfgy iacute _--~- _ _J
~lltl [0 shy middotmiddot- _ (0-bull-3 - C~eacuted iexcl ~~ - ~b1 = r ~middoth~t
15
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Para crear un separador basta con introducir un guioacuten (-) en la propiedad Caption No se puede crear un elemento en un nivel inferior inmediatamente despueacutes de un separador es decir no puedes tener como tiacutetulo de menuacute un separador
Teclas de Meacutetodo Abreviado Al introducir el caraacutecter amp el menuacute estaacute creando una tecla de acceso a dicho objeto Esta tecla se representa subraya daen el texto de menuacute y representa la tecla d I teclado que el usuario puede pulsar para ejecutar la accioacuten Dich a tecla se corresp onde con la letra que sigue al caracter amp en la propiedad Caption del objeacuteto menuacute
Si s rata de un tiacutetulo de menuacute tienes que usar la tecla de acceso en combinacloacuten con la tecla [Alt] Una vez abierto un tituloacute qe menuacute y despleqado sus elementos para acceder raacutepidamente a uno de ellos puedes usar la tecla de acceso directamente
Tenes que tener cuidado en no utilizar las mismas teclas de acceso para elementos de u mi mo nivel de menuacute yaque entonces no funcionaraacuten
El ditor de menuacute tambieacuten admite la incorporacioacuten de teclas d e meacutetodo abreviado Las abreviaturas del menuacute son combinaciones de teclas que se pueden utili a l n lugar de elegir el elemento del menucorrespondiente
ara crear una tecla de meacutetodo abreviado tienes que utilizar la propiedad Shortcut a la que puedes acceder al crear el menuacute desde el editor de menuacutes
Eventos de l Menuacute Cuando en tiempo de disentildeo seleccionamos la opcioacuten de menuacute de un formularlo que estamos creando Visual Basic muestra el procedimiento de evento click de dicho elemento del menuacute
En el caso del tiacutetulo del menuacute el prccediacuternlento click tiene con16 accioacuten predeterminada la de mostrar iacuteosetement os de (nenuacute del nivel inferior por leiacute que no seraacute necesario tener que program ar esta accioacuten Esto tambieacuten sepuede apljea~j a Ist_element s de un menuacute que son a su vez tiacutetulos de submenuacutes
En casi todos los casos tienes que utilizar una operen del menuacute para descargar el formulario d para finalizar la aplicaci oacuten] ~ p QP9iacuteoacuten qe te~tq s - l i r ~uele ser el maacutes apropiado ~
La instruccioacuten Unload descarga de memoria el [ormularioque se especifique Se uedeliexclusar d~ v ri~s f9rn1as QO riexcl ejemplo ~s i e~ta ~ds dentroiexcl deup Form lIam do trmconsutta poacutedremoacutes 1salirmiddot deacute eacutel de dos formas Una es UnloaH e o Unload frmconsulta
FINDES 16
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizacioacuten de uadros de Diaacutelogo
La mayoriacutea de las aplicaciones Windows hacen uso de [os cuadros de d iaacutelogo para establecer las opciones o introducir informacioacuten que necesitan para realizar una accioacuten indicada por el usuario Otro uso posible de los cuadros de diaacutelogo es presentar informacioacuten al usuario
Los cuadros de diaacutelogo se caracterizan por ser modales -y no permitir poder cambiar el tama- o de la ventana ademaacute sno deberaacuten tener una barra de menuacutes despleg ables
Cuadros de Mensaje ( sgbox)
Las cajas de mensajes o Message Box tienen unq funcioacuten clara que es la de mostrar una determinada informacioacuten aviso o prequnta para que el usuario tenga conocimiento de ella y actuacutee
Sintaxis La sintaxis completa de la funcioacuten Msg ox es
sgBox(mensaje[botones][t itulo] [archivoAyuda] [contexto])
MsgBox(prompt[bu~tonsiiexcl[titl e])
Descr peacuteiacuteon I1 Parterompt Req u~rido Expresiqn de cadena que representa el ~p ro rriacute pJ en el cuadro
de di~logo La longitud maacutexima de-promptesdeaprbxirrradamente 1024 caracteres seguacuten el ancho de los caracteres utilizados Si prompt consta de maacutes de una liacutenea puede separarlos utilizando un caraacutecter de retor o de carro (Chr(13)) o un ceacutetraacutecteriexcl de avance de liacutenea (Chr(10)) o na combinaci oacutende caracteres dE retcrn ode carro -ayance de liacutenea (Chr(13) y Ch r(i O)) ent ~e c~da liacuteheay la sigbiknte
buttons Opcional Expresioacuten numeacuterica que corresponde a la suma de los valores que especifican el nuacutemero y el middottipo de los botones que se pretenden
mostrar el e~tiIQ de icqnoacutetqJe ~e va a uacutetUiacute4al la identidad del botoacuten preacuted
1eterrnfhado y la moacutedalidad d eacutel cuadro deacute mensajes sise omite este
argumento el valor predeterminado para buttons es O ti le Opcional Expresioacuten de cadena que se muestra en la barra de iacutetulo del
cuadro de diaacutelogo Si se omite title en la barra de tiacutetulo se coloca el nomb re de la a licacioacuten
FINDE8 17
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
El paraacutemetro botones es de valor numeacuterico y ademaacutes de [os botones que aparecen en el cuadro de diaacutelogo tambieacuten puede indicar el icono que acompantildee al mensaje y el tipo de diaacutelogo modal que es
Cuando un cuadro de diaacutelogo es modal de aplicacioacuten tienes que cerrarlo ara interactuar con otra ventana de la misma aplicacioacuten Cuando es un cuadro de diaacutelogo modal del sistema todas las aplicacioneacutes uumleeacutest n ejecutaacutendose se suspenden hasta que el usuario responda al cuadro de diaacutelogo
Los valores que pueden tomar ef paraacutemetro botones son
VbM 59BoxRight VbMsgBox RtlReading
como la
FINDES 18
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ventana de Proyectos Contiene la lista de los archivos que forman parte de la aplicacioacuten Los tipos de archivos que se pueden incluir en un proyecto son
gt Arch ivo de Proyecto Es el que rsallza el ectot)seguimiento de todos los fich ero~ que forman parte de la aplicacioacuten Se guarda enlt un fichero con la extensioacutenVBP
gt Arch vo de Recursos Aquiacute se guardan cadenas de texto mapas de bits y demaacutes datos que puedan modificarse sin tener que volver a modificar el coacutedigo Se guardan con una extensioacuten RES o
gt Moacutedulo de Formularlo Contiene controles y coacuted igo soacutelo hay uno por middotformulario Se iexclguardan con extensioacuten FRM
gt Moacutedulo de Clase Son similares a los moacutedulos de formulario Se guardan con la extensi oacuten CLS
gt Moacutedulo Estaacutendar SOacutelo pueden contener coacutedigo T ienen una extensioacuten BAS
gt Cont ro les ActiveX Cont roles que se pueden antildeadir al cuadro de herramientas e lhclulrlos en un formulario
Ventana Ed itor e Coacutedigo En esta ventana es donde se incluyeacute el coacutedigode la aplicacioacuten Se crearaacute una ventana de coacuted igo para cada formulario o moacutedulo de la aplicacioacuten
Para tener acceso la ventana Qe ed i ci~n liexclv forma maacutes sencilla es hacer q oacutebley~lick~ ~obr~ el fo rrD ulano o sobre e l objeto al cual quiera incluir c~digd
I
Proyecto1 (Pro [3 middot For rm ario s
iexcl El F m (Forml
FINDE8 9
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 3 Fundamentos de rogra acioacuten para Vi al asic
Estructuras de Coacutedigo El coacutedigo que escriba en un proyecto de Visual Basic apareceraacute siempre en un moacutedulo
Un moacutedulo es un archivo de proyecto pudJenao s~ r un moacutedulo de formulario de clase o de caraacutecter general como vimos en el capiacutetulo anterior
En cada moacutedulo el coacutedi go se divide en dos secciones dec la aclones y procedim ientos
Los procedimientos son unidades de coacutedigo como pequentildeosproqrarnas escritos para realizar funciones determinadas con un prqpoacutesito bien definido
En cua lquier moacutedulo el preqrarnador dispone de u~a seccioacuten ~spec i a l llamada general en las q e se situacutean las d eacutec larac iacuteones y en la que se puede incluir otros procedimientos creados por el programador
En el apartado declaraciones se puede i n~roduc i r las consta ntes variables y tipo de datos que necesite en su aplicacioacuten (Todos estos conceptos seraacuten tratados a lo largo del curso)
Los procedimientos pueden tener paraacutemetros especiiacuteicados entre pareacute ntesis que le permiten comunicar al procedimientp alguna iniacuteormacloacuteh que necesite o que sea el propio procedimiento quien devuelva alguacuten valor
En un moacutedulo de formulario el coacutedigo que se situacutea se refiere tanto a dicho formulario como al resto de objetos que esteacuten dib]Jjados en eacutel En este tipo de moacutedulos cabe
~~t _
destacar los proeed rnlent rs de everntildeo que se encargan de dar una resp esta programada a los ~VEntordms q~e ocurreacuten erj la aacuteWlicacioacuten iexcl
S has escrito coacutedigo para alguacuten proce diacutemiacuteento de ~ven to eacuteste aparece en negr ta en la lista de procedirnierntildec de la ventaha de codi go
El coacutedigo de caraacutecter generala que puede compartir en maacutes de un proyecto s situacutea en un moacutedulo Qeneral El coacutedigo que aparece en este tipo de moacutedulos no se relaciona con un objeto d~terrnj~age ~i~q qq~ ti~n~ cr~pter Qer~r~IEntoacute~ moacutedutop g~ne ra l es no se pueden incluacuteiacuter procedimientos as et-eacutentoeacuteomo enel caso deacute los moacutedurosde formularlo
Es onveniente a~adiacuter q0nienarios a l~pJiacuten~a~s de coacutedigq qu(3 ~sGriba~ gt de ~s ltl forma podraacutes ehtenJ] ~ r Ips RrOgrameacuteIacutes-eacuteIacute-LUacutelql)e h~ga tierJlPoacute quacutee 10$ escribiste Para antildea ir un
f ~ ~ middotP r laquo ~
comentario en una liacutenea se utiliza el caraacutecter I (apoacutestrofe)
FINDEiS 10
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Objetos n isual Basic Un objeto en Visual Basic se caracteriza por tres componentes propiedades meacutetodos y eventos
Las p ropiedades son aquellas caracteriacutesticas o atributos que permiten establecer el aspecto de un objeto como el color taniantildeo poslcl oacuten etc O el estado del mismo activo maximizado etc Existen propiedades que soacutelo est aacuten disponibles en tiempo de disentildeo y otras que soacutelo estaacuten disponibles en tiempo de ejecucioacuten
Los meacutetodos son pequentildeos p rogramas que actuacutean sobre un determinado objeto y que establecen su comportamiento Asiacute un objeto puede moverse ocultarse e c Puedes utilizar cualquier meacutetodo queacutetorrne parte del objeto ~
Los eventos son las situaciones que se produceny que nos interesan identificar para esta lecer alguacuten tipo de de respuesta porparte del objeto Asiacute puedes hacer click sobre un determinado objeto creando de esta forma un evento reconocible por el objeto Que
1 r ~ d iexclsuceda algo o no como resmuesta a este ~ve n to dependera daque hayas programado alguna acc ioacuten en el correspondiente procedimiento de evento
Es ablecer propiedades Cuando insertas objetos en un ormulario tienes que establecer algunas propiedades que presenta Las propiedades son aquellas caracteriacutesticas propias del objeto que hacen que se distingan de otro objeto
En una aplicacioacuten Windows podemos distinguir diversos tipos de ventanas aunque lo nor al es identificar una ventana inicial que se puede maximizar O minimizar y uno o maacutes cuadros de iaacutelogo cuyo tamantildeo sDele ser fijo Slnernb aacuterqoj debes darte cuenta que las barras de ~ ergll)l i en ~~ s tatn b j ~n son v~ ntana ~fde unordfordfplicacioacuten
Normalmente la ventana lnicial ode arfordf(lqueiexclseraacute la que presente el menuacute principal ~ ~ ~~ iexcl y bull y
for ado por menuacutes desplegaacutebles en uno o maacutes deacute un nivel El resto de v ntanas no deberiacutean contener menuacutes desplegables aunque puede darse el caso
Algunas propiedades de los formularios que se pueden establecer en tiempo de disentildeo son ~
BorderSy1le Establece el estilo del borde del formulario
Captiori (Tex6H Eistqbleacutece eJ teacutext9 que apareceacute eilla liqrra de tiacutetulo del formUlario - r~ e l
Contra Box Permite mostrar o no el menuacute de control de las ventanas de Windows
FINDES 11
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Enab led Establece si el formulario puede responder o no a los eventos que generes
Font Establece las caracteriacutesticas de los objetos de texto que se situacuteen en el formulario
lean Cambia el icono que representa el formulario
Left Top Height Width Establecen la posicioacuten del formulario en la pantalla asiacute como las dimensiones
MaxButton y MinButton Establece si se podraacute maximizar o minimizar el formulario
MousePointer Modl icar el puntero del ratoacuten
Vis bl e Establece si el formulario se mostraraacute visible en tiempo de ejecucioacuten iexcl ~
Wlndow State Establ ece el modo ~ n que se carga inicialmente el form ulario normal maximizado o minimizado
To as esta propiedades estaacuten dlspontbles en tiempo de di se~o traveacutes de la ventana de propiedades
En tiempo de ejecucioacuten se puede cambiar o consultar el valor de algunas propiedades que soacutelo tienen sentido en el tiempo ded eacutesarrouumlo
ombreObjetoNombrePropiedad
FINDES 12
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Convenciones para nombrar bje~os de isual Basic [OBJETO OBJETO ESPANOL iForm middot middot-_middot_middot_- _- iFOrmuacutelariUuml--=------shyI _
iEh ec kB o~----middot--- -------ICasiexcliexcl ia-de middot~e-rifiexclcac i oacute n
iexclComboBox --- ----iexclCuadro com b i~~domiddot
I Datat~-~d--ombobo--- iacuteC ~ad o ombinado enlazado a datos idiexclc------shy[Command Button [Botoacuten de comando - -- - _ crridmiddot ---- shybull I
iexclData fContr()1de datos - -- - ---middot---- -rJatmiddot---shy1____ _- _ ___ ----- I
[Oirsctory list box [Cuadro lista de directorios r=-- - - -_ _- ~---
D rive List Box iexclCuadro lista de unidades ----- shyiexclFile List Box --- -middot-~iCuiexcld r~ Iista~de middot~--~h ivo S middot middot-_ -~_middot middotmiddotffiT middot-- shy __~ A bullbull - ~_iexcl ~_
Frame iexclMarco iexclfrm GrieacuteJ middotRejilla middot-- middot --W~r--middot-middot middot
iOata-bound grid 1 -middot- iexclR~jiexcliexcl imiddotamiddot middote n l a7ada a dat ll~ middot_ dbg
iexclHorizontal scrollbatiacute --rBaiexclr~de des l iamiddot~ a~omiddotiexcloriexcl~o~t8X -_ r[h-s-b-- shy~ ~ iexcl__ alt- _ AAA _ 0_ ~~ ~ __ _ ~
iexclImage iexclImagen [img t 1 - -__ middotNO ~~~bull bull u ~ _ _ ~~ __
f~lconta i ne r middot -~~o r OLE -i =~iexcl iP ictureBox Cuadro de imagen lpic ~
~~~ox m----~to 9 [VertlCalscroilbar iexclBarra de desplazamIento vertical middotmiddot_middotmiddotlt_middotmiddot vsb -
~M
_ ---__-shy 1
------------------I
I
FINDES
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizar Meacutetodos Una vez se ha establecido la parte estructural del formulario se pasa a programar el comportam iento que debe seguir de forma que cumpla con el objetivo para el que desees crearlo utilizando los meacutetodos
Un meacutetodo es un componente maacutes del objeto que puede ser utilizado directamente Para ello debes llamar al meacutetodo e Jndicarle sobre queacute objeto deseas aplicarlo que deberaacute admitirlo
La sintaxis en este caso debe ser NombreObOet ooNombreMetodo[par1 0 arn] donde la lista de paraacutemetros [par1 parn] es opcional decada meacutetodo
Un ejemplo es Si quleres mostrar un form Ulario llamado fnnPrimero la sintaxis Seraacute
frmPr im ero Show 1 El valor 1 nos indica que apareceraacute de forma modal y si el Valor es O apareceraacute de forma no modal
Entender los Eventos El con junto de eventos estaacute predefinido en Viacutesual Basic por lo cual no puedes crear un nuevo evento para los objetos lt
I conjunto de eventos reconocibles por un objeto estaacute ligado con los procedimientos de evento Estos procedimientos son unidades de coacutedigo que le perrniten especificar la
bull bull ~ 1I1t1
respuesta que debe dar uh objeto antildete la ocurrencia de un evento que puede recon ocer
La def inicioacuten del pnoced irniento d~ un ev~to tiene la sigu[en te forma Pr ivate Sub NombreObjetoacuteNombreEvEmtd([Lisectta de piftaacutemetrds]) Instrucciones End Sub
FINDES 14
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Elaboracioacuten de Menuacutes
E ed itor de menuacutes Al usar menuacutes se evita ocupar mucho espacio en las ventanas ya que estos soacutelo aparecen cuando se despliegan expliacutecitamente Ademaacutes se pueden crear hasta cinco niveles de menuacutes por lo que el nuacutemero de comandos y posibilidades es suficientemente amplio
En Visual Basic se trabajo con el editor de menuacutes para crear establecer propiedades y modificar los menuacutes Para acceder a eacutel basta con pulsar elsiguiente botoacuten en la barra de herramientas
Este botoacuten soacutelo estaraacute activo cuando est eacuteaacuteblerto eltormutarlolya que el menuacute siempre estaacute ~ saciado con un determinado formulario
El editor de menuacutes presenta las siguientespropiedades que se pueden aplicar sobre los menuacutes
Capt ion (Texto) Repres~ ri t a es texto qLJe apareceraacute en el menuacute
Name Es el nombre del control Se puede anteponer el prefijo amp maacutes el texto del tiacutetulo del menuacute
Checked Establece si debe a p ~ r~cer una marca de verificacioacuten a la izquierda del texto del objeto del menuacute La marca la puedes utilizar cuando deseas informar de la opcioacuten que estaacute activada en un momento determinado
Enab led Indica si el objeto podraacute recibir eventos del usuario Si tiene el valor False el elemento apareceraacute atenuado en el menuacute
Vis ib le Indica si el objeto debernostrarse o no si se establece estevalor a False los elementos situados a la derecha ocupan el lugar del elemento no vis ible
~) ~
WlndowsList Establece el valor que determina si un objeto de menuacute mantiene una lista de las ventanas MDImiddotsecundarias del tormularloacute actual
Elementos de Menuacute Utilizando los botones eje sangriacutea se puede determinar el nivel del 90jeacutetb hi enDqUe quumlieras stl~cGibnaacute d Asf los tftulos de menuacute se sifuumlan en el nivel sJp~rtor mo traacutendose en la lista inferior del editor de menuacutes lo maacute a la izquierda posible
En muchas aplicaciones se pueden ver unas barras rizontales en los menuacutes desplegables que realizan
la funcioacuten de dividir en secciones dichos menuacutes Este elem nto es conocido como un separador y sirve para separar aquellos comandos del menuacute que tengan
n motivo en comuacuten FINDES
fIfgy iacute _--~- _ _J
~lltl [0 shy middotmiddot- _ (0-bull-3 - C~eacuted iexcl ~~ - ~b1 = r ~middoth~t
15
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Para crear un separador basta con introducir un guioacuten (-) en la propiedad Caption No se puede crear un elemento en un nivel inferior inmediatamente despueacutes de un separador es decir no puedes tener como tiacutetulo de menuacute un separador
Teclas de Meacutetodo Abreviado Al introducir el caraacutecter amp el menuacute estaacute creando una tecla de acceso a dicho objeto Esta tecla se representa subraya daen el texto de menuacute y representa la tecla d I teclado que el usuario puede pulsar para ejecutar la accioacuten Dich a tecla se corresp onde con la letra que sigue al caracter amp en la propiedad Caption del objeacuteto menuacute
Si s rata de un tiacutetulo de menuacute tienes que usar la tecla de acceso en combinacloacuten con la tecla [Alt] Una vez abierto un tituloacute qe menuacute y despleqado sus elementos para acceder raacutepidamente a uno de ellos puedes usar la tecla de acceso directamente
Tenes que tener cuidado en no utilizar las mismas teclas de acceso para elementos de u mi mo nivel de menuacute yaque entonces no funcionaraacuten
El ditor de menuacute tambieacuten admite la incorporacioacuten de teclas d e meacutetodo abreviado Las abreviaturas del menuacute son combinaciones de teclas que se pueden utili a l n lugar de elegir el elemento del menucorrespondiente
ara crear una tecla de meacutetodo abreviado tienes que utilizar la propiedad Shortcut a la que puedes acceder al crear el menuacute desde el editor de menuacutes
Eventos de l Menuacute Cuando en tiempo de disentildeo seleccionamos la opcioacuten de menuacute de un formularlo que estamos creando Visual Basic muestra el procedimiento de evento click de dicho elemento del menuacute
En el caso del tiacutetulo del menuacute el prccediacuternlento click tiene con16 accioacuten predeterminada la de mostrar iacuteosetement os de (nenuacute del nivel inferior por leiacute que no seraacute necesario tener que program ar esta accioacuten Esto tambieacuten sepuede apljea~j a Ist_element s de un menuacute que son a su vez tiacutetulos de submenuacutes
En casi todos los casos tienes que utilizar una operen del menuacute para descargar el formulario d para finalizar la aplicaci oacuten] ~ p QP9iacuteoacuten qe te~tq s - l i r ~uele ser el maacutes apropiado ~
La instruccioacuten Unload descarga de memoria el [ormularioque se especifique Se uedeliexclusar d~ v ri~s f9rn1as QO riexcl ejemplo ~s i e~ta ~ds dentroiexcl deup Form lIam do trmconsutta poacutedremoacutes 1salirmiddot deacute eacutel de dos formas Una es UnloaH e o Unload frmconsulta
FINDES 16
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizacioacuten de uadros de Diaacutelogo
La mayoriacutea de las aplicaciones Windows hacen uso de [os cuadros de d iaacutelogo para establecer las opciones o introducir informacioacuten que necesitan para realizar una accioacuten indicada por el usuario Otro uso posible de los cuadros de diaacutelogo es presentar informacioacuten al usuario
Los cuadros de diaacutelogo se caracterizan por ser modales -y no permitir poder cambiar el tama- o de la ventana ademaacute sno deberaacuten tener una barra de menuacutes despleg ables
Cuadros de Mensaje ( sgbox)
Las cajas de mensajes o Message Box tienen unq funcioacuten clara que es la de mostrar una determinada informacioacuten aviso o prequnta para que el usuario tenga conocimiento de ella y actuacutee
Sintaxis La sintaxis completa de la funcioacuten Msg ox es
sgBox(mensaje[botones][t itulo] [archivoAyuda] [contexto])
MsgBox(prompt[bu~tonsiiexcl[titl e])
Descr peacuteiacuteon I1 Parterompt Req u~rido Expresiqn de cadena que representa el ~p ro rriacute pJ en el cuadro
de di~logo La longitud maacutexima de-promptesdeaprbxirrradamente 1024 caracteres seguacuten el ancho de los caracteres utilizados Si prompt consta de maacutes de una liacutenea puede separarlos utilizando un caraacutecter de retor o de carro (Chr(13)) o un ceacutetraacutecteriexcl de avance de liacutenea (Chr(10)) o na combinaci oacutende caracteres dE retcrn ode carro -ayance de liacutenea (Chr(13) y Ch r(i O)) ent ~e c~da liacuteheay la sigbiknte
buttons Opcional Expresioacuten numeacuterica que corresponde a la suma de los valores que especifican el nuacutemero y el middottipo de los botones que se pretenden
mostrar el e~tiIQ de icqnoacutetqJe ~e va a uacutetUiacute4al la identidad del botoacuten preacuted
1eterrnfhado y la moacutedalidad d eacutel cuadro deacute mensajes sise omite este
argumento el valor predeterminado para buttons es O ti le Opcional Expresioacuten de cadena que se muestra en la barra de iacutetulo del
cuadro de diaacutelogo Si se omite title en la barra de tiacutetulo se coloca el nomb re de la a licacioacuten
FINDE8 17
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
El paraacutemetro botones es de valor numeacuterico y ademaacutes de [os botones que aparecen en el cuadro de diaacutelogo tambieacuten puede indicar el icono que acompantildee al mensaje y el tipo de diaacutelogo modal que es
Cuando un cuadro de diaacutelogo es modal de aplicacioacuten tienes que cerrarlo ara interactuar con otra ventana de la misma aplicacioacuten Cuando es un cuadro de diaacutelogo modal del sistema todas las aplicacioneacutes uumleeacutest n ejecutaacutendose se suspenden hasta que el usuario responda al cuadro de diaacutelogo
Los valores que pueden tomar ef paraacutemetro botones son
VbM 59BoxRight VbMsgBox RtlReading
como la
FINDES 18
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 3 Fundamentos de rogra acioacuten para Vi al asic
Estructuras de Coacutedigo El coacutedigo que escriba en un proyecto de Visual Basic apareceraacute siempre en un moacutedulo
Un moacutedulo es un archivo de proyecto pudJenao s~ r un moacutedulo de formulario de clase o de caraacutecter general como vimos en el capiacutetulo anterior
En cada moacutedulo el coacutedi go se divide en dos secciones dec la aclones y procedim ientos
Los procedimientos son unidades de coacutedigo como pequentildeosproqrarnas escritos para realizar funciones determinadas con un prqpoacutesito bien definido
En cua lquier moacutedulo el preqrarnador dispone de u~a seccioacuten ~spec i a l llamada general en las q e se situacutean las d eacutec larac iacuteones y en la que se puede incluir otros procedimientos creados por el programador
En el apartado declaraciones se puede i n~roduc i r las consta ntes variables y tipo de datos que necesite en su aplicacioacuten (Todos estos conceptos seraacuten tratados a lo largo del curso)
Los procedimientos pueden tener paraacutemetros especiiacuteicados entre pareacute ntesis que le permiten comunicar al procedimientp alguna iniacuteormacloacuteh que necesite o que sea el propio procedimiento quien devuelva alguacuten valor
En un moacutedulo de formulario el coacutedigo que se situacutea se refiere tanto a dicho formulario como al resto de objetos que esteacuten dib]Jjados en eacutel En este tipo de moacutedulos cabe
~~t _
destacar los proeed rnlent rs de everntildeo que se encargan de dar una resp esta programada a los ~VEntordms q~e ocurreacuten erj la aacuteWlicacioacuten iexcl
S has escrito coacutedigo para alguacuten proce diacutemiacuteento de ~ven to eacuteste aparece en negr ta en la lista de procedirnierntildec de la ventaha de codi go
El coacutedigo de caraacutecter generala que puede compartir en maacutes de un proyecto s situacutea en un moacutedulo Qeneral El coacutedigo que aparece en este tipo de moacutedulos no se relaciona con un objeto d~terrnj~age ~i~q qq~ ti~n~ cr~pter Qer~r~IEntoacute~ moacutedutop g~ne ra l es no se pueden incluacuteiacuter procedimientos as et-eacutentoeacuteomo enel caso deacute los moacutedurosde formularlo
Es onveniente a~adiacuter q0nienarios a l~pJiacuten~a~s de coacutedigq qu(3 ~sGriba~ gt de ~s ltl forma podraacutes ehtenJ] ~ r Ips RrOgrameacuteIacutes-eacuteIacute-LUacutelql)e h~ga tierJlPoacute quacutee 10$ escribiste Para antildea ir un
f ~ ~ middotP r laquo ~
comentario en una liacutenea se utiliza el caraacutecter I (apoacutestrofe)
FINDEiS 10
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Objetos n isual Basic Un objeto en Visual Basic se caracteriza por tres componentes propiedades meacutetodos y eventos
Las p ropiedades son aquellas caracteriacutesticas o atributos que permiten establecer el aspecto de un objeto como el color taniantildeo poslcl oacuten etc O el estado del mismo activo maximizado etc Existen propiedades que soacutelo est aacuten disponibles en tiempo de disentildeo y otras que soacutelo estaacuten disponibles en tiempo de ejecucioacuten
Los meacutetodos son pequentildeos p rogramas que actuacutean sobre un determinado objeto y que establecen su comportamiento Asiacute un objeto puede moverse ocultarse e c Puedes utilizar cualquier meacutetodo queacutetorrne parte del objeto ~
Los eventos son las situaciones que se produceny que nos interesan identificar para esta lecer alguacuten tipo de de respuesta porparte del objeto Asiacute puedes hacer click sobre un determinado objeto creando de esta forma un evento reconocible por el objeto Que
1 r ~ d iexclsuceda algo o no como resmuesta a este ~ve n to dependera daque hayas programado alguna acc ioacuten en el correspondiente procedimiento de evento
Es ablecer propiedades Cuando insertas objetos en un ormulario tienes que establecer algunas propiedades que presenta Las propiedades son aquellas caracteriacutesticas propias del objeto que hacen que se distingan de otro objeto
En una aplicacioacuten Windows podemos distinguir diversos tipos de ventanas aunque lo nor al es identificar una ventana inicial que se puede maximizar O minimizar y uno o maacutes cuadros de iaacutelogo cuyo tamantildeo sDele ser fijo Slnernb aacuterqoj debes darte cuenta que las barras de ~ ergll)l i en ~~ s tatn b j ~n son v~ ntana ~fde unordfordfplicacioacuten
Normalmente la ventana lnicial ode arfordf(lqueiexclseraacute la que presente el menuacute principal ~ ~ ~~ iexcl y bull y
for ado por menuacutes desplegaacutebles en uno o maacutes deacute un nivel El resto de v ntanas no deberiacutean contener menuacutes desplegables aunque puede darse el caso
Algunas propiedades de los formularios que se pueden establecer en tiempo de disentildeo son ~
BorderSy1le Establece el estilo del borde del formulario
Captiori (Tex6H Eistqbleacutece eJ teacutext9 que apareceacute eilla liqrra de tiacutetulo del formUlario - r~ e l
Contra Box Permite mostrar o no el menuacute de control de las ventanas de Windows
FINDES 11
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Enab led Establece si el formulario puede responder o no a los eventos que generes
Font Establece las caracteriacutesticas de los objetos de texto que se situacuteen en el formulario
lean Cambia el icono que representa el formulario
Left Top Height Width Establecen la posicioacuten del formulario en la pantalla asiacute como las dimensiones
MaxButton y MinButton Establece si se podraacute maximizar o minimizar el formulario
MousePointer Modl icar el puntero del ratoacuten
Vis bl e Establece si el formulario se mostraraacute visible en tiempo de ejecucioacuten iexcl ~
Wlndow State Establ ece el modo ~ n que se carga inicialmente el form ulario normal maximizado o minimizado
To as esta propiedades estaacuten dlspontbles en tiempo de di se~o traveacutes de la ventana de propiedades
En tiempo de ejecucioacuten se puede cambiar o consultar el valor de algunas propiedades que soacutelo tienen sentido en el tiempo ded eacutesarrouumlo
ombreObjetoNombrePropiedad
FINDES 12
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Convenciones para nombrar bje~os de isual Basic [OBJETO OBJETO ESPANOL iForm middot middot-_middot_middot_- _- iFOrmuacutelariUuml--=------shyI _
iEh ec kB o~----middot--- -------ICasiexcliexcl ia-de middot~e-rifiexclcac i oacute n
iexclComboBox --- ----iexclCuadro com b i~~domiddot
I Datat~-~d--ombobo--- iacuteC ~ad o ombinado enlazado a datos idiexclc------shy[Command Button [Botoacuten de comando - -- - _ crridmiddot ---- shybull I
iexclData fContr()1de datos - -- - ---middot---- -rJatmiddot---shy1____ _- _ ___ ----- I
[Oirsctory list box [Cuadro lista de directorios r=-- - - -_ _- ~---
D rive List Box iexclCuadro lista de unidades ----- shyiexclFile List Box --- -middot-~iCuiexcld r~ Iista~de middot~--~h ivo S middot middot-_ -~_middot middotmiddotffiT middot-- shy __~ A bullbull - ~_iexcl ~_
Frame iexclMarco iexclfrm GrieacuteJ middotRejilla middot-- middot --W~r--middot-middot middot
iOata-bound grid 1 -middot- iexclR~jiexcliexcl imiddotamiddot middote n l a7ada a dat ll~ middot_ dbg
iexclHorizontal scrollbatiacute --rBaiexclr~de des l iamiddot~ a~omiddotiexcloriexcl~o~t8X -_ r[h-s-b-- shy~ ~ iexcl__ alt- _ AAA _ 0_ ~~ ~ __ _ ~
iexclImage iexclImagen [img t 1 - -__ middotNO ~~~bull bull u ~ _ _ ~~ __
f~lconta i ne r middot -~~o r OLE -i =~iexcl iP ictureBox Cuadro de imagen lpic ~
~~~ox m----~to 9 [VertlCalscroilbar iexclBarra de desplazamIento vertical middotmiddot_middotmiddotlt_middotmiddot vsb -
~M
_ ---__-shy 1
------------------I
I
FINDES
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizar Meacutetodos Una vez se ha establecido la parte estructural del formulario se pasa a programar el comportam iento que debe seguir de forma que cumpla con el objetivo para el que desees crearlo utilizando los meacutetodos
Un meacutetodo es un componente maacutes del objeto que puede ser utilizado directamente Para ello debes llamar al meacutetodo e Jndicarle sobre queacute objeto deseas aplicarlo que deberaacute admitirlo
La sintaxis en este caso debe ser NombreObOet ooNombreMetodo[par1 0 arn] donde la lista de paraacutemetros [par1 parn] es opcional decada meacutetodo
Un ejemplo es Si quleres mostrar un form Ulario llamado fnnPrimero la sintaxis Seraacute
frmPr im ero Show 1 El valor 1 nos indica que apareceraacute de forma modal y si el Valor es O apareceraacute de forma no modal
Entender los Eventos El con junto de eventos estaacute predefinido en Viacutesual Basic por lo cual no puedes crear un nuevo evento para los objetos lt
I conjunto de eventos reconocibles por un objeto estaacute ligado con los procedimientos de evento Estos procedimientos son unidades de coacutedigo que le perrniten especificar la
bull bull ~ 1I1t1
respuesta que debe dar uh objeto antildete la ocurrencia de un evento que puede recon ocer
La def inicioacuten del pnoced irniento d~ un ev~to tiene la sigu[en te forma Pr ivate Sub NombreObjetoacuteNombreEvEmtd([Lisectta de piftaacutemetrds]) Instrucciones End Sub
FINDES 14
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Elaboracioacuten de Menuacutes
E ed itor de menuacutes Al usar menuacutes se evita ocupar mucho espacio en las ventanas ya que estos soacutelo aparecen cuando se despliegan expliacutecitamente Ademaacutes se pueden crear hasta cinco niveles de menuacutes por lo que el nuacutemero de comandos y posibilidades es suficientemente amplio
En Visual Basic se trabajo con el editor de menuacutes para crear establecer propiedades y modificar los menuacutes Para acceder a eacutel basta con pulsar elsiguiente botoacuten en la barra de herramientas
Este botoacuten soacutelo estaraacute activo cuando est eacuteaacuteblerto eltormutarlolya que el menuacute siempre estaacute ~ saciado con un determinado formulario
El editor de menuacutes presenta las siguientespropiedades que se pueden aplicar sobre los menuacutes
Capt ion (Texto) Repres~ ri t a es texto qLJe apareceraacute en el menuacute
Name Es el nombre del control Se puede anteponer el prefijo amp maacutes el texto del tiacutetulo del menuacute
Checked Establece si debe a p ~ r~cer una marca de verificacioacuten a la izquierda del texto del objeto del menuacute La marca la puedes utilizar cuando deseas informar de la opcioacuten que estaacute activada en un momento determinado
Enab led Indica si el objeto podraacute recibir eventos del usuario Si tiene el valor False el elemento apareceraacute atenuado en el menuacute
Vis ib le Indica si el objeto debernostrarse o no si se establece estevalor a False los elementos situados a la derecha ocupan el lugar del elemento no vis ible
~) ~
WlndowsList Establece el valor que determina si un objeto de menuacute mantiene una lista de las ventanas MDImiddotsecundarias del tormularloacute actual
Elementos de Menuacute Utilizando los botones eje sangriacutea se puede determinar el nivel del 90jeacutetb hi enDqUe quumlieras stl~cGibnaacute d Asf los tftulos de menuacute se sifuumlan en el nivel sJp~rtor mo traacutendose en la lista inferior del editor de menuacutes lo maacute a la izquierda posible
En muchas aplicaciones se pueden ver unas barras rizontales en los menuacutes desplegables que realizan
la funcioacuten de dividir en secciones dichos menuacutes Este elem nto es conocido como un separador y sirve para separar aquellos comandos del menuacute que tengan
n motivo en comuacuten FINDES
fIfgy iacute _--~- _ _J
~lltl [0 shy middotmiddot- _ (0-bull-3 - C~eacuted iexcl ~~ - ~b1 = r ~middoth~t
15
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Para crear un separador basta con introducir un guioacuten (-) en la propiedad Caption No se puede crear un elemento en un nivel inferior inmediatamente despueacutes de un separador es decir no puedes tener como tiacutetulo de menuacute un separador
Teclas de Meacutetodo Abreviado Al introducir el caraacutecter amp el menuacute estaacute creando una tecla de acceso a dicho objeto Esta tecla se representa subraya daen el texto de menuacute y representa la tecla d I teclado que el usuario puede pulsar para ejecutar la accioacuten Dich a tecla se corresp onde con la letra que sigue al caracter amp en la propiedad Caption del objeacuteto menuacute
Si s rata de un tiacutetulo de menuacute tienes que usar la tecla de acceso en combinacloacuten con la tecla [Alt] Una vez abierto un tituloacute qe menuacute y despleqado sus elementos para acceder raacutepidamente a uno de ellos puedes usar la tecla de acceso directamente
Tenes que tener cuidado en no utilizar las mismas teclas de acceso para elementos de u mi mo nivel de menuacute yaque entonces no funcionaraacuten
El ditor de menuacute tambieacuten admite la incorporacioacuten de teclas d e meacutetodo abreviado Las abreviaturas del menuacute son combinaciones de teclas que se pueden utili a l n lugar de elegir el elemento del menucorrespondiente
ara crear una tecla de meacutetodo abreviado tienes que utilizar la propiedad Shortcut a la que puedes acceder al crear el menuacute desde el editor de menuacutes
Eventos de l Menuacute Cuando en tiempo de disentildeo seleccionamos la opcioacuten de menuacute de un formularlo que estamos creando Visual Basic muestra el procedimiento de evento click de dicho elemento del menuacute
En el caso del tiacutetulo del menuacute el prccediacuternlento click tiene con16 accioacuten predeterminada la de mostrar iacuteosetement os de (nenuacute del nivel inferior por leiacute que no seraacute necesario tener que program ar esta accioacuten Esto tambieacuten sepuede apljea~j a Ist_element s de un menuacute que son a su vez tiacutetulos de submenuacutes
En casi todos los casos tienes que utilizar una operen del menuacute para descargar el formulario d para finalizar la aplicaci oacuten] ~ p QP9iacuteoacuten qe te~tq s - l i r ~uele ser el maacutes apropiado ~
La instruccioacuten Unload descarga de memoria el [ormularioque se especifique Se uedeliexclusar d~ v ri~s f9rn1as QO riexcl ejemplo ~s i e~ta ~ds dentroiexcl deup Form lIam do trmconsutta poacutedremoacutes 1salirmiddot deacute eacutel de dos formas Una es UnloaH e o Unload frmconsulta
FINDES 16
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizacioacuten de uadros de Diaacutelogo
La mayoriacutea de las aplicaciones Windows hacen uso de [os cuadros de d iaacutelogo para establecer las opciones o introducir informacioacuten que necesitan para realizar una accioacuten indicada por el usuario Otro uso posible de los cuadros de diaacutelogo es presentar informacioacuten al usuario
Los cuadros de diaacutelogo se caracterizan por ser modales -y no permitir poder cambiar el tama- o de la ventana ademaacute sno deberaacuten tener una barra de menuacutes despleg ables
Cuadros de Mensaje ( sgbox)
Las cajas de mensajes o Message Box tienen unq funcioacuten clara que es la de mostrar una determinada informacioacuten aviso o prequnta para que el usuario tenga conocimiento de ella y actuacutee
Sintaxis La sintaxis completa de la funcioacuten Msg ox es
sgBox(mensaje[botones][t itulo] [archivoAyuda] [contexto])
MsgBox(prompt[bu~tonsiiexcl[titl e])
Descr peacuteiacuteon I1 Parterompt Req u~rido Expresiqn de cadena que representa el ~p ro rriacute pJ en el cuadro
de di~logo La longitud maacutexima de-promptesdeaprbxirrradamente 1024 caracteres seguacuten el ancho de los caracteres utilizados Si prompt consta de maacutes de una liacutenea puede separarlos utilizando un caraacutecter de retor o de carro (Chr(13)) o un ceacutetraacutecteriexcl de avance de liacutenea (Chr(10)) o na combinaci oacutende caracteres dE retcrn ode carro -ayance de liacutenea (Chr(13) y Ch r(i O)) ent ~e c~da liacuteheay la sigbiknte
buttons Opcional Expresioacuten numeacuterica que corresponde a la suma de los valores que especifican el nuacutemero y el middottipo de los botones que se pretenden
mostrar el e~tiIQ de icqnoacutetqJe ~e va a uacutetUiacute4al la identidad del botoacuten preacuted
1eterrnfhado y la moacutedalidad d eacutel cuadro deacute mensajes sise omite este
argumento el valor predeterminado para buttons es O ti le Opcional Expresioacuten de cadena que se muestra en la barra de iacutetulo del
cuadro de diaacutelogo Si se omite title en la barra de tiacutetulo se coloca el nomb re de la a licacioacuten
FINDE8 17
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
El paraacutemetro botones es de valor numeacuterico y ademaacutes de [os botones que aparecen en el cuadro de diaacutelogo tambieacuten puede indicar el icono que acompantildee al mensaje y el tipo de diaacutelogo modal que es
Cuando un cuadro de diaacutelogo es modal de aplicacioacuten tienes que cerrarlo ara interactuar con otra ventana de la misma aplicacioacuten Cuando es un cuadro de diaacutelogo modal del sistema todas las aplicacioneacutes uumleeacutest n ejecutaacutendose se suspenden hasta que el usuario responda al cuadro de diaacutelogo
Los valores que pueden tomar ef paraacutemetro botones son
VbM 59BoxRight VbMsgBox RtlReading
como la
FINDES 18
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Objetos n isual Basic Un objeto en Visual Basic se caracteriza por tres componentes propiedades meacutetodos y eventos
Las p ropiedades son aquellas caracteriacutesticas o atributos que permiten establecer el aspecto de un objeto como el color taniantildeo poslcl oacuten etc O el estado del mismo activo maximizado etc Existen propiedades que soacutelo est aacuten disponibles en tiempo de disentildeo y otras que soacutelo estaacuten disponibles en tiempo de ejecucioacuten
Los meacutetodos son pequentildeos p rogramas que actuacutean sobre un determinado objeto y que establecen su comportamiento Asiacute un objeto puede moverse ocultarse e c Puedes utilizar cualquier meacutetodo queacutetorrne parte del objeto ~
Los eventos son las situaciones que se produceny que nos interesan identificar para esta lecer alguacuten tipo de de respuesta porparte del objeto Asiacute puedes hacer click sobre un determinado objeto creando de esta forma un evento reconocible por el objeto Que
1 r ~ d iexclsuceda algo o no como resmuesta a este ~ve n to dependera daque hayas programado alguna acc ioacuten en el correspondiente procedimiento de evento
Es ablecer propiedades Cuando insertas objetos en un ormulario tienes que establecer algunas propiedades que presenta Las propiedades son aquellas caracteriacutesticas propias del objeto que hacen que se distingan de otro objeto
En una aplicacioacuten Windows podemos distinguir diversos tipos de ventanas aunque lo nor al es identificar una ventana inicial que se puede maximizar O minimizar y uno o maacutes cuadros de iaacutelogo cuyo tamantildeo sDele ser fijo Slnernb aacuterqoj debes darte cuenta que las barras de ~ ergll)l i en ~~ s tatn b j ~n son v~ ntana ~fde unordfordfplicacioacuten
Normalmente la ventana lnicial ode arfordf(lqueiexclseraacute la que presente el menuacute principal ~ ~ ~~ iexcl y bull y
for ado por menuacutes desplegaacutebles en uno o maacutes deacute un nivel El resto de v ntanas no deberiacutean contener menuacutes desplegables aunque puede darse el caso
Algunas propiedades de los formularios que se pueden establecer en tiempo de disentildeo son ~
BorderSy1le Establece el estilo del borde del formulario
Captiori (Tex6H Eistqbleacutece eJ teacutext9 que apareceacute eilla liqrra de tiacutetulo del formUlario - r~ e l
Contra Box Permite mostrar o no el menuacute de control de las ventanas de Windows
FINDES 11
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Enab led Establece si el formulario puede responder o no a los eventos que generes
Font Establece las caracteriacutesticas de los objetos de texto que se situacuteen en el formulario
lean Cambia el icono que representa el formulario
Left Top Height Width Establecen la posicioacuten del formulario en la pantalla asiacute como las dimensiones
MaxButton y MinButton Establece si se podraacute maximizar o minimizar el formulario
MousePointer Modl icar el puntero del ratoacuten
Vis bl e Establece si el formulario se mostraraacute visible en tiempo de ejecucioacuten iexcl ~
Wlndow State Establ ece el modo ~ n que se carga inicialmente el form ulario normal maximizado o minimizado
To as esta propiedades estaacuten dlspontbles en tiempo de di se~o traveacutes de la ventana de propiedades
En tiempo de ejecucioacuten se puede cambiar o consultar el valor de algunas propiedades que soacutelo tienen sentido en el tiempo ded eacutesarrouumlo
ombreObjetoNombrePropiedad
FINDES 12
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Convenciones para nombrar bje~os de isual Basic [OBJETO OBJETO ESPANOL iForm middot middot-_middot_middot_- _- iFOrmuacutelariUuml--=------shyI _
iEh ec kB o~----middot--- -------ICasiexcliexcl ia-de middot~e-rifiexclcac i oacute n
iexclComboBox --- ----iexclCuadro com b i~~domiddot
I Datat~-~d--ombobo--- iacuteC ~ad o ombinado enlazado a datos idiexclc------shy[Command Button [Botoacuten de comando - -- - _ crridmiddot ---- shybull I
iexclData fContr()1de datos - -- - ---middot---- -rJatmiddot---shy1____ _- _ ___ ----- I
[Oirsctory list box [Cuadro lista de directorios r=-- - - -_ _- ~---
D rive List Box iexclCuadro lista de unidades ----- shyiexclFile List Box --- -middot-~iCuiexcld r~ Iista~de middot~--~h ivo S middot middot-_ -~_middot middotmiddotffiT middot-- shy __~ A bullbull - ~_iexcl ~_
Frame iexclMarco iexclfrm GrieacuteJ middotRejilla middot-- middot --W~r--middot-middot middot
iOata-bound grid 1 -middot- iexclR~jiexcliexcl imiddotamiddot middote n l a7ada a dat ll~ middot_ dbg
iexclHorizontal scrollbatiacute --rBaiexclr~de des l iamiddot~ a~omiddotiexcloriexcl~o~t8X -_ r[h-s-b-- shy~ ~ iexcl__ alt- _ AAA _ 0_ ~~ ~ __ _ ~
iexclImage iexclImagen [img t 1 - -__ middotNO ~~~bull bull u ~ _ _ ~~ __
f~lconta i ne r middot -~~o r OLE -i =~iexcl iP ictureBox Cuadro de imagen lpic ~
~~~ox m----~to 9 [VertlCalscroilbar iexclBarra de desplazamIento vertical middotmiddot_middotmiddotlt_middotmiddot vsb -
~M
_ ---__-shy 1
------------------I
I
FINDES
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizar Meacutetodos Una vez se ha establecido la parte estructural del formulario se pasa a programar el comportam iento que debe seguir de forma que cumpla con el objetivo para el que desees crearlo utilizando los meacutetodos
Un meacutetodo es un componente maacutes del objeto que puede ser utilizado directamente Para ello debes llamar al meacutetodo e Jndicarle sobre queacute objeto deseas aplicarlo que deberaacute admitirlo
La sintaxis en este caso debe ser NombreObOet ooNombreMetodo[par1 0 arn] donde la lista de paraacutemetros [par1 parn] es opcional decada meacutetodo
Un ejemplo es Si quleres mostrar un form Ulario llamado fnnPrimero la sintaxis Seraacute
frmPr im ero Show 1 El valor 1 nos indica que apareceraacute de forma modal y si el Valor es O apareceraacute de forma no modal
Entender los Eventos El con junto de eventos estaacute predefinido en Viacutesual Basic por lo cual no puedes crear un nuevo evento para los objetos lt
I conjunto de eventos reconocibles por un objeto estaacute ligado con los procedimientos de evento Estos procedimientos son unidades de coacutedigo que le perrniten especificar la
bull bull ~ 1I1t1
respuesta que debe dar uh objeto antildete la ocurrencia de un evento que puede recon ocer
La def inicioacuten del pnoced irniento d~ un ev~to tiene la sigu[en te forma Pr ivate Sub NombreObjetoacuteNombreEvEmtd([Lisectta de piftaacutemetrds]) Instrucciones End Sub
FINDES 14
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Elaboracioacuten de Menuacutes
E ed itor de menuacutes Al usar menuacutes se evita ocupar mucho espacio en las ventanas ya que estos soacutelo aparecen cuando se despliegan expliacutecitamente Ademaacutes se pueden crear hasta cinco niveles de menuacutes por lo que el nuacutemero de comandos y posibilidades es suficientemente amplio
En Visual Basic se trabajo con el editor de menuacutes para crear establecer propiedades y modificar los menuacutes Para acceder a eacutel basta con pulsar elsiguiente botoacuten en la barra de herramientas
Este botoacuten soacutelo estaraacute activo cuando est eacuteaacuteblerto eltormutarlolya que el menuacute siempre estaacute ~ saciado con un determinado formulario
El editor de menuacutes presenta las siguientespropiedades que se pueden aplicar sobre los menuacutes
Capt ion (Texto) Repres~ ri t a es texto qLJe apareceraacute en el menuacute
Name Es el nombre del control Se puede anteponer el prefijo amp maacutes el texto del tiacutetulo del menuacute
Checked Establece si debe a p ~ r~cer una marca de verificacioacuten a la izquierda del texto del objeto del menuacute La marca la puedes utilizar cuando deseas informar de la opcioacuten que estaacute activada en un momento determinado
Enab led Indica si el objeto podraacute recibir eventos del usuario Si tiene el valor False el elemento apareceraacute atenuado en el menuacute
Vis ib le Indica si el objeto debernostrarse o no si se establece estevalor a False los elementos situados a la derecha ocupan el lugar del elemento no vis ible
~) ~
WlndowsList Establece el valor que determina si un objeto de menuacute mantiene una lista de las ventanas MDImiddotsecundarias del tormularloacute actual
Elementos de Menuacute Utilizando los botones eje sangriacutea se puede determinar el nivel del 90jeacutetb hi enDqUe quumlieras stl~cGibnaacute d Asf los tftulos de menuacute se sifuumlan en el nivel sJp~rtor mo traacutendose en la lista inferior del editor de menuacutes lo maacute a la izquierda posible
En muchas aplicaciones se pueden ver unas barras rizontales en los menuacutes desplegables que realizan
la funcioacuten de dividir en secciones dichos menuacutes Este elem nto es conocido como un separador y sirve para separar aquellos comandos del menuacute que tengan
n motivo en comuacuten FINDES
fIfgy iacute _--~- _ _J
~lltl [0 shy middotmiddot- _ (0-bull-3 - C~eacuted iexcl ~~ - ~b1 = r ~middoth~t
15
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Para crear un separador basta con introducir un guioacuten (-) en la propiedad Caption No se puede crear un elemento en un nivel inferior inmediatamente despueacutes de un separador es decir no puedes tener como tiacutetulo de menuacute un separador
Teclas de Meacutetodo Abreviado Al introducir el caraacutecter amp el menuacute estaacute creando una tecla de acceso a dicho objeto Esta tecla se representa subraya daen el texto de menuacute y representa la tecla d I teclado que el usuario puede pulsar para ejecutar la accioacuten Dich a tecla se corresp onde con la letra que sigue al caracter amp en la propiedad Caption del objeacuteto menuacute
Si s rata de un tiacutetulo de menuacute tienes que usar la tecla de acceso en combinacloacuten con la tecla [Alt] Una vez abierto un tituloacute qe menuacute y despleqado sus elementos para acceder raacutepidamente a uno de ellos puedes usar la tecla de acceso directamente
Tenes que tener cuidado en no utilizar las mismas teclas de acceso para elementos de u mi mo nivel de menuacute yaque entonces no funcionaraacuten
El ditor de menuacute tambieacuten admite la incorporacioacuten de teclas d e meacutetodo abreviado Las abreviaturas del menuacute son combinaciones de teclas que se pueden utili a l n lugar de elegir el elemento del menucorrespondiente
ara crear una tecla de meacutetodo abreviado tienes que utilizar la propiedad Shortcut a la que puedes acceder al crear el menuacute desde el editor de menuacutes
Eventos de l Menuacute Cuando en tiempo de disentildeo seleccionamos la opcioacuten de menuacute de un formularlo que estamos creando Visual Basic muestra el procedimiento de evento click de dicho elemento del menuacute
En el caso del tiacutetulo del menuacute el prccediacuternlento click tiene con16 accioacuten predeterminada la de mostrar iacuteosetement os de (nenuacute del nivel inferior por leiacute que no seraacute necesario tener que program ar esta accioacuten Esto tambieacuten sepuede apljea~j a Ist_element s de un menuacute que son a su vez tiacutetulos de submenuacutes
En casi todos los casos tienes que utilizar una operen del menuacute para descargar el formulario d para finalizar la aplicaci oacuten] ~ p QP9iacuteoacuten qe te~tq s - l i r ~uele ser el maacutes apropiado ~
La instruccioacuten Unload descarga de memoria el [ormularioque se especifique Se uedeliexclusar d~ v ri~s f9rn1as QO riexcl ejemplo ~s i e~ta ~ds dentroiexcl deup Form lIam do trmconsutta poacutedremoacutes 1salirmiddot deacute eacutel de dos formas Una es UnloaH e o Unload frmconsulta
FINDES 16
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizacioacuten de uadros de Diaacutelogo
La mayoriacutea de las aplicaciones Windows hacen uso de [os cuadros de d iaacutelogo para establecer las opciones o introducir informacioacuten que necesitan para realizar una accioacuten indicada por el usuario Otro uso posible de los cuadros de diaacutelogo es presentar informacioacuten al usuario
Los cuadros de diaacutelogo se caracterizan por ser modales -y no permitir poder cambiar el tama- o de la ventana ademaacute sno deberaacuten tener una barra de menuacutes despleg ables
Cuadros de Mensaje ( sgbox)
Las cajas de mensajes o Message Box tienen unq funcioacuten clara que es la de mostrar una determinada informacioacuten aviso o prequnta para que el usuario tenga conocimiento de ella y actuacutee
Sintaxis La sintaxis completa de la funcioacuten Msg ox es
sgBox(mensaje[botones][t itulo] [archivoAyuda] [contexto])
MsgBox(prompt[bu~tonsiiexcl[titl e])
Descr peacuteiacuteon I1 Parterompt Req u~rido Expresiqn de cadena que representa el ~p ro rriacute pJ en el cuadro
de di~logo La longitud maacutexima de-promptesdeaprbxirrradamente 1024 caracteres seguacuten el ancho de los caracteres utilizados Si prompt consta de maacutes de una liacutenea puede separarlos utilizando un caraacutecter de retor o de carro (Chr(13)) o un ceacutetraacutecteriexcl de avance de liacutenea (Chr(10)) o na combinaci oacutende caracteres dE retcrn ode carro -ayance de liacutenea (Chr(13) y Ch r(i O)) ent ~e c~da liacuteheay la sigbiknte
buttons Opcional Expresioacuten numeacuterica que corresponde a la suma de los valores que especifican el nuacutemero y el middottipo de los botones que se pretenden
mostrar el e~tiIQ de icqnoacutetqJe ~e va a uacutetUiacute4al la identidad del botoacuten preacuted
1eterrnfhado y la moacutedalidad d eacutel cuadro deacute mensajes sise omite este
argumento el valor predeterminado para buttons es O ti le Opcional Expresioacuten de cadena que se muestra en la barra de iacutetulo del
cuadro de diaacutelogo Si se omite title en la barra de tiacutetulo se coloca el nomb re de la a licacioacuten
FINDE8 17
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
El paraacutemetro botones es de valor numeacuterico y ademaacutes de [os botones que aparecen en el cuadro de diaacutelogo tambieacuten puede indicar el icono que acompantildee al mensaje y el tipo de diaacutelogo modal que es
Cuando un cuadro de diaacutelogo es modal de aplicacioacuten tienes que cerrarlo ara interactuar con otra ventana de la misma aplicacioacuten Cuando es un cuadro de diaacutelogo modal del sistema todas las aplicacioneacutes uumleeacutest n ejecutaacutendose se suspenden hasta que el usuario responda al cuadro de diaacutelogo
Los valores que pueden tomar ef paraacutemetro botones son
VbM 59BoxRight VbMsgBox RtlReading
como la
FINDES 18
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Enab led Establece si el formulario puede responder o no a los eventos que generes
Font Establece las caracteriacutesticas de los objetos de texto que se situacuteen en el formulario
lean Cambia el icono que representa el formulario
Left Top Height Width Establecen la posicioacuten del formulario en la pantalla asiacute como las dimensiones
MaxButton y MinButton Establece si se podraacute maximizar o minimizar el formulario
MousePointer Modl icar el puntero del ratoacuten
Vis bl e Establece si el formulario se mostraraacute visible en tiempo de ejecucioacuten iexcl ~
Wlndow State Establ ece el modo ~ n que se carga inicialmente el form ulario normal maximizado o minimizado
To as esta propiedades estaacuten dlspontbles en tiempo de di se~o traveacutes de la ventana de propiedades
En tiempo de ejecucioacuten se puede cambiar o consultar el valor de algunas propiedades que soacutelo tienen sentido en el tiempo ded eacutesarrouumlo
ombreObjetoNombrePropiedad
FINDES 12
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Convenciones para nombrar bje~os de isual Basic [OBJETO OBJETO ESPANOL iForm middot middot-_middot_middot_- _- iFOrmuacutelariUuml--=------shyI _
iEh ec kB o~----middot--- -------ICasiexcliexcl ia-de middot~e-rifiexclcac i oacute n
iexclComboBox --- ----iexclCuadro com b i~~domiddot
I Datat~-~d--ombobo--- iacuteC ~ad o ombinado enlazado a datos idiexclc------shy[Command Button [Botoacuten de comando - -- - _ crridmiddot ---- shybull I
iexclData fContr()1de datos - -- - ---middot---- -rJatmiddot---shy1____ _- _ ___ ----- I
[Oirsctory list box [Cuadro lista de directorios r=-- - - -_ _- ~---
D rive List Box iexclCuadro lista de unidades ----- shyiexclFile List Box --- -middot-~iCuiexcld r~ Iista~de middot~--~h ivo S middot middot-_ -~_middot middotmiddotffiT middot-- shy __~ A bullbull - ~_iexcl ~_
Frame iexclMarco iexclfrm GrieacuteJ middotRejilla middot-- middot --W~r--middot-middot middot
iOata-bound grid 1 -middot- iexclR~jiexcliexcl imiddotamiddot middote n l a7ada a dat ll~ middot_ dbg
iexclHorizontal scrollbatiacute --rBaiexclr~de des l iamiddot~ a~omiddotiexcloriexcl~o~t8X -_ r[h-s-b-- shy~ ~ iexcl__ alt- _ AAA _ 0_ ~~ ~ __ _ ~
iexclImage iexclImagen [img t 1 - -__ middotNO ~~~bull bull u ~ _ _ ~~ __
f~lconta i ne r middot -~~o r OLE -i =~iexcl iP ictureBox Cuadro de imagen lpic ~
~~~ox m----~to 9 [VertlCalscroilbar iexclBarra de desplazamIento vertical middotmiddot_middotmiddotlt_middotmiddot vsb -
~M
_ ---__-shy 1
------------------I
I
FINDES
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizar Meacutetodos Una vez se ha establecido la parte estructural del formulario se pasa a programar el comportam iento que debe seguir de forma que cumpla con el objetivo para el que desees crearlo utilizando los meacutetodos
Un meacutetodo es un componente maacutes del objeto que puede ser utilizado directamente Para ello debes llamar al meacutetodo e Jndicarle sobre queacute objeto deseas aplicarlo que deberaacute admitirlo
La sintaxis en este caso debe ser NombreObOet ooNombreMetodo[par1 0 arn] donde la lista de paraacutemetros [par1 parn] es opcional decada meacutetodo
Un ejemplo es Si quleres mostrar un form Ulario llamado fnnPrimero la sintaxis Seraacute
frmPr im ero Show 1 El valor 1 nos indica que apareceraacute de forma modal y si el Valor es O apareceraacute de forma no modal
Entender los Eventos El con junto de eventos estaacute predefinido en Viacutesual Basic por lo cual no puedes crear un nuevo evento para los objetos lt
I conjunto de eventos reconocibles por un objeto estaacute ligado con los procedimientos de evento Estos procedimientos son unidades de coacutedigo que le perrniten especificar la
bull bull ~ 1I1t1
respuesta que debe dar uh objeto antildete la ocurrencia de un evento que puede recon ocer
La def inicioacuten del pnoced irniento d~ un ev~to tiene la sigu[en te forma Pr ivate Sub NombreObjetoacuteNombreEvEmtd([Lisectta de piftaacutemetrds]) Instrucciones End Sub
FINDES 14
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Elaboracioacuten de Menuacutes
E ed itor de menuacutes Al usar menuacutes se evita ocupar mucho espacio en las ventanas ya que estos soacutelo aparecen cuando se despliegan expliacutecitamente Ademaacutes se pueden crear hasta cinco niveles de menuacutes por lo que el nuacutemero de comandos y posibilidades es suficientemente amplio
En Visual Basic se trabajo con el editor de menuacutes para crear establecer propiedades y modificar los menuacutes Para acceder a eacutel basta con pulsar elsiguiente botoacuten en la barra de herramientas
Este botoacuten soacutelo estaraacute activo cuando est eacuteaacuteblerto eltormutarlolya que el menuacute siempre estaacute ~ saciado con un determinado formulario
El editor de menuacutes presenta las siguientespropiedades que se pueden aplicar sobre los menuacutes
Capt ion (Texto) Repres~ ri t a es texto qLJe apareceraacute en el menuacute
Name Es el nombre del control Se puede anteponer el prefijo amp maacutes el texto del tiacutetulo del menuacute
Checked Establece si debe a p ~ r~cer una marca de verificacioacuten a la izquierda del texto del objeto del menuacute La marca la puedes utilizar cuando deseas informar de la opcioacuten que estaacute activada en un momento determinado
Enab led Indica si el objeto podraacute recibir eventos del usuario Si tiene el valor False el elemento apareceraacute atenuado en el menuacute
Vis ib le Indica si el objeto debernostrarse o no si se establece estevalor a False los elementos situados a la derecha ocupan el lugar del elemento no vis ible
~) ~
WlndowsList Establece el valor que determina si un objeto de menuacute mantiene una lista de las ventanas MDImiddotsecundarias del tormularloacute actual
Elementos de Menuacute Utilizando los botones eje sangriacutea se puede determinar el nivel del 90jeacutetb hi enDqUe quumlieras stl~cGibnaacute d Asf los tftulos de menuacute se sifuumlan en el nivel sJp~rtor mo traacutendose en la lista inferior del editor de menuacutes lo maacute a la izquierda posible
En muchas aplicaciones se pueden ver unas barras rizontales en los menuacutes desplegables que realizan
la funcioacuten de dividir en secciones dichos menuacutes Este elem nto es conocido como un separador y sirve para separar aquellos comandos del menuacute que tengan
n motivo en comuacuten FINDES
fIfgy iacute _--~- _ _J
~lltl [0 shy middotmiddot- _ (0-bull-3 - C~eacuted iexcl ~~ - ~b1 = r ~middoth~t
15
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Para crear un separador basta con introducir un guioacuten (-) en la propiedad Caption No se puede crear un elemento en un nivel inferior inmediatamente despueacutes de un separador es decir no puedes tener como tiacutetulo de menuacute un separador
Teclas de Meacutetodo Abreviado Al introducir el caraacutecter amp el menuacute estaacute creando una tecla de acceso a dicho objeto Esta tecla se representa subraya daen el texto de menuacute y representa la tecla d I teclado que el usuario puede pulsar para ejecutar la accioacuten Dich a tecla se corresp onde con la letra que sigue al caracter amp en la propiedad Caption del objeacuteto menuacute
Si s rata de un tiacutetulo de menuacute tienes que usar la tecla de acceso en combinacloacuten con la tecla [Alt] Una vez abierto un tituloacute qe menuacute y despleqado sus elementos para acceder raacutepidamente a uno de ellos puedes usar la tecla de acceso directamente
Tenes que tener cuidado en no utilizar las mismas teclas de acceso para elementos de u mi mo nivel de menuacute yaque entonces no funcionaraacuten
El ditor de menuacute tambieacuten admite la incorporacioacuten de teclas d e meacutetodo abreviado Las abreviaturas del menuacute son combinaciones de teclas que se pueden utili a l n lugar de elegir el elemento del menucorrespondiente
ara crear una tecla de meacutetodo abreviado tienes que utilizar la propiedad Shortcut a la que puedes acceder al crear el menuacute desde el editor de menuacutes
Eventos de l Menuacute Cuando en tiempo de disentildeo seleccionamos la opcioacuten de menuacute de un formularlo que estamos creando Visual Basic muestra el procedimiento de evento click de dicho elemento del menuacute
En el caso del tiacutetulo del menuacute el prccediacuternlento click tiene con16 accioacuten predeterminada la de mostrar iacuteosetement os de (nenuacute del nivel inferior por leiacute que no seraacute necesario tener que program ar esta accioacuten Esto tambieacuten sepuede apljea~j a Ist_element s de un menuacute que son a su vez tiacutetulos de submenuacutes
En casi todos los casos tienes que utilizar una operen del menuacute para descargar el formulario d para finalizar la aplicaci oacuten] ~ p QP9iacuteoacuten qe te~tq s - l i r ~uele ser el maacutes apropiado ~
La instruccioacuten Unload descarga de memoria el [ormularioque se especifique Se uedeliexclusar d~ v ri~s f9rn1as QO riexcl ejemplo ~s i e~ta ~ds dentroiexcl deup Form lIam do trmconsutta poacutedremoacutes 1salirmiddot deacute eacutel de dos formas Una es UnloaH e o Unload frmconsulta
FINDES 16
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizacioacuten de uadros de Diaacutelogo
La mayoriacutea de las aplicaciones Windows hacen uso de [os cuadros de d iaacutelogo para establecer las opciones o introducir informacioacuten que necesitan para realizar una accioacuten indicada por el usuario Otro uso posible de los cuadros de diaacutelogo es presentar informacioacuten al usuario
Los cuadros de diaacutelogo se caracterizan por ser modales -y no permitir poder cambiar el tama- o de la ventana ademaacute sno deberaacuten tener una barra de menuacutes despleg ables
Cuadros de Mensaje ( sgbox)
Las cajas de mensajes o Message Box tienen unq funcioacuten clara que es la de mostrar una determinada informacioacuten aviso o prequnta para que el usuario tenga conocimiento de ella y actuacutee
Sintaxis La sintaxis completa de la funcioacuten Msg ox es
sgBox(mensaje[botones][t itulo] [archivoAyuda] [contexto])
MsgBox(prompt[bu~tonsiiexcl[titl e])
Descr peacuteiacuteon I1 Parterompt Req u~rido Expresiqn de cadena que representa el ~p ro rriacute pJ en el cuadro
de di~logo La longitud maacutexima de-promptesdeaprbxirrradamente 1024 caracteres seguacuten el ancho de los caracteres utilizados Si prompt consta de maacutes de una liacutenea puede separarlos utilizando un caraacutecter de retor o de carro (Chr(13)) o un ceacutetraacutecteriexcl de avance de liacutenea (Chr(10)) o na combinaci oacutende caracteres dE retcrn ode carro -ayance de liacutenea (Chr(13) y Ch r(i O)) ent ~e c~da liacuteheay la sigbiknte
buttons Opcional Expresioacuten numeacuterica que corresponde a la suma de los valores que especifican el nuacutemero y el middottipo de los botones que se pretenden
mostrar el e~tiIQ de icqnoacutetqJe ~e va a uacutetUiacute4al la identidad del botoacuten preacuted
1eterrnfhado y la moacutedalidad d eacutel cuadro deacute mensajes sise omite este
argumento el valor predeterminado para buttons es O ti le Opcional Expresioacuten de cadena que se muestra en la barra de iacutetulo del
cuadro de diaacutelogo Si se omite title en la barra de tiacutetulo se coloca el nomb re de la a licacioacuten
FINDE8 17
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
El paraacutemetro botones es de valor numeacuterico y ademaacutes de [os botones que aparecen en el cuadro de diaacutelogo tambieacuten puede indicar el icono que acompantildee al mensaje y el tipo de diaacutelogo modal que es
Cuando un cuadro de diaacutelogo es modal de aplicacioacuten tienes que cerrarlo ara interactuar con otra ventana de la misma aplicacioacuten Cuando es un cuadro de diaacutelogo modal del sistema todas las aplicacioneacutes uumleeacutest n ejecutaacutendose se suspenden hasta que el usuario responda al cuadro de diaacutelogo
Los valores que pueden tomar ef paraacutemetro botones son
VbM 59BoxRight VbMsgBox RtlReading
como la
FINDES 18
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Convenciones para nombrar bje~os de isual Basic [OBJETO OBJETO ESPANOL iForm middot middot-_middot_middot_- _- iFOrmuacutelariUuml--=------shyI _
iEh ec kB o~----middot--- -------ICasiexcliexcl ia-de middot~e-rifiexclcac i oacute n
iexclComboBox --- ----iexclCuadro com b i~~domiddot
I Datat~-~d--ombobo--- iacuteC ~ad o ombinado enlazado a datos idiexclc------shy[Command Button [Botoacuten de comando - -- - _ crridmiddot ---- shybull I
iexclData fContr()1de datos - -- - ---middot---- -rJatmiddot---shy1____ _- _ ___ ----- I
[Oirsctory list box [Cuadro lista de directorios r=-- - - -_ _- ~---
D rive List Box iexclCuadro lista de unidades ----- shyiexclFile List Box --- -middot-~iCuiexcld r~ Iista~de middot~--~h ivo S middot middot-_ -~_middot middotmiddotffiT middot-- shy __~ A bullbull - ~_iexcl ~_
Frame iexclMarco iexclfrm GrieacuteJ middotRejilla middot-- middot --W~r--middot-middot middot
iOata-bound grid 1 -middot- iexclR~jiexcliexcl imiddotamiddot middote n l a7ada a dat ll~ middot_ dbg
iexclHorizontal scrollbatiacute --rBaiexclr~de des l iamiddot~ a~omiddotiexcloriexcl~o~t8X -_ r[h-s-b-- shy~ ~ iexcl__ alt- _ AAA _ 0_ ~~ ~ __ _ ~
iexclImage iexclImagen [img t 1 - -__ middotNO ~~~bull bull u ~ _ _ ~~ __
f~lconta i ne r middot -~~o r OLE -i =~iexcl iP ictureBox Cuadro de imagen lpic ~
~~~ox m----~to 9 [VertlCalscroilbar iexclBarra de desplazamIento vertical middotmiddot_middotmiddotlt_middotmiddot vsb -
~M
_ ---__-shy 1
------------------I
I
FINDES
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizar Meacutetodos Una vez se ha establecido la parte estructural del formulario se pasa a programar el comportam iento que debe seguir de forma que cumpla con el objetivo para el que desees crearlo utilizando los meacutetodos
Un meacutetodo es un componente maacutes del objeto que puede ser utilizado directamente Para ello debes llamar al meacutetodo e Jndicarle sobre queacute objeto deseas aplicarlo que deberaacute admitirlo
La sintaxis en este caso debe ser NombreObOet ooNombreMetodo[par1 0 arn] donde la lista de paraacutemetros [par1 parn] es opcional decada meacutetodo
Un ejemplo es Si quleres mostrar un form Ulario llamado fnnPrimero la sintaxis Seraacute
frmPr im ero Show 1 El valor 1 nos indica que apareceraacute de forma modal y si el Valor es O apareceraacute de forma no modal
Entender los Eventos El con junto de eventos estaacute predefinido en Viacutesual Basic por lo cual no puedes crear un nuevo evento para los objetos lt
I conjunto de eventos reconocibles por un objeto estaacute ligado con los procedimientos de evento Estos procedimientos son unidades de coacutedigo que le perrniten especificar la
bull bull ~ 1I1t1
respuesta que debe dar uh objeto antildete la ocurrencia de un evento que puede recon ocer
La def inicioacuten del pnoced irniento d~ un ev~to tiene la sigu[en te forma Pr ivate Sub NombreObjetoacuteNombreEvEmtd([Lisectta de piftaacutemetrds]) Instrucciones End Sub
FINDES 14
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Elaboracioacuten de Menuacutes
E ed itor de menuacutes Al usar menuacutes se evita ocupar mucho espacio en las ventanas ya que estos soacutelo aparecen cuando se despliegan expliacutecitamente Ademaacutes se pueden crear hasta cinco niveles de menuacutes por lo que el nuacutemero de comandos y posibilidades es suficientemente amplio
En Visual Basic se trabajo con el editor de menuacutes para crear establecer propiedades y modificar los menuacutes Para acceder a eacutel basta con pulsar elsiguiente botoacuten en la barra de herramientas
Este botoacuten soacutelo estaraacute activo cuando est eacuteaacuteblerto eltormutarlolya que el menuacute siempre estaacute ~ saciado con un determinado formulario
El editor de menuacutes presenta las siguientespropiedades que se pueden aplicar sobre los menuacutes
Capt ion (Texto) Repres~ ri t a es texto qLJe apareceraacute en el menuacute
Name Es el nombre del control Se puede anteponer el prefijo amp maacutes el texto del tiacutetulo del menuacute
Checked Establece si debe a p ~ r~cer una marca de verificacioacuten a la izquierda del texto del objeto del menuacute La marca la puedes utilizar cuando deseas informar de la opcioacuten que estaacute activada en un momento determinado
Enab led Indica si el objeto podraacute recibir eventos del usuario Si tiene el valor False el elemento apareceraacute atenuado en el menuacute
Vis ib le Indica si el objeto debernostrarse o no si se establece estevalor a False los elementos situados a la derecha ocupan el lugar del elemento no vis ible
~) ~
WlndowsList Establece el valor que determina si un objeto de menuacute mantiene una lista de las ventanas MDImiddotsecundarias del tormularloacute actual
Elementos de Menuacute Utilizando los botones eje sangriacutea se puede determinar el nivel del 90jeacutetb hi enDqUe quumlieras stl~cGibnaacute d Asf los tftulos de menuacute se sifuumlan en el nivel sJp~rtor mo traacutendose en la lista inferior del editor de menuacutes lo maacute a la izquierda posible
En muchas aplicaciones se pueden ver unas barras rizontales en los menuacutes desplegables que realizan
la funcioacuten de dividir en secciones dichos menuacutes Este elem nto es conocido como un separador y sirve para separar aquellos comandos del menuacute que tengan
n motivo en comuacuten FINDES
fIfgy iacute _--~- _ _J
~lltl [0 shy middotmiddot- _ (0-bull-3 - C~eacuted iexcl ~~ - ~b1 = r ~middoth~t
15
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Para crear un separador basta con introducir un guioacuten (-) en la propiedad Caption No se puede crear un elemento en un nivel inferior inmediatamente despueacutes de un separador es decir no puedes tener como tiacutetulo de menuacute un separador
Teclas de Meacutetodo Abreviado Al introducir el caraacutecter amp el menuacute estaacute creando una tecla de acceso a dicho objeto Esta tecla se representa subraya daen el texto de menuacute y representa la tecla d I teclado que el usuario puede pulsar para ejecutar la accioacuten Dich a tecla se corresp onde con la letra que sigue al caracter amp en la propiedad Caption del objeacuteto menuacute
Si s rata de un tiacutetulo de menuacute tienes que usar la tecla de acceso en combinacloacuten con la tecla [Alt] Una vez abierto un tituloacute qe menuacute y despleqado sus elementos para acceder raacutepidamente a uno de ellos puedes usar la tecla de acceso directamente
Tenes que tener cuidado en no utilizar las mismas teclas de acceso para elementos de u mi mo nivel de menuacute yaque entonces no funcionaraacuten
El ditor de menuacute tambieacuten admite la incorporacioacuten de teclas d e meacutetodo abreviado Las abreviaturas del menuacute son combinaciones de teclas que se pueden utili a l n lugar de elegir el elemento del menucorrespondiente
ara crear una tecla de meacutetodo abreviado tienes que utilizar la propiedad Shortcut a la que puedes acceder al crear el menuacute desde el editor de menuacutes
Eventos de l Menuacute Cuando en tiempo de disentildeo seleccionamos la opcioacuten de menuacute de un formularlo que estamos creando Visual Basic muestra el procedimiento de evento click de dicho elemento del menuacute
En el caso del tiacutetulo del menuacute el prccediacuternlento click tiene con16 accioacuten predeterminada la de mostrar iacuteosetement os de (nenuacute del nivel inferior por leiacute que no seraacute necesario tener que program ar esta accioacuten Esto tambieacuten sepuede apljea~j a Ist_element s de un menuacute que son a su vez tiacutetulos de submenuacutes
En casi todos los casos tienes que utilizar una operen del menuacute para descargar el formulario d para finalizar la aplicaci oacuten] ~ p QP9iacuteoacuten qe te~tq s - l i r ~uele ser el maacutes apropiado ~
La instruccioacuten Unload descarga de memoria el [ormularioque se especifique Se uedeliexclusar d~ v ri~s f9rn1as QO riexcl ejemplo ~s i e~ta ~ds dentroiexcl deup Form lIam do trmconsutta poacutedremoacutes 1salirmiddot deacute eacutel de dos formas Una es UnloaH e o Unload frmconsulta
FINDES 16
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizacioacuten de uadros de Diaacutelogo
La mayoriacutea de las aplicaciones Windows hacen uso de [os cuadros de d iaacutelogo para establecer las opciones o introducir informacioacuten que necesitan para realizar una accioacuten indicada por el usuario Otro uso posible de los cuadros de diaacutelogo es presentar informacioacuten al usuario
Los cuadros de diaacutelogo se caracterizan por ser modales -y no permitir poder cambiar el tama- o de la ventana ademaacute sno deberaacuten tener una barra de menuacutes despleg ables
Cuadros de Mensaje ( sgbox)
Las cajas de mensajes o Message Box tienen unq funcioacuten clara que es la de mostrar una determinada informacioacuten aviso o prequnta para que el usuario tenga conocimiento de ella y actuacutee
Sintaxis La sintaxis completa de la funcioacuten Msg ox es
sgBox(mensaje[botones][t itulo] [archivoAyuda] [contexto])
MsgBox(prompt[bu~tonsiiexcl[titl e])
Descr peacuteiacuteon I1 Parterompt Req u~rido Expresiqn de cadena que representa el ~p ro rriacute pJ en el cuadro
de di~logo La longitud maacutexima de-promptesdeaprbxirrradamente 1024 caracteres seguacuten el ancho de los caracteres utilizados Si prompt consta de maacutes de una liacutenea puede separarlos utilizando un caraacutecter de retor o de carro (Chr(13)) o un ceacutetraacutecteriexcl de avance de liacutenea (Chr(10)) o na combinaci oacutende caracteres dE retcrn ode carro -ayance de liacutenea (Chr(13) y Ch r(i O)) ent ~e c~da liacuteheay la sigbiknte
buttons Opcional Expresioacuten numeacuterica que corresponde a la suma de los valores que especifican el nuacutemero y el middottipo de los botones que se pretenden
mostrar el e~tiIQ de icqnoacutetqJe ~e va a uacutetUiacute4al la identidad del botoacuten preacuted
1eterrnfhado y la moacutedalidad d eacutel cuadro deacute mensajes sise omite este
argumento el valor predeterminado para buttons es O ti le Opcional Expresioacuten de cadena que se muestra en la barra de iacutetulo del
cuadro de diaacutelogo Si se omite title en la barra de tiacutetulo se coloca el nomb re de la a licacioacuten
FINDE8 17
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
El paraacutemetro botones es de valor numeacuterico y ademaacutes de [os botones que aparecen en el cuadro de diaacutelogo tambieacuten puede indicar el icono que acompantildee al mensaje y el tipo de diaacutelogo modal que es
Cuando un cuadro de diaacutelogo es modal de aplicacioacuten tienes que cerrarlo ara interactuar con otra ventana de la misma aplicacioacuten Cuando es un cuadro de diaacutelogo modal del sistema todas las aplicacioneacutes uumleeacutest n ejecutaacutendose se suspenden hasta que el usuario responda al cuadro de diaacutelogo
Los valores que pueden tomar ef paraacutemetro botones son
VbM 59BoxRight VbMsgBox RtlReading
como la
FINDES 18
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizar Meacutetodos Una vez se ha establecido la parte estructural del formulario se pasa a programar el comportam iento que debe seguir de forma que cumpla con el objetivo para el que desees crearlo utilizando los meacutetodos
Un meacutetodo es un componente maacutes del objeto que puede ser utilizado directamente Para ello debes llamar al meacutetodo e Jndicarle sobre queacute objeto deseas aplicarlo que deberaacute admitirlo
La sintaxis en este caso debe ser NombreObOet ooNombreMetodo[par1 0 arn] donde la lista de paraacutemetros [par1 parn] es opcional decada meacutetodo
Un ejemplo es Si quleres mostrar un form Ulario llamado fnnPrimero la sintaxis Seraacute
frmPr im ero Show 1 El valor 1 nos indica que apareceraacute de forma modal y si el Valor es O apareceraacute de forma no modal
Entender los Eventos El con junto de eventos estaacute predefinido en Viacutesual Basic por lo cual no puedes crear un nuevo evento para los objetos lt
I conjunto de eventos reconocibles por un objeto estaacute ligado con los procedimientos de evento Estos procedimientos son unidades de coacutedigo que le perrniten especificar la
bull bull ~ 1I1t1
respuesta que debe dar uh objeto antildete la ocurrencia de un evento que puede recon ocer
La def inicioacuten del pnoced irniento d~ un ev~to tiene la sigu[en te forma Pr ivate Sub NombreObjetoacuteNombreEvEmtd([Lisectta de piftaacutemetrds]) Instrucciones End Sub
FINDES 14
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Elaboracioacuten de Menuacutes
E ed itor de menuacutes Al usar menuacutes se evita ocupar mucho espacio en las ventanas ya que estos soacutelo aparecen cuando se despliegan expliacutecitamente Ademaacutes se pueden crear hasta cinco niveles de menuacutes por lo que el nuacutemero de comandos y posibilidades es suficientemente amplio
En Visual Basic se trabajo con el editor de menuacutes para crear establecer propiedades y modificar los menuacutes Para acceder a eacutel basta con pulsar elsiguiente botoacuten en la barra de herramientas
Este botoacuten soacutelo estaraacute activo cuando est eacuteaacuteblerto eltormutarlolya que el menuacute siempre estaacute ~ saciado con un determinado formulario
El editor de menuacutes presenta las siguientespropiedades que se pueden aplicar sobre los menuacutes
Capt ion (Texto) Repres~ ri t a es texto qLJe apareceraacute en el menuacute
Name Es el nombre del control Se puede anteponer el prefijo amp maacutes el texto del tiacutetulo del menuacute
Checked Establece si debe a p ~ r~cer una marca de verificacioacuten a la izquierda del texto del objeto del menuacute La marca la puedes utilizar cuando deseas informar de la opcioacuten que estaacute activada en un momento determinado
Enab led Indica si el objeto podraacute recibir eventos del usuario Si tiene el valor False el elemento apareceraacute atenuado en el menuacute
Vis ib le Indica si el objeto debernostrarse o no si se establece estevalor a False los elementos situados a la derecha ocupan el lugar del elemento no vis ible
~) ~
WlndowsList Establece el valor que determina si un objeto de menuacute mantiene una lista de las ventanas MDImiddotsecundarias del tormularloacute actual
Elementos de Menuacute Utilizando los botones eje sangriacutea se puede determinar el nivel del 90jeacutetb hi enDqUe quumlieras stl~cGibnaacute d Asf los tftulos de menuacute se sifuumlan en el nivel sJp~rtor mo traacutendose en la lista inferior del editor de menuacutes lo maacute a la izquierda posible
En muchas aplicaciones se pueden ver unas barras rizontales en los menuacutes desplegables que realizan
la funcioacuten de dividir en secciones dichos menuacutes Este elem nto es conocido como un separador y sirve para separar aquellos comandos del menuacute que tengan
n motivo en comuacuten FINDES
fIfgy iacute _--~- _ _J
~lltl [0 shy middotmiddot- _ (0-bull-3 - C~eacuted iexcl ~~ - ~b1 = r ~middoth~t
15
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Para crear un separador basta con introducir un guioacuten (-) en la propiedad Caption No se puede crear un elemento en un nivel inferior inmediatamente despueacutes de un separador es decir no puedes tener como tiacutetulo de menuacute un separador
Teclas de Meacutetodo Abreviado Al introducir el caraacutecter amp el menuacute estaacute creando una tecla de acceso a dicho objeto Esta tecla se representa subraya daen el texto de menuacute y representa la tecla d I teclado que el usuario puede pulsar para ejecutar la accioacuten Dich a tecla se corresp onde con la letra que sigue al caracter amp en la propiedad Caption del objeacuteto menuacute
Si s rata de un tiacutetulo de menuacute tienes que usar la tecla de acceso en combinacloacuten con la tecla [Alt] Una vez abierto un tituloacute qe menuacute y despleqado sus elementos para acceder raacutepidamente a uno de ellos puedes usar la tecla de acceso directamente
Tenes que tener cuidado en no utilizar las mismas teclas de acceso para elementos de u mi mo nivel de menuacute yaque entonces no funcionaraacuten
El ditor de menuacute tambieacuten admite la incorporacioacuten de teclas d e meacutetodo abreviado Las abreviaturas del menuacute son combinaciones de teclas que se pueden utili a l n lugar de elegir el elemento del menucorrespondiente
ara crear una tecla de meacutetodo abreviado tienes que utilizar la propiedad Shortcut a la que puedes acceder al crear el menuacute desde el editor de menuacutes
Eventos de l Menuacute Cuando en tiempo de disentildeo seleccionamos la opcioacuten de menuacute de un formularlo que estamos creando Visual Basic muestra el procedimiento de evento click de dicho elemento del menuacute
En el caso del tiacutetulo del menuacute el prccediacuternlento click tiene con16 accioacuten predeterminada la de mostrar iacuteosetement os de (nenuacute del nivel inferior por leiacute que no seraacute necesario tener que program ar esta accioacuten Esto tambieacuten sepuede apljea~j a Ist_element s de un menuacute que son a su vez tiacutetulos de submenuacutes
En casi todos los casos tienes que utilizar una operen del menuacute para descargar el formulario d para finalizar la aplicaci oacuten] ~ p QP9iacuteoacuten qe te~tq s - l i r ~uele ser el maacutes apropiado ~
La instruccioacuten Unload descarga de memoria el [ormularioque se especifique Se uedeliexclusar d~ v ri~s f9rn1as QO riexcl ejemplo ~s i e~ta ~ds dentroiexcl deup Form lIam do trmconsutta poacutedremoacutes 1salirmiddot deacute eacutel de dos formas Una es UnloaH e o Unload frmconsulta
FINDES 16
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizacioacuten de uadros de Diaacutelogo
La mayoriacutea de las aplicaciones Windows hacen uso de [os cuadros de d iaacutelogo para establecer las opciones o introducir informacioacuten que necesitan para realizar una accioacuten indicada por el usuario Otro uso posible de los cuadros de diaacutelogo es presentar informacioacuten al usuario
Los cuadros de diaacutelogo se caracterizan por ser modales -y no permitir poder cambiar el tama- o de la ventana ademaacute sno deberaacuten tener una barra de menuacutes despleg ables
Cuadros de Mensaje ( sgbox)
Las cajas de mensajes o Message Box tienen unq funcioacuten clara que es la de mostrar una determinada informacioacuten aviso o prequnta para que el usuario tenga conocimiento de ella y actuacutee
Sintaxis La sintaxis completa de la funcioacuten Msg ox es
sgBox(mensaje[botones][t itulo] [archivoAyuda] [contexto])
MsgBox(prompt[bu~tonsiiexcl[titl e])
Descr peacuteiacuteon I1 Parterompt Req u~rido Expresiqn de cadena que representa el ~p ro rriacute pJ en el cuadro
de di~logo La longitud maacutexima de-promptesdeaprbxirrradamente 1024 caracteres seguacuten el ancho de los caracteres utilizados Si prompt consta de maacutes de una liacutenea puede separarlos utilizando un caraacutecter de retor o de carro (Chr(13)) o un ceacutetraacutecteriexcl de avance de liacutenea (Chr(10)) o na combinaci oacutende caracteres dE retcrn ode carro -ayance de liacutenea (Chr(13) y Ch r(i O)) ent ~e c~da liacuteheay la sigbiknte
buttons Opcional Expresioacuten numeacuterica que corresponde a la suma de los valores que especifican el nuacutemero y el middottipo de los botones que se pretenden
mostrar el e~tiIQ de icqnoacutetqJe ~e va a uacutetUiacute4al la identidad del botoacuten preacuted
1eterrnfhado y la moacutedalidad d eacutel cuadro deacute mensajes sise omite este
argumento el valor predeterminado para buttons es O ti le Opcional Expresioacuten de cadena que se muestra en la barra de iacutetulo del
cuadro de diaacutelogo Si se omite title en la barra de tiacutetulo se coloca el nomb re de la a licacioacuten
FINDE8 17
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
El paraacutemetro botones es de valor numeacuterico y ademaacutes de [os botones que aparecen en el cuadro de diaacutelogo tambieacuten puede indicar el icono que acompantildee al mensaje y el tipo de diaacutelogo modal que es
Cuando un cuadro de diaacutelogo es modal de aplicacioacuten tienes que cerrarlo ara interactuar con otra ventana de la misma aplicacioacuten Cuando es un cuadro de diaacutelogo modal del sistema todas las aplicacioneacutes uumleeacutest n ejecutaacutendose se suspenden hasta que el usuario responda al cuadro de diaacutelogo
Los valores que pueden tomar ef paraacutemetro botones son
VbM 59BoxRight VbMsgBox RtlReading
como la
FINDES 18
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Elaboracioacuten de Menuacutes
E ed itor de menuacutes Al usar menuacutes se evita ocupar mucho espacio en las ventanas ya que estos soacutelo aparecen cuando se despliegan expliacutecitamente Ademaacutes se pueden crear hasta cinco niveles de menuacutes por lo que el nuacutemero de comandos y posibilidades es suficientemente amplio
En Visual Basic se trabajo con el editor de menuacutes para crear establecer propiedades y modificar los menuacutes Para acceder a eacutel basta con pulsar elsiguiente botoacuten en la barra de herramientas
Este botoacuten soacutelo estaraacute activo cuando est eacuteaacuteblerto eltormutarlolya que el menuacute siempre estaacute ~ saciado con un determinado formulario
El editor de menuacutes presenta las siguientespropiedades que se pueden aplicar sobre los menuacutes
Capt ion (Texto) Repres~ ri t a es texto qLJe apareceraacute en el menuacute
Name Es el nombre del control Se puede anteponer el prefijo amp maacutes el texto del tiacutetulo del menuacute
Checked Establece si debe a p ~ r~cer una marca de verificacioacuten a la izquierda del texto del objeto del menuacute La marca la puedes utilizar cuando deseas informar de la opcioacuten que estaacute activada en un momento determinado
Enab led Indica si el objeto podraacute recibir eventos del usuario Si tiene el valor False el elemento apareceraacute atenuado en el menuacute
Vis ib le Indica si el objeto debernostrarse o no si se establece estevalor a False los elementos situados a la derecha ocupan el lugar del elemento no vis ible
~) ~
WlndowsList Establece el valor que determina si un objeto de menuacute mantiene una lista de las ventanas MDImiddotsecundarias del tormularloacute actual
Elementos de Menuacute Utilizando los botones eje sangriacutea se puede determinar el nivel del 90jeacutetb hi enDqUe quumlieras stl~cGibnaacute d Asf los tftulos de menuacute se sifuumlan en el nivel sJp~rtor mo traacutendose en la lista inferior del editor de menuacutes lo maacute a la izquierda posible
En muchas aplicaciones se pueden ver unas barras rizontales en los menuacutes desplegables que realizan
la funcioacuten de dividir en secciones dichos menuacutes Este elem nto es conocido como un separador y sirve para separar aquellos comandos del menuacute que tengan
n motivo en comuacuten FINDES
fIfgy iacute _--~- _ _J
~lltl [0 shy middotmiddot- _ (0-bull-3 - C~eacuted iexcl ~~ - ~b1 = r ~middoth~t
15
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Para crear un separador basta con introducir un guioacuten (-) en la propiedad Caption No se puede crear un elemento en un nivel inferior inmediatamente despueacutes de un separador es decir no puedes tener como tiacutetulo de menuacute un separador
Teclas de Meacutetodo Abreviado Al introducir el caraacutecter amp el menuacute estaacute creando una tecla de acceso a dicho objeto Esta tecla se representa subraya daen el texto de menuacute y representa la tecla d I teclado que el usuario puede pulsar para ejecutar la accioacuten Dich a tecla se corresp onde con la letra que sigue al caracter amp en la propiedad Caption del objeacuteto menuacute
Si s rata de un tiacutetulo de menuacute tienes que usar la tecla de acceso en combinacloacuten con la tecla [Alt] Una vez abierto un tituloacute qe menuacute y despleqado sus elementos para acceder raacutepidamente a uno de ellos puedes usar la tecla de acceso directamente
Tenes que tener cuidado en no utilizar las mismas teclas de acceso para elementos de u mi mo nivel de menuacute yaque entonces no funcionaraacuten
El ditor de menuacute tambieacuten admite la incorporacioacuten de teclas d e meacutetodo abreviado Las abreviaturas del menuacute son combinaciones de teclas que se pueden utili a l n lugar de elegir el elemento del menucorrespondiente
ara crear una tecla de meacutetodo abreviado tienes que utilizar la propiedad Shortcut a la que puedes acceder al crear el menuacute desde el editor de menuacutes
Eventos de l Menuacute Cuando en tiempo de disentildeo seleccionamos la opcioacuten de menuacute de un formularlo que estamos creando Visual Basic muestra el procedimiento de evento click de dicho elemento del menuacute
En el caso del tiacutetulo del menuacute el prccediacuternlento click tiene con16 accioacuten predeterminada la de mostrar iacuteosetement os de (nenuacute del nivel inferior por leiacute que no seraacute necesario tener que program ar esta accioacuten Esto tambieacuten sepuede apljea~j a Ist_element s de un menuacute que son a su vez tiacutetulos de submenuacutes
En casi todos los casos tienes que utilizar una operen del menuacute para descargar el formulario d para finalizar la aplicaci oacuten] ~ p QP9iacuteoacuten qe te~tq s - l i r ~uele ser el maacutes apropiado ~
La instruccioacuten Unload descarga de memoria el [ormularioque se especifique Se uedeliexclusar d~ v ri~s f9rn1as QO riexcl ejemplo ~s i e~ta ~ds dentroiexcl deup Form lIam do trmconsutta poacutedremoacutes 1salirmiddot deacute eacutel de dos formas Una es UnloaH e o Unload frmconsulta
FINDES 16
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizacioacuten de uadros de Diaacutelogo
La mayoriacutea de las aplicaciones Windows hacen uso de [os cuadros de d iaacutelogo para establecer las opciones o introducir informacioacuten que necesitan para realizar una accioacuten indicada por el usuario Otro uso posible de los cuadros de diaacutelogo es presentar informacioacuten al usuario
Los cuadros de diaacutelogo se caracterizan por ser modales -y no permitir poder cambiar el tama- o de la ventana ademaacute sno deberaacuten tener una barra de menuacutes despleg ables
Cuadros de Mensaje ( sgbox)
Las cajas de mensajes o Message Box tienen unq funcioacuten clara que es la de mostrar una determinada informacioacuten aviso o prequnta para que el usuario tenga conocimiento de ella y actuacutee
Sintaxis La sintaxis completa de la funcioacuten Msg ox es
sgBox(mensaje[botones][t itulo] [archivoAyuda] [contexto])
MsgBox(prompt[bu~tonsiiexcl[titl e])
Descr peacuteiacuteon I1 Parterompt Req u~rido Expresiqn de cadena que representa el ~p ro rriacute pJ en el cuadro
de di~logo La longitud maacutexima de-promptesdeaprbxirrradamente 1024 caracteres seguacuten el ancho de los caracteres utilizados Si prompt consta de maacutes de una liacutenea puede separarlos utilizando un caraacutecter de retor o de carro (Chr(13)) o un ceacutetraacutecteriexcl de avance de liacutenea (Chr(10)) o na combinaci oacutende caracteres dE retcrn ode carro -ayance de liacutenea (Chr(13) y Ch r(i O)) ent ~e c~da liacuteheay la sigbiknte
buttons Opcional Expresioacuten numeacuterica que corresponde a la suma de los valores que especifican el nuacutemero y el middottipo de los botones que se pretenden
mostrar el e~tiIQ de icqnoacutetqJe ~e va a uacutetUiacute4al la identidad del botoacuten preacuted
1eterrnfhado y la moacutedalidad d eacutel cuadro deacute mensajes sise omite este
argumento el valor predeterminado para buttons es O ti le Opcional Expresioacuten de cadena que se muestra en la barra de iacutetulo del
cuadro de diaacutelogo Si se omite title en la barra de tiacutetulo se coloca el nomb re de la a licacioacuten
FINDE8 17
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
El paraacutemetro botones es de valor numeacuterico y ademaacutes de [os botones que aparecen en el cuadro de diaacutelogo tambieacuten puede indicar el icono que acompantildee al mensaje y el tipo de diaacutelogo modal que es
Cuando un cuadro de diaacutelogo es modal de aplicacioacuten tienes que cerrarlo ara interactuar con otra ventana de la misma aplicacioacuten Cuando es un cuadro de diaacutelogo modal del sistema todas las aplicacioneacutes uumleeacutest n ejecutaacutendose se suspenden hasta que el usuario responda al cuadro de diaacutelogo
Los valores que pueden tomar ef paraacutemetro botones son
VbM 59BoxRight VbMsgBox RtlReading
como la
FINDES 18
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Para crear un separador basta con introducir un guioacuten (-) en la propiedad Caption No se puede crear un elemento en un nivel inferior inmediatamente despueacutes de un separador es decir no puedes tener como tiacutetulo de menuacute un separador
Teclas de Meacutetodo Abreviado Al introducir el caraacutecter amp el menuacute estaacute creando una tecla de acceso a dicho objeto Esta tecla se representa subraya daen el texto de menuacute y representa la tecla d I teclado que el usuario puede pulsar para ejecutar la accioacuten Dich a tecla se corresp onde con la letra que sigue al caracter amp en la propiedad Caption del objeacuteto menuacute
Si s rata de un tiacutetulo de menuacute tienes que usar la tecla de acceso en combinacloacuten con la tecla [Alt] Una vez abierto un tituloacute qe menuacute y despleqado sus elementos para acceder raacutepidamente a uno de ellos puedes usar la tecla de acceso directamente
Tenes que tener cuidado en no utilizar las mismas teclas de acceso para elementos de u mi mo nivel de menuacute yaque entonces no funcionaraacuten
El ditor de menuacute tambieacuten admite la incorporacioacuten de teclas d e meacutetodo abreviado Las abreviaturas del menuacute son combinaciones de teclas que se pueden utili a l n lugar de elegir el elemento del menucorrespondiente
ara crear una tecla de meacutetodo abreviado tienes que utilizar la propiedad Shortcut a la que puedes acceder al crear el menuacute desde el editor de menuacutes
Eventos de l Menuacute Cuando en tiempo de disentildeo seleccionamos la opcioacuten de menuacute de un formularlo que estamos creando Visual Basic muestra el procedimiento de evento click de dicho elemento del menuacute
En el caso del tiacutetulo del menuacute el prccediacuternlento click tiene con16 accioacuten predeterminada la de mostrar iacuteosetement os de (nenuacute del nivel inferior por leiacute que no seraacute necesario tener que program ar esta accioacuten Esto tambieacuten sepuede apljea~j a Ist_element s de un menuacute que son a su vez tiacutetulos de submenuacutes
En casi todos los casos tienes que utilizar una operen del menuacute para descargar el formulario d para finalizar la aplicaci oacuten] ~ p QP9iacuteoacuten qe te~tq s - l i r ~uele ser el maacutes apropiado ~
La instruccioacuten Unload descarga de memoria el [ormularioque se especifique Se uedeliexclusar d~ v ri~s f9rn1as QO riexcl ejemplo ~s i e~ta ~ds dentroiexcl deup Form lIam do trmconsutta poacutedremoacutes 1salirmiddot deacute eacutel de dos formas Una es UnloaH e o Unload frmconsulta
FINDES 16
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizacioacuten de uadros de Diaacutelogo
La mayoriacutea de las aplicaciones Windows hacen uso de [os cuadros de d iaacutelogo para establecer las opciones o introducir informacioacuten que necesitan para realizar una accioacuten indicada por el usuario Otro uso posible de los cuadros de diaacutelogo es presentar informacioacuten al usuario
Los cuadros de diaacutelogo se caracterizan por ser modales -y no permitir poder cambiar el tama- o de la ventana ademaacute sno deberaacuten tener una barra de menuacutes despleg ables
Cuadros de Mensaje ( sgbox)
Las cajas de mensajes o Message Box tienen unq funcioacuten clara que es la de mostrar una determinada informacioacuten aviso o prequnta para que el usuario tenga conocimiento de ella y actuacutee
Sintaxis La sintaxis completa de la funcioacuten Msg ox es
sgBox(mensaje[botones][t itulo] [archivoAyuda] [contexto])
MsgBox(prompt[bu~tonsiiexcl[titl e])
Descr peacuteiacuteon I1 Parterompt Req u~rido Expresiqn de cadena que representa el ~p ro rriacute pJ en el cuadro
de di~logo La longitud maacutexima de-promptesdeaprbxirrradamente 1024 caracteres seguacuten el ancho de los caracteres utilizados Si prompt consta de maacutes de una liacutenea puede separarlos utilizando un caraacutecter de retor o de carro (Chr(13)) o un ceacutetraacutecteriexcl de avance de liacutenea (Chr(10)) o na combinaci oacutende caracteres dE retcrn ode carro -ayance de liacutenea (Chr(13) y Ch r(i O)) ent ~e c~da liacuteheay la sigbiknte
buttons Opcional Expresioacuten numeacuterica que corresponde a la suma de los valores que especifican el nuacutemero y el middottipo de los botones que se pretenden
mostrar el e~tiIQ de icqnoacutetqJe ~e va a uacutetUiacute4al la identidad del botoacuten preacuted
1eterrnfhado y la moacutedalidad d eacutel cuadro deacute mensajes sise omite este
argumento el valor predeterminado para buttons es O ti le Opcional Expresioacuten de cadena que se muestra en la barra de iacutetulo del
cuadro de diaacutelogo Si se omite title en la barra de tiacutetulo se coloca el nomb re de la a licacioacuten
FINDE8 17
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
El paraacutemetro botones es de valor numeacuterico y ademaacutes de [os botones que aparecen en el cuadro de diaacutelogo tambieacuten puede indicar el icono que acompantildee al mensaje y el tipo de diaacutelogo modal que es
Cuando un cuadro de diaacutelogo es modal de aplicacioacuten tienes que cerrarlo ara interactuar con otra ventana de la misma aplicacioacuten Cuando es un cuadro de diaacutelogo modal del sistema todas las aplicacioneacutes uumleeacutest n ejecutaacutendose se suspenden hasta que el usuario responda al cuadro de diaacutelogo
Los valores que pueden tomar ef paraacutemetro botones son
VbM 59BoxRight VbMsgBox RtlReading
como la
FINDES 18
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Uti lizacioacuten de uadros de Diaacutelogo
La mayoriacutea de las aplicaciones Windows hacen uso de [os cuadros de d iaacutelogo para establecer las opciones o introducir informacioacuten que necesitan para realizar una accioacuten indicada por el usuario Otro uso posible de los cuadros de diaacutelogo es presentar informacioacuten al usuario
Los cuadros de diaacutelogo se caracterizan por ser modales -y no permitir poder cambiar el tama- o de la ventana ademaacute sno deberaacuten tener una barra de menuacutes despleg ables
Cuadros de Mensaje ( sgbox)
Las cajas de mensajes o Message Box tienen unq funcioacuten clara que es la de mostrar una determinada informacioacuten aviso o prequnta para que el usuario tenga conocimiento de ella y actuacutee
Sintaxis La sintaxis completa de la funcioacuten Msg ox es
sgBox(mensaje[botones][t itulo] [archivoAyuda] [contexto])
MsgBox(prompt[bu~tonsiiexcl[titl e])
Descr peacuteiacuteon I1 Parterompt Req u~rido Expresiqn de cadena que representa el ~p ro rriacute pJ en el cuadro
de di~logo La longitud maacutexima de-promptesdeaprbxirrradamente 1024 caracteres seguacuten el ancho de los caracteres utilizados Si prompt consta de maacutes de una liacutenea puede separarlos utilizando un caraacutecter de retor o de carro (Chr(13)) o un ceacutetraacutecteriexcl de avance de liacutenea (Chr(10)) o na combinaci oacutende caracteres dE retcrn ode carro -ayance de liacutenea (Chr(13) y Ch r(i O)) ent ~e c~da liacuteheay la sigbiknte
buttons Opcional Expresioacuten numeacuterica que corresponde a la suma de los valores que especifican el nuacutemero y el middottipo de los botones que se pretenden
mostrar el e~tiIQ de icqnoacutetqJe ~e va a uacutetUiacute4al la identidad del botoacuten preacuted
1eterrnfhado y la moacutedalidad d eacutel cuadro deacute mensajes sise omite este
argumento el valor predeterminado para buttons es O ti le Opcional Expresioacuten de cadena que se muestra en la barra de iacutetulo del
cuadro de diaacutelogo Si se omite title en la barra de tiacutetulo se coloca el nomb re de la a licacioacuten
FINDE8 17
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
El paraacutemetro botones es de valor numeacuterico y ademaacutes de [os botones que aparecen en el cuadro de diaacutelogo tambieacuten puede indicar el icono que acompantildee al mensaje y el tipo de diaacutelogo modal que es
Cuando un cuadro de diaacutelogo es modal de aplicacioacuten tienes que cerrarlo ara interactuar con otra ventana de la misma aplicacioacuten Cuando es un cuadro de diaacutelogo modal del sistema todas las aplicacioneacutes uumleeacutest n ejecutaacutendose se suspenden hasta que el usuario responda al cuadro de diaacutelogo
Los valores que pueden tomar ef paraacutemetro botones son
VbM 59BoxRight VbMsgBox RtlReading
como la
FINDES 18
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
El paraacutemetro botones es de valor numeacuterico y ademaacutes de [os botones que aparecen en el cuadro de diaacutelogo tambieacuten puede indicar el icono que acompantildee al mensaje y el tipo de diaacutelogo modal que es
Cuando un cuadro de diaacutelogo es modal de aplicacioacuten tienes que cerrarlo ara interactuar con otra ventana de la misma aplicacioacuten Cuando es un cuadro de diaacutelogo modal del sistema todas las aplicacioneacutes uumleeacutest n ejecutaacutendose se suspenden hasta que el usuario responda al cuadro de diaacutelogo
Los valores que pueden tomar ef paraacutemetro botones son
VbM 59BoxRight VbMsgBox RtlReading
como la
FINDES 18
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Ejemplos de Uso
MsgBox Mensaje
Hay diferentes formas de mostrar informacioacuten 1) El aviso es siacute que tiene por objetivo mostrar-una informacioacuten de intereacutes 2) El aviso con espera de respuesta- que muestra una informacioacuten esperand o que el usuario seleccione una de las respuestas posibles pa raacuteq~e el programa la trate
Una caja de mensaje puede serpor ejemplo la instruccioacuten MsgBox Hote Por defecto la caja de mensaje seraacute ~ i m i l a r a esta~
ebe darse cuenta de alguflas cosas En primer lugar el mensaje Hote que seacuteescribe a continuacioacuten de la palabra MsgBox tambieacuten debe darse cuenta de l botoacuten Aceo ter que tiene el Focus de la ventana activa y que soacutelo hay ese botoacuten y por uacuteltimo el-tiacutetulo de la ventana
Podemos modificar estos paraacutemetros para alcanzar nuestros objetivos por eso vamos a escribir ahora este coacutedigo MsgBox Hoie IIEjempo ll El resultado es
Ejemplo 1m
H
Como podemos apreciar en1 ~ cgqigo la caja q mensaj~middotP9~gt~J~ Cm tnulo Ejemplo y el mensaje pero es posible que deseemos escribir un mensaje en varias liacutenea con salto de paacuterrafo Nada tan faacutecil como este coacutedigo por ejemplo MsgBox Hole amp v CrU amp Esto es un ejemplo Ejemplo El resultadoiacutees
Ejemplo ~ middotmiddot r middotmiddotH EshJ es un eiel1plo
FINDES 19
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
MsgBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera a que el usuario haga clic en un botoacuten y devuelve un tipo Integer correspondiente al botoacuten elegido por el usuario
Ejemplo de la funcioacuten MsgBox
En este ejemplo se utiliza la funcioacuten MsgBox para mostrasun mensaje de error criacutetico en un cuadro de diaacutelogo con botones Siacute y No El botoacuten No se considera la r s e ta predeterminada El valor devuelto por la funcioacuten MsgBox depende del botoacuten elegido por el usuario
(Declaracioacuten de Variables) ji Dim Mensaje Estilo Tiacutetulo Ayuda Ctxt Res8 ueacute~ta MiCaden
(Asignacioacuten de Valore s a Variables) Mensaje == iquestDesea continuar Define el mensaje Estilo == vbYesNo + vbC rjtical + vbDefaultButton2 Qef ine los botones T iacutetulo == Demostracioacuten de MsgBox JEfine el tiacutetulo
(Asignacioacuten de Valor a Variable mediante el MsgBox) Respuesta = MsgBox(Mensaje Estil o Tiacutetulo) Muestra el mensaje
(Utilizacioacuten de la Variabl e Respuesta) If Respuesta == vbYes Then El usuario el igioacute el patoacuten Siacute
MiCadena Siacute Ejecuta una accioacuten t Else Ef usuar io eIigioacute el botoacuten No
MiCadena == Noamp Ejecutauumlniquestdaccioacuten End If
FINDES
- - - -- - _ _ - shy
20
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
i
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Cuadr d Entrada InputBox (Funcioacuten)
Muestra un mensaje en un cuadro de diaacutelogo espera que el usuario escrib a u texto o haga clic en un botoacuten y devuelve un tipo String con el contenido del cuadro de texto
Sintaxis
InputBox(prompt[title] [default] Ixpos] [ypp s])
r- - - - - - shyi Argumento Descrippioacuteniprompt Requerid oacute Expres ioacuten de cadena que se muestra com mensaje c4n el cuadro de diaacutelogo La longitud maacutexima d
prompt es de aproximadamente 1024 caracteres seguacuten ancho de loszcaracteres utilizados Pt prompt consta de maacute de una liacutenea puede separarlos u til izando un caraacutecter d retorno de carro (Ghr( 13)) un caraacutecter de avance de liacutene (Chr(10)) o una combinaciori de los caracteres de retorno d
I
carro-avance de liacutenea (Chr(13) y Chr(1 O)) entre cada liacutenea y la si guten t~
tit le Opci 6nat iexclExpresioacuten qe caeurolena que semuestra en (Si barra de tiacutetu lg de l cua ~ro de dlaacutel09Q Si o [te t lt le en la barra de tiacutetulo se colocael npmbreacute de laaacuteplicacioacuten
defau lt Opcional Exgresioacuten de cac en que se muestta en 1el cuadro ae texto como respueacutesta predeteYfntildeTnadiquest ClJantildedo no se suministra una cadena Si omite default se muestra el cuadro de texto vaciacuteo
xpos iexcl Opcional Expresioacuten num eacuterica que especifica en twips I Clistaacuten~if er) s eacutentidohoriacutezcntal entre el oordei~_quumlt~rd o ael cuadre ae diaacutelogo yelborde izquierdo de B pantalla Si se omite xpos el cuadro de diaacutelogo se centra horizontalmente
ypos Opc (cgtn~I middot Exp~e$ioacuten nUrr)eacuteieacutea ~ue e_~pe~ifiacuteieacutea erJlttv~iexcl ps la disectt~nciiexcll eh pen t l~p iexclve rt (9a liexcl entreacute elbojde s ~ iexclii~ r ro r 9~) ~quadro de diaacutelogo y el borde superior de la pantalla Si se omite ypos el cuadro de diaacutelogo se coloca a aproximadamente un tercio de la altura de la pantalla desde el borde superior de misma
FINDES 21
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
E emplo de a funcioacuten InputBox
En este ejemplo se muestran distintas maneras de utilizar la funcioacuten InputBox para indicar al usuario que debe introducir un vaI9r $ i se omiten las posiciones x e y el diaacutelogo se centra automaacuteticamente seguacuten los ejes respectivos La variable y alue contiene el valor introducido por eJ usuario si eacuteste hace elle sobre Aceptar o presiona ENT ER Si el usuario hace clic sontildere Cancelar se devuejke una cadena de caracteres de ongitud cero
( eel racioacuten de Variables) Dim Mensaje Tiacutetulo ValorPred MiValor
(Asignacioacuten de Valores a Variables) Mensaje = Introduzca un nuacutemero del 1 a 3 l Establece elmensaje T iacutetu lo raquo Demostracioacuten de lnputBox Establece eliexcltiacutetulo I
Val rPred = 1 Establece el valor predeterm nado I
(Asignacioacuten de Valor a Variablemediante el InputBox)
I Muestra el mensaje el tiacutetulo y el valor predeterminado MIValor = InputBox(MensajeTiacutetulo ValorPred)
I Se muestra el diaacutelogo en la posicioacuten 1061 OacuteO MIValor =InputBox(Mensaje Tiacutetulo ValorPred 100 100)
FJNDES 22
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Insertando ontroles Baacutesicos
Al disentildear una aplicacioacuten con Visual Basic lo primero que deberemos hacer es planear la interfaz que estaacute constituida por el conjunto de formularios que aparecen a lo largo de la ejecucioacuten de la aplicacioacuten
Los controles son los elementos graacutefiCos que aparecen en los formularios y que sirven para obtener datos y presentar la saliacuteda que produce la aplicacioacuten
Entre los numerosos controles que presenta Visual Basic caben destacar los baacutesicos que aparecen en casi todas las aplicac iones de Visual Basleacute-como etiquetas cuadros de t xto botones de comando etc G~a a uacutenode estos controles son tratados como objetos en Visual Basic por lo que no t i~ nes que olvidar que tienen su propio conjunto de propiedades meacutetodos y eventos
Entrada de Datos Dos controles muy relacionados y que se utilizan en la funci oacutende entrada de dato son las etiquetas y los cuadros-de texto
Las etiquetas son controles que nos permiten mostrar texto en los formularios y que tiene la particularidad de que el usuario no puede modificar El control de etiqueta es
A Los cuadros de texto son el control estaacutendar de entrada de datos en Visual asic Permiten al usuario de middotIa~apn~acin introCjuci r informacioacuten El control del cuadro de texto es
rabi
Algunas propiedades del control etiqueta spn Proiedad Definlcioacuten- ---------~~~----~--- i
[AJignmEl ll t I Estab tec~ 1 9 -a l i~~aG ioacuten derteXhgt de I ~ etiqueta --__ _bull- -_~ ~_------- [-- - -------_ _ r ------ - shy
iAtJtosit ejSI sP yfl1qr esi Trua eL anlafiacuteq da-la etiquumleta se aq3pta iexcl [autom aacuteticamente a su contenido
[Caption iexclTexto quese visualiza en la etiquet a [Enab l edi lpe r~ i te-o ~~ iriacuteteract~afqo~ --j ~u -- -- ~_ _ --__ -shyla J-tiq e-ta shy middotshy----- ~ -~------ ~------ - ~ - _ _ 0-_ - _~_ _ _ _ shy
jFont Estaacuteblece la fLiente tamantildet yaspedo deltexto -Los cuadros de texto son semejantes a las etiquetas pero con la diferencia que el usuario puede modificar su contenido El texto que se introduce puede er tanto numeacuterico como alfanumeacuterico (nuacutemeros y letras)
FINDES 23
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A diferencia de la etiqueta el tamantildeo del texto es fijo al no permitir la propiedad autosize
Algunas propiedades del objeto cuadro de texto son
P ropmiddote~ad ID~~ i n cioacuten ------__bull___--~
IAlignment iA li ne~cioacutentildedeTajntilde-iorrnacioacuteri introducida -r-- - - ---- Imiddot middot_middot middotmiddot~middot--middot_ middot ~ - - - ----gt-- _ bull_- -_--_ _ -~
lE bl d iexclPermite o no Qua se puedan realtzakacciones sobre el cuadro de J na e t t bulli i ex o l - --- --shyIFontildet----middot--middot- middot-Tigual que en caso de las etiq~et~middots- -middotmiddot- - --_~_ shy
iexcl~XuumlIUuml~ntildee-middot middot-middot-middotfPermite inlr(iexclucimiacuteaacutesde una liacutenea d~ t~xto eh ei-c-uumlad~oacute---middotmiddot_ -middot- - - -
pmiddotmiddot_ -middot- -d-Cmiddot-hmiddot- iexclEstableceacute ~ I caraacutecte~ que se-iexcluestraacuteaT real iexcl~ar una entradaentilde- el asswor ar 1 [cojeto Soacutelo se mostraraacute dicho caraacutecter rSc~o IlBas -- Muumlestra barras de desp lazamiento ---------f
lTablndex ---jEs-tabieee el orden de i~buumllacjOacuten fijadOp~rae1otn eto ~ __ _ _ __- _ iexcl _ --- _ _ c _ c _--middot
T bSt [lndica si al utilizar el tabulador se puede =i~sp lazar entre los iexcl a op lcontroleacutesdel formulario ______-__ ~ --_ _ _ -_ --__ - --- shyiText iexclTexto q e se visualizaen el control---- - --- - - ---------
Control Marco S utiliza para estructurar el formulario en variacuteas s cciones agrupando n eacutestas los controles para que la lectura sea maacutes sencilla EI middotcontrol que tienes que utilizar para esto el control Marco (Frame GroupBox)
La uacutenica propied ad i n t~res ante de un c9ntrol marco esj l ~ p r~p i ed ~d Caption que se refiere al texto que Se presenta erl la parte superior izquierda del control
bull iiexcl
El control marco actuacutea como contenedor de otros controles asiacute que las propiedades Left Right y Top de un objeto contenido en un marco se establecen en relacioacuten al objeto contenedor Al mover un marco tambi eacuten se mueve los controles que contenga para ello dep~r3I]lP9 crear primero el marco y despu eacutes los controles quequerp s que con tenga
FINDES 24
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Botones de Comando El botoacuten de comando (CommandButton Button) es muy sencillo por lo que no tienes que establecer muchas propiedades Con la propiedad Caption establecemos el texto que apareceraacute en el botoacuten Tambieacuten se pueden crear teclas de acceso al botoacuten
~
El uso principal de los botones de ~oma n do es realizar acciones en la aplicacioacuten Para po er llevar a cabo las acciones sobre un botoacuten pulsando Intro tienes que dejar su prop iedad Default a True ~
Casillas de verificacioacuten Nos dan la oportunidad de Roder elegir entre distintaacutes opciones e
Las casillas de verificacioacuten (CheckBo x) ermiten establecer opciones que no son excluyentes entre siacute es decir puedes seleccionar una o maacutes de una
p
Una casilla de verificacioacuten puede estar activada (cheked) o desactivada (unchecked) Ademaacutes la casilla puede estar atenuada (grayed) que nos indica que el objeto no estaacute dis onible La propiedad que tiene estos es Value
El evento maacutes utilizado en este tipo-de objetos esel momento en el que se pulsa en la casil la En esta situacioacuten el usuario qU iacutee re~ indfcar que desea activar o desactivar la casi lla dependiendo del valor que tenga en ese momento
Botones de Opcioacuten L s botones de epcioacuten (OptiofiexclButtoll RadioButton) tambieacuten permiten presentar opc iones al usuario pero con la partlciilarid iacuted-eue soacutelbpuedes seleccionar una de dichas opciones al mismo tiempo
Si quieres ~ue en un mrsmo forrmllarlo se p(j~da selecclanarjn aacutes d eacute un botoacuten de opcioacuten tienes que crear distintos conjuntos de botones de opcioacuten El botoacuten de opcioacuten s oacutelo-puede tener dos valores en la propiedad Value (Tr e y False) true si esta activado y talsesl eacutesta desactiVado iexcl bull
iexcl Oacutec 11 17 ~ lt bull
Es importante utilizar los botones de opcioacuten soacutelo cuando el nuacutemero de opciones p sibles sea fijo a lo largo de la vida de la aplicacioacuten En caso contrario la inclusioacuten de una opcioacuten o modificacioacuten de alguna de las existentes podriacutea implicar la modificacioacuten de partes de la aplicacioacuten que trabajen con dichas opciones lo que resulta poco deseable
FINDES 25
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
--
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
r - - Elementos raacutefico
Control U ne La incorporacioacuten de elementos graacuteficos a las aplicaciones hace que tenga una interfaz maacutes amigable para el usuario
Visual Basic incorpora una serie de controles graacuteficos que permiten la incorporacioacuten de elementos de este tipo a tus formularios
P ra agregar liacuteneas a los forrT14larios utilizaremos el controi U e
~
Este control tiene pocas propiedades se puede establecer -Eiexcl l grosor mediante la ropiedad BorderWidth o el color mediante BorderColor Tam bieacuten se puede cambiar el
estilo de la liacutenea con la propiedad BorderStyle
Control Shape Ca el control Shape (Forma) pod eacutefnos dibujar distintas figuras como ciacuterc los rectaacutengulos oacutevalos
Para agregar figuras a los formul arios utilizaremos el control Shape
La apariencia lnlclal de un objetd Shape es slernpre un rectaacuteng8 1 0 ~ ElTeacuteh~ caracteriacutestica se establece a traveacutes de la ropiedad Sh aacutepe shy
Otra propiedad interesante de este control es ~ I relleno de las figuras que stableceremos con la prop iedad FillStyfe
Tambieacuten mediante la propiedad FillColor podraacutes establecer el color de dicho relleno el color de iacuteos bordes con BorderColor
-
FI DES 26
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema4 E tr cturas y Elementos Fundamentales de Progra acioacuten
Tipos de Procedimient s En Visual Basic existen tres tipos de prQce9imiacuteentos Sub Function y Pro erty
Los procedimientos Function se qistintildeguen de los Sub porque siempre devuelven un valor asociado al nombre del procedimiento Este valor p~ued e ser usado por el coacutedigo que lo ha llamado Los ~ prbced im i en tos Property slrven para crear y manipular propiedades personalizadas de los objetos
Crear procedimientos Sub Para crear un procedimiento tienes dos alternativas una utiliza r la opcioacuten Procedi miento del menuacute Insertar o escribirlo completamente en la ventana de coacutedigo
En la definicioacuten de un pr o c ~dimiento Sub Ruedes diferenciar dos partes la cabecera u el uerpo del procedimiento
La cabecera del procedimiento se indica el aacutembito (si es puacuteblico o privado) del mismo su ipo (mediante la palabra Sub) su nombre y la lista de paraacutemetros (entre pareacutentesis)
La lista de paraacutemetros sirve para poder comunicar el procedimiento con el r st de coacutedigo de la aplicacioacuten Para ello se utiliza un par aacutemetro que indique de alguna forma dicha circunstancia Un paraacutemetro se compo rta pomo una variable en el cuerpo del procedimiento pudiendo simplemente utilizar su valor o incluso modificarlo
Cuando un proceq1Q1ient~ quiere comuni~ar aJguacuterLdeacutelto a laapn~aci~Ht tiene que u ilizar un paraacutemetro para ello es decir puede servir bien para comunicar un alor al procedimiento o bien paiexclfa que eacutes e Id comunique a lamiddot middotap HcaG LOacute~
Llamar al procedimiento Sub P ra llamar a un procedimiento sub lo podemos hacer de dos formas Call NombreSub (paraacutemetros)
o tambieacuten NombreSuD paraacutemetros
Los arqumentos deben ~co rh eacuteid iacute r en la llamada eacuten nuacutemeto Y tip~ con la detinicloacuten del procedimi ent6J middot 1 j middot shy -Oacutegt
La llamada al procedimiento seraacute como una instruccioacuten maacutes del lenguaje donde se especifica el nombre del procedimiento seguido sin pareacutentesis de una liacutenea de argumentos que deberaacute coincidir en nuacutemero y tipo con los paraacutemetros de la definicioacuten y que daraacuten valor a los paraacutemetros para que se ejecute el cuerpo del procedimiento
FI DES 27
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Una vez se llega a la instruccioacuten End Sub del proced imiento el flujo de ejecucioacuten vue lve a la liacutenea siguiente a la que ocasionoacute la llamada
Crear procedimientos Function El concepto de procedimiento es vaacutelido para un procedimiento Funct ion ero I di erencia con los procedimientos Sub middotsiempre tiene gue devolver un valor asociado al nombre del mismo
En el cuerpo del procecimiento apareceraacute una asignacioacuten ~e l valor a devolver con el nombre del procedimiento El uso de los procedimientos Function suele estar maacutes restringido que el de los procedimientos Sub
Un procedimiento Function es utilizado cuando necesitamos obtener un uacutenico valor resul ado de un caacutelculo o proceso a realizar Un procedimiento de este tipo no deberiacutea realizar maacutes de lo que se middot1$ pide ni mostra r mellg1ljes ni devolver maacutes valore en los paraacutemetros etc
La diferencia en la definicioacuten de un procedimiento Sub y un Fu nction comienza en la cabecera El procedimiento Function tambieacuten puede conten er una lista de paraacutemetros no debe aparecer ninguno que sirva para dev olver el valor q u~ se calcula ya que dicho valor tiene que asociarse con el mismo nombre del procedlrni eacutento Function
Ade aacutes al tener que devolver un valor asociado al nomo e del procedimiento Function el procedimiento tiene que tener un tipo de datos Esto se especifica indicand la claacuteusula AS Tipo al final de la cabecera de-los proacuteceaimientos una vez indicada la lista de paraacutemetros Si no se especifica ninguacuten tipo de datos se aplica la misma regla que con las variables es decir tendraacute el tipo Variant
Llamar al procediacute iento Fuacutencti~gtn Asiacute como la llamad al procedimiento Sub es como una instruccioacuten maacutes del lenguaje la llamada al procedimiento Eunctioh sueleestarsituada ceuroAJok~aacuterte de una expr sioacuten y n como una liacutenea independiente de su coacutedigo
Ya que el procedimiento Function devuelye un valor asociado a su nombre este valor suele asign 4r~~ f alguna vari9ble para poacuteder utiltzarlo en e l q5q igo qu e h~ reiexcla~ i zado la llamada ~ 1
La sintaxis seraacute la siquiente No mbrev arlalbe NOacutenJbreF~neacutetiQn(LJs1ap~raacutemetros)
i - f-
Si quieres utilizar el valor que devuelve el procedimiento Function tienes que encerrar la lista de argumentos en la llamada con pareacutentesis Esto no era asiacute en el ca o del procedimiento Sub
FINDES 28
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Visual Basic incorpora un gran nuacutemero de funciones que puedes utilizar en tu ~
aplicaciones entre ellas cabe destacar MsgBox InputBox Date
Variable Una variable es una ubicacioacuten temporal de memoria donde se almacenan datos que interesan retener durante la ejecucioacuten de la aplicacioacuten Las variables pueden contener texto valores numeacutericos fechas o propiedades de cierto objeto Es una forma de dar Jombre a una porcioacuten de daacutetos con la que deseamos trabajar en nuestro programa
Las variables se caracterizan por un nombre que la~ ldentlticaiy por un tipo de datos que establece el conjunto de valores posibles que pueden contener y operaciones en las que puede participar EJ valor de una variable piacutehede cambiar a lo largo de la vida de eacutesta
Es necesario declarar las jvariables para poder utilizarlas en el programa En Visual asic no es obligatorio pero-si recomendable
Al declarar una variable sereserva memdria para ella y se iacutendica queacute valores puede contener a traveacutes de su tipo d datos Para establecer la declaracioacutertde una variable antes de -ser utilizada en el coacutedigo puedes hacerlo en la ficha snto tno del cuadro de diaacutelogo opCiones
Al activar la casilla Declaracioacuten de la variables re uerida Visual Basic introduce la instruccioacuten Option Explicit en la seccioacuteh de declaraciones de cada moacutedulo nuevo que se cree no de los ya existentes donde tienes que introducirlos manualment Esta instruccioacuten obliga a declarar las variables antes de utilizarlas lo que es muy recomendable
El uso de las vari~Dl es pueae hqcer-quej la apllcacioacuten seacuteaacute maacutes raacutepida por ejemplo si usas muchas vec e ~ un determinordf-do vator e aconsejable guardarlo en una variable y utilizarla cuando seacute- necesite- qd-e tener- que voiacuteveacuter a eseribit coacutedigo cada vez que quieras llamarla Es maacutes raacutepido el acceso a las variables que a una propiedad de un objeto por lo que tambieacuten es aconsejable guardar el valor de una propiedad en una variable
Vearnos-urre jemplo Dim Variablel lt bull bullgtc 1rv
Variablel f txtE1tradaText t~i~~Ii~atexi =Variablel
iexcliexcly- bull
La forma de declarar una variable es a traveacutes de la instruccioacuten Dim E la liacutenea se declara la variable de nombre Variable1 yal mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla
FINDES 29
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En la segunda liacutenea ya se utiliza la variable En este caso sirve para guardar el valor que existe en un cuadro de texto llamado txtEntrada (representado por la propiedad Text)
En la tercera liacutenea se hace justo lo contrario se utiliza la variable Variable1 para establecer el valor de la propiedad Text del cuadro de texto txtSal ida
Si antildeadimos las siguientes liacuteneas de coacutedigo Variable1 =125 txtNumeroText =Variable1
Hemos establecido una va iable de valor numenco Sin embargo en las anteriores liacuteneas se habiacutea establecido un valor de texto ya que I~ propiedad Text es de ese tipo de datos
En la uacuteltima liacutenea se vuelve a utilizar la variable como origen dela propiedad Text del cuadro de texto txtNuacutemero
Tipos de datos El tipo de datos de una variable establece el nuacutemero de valores que eacutesta puede tener asiacute como el conjunto de operaciones en las que puede tomar parte como op rando
En Visual Basic dicho tipo de datos se especifica al declarar la variable de forma que se guarda espacio en memoria para poder almacenar los valores de dicho tipo de datos
Es importante indicar e tipoae a a~ o s ya que no todos tienen lamisma representaciacute oacuten e memoria ocupando distinto espacio fiacutesico
Visual Basic de forma pregeterininadaj a no ser que se indique el ipo de datos establece el tipo Variant pdf amiddottdampas las variables Asiacute al utilizcfr uumlna-instruccioacuten como Dim NombreVariable se especifica impliacutecitamente el tipo Variant para dicha variable
El tipo Variant es un tipo especial de dato que uede contener cualquier clase de datos excepto ca~enas 0e longitud fijeacuteiexcll Xt iacute f O~ ~~fi n i d9sf por elusuario Al utuumlizar va labtes de este ipo nd heacuteY quepreoacutecuparsede Eifeoacutetuar conversiones entretipes para utilizarlas en distintos contextos -
iexcl
Las va r i1l~ I~~ de tipo jVafiant son mu ~ flexibres p eacuteroacute oacutep uuml p~n mLibQa memoria y disminuqJ6niexcl le la ve oc ieacutelad~ ~
FI DES 30
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver los siguientes tipos de variables
irlQo middotde Datos rEntero (fntildeteger) 2bytes ---- shy
iexclE~terO Lgiquest-(L~n9)--- - -~ ----- t4 bYt~-iquest --- -- - - -- - -~-- --- - --
Slmpie(Single) --- -------14 b~~-- - _ _ shy
fDob [e-(D~-~ble) - _- -~ r8-iexclYt~~--~-- --- -- I ~
iMontilde-e-da-TCurrency) ~- ----iexclS bYt~~--iexcl bull l--_ ~_~_bull _ _ bull_ _ _ _ _ _~------
iexclCadena de caracteres (St ring) iexcl1byte por caraacutecter iBYte------ ---- -_r1middot - 7--- - __ shy - byt~--middot -middot-middotmiddot---middotmiddot--- bull -_shy
iexcl B~ lea n o (Booleaacuten) ~ 2~vte$middot- middot---middot~middot_middotshy F
iacute _ __ ~ __- -- -- ---- N___ v-__ _-~ __W_ _
(Fecha (Date) 8 bytes r - -_ - ~ - __- ~-
iexclObjeto (Object) 14bytes rva ri~ ntmiddot- --middotmiddot middot_ - ---------- ~ r1i3-byte 1 byte por cada eacutea~t~~
Para declarar las variables ebes de usar- su nombre en ingleacutes
Tipos de Datos
El tipo de datos de la var iable puetre serf Byte Boolean Integer Long Currency Single Double Date String Object Variant
Byte Tipo de datos utilizado para contener fiuacuterneros ente oacutes positivos en el interval de O a 255 Las variables de tipo Byte se almacenan como Single nuacutemeros sin signo de 8 bits (1 byte)
oolean T ipo de datos que soacutelo tiene dos va I Qre~ posibles t rue (~1 ) o Fa ls~middot (O) Las variables Boolean se almacenan como nuacutemeros-de 16 bits (2 byi esr
Integer (Entero) ipo de datos que contiene variables enteras almacenadas como nuacutemeros enteros de 2
bytes en el intervalo de -32 768 a 32767 El tipo de datos Integer tambieacuten se utlliza para representar valores en listas El caraacutecter de declaracioacuten de tipo es el signo de porcentaje (r o) quacutee tept~s~ flfa un middot trp9 I llt~g~r eriexcl Visual Basio bull
~
Long (E tero largo) Un entero qeqwatro byt~sJ IJIacute1iexcl n4~e rq QOPJp l ~tb t~n t re -f 14748iexcl3648 ~ 2147 483647 El caraacutecter q~ pEC1arqpiOacuten de tiacutep9 es (8t))q ~eacute representaun tipp Locg enttjsual Baacutesic
Currency (Moneda) T ipo de datos con un intervalo de -9223372036854775808 a 922 3372036854775807 Utilice este tipo de datos para caacutelculos de tipo mo etario y caacutelculos de punto fijo donde es especialmente importante la exactitud El caraacutecter de declaracioacuten de tipo es () que representa el tipo Currency en Visual Basic FINDES 31
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Single (S nc illo) Tipo de datos que almacena variables de precrsion sencilla de punto flot ante como nuacutemeros de punto flotante de 32 bits (4 bytes) en el intervalo de valores de shy3402823E38 a -1401298E-45 para valores negativos y de 1401298E-45 a 3 402823E38 para valores positivos El caraacutecter de declaracioacuten de tipo es el signo de admiracioacuten () que representa el tipo SJngleen Visu I Basic
Double (Doble) Tipo de datos que contiene nuacutemeros de doble precisioacuten de punto flotante como nuacutemeros de 64 bits en el intervalo de -179769313486231 E30S a -4940656458 1247Eshy324 para valores negativos y de 494065645841 47E-324 a 179769313486232E308 para valores positivos El caacuteraacutecter de declaracioacuten de tipo es el signo de nuacutemero () que representa el tipo Double enVisual Basiq
Date (Fecha) Tipo de datos utilizado para almacenar fechas y horas como un nuacutemero real Las variables de tipo Date se almacenan comonuacuteme ros de 64 bits (8 bytes) El valor de la izquierda de los decimales representa la fecha y valor de la derecha representa una hora
String (Texto) Tipo de datos que consiste en una secuencia de caracteres que representa a los caracteres por siacute mismos en vez qe sus valores numeacutericos Un tipo String puede incluir letras nuacutemeros espacios en blanco y signos de punt uaci oacuten El tipo de datos String puede almacenar cadenas de longitud fija en un intervalo de O a aproximadamente 63000 caracteres y cadenas dinaacutemicas en un intervalo de longitud de O a aproximadamente 2 mil millones de caracteres El caraacutecter de declaracioacuten de tipo es el signo de doacutelar ($) que representa-el tipo $tring enAi$ual Basic
Object Tipo de datos que representa cualquierreterencia a un tipo ObjectLas variables bject se almacenan comodirecclories Ee 32 bits (4~bytes) que haacutecenreacutefrencia a objetos
Var lant Un tipo de datos especial que contiene datos numeacutericos de cadena o de fecha asiacute om o tipos h~f iexcln i qo~ ppr rel usuario y los vC-lo ~e$ e~p~ci l e~ ~ EIllPty y Null El tipo de
datos Variaht fiJOacuteelun tart)afld de alrnacenami~riacutetoacute rUJmeacutecicb Jj ~ 16 bytes y uede contener datos hasta el intervalo de un tipo Decimal o un tamantildeo de almac namiento de caracteres de 22 bytes (m aacutes la longitud dE( caden~y puege almacenar cualquier texto La fUlIacute9toacuten ~VarTYlJe defir e ~l trqtam)elt~o que reciben 16~ iacute datos de tiacute Variant Todas laS vahableacutes son deiacute tipogtVaHanf ai menos que se deeacutelareacutedexpliacutecitamente como de cualquier otro tipo
FINDES 32
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Constantes Cuando un valor se repite frecuentemente es interesante guardarlo en una variable Las constantes son semejantes a las variables pero su valor no puede cambiar a lo largo de la aplicacioacuten Para utilizar una constante hay que declararla previamente La forma de declararla es a traveacutes de de la instruccioacuten Const NombreConstante = Expresioacuten donde la expresioacuten seraacute un valor IiJeral o un conjunto de palabras que se evaluacuteen a un valor vaacutelido
Operadores de Visual Baslc En Visual Basic existe un grq t nuacutemero de operadores que sepueden utilizar para crear foacutermulas
Los operadores maacutes utilizaeacuteios en una aplicacioacuten de Visual Basic son los siguientes
Operador Operacioacuten querea iza rtmiddotmiddotmiddot--middotmiddot---- fS~ma i Concatenacioacuten de cadenas de caracteres )
r------ --fRe-sta
f - rMuiacutet i l a - shy-- p~ric--c-iexclo n shy
iexcliexcl_ [5iexclviexcl siexcloacute ~l
f -- Oivisioacuten entera--shy~ iexcl bull
r--- t o d e l ~ ~lt- -v-- i n-e -t--e-raiexclMod Res---a dI ls-o- -n -------middotmiddot----------~ ----__- shy ~----------)11 IExponenciacioacuten
[amp-- - -iexcl-Concatenacioacuten de c~deacute na de caracteres
FINDES 33
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
ema 5 Sen netas o E t ructuras de Control
Viacutesual Basic incorpora estructuras de control que permiten controlar el flujo de la ejecucioacuten de un programa si no existen estas estructuras el coacutedigo se ejecutaraacute de arriba hacia abajo
Entre las estructuras de control cabe citar las estructuras de decis ioacute n y las estructuras de repeticioacuten
Expresiones Loacutegicas Visual Basic incorpora una se rie de Operadores de ~ompa racioacuten que nos son uacutetiles a la hora de establecer cond iciones
= Igual a ltgt Dist into a lt tenor que gt Mayor que lt= ~inoroigu a que gt= Maacuteyor o igual que
Ademaacutes existen los llamados operadores loacutegicos que nos permiten establecer condiciones que dependan de maacutes de un critEJrio de-selecci oacuten
Todos los operadores hacen que la expresioacuten en la que se encuentren se evaluacutea a verdadero o falso sin posibilidad de cua lquieiexcl otro valor
-
Estas exp resiones son And exp1 And exp2 donde se evaluacutea a verdaderosolo en el caso que el exp1 como exp2 se evaluacuteen a verdadero En Cualqulr otro casose evaluacutea aiacutealso ~ ~
Or exp1 Or exp2 donde se evaluacutea a verdadero cuando alguna de las expresiones exp1 o exp2 se evaluacutea a verdadero
j
Not Not eX~1 6qpi se ~ a l uacutea a veradeto si e)lt81 eacutes falsQy se evaacute l ~a B falso si exp1 es verdadero l bull bull bull
Xor e~pJ ) O[PXR2 s~ ~v aluacute~ ~ y~rdade rsoacuteld eacuten el caacutesID Qe qwiexcleacute una y ~qlc~ una ge las expresiones eacutexpto e~p se evqlu~q~eldpq~ rq i
FINDES 34
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IfThen Ise La instruccioacuten iacutef-Then-Else es la estructura claacutesica de decisioacuten y presenta la siguiente sintaxis
If condicioacuten1 Then Instrucciones1
If condicioacuten 1 Then Instrucciacuteone s1
End If
If condicioacuten1 Then Instruccl onest
Else instruccionesN
End If
If condicioacuten1 Then Instrucciones t
Elself condiciOacuteh2 Then Instrucd ones2
Else instruccionesN
End If
Pudieacutendose estructurar y variar dedistintas formas Ademaacutes es posible que existan maacutes de una claacuteusula Elself en la misma instruccioacuten f-Then-Else para condiciones adicionales
La condicioacuten es una expres ioacuten es decir un conjunto de palabras que se evaluacutean a verdadero o falso sin postbiliqad Ele pode ~iexclten e rot ro valo r Semiddotdi ~e 9tl 8 IUiJa condicioacuten se cumple cuando seevaluacutea a-verdadero y ~ue ffacasa sectn caso contrrio L(as condiciones tambieacuten se conocen cario e gtcpresiexclori ~s IqgicaS
(
Si la condicioacuten 1 se cump l e ~ntonces se ejecutaraacute eacuteiacute b loq~~ clg~IJl s~rucci6nes 1 en caso contrario se ejecutaraacute el bloque de instrucciones (2 N-1) de la primera claacuteusula Elself o dicioacuten se cumpla Si fina lmente no se cumpl e ninguna de las condiciones se
ejecutariacutea el bloque de instrucciones N correspondiente a la claacuteusula Else
FINDES 35
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
----- - --
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con lo siacuteguientes elementos
Form Text = Divi ~ a9 Label Text =Diacutevlsaacutes ListBox Name LstDivisa
ltems Europa Estados Unido$ Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute sar capturado con la generacioacuten automaacutetica de e entos de los objetos misma que se genera al dar dop le click a iacuteos objetos
Pri vate Sub LstDivisas_SelectedlneacuteJexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Handlas Lstuuml ivisaacutesSelecteotndeacutexuuml hanqeo
Dim divisa As Str ing divisa = IstDivisa Selectedlndex
If divisaiquest OThen Msg3ox Euro
Elself divisa = 1 Then MsgBox Doacutelar
Elself moneda =~ Then
MsgBox Peso End If
nd Sub
e utiliza una va riable para iexclestablece el Jaior d~ una propiedad que indica que la opcioacuten del cuadro de lista IstDiacutevisaacute estaacute seleccionada - -
Una vez conocida la opcioacuten seleccionada deberemos sacar el mensaje adecuado para ello necesitam os una estructura de decisioacuten
La instruccioacuten de laclaacuteusula Else soacuteloseeiecuta-cuahdo el resecttdaeacutecondiciones han fracasado Cualquiera de los bloques de instruccioacuten puede contener un nuacutemero arbit rariolige j ns~T~cci o~ es iacutenclulda laooslbilidad de que existan otras ) ISJrucci9rie Ifshy
hen-Else - - -- -
FINDES 36
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Se ectCase Cuando existe un gran nuacutemero de instrucciones a evaluar es aconsejable utilizar otra estructura de decisioacuten como puede ser la instruccioacuten Select Case
Esta instruccioacuten no da maacutes potencia al lenguaje pero hace que el coacutedigo sea maacutes legible y eficiente
La sintaxis de la instruccioacuten Select Gase es
Select Case expresioacute n c eComparacion Case listaExpres iones
[instrucciones]
Case Else [instruccionesN]
End Select
Volvamos al ejemplo anterior pero con laacute instruccioacuten Select Case Select Case divisa
Case O MsgBox Euro
Case 1 MsgBox Dolarn
Case 2 MsgBox Peso
End Select
Ademaacutes la lista de expresiones de cada claacuteusuiacutea Case puede ser mucho maacutes complicada refirieacuter dc5sea maacutes de un valor o rango de valores
Case 1 Tomiddot9 valores-desd eel t -fiasta 319 t ~ F tgt iexclv iexcli ~ ~ ~A~~=L Case 123 valores 1 2 Y 3 ~S ~ l l=- ~ lV L5bull bull - 1 DiacuteL t) J ~ iexcl -- middot7~ C)iL _ I gt A ~ 3 Case 125 To 12 valores 1 J 2 Y desde el 5 hasta el 12 Caseis gt 12 valores mayores que J 2 Case Else middotvalorE3 sdifyrenes a 19s contempladosen los primeros casos
-
FINDES 37
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguie tes elementos
Form Text = Divias Label Text = Qjvisas ListBox Name= l stDivisa
Items = Europa Estados Unldos Meacutexico Button Narneacute = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con la generacioacuten automaacutetica de eventos de los objetos misma que se 9Enera al dar doble click a los objetos
Pri vate Sub LstDi sas_Selecte IndexChanged(ByVal sender As SystemObject ByVal e As SystemEventArgs) Hand l~ LstDivisGjsSelectedlnaexChanged
Dim Divisa As middot$t ring Divisa = IstDivisa Selectedlndex Ji o -j -iexcl=iiP-----1P~~~~~
Select Case Divisa Case O
MsgBox(EuroM)
Case 1 MsgBox(Doacutelar)
Case 2 MsgBox(Peso)
End J ~Ject
End Sub
Se utiliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
~j ~
Una vez corlocidale 9Pciqnseleccionaqa debe jernos sacarel-mensa]e adecuado para 1 ~ ( - _ 1 i ~ ~ - ~ _
ello necesitaacutemos una estroctura de decisioacuteiacutei
La opcioacuten seraacute determinada P9r el caso ~ue seiexclCJr1)pla~ y solo cuanco realmente exista un caso que cubra dicha acciacuteon-y valor dela vatiableacutel Divisa
~ ~) ~
FINDES 38
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
structura de Repet ici oacuten Otro tipo de estructuras que pueden modificar la ejecucioacuten de un programa son las estructuras de repeticioacuten ciclos o bucles Estas estructuras sirven para repetir una y otra vez un conjunto de instrucciones
Existiraacuten dos tipos de estructuras de repeticlon aquellas en las que se onoce el nuacute ero de repeticiones y aouellasen que dicho nuacutemero se establece durante la ejecucioacuten
For Next La estructura de repeticioacuten ForNext es adecuada-cu ando conocemos el n uacutem ro de veces que debe repetirse un conjunto de instrucciones y desdamos reducir la cantidad de coacutedigo escrito
La sintaxis es la siguiente
Fo r Variable_de_Cqnteo =princi pio To fin [Strep incremento] [instrucciones] i
[Exit For] [Instrucciones]
Next [contador]
Donde el contador es el nombre de unavariable que sirve como contador de las veces que se t iene que ejecutar el ciclo A dicha var iable se le asigna un valor inicial y un valor final en el que una vez superado el ciclo no vuelve a repetirse
En el cuerpo del ~ ico estar aacuten la s instrucciones que deben ejecutarse existiendo la posibilidad de intrQdLjJir Exif lf or Rara salir del mismo
FINDES 39
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formu lario con los siguientes elementos
Form Text =Divisas Label Text =oivisas ListBox Name == LstD ivisa
lte rnsre Europa Estados Unidos Meacutexico Button Name = BtnCerrar
El siguiente coacutedigo deberaacute ser capturado con laacute generacioacuten auuml torn aacutetlca de eventos de los objetos misma que se genera al dar 90b1e click a los objetos
Prlvate Sub LstDivisas_SelectedlneacuteieacuteXC a~ged (ByVa l sericer As SystemObject ByVal e As System EventArgs) Hand les LstDivis~s SelectedlndexChanged
Dim Repeticiones As lnteqer =1 Dim Divisa As S ring Dlvlsa e IstDivis81Selectedlndex
For Repeticiones =1 To 3 Case O
MsgBox(Eu ro ~ ) Case 1
MsgBox(Doacutelar) Case 2 MsgBQx(P~SO )
Next
1 shy
I r a l ~ 1
~ - j ~ bull
-
-=-_ ~~ ~ ~ [Europa
iexclEstados Unidos Meacutexico iexcl
End Sub
Se utiacuteliza una variable para establecer el valor de una propiedad que indica que la opcioacuten del cuadro de lista IstDivisa estaacute seleccionada
s- ~
Una vez conocida I ~ opci oacuterrsel eacutecoacuteio aacuteada deberemos sacar ~ h ~ensaje adecuado para ello necesitamos una estructura de decisioacuten
~
P ra estEr t aso seutilizJ vaitarnbt eacuten unaestrucfura de Select CaSE) t- J - J ~ ~ J ~
Que en este case se mostraraacute 3 veces debido al ciclo de repeticioacuten y los valores que va adquiriendo la variable Repeticiones
FINDES 40
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Do Loop tra estructura de repeticioacuten es DoLoop Esta estructura se utiliza cuando
desconocemos cuaacutentas veces se ha de ejecutar el bucle
La sintaxis es
Do [WhileiexclUntil] condicioacuten [instrucciones] [Exit Do] [instrucciones]
Lo op
Do [instrucciones] [Exit Do] [instrucciones
Loop [WhileiexclUntil] condici oacuten
i utitizamos While el bucle se repite mientras la condicioacuten se cumpla y si utilizarnos Until el bucle se repetiraacute hasta que la csn dlcioacuten deacute valor verdadero
Con While la condic ioacuten es comprobada al principio del bucle por lo que si no se cumple al inlciarse el cuerpo del bucle no s ~ ejecutaraacute Con Until se comprueba a la salida del bucle por lo que por lo menos una vez seejecutaraacute el bucle
FINDES 41
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Vamos a ver un ejemplo El coacutedigo seriacutea
Previo a la captura del siguiente coacutedigo debemos generar un formulario con los siguientes elementos
Form Text = Divisas Button Name = BtnCerrar
1siguiente coacutediacutego deberaacute s~ r capturado con la qeneracioacutenautom aacutetica de eventos de los objetos misma que se genera al dar doble c1ick a los objetos
Private Sub BtnCerracClick(By-al sender As SystemObject ByVal e As SystemEventArgs) Handles Button1 click
Dim Respuesta As String
Do Hespuesta == MsgBox( D~s ea Repetir el Ciclo MsgBoxStyleYesNo)
Loop While Respuesta =6
End Sub
Se utiliza una variable para establecer el valor de una respuesta obtenida a partir de un cuadro de mensaje
Una vez conocida la opcioacuten seleccionada se determina si el ciclo se repite o no
FINDES 42
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 6 Elementos de Administracioacuten de Datos
Visual Basic puede acceder a distintos tipos de bases de datos El acceso maacutes sencillo es a una base de datos creada con el MotorJet que incorpora Visual Basiacutec y que es compartido por Access es decir si quieres crear una base de datos con Access o en el Administrado de datos de Visual Basic f31acceso a la misma seraacute inmediato
Otro tipo de bases de datos con las que se puede acceder con Visual Basic son las llamadas bases de datos ISA (Meacutetodo Secuencial lridexado) entre las que se incluyen Btrive dBASE Foxpro y Paradox
E otro tipo de acceso es a una base de datos compatible con aoca (Conectividad abie a de bases de datos) en las que e necesario un controlador OOCB para el tipo
speciacutefico de base de datos Si tienes dicho controlador el acceso tambieacuten seraacute inmediato
Conectar con una Basede Datos
Para realizar la conexioacuten con una baseacute de -datos debemos agr gar un nuevo origen de datos
Lo cual realizaremos en la parte de derecha de la pantalla en el cuadro de Oriacutegenes de Datos
Con lo que aPeacutem~ordmSm~f Ip s iguiente pantalla en donde selecc ionaremos la opcion deseada en e~te caso efegimqs la
pel oacuten Base de Datos
l
FINDES 43
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
A continuacioacuten y luego de seleccionar la r~~~iexclr~~iexcl--- ~-~~liacute
opcioacuten deseada y dar click en el botoacuten Siguiente apareceraacute la siguiente pantalla en donde debemos elegir Nueva Conex ioacuten esto para poder generar la conexioacuten con nuestra base de datos
Apareceraacute la pantalla de abajo donde eleccionaremos el proveedor tiela base
de datos para posteriormente eleccionar con el botoacuten de examinar
base de datos en cuestioacuten
Tambieacuten podremos crear desde este punto una basl de datos nueva
bull bull
i - --shy -----
1
1 11
Una vez seleccionada o creadala Base de Oacuteat0s Nos r~g resa el lageneracioacuten de la con xl oacuten
FINDES 44
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En caso de estar usando una Base de Datos pre-existente en la siguiente pantalla selec ionaremos elementos que deseamos accesar mediante esta conexioacuten las Tablas Consultas Campos etc
Crear una Base de Datos
Una vez realizados los pasos anteriores referentes a la creacioacuten de una nueva Base de Datos procederemos a la creacioacuten de las i
tablas que contendraacute dicha Base de Datos
Primero que nad8s~er]o~ f elecciqQr del Explorador de Soluciones la base de dates nueva coh el botoacuten derecho del mouse donde seleCcionaremos la opcioacuten de abrir
f
Con lo anterior se mostraraacuten las opciones de la base
En esta middotsey~ i ~ ri)jeQsectnios SEJI~9cioqqr iexcl iacutea qas~ d~ datos y CGO ~) bOoacuten derecho del mouse abrirel menuacute contexfual yelegir laopcioacuten de Crear Tabla
FI DES 45
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
En I siguiente ventana creamos las tablas que sean requeridas
A continuacioacuten seraacute posibleconntildequrar el acceso a datos En la seccioacuten de Origen de Datos elegir [3 opcioacuten Configurar DataSet con el Asiacutestente y en la pantalla siguiente seleccionamos 198 tablas y campos que deseamos consultar
De este punto el adelaacutente 100spasos de 4na base pe datos existente o una base nueva seraacuten los m ~mQ~ r ~ i
FINDE8 46
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desar rollo Profesional
Podremos agregar los diferentes controles para mostrar datos ya sea desde el cuadro de origen de datos utilizando Cuadros de Texto Cuadros Combinados etc O bien desde la insercioacuten de controles como el DataGridView
)
~
FINDES 47
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Tema 7 Manipulacioacuten d Archivos
Controles specializados Visual Basic proporciona una serie de controles especializados en el acceso al sistema de archivos de Windows
E to controles son el Cuadro de lis a de unidades el Cuadro de lista de d irectorios y el Cuadro de lista de archivos Cada uno de estos eacuteontroles permite acced er a los correspondientes elementos del sistema de archivos
Al cuadro de lista de unidades tienes que darle un tamantildeo -adecuado para que se pueda mostrar cualquier uhidad que tengas en tu ordenador En tiempo de disentildeo se muestra la etiqueta de la unidad del disco duro de forma que puedas ajustar el control al tamantildeo de la misma Este control incluye las uniaades de disco duro disco flexible y Cd-Rom etc
Bl o
El cuadro de lista de directorios nos permite mostrar los directorios del sistema de archivos del ordenador Es conveniente que este control muestre tres o cuatro carpetas o directorios
En tiempo de disentildeo muestra la carpeta en laque-se inicia la aplicacioacuten y en la que por defecto se guarda el proyecto
-J-
El cuadro de lista de arch iacutevos nos muestra J oiL ordfr~rn iexclvo s de l-tn deterl1 inpdo directorio o carpeta Su propiedad maacutes interesante es Pattern que nos permite especificar queacute tipo de archivos son mostrados en dicho control Para utilizar esta propiedad se pueden ut ilizar los comodines y al establecer la propiedad Estos caracteres tienen el mismo significado que en (MS -Do~ 0JYin9QVYs paraespeclntildecar los nombres pe Jo arcqhivos
-
~
Si estab l~eacute~~ lfi pr oPtedd ~atte rh con lji 9ade~8 iexcl ~ t~t ~sf~s i n d iexcly~ndq quese muestren soacutelo los a rchivos queacute tengan eacutesta extensioacuten Se pueden rriacutebsfrar mas de un tipo de archivos separaacutendolos con
FINDES 48
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Conectar los controles En tiem po de disentildeo al dibujar los distintos controles del sistema de archivos estos muestran la unidad y el directorio en la que se crea el proyecto como he comentado anteriormente En tiempo de ejecucioacuten el usuario puede cambiar I~ unidad y el directorio o carpeta y esta situacioacuten no se veraacute reflejada si no se escribe coacutedigo
Para que los controles esten sincronizados es nec sario conectarlos
l end ~ llr t eacuter d
j~ D D s CCES D L L
~ D D S C CU S DLL 1
~ I6 U O M D B 1 [ 2EXE CVPACKEXE D~~ ~~I ~J~ ___middot_- I
El evento predeterminado del control cuadro de lista de unidades es Changa
Este evento sucede cuando el usuario despllema fa lista de unidades y selecc iona una unidad distinta a la actual por lo que es middotelmiddotevento adecuado pata actual izar la lista de directorios de la siguiente f9cma
Private Sub Dir1_Chl geO Dir1 Path = Drive1Drive
End Sub
Para el control cuadro de lista deacute directorios deberem oshacer algo parecido el coacutedigo seraacute el siguiente
Private Sub Dir1_ChangeO File1Path =Dir1Path
End Sub
De esta forma tenernos conectados los tres controles de acceso al sistema de archivos
FINDES 49
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Funda cioacuten de Investigaci oacuten para el Desarr ollo Profesional
Tema 8 M nejando los errores Cuando se escribe coacutedigo en tiempo de disentildeo Visual Basiacutec puede detectar errores y avi ar de ellos Posteriormente se pueden detectar maacutes errores en tiempo de compilacioacuten estos errores son de caraacutecter semaacutentico Los errores en tiempo de ejecucioacuten son sucesos inesperados que Visual Basic no puede controlar por siacute mismo
xiste la posibilidad de incorporar un manejador o ca trotador de errores que son un conjunto de liacuteneas de coacutedigo que soacutelo se ejecutan cuando se produce un error ue es interceptado por Visual Basic
Se deben de escribir maneadores de errores siempre que se pueda prever la ocurrencia de un error en ti rnpo de ejecucioacuten Algunaacutes de estas situaciones son
~ roblemas con las unidadeacutes de disco flexible ~ Desbordamientos )Po Falta de memoria ~ Problemas con la red ~ Perifeacutericos )Po Errores loacutegicos (nombre d~ archivo mal escrito)
La instruccioacuten que nos permite detectar errbres en tiempo de ejecucioacuten es On Error Su sintaxi es On Error Gato Etiqueta d oacutende la etiqueta representa el nombre del manejador de error que tiene que estar situado en el rniaacutemo procedim iento que la instruccioacuten On Error Cuando seproduce un error en el procedimiento donde se coloca On Error Visual Basic daraacute el control al manejador Be errores escrito en dicho procedimiento
El coacutedigo puede ser Man ejadorError lf ErrNumber = 68 Then
- reIP z MsgHox(I IQispositiyo no estaacute preparado vbAbQrtRetrylgD0 re) Elself resp =vbAbort ifhen
DriacutevejDriacutev = Dir Pth End If
La primera liacutenea es-la etiqueta qu~rep re~enta ~ 1 norntildebrede marlejado r
Al producirse un error en tiempo de ejecucioacuten se crea un objeto Err que intercepta dicho error Este objeto posee la propiedad Number que es el nuacutemero de error mterceptado
El coacutedigo pregdrftaacute SidtGtio eacuterGor e~ ~I 6~Yeacuten TSr~7cas(~tpregehtaiexcluri cuadro dediaacutelogo en el que se indica que el dispositivo no esta preparado dando tres opciones reintentar cancelar o iqnorar
U a vez int~ rceptaacutedoacuteiexcl~ 1 error y ~jecutaacutedb elcoacutedlqo-asociado al marlejaacutedor e ~ necesario i icar queacute sucede una vez se salga del manejador En este caso dependeraacute de lo que elija el usuario Si quiere reintentar la operacioacuten se ejecutaraacute la instruccioacute Resume qu vuelve a ejecutar la misma instruccioacuten que provocoacute el error Si se anula la operacioacuten se ejecutaraacute Resume Next que devuelve el control a la siguiente i struccioacuten que provocoacute el error
FINDES so
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Glosario de Funciones
Fecha y Hora
Date (Funcioacuten) Devuelve un tipo Variant (Date) glleacute contiene la fecha actual del sistema
Sintaxis DateO
Comentarios Utilice la instruccioacuten Date para estaacuteblecer la fecha del sistema El comportamieriexclto de Date YJ si el catendario es gregpriano Date$ no cambia por la configuracioacuten de la pr piedad Calendar Si el calendario es Hijri DateS devuelve una cadena de 10 caracteres del tipo mm-diJ~yyyy donde mm (01-12) dd (01-30) Y yyyy (1400-1523) son los meses diacuteas y antildeos Hijri El intervalo gregoriano equivalente es del 1 de enero de 1980 al 311de diciembre del 2099
Date (Instruccioacuten) Establece la fecha actual del sistema
Sintax is Date =fecha
Para equipos que trabajen con Microsoft Windows 95 el argumento fecha debe ser una fecha entre el 1 de enero de 1980 y el 31 de diciembre de 2099 Para equipos que trabajen con Microsoft VVindows NT el argumento fecha debe estar comprendido entre el 1 de enero de 1980 al 31 de diciembre del 2079 Para Macintosh fecha debe ser una fecha del 1 de enero de 1904 al 5 de febrero de 2040
DateAdd (Funcioacuten) Devuelve un valor de tipo Variant (Date) con una fecha a la que se ha agregado un intervalo de tiempo especificado o
Sintax is DateAdd(intervalo nuacutemero fecha)
La sintaxis de la funcioacuten DateAdd consta de los siguientes argumentos con nombre-o---- shy
lParte - Descrrpeacuteioacuterl Oacuteraquo - - - -
1 intervalo I
i n uacutemero
fecha
Requerido Expresioacuten de cadena que contiene el intervalo de
~ $ d~S13a ag(egar Pued~ ser pp~iexcltiexclvaacute (Rat a obtener fechas
tiempo que se desea agrEg~r lt
ReqJ~riqo EltprEsioacute17 mJrriexcleacute[icRcQn eJ n uacutemero de intervalos que
futuras) onegatiaacute (para obtener fechas pasadas) bull Requerido Valor de tipo Variant (Date) o literal que representa la fecha en la ue se a re oacute el intervalo
FINDES 51
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Valores El argumento intervalo tiene los siguientes valores
Valor Descripci oacuten yyyy Antildeo
q Trimestre m Mes y Diacutea delantildeo d Oacuteiacutea w Diacutea de la sema na
ww Semana h Hora n Minuto )
s Se undo
Comentarios Puede utilizar la funcioacuten DateAdd para agregar o restar un intervalo de tiempo especificado de una fecha Por ejemplo con DateAd podriacutea calcular una fecha 30 diacuteas posterior al diacutea de hoy o unaacute hora 45 minutos posterior a la actual
Si desea agregar diacuteas a fecha puede utilizar Diacutea del ano (y) Diacutea (Ud) o Diacutea de la semana (W) ~
La funcioacuten DateAdd no devueiv8 nunca una techa no vaacutelida En el ejemplo siguiente se agrega un mes al 31 de enero
DateAdd(m 1 31-e ~ e middot 95)
En este caso DateAdd devuelve 28-feb -95 y ho 31-feb-95 Si fecha es 31-eneshy96 devolveraacute 29-feb-96 ya quEf ~ 996middotordf~ un antildeo bisiesto Si la fecha calculada va a resultar inferior al antildeo 100 (esto es se restan maacutes antildeos que los que hay en fecha) se produce un error Si nuacutemeraJiJP es un valor de tipo Long se redondear aacute al nuacutemero entero maacutes cercano antes de ser evaluadol
Nota El fdrmatb del valor devuelto por DateAacuteaa es dsterminado por la configuraci oacuten del Papel deacute contro l no por el formato que se p s en el arqurrranto fecha Nota Para fecha si la configuracioacuten de la propiedad Calendar es gregoriano la fecha proporcionada debe ser gregoriana Si el calendario es Hijri la fecha proporcionada debe ser Hijri Si los valores de mes son nombres el nombre debe
~r consisJenJe con o yonfigur~cioacuter actual pe lfi y rop i1daq Calenda Para mi[1 trllizFlr Iaacute pbsiacutebijidad deacute cQntliqtos ltl eiexcl los nQmore9 dEifmE~ conIa iquestonf1g uracioacuten
~ - x ~~ I~ f bull ~~flt ~ ~ r flS __~ middot jiAl raquo t actual de Calendar Introduzca valores de mes numencos (formato de fecha corta)
FINDES 52
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
DatePart (Funcioacuten) Devu ve un valor de tipo Variant (Integer) que contiene la parte especificada de la fecha dada
Sintaxis DatePart(intervalo fecha[priacutemerdiacuteasemana[ primerasemanaantildeoJ))
La sintaxis de la funci oacuten OatePart txmsta de los siguientes argumentos con nombre
~a rteI intervalo
fecha 1 primerdiacuteasemana
Iprimerasemanaantilde~
Valores
Descripcioacuten Requerido Expresioacuten de cadenacon el intervalo de tiempo que desea devolver Requerido Tipo de valor Variant (Date) que se desea evaluar Opcional l) f18 coacuteii starife que especifica el primer diacutea de la semana SI nose espec1fiexclca se asume que es el domingo Opcional Una constante que especifica la primera semana del antildeo Si no Sy especifica se asume que es aqueacutella en la que se 1 encuentre el 1 de enero
~--_--------------
El argumento Intervalo toma los si uientes valores Valor yyyy q m y d w ww h n s
D8$cripcioacuten Antildeo Td estre
Mes Diacutea del antildeo Diacutea Diacutea de la semana Semana Hora Minuto Se undo
El arguumlmento pririJerdlb$emi ntildea totna lbs si uientes valores Constante
~ I
vpUsep ystlm vbSunjay vbMogay
vbTuesday vbWednesday vbThursday vbFriday
vbSaturgay_ _
Valor Descripcioacuten
~ iacute 2 34 5 6 L
Uliliza sf valor de laAPI de NLS Dorntildeiacutenqo (predeterrnlnado) _JLunes
MartesMieacutercoles Jueves Viernes
---Saacutebadcoi_ - ---_
El argumento ~imerasemana~fio toma los si uientes valores~ Constante
v~Us ~S y~tem vIgtFir~tJan i
vbFirstFourDays
vbFirstFullWeek
Valor Descripcioacuten O tltiiza el valo eje la AFlde NL~ 1Empiei~ c6n lasemalIacutea-en la eacuteiexcluacutee se encuentra el
~ -rbull ~h 1 1 ~l~
1 de enero (predeterminado) bullo
2 Empieza con la primera semana que tenga al menos cuatro diacuteas en el nuevo antildeo
3 Empieza con la primera semana que esteacute com letamente incluida en el nuevo antildeo
Comentarios
FINDES 53
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Puede utilizar la funcioacuten DatePart para evaluar una fecha y devolver un intervalo de tiempo especiacutefico Por ejemplo podriacutea utilizar DatePart para calcular el diacutea de la semana o la hora actual
El argumento primerdiacuteasemana afecta a los caacutelculos que utilizan los siacutembolos de intervalo w y ww
Si fecha es un literal de fecha el antildeo que-se especifica pasaraacute a ser una parte permanente de la fecha Sin embargo si fecpa estaacute encerrada entre comillas dobles () y se omite el antildeo se insertaraacute el antildeo en curso en el coacutedigo cada vez que se evaluacutee la eacutexpresioacuten fecha Asiacute es posibl eescribir coacutedigo que se pueda usar en antildeos dist intos
Day (Funcioacute n ) Devu elve el valor de tipo Variant (Integer) que especifica un nuacutemero entero entre 1 y 31 nclusive que representa el diacutea del mes
Sintaxis Day(fecha)
El argumento fecha es cualquier valor de tipo Variant expresioacuten numenca cadena o cual quier combinacioacuten que pueda representar una fecha Si fecha conti eneNDlVI la ftlncioacuten devolvreraacute NulI shyNota Si la contiacutegur~~ iexcl6h de la propiedad C~(~nda r es gregoriano el entero devuelto reires ~ ~ta el diacutea g r~go r iaoo del mes poriexcl elargumeacutento de fecha Si el calen dario es Hiacutejri el entero devuelto represeata er diacutea Hijri del mes por el argumento fech a
Now (Funcioacute n) Devuelve un vlbr de fipo Vciacuteriarlti (Date) guuml e e$peciflG2 lai feeacuteha yhora aacute tu ales de
J ~ ii ~ it - - d~ ltx ~ shyo flt)f
acuerdo con la configuracioacuten de la fecha y la hora del sistema desu equipo Sintaxis NoVO
FINDES 54
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Time ( uncioacuten) Devuelve un valor de tipo Variant (Date) indicando la hora actual del sistema
S nta is lmet)
Comentariacuteas Use la instruccioacuten Time para estaolecejta hora del sistema
Timer (Funcioacuten) Devuelve un tipo Single que representa el nuacutemero de sequ rtdos transcurridos desde la medianoche
Sintaxis TimerO
Comentarios En Microsoft VYindows la fqncioacuten T~ er devuelve partes fraccionales de un segundo En Macintosh la re~qhl C i oacuten iexclde I 1emporizado r esun segundo
Ime (Instruccioacuten) Establece la hora actual del sistema
Sintaxis Time = hora
El argumento hora es cualquler expresioacuten numeacuterica expresioacuten de cadena o cualquier combinacioacuten que pUeda representar una hora Comentarios Si hora es una cadena Time intenta convertirla en una hora usando los sepa radores de hora que se especificaron para su sistema Siacute no se puede convertl f entildeQnahoraVaJida se produciraacute un error
atemaacuteticas
Abs (Funcioacuten) Devuelve u~ vatorde] r1lis(lo tipo-que ~I q~e s~ pasoacute cornopar aacutemetro vqueespecflca el valor abs oacutelutoacute de un huacuteln~ero g
Sin taxis Abs(nuacutemero) t
El 9rgumento ~tJr7Jed p~~ders~ r c uacuteatqui~rexRreacutesioacuter h4meacutetie~ y~ liacuteaa S i nuacutemero c oacutenti eacutene Nuacutel] la tLinci6rf devolveraacute Null si es una variaacutebleacute no lniciallzada devolveraacute cero Comentarios El valor absoluto de un nuacutemero es su magn itud sin signo Por ejemplo ABS(-1) y ABS(1) devue lven 1
FINDES 55
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Int Fx (Func iones) Devu Ive la parte entera de un nuacutemero
Sintaxis Int(nuacutemero) Fx(nuacutemero)
El argumento nuacutemero es un tipo Double o eacuteualquier expresioacuten numeacuterica vaacutelida Si nuacutemero contiene Null I~iacute funcioacuten devolveraacute NuacuteLmiddot
Comentarios Las funciones 1t y Fix eliminan la f raccioacuten de un nuacutemero y devuelven el valor entero resultante La diferencia eh fre Int y Fix[es que si el fiexcluacutemero es negativo Int devuelve el primer entero negativo menor o igual a nuacutemero rniacuteeritras que Fix devuelve el primer entero negativo mayoro igual a mlmero Por ejem plo Int con vierte -84 en -9 y Fix convierte -84 a -8 La funcioacuten Fix(nuacutemero) es equivalente a J Sgn(nuacutemero) Iht(Abs(nuacutemero))
~
Mod (Operador) Divide dos nuacutemeros y devuelvesoacutelo el resto
Si ntaxis resultado =nuacutemero 1 Mod nuacutemero2
La sintaxis del o erador Mod consta de las si uientes artes Parte Descripcioacuten resultado Requerido cualquier variable numeacuterica
uacutem~[9t Heq u e rh90 quaJguier expr~s i oacuten nurn eacuterica Luumlmeacutero2 Requerido cual ui r ex _esiacute--oacute_n_n_u_m_eacute_ri-r-G_a_ --
Com entarios El operador de moacutedulo o resto divide nuacutemerot por rtuacutelJlero2 ( redondeando a enteros los n uacutemerosde signoacute flotro~te)cydevuehleuro soacuteloacutei e r~re$t0 corno resultado Por ejemplo en la siguiente expresioacuten A (que es el resultado) es igual a 5 A =19 Mod 67 Generalmente el tipo de dato de resultado es tipo Byte Byte tipo variant tipo
~nte~~r I ~tg~r tiR varia~t ti~o ~on~ ~ tipo Variaqt~~e c~ntiene n tipo Long Incj~pendle[1tementeiexcl de gt1 ~I resultqdo e9 LJn numero ent~ro Oc no La parte
~ 10 r ~ ~ Y l -lt _ gt1 ~ i 1 lt -v rOacuter
fraccionaria seacute trunca Sin ernbarqo si cualquiera delas expreacutesicnese Null el resultado es tambieacuten Null Toda expresioacuten Empty se considera como O
FINDES 56
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesion al
Round (Funcioacuten) DescrIpcioacuten Devuelve un nuacutemero redondeado en el nuacutemero especificado de lugares decimales
Sintaxis Round(expresioacuten [ nuacutemLugaresOecimales])
La sintaxis de la funcioacuten Rou nd consta de las siguientes artes Parte Descrlpci6ri expresioacuten Requerido La expresioacuten numeacuterica que se redondea nuacutemLugaresOecimales Opcional Un nuacutemero que indica cuaacutentos lugares a la
derecha del decimal se l f1cluyen en el redondeo Si se omite la funcioacuten Round devuetve enteros
Informacioacuten
IsDate (Funcioacuten) evuelve un valor de tipo Boolean que indica si uacutena expresioacuten se puede convertir en
una fecha Sintaxis IsDate(expresioacuten)
El argumento expresioacuten requerido es un tipo de pafos Variant que contiene una expresioacuten de fecha o una expresioacuten de cadena reconocible como una fecha o una hora Comentarios La funcioacuten IsDate devuelve ~r u e si la expresioacuten es una fecha o se puede reconocer como una fecha vaacutelida en caso contrario devuelve False En Microsoft Windows el iacutentervalo de fechas vaacutelidas va desde el 1 de enero de 100 D de C hasta el middot3 1 d~ diciembre de 9999 Dde GqIQs intervalos variacutean de un sistema operativo a otro
IsEmpty (Funcioacuten) Devuelve un valor de tipo Boolean que indicasi uacutena variable ha sido inicializada
Sintaxis IsEmpty(expresioacuten)
El arqurnento expresioacuten requerido es un tipo de datos Variant que contiene una ~ expresio8 de ~aden~ Quna exprest oacuten riuacutemeacutericaSin ~moargo middotya middotque la funcioacuten IsEr-tpty 59 6tilizEacutei para j determ i ~ ar si ras Vailableacutes (hdiacuteviduales estaacuten
inicializadas el argumento expresioacuten es generalmente un uacutenico nombre de variable CoacutetiIacute~ntariqs Laacute fJnc1on lsEmpty devuelve True si la vaacuteriable no estaacute inicializada o estaacute expliacutecitamente configurada a Empty en cualquier otro caso devuelve Fa s Se devuelve False siempre que expresiacuteoacuten contenga maacutes de una variable La funcioacuten IsEmpty solamente devuelve informacioacuten significativa para datos de tipo Variant
FINDES 57
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
IsNull (Funcioacuten) Devuelve un valor de tipo 80 lean que indica si una expresioacuten contiene datos no vaacutelidos (Null)
Sintaxis IsNull (expresioacuten)
El argumento expresioacuten requerido es Uf) tipo de datos Variant que contiene una expresioacuten numeacuterica o unaexpresioacuten de cadena Comentarios La funcioacuten IsNull devuelve True si expresioacuten es Null en cualquier otro caso IsNu11 devuelve Fa l ~e Si expresioacuten estaacute formada por maacutes de una variable la presencia de Null en cualquier variable hace que se devuelva True para toda la expresioacuten El valor Null indi a que Vari an t contiene datos no vaacuteHdos La funcioacuten ul no es la misma que la funcioacuten Empty la cual tndica que una v ariable todaviacutea no ha sido inicializada Tampoco es lo rnisjno que una cadena de longitud cero () que a veces se suelellamar cadena nula Importante Utilice la funcioacuten s ull para determinar si una expresioacuten contiene un valor NulJ Las expresiones que ~~pe ra evaluar como Trua en ciertas circunstancia s tales como If Var = Null AND If Var ltgtNull son siempre Falsa Esto se debe aque cualquier expresioacuten que contiene un Null es por siacute misma de valor Null y por consiguiente aise
IsNumeric (Funcioacuten) Devuelve un valor de tipo Boolean que indica si una expresioacuten se puede evaluar como un nuacutemero
Sinta xis IsNumeric(expresioacuten)
El arglJment~ eSflresipJ reque~ido l esu n tipo de datos Variaat que contiene una expresectloacuten numeacuterica a una exp ~esioacuten de tipo cadena l
Comentarios La tuncloacuten IsNuJ11eric devuelve Trua si la exp resioacutenmiddotcompletamiddotsereconoce como un nuacute)nero en oyo caso devuelve Ralse La funcioacuten IsNumeric devuelve Falsa si expresioacuten-eSuna expresioacuten de fecha
Texto
eh (Fu nci oacuten) Devuelve ur tipo Strirg qL(eKyol)tinl ~1 9w~qteacuter asoclado Gn el coacutediqo de ca raacutecter especiticantildeo
Sintaxis Ch r(coacutedigo cal)
El argumento coacutedigo cares un tipo Long que identifica a un caraacutecter Comentarios Los nuacutemeros del O al 31 son los mismos que los coacutedigos ASCII estaacutendar no imprimibles Por ejemplo Chr(10) devuelve un caraacutecter de avance de liacutenea El
FINDES 58
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
intervalo normal de coacutedigo car es 0-255 Sin embargo en sistemas DBeS el intervalo real de coacutedigo car es de -32768 a 65535
Nota La funcioacuten ChrB se utiliza con datos de byte incluidos en un tipo String En lugar de devolver un caraacutecter que puede ser de uno o de dos byt s ChrB siempre devuelve un uacutenico byte La funcioacuten ChrW devuelve un tip o Strlng que contiene el caraacutecter Unlcoda eX0elJto en plataformas donde no se admite Unicode en cuyo caso e l comportamiento es ideacutent ico al de la funcioacuten Chr
Format (Funcioacuten) Devuelve un tipo Variant (String) que cqntiene una expresl oacuten formateada de acuerdo a las instrucciones contenidasen una expresioacuten de formato
Sintaxis For at(expresioacuten( formato[ primeraiacuteadeserhanaL primerqiacuteadeantildeo]]])
La sintaxis de Ja funcioacuten Formal consta cle las siguientes artes Parte Descripcioacuten expresioacuten Requeriqo Cualquier expresioacuten vaacutel tia formato Opcional Una expresioacuten de formato definida por el usuario o
con nomBre vaacutelida primerdiacuteadesemana Opcional Una constante que especifica el primer diacutea de la
semana primerdiacuteadeantildeo Opcional Una constante que especifica la primera semana del
antildeo
Valores El argumento primerdiacuteadesemana tiene estos valores
Constante Valor Descripcioacuten vbUseSystem O Utiliza el valor de API NLS vbSunday 1 Domingo(iexcliexclredeterminado) v b M o n d ~y 2 Lunes - vb T u e s dbull ~y
v bWe d n ~ s d ay 3 4
Martes Ml~rco l e s
1
vbThtlrsday 5 Jueves vb F r i day~ 6 VieJJiacute es vbSaturda 7 Saacutebado
rimerdiacuteadeantildeo tiene estos valores Valor qescripcJoacuten O LltiHLa elvqIQr de f-flN4S ~ _ 1 iexcl qotQ iacute en ~a c9 riacute l a sem~n~ d oacutende estaacutese~ 1 de enero
(predeterminado) vbFirstFourDays 2 Comienza con la primera semana del antildeo que tenga
I cuatro diacuteas como miacutenlmo 1
L~bFi rstFu IIWe~ek 3 9bf-riexcl feni aicon la grirnl3ra ~e~~naacute Gpmpleta del antildeO -~-----+------- gt1- -
Comentarios Para dar formato Haga esto Nuacutemeros Utilice formatos numeacutericos con nombre predefinidos o cree
formatos numeacutericos definidos por el usuario Fechas y horas Utilice formatos de fechah ora con nombre predefinidos o
cree formatos de fechahora definidos por el usuario
FINDES 59
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
1 Nuacutemeros seriales de Utilice form atos de fecha y hora o form atos numeacuteri cos fecha y hora
1 Cadenas Cree sus propios formatos de cadena definidos por el usuario -
Si intenta dar formato a un nuacutemero sin especificar formato Formal proporciona una funcionalidad similar a la gEl middotta funcioacuten Str Sin embargo los nuacutemeros positivos a los que se I S ha dado formato de cadena de caracteres mediante Format carecen del espacio inicial reservado para mostrar el signo del valor mientras que los convertidos utilizando Str conservan el espacio inicial
Si estaacute dando formato a una cadena numeacuterica no localizada deberiacutea usar un form ato numeacuterico defi nido por el usuario para asegurarse de que obtiene la apariencia que desea
Nota Siacute la configuracioacuten de la propiedad Calendar es gregoriano y formato especifica dar Iformato a la fecha Iaacute expresioacuten proporcionada debe ser gregoriana Si Ia contiouraci oacuteaacute de la propiedad Calendar de Visual Bas ic es Hijri la expresioacuten proporcionada debe ser Hijri
Si el calendario es gregoriano el significado de los siacutembolos de la expresioacuten formato no carrintildeia Si el calendario es Hijri todos los siacutembolos de formato de fecha (por ejemplo dddd lJlmmm YWY) y tienen el m ismo significado pero se aplica al calendarle Hijri Los s iacutemb olos de torrnato permanecen en ingleacutes los siacutembolos que se muestran como texto (por ejemplo AM y PM) muestran la cadena (ingleacutes o aacuterabe) asociada con ese Siacutembolo El intervalo de ciertos siacutembolos cambia cuando el calendario es Hiri
Siacutemb olo d
Intervalo 1-30
~ 1~O
ww 1-51 laquonmmlaquo
Y _ Y
Muestra-aombres de mes eqterbs (los me$Hijri notlenen ab re v i at u n~)
1-35R bull
10 0 ~ 9 666
nombres de
LCase (Func ioacuten) Devue lve un tipo Strinqque se ha convertjdo a minuacutesculas
Sintax is Casi~ ( cadena
El argumento cadena es cua lquier expresioacuten de cadenavaacutelida Si string contiene Null se dev ~e lve Nul G(im~ntariQs 8610 se iexcl~orfv i e rt eri aacute- rninuacutesculas las letras mayuacutesculas l as lei raacutes minuacutesculas o los caracteres que no son letras no sufren cambios
FINDES 60
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Left (Funcioacuten) Devuelve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres del lado izquierdo de una cadena
Sintaxis Left(string length)
La sintaxis de la funcioacuten ~ft _lene estos argumentos con nombrebull
Parte Descripcioacuten string Requerido Expresi oacuten de cadena de la cual se devuelven los
caracteres que estaacuten maacutes a la izqu ie rda Si string contiene Nu ll se devuelve Null
length Requ er ampo un tipo Varratlt ~t9ng) Expresioacuten numeacuterica que indica cuaacutentos caracteres se van adevolver $ i es 0 devue lve una I cadena de longitud ce ro () Si es mayor o igual al nuacuteme ro de caracteres en string s~ d~vuelv~ _I~sectgen a entera 1
Comentarios Para determinar el nuacutemero de caracteres en string utilice la funcioacuten Len Nota Utilice la funcioacuten LeftScon datos de byte contenidos en una cadena En lugar de especificar el nuacutemero de caracteres que ~e van a devolver length especifica el nuacutemero de bytes
Le (Funcioacuten) Devuelve un tipo Long que contiacuteene el nuacutemero de ca racteres en una cadena o el nuacutemero de bytes necesarios para almacenar una va riable
Sintax is Le (cadena I nombrever
La sintaxis de IeacuteJI)Clcjqn Len cqnst9- de las si Parte Descripcioacuten cadena cualqui~r expresi oacuten de cadena valida sectJ cadena contiene Null se
devuelve Nul Nomb revar Cualquidr nombre de variable vaacuteiacuteldo Si nombrevet contiene ull se
devuelvltNull SnorrybreY8 es un tipo Varlant en actuacutea igual que con un tipo String y slern redeacutevuelve el nIacutelmero de caracteres que contiene
Comentarios Se deben especificar uno (y soacutelo uno) de los dos argumentos posibles Con tipos definid oacutes pbr elusuariacutecLen deacutev ue l v~ e tama ntildeo COr1o seescribtraacuteen elarchivo
r iacute
Nota Utilice la funcioacuten LenB con datos de byte incluidos en una cadena como en los lenguajes gel conjunto de caracteres dedoble byte (OSCS) En lugar de d~iiexclo tve r- el huacutenerode caracteres ~ n una cadena LenB deyuelye elnuacute mero de -bYtes~ utilizadospararepeacute5ehtiquestresac~dena Con tipos de daldsiexcld~fin idos por el usuario LenB devuelve el tamantildeo en memoria incluyendo cualquier relleno entre coacutedigo que utiliza LenB vea el segundo ejemplo en el tema de ejemplo
Nota Puede que Len no sea capaz de determinar el nuacutemero real requerido de bytes de almacenamiento cuando se utiliza con cadenas de longitud variable en tipos de datos definidos por el usuario
FINDES 61
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarrollo Profesional
Mid Funci oacuten) Dev elve un tipo Variant (String) que contiene un nuacutemero especificado de caracteres de una cadena
Blntaxls Mid(striacuteng sterti length])
La sintaxis de la funcioacuten Mid tieneestos-as umentos con nombre Parte Descripcioacuten - - - -------~ 1 string Hequeride Expresioacuten de cadena de la cual se devuelven los caracteres
Si string contiene Null se devuelve Null start Requerido un tipo Long Posicioacuten de caraacutecter en striacuteng en la cual
comienza la parte que se quiere tomar Si s tsrt es mayor que el nuacutemero decaracteres enlastr lng N1iifdevuelve una cadena de longitud cero ()
length Reiexclquerido un tipo Variant (Loacute ~g) Nuacutemero-de caracteres que se van a devolver Si se Qmlte o en el texto hay menos de leng th caracteres (Irn cluyendo el caraacutecter de start) se devuelven todos los caracteres desde la osicioacuten de start hasta el final de la cadena
Comentarios Para determinar el nuacutemero de caracteres en striacuteng utilice la funcioacuten Len
Nota Utilice latuncioacuten Mid B con datos de byte lnchiidos en una cadena como en los Ienquajesde conjunto eacute1e caracteres de doble ~yte En lugar de especificar el nuacutemero de caracteres los argumentos especitlcan el nuacutemero de bytes Para ver coacutedigo de ejemRfo que utiliza MidB vea el segundo ejemplo en el tema de ejemplo
Right (Funcioacuten) evuelve un tipo Y~riall~ ( ~ tring ) que contieneun nuacutemrro es~eci flcado de caracteres
del lado derecho de una oacuteadeacutena Sintax is Right(striacuteng lenghf) _
La si ~~axis de la ftJnci2P Rigfl~ tieneestosar umentos epn nombre iexcl Parte Descripcioacuten
striacuteng Requerido Expresioacuten de cadena desde la cual se devuelven los caracteres que estaacuten maacutes a la derecha Si string contiene Null se devuelve Null
len9ht Requerido un tiRO Var lant (Long) Expresk9n nuiexcln~rieacutea que indica iexcl CUaacutentS cafaeacuteterj38 sevan a devOlver Si Js Di- seacutede0uelve una cadena de
iortgituacuted-cero)Si es lTIacute aacuteyb( o ig J~1 al ~ uacutefn El rp iexclbe dhraacuted eres en string se devuelve la cadena com leta
COmentarioacutes - p~r~ faeth rlinarel nuacutemero de caracteres en string uacutetilice la funcioacuten Len
Nota Utilice la funcioacuten RightB con datos de byte incluidos en una cadena En lugar de especificar el nuacutemero de caracteres para devolver longItud especifica el nuacutemero de bytes
R NDES 62
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacute n de Investigacioacuten para el Desarrollo Profesion al
Str (Fu ncl oacuten) Devuelve en un tipo Varant (String) la representacioacuten de cadena de un nuacutemero
Sintax is Str(nuacutemero)
El argumento nuacutemero necesario es un tipo Long que contiene una expresioacuten numeacuterica vaacutelida Comentarios
-shyCuando los nuacutemeros se convierten a cadenas siempre se reserva un espacio a la izquierda para el siqno del nuacutemero Si nuacutemero es positivo la cadena devuelta contiene un espa9io a la izquierda y el signo maacutes seacute (ja por supuesto
Utilice la funcioacuten Format paacutera cpnvertir valores numeacutericos en valores con formato de fecha horamoneda o en pfros formato~ definidos por el usuario A diferencia de Str la funcioacuten Format no incluye un espacio a la izquierda para el signo del nuacutemero
Nota La funcioacuten Str soacutelo reconoce elplJnto () como separador decimal vaacutelido Cuando exista la posibilidad de que se pueda utilizar un separador decimal diferente (por ~jemp l o en a licaciones internacionales) se debe utilizar CStr para convertir Uo nuacutemero a una cadena
StrCom p (Funcioacuten) Devuelve un tipo Variant (lnteqer) que indica el resultaacutedo de una comparacioacuten de cadena
Sintaxis St rComp(string 1 string2[ compare]) shy
La sintaxis de la funcioacuten StrComp tiene estos ar umentos con nombre
Valores Los valores de la instruccioacuten com are son los si uientes Constante Valor Descripcioacuten
vbU~ec o~p re O~ t i o n -1 j~~~I~~iOacute~n9P~io9~~C~r ~an~e~~~ los valores de la
1vbBPilaryCorupare Q ~ e a l l z a upamiddotmiddotcOQl paraoionRJ n9-riexcla 1 vbTextCompare 1 Realiza una comparacioacutentextual
1 vbDatabaseCpmpare
2 SOacutelO ~ p 8 r~ ~ i C r o soft ~C cess R eantildeza una comparacron bpsaga en la lntormacloacuten en as bases
_ __eshy de datos middot j _
Valores devueltos La funcioacuten StrComp devuelve los siguientes valores Si La funcioacuten StrComp devuelve string1 es menor que string2 -1 string 1 es igual a striacuteng2 O string1 es mayor que string2 1 etrinqt o striacuteng2 es Null Null
FlNDES 63
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Fundacioacuten de Investigacioacuten para el Desarroll o Profesional
Trim l Trim y Rtrim (Funciones) Devuelve un tipo Variant (St ring) que contiene una copia de una cadena determinada sin espacios a la izquierda (lTrim) sin espacios a la derecha (RTrim) o sin espacios ni a la derecha ni a la izquierda (Trim)
Sintaxis LTr lm(cadena) RTrm(cadena) Tri (cadena) gt
El argumento cederie obligatorio es cualquier expresioacuten de cadena vaacutelida Si cadena contiene Nuacute11 se devuelve Null
UCase (Fu ncioacuten) Devuelve un tipo Variant (String) que ccnt tene una cadena especificada que se ha convertido a mayuacutesculas
Sintaxis UCase(cadena)
El argumento cadena necesario es cualquier expr~s ioacuten de cadena vaacutelida Si cadena contiene Null se devuelve Null Comentarios Soacutelo se conviertena rnayuacutescuumllas las letras rnmuacutesculas Las letras mayuacutesculas o los caracteres queho son letras no sufren cambios
FINDES 64
Top Related