Manual de Programación en Visual Basic 2008

64
® Fundación de Investigación para el Desarrollo Profesional. F TD ES ro . , o I 8. s -. FINDES. 1

Transcript of Manual de Programación en Visual Basic 2008

Page 1: Manual de Programación en Visual Basic 2008

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

Page 2: Manual de Programación en Visual Basic 2008

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

Page 3: Manual de Programación en Visual Basic 2008

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

Page 4: Manual de Programación en Visual Basic 2008

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

Page 5: Manual de Programación en Visual Basic 2008

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

Page 6: Manual de Programación en Visual Basic 2008

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

Page 7: Manual de Programación en Visual Basic 2008

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

Page 8: Manual de Programación en Visual Basic 2008

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

Page 9: Manual de Programación en Visual Basic 2008

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

Page 10: Manual de Programación en Visual Basic 2008

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

Page 11: Manual de Programación en Visual Basic 2008

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

Page 12: Manual de Programación en Visual Basic 2008

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

Page 13: Manual de Programación en Visual Basic 2008

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

Page 14: Manual de Programación en Visual Basic 2008

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

Page 15: Manual de Programación en Visual Basic 2008

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

Page 16: Manual de Programación en Visual Basic 2008

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

Page 17: Manual de Programación en Visual Basic 2008

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

Page 18: Manual de Programación en Visual Basic 2008

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

Page 19: Manual de Programación en Visual Basic 2008

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

Page 20: Manual de Programación en Visual Basic 2008

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

Page 21: Manual de Programación en Visual Basic 2008

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

Page 22: Manual de Programación en Visual Basic 2008

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

Page 23: Manual de Programación en Visual Basic 2008

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

Page 24: Manual de Programación en Visual Basic 2008

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

Page 25: Manual de Programación en Visual Basic 2008

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

Page 26: Manual de Programación en Visual Basic 2008

--

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

Page 27: Manual de Programación en Visual Basic 2008

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

Page 28: Manual de Programación en Visual Basic 2008

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

Page 29: Manual de Programación en Visual Basic 2008

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

Page 30: Manual de Programación en Visual Basic 2008

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

Page 31: Manual de Programación en Visual Basic 2008

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

Page 32: Manual de Programación en Visual Basic 2008

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

Page 33: Manual de Programación en Visual Basic 2008

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

Page 34: Manual de Programación en Visual Basic 2008

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

Page 35: Manual de Programación en Visual Basic 2008

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

Page 36: Manual de Programación en Visual Basic 2008

----- - --

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

Page 37: Manual de Programación en Visual Basic 2008

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

Page 38: Manual de Programación en Visual Basic 2008

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

Page 39: Manual de Programación en Visual Basic 2008

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

Page 40: Manual de Programación en Visual Basic 2008

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

Page 41: Manual de Programación en Visual Basic 2008

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

Page 42: Manual de Programación en Visual Basic 2008

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

Page 43: Manual de Programación en Visual Basic 2008

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

Page 44: Manual de Programación en Visual Basic 2008

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

Page 45: Manual de Programación en Visual Basic 2008

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

Page 46: Manual de Programación en Visual Basic 2008

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

Page 47: Manual de Programación en Visual Basic 2008

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

Page 48: Manual de Programación en Visual Basic 2008

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

Page 49: Manual de Programación en Visual Basic 2008

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

Page 50: Manual de Programación en Visual Basic 2008

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

Page 51: Manual de Programación en Visual Basic 2008

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

Page 52: Manual de Programación en Visual Basic 2008

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

Page 53: Manual de Programación en Visual Basic 2008

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

Page 54: Manual de Programación en Visual Basic 2008

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

Page 55: Manual de Programación en Visual Basic 2008

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

Page 56: Manual de Programación en Visual Basic 2008

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

Page 57: Manual de Programación en Visual Basic 2008

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

Page 58: Manual de Programación en Visual Basic 2008

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

Page 59: Manual de Programación en Visual Basic 2008

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

Page 60: Manual de Programación en Visual Basic 2008

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

Page 61: Manual de Programación en Visual Basic 2008

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

Page 62: Manual de Programación en Visual Basic 2008

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

Page 63: Manual de Programación en Visual Basic 2008

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

Page 64: Manual de Programación en Visual Basic 2008

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