You are on page 1of 161

Curso Visual Basic 5.

Qu es Visual Basic ?..............................................................................................................................9


Ediciones de Visual Basic..................................................................................................................................................9

Introduccin:..........................................................................................................................................10
1.1- Programacin orientada a objetos.........................................................................................................10
1.1.1- Objetos...................................................................................................................................................................10 1.1.2- Propiedades............................................................................................................................................................10 1.1.3- Mtodos..................................................................................................................................................................10 1.1.4- Eventos...................................................................................................................................................................10 1.1.5- Explicacin integrada y ejemplo de Objetos, Propiedades, Mtodos y Eventos...................................................10 1.1.6- Diferencias entre la programacin procedural y la programacin bajo Windows.................................................11

1.3- Proyecto...................................................................................................................................................12
1.3.1- Definicin de Proyecto en Visual Basic................................................................................................................12 1.3.2-Componentes de un Proyecto..................................................................................................................................13

1.4-Entorno de Desarrollo.............................................................................................................................14
1.4.1-Barra de men. y 1.4.2-Barra de Herramientas......................................................................................................14 1.4.3-Ventana de Proyecto...............................................................................................................................................14 1.4.4- Formulario..............................................................................................................................................................14 1.4.5- Ventana de Propiedades.........................................................................................................................................15 1.4.6- Caja de Herramientas.............................................................................................................................................15

2-Programacin:....................................................................................................................................16
2.1- Fundamentos de la Programacin.........................................................................................................16
2.1.1- Como funciona una aplicacin controlada por eventos.........................................................................................16

2.2- Variables..................................................................................................................................................16
2.2.1- Alcance de las variables.........................................................................................................................................16

Establecimiento del alcance de las variables........................................................................................17


Variables utilizadas en un procedimiento....................................................................................................17 Variables utilizadas en un mdulo................................................................................................................17 Variables utilizadas por todos los mdulos..................................................................................................17
2.2.2- Declaracin............................................................................................................................................................17 2.2.3- Tipos de variables..................................................................................................................................................18 2.2.4- Matrices..................................................................................................................................................................18

2.3- Procedimientos y funciones....................................................................................................................19


2.3.1-Introduccin a los Procedimientos..........................................................................................................................19 2.3.2- Procedimientos.......................................................................................................................................................20

Procedimientos generales..............................................................................................................................20 Procedimientos de evento..............................................................................................................................20


2.3.3- Funciones...............................................................................................................................................................21 2.3.4- Llamadas a Procedimientos...................................................................................................................................22 2.3.5- Llamadas a Funciones............................................................................................................................................22 2.3.6- Pasaje de argumentos a los procedimientos y funciones.......................................................................................22

Tipos de datos de los argumentos..................................................................................................................22 Paso de argumentos por valor.......................................................................................................................23 Paso de argumentos por referencia...............................................................................................................23 2.4- Estructuras de Control (Repeticin y Decisin)....................................................................................23
Pgina 2 de 161

Curso Visual Basic 5.0 2.4.1-Do While Loop / Do Loop While.....................................................................................................................23 2.4.2- For Next..............................................................................................................................................................24

2.4.3- If Else End If...................................................................................................................................25 If...Then...Else.................................................................................................................................................26


2.4.4- Select - Case...........................................................................................................................................................26

Controles................................................................................................................................................27
3.1- Controles bsicos.....................................................................................................................................27
3.1.1- APLICACION DE EJEMPLO..............................................................................................................................32

4 -Formularios.......................................................................................................................................34
4.1- Estableciendo las Propiedades ms importantes de los formularios...................................................34 4.2- Eventos y Mtodos de los formularios...................................................................................................34 4.3- Establecer el formulario de arranque de la aplicacin.........................................................................35

5 -Combo Box (lista combo) .................................................................................................................36 6- List Box (lista)....................................................................................................................................37 7- Timer (cronmetro)...........................................................................................................................38
Propiedades:...................................................................................................................................................38

8- Shape (figura)....................................................................................................................................38 9- Line (lnea).........................................................................................................................................38


Mtodo Refresh..............................................................................................................................................39 Mtodo ZOrder..............................................................................................................................................39

10- Image (imagen)................................................................................................................................39 11- Data (acceso a bases de datos)........................................................................................................40 12- Controles enlazados.........................................................................................................................40
12.1 Funcionamiento......................................................................................................................................40 12.2 Validacin...............................................................................................................................................41 12.3 Objetos de acceso a datos.......................................................................................................................41 12.4 Ediciones Profesional y Empresarial....................................................................................................41 12.5 Consultas almacenadas..........................................................................................................................41 12.6 Tratamiento de BOF/EOF.....................................................................................................................41

13 -Eventos ms importantes de los controles estndares....................................................................42


13.1-Change....................................................................................................................................................42 Ejemplo del evento Change...........................................................................................................................43 13.2-Click........................................................................................................................................................44 Ejemplo del Evento Click ............................................................................................................................45 13.3- GotFocus................................................................................................................................................45
Pgina 3 de 161

Curso Visual Basic 5.0

13.4- KeyPress................................................................................................................................................46 13.5- Load.......................................................................................................................................................47 13.6- LostFocus...............................................................................................................................................47 Ejemplo del evento LostFocus.......................................................................................................................48 13.7- MouseMove...........................................................................................................................................48 13.8- Timer......................................................................................................................................................49 13.9- Unload....................................................................................................................................................51 13.10- QueryUnload.......................................................................................................................................52 13.11- Validate................................................................................................................................................53 Ejemplo de la propiedad DataChanged y del evento Validate....................................................................54

14- Mtodos ms importantes de los controles estndares...................................................................54


14.1- AddItem.................................................................................................................................................54 Ejemplo del mtodo AddItem.......................................................................................................................55 14.2- AddNew (Objeto Recordset)................................................................................................................55 14.3- CancelUpdate (Objeto Recordset)......................................................................................................56 14.4- Clear (Clipboard, Combo Box, List Box)............................................................................................57 14.5- Close (Objetos Database, Recordset o Workspace)............................................................................58 14.6- Cls...........................................................................................................................................................59 Sintaxis............................................................................................................................................................59 Comentarios....................................................................................................................................................59 14.7- CompactDatabase (Objeto DBEngine)................................................................................................59 Sintaxis............................................................................................................................................................60 Ejemplo de mtodo CompactDatabase.........................................................................................................61 14.8- Delete (Objeto Recordset).....................................................................................................................61 Comentarios....................................................................................................................................................61 Ejemplo de mtodo Delete.............................................................................................................................62 14.9- Edit (Objeto Recordset)........................................................................................................................62 Comentarios....................................................................................................................................................63 Ejemplo de mtodo Edit................................................................................................................................63 14.10- Hide......................................................................................................................................................64 Comentarios....................................................................................................................................................64 14.11-MoveFirst - MoveLast - MoveNext MovePrevious (Objeto Recordset)........................................64 Sintaxis............................................................................................................................................................64 Comentarios....................................................................................................................................................64 14.12- OpenDatabase (Objeto Workspace)..................................................................................................65
Pgina 4 de 161

Curso Visual Basic 5.0

14.13- OpenRecordset (Objeto Database)....................................................................................................67 Ejemplo del mtodo OpenRecordset.............................................................................................................68 14.14- RemoveItem.........................................................................................................................................68 14.15- RepairDatabase (Objeto DBEngine)..................................................................................................69 Ejemplo del mtodo RepairDatabase...........................................................................................................70 14.16- SetFocus...............................................................................................................................................70 Sintaxis............................................................................................................................................................70 Ejemplo del mtodo SetFocus.......................................................................................................................71 14.17- Show.....................................................................................................................................................71 14.18- Update (Objeto recordset)..................................................................................................................72 Sintaxis............................................................................................................................................................72 Comentarios....................................................................................................................................................72

15- Propiedades ms importantes de los controles estndares.............................................................73


15.1- ActiveControl........................................................................................................................................73 15.2- BackColor, ForeColor..........................................................................................................................74 15.3- BackStyle...............................................................................................................................................75 15.4-BOF. EOF (Objeto Recordset)..............................................................................................................75 15.5-BOFAction, EOFAction.........................................................................................................................76 15.6-BorderStyle.............................................................................................................................................77 Valores............................................................................................................................................................78 15.7-Caption...................................................................................................................................................78 Ejemplo de la propiedad Caption.................................................................................................................78 15.8-DatabaseName........................................................................................................................................79
String................................................................................................................................................................................79

15.9-DataChanged..........................................................................................................................................80 Sintaxis............................................................................................................................................................80 Tipo de datos..................................................................................................................................................81 15.10-DataField..............................................................................................................................................81 15.11-DataSource...........................................................................................................................................81 Comentarios....................................................................................................................................................82 15.12-Enabled.................................................................................................................................................82 Ejemplo de la propiedad Enabled.................................................................................................................82 15.13-FontBold, FontItalic, FontStrikethru, FontUnderline.......................................................................83 15.14-FontName.............................................................................................................................................84 15.15-FontSize................................................................................................................................................85
Pgina 5 de 161

Curso Visual Basic 5.0

Comentarios....................................................................................................................................................85 15.16-Heigth, Width.......................................................................................................................................85 15.17-Icon........................................................................................................................................................86 Sintaxis............................................................................................................................................................86 15.18-Index (Matriz de Controles)................................................................................................................87 Ejemplo de la propiedad Index.....................................................................................................................88 15.19-ListCount..............................................................................................................................................88 15.20-ListIndex...............................................................................................................................................89 Sintaxis............................................................................................................................................................89 Comentarios....................................................................................................................................................89 15.21-Locked...................................................................................................................................................90 15.22-MousePointer.......................................................................................................................................91 Sintaxis............................................................................................................................................................91 Comentarios....................................................................................................................................................91 15.23-Multiline................................................................................................................................................92 Sintaxis............................................................................................................................................................92 Comentarios....................................................................................................................................................92 15.24-Name.....................................................................................................................................................92 Sintaxis............................................................................................................................................................93 15.25-NewIndex..............................................................................................................................................93 Comentarios....................................................................................................................................................93 15.26-ItemData...............................................................................................................................................93 Ejemplo de la propiedad ItemData...............................................................................................................94 15.27-PassWordChar.....................................................................................................................................95 Ejemplo de la propiedad PasswordChar......................................................................................................95 15.28-Picture...................................................................................................................................................95 Comentarios....................................................................................................................................................96 15.29-Recordset..............................................................................................................................................96 15.30-RecordsetType......................................................................................................................................98 15.31-RecordSource.......................................................................................................................................99 Sintaxis............................................................................................................................................................99
String..............................................................................................................................................................................100

15.32-Shape...................................................................................................................................................100 Valores..........................................................................................................................................................101 15.33-SQL (Objeto QueryDef)....................................................................................................................101


Pgina 6 de 161

Curso Visual Basic 5.0

Comentarios..................................................................................................................................................101 15.34-Stretch.................................................................................................................................................102 Comentarios..................................................................................................................................................103 15.35-Style.....................................................................................................................................................104 15.36-TabIndex.............................................................................................................................................105 Ejemplo de la propiedad TabIndex............................................................................................................105 15.37-TabStop...............................................................................................................................................106 15.38-Tag......................................................................................................................................................106 15.39-Text.....................................................................................................................................................107 Comentarios..................................................................................................................................................108 15.40-ToolTipText........................................................................................................................................108 15.41-Value...................................................................................................................................................109 15.42-Visible.................................................................................................................................................110 15.43-WindowState......................................................................................................................................111

16- Operadores.....................................................................................................................................112
16.1-Operadores Aritmticos.......................................................................................................................112 Operador ^: Se utiliza para elevar un nmero a la potencia del exponente............................................112 16.2-Operadores de Comparacin..............................................................................................................112 Sintaxis..........................................................................................................................................................113 16.3-Operadores de Concatenacin............................................................................................................113 16.4-Operadores Lgicos. ...........................................................................................................................113

17- Funciones ms importantes de Visual Basic................................................................................114


17.1-Asc.........................................................................................................................................................114 17.2-Date.......................................................................................................................................................114
Date.......................................................................................................................................................................114

17.3-DateDiff.................................................................................................................................................114 17.4-DoEvents...............................................................................................................................................116 17.5-Format..................................................................................................................................................116 17.6-Iif...........................................................................................................................................................118 17.7-InputBox...............................................................................................................................................118 17.8-Int, Fix...................................................................................................................................................119 Sintaxis..........................................................................................................................................................119 Comentarios..................................................................................................................................................119 17.9-IsDate....................................................................................................................................................120 Sintaxis..........................................................................................................................................................120
Pgina 7 de 161

Curso Visual Basic 5.0

Comentarios..................................................................................................................................................120 17.10-IsNull...................................................................................................................................................120 Sintaxis..........................................................................................................................................................120 Comentarios..................................................................................................................................................120 17.11-Left......................................................................................................................................................121 Ejemplo de la funcin Left..........................................................................................................................121 17.12-Len......................................................................................................................................................121 Sintaxis..........................................................................................................................................................121 Comentarios..................................................................................................................................................122 17.13-LoadPicture........................................................................................................................................122 17.14-Ltrim, Rtrim y Trim..........................................................................................................................123 Sintaxis..........................................................................................................................................................123 17.15-Mid......................................................................................................................................................123 Comentarios..................................................................................................................................................124 Ejemplo de la funcin Mid..........................................................................................................................124 17.16-MsgBox...............................................................................................................................................124 17.17-Right....................................................................................................................................................125 17.18-Str........................................................................................................................................................126 Comentarios..................................................................................................................................................126 17.19-Ucase...................................................................................................................................................127 17.20-Val.......................................................................................................................................................127 Comentarios..................................................................................................................................................127 Ejemplo de la instruccin MkDir................................................................................................................129 Sintaxis..........................................................................................................................................................129
Option Explicit......................................................................................................................................................131

Figura: Barras separadoras.......................................................................................................................135 Comentarios..................................................................................................................................................148 Sintaxis..........................................................................................................................................................149 Importante....................................................................................................................................................150 Sintaxis..........................................................................................................................................................155 Comentarios..................................................................................................................................................156

Pgina 8 de 161

Curso Visual Basic 5.0

Qu es Visual Basic ?
Qu es Visual Basic? La palabra "Visual" hace referencia al mtodo que se utiliza para crear la interfaz grfica de usuario (GUI). En lugar de escribir numerosas lneas de cdigo para describir la apariencia y la ubicacin de los elementos de la interfaz, simplemente puede arrastrar y colocar objetos prefabricados en su lugar dentro de la pantalla. Si ha utilizado alguna vez un programa de dibujo como Paint, ya tiene la mayor parte de las habilidades necesarias para crear una interfaz de usuario efectiva. La palabra "Basic" hace referencia al lenguaje BASIC (Beginners All-Purpose Symbolic Instruction Code), un lenguaje utilizado por ms programadores que ningn otro lenguaje en la historia de la informtica o computacin. Visual Basic ha evolucionado a partir del lenguaje BASIC original y ahora contiene centenares de instrucciones, funciones y palabras clave, muchas de las cuales estn directamente relacionadas con la interfaz grfica de Windows. Los principiantes pueden crear aplicaciones tiles con slo aprender unas pocas palabras clave, pero, al mismo tiempo, la eficacia del lenguaje permite a los profesionales acometer cualquier objetivo que pueda alcanzarse mediante cualquier otro lenguaje de programacin de Windows. El lenguaje de programacin Visual Basic no es exclusivo de Visual Basic. La Edicin para aplicaciones del sistema de programacin de Visual Basic, incluida en Microsoft Excel, Microsoft Access y muchas otras aplicaciones Windows, utilizan el mismo lenguaje. El sistema de programacin de Visual Basic, Scripting Edition (VBScript) para programar en Internet es un subconjunto del lenguaje Visual Basic. La inversin realizada en el aprendizaje de Visual Basic le ayudar a abarcar estas otras reas. Si su objetivo es crear un pequeo programa para su uso personal o para su grupo de trabajo, un sistema para una empresa o incluso aplicaciones distribuidas de alcance mundial a travs de Internet, Visual Basic dispone de las herramientas que necesita. Las caractersticas de acceso a datos le permiten crear bases de datos y aplicaciones cliente para los formatos de las bases de datos ms conocidas, incluidos Microsoft SQL Server y otras bases de datos de mbito empresarial. Las tecnologas ActiveX le permiten utilizar la funcionalidad proporcionada por otras aplicaciones, como el procesador de textos Microsoft Word, la hoja de clculo Microsoft Excel y otras aplicaciones Windows. Puede incluso automatizar las aplicaciones y los objetos creados con la Edicin profesional o la Edicin empresarial de Visual Basic. Las capacidades de Internet facilitan el acceso a documentos y aplicaciones a travs de Internet desde su propia aplicacin. La aplicacin terminada es un autntico archivo .exe que utiliza una biblioteca de vnculos dinmicos (DLL) de tiempo de ejecucin que puede distribuir con toda libertad.

Ediciones de Visual Basic


Visual Basic se encuentra disponible en tres versiones, cada una de las cuales est orientada a unos requisitos de programacin especficos. La Edicin de aprendizaje de Visual Basic permite a los programadores crear robustas aplicaciones para Microsoft Windows 95 y Windows NT. Incluye todos los controles intrnsecos, adems de los controles de cuadrcula, de fichas y los controles enlazados a datos. La documentacin que se proporciona con esta edicin incluye Learn VB Now (un CD-ROM multimedia), un Manual del programador impreso, la Ayuda en pantalla y los Libros en pantalla de Visual Basic. La Edicin profesional proporciona a los profesionales un completo conjunto de herramientas para desarrollar soluciones para terceros. Incluye todas las caractersticas de la Edicin de aprendizaje, as como controles ActiveX adicionales, incluidos controles para Internet y el Generador de informes de Crystal Reports. La documentacin que se proporciona con la Edicin profesional incluye el Manual del programador, la Ayuda en pantalla, la Gua de herramientas componentes y el Manual del usuario de Crystal Reports para Visual Basic.

Pgina 9 de 161

Curso Visual Basic 5.0 La Edicin empresarial permite a los profesionales crear slidas aplicaciones distribuidas en un entorno de equipo. Incluye todas las caractersticas de la Edicin profesional, as como el Administrador de automatizacin, la Galera de objetos, las herramientas de administracin de bases de datos, el sistema de control de versiones orientado a proyectos Microsoft Visual SourceSafe, etc. La documentacin impresa que se proporciona con la Edicin empresarial incluye toda la documentacin de la Edicin profesional, y la Gua para la creacin de aplicaciones cliente-servidor con Visual Basic y el Manual del usuario de SourceSafe.

Introduccin: 1.1- Programacin orientada a objetos.


1.1.1- Objetos.
Un objeto es una entidad que tiene asociado un conjunto de mtodos, eventos y propiedades. Ejemplo : Una caja de texto (TextBox) en la cual podemos escribir cualquier lnea es un objeto.

1.1.2- Propiedades.
Son las caractersticas que posee un objeto o un formulario (ventana de Windows). Ejemplo : Color de fondo del formulario, Fuente de texto de un TextBox, .

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

1.1.4- Eventos.
Los eventos son acciones que se pueden realizar en cualquier control: click, doble click, movimiento del ratn. A estos eventos se les puede asociar cdigo para que se ejecute al producir el evento. Un programa Visual Basic es un POE (Programa orientado a eventos). Todo lo que hacemos en un programa Visual Basic est generado por medio de eventos

1.1.5- Explicacin integrada y ejemplo de Objetos, Propiedades, Mtodos y Eventos.


Los formularios y controles de Visual Basic son objetos que exponen sus propios mtodos, propiedades y eventos. Las propiedades se pueden considerar como atributos de un objeto, los mtodos como sus acciones y los eventos como sus respuestas. Un objeto de uso diario como el globo de un nio tiene tambin propiedades, mtodos y eventos. Entre las propiedades de un globo se incluyen atributos visibles como el peso, el dimetro y el color. Otras propiedades describen su estado (inflado o desinflado) o atributos que no son visibles, como su edad. Por definicin, todos los globos tienen estas propiedades; lo que vara de un globo a otros son los valores de estas propiedades. Un globo tiene tambin mtodos o acciones inherentes que puede efectuar. Tiene un mtodo inflar (la accin de llenarlo de helio) o un mtodo desinflar (expeler su contenido) y un mtodo elevarse (si se deja escapar). De nuevo, todos los globos pueden efectuar estos mtodos.

Pgina 10 de 161

Curso Visual Basic 5.0 Los globos tienen adems respuestas predefinidas a ciertos eventos externos. Por ejemplo, un globo respondera al evento de pincharlo desinflndose o al evento de soltarlo elevndose en el aire. Los objetos tienen propiedades, responden a eventos y ejecutan mtodos:

Si se pudiera programar un globo, el cdigo de Visual Basic podra ser como el siguiente. Para establecer las propiedades del globo: Globo.Color = Rojo Globo.Dimetro = 10 Globo.Inflado = True Observe la sintaxis del cdigo: el objeto (Globo) seguido de la propiedad (Color) seguida de la asignacin del valor (Rojo). Podra modificar el color del globo desde el cdigo si repitiera esta instruccin y sustituyera el valor por otro diferente. Las propiedades tambin se pueden establecer en la ventana Propiedades mientras se est diseando la aplicacin. Los mtodos de un globo se invocan de esta forma: Globo.Inflar Globo.Desinflar Globo.Elevar 5 La sintaxis es similar a la sintaxis de las propiedades: el objeto (un nombre) seguido de un mtodo (un verbo). En el tercer ejemplo hay un elemento adicional, llamado argumento, que indica la distancia que se eleva. Algunos mtodos tendrn uno o ms argumentos para describir ms a fondo la accin que se va a ejecutar. El globo puede responder a un evento como se muestra a continuacin: Sub Globo_Pinchazo() Globo.Desinflar Globo.HacerRuido "Bang" Globo.Inflado = False Globo.Dimetro = 1 End Sub En este caso, el cdigo describe el comportamiento del globo cuando se produce un evento Pinchazo: invoca el mtodo Desinflar y luego invoca el mtodo HacerRuido con un argumento Bang (el tipo de ruido que se va a hacer). Como el globo ya no est inflado, la propiedad Inflado tiene el valor False y la propiedad Dimetro adopta un nuevo valor. Si bien no puede programar un globo, s puede programar un formulario o un control de Visual Basic. Como programador, tiene el control: decide qu propiedades se deben modificar, qu mtodos se deben invocar o a qu eventos hay que responder para conseguir la apariencia y el comportamiento deseados

1.1.6- Diferencias entre la programacin procedural y la programacin bajo Windows.

Pgina 11 de 161

Curso Visual Basic 5.0 Un estudio profundo del funcionamiento interno de Windows necesitara un libro completo. No es necesario tener un profundo conocimiento de todos los detalles tcnicos. Una versin reducida del funcionamiento de Windows incluye tres conceptos clave: ventanas, eventos y mensajes. Una ventana es simplemente una regin rectangular con sus propios lmites. Probablemente ya sabe que hay varios tipos de ventanas: una ventana Explorador en Windows 95, una ventana de documento dentro de su programa de proceso de textos o un cuadro de dilogo que emerge para recordarle una cita. Aunque stos son los ejemplos ms comunes, realmente hay otros muchos tipos de ventanas. Un botn de comando es una ventana. Los iconos, cuadros de texto, botones de opcin y barras de mens son todos ventanas. El sistema operativo Microsoft Windows administra todas estas ventanas asignando a cada una un nico nmero identificador (controlador de ventana o hWnd). El sistema controla continuamente cada una de estas ventanas para ver si existen signos de actividad o eventos. Los eventos pueden producirse mediante acciones del usuario, como hacer clic con el mouse (ratn) o presionar una tecla, mediante programacin o incluso como resultado de acciones de otras ventanas. Cada vez que se produce un evento se enva un mensaje al sistema operativo. El sistema procesa el mensaje y lo transmite a las dems ventanas. Entonces, cada ventana puede realizar la accin apropiada, basndose en sus propias instrucciones para tratar ese mensaje en particular (por ejemplo, volverse a dibujar cuando otra ventana la ha dejado al descubierto). Como puede imaginar, tratar todas las combinaciones posibles de ventanas, eventos y mensajes podra ser interminable. Afortunadamente, Visual Basic le evita tener que tratar con todos los controladores de mensajes de bajo nivel. Muchos de los mensajes los controla automticamente Visual Basic, mientras que otros se tratan como procedimientos de evento para su comodidad. Esto le permite crear rpidamente eficaces aplicaciones sin tener que tratar detalles innecesarios. En las aplicaciones tradicionales o "por procedimientos", la aplicacin es la que controla qu partes de cdigo y en qu secuencia se ejecutan. La ejecucin comienza con la primera lnea de cdigo y contina con una ruta predefinida a travs de la aplicacin, llamando a los procedimientos segn se necesiten. En una aplicacin controlada por eventos, el cdigo no sigue una ruta predeterminada; ejecuta distintas secciones de cdigo como respuesta a los eventos. Los eventos pueden desencadenarse por acciones del usuario, por mensajes del sistema o de otras aplicaciones, o incluso por la propia aplicacin. La secuencia de estos eventos determina la secuencia en la que se ejecuta el cdigo, por lo que la ruta a travs del cdigo de la aplicacin es diferente cada vez que se ejecuta el programa. Puesto que no puede predecir la secuencia de los eventos, el cdigo debe establecer ciertos supuestos acerca del "estado del mundo" cuando se ejecute. Cuando haga suposiciones (por ejemplo, que un campo de entrada debe contener un valor antes de ejecutar un procedimiento para procesar ese valor), debe estructurar la aplicacin de forma que asegure que esa suposicin siempre ser vlida (por ejemplo, deshabilitando el botn de comando que inicia el procedimiento hasta que el campo de entrada contenga un valor). El cdigo tambin puede desencadenar eventos durante la ejecucin. Por ejemplo, cambiar mediante programacin el texto de un cuadro de texto hace que se produzca el evento Change del cuadro de texto. Esto causara la ejecucin del cdigo (si lo hay) contenido en el evento Change. Si supone que este evento slo se desencadenar mediante la interaccin del usuario, podra ver resultados inesperados. Por esta razn es importante comprender el modelo controlado por eventos y tenerlo en cuenta cuando disee su aplicacin.

1.3- Proyecto.
1.3.1- Definicin de Proyecto en Visual Basic.
Para crear una aplicacin con Visual Basic se trabaja con proyectos. Un proyecto es una coleccin de archivos que se usan para generar una aplicacin. Este tema describe cmo generar y administrar proyectos. Al crear una aplicacin probablemente crear nuevos formularios; tambin puede volver a usar o modificar formularios creados en proyectos anteriores. Esto tambin se aplica a otros mdulos o archivos que pueda incluir en su proyecto. Los controles ActiveX y los objetos de otras aplicaciones tambin se pueden compartir entre proyectos. Despus de ensamblar todos los componentes de un proyecto y escribir el cdigo, puede compilar el proyecto para crear un archivo ejecutable.

Pgina 12 de 161

Curso Visual Basic 5.0

1.3.2-Componentes de un Proyecto.
Cuando desarrolla un aplicacin, trabaja con un archivo de proyecto para administrar todos los diferentes archivos que crea. Un proyecto consta de lo siguiente: Un archivo de proyecto que realiza el seguimiento de todos los componentes (.vbp) Un archivo para cada formulario (.frm). Un archivo de datos binario para cada formulario que contenga datos sobre propiedades de controles del formulario (.frx). Estos archivos no se pueden modificar y los genera automticamente cualquier archivo .frm que tenga propiedades en formato binario, como Picture o Icon. Opcionalmente, un archivo para cada mdulo de clase (.cls). Opcionalmente, un archivo para cada mdulo estndar (.bas). Opcionalmente, uno o ms archivos con controles ActiveX (.ocx). Opcionalmente, un nico archivo de recursos (.res). El archivo de proyecto es simplemente una lista de todos los archivos y objetos asociados con el proyecto, as como informacin sobre las opciones de entorno establecidas. Esta informacin se actualiza cada vez que guarda el proyecto. Todos los archivos y objetos tambin se pueden compartir con otros proyectos. Cuando ha completado todos los archivos del proyecto puede convertir el proyecto en un archivo ejecutable (.exe): en el men Archivo, elija el comando Generar proyecto.exe.

1.3.2.1-Formularios.
Un formulario es una ventana. La ventana Windows de cualquier aplicacin. Podemos abrir tantas ventanas como queramos en nuestro proyecto, pero el nombre de las ventanas debe ser distinto. Por defecto como ya hemos visto, la ventana que se abre en Visual Basic tiene el nombre de Form1. Ya veremos como cambiar estas "Propiedades" ms adelante. Los mdulos de formularios (extensin de nombre de archivo .frm) pueden contener descripciones en forma de texto del formulario y sus controles, incluyendo los valores de sus propiedades. Tambin pueden contener declaraciones a nivel de formulario de constantes, variables y procedimientos externos, procedimientos de evento y procedimientos generales.

1.3.2.2-Mdulos de clase.
Los mdulos de clase (extensin de nombre de archivo .cls) son similares a los mdulos de formulario, excepto en que no tiene interfaz de usuario visible. Puede usar mdulos de clase para crear sus propios objetos, incluyendo cdigo para mtodos y propiedades.

1.3.2.3-Mdulos estndar.
Un mdulo es un archivo Visual Basic donde escribimos parte del cdigo de nuestro programa, y digo parte, porque puede haber cdigo en el formulario tambin. Las rutinas incluidas dentro de los mdulos pueden ser ejecutadas desde los formularios de la aplicacin. Los mdulos estndar (extensin de nombre de archivo .bas) pueden contener declaraciones pblicas o a nivel de mdulo de tipos, constantes, variables, procedimientos externos y procedimientos pblicos.

1.3.2.4-Archivos de Recursos.
Los archivos de recursos (extensin de nombre de archivo .res) contienen mapas de bits, cadenas de texto y otros datos que puede modificar sin volver a modificar el cdigo. Por ejemplo, si piensa traducir su aplicacin a un idioma extranjero, puede guardar todas las cadenas de texto de la interfaz de usuario y los mapas de bits en un archivo de recursos, y simplemente traducir el archivo de recursos en vez de la aplicacin completa. Un proyecto slo puede contener un archivo de recursos.

Pgina 13 de 161

Curso Visual Basic 5.0

1.3.2.5-Controles Active X.
Los controles ActiveX (extensin de nombre de archivo .ocx) son controles opcionales que se pueden agregar al cuadro de herramientas y se pueden usar en formularios. Cuando instala Visual Basic, los archivos que contienen los controles incluidos en Visual Basic se copian a un directorio comn (el subdirectorio \Windows\System en Windows 95). Existen controles ActiveX adicionales disponibles en diversas fuentes. Tambin puede crear sus propios controles mediante las ediciones Profesional y Empresarial de Visual Basic.

1.3.2.6-Controles estndar.
Los controles estndar los proporciona Visual Basic. Los controles estndar, como CommandButton (botn de comando) o Frame (marco), siempre estn incluidos en el cuadro de herramientas, al contrario de lo que ocurre con los controles ActiveX y los objetos insertables, que se pueden agregar y quitar del cuadro de herramientas.

1.4-Entorno de Desarrollo.
1.4.1-Barra de men. y 1.4.2-Barra de Herramientas.

En la ventana del programa, podemos hacer todas las funciones normales que nos permite el compilador Visual Basic.

1.4.3-Ventana de Proyecto.

Pulse "Ctrl+R" (Ver -> Proyecto) y se abrir la ventana de proyectos (3). En esta ventana tenemos todos los ficheros del proyecto Visual Basic en el que vamos a trabajar.

1.4.4- Formulario.

Pgina 14 de 161

Curso Visual Basic 5.0 Al principio y por defecto, el programa abre un formulario con el nombre Form1 que es la ventana Windows de nuestra aplicacin.

1.4.5- Ventana de Propiedades.

Pulsando la tecla "F4", aparecer la ventana de propiedades . Esta ventana es fundamental, ya que contiene todas las propiedades de cada objeto que insertaremos en nuestro formulario, as como las propiedades del formulario en s.

1.4.6- Caja de Herramientas.

Pgina 15 de 161

Curso Visual Basic 5.0 La ventana caja de herramientas contiene todos los objetos que podemos incluir en nuestro formulario. Esta ventana se puede abrir en el men principal (Ver -> Caja de herramientas).

2-Programacin: 2.1- Fundamentos de la Programacin.


Cada mdulo de formulario contiene procedimientos de evento (secciones de cdigo donde se colocan las instrucciones que se ejecutarn como respuesta a eventos especficos). Los formularios pueden contener controles. Por cada control de un formulario, existe el correspondiente conjunto de procedimientos de evento en el mdulo de formulario. Adems de procedimientos de evento, los mdulos de formulario pueden contener procedimientos generales que se ejecutan como respuesta a una llamada desde cualquier procedimiento de evento. El cdigo que no est relacionado con un control o un formulario especfico se puede colocar en un tipo diferente de mdulo, un mdulo estndar (.bas). Se deben colocar en un mdulo estndar los procedimientos que se puedan utilizar como respuesta a eventos de diversos objetos, en lugar de duplicar el cdigo en los procedimientos de evento de cada objeto.

2.1.1- Como funciona una aplicacin controlada por eventos.


Un evento es una accin reconocida por un formulario o un control. Las aplicaciones controladas por eventos ejecutan cdigo Basic como respuesta a un evento. Cada formulario y control de Visual Basic tiene un conjunto de eventos predefinidos. Si se produce uno de dichos eventos y el procedimiento de evento asociado tiene cdigo, Visual Basic llama a ese cdigo. Aunque los objetos de Visual Basic reconocen automticamente un conjunto predefinido de eventos, usted decide cundo y cmo se responder a un evento determinado. A cada evento le corresponde una seccin de cdigo (un procedimiento de evento). Cuando desea que un control responda a un evento, escribe cdigo en el procedimiento de ese evento. Los tipos de eventos reconocidos por un objeto varan, pero muchos tipos son comunes a la mayora de los controles. Por ejemplo, la mayora de los objetos reconocen el evento Click: si un usuario hace clic en un formulario, se ejecuta el cdigo del procedimiento de evento Click del formulario; si un usuario hace clic en un botn de comando, se ejecuta el cdigo del procedimiento de evento Click del botn. El cdigo en cada caso ser diferente. He aqu una secuencia tpica de eventos en una aplicacin controlada por eventos: 1. Se inicia la aplicacin y se carga y muestra un formulario. 2. El formulario (o un control del formulario) recibe un evento. El evento puede estar causado por el usuario (por ejemplo, por la pulsacin de una tecla), por el sistema (por ejemplo, un evento de cronmetro) o, de forma indirecta, por el cdigo (por ejemplo, un evento Load cuando el cdigo carga un formulario). 3. Si hay cdigo en el procedimiento de evento correspondiente, se ejecuta. 4. La aplicacin espera al evento siguiente.

2.2- Variables.
2.2.1- Alcance de las variables.
El alcance de una variable define qu partes del cdigo son conscientes de su existencia. Cuando declara una variable en un procedimiento, slo el cdigo de dicho procedimiento puede tener acceso o modificar el valor de la variable; tiene un alcance que es local al procedimiento. A veces, sin embargo, se necesita utilizar una variable con un alcance ms general, como aquella cuyo valor est disponible para todos los procedimientos del mismo mdulo o incluso para todos

Pgina 16 de 161

Curso Visual Basic 5.0 los procedimientos de toda la aplicacin. Visual Basic le permite especificar el alcance de una variable cuando la declara. Establecimiento del alcance de las variables Dependiendo de cmo se declara, una variable tiene como alcance un procedimiento (local) o un mdulo.

Alcance
Nivel de procedimiento Nivel de mdulo

Privado
Las variables son privadas del procedimiento en el que aparecen. Las variables son privadas del mdulo en el que aparecen.

Pblico
No es aplicable. No puede declarar variables pblicas dentro de un procedimiento. Las variables estn disponibles para todos los mdulos.

Variables utilizadas en un procedimiento


Las variables a nivel de procedimiento slo se reconocen en el procedimiento en el que se han declarado. Se las conoce tambin como variables locales. Se declaran mediante las palabras clave Dim o Static. Por ejemplo: Dim intTemp As Integer o bien Static intPermanent As Integer Los valores de variables locales declaradas con Static existen mientras se ejecuta la aplicacin, mientras que las variables declaradas con Dim slo existen mientras se ejecuta el procedimiento. Las variables locales resultan una eleccin apropiada para clculos temporales. Por ejemplo, puede crear una docena de procedimientos distintos que contengan una variable llamada intTemp. Como cada intTemp se ha declarado como una variable local, cada procedimiento slo reconoce su propia versin de intTemp. Cualquier procedimiento puede alterar el valor de su intTemp local sin que ello afecte a las variables intTemp de los dems procedimientos.

Variables utilizadas en un mdulo


De forma predeterminada, una variable a nivel de mdulo est disponible para todos los procedimientos del mdulo, pero no para el cdigo de otros mdulos. Cree variables a nivel de mdulo declarndolas con la palabra clave Private en la seccin Declaraciones al principio del mdulo. Por ejemplo: Private intTemp As Integer A nivel de mdulo, no hay diferencia entre Private y Dim, pero es preferible Private porque contrasta con Public y hace que el cdigo sea ms fcil de comprender.

Variables utilizadas por todos los mdulos


Para hacer que una variable a nivel de mdulo est disponible para otros mdulos, utilice la palabra clave Public para declarar la variable. Los valores de las variables pblicas estn disponibles para todos los procedimientos de la aplicacin. Al igual que todas las variables a nivel de mdulo, las variables pblicas se declaran en la seccin Declaraciones al principio del mdulo. Por ejemplo: Public intTemp As Integer Nota No puede declarar variables pblicas en un procedimiento, slo en la seccin Declaraciones de un mdulo.

2.2.2- Declaracin La forma de declarar las variables es la siguiente:


Pgina 17 de 161

Curso Visual Basic 5.0 Dim| Public| Static nombre_variable As tipo Dim: Al declarar una variable con esta palabra estamos diciendo que la variable sea local al mbito en que se declara. Puede ser dentro de un procedimiento o dentro de un formulario, de esta forma no sera accesible desde los dems procedimientos o formularios. Public: Las variables declaradas sern publicas y podrn estar accesibles desde todos los formularios de la aplicacin. Para conseguirlo tendremos que declararlas en un mdulo de cdigo, no en la seccin declarations de cualquier formulario de los que conste la aplicacin. Para crear un mdulo de cdigo en el men principal de Visual Basic marcamos en PROYECTO/INSETAR MDULO y aparecer junto a los dems formularios de la ventana de proyecto aunque con un icono distinto indicando que se trata de un mdulo de cdigo. Static: Con esta forma de declarar variables conseguiremos que las variables locales no se creen y se destruyan al entrar y salir de los procedimientos donde fueron declaradas sino que se mantenga su valor durante todo el periodo de ejecucin de la aplicacin. De esta forma a entrar en algn procedimiento las variables recuerdan el valor que tenan cuando se sali de l.

2.2.3- Tipos de variables


TIPO BOOLEAN BYTE INTEGER LONG SINGLE DOUBLE CURRENCY STRING DATE COMENTARIO Slo admite 2 valores TRUE o FALSE admite valores entre 0 y 255 admite valores entre -32768 y 32767 admite valores entre -2.147.483.648 y 2.147.483.647 admite valores decimales con precisin simple admite valores decimales de doble precisin vlido para valores de tipo moneda cadenas de caracteres fechas, permite operar con ellas

2.2.4- Matrices
Para declarar matrices debemos colocar entre parntesis el nmero de elementos de los que constar a continuacin del nombre de la variable: Dim medidas(9) as integer De esta forma tenemos una matriz de 10 elementos identificados del 0 al 9 Podemos obligar a que el primer elemento de una matriz tenga el ndice con valor 1. Esto lo haremos colocando la instruccin option base 1 en la seccin declarations de nuestro formulario. Tambin podemos indicar los lmites inferior y superior de la matriz: Dim medidas(5 to 14) as integer es una matriz de 10 elementos cuyos indices van del 5 al 14 Las matrices multidimensionales se declaran de la siguiente forma: Dim medidas(1 to 10, 1 to 10) as integer

Pgina 18 de 161

Curso Visual Basic 5.0

CONSIDERACIONES Al trabajar con Visual Basic es preferible que activemos la opcin que nos obligue a declarar todas las variables que utilicemos, de esta forma nos ahorraremos errores inesperados como el de trabajar con una variable ya utilizada anteriormente producindose un conflicto dficil de resolver. En cambio si intentamos declarar 2 variables con el mismo nombre, en el mismo formulario o procedimiento se produce un error en tiempo de edicin avisndonos de la situacin. Para activar esta opcin debemos ir a la opcin del men Herramientas y Opciones para que aparezca un cuadro de dialogo como este.

La opcin que nos interesa activar es Requerir declaracin de variables que en este caso ya lo est. De esta forma en cada seccin declarations de cada formulario aparecer la sentencia option explicit Otra opcin que es interesante activar, es la de Guardar los cambios en la ficha entorno, la cual te guarda una copia del cdigo antes de ejecutarlo por si acaso luego no podemos, se bloquea la aplicacin etc... no suele pasar pero nunca se sabe. De esta forma te aseguras que lo ltimo que hayas ejecutado lo tienes guardado en el disco. La opcin Comprobacin automtica de sintaxis normalmente viene activada por defecto, no conviene desactivarla puesto que te avisa de errores de sintaxis conforme vas escribiendo el cdigo: Si te falta el then despus del if, el do antes del while etc...

2.3- Procedimientos y funciones.


2.3.1-Introduccin a los Procedimientos.

Pgina 19 de 161

Curso Visual Basic 5.0 Puede simplificar las tareas de programacin si divide los programas en componentes lgicos ms pequeos. Estos componentes, llamados procedimientos, pueden convertirse en bloques bsicos que le permiten mejorar y ampliar Visual Basic. Los procedimientos resultan muy tiles para condensar las tareas repetitivas o compartidas, como clculos utilizados frecuentemente, manipulacin de texto y controles, y operaciones con bases de datos. Hay dos ventajas principales cuando se programa con procedimientos: Los procedimientos le permiten dividir los programas en unidades lgicas discretas, cada una de las cuales se puede depurar ms fcilmente que un programa entero sin procedimientos. Los procedimientos que se utilizan en un programa pueden actuar como bloques de construccin de otros programas, normalmente con pocas o ninguna modificacin. En Visual Basic se utilizan varios tipos de procedimientos: Procedimientos Sub que no devuelven un valor. Procedimientos Function que devuelven un valor (normalmente conocidos como funciones).

2.3.2- Procedimientos.
Un procedimiento Sub es un bloque de cdigo que se ejecuta como respuesta a un evento. Al dividir el cdigo de un mdulo en procedimientos Sub, es ms sencillo encontrar o modificar el cdigo de la aplicacin. La sintaxis de un procedimiento Sub es la siguiente: [Private|Public][Static]Sub nombre_procedimiento (argumentos) instrucciones End Sub Cada vez que se llama al procedimiento se ejecutan las instrucciones que hay entre Sub y End Sub. Se pueden colocar los procedimientos Sub en mdulos estndar, mdulos de clase y mdulos de formulario. De forma predeterminada, los procedimientos Sub son Public en todos los mdulos, lo que significa que se les puede llamar desde cualquier parte de la aplicacin. Los argumentos de un procedimiento son como las declaraciones de variables; se declaran valores que se pasan desde el procedimiento que hace la llamada. Resulta muy til en Visual Basic distinguir entre dos tipos de procedimientos Sub, procedimientos generales y procedimientos de evento.

Procedimientos generales
Un procedimiento general indica a la aplicacin cmo realizar una tarea especfica. Una vez que se define un procedimiento general, se le debe llamar especficamente desde la aplicacin. Por el contrario, un procedimiento de evento permanece inactivo hasta que se le llama para responder a eventos provocados por el usuario o desencadenados por el sistema. Por qu crear procedimientos generales? Una razn es que muchos procedimientos de evento distintos pueden necesitar que se lleven a cabo las mismas acciones. Es una buena estrategia de programacin colocar las instrucciones comunes en un procedimiento distinto (un procedimiento general) y hacer que los procedimientos de evento lo llamen. Esto elimina la necesidad de duplicar cdigo y tambin hace que la aplicacin sea ms fcil de mantener.

Procedimientos de evento
Cuando un objeto en Visual Basic reconoce que se ha producido un evento, llama automticamente al procedimiento de evento utilizando el nombre correspondiente al evento. Como el nombre establece una asociacin entre el objeto y el cdigo, se dice que los procedimientos de evento estn adjuntos a formularios y controles. Un procedimiento de evento de un control combina el nombre real del control (especificado en la propiedad Name), un carcter de subrayado (_) y el nombre del evento. Por ejemplo, si desea que un botn de comando llamado cmdPlay llame a un procedimiento de evento cuando se haga clic en l, utilice el procedimiento cmdPlay_Click. Pgina 20 de 161

Curso Visual Basic 5.0 Un procedimiento de evento de un formulario combina la palabra "Form", un carcter de subrayado y el nombre del evento. Si desea que un formulario llame a un procedimiento de evento cuando se hace clic en l, utilice el procedimiento Form_Click. (Como los controles, los formularios tienen nombres nicos, pero no se utilizan en los nombres de los procedimientos de evento.) Todos los procedimientos de evento utilizan la misma sintaxis general. Sintaxis de un evento de control Sintaxis de un evento de formulario Private Sub nombrecontrol_nombreevento (argumentos ) instrucciones End Sub Private Sub Form_nombreevento (argumentos) instrucciones End Sub Aunque puede escribir procedimientos de evento nuevos, es ms sencillo utilizar los procedimientos de cdigo que facilita Visual Basic, que incluyen automticamente los nombres correctos de procedimiento. Puede seleccionar una plantilla en la ventana Editor de cdigo si selecciona un objeto en el cuadro Objeto y selecciona un procedimiento en el cuadro Procedimiento. Tambin es conveniente establecer la propiedad Name de los controles antes de empezar a escribir los procedimientos de evento para los mismos. Si cambia el nombre de un control tras vincularle un procedimiento, deber cambiar tambin el nombre del procedimiento para que coincida con el nuevo nombre del control. De lo contrario, Visual Basic no ser capaz de hacer coincidir el control con el procedimiento. Cuando el nombre de un procedimiento no coincide con el nombre de un control, se convierte en un procedimiento general.

2.3.3- Funciones.
La sintaxis de un procedimiento Function es la siguiente: [Private|Public][Static]Function nombre_procedimiento (argumentos) [As tipo] instrucciones End Function Al igual que un procedimiento Sub, un procedimiento Function es un procedimiento diferente que puede tomar argumentos, realizar una serie de instrucciones y cambiar el valor de los argumentos. A diferencia de los procedimientos Sub, los procedimientos Function pueden devolver un valor al procedimiento que realiza la llamada. Hay tres diferencias entre los procedimientos Sub y Function: Generalmente, se llama a una funcin incluyendo el nombre y los argumentos del procedimiento en la parte derecha de una instruccin o expresin mayor (valor_retorno = funcin()). Los procedimientos Function tienen tipos de datos, al igual que las variables. Esto determina el tipo del valor de retorno. (En ausencia de la clusula As, el tipo es el tipo predeterminado Variant.) Se devuelve un valor asignndole al propio nombre_procedimiento. Cuando el procedimiento Function devuelve un valor, se puede convertir en parte de una expresin mayor. Por ejemplo, podra escribir una funcin que calculara el tercer lado, o hipotenusa, de un tringulo rectngulo, dados los valores de los otros dos lados: Function Hipotenusa (A As Integer, B As Integer) As String Hipotenusa = Sqr(A ^ 2 + B ^ 2) End Function Se llama a un procedimiento Function de la misma forma que a las funciones incorporadas en Visual Basic: Label1.Caption = Hipotenusa(CInt(Text1.Text),CInt(Text2.Text)) Pgina 21 de 161

Curso Visual Basic 5.0 strX = Hipotenusa(Width, Height)

2.3.4- Llamadas a Procedimientos.


Un procedimiento Sub difiere de un procedimiento Function en que al procedimiento Sub no se le puede llamar mediante su nombre en una expresin. La llamada a un procedimiento Sub es una instruccin nica. Adems, un procedimiento Sub no devuelve un valor en su nombre como hace una funcin. Sin embargo, al igual que Function, un procedimiento Sub puede modificar los valores de las variables que se le pasan. Hay dos formas de llamar a un procedimiento Sub: ' Ambas instrucciones llaman a un Sub denominado MiProc. Call MiProc (PrimerArgumento, SegundoArgumento) MiProc PrimerArgumento, SegundoArgumento Observe que cuando utiliza la sintaxis Call, debe poner los argumentos entre parntesis. Si omite la palabra clave Call, deber tambin omitir los parntesis alrededor de los argumentos.

2.3.5- Llamadas a Funciones.


Normalmente se llama a un procedimiento de funcin que se ha escrito de la misma forma en que se llama a una funcin intrnseca de Visual Basic como Abs; es decir, utilizando su nombre en una expresin: ' Las instrucciones siguientes llamaran a una funcin _ ' llamada ToDec. Print 10 * Adec X = Adec If Adec = 10 Then Debug.Print "Fuera del intervalo" X = OtraFuncin(10 * Adec) Tambin es posible llamar a una funcin igual que se llama a un procedimiento Sub. Las instrucciones siguientes llaman a la misma funcin: Call Year(Now) Year Now Cuando llama a una funcin de esta manera, Visual Basic desecha el valor de retorno.

2.3.6- Pasaje de argumentos a los procedimientos y funciones.


Normalmente el cdigo de un procedimiento necesita cierta informacin sobre el estado del programa para realizar su trabajo. Esta informacin consiste en variables que se pasan al procedimiento cuando se le llama. Cuando se pasa una variable a un procedimiento, se llama argumento.

Tipos de datos de los argumentos


Los argumentos de los procedimientos que escriba tienen el tipo de dato Variant de forma predeterminada. Sin embargo, puede declarar otros tipos de datos para los argumentos. Por ejemplo, la funcin siguiente acepta una cadena y un entero: Function QuComer (DaSemana As String, Hora As Integer) As String ' Devuelve el men del almuerzo basndose en el da y la hora. If DaSemana = "Viernes" then QuComer = "Pescado" Pgina 22 de 161

Curso Visual Basic 5.0 Else QuComer = "Pollo" End If If Hora > 4 Then QuComer = "Demasiado tarde" End Function

Paso de argumentos por valor


Slo se pasa una copia de la variable cuando se pasa un argumento por valor. Si el procedimiento cambia el valor, el cambio afecta slo a la copia y no a la variable propiamente dicha. Utilice la palabra clave ByVal para indicar un argumento pasado por valor. Por ejemplo: Sub Cuentas (ByVal intNumCuenta as Integer) . . ' Ponga aqu sus instrucciones. . End Sub

Paso de argumentos por referencia


Pasar argumentos por referencia le da al procedimiento acceso al contenido real de la variable en su ubicacin de direccin de memoria. Como resultado, el procedimiento al que se ha pasado el valor de la variable se puede modificar de forma permanente. La forma predeterminada de pasar valores en Visual Basic es por referencia. Si especifica el tipo de dato de un argumento que se pasa por referencia, debe pasar un valor de ese tipo para el argumento. Puede eludirlo si pasa una expresin en vez de un tipo de dato como argumento. Visual Basic evala la expresin y la pasa como el tipo requerido si puede. La forma ms sencilla de convertir una variable en una expresin es ponerla entre parntesis. Por ejemplo, para pasar una variable declarada como entero a un procedimiento que espera una cadena como argumento, debera hacer lo siguiente: Sub ProcedimientoQueLlama () Dim intX As Integer intX = 12 * 3 Foo(intX) End Sub Sub Foo(Bar As String) MsgBox Bar End Sub

'El valor de Bar es la cadena "36".

2.4- Estructuras de Control (Repeticin y Decisin).


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

Pgina 23 de 161

Curso Visual Basic 5.0 Do While condicin instrucciones Loop Cuando Visual Basic ejecuta este bucle Do, primero evala condicin. Si condicin es False (cero), se salta todas las instrucciones. Si es True (distinto de cero), Visual Basic ejecuta las instrucciones, vuelve a la instruccin Do While y prueba la condicin de nuevo. Por tanto, el bucle se puede ejecutar cualquier nmero de veces, siempre y cuando condicin sea distinta de cero o True. Nunca se ejecutan las instrucciones si condicin es False inicialmente. Por ejemplo, este procedimiento cuenta las veces que se repite una cadena de destino dentro de otra cadena repitiendo el bucle tantas veces como se encuentre la cadena de destino: Function ContarCadenas (cadenalarga, destino) Dim posicin, contador posicin = 1 Do While InStr(posicin, cadenalarga, destino) posicin = InStr(posicin, cadenalarga, destino) +1 contador = contador + 1 Loop ContarCadenas = contador End Function Si la cadena de destino no est en la otra cadena, InStr devuelve 0 y no se ejecuta el bucle. Otra variante de la instruccin Do...Loop ejecuta las instrucciones primero y prueba condicin despus de cada ejecucin. Esta variacin garantiza al menos una ejecucin de instrucciones: Do instrucciones Loop While condicin Hace el bucle cero o ms veces Do Until condicin instrucciones Loop Hace el bucle al menos una vez Do instrucciones Loop Until condicin

2.4.2- For Next.


Los bucles Do funcionan bien cuando no se sabe cuntas veces se necesitar ejecutar las instrucciones del bucle. Sin embargo, cuando se sabe que se van a ejecutar las instrucciones un nmero determinado de veces, es mejor elegir el bucle ForNext. A diferencia del bucle Do, el bucle For utiliza una variable llamada contador que incrementa o reduce su valor en cada repeticin del bucle. La sintaxis es la siguiente: For contador = iniciar To finalizar [Step incremento] instrucciones Next [contador] Los argumentos contador, iniciar, finalizar e incremento son todos numricos. Nota El argumento incremento puede ser positivo o negativo. Si incremento es positivo, iniciar debe ser menor o igual que finalizar o no se ejecutarn las instrucciones del bucle. Si incremento es negativo, iniciar debe ser mayor o igual que finalizar para que se ejecute el cuerpo del bucle. Si no se establece Step, el valor predeterminado de incremento es 1.

Pgina 24 de 161

Curso Visual Basic 5.0 Al ejecutar el bucle For, Visual Basic: 1. Establece contador al mismo valor que iniciar. 2. Comprueba si contador es mayor que finalizar. Si lo es, Visual Basic sale del bucle. (Si incremento es negativo, Visual Basic comprueba si contador es menor que finalizar.) 3. Ejecuta instrucciones. 4. Incrementa contador en 1 o en instrucciones, si se especific. 5. Repite los pasos 2 a 4. Este cdigo imprime los nombres de todas las fuentes de pantalla disponibles: Private Sub Form_Click () Dim I As Integer For i = 0 To Screen.FontCount Print Screen.Fonts(i) Next End Sub En la aplicacin de ejemplo VCR, el procedimiento HighlightButton utiliza un bucle For...Next para pasar por la coleccin de controles del formulario VCR y mostrar el control Shape apropiado: Sub HighlightButton(MyControl As Variant) Dim i As Integer For i = 0 To frmVCR.Controls.Count - 1 If TypeOf frmVCR.Controls(i) Is Shape Then If frmVCR.Controls(i).Name = MyControl Then frmVCR.Controls(i).Visible = True Else frmVCR.Controls(i).Visible = False End If End If Next End Sub

2.4.3- If Else End If.


Use la estructura If...Then para ejecutar una o ms instrucciones basadas en una condicin. Puede utilizar la sintaxis de una lnea o un bloque de varias lneas: If condicin Then instruccin If condicin Then instrucciones End If Condicin normalmente es una comparacin, pero puede ser cualquier expresin que d como resultado un valor numrico. Visual Basic interpreta este valor como True o False; un valor numrico cero es False y se considera True cualquier valor numrico distinto de cero. Si condicin es True, Visual Basic ejecuta todas las instrucciones que siguen a la palabra clave Then. Puede utilizar la sintaxis de una lnea o de varias lneas para ejecutar una instruccin basada en una condicin (estos dos ejemplos son equivalentes): If cualquierFecha < Now Then cualquierFecha = Now If cualquierFecha < Now Then cualquierFecha = Now End If Pgina 25 de 161

Curso Visual Basic 5.0

Observe que el formato de una nica lnea de If...Then no utiliza la instruccin End If. Si desea ejecutar ms de una lnea de cdigo cuando condicin sea True, debe utilizar la sintaxis de bloque de varias lneas If...Then...End If. If cualquierFecha < Now Then cualquierFecha = Now Timer1.Enabled = False ' Desactiva el control Timer. End If

If...Then...Else
Utilice un bloque If...Then...Else para definir varios bloques de instrucciones, uno de los cuales se ejecutar: If condicin1 Then [bloque de instrucciones 1] [Else [bloque de instrucciones n]] End If Visual Basic evala primero condicin1. Si es False, Visual Basic ejecuta el bloque de instrucciones correspondientes a Else y despus ejecuta el cdigo que sigue a End If. Por ejemplo, la aplicacin podra realizar distintas acciones dependiendo del control en que se haya hecho clic de una matriz de controles de men: Private Sub mnuCut_Click (Index As Integer) If Index = 0 Then CopyActiveControl ClearActiveControl Else PasteActiveControl End If End Sub

' Comando Cortar. ' Comando Pegar.

2.4.4- Select - Case


Visual Basic proporciona la estructura Select Case como alternativa a If...Then...Else para ejecutar selectivamente un bloque de instrucciones entre varios bloques de instrucciones. La instruccin Select Case ofrece posibilidades similares a la instruccin If...Then...Else, pero hace que el cdigo sea ms legible cuando hay varias opciones. La estructura Select Case funciona con una nica expresin de prueba que se evala una vez solamente, al principio de la estructura. Visual Basic compara el resultado de esta expresin con los valores de cada Case de la estructura. Si hay una coincidencia, ejecuta el bloque de instrucciones asociado a ese Case: Select Case expresin_prueba [Case lista_expresiones1 [bloque de instrucciones 1]] [Case lista_expresiones2 [bloque de instrucciones 2]] . . . [Case Else [bloque de instrucciones n]] End Select Pgina 26 de 161

Curso Visual Basic 5.0

Cada lista_expresiones es una lista de uno o ms valores. Si hay ms de un valor en una lista, se separan los valores con comas. Cada bloque de instrucciones contiene cero o ms instrucciones. Si ms de un Case coincide con la expresin de prueba, slo se ejecutar el bloque de instrucciones asociado con la primera coincidencia. Visual Basic ejecuta las instrucciones de la clusula (opcional) Case Else si ningn valor de la lista de expresiones coincide con la expresin de prueba. Por ejemplo, suponga que agrega otro comando al men Edicin en el ejemplo If...Then...Else. Podra agregar otra clusula ElseIf o podra escribir la funcin con Select Case: Private Sub mnuCut_Click (Index As Integer) Select Case Index Case 0 CopyActiveControl ClearActiveControl Case 1 CopyActiveControl Case 2 ClearActiveControl Case 3 PasteActiveControl Case Else frmFind.Show End Select End Sub

' Comando Cortar. ' Llama a procedimientos generales. ' Comando Copiar. ' Comando Borrar. ' Comando Pegar. ' Muestra el cuadro de dilogo Buscar.

Observe que la estructura Select Case evala una expresin cada vez al principio de la estructura.

Controles 3.1- Controles bsicos


Vamos a ver los siguientes puntos:

Introduccin al uso de controles Control TextBox. Control Label Control CommandButton Control OptionButton Realizacon de una pequea aplicacin de ejemplo

Antes de empezar a conocer los controles bsicos veamos cuales son sus caractersticas generales:

Propiedades:Todos los controles disponen de una serie de propiedades las cuales podemos cambiar al incluirlos en nuestras aplicaciones. Ejemplos de propiedades son el color, el tipo de letra, el nombre, el texto, etc... Metodos: Son procedimientos asociados a los controles, es decir, rutinas ya establecidas
Pgina 27 de 161

Curso Visual Basic 5.0

que podemos invocar desde nuestras aplicaciones para que se realice alguna operacin sobre el control. Por ejemplo el control ListView ( la lista de archivos que aparece en el explorador de windows) dispone del mtodo order que te ordena los datos aparecidos en la lista. Eventos: Son acciones que pueden ser motivadas por el propio usuario o por mismo sistema operativo. Ejemplos pueden ser el movimiento del ratn o hacer click sobre su botn. En Visual Basic digamos que se utiliza la programacin orientada a eventos, lo cual es una de las diferencias ms importantes respecto a la programacin lineal de MS DOS. No necesitamos detectar cuando se ha producido un evento determinado, Windows lo detecta automticamente. Los eventos ya estan definidos, son bastantes y cada control cuenta con los suyos propios, aunque son muy parecidos. Lo nico que tendremos que hacer es asociar el cdigo necesario al evento que necesitemos tratar.

TextBox
Mediante este control podremos realizar tanto la entrada como la salida de datos en nuestras aplicaciones. No hace falta que indiquemos las coordenadas de la situacin del formulario en pantalla, simplemente tendremos que marcar sobre el control de la caja de herramientas y dibujarlo con el tamao que queramos en nuestro formulario. PROPIEDADES Las propiedades de las que dispone el control son las siguientes:(para obtener el cuadro de propiedades, seleccionar el control y pulsar F4 o pulsar con el boton derecho para obtener el men contextual y marcar Propierties)

Text: Aqu indicamos el texto que aparecer en el control. Podemos asignarle cualquier texto en tiempo de diseo o ejecucin. Tambin podemos tomar el texto que haya introducido el usuario para tratarlo durante la ejecucin. Name: Esta propiedad la tienen todos los controles, el nombre que viene por defecto en este caso Text1 y es el nombre con el que se conocer el control cuando lo utilicemos en el cdigo. En un mismo formulario no puede haber 2 controles con el mismo nombre. Conviene poner un nombre que represente la funcin que tiene el control en la aplicacin para que el cdigo quede ms claro. Ejemplo, si en el textbox vamos a introducir la direccin de una persona podemos asignarle a esta propiedad el valor Direccin. MultiLine: Permite que introduzcamos varias lineas de texto en el control en lugar de slo una. Alignment: Alineacin que tendr el texto dentro del control: izquierda, centro o derecha. Para que funcione la propiedad MultiLine debe estar con el valor true. Locked: Si esta con valor true bloquea el control, es decir, el usuario no puede introducir ni modificar el texto que contenga. Nos puede servir para utilizar el control como salida de datos sin que el usuario pueda modificarlos por error.
Otras propiedades que son comunes a la mayoria de los controles:

Backcolor: color de fondo. Forecolor: color de letra. Font: tipo y tamao de letra.
Pgina 28 de 161

Curso Visual Basic 5.0

METODOS Recordemos que por mtodos se entienten los procedimientos o funciones asociados a un control, los cuales nos permiten realizar ciertas operaciones tiles sobre dicho control: Ej. ordenar sus elementos, buscar un dato, etc.. Pues bien, los controles bsicos que vamos a ver en este captulo nicamente contienen mtodos avanzados que no vamos a analizar por ahora, ya que son mtodos que no se suelen utilizar. Ms adelante cuando veamos otros tipos de controles estudiaremos cuales son los mtodos que nos podrn servir. Si alguien est interesado en conocer todas las caractersticas de los controles puede hacerlo mirando en la ayuda que proporciona VB, haciendo click sobre cualquier control de la caja de herramientas y pulsando a continuacin F1 obtendr ayuda referente a ese control donde aparecern todas sus propiedades, metodos y eventos.

EVENTOS Los eventos son acciones que se pueden realizar en cualquier control: click, doble click, movimiento del ratn. A estos eventos se les puede asociar cdigo para que se ejecute al producir el evento.

MouseMove: al mover el raton por encima del control. Mousedown: al pulsar cualquier boton del raton Change: al cambiar el contenido del control Click: al hacer click con el botn izquierdo del ratn sobre el control Doubleclick: al hacer doble click con el con el botn izquierdo del ratn sobre el control Getfocus: este evento se activa cuando el control recibe el enfoque, es decir, cuando se activa el control en tiempo de ejecucin para introducir datos en l o realizar alguna operacin. Lostfocus: Es el contrario del anterior evento, se activa cuando el control pierde el enfoque, es decir, se pasa a otro control para seguir introduciendo datos.

EJEMPLO
Vamos a probar el uso del control TextBox mediante un pequeo ejemplo en el que teniendo un nico control de este tipo en un formulario, lo programaremos de forma que al pasar el ratn sobre el control (evento mousemove) aparecer en el formulario el texto que contenga.

Observamos que al situar el control en el formulario aparece por defecto el texto Text1. Para que no aparezca ese texto al ejecutar la aplicacin, debemos cambiar la propiedad Text pulsando F4 y colocar el texto que queramos o no colocar nada. Lo que queremos hacer es que cada vez que movamos el raton por el control aparezca su contenido en el formulario. Entonces lo que habr que hacer abrir la ventana de cdigo, seleccionando el control y pulsando F7, o con el botn derecho del ratn y la opcin View code del men contextual. Este proceso nos llevar al cuadro de la imagen siguiente.

Pgina 29 de 161

Curso Visual Basic 5.0

Lo que tendremos que hacer es seleccionar el evento que necesitemos de la seccin Proc, en nuestro caso mousemove y a continuacin teclear el codigo correspondiente: La instruccin print visualiza un texto en el formulario y si le ponemos text1.text le decimos que nos muestre la propiedad Text del control Text1 que ese ser el nombre que tendr el control por defecto si no lo hemos cambiado en la propiedad name. Al ejecutar esta pequea aplicacin pulsando F5 observaremos como aparece en el formulario lo que hayamos tecleado en el control cada vez que movemos el raton sobre el Textbox. Podemos modificar el programa para que responda a cualquier otro evento sin ms que seleccionarlo en la seccin Proc e introduciendo el codigo que sea necesario.

Label
Este control es tambin uno de los ms utilizados, aunque su utilidad queda restringida a la visualizacin de datos en el mismo, no permitiendo la introduccin de datos por parte del usuario. La forma de utilizarlo es similar a la del control anterior, dibujar el control en el formulario con el tamao que queramos y asignarle un texto en tiempo de diseo o de ejecucin esta vez sin utilizar la propiedad text puesto que no la incorpora, sino utilizando la propiedad caption. Este control sirve para mostrar mensajes en nuestro formulario que orienten al usuario sobre la utilidad de los dems controles que tengamos en la aplicacin o para indicarnos acciones que podemos realizar. En el ejemplo anterior donde apareca un textbox en el formulario, hubiera quedado mejor con un mensaje aclaratorio contenido en un control label:

PROPIEDADES

Caption: Es el texto que contendr el control. Alignment: Alineacin del texto contenido en el control, no necesita que est activada ninguna otra propiedad. BorderStyle: Si queremos que aparezca un borde alrededor del control activaremos esta propiedad.
Para este control no se suelen utilizar los eventos ya que su contenido suele cambiar poco a lo largo de la ejecucin de la aplicacin. De todas formas los eventos son casi los mismos del control textbox excepto que no dispone de los eventos GetFocus y LostFocus ya que a este control no se le puede dar el enfoque.

Pgina 30 de 161

Curso Visual Basic 5.0 En la parte final de este capitulo veremos un ejemplo donde se muestra el funcionamiento de todos los controles que vamos a ir viendo.Por ahora a ver si conseguis que ahora el mensaje no aparezca en el formulario sino en un segundo label situado en el formulario, dejando un control label que muestre el mensaje aclaratorio que hemos visto antes.

CommandButton
Este control es el tpico botn que aparece en todas las aplicaciones y que al hacer click sobre l nos permite realizar alguna operacin concreta, normalmente Aceptar o Cancelar. Aunque segn el cdigo que le asociemos podremos realizar las operaciones que queramos. En el ejemplo anterior podemos aadir un control de este tipo para salir de la aplicacin sin tener pulsar sobre la equis de la esquina superior derecha.

Pero slo con introducir un control de este tipo con el texto salir que se introduce a traves de la propiedad caption no basta. Habr que asociarle un cdigo que nos permita salir de la aplicacin en el evento adecuado. Y el evento por excelencia de este control es click. As pues accederemos al cdigo del control y la sentencia nos permitir salir de la aplicacin es End, simplemente tecleamos esa palabra en el evento click y comprobar que realmente finalizaremos nuestra aplicacin al pulsar sobre dicho botn. PROPIEDADES

Caption: Aqui pondremos el letrero que queremos que apaezca en el botn: aceptar, cancelar, salir, etc... Enabled: Esta es una nueva propiedad, cuando su valor es true el botn funciona normalmente, cuando su valor es false el boton se encuentra desactivado, no responde a los eventos producidos sobre l y el texto aparece en un gris claro advirtiendonos de su estado. Podemos utilizar esta propiedad para activar o desactivar un boton dependiendo del estado de otros controles. Por ejemplo, en un boton Aceptar, no activarlo hasta que se haya introducido una cantidad en un control textbox, ya que ese botn nos calcular el IVA de la cantidad.
EVENTOS

Click: Es el evento tipico de este control y el que ms se utiliza. MouseMove: Como sabemos detecta el movimiento del raton sobre el control. Puede servir para que aparezca un mensaje en un control Label que nos aporte informacin sobre la utilidad del control ampliando el texto que hayamos colocado como caption del commandbutton.

OptionButton
Este control nos permite elegir una opcin entre varias de las que se nos plantean. Cada opcin ser un control optionbutton diferente. Facilita la introduccin de datos por parte del usuario:

Pgina 31 de 161

Curso Visual Basic 5.0

De todas las opciones que se nos ofrece, en este caso los 4 colores, slo podremos activar una. Si activamos cualquier otra opcin, se desactivar automticamente la ltima que tenamos activada. El marco que est alrededor de los 4 controles optionbutton se trata del control Frame , es opcional, aunque es conviente colocarlo siempre que hagamos uso de las opciones. No slo por motivos de presentacin sino porque de esta manera podremos establecer grupos de controles optionbutton independientes en los que en cada grupo slo pueda haber una opcion activada a la vez. Tambin, al mover el marco se movern los controles incluidos en l facilitndonos las modificaciones. Para que los controles Optionbutton queden englobados dentro de un control Frame, primero tendremos que colocar el control Frame en el formulario con el tamao adecuado y despues ir colocando los controles Optionbutton dentro del Frame. Del control Frame la nica propiedad que nos interesar es caption, que es el texto que aparecer en el encabezado, en el ejemplo anterior: colores. PROPIEDADES DE OPTIONBUTTON

Caption: El texto que aparecer al lado del control: Rojo, verde, etc... Value: Es el valor que tendr el control: True si se encuentra activado y False si no lo est. Para comprobar que opcion ha activado el usuario comprobaremos el estado de esta propiedad. Alignment: Alineacin del texto respecto al control: Left Justify: el control aparece a la izquierda del texto. Es el ejemplo anterior.Right Justify: el control aparece a la derecha del texto.
Los eventos del control son los mismos que en anteriores controles, aunque no se suele asociar cdigo a los eventos de este tipo de controles, sino nicamente conocer el valor que tienen: true o false.

3.1.1- APLICACION DE EJEMPLO


Para practicar con los controles que hemos visto vamos a realizar una pequea aplicacin que consistir en realizar con 2 nmeros que introduzcamos, una operacin que seleccionemos y mostrar el resultado. El formulario donde estarn todos los controles es el siguiente:

Pgina 32 de 161

Curso Visual Basic 5.0

La propiedad Caption de cada uno de los controles es la que se muestra en el formulario. He modificado la propiedad Name de cada control para que al utilizarlos desde el codigo sepamos cual es el control con el que trabajamos: Los controles TextBox tienen los nombres: Num1, Num2 y Resul. Los controles Optionbutton tienen cada uno de ellos el mismo nombre que su caption Los controles CommandButton tienen los nombres: Calcular, Limpiar y Salir. A los controles Label y al Frame no have falta cambiarles el nombre. Lo que habr que hacer ahora es asociar codigo a cada uno de los botones que es de donde se van a realizar las operaciones: Para el botn Calcular que es el que nos mostrar el resultado segn la operacin seleccionada, he utilizado la instruccin If Then Else que vimos en el captulo anterior:

El botn Limpiar Datos nos va a servir para borrar de una forma rpida los datos introducidos por el usuario y el resultado preparando los controles para introducir nuevos datos. El cdigo que tendremos que introducir es muy simple:

Pgina 33 de 161

Curso Visual Basic 5.0

El botn Salir nicamente contendr la sentencia End.

4 -Formularios.
Los formularios tienen sus propios eventos, propiedades y mtodos con los que se puede controlar su apariencia y comportamiento. El primer paso para disear un formulario consiste en establecer sus propiedades. Puede establecer las propiedades de un formulario en tiempo de diseo en la ventana Propiedades o en tiempo de ejecucin, escribiendo cdigo. Nota En tiempo de diseo, que es cualquier momento mientras est desarrollando una aplicacin en el entorno de Visual Basic, se trabaja con formularios y controles, se establecen propiedades y se escribe cdigo para los eventos. Tiempo de ejecucin es cualquier momento mientras se ejecuta realmente la aplicacin y se interacta con ella como lo hara un usuario.

4.1- Estableciendo las Propiedades ms importantes de los formularios.


Muchas propiedades de un formulario afectan a su apariencia fsica. La propiedad Caption determina el texto que muestra la barra de ttulo del formulario y la propiedad Icon establece el icono que aparece cuando se minimiza un formulario. Las propiedades MaxButton y MinButton determinan si el formulario se puede maximizar o minimizar. Cambiando la propiedad BorderStyle puede controlar el comportamiento de cambio de tamao del formulario. Las propiedades Height y Width determinan el tamao inicial de un formulario, mientras que las propiedades Left y Top determinan la ubicacin del formulario en relacin con la esquina superior izquierda de la pantalla. Con la propiedad WindowState puede establecer si el formulario se inicia en estado maximizado, minimizado o normal. La propiedad Name establece el nombre con el que har referencia al formulario en el cdigo. De forma predeterminada, cuando se agrega un formulario por primera vez a un proyecto, su nombre es Form1, Form2, etc. Es conveniente establecer la propiedad Name a algo ms significativo, como frmEntry para un formulario de entrada de pedidos. La mejor manera de familiarizarse con las numerosas propiedades de los formularios es experimentar. Cambie algunas propiedades de un formulario en la ventana Propiedades y ejecute la aplicacin para ver su efecto. Puede aprender ms sobre cada propiedad si la selecciona y presiona F1 para ver Ayuda contextual.

4.2- Eventos y Mtodos de los formularios.


Como objetos que son, los formularios pueden ejecutar mtodos y responder a eventos. El evento Resize de un formulario se desencadena siempre que se cambia el tamao de un formulario, ya sea por una accin del usuario o a travs del cdigo. Esto permite realizar acciones como mover o cambiar el tamao de los controles de un formulario cuando han cambiado sus dimensiones. El evento Activate se produce siempre que un formulario se convierte en el formulario activo; el evento Deactivate se produce cuando otro formulario u otra aplicacin se convierte en activo. Estos eventos son adecuados para iniciar o finalizar acciones del formulario. Por ejemplo, en el evento Activate podra escribir cdigo para resaltar el texto de un

Pgina 34 de 161

Curso Visual Basic 5.0 determinado cuadro de texto; con el evento Deactivate podra guardar los cambios efectuados en un archivo o en una base de datos. Para hacer visible un formulario se invoca el mtodo Show: Form2.Show Para descargar un formulario (cerrarlo), se invoca al mtodo Unload: Form2.Unload Unload Me Me significa el Formulario activo. Para ocultar un formulario (pero dejarlo activo en memoria) se invoca al mtodo Hide: Form2.Hide Invocar el mtodo Show tiene el mismo efecto que establecer a True la propiedad Visible del formulario. Muchos mtodos de un formulario implican texto o grficos. Los mtodos Print, Line, Circle y Refresh son tiles para imprimir o dibujar directamente en la superficie de un formulario.

4.3- Establecer el formulario de arranque de la aplicacin.


De forma predeterminada, el primer formulario de la aplicacin es el formulario inicial. Cuando la aplicacin inicia la ejecucin, se presenta este formulario (el primer cdigo que se ejecuta es el del evento Form_Initialize de dicho formulario). Si quiere presentar un formulario diferente cuando se inicie la aplicacin, debe cambiar el formulario inicial. Para cambiar el formulario inicial 1. 2. 3. 4. En el men Proyecto, elija Propiedades del proyecto. Elija la ficha General. En el cuadro de lista Objeto inicial, seleccione el formulario que desee que sea el nuevo formulario inicial. Elija Aceptar.

Inicio sin formulario inicial Algunas veces puede desear que la aplicacin se inicie sin cargar ningn formulario. Por ejemplo, puede que desee ejecutar cdigo que cargue un archivo de datos y despus presentar uno de entre varios formularios, segn el contenido de dicho archivo. Puede hacerlo creando un procedimiento Sub llamado Main en un mdulo estndar, como en el siguiente ejemplo: Sub Main() Dim intStatus As Integer ' Llamar a un procedimiento de funcin para comprobar el estado ' del usuario. intStatus = GetUserStatus ' Mostrar un formulario inicial distinto segn el estado. If intStatus = 1 Then frmMain.Show Else frmPassword.Show End If

Pgina 35 de 161

Curso Visual Basic 5.0 Este procedimiento tiene que ser un procedimiento Sub y no puede estar en un mdulo de formulario. Para establecer el procedimiento Sub Main como objeto inicial, en el men Proyecto elija Propiedades del proyecto, seleccione la ficha General y seleccione Sub Main en el cuadro Objeto inicial.

5 -Combo Box (lista combo)


Un control ComboBox combina las caractersticas de un control TextBox y un control ListBox; los usuarios pueden introducir informacin en la parte del cuadro de texto o seleccionar un elemento en la parte de cuadro de lista del control. Para agregar o eliminar elementos en un control ComboBox, use el mtodo AddItem o RemoveItem. Establezca las propiedades List, ListCount y ListIndex para permitir a un usuario tener acceso a los elementos de un control ComboBox. Como alternativa, puede agregar elementos a la lista mediante la propiedad List en tiempo de diseo. Nota Un evento Scroll ocurrir en un control ComboBox slo cuando se desplace el contenido de la parte desplegable del ComboBox, no cada vez que cambie el contenido del ComboBox. Por ejemplo, si la parte desplegable de un ComboBox contiene cinco elementos y el elemento superior est resaltado, no ocurrir un evento Scroll hasta que presione seis veces la flecha hacia abajo (o una vez la tecla AV PG). Despus de eso, ocurrir un evento Scroll por cada pulsacin de la tecla de flecha hacia abajo. Sin embargo, si despus presiona la tecla de flecha hacia arriba, no ocurrir un evento Scroll hasta que presione seis veces la tecla de flecha hacia arriba (o una vez la tecla RE PG). Despus de eso, cada vez que presione la tecla de flecha hacia arriba se producir un evento Scroll. Eventos: Evento Change Evento Click Evento DblClick Evento DragDrop Evento DragOver Evento DropDown Evento GotFocus Eventos KeyDown y KeyUp Evento KeyPress Evento LostFocus Evento OLECompleteDrag Evento OLEDragDrop Evento OLEDragOver Evento OLEGiveFeedback Evento OLESetData Evento OLEStartDrag Evento Scroll

Mtodos: Mtodo AddItem Mtodo Clear (Clipboard, ComboBox, ListBox) Mtodo Drag Mtodo Move Mtodo OLEDrag

Mtodo Refresh Mtodo RemoveItem Mtodo SetFocus Mtodo ShowWhatsThis Mtodo ZOrder

Propiedades: Propiedad Appearance Propiedad ListIndex Propiedades BackColor y ForeColor Propiedad Locked Propiedad Container Propiedad MouseIcon Propiedad DataChanged Propiedad MousePointer Propiedad DataField Propiedad Name Propiedad DragIcon Propiedad NewIndex Propiedad DragMode Propiedad OLEDragMode Propiedad Enabled Propiedad OLEDropMode Propiedad Font Propiedad Parent Propiedades FontBold, FontItalic, FontStrikethru y FontUnderline Propiedad FontName Propiedades SelLength, SelStart y SelText (Controles ActiveX) Propiedad FontSize Propiedad Sorted Propiedades Height y Width Propiedad Style Propiedad HelpContextID Propiedad TabIndex Propiedad hWnd Propiedad TabStop Pgina 36 de 161

Curso Visual Basic 5.0 Propiedad Index (Control Array) Propiedad IntegralHeight Propiedad ItemData Propiedades Left y Top Propiedad List Propiedad ListCount Propiedades SelLength, SelStart y SelText Propiedad Tag Propiedad Text Propiedad ToolTipText Propiedad TopIndex Propiedad Visible Propiedad WhatsThisHelpID

6- List Box (lista).


Un control ListBox muestra una lista de elementos entre los cuales el usuario puede seleccionar uno o ms. Si el nmero de elementos supera el nmero que puede mostrarse, se agregar automticamente una barra de desplazamiento al control ListBox. Si no se selecciona ningn elemento, el valor de la propiedad ListIndex ser -1. El primer elemento de la lista es ListIndex 0 y el valor de la propiedad ListCount siempre es uno ms que el mayor valor de ListIndex. Para agregar o eliminar elementos de un control ListBox, use el mtodo AddItem o RemoveItem. Establezca las propiedades List, ListCount y ListIndex para permitir que un usuario tenga acceso a elementos del ListBox. Tambin puede agregar elementos a la lista mediante la propiedad List en tiempo de diseo. Eventos Evento Click Evento DblClick Evento DragDrop Evento DragOver Evento GotFocus Evento ItemCheck Eventos KeyDown y KeyUp Evento KeyPress Evento LostFocus Eventos MouseDown y MouseUp Evento MouseMove Evento OLECompleteDrag Evento OLEDragDrop Evento OLEDragOver Evento OLEGiveFeedback Evento OLESetData Evento OLEStartDrag Evento Scroll

Mtodos Mtodo AddItem Mtodo Clear (Clipboard, ComboBox, ListBox) Mtodo Drag Mtodo Move Mtodo OLEDrag

Mtodo Refresh Mtodo RemoveItem Mtodo SetFocus Mtodo ShowWhatsThis Mtodo ZOrder

Propiedades Propiedad Appearance Propiedad MousePointer Propiedades BackColor y ForeColor Propiedad MultiSelect Propiedad Columns (ListBox) Propiedad Name Propiedad Container Propiedad NewIndex Propiedad DataChanged Propiedad OLEDragMode Propiedad DataField Propiedad OLEDropMode Propiedad DataSource Propiedad Parent Propiedad DragIcon Propiedad SelCount Propiedad DragMode Propiedad Selected Propiedad Enabled Propiedad Sorted Propiedad Font Propiedad Style Propiedades FontBold, FontItalic, FontStrikethru y FontUnderline Propiedad FontName Propiedad TabStop Propiedad FontSize Propiedad Tag Propiedades Height y Width Propiedad Text Propiedad HelpContextID Propiedad ToolTipText Pgina 37 de 161

Curso Visual Basic 5.0 Propiedad hWnd Propiedad Index (Control Array) Propiedad ItemData Propiedades Left y Top Propiedad List Propiedad ListIndex Propiedad TopIndex Propiedad Visible Propiedad WhatsThisHelpID Propiedad TabIndex Propiedad ListCount Propiedad MouseIcon

7- Timer (cronmetro)
Un control Timer puede ejecutar cdigo a intervalos peridicos produciendo un evento Timer. El control Timer, invisible para el usuario, resulta til para el procesamiento de fondo. No puede establecer la propiedad Enabled de un Timer para una seleccin mltiple de controles que no sean controles Timer. No existe ningn lmite prctico en cuanto al nmero de controles Timer activos que puede tener en Visual Basic 5.0 ejecutndose en Windows 95 o en Windows NT. Eventos: Evento Timer

Propiedades:
Propiedad Enabled Propiedad Index (Control Array) Propiedad Interval Propiedades Left y Top Propiedad Name Propiedad Parent Propiedad Tag

8- Shape (figura).
Shape es un control grfico que se muestra como un rectngulo, un cuadrado, una elipse, un crculo, un rectngulo redondeado o un cuadrado redondeado. Utilice controles Shape en tiempo de diseo en lugar de o adems de invocar los mtodos Circle y Line en tiempo de ejecucin. Puede dibujar un control Shape en un contenedor, pero no puede actuar como contenedor. El efecto de establecer la propiedad BorderStyle depende del valor de la propiedad BorderWidth. Si BorderWidth no es 1 y BorderStyle no es 0 6, BorderStyle se establece a 1. Mtodos: Mtodo Move Mtodo Refresh Mtodo ZOrder

Propiedades: Propiedades BackColor y ForeColor Propiedad BackStyle Propiedad BorderColor Propiedad BorderStyle Propiedad BorderWidth Propiedad Container Propiedad DrawMode Propiedad FillColor Propiedad FillStyle

Propiedades Height y Width Propiedad Index (Control Array) Propiedades Left y Top Propiedad Name Propiedad Parent Propiedad Shape Propiedad Tag Propiedad Visible

9- Line (lnea).
Pgina 38 de 161

Curso Visual Basic 5.0 Line es un control grfico que se muestra como una lnea horizontal, vertical o diagonal. Puede utilizar un control Line en tiempo de diseo para dibujar lneas en formularios. En tiempo de ejecucin puede utilizar un control Line en lugar del mtodo Line, o adems de l. Las lneas dibujadas con el control Line permanecen en el formulario aunque la propiedad AutoRedraw sea False. Los controles Line pueden mostrarse en formularios, en cuadros de imagen y en marcos. No puede utilizar el mtodo Move para mover un control Line en tiempo de ejecucin, pero s se puede mover o cambiar de tamao alterando sus propiedades X1, X2, Y1 e Y2. El efecto de establecer la propiedad BorderStyle depende del valor de la propiedad BorderWidth. Si BorderWidth no es 1 y BorderStyle no es 0 6, BorderStyle se establecer a 1. Mtodos:

Mtodo Refresh Mtodo ZOrder


Propiedades: Propiedad BorderColor Propiedad BorderStyle Propiedad BorderWidth Propiedad Container Propiedad DrawMode Propiedad Index (Control Array) Propiedad Name Propiedad Parent Propiedad Tag Propiedad Visible Propiedades X1, Y1, X2 y Y2

10- Image (imagen)


Utilice el control Image para mostrar un grfico. Un control Image puede mostrar un grfico desde un mapa de bits, un icono o un metarchivo, as como un metarchivo mejorado, un archivo JPEG o archivos GIF. El control Image utiliza menos recursos del sistema y actualiza con ms rapidez que un control PictureBox, pero slo admite un subconjunto de las propiedades, los eventos y los mtodos de PictureBox. Use la propiedad Stretch para determinar si el grfico se escala para ajustarse al control o viceversa. Aunque puede colocar un control Image dentro de un contenedor, un control Image no puede actuar como contenedor. Eventos: Evento Click Evento DblClick Evento DragDrop Evento DragOver Eventos MouseDown y MouseUp Evento MouseMove Mtodos: Mtodo Drag Mtodo Move Mtodo OLEDrag Evento OLECompleteDrag Evento OLEDragDrop Evento OLEDragOver Evento OLEGiveFeedback Evento OLESetData Evento OLEStartDrag

Mtodo Refresh Mtodo ShowWhatsThis Mtodo ZOrder

Propiedades: Propiedad Appearance Propiedad BorderStyle Propiedad Container Propiedad DataChanged Propiedad DataField Propiedad DataSource Propiedad DragIcon Propiedad DragMode Propiedad Enabled Propiedades Height y Width

Propiedad MouseIcon Propiedad MousePointer Propiedad Name Propiedad OLEDragMode Propiedad OLEDropMode Propiedad Parent Propiedad Picture Propiedad Stretch Propiedad Tag Propiedad ToolTipText Pgina 39 de 161

Curso Visual Basic 5.0 Propiedad Index (Control Array) Propiedades Left y Top Propiedad Visible Propiedad WhatsThisHelpID

11- Data (acceso a bases de datos)


Proporciona acceso a datos almacenados en bases de datos mediante uno de los tres tipos de objetos Recordset. El control Data le permite desplazarse de un registro a otro, as como presentar y manipular datos de los registros en controles enlazados. Sin un control Data los controles enlazados a datos (vinculados) de un formulario no pueden tener acceso a los datos automticamente. Puede realizar la mayora de las operaciones de acceso a datos utilizando el control Data sin escribir cdigo. Los controles enlazados a datos vinculados a un control Data presentan automticamente los datos de uno o varios campos del registro actual o, en algunos casos, de un conjunto de registros situado a ambos lados del registro actual. El control Data realiza todas sus operaciones sobre el registro actual. Si el control Data recibe instrucciones para desplazarse a un registro diferente, todos los controles enlazados pasan automticamente los posibles cambios al control Data para que los guarde en la base de datos. Despus, el control Data se desplaza al registro solicitado y pasa los datos del registro actual a los controles enlazados, en los que se presentan. El control Data administra automticamente una serie de contingencias entre las que se incluyen los conjuntos de registros vacos, la insercin de nuevos registros, la modificacin y actualizacin de registros existentes, y la administracin de ciertos tipos de errores. Sin embargo, en aplicaciones ms sofisticadas es necesario interceptar algunas condiciones de error que el control Data no puede administrar. Por ejemplo, si el motor de base de datos Microsoft Jet tiene un problema al tener acceso al archivo de base de datos, no tiene el permiso adecuado o no puede ejecutar la consulta, se producir un error interceptable. Si el error se produce antes de que se inicien los procedimientos de la aplicacin o se trata de errores internos, se desencadenar el evento Error.

12- Controles enlazados


Los controles DBList, DBCombo, DBGrid y MSFlexGrid son capaces de administrar conjuntos de registros cuando estn enlazados a un control Data. Todos estos controles permiten presentar o manipular varios registros a la vez. Los controles incorporados Picture, Label, TextBox, CheckBox, Image, OLE, ListBox y ComboBox tambin son controles enlazados a datos y se pueden enlazar a un nico campo de un Recordset administrado por un control Data. En las ediciones Profesional y Empresarial se encuentran disponibles otros controles enlazados a datos como MaskedEdit y RichTextBox; otros proveedores tambin ofrecen controles adicionales.

12.1 Funcionamiento
Una vez iniciada la aplicacin, Visual Basic utiliza las propiedades del control Data para abrir la base de datos seleccionada, crear un objeto Database y crear un objeto Recordset. Las propiedades Database y Recordset del control Data hacen referencia a los objetos Database y Recordset recin creados, que se pueden manipular de forma independiente del control Data, con o sin controles enlazados. El control Data se inicializa antes del evento Form_Load inicial del formulario en el que se encuentra. Si se producen errores durante esta fase de inicializacin, se produce un error no interceptable. Cuando Visual Basic utiliza el motor de base de datos Jet para crear un Recordset, no se pueden producir otras operaciones o eventos de Visual Basic hasta que se termine la operacin. Sin embargo, otras aplicaciones basadas en Windows pueden seguir en ejecucin mientras se est creando el Recordset. Si el usuario presiona CTRL+INTER mientras el motor Jet est generando un Recordset, la operacin termina, se produce un error interceptable y la propiedad Recordset del control Data se establece a Nothing. En tiempo de diseo, la segunda vez que se presiona CTRL+INTER hace que Visual Basic presente la ventana Depuracin. Puede manipular el control Data con el mouse (ratn), desplazndose de un registro a otro, o al principio o al final del Recordset. Las propiedades EOFAction y BOFAction determinan lo que ocurre cuando el usuario se desplaza al principio o al final de un Recordset con el mouse. No puede establecer el enfoque en un control Data. Pgina 40 de 161

Curso Visual Basic 5.0

12.2 Validacin
El evento Validate y la propiedad DataChanged se utilizan para realizar comprobaciones de ltima hora sobre los registros que se van a escribir en la base de datos.

12.3 Objetos de acceso a datos


En los procedimientos puede utilizar los objetos de acceso a datos Database y Recordset creados por el control Data. Cada objeto Database y Recordset tiene sus propias propiedades y mtodos, y puede escribir procedimientos que utilicen dichas propiedades y mtodos para manipular sus datos. Por ejemplo, el mtodo MoveNext de un objeto Recordset desplaza el registro actual al siguiente registro dentro del Recordset. Para invocar este mtodo, podra utilizar el cdigo siguiente: Data1.Recordset.MoveNext El control Data puede tener acceso a cualquiera de los tres tipos de objetos Recordset del motor Jet versin 3.0. Si no selecciona el tipo de conjunto de registros, se crea un Recordset de tipo dynaset. En muchos casos, el tipo predeterminado y la configuracin del objeto Recordset creado son muy ineficientes. Es decir, puede que no necesite un cursor actualizable totalmente desplazable de conjunto de claves para tener acceso a los datos. Por ejemplo, un Recordset de tipo snapshot, de slo lectura y unidireccional se creara con ms rapidez que el cursor predeterminado. Asegrese de elegir el tipo ms eficiente, as como las propiedades Exclusive, Options y ReadOnly adecuadas a su situacin. Para seleccionar un tipo de Recordset especfico, establezca la propiedad RecordsetType del control Data a: RecordsetType Valor Constante Table 0 vbRSTypeTable Dynaset 1 vbRSTypeDynaset (Predeterminado) Snapshot 2 vbRSTypeSnapshot

12.4 Ediciones Profesional y Empresarial


En lo que concierne al acceso a datos, la principal diferencia entre las ediciones de Aprendizaje, Profesional y Empresarial de Visual Basic es la capacidad de crear nuevos objetos de acceso a datos. En la Edicin estndar no puede declarar (con la palabra clave Dim) variables como objetos de acceso a datos dentro del cdigo. Esto significa que slo el control Data puede crear objetos Database y Recordset. En las ediciones Profesional y Empresarial de Visual Basic versin 5.0 puede crear un objeto Recordset y asignarlo a la propiedad Recordset de un control Data. Cualquier control enlazado que est conectado al control Data permitir manipular los registros del Recordset que ha creado. Asegrese de que las propiedades DataField de los controles enlazados estn establecidas a nombres de campo vlidos dentro del nuevo Recordset.

12.5 Consultas almacenadas


Otra opcin importante al utilizar el control Data es la posibilidad de ejecutar consultas almacenadas. Si antes ha creado un objeto QueryDef, el control Data puede ejecutarlo y crear un Recordset mediante las propiedades SQL, Connect y otras del objeto QueryDef. Para ejecutar un QueryDef, establezca la propiedad RecordSource del control Data al nombre del QueryDef y utilice el mtodo Refresh. Si el QueryDef almacenado contiene parmetros, tiene que crear el Recordset y pasarlo al control Data.

12.6 Tratamiento de BOF/EOF


El control Data tambin puede administrar lo que ocurre cuando se encuentre con un Recordset sin registros. Modificando la propiedad EOFAction puede programar el control Data para que pase al modo AddNew de forma automtica.

Pgina 41 de 161

Curso Visual Basic 5.0 Puede programar el control Data para que se ajuste automticamente a la parte superior o inferior del formulario primario utilizando la propiedad Align. En cualquiera de los casos, el control Data cambia de tamao horizontalmente para llenar todo el ancho de su formulario primario, siempre que ste cambie de tamao. Eventos: Evento DragDrop Evento DragOver Evento Error Eventos MouseDown, MouseUp Evento MouseMove Evento OLECompleteDrag Evento OLEDragDrop Mtodos Mtodo Drag Mtodo Move Mtodo OLEDrag Mtodo Refresh Evento OLEDragOver Evento OLEGiveFeedback Evento OLESetData Evento OLEStartDrag Evento Reposition Evento Resize Evento Validate

Mtodo ShowWhatsThis Mtodo UpdateControls Mtodo UpdateRecord Mtodo ZOrder

Propiedades Propiedad Align Propiedad FontSize Propiedad Appearance Propiedades Height, Width Propiedades BackColor, ForeColor Propiedad Index (Matriz de controles) Propiedad BOFAction, EOFAction Propiedades Left, Top Propiedad Caption Propiedad MouseIcon Propiedad Connect Propiedad MousePointer Propiedad Database Propiedad Name Propiedad DatabaseName Propiedad OLEDropMode Propiedad DefaultCursorType Propiedad Options Propiedad DefaultType Propiedad Parent Propiedad DragIcon Propiedad ReadOnly (Aceso de datos) Propiedad DragMode Propiedad Recordset Propiedad EditMode Propiedad RecordsetType Propiedad Enabled Propiedad RecordSource Propiedad Exclusive Propiedad Tag Propiedad Font Propiedad ToolTipText Propiedades FontBold, FontItalic, FontStrikethru, FontUnderline Propiedad FontName Propiedad WhatsThisHelpID Propiedad Visible

13 -Eventos ms importantes de los controles estndares. 13.1-Change


Aplicable a: Control ComboBox, Controles HScrollBar y VScrollBar, Control Label, Control PictureBox, Control TextBox Indica que el contenido de un control ha cambiado. Cmo y cundo ha ocurrido este evento vara segn el control: ComboBox: cambia el texto de la parte de cuadro de texto del control. Ocurre slo si la propiedad Style est establecida a 0 (Dropdown Combo) o 1 (Simple Combo) y el usuario cambia el texto o usted cambia la configuracin de la propiedad Text mediante cdigo.

Pgina 42 de 161

Curso Visual Basic 5.0 DirListBox: cambia el directorio seleccionado. Ocurre cuando el usuario hace doble clic en un nuevo directorio o cuando usted cambia la configuracin de la propiedad Path mediante cdigo. DriveListBox: cambia la unidad seleccionada. Ocurre cuando el usuario selecciona una nueva unidad o cuando usted cambia la configuracin de la propiedad Drive mediante cdigo. HScrollBar y VScrollBar (barras de desplazamiento horizontal y vertical): mueven la parte de cuadro de desplazamiento de la barra de desplazamiento. Ocurre cuando el usuario desplaza o cuando usted cambia la configuracin de la propiedad Value mediante cdigo. Label: cambia el contenido del control Label. Ocurre cuando un vnculo DDE actualiza los datos o cuando usted cambia la configuracin de la propiedad Caption mediante cdigo. PictureBox: cambia el contenido del control PictureBox. Ocurre cuando un vnculo DDE actualiza los datos o cuando usted cambia la configuracin de la propiedad Picture mediante cdigo. TextBox: cambia el contenido del cuadro de texto. Ocurre cuando un vnculo DDE actualiza los datos, cuando un usuario cambia el texto o cuando usted cambia la configuracin de la propiedad Text mediante cdigo. Sintaxis Private Sub objeto_Change([ndice As Integer]) La sintaxis del evento Change consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. ndice Un entero que identifica nicamente a un control si est en una matriz de controles. Comentarios El procedimiento del evento Change puede sincronizar o coordinar la presentacin de datos entre controles. Por ejemplo, puede utilizar un procedimiento de evento Change de una barra de desplazamiento para actualizar la configuracin de la propiedad Value de la barra de desplazamiento de un control TextBox. O bien, puede utilizar un procedimiento de evento Change para mostrar datos y frmulas en un rea de trabajo y los resultados en otra rea. Los procedimientos de evento Change son tambin tiles para actualizar propiedades de controles del sistema de archivos (DirListBox, DriveListBox y FileListBox). Por ejemplo, puede actualizar la configuracin de la propiedad Path para que un control DirListBox refleje un cambio en la configuracin de la propiedad Drive de un control DriveListBox. Nota Un procedimiento de evento Change puede algunas veces causar un evento en cascada. Esto ocurre cuando el procedimiento de evento Change del control altera el contenido del control, por ejemplo, estableciendo una propiedad en el cdigo que determina el valor del control, como el valor de la propiedad Text para un control TextBox. Para impedir un evento en cascada: Si es posible, evite escribir un procedimiento de evento Change para un control que altere el contenido de ese control. Si escribe un procedimiento as, asegrese de establecer un indicador que impida cambios posteriores mientras el cambio actual est en curso. Evite crear dos o ms controles cuyos procedimientos de evento Change se vean afectados entre s, por ejemplo, dos controles TextBox que se actualicen entre s durante sus eventos Change. Evite utilizar una funcin o una instruccin MsgBox en este evento para los controles HScrollBar y VScrollBar.

Ejemplo del evento Change


Este ejemplo muestra la configuracin numrica de la propiedad Value de una barra de desplazamiento horizontal en un control TextBox. Para probar este ejemplo, cree un formulario con un control TextBox y un control HScrollBar y despus pegue el cdigo en la seccin Declaraciones de un formulario que contenga una barra de desplazamiento horizontal (control HScrollBar) y un control TextBox. Presione F5 y haga clic en la barra de desplazamiento horizontal. Private Sub Form_Load () HScroll1.Min = 0 HScroll1.Max = 1000 HScroll1.LargeChange = 100 HScroll1.SmallChange = 1 ' Establece Min. ' Establece Max. ' Establece LargeChange. ' Establece SmallChange. Pgina 43 de 161

Curso Visual Basic 5.0 End Sub Private Sub HScroll1_Change () Text1.Text = HScroll1.Value End Sub

13.2-Click
Aplicable a: Control CheckBox, Control ComboBox, Control CommandButton, Objeto Form, Control Frame, Control Image, Control Label, Control ListBox, Control Menu, Control OptionButton, Control PictureBox, Control TextBox. Ocurre cuando el usuario presiona y suelta un botn del mouse (ratn) en un objeto. Tambin puede ocurrir cuando se cambia el valor de un control. Para un objeto Form, este evento ocurre cuando el usuario hace clic en un rea en blanco o en un control desactivado. Para un control, este evento ocurre cuando el usuario: Hace clic en un control con el botn primario o secundario del mouse. Con un control CheckBox, CommandButton, ListBox o OptionButton, el evento Click slo ocurre cuando el usuario hace clic con el botn primario del mouse. Selecciona un elemento de un control ComboBox o ListBox, ya sea presionando las teclas de direccin o haciendo clic con el botn del mouse. Presiona la BARRA ESPACIADORA cuando un control CommandButton, OptionButton o CheckBox tiene el enfoque. Presiona ENTRAR cuando un formulario tiene un control CommandButton con su propiedad Default establecida a True. Presiona ESC cuando un formulario tiene un botn Cancelar, un control CommandButton con su propiedad Cancel establecida a True. Presiona una tecla de acceso para un control. Por ejemplo, si el ttulo de un control CommandButton es "&Ir", al presionar ALT+I se desencadena este evento. Tambin puede desencadenar el evento Click en el cdigo si: Establece la propiedad Value de un control CommandButton a True. Establece la propiedad Value de un control OptionButton a True. Cambia el valor de la propiedad Value de un control CheckBox. Sintaxis Private Sub Form_Click( ) Private Sub objeto_Click([ndice As Integer]) La sintaxis del evento Click consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. ndice Un entero que identifica nicamente a un control si est en una matriz de controles. Comentarios Por lo general se adjunta un procedimiento de evento Click a un control CommandButton, un objeto Menu o un control PictureBox para realizar comandos y acciones similares a comandos. Para los dems controles aplicables, utilice este evento para desencadenar acciones como respuesta a un cambio en el control. Puede utilizar la propiedad Value de un control para comprobar el estado del control desde el cdigo. Hacer clic en un control genera los eventos MouseDown y MouseUp adems del evento Click. El orden en que ocurren estos tres eventos vara de un control a otro. Por ejemplo, para los controles ListBox y CommandButton, los eventos ocurren en este orden: MouseDown, Click, MouseUp. Pero para los controles FileListBox, Label o PictureBox, los eventos ocurren en este otro orden: MouseDown, MouseUp y Click. Cuando est adjuntando procedimientos para estos eventos

Pgina 44 de 161

Curso Visual Basic 5.0 relacionados, asegrese de que sus acciones no entran en conflicto. Si el orden de los eventos es importante en la aplicacin, pruebe el control para determinar el orden de los mismos. Nota Para distinguir entre los botones primario, secundario y central del mouse, utilice los eventos MouseDown y MouseUp. Si hay cdigo en el evento Click, nunca se activar el evento DlbClick ya que de los dos eventos, Click es el primero que se activa. Como resultado, el evento Click intercepta el clic del mouse, por lo que DblClick nunca se producir.

Ejemplo del Evento Click


En este ejemplo, cada vez que se hace clic en un control PictureBox se mueve diagonalmente por un formulario. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un control PictureBox en la esquina inferior izquierda del mismo, despus presione F5 y haga clic en el control PictureBox. Private Sub Picture1_Click () Picture1.Move Picture1.Left + 750, Picture1.Top - 550 End Sub

13.3- GotFocus
Aplicable a: Control CheckBox, Control ComboBox, Control CommandButton, , Objeto Form Controles HScrollBar y VScrollBar, Control ListBox, Control OptionButton, Control PictureBox, Control TextBox. Ocurre cuando un objeto recibe el enfoque, ya sea mediante una accin del usuario, como tabular o hacer clic en el objeto, o cambiando el enfoque en el cdigo mediante el mtodo SetFocus. Un formulario recibe el enfoque slo cuando todos los controles visibles estn desactivados. Sintaxis Private Sub Form_GotFocus( ) Private Sub objeto_GotFocus([ndice As Integer]) La sintaxis del evento GotFocus consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. ndice Un entero que identifica de manera nica a un control si est en una matriz de controles. Comentarios Normalmente, el procedimiento de evento GotFocus se utiliza para especificar las acciones que ocurren cuando un control o un formulario recibe primero el enfoque. Por ejemplo, si adjunta un procedimiento de evento GotFocus a cada control de un formulario puede guiar al usuario mostrndole instrucciones breves o mensajes en la barra de estado. Tambin puede proporcionar avisos visuales activando, desactivando o mostrando otros controles que dependan del control que tiene el enfoque. Nota Un objeto puede recibir el enfoque slo si sus propiedades Enabled y Visible estn establecidas a True. Para personalizar el interfaz de teclado en Visual Basic para mover el enfoque, establezca el orden de tabulacin o especifique teclas de acceso para controles de un formulario. Ejemplo del evento GotFocus Este ejemplo muestra un mensaje en la barra de estado cuando un botn de un grupo OptionButton obtiene el enfoque. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga dos controles OptionButton y un control Label. Establezca la propiedad Name de ambos controles OptionButton a OptionGroup y, despus, presione F5 y haga clic en los controles OptionButton.

Pgina 45 de 161

Curso Visual Basic 5.0 Private Sub Form_Load () Label1.AutoSize = True End Sub Private Sub OptionGroup_GotFocus (Index As Integer) Select Case Index Case 0 Label1.Caption = "La opcin 1 tiene el enfoque." Case 1 Label1.Caption = "La opcin 2 tiene el enfoque." End Select End Sub Private Sub OptionGroup_LostFocus (Index As Integer) Label1.Caption = "" End Sub

13.4- KeyPress
Aplicable a: Control CheckBox, Control ComboBox, Control CommandButton, Objeto Form Controles HScrollBar y VScrollBar, Control ListBox, Control OptionButton, Control PictureBox, Control TextBox. Ocurre cuando el usuario presiona y suelta una tecla. Sintaxis Private Sub Form_KeyPress(keyascii As Integer) Private Sub objeto_KeyPress([ndice As Integer,]keyascii As Integer) La sintaxis del evento KeyPress consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. ndice Un entero que identifica de manera nica a un control si est en una matriz de controles. keyascii Un entero que devuelve un cdigo de tecla numrico ANSI estndar. keyascii se pasa por referencia; al cambiarlo se enva un carcter diferente al objeto. Cambiar keyascii a 0 cancela la pulsacin de tecla, de forma que el objeto no recibe ningn carcter. Comentarios El objeto que tiene el enfoque recibe el evento. Un formulario puede recibir el evento slo si no tiene controles visibles y activados. Un evento KeyPress puede implicar a cualquier carcter imprimible del teclado, a la tecla CTRL combinada con un carcter del alfabeto estndar o uno de los caracteres especiales, y la tecla ENTRAR o RETROCESO. Un procedimiento de evento KeyPress es til para interceptar pulsaciones de teclas realizadas en un control TextBox o ComboBox. Esto le permite comprobar inmediatamente la validez de las pulsaciones o el formato de los caracteres a medida que se escriben. Cambiar el valor del argumento keyascii cambia el carcter mostrado. KeyPress interpreta las maysculas y minsculas de cada carcter como cdigos de tecla distintos y, por tanto, como caracteres diferentes. Nota El nmero ANSI para la combinacin de teclado CTRL+@ es 0. Puesto que Visual Basic reconoce un valor keyascii de 0 como una cadena de longitud cero (""), evite utilizar CTRL+@ en sus aplicaciones. Ejemplo del evento KeyPress

Pgina 46 de 161

Curso Visual Basic 5.0 Este ejemplo convierte a maysculas el texto escrito en un control TextBox. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un control TextBox y, despus, presione F5 y escriba algo en el control TextBox. Private Sub Text1_KeyPress (KeyAscii As Integer) Char = Chr(KeyAscii) KeyAscii = Asc(UCase(Char)) End Sub

13.5- Load
Aplicable a: Objeto Form. Ocurre cuando se carga un formulario. Para un formulario de inicio, ocurre cuando una aplicacin se inicia como resultado de una instruccin Load o como resultado de una referencia a una propiedad o control de un formulario descargado. Sintaxis Private Sub Form_Load( ) Private Sub MDIForm_Load( ) Comentarios Normalmente utiliza un procedimiento de evento Load para incluir cdigo de inicializacin para un formulario; por ejemplo, cdigo que especifica los valores predeterminados de los controles, indica el contenido que se va a cargar en controles ComboBox o ListBox e inicializa variables a nivel del formulario. El evento Load ocurre tras el evento Initialize. Nota Cuando cree procedimientos para eventos relacionados, como Activate, GotFocus, Paint y Resize, asegrese de que sus acciones no entran en conflicto y no producen eventos recursivos. Ejemplo del evento Load Este ejemplo carga elementos en un control ComboBox cuando se carga un formulario. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un control ComboBox y despus presione F5. Private Sub Form_Load () Combo1.AddItem "Mozart" Combo1.AddItem "Beethoven" Combo1.AddItem "Rock 'n Roll" Combo1.AddItem "Reggae" Combo1.ListIndex = 2 End Sub

' Agrega elementos a la lista.

' Establece la seleccin predeterminada.

13.6- LostFocus
Aplicable a Control CheckBox, Control ComboBox, Control CommandButton, Objeto Form Controles HScrollBar y VScrollBar, Control ListBox, Control OptionButton, Control PictureBox, Control TextBox. Ocurre cuando un objeto pierde el enfoque, ya sea por una accin del usuario, como tabular o hacer clic en otro objeto, o bien mediante un cambio del enfoque en el cdigo con el mtodo SetFocus. Pgina 47 de 161

Curso Visual Basic 5.0 Sintaxis Private Sub Form_LostFocus( ) Private Sub objeto_LostFocus([ndice As Integer]) La sintaxis del evento LostFocus consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. ndice Un entero que identifica de manera nica a un control si est en una matriz de controles. Comentarios Un procedimiento de evento LostFocus resulta especialmente til para comprobar y validar actualizaciones. Utilizar LostFocus puede hacer que la validacin tenga lugar conforme el usuario mueve el enfoque del control. Otro uso para este tipo de procedimiento de evento es activar, desactivar, ocultar y mostrar otros objetos, como en un procedimiento de evento GotFocus. Tambin puede invertir o cambiar condiciones que estableci en el procedimiento de evento GotFocus del objeto.

Ejemplo del evento LostFocus


Este ejemplo cambia el color de un control TextBox cuando recibe o pierde el enfoque (se selecciona con el mouse o la tecla TAB) y muestra el texto apropiado en el control Label. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga dos controles TextBox y un control Label y, despus, presione F5 y mueva el enfoque entre Text1 y Text2. Private Sub Text1_GotFocus () ' Muestra el enfoque en rojo. Text1.BackColor = RGB(255, 0, 0) Label1.Caption = "Text1 tiene el enfoque." End Sub Private Sub Text1_LostFocus () ' Muestra la prdida del enfoque en azul. Text1.BackColor = RGB(0, 0, 255) Label1.Caption = "Text1 no tiene el enfoque." End Sub

13.7- MouseMove
Aplicable a: Control CheckBox, Control CommandButton, Control Data, Objeto Form, Control Frame, Control Image, Control Label, Control ListBox, Control OptionButton, Control PictureBox, Control TextBox. Ocurre cuando el usuario mueve el mouse. Sintaxis Private Sub Form_MouseMove(botn As Integer, mays As Integer, x As Single, y As Single) Private Sub MDIForm_MouseMove(botn As Integer, mays As Integer, x As Single, y As Single) Private Sub objeto_MouseMove([ndice As Integer,] botn As Integer, mays As Integer, x As Single, y As Single) La sintaxis del evento MouseMove consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. Pgina 48 de 161

Curso Visual Basic 5.0 ndice Un entero que identifica de manera nica a un control si est en una matriz de controles. botn Un entero que corresponde al estado de los botones del mouse en el cual un bit se establece si el botn est presionado. El argumento botn es un campo de bit con los bits correspondientes al botn primario (bit 0), al botn secundario (bit 1) y al botn central (bit 2). Estos bits corresponden a los valores 1, 2 y 4, respectivamente. Indica el estado completo de los botones del mouse; alguno, todos o ninguno de estos tres bits puede estar establecido, lo que indica que algunos, todos o ninguno de los botones est presionado. mays Un entero que corresponde al estado de las teclas MAYS, CTRL y ALT. Un bit est establecido si la tecla est presionada. El argumento mays es un campo de bits con los bits menos significativos correspondientes a la tecla MAYS (bit 0), CTRL (bit 1) y ALT (bit 2 ). Estos bits corresponden a los valores 1, 2 y 4, respectivamente. El argumento mays indica el estado de estas teclas. Alguno, todos o ninguno de los bits puede estar establecido, lo que indica que alguna, todas o ninguna de las teclas est presionada. Por ejemplo, si se presionaron las teclas CTRL y ALT, el valor de shift sera 6. x, y Un nmero que especifica la ubicacin actual del puntero del mouse. Los valores x e y siempre se expresan en trminos del sistema de coordenadas establecido por las propiedades ScaleHeight, ScaleWidth, ScaleLeft y ScaleTop del objeto. Comentarios El evento MouseMove se genera continuamente a medida que el puntero del mouse se mueve por los objetos. A menos que otro objeto haya capturado el mouse, un objeto reconoce un evento MouseMove siempre que la posicin del mouse est dentro de sus bordes. Ejemplo del evento MouseMove Este ejemplo muestra una aplicacin de dibujo simple. El procedimiento de evento MouseDown funciona con un procedimiento MouseMove relacionado para activar el dibujo cuando est presionado cualquier botn del mouse. El procedimiento de evento MouseUp desactiva el dibujo. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario, despus presione F5, haga clic en el formulario y mueva el mouse mientras est presionado el botn del mismo. Dim PaintNow As Boolean ' Declara una variable. Private Sub Form_MouseDown (Button As Integer, Shift As Integer, X As Single, Y As Single) PaintNow = True ' Activa el dibujo. End Sub Private Sub Form_MouseUp (Button As Integer, X As Single, Y As Single) PaintNow = False ' Desactiva el dibujo. End Sub Private Sub Form_MouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single) If PaintNow Then PSet (X, Y) ' Dibuja un punto. End If End Sub Private Sub Form_Load () DrawWidth = 10 ' Utiliza un pincel ms ancho. ForeColor = RGB(0, 0, 255) ' Establece el color de dibujo. End Sub

13.8- Timer
Aplicable a: Control Timer Pgina 49 de 161

Curso Visual Basic 5.0

Ocurre cuando ha transcurrido un intervalo preestablecido para un control Timer. La frecuencia del intervalo se almacena en la propiedad Interval del control, que especifica el tiempo en milisegundos. Sintaxis Private Sub objeto_Timer([ndice As Integer]) La sintaxis del evento Timer consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. ndice Un entero que identifica de manera nica a un control si est en una matriz de controles. Comentarios Utilice este procedimiento de evento para indicar a Visual Basic qu hacer cada vez que se agote el intervalo de tiempo de un control Timer. Cuando est trabajando con el evento Timer: La propiedad Interval especifica el intervalo entre los eventos Timer, en milisegundos. Siempre que la propiedad Enabled del control Timer est establecida a True y la propiedad Interval sea mayor que 0, el evento Timer espera durante el periodo especificado en la propiedad Interval. Ejemplo del evento Timer Este ejemplo muestra un reloj digital. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un control Label y un control Timer y, despus, presione F5. Private Sub Form_Load () Timer1.Interval = 1000 End Sub Private Sub Timer1_Timer () Label1.Caption = Time End Sub

' Establece el intervalo de Timer.

' Actualiza la presentacin de la hora.

Este ejemplo mueve un control PictureBox por un formulario. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un control Timer y un control PictureBox y, despus, presione F5. Si desea obtener un efecto visual mejor puede asignar un mapa de bits al control PictureBox mediante la propiedad Picture. Dim DeltaX, DeltaY As Integer ' Declara variables. Private Sub Timer1_Timer () Picture1.Move Picture1.Left + DeltaX, Picture1.Top + DeltaY If Picture1.Left < ScaleLeft Then DeltaX = 100 If Picture1.Left + Picture1.Width > ScaleWidth + ScaleLeft Then DeltaX = -100 End If If Picture1.Top < ScaleTop Then DeltaY = 100 If Picture1.Top + Picture1.Height > ScaleHeight + ScaleTop Then DeltaY = -100 End If End Sub Private Sub Form_Load () Timer1.Interval = 1000 ' Establece el intervalo. DeltaX = 100 ' Inicializa variables. Pgina 50 de 161

Curso Visual Basic 5.0 DeltaY = 100 End Sub

13.9- Unload
Aplicable a: Objeto Form. Ocurre cuando un formulario est a punto de quitarse de la pantalla. Cuando ese formulario se vuelve a cargar, el contenido de todos sus controles se reinicializa. Este evento se desencadena porque un usuario cierra el formulario mediante el comando Cerrar del men Control o una instruccin Unload. Sintaxis Private Sub objeto_Unload(cancelar As Integer) La sintaxis del evento Unload consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. cancelar Un entero que determina si el formulario se quita de la pantalla. Si cancelar es 0, el formulario se quita. Establecer cancelar a cualquier valor distinto de cero impide que el formulario se quite. Comentarios Establecer cancelar a un valor distinto de cero impide que el formulario se quite, pero no detiene los dems eventos, como la salida del entorno operativo Microsoft Windows. Utilice el evento QueryUnload para detener la salida de Windows. Utilice un procedimiento de evento Unload para comprobar si el formulario se debe descargar o para especificar acciones que desea que tengan lugar cuando se descargue el formulario. Tambin puede incluir cualquier cdigo de validacin a nivel del formulario que pueda necesitar para cerrar el formulario o guardar los datos en un archivo. El evento QueryUnload ocurre antes que el evento Unload. El evento Unload ocurre antes que el evento Terminate. El evento Unload puede estar causado por la utilizacin de la instruccin Unload o porque el usuario elija el comando Cerrar del men Control del formulario, salga de la aplicacin con el botn Finalizar tarea de la Lista de tareas, o salga del entorno operativo Microsoft Windows mientras la aplicacin se est ejecutando. Ejemplo del evento Unload Este ejemplo muestra un procedimiento simple para cerrar un formulario mientras se avisa al usuario con varios cuadros de mensajes. En una aplicacin real, puede agregar llamadas a procedimientos Sub de propsito general que emulen el proceso de los comandos Salir, Guardar y Guardar como del men Archivo de Visual Basic. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario y, despus, presione F5. Una vez que se muestre el formulario, presione ALT+F4 para cerrar el formulario. Private Sub Form_Unload (Cancel As Integer) Dim Msg, Response ' Declara variables. Msg = "Desea guardar los datos antes de cerrar?" Response = MsgBox(Msg, vbQuestion + vbYesNoCancel, "Dilogo Cerrar") Select Case Response Case vbCancel ' No se permite cerrar. Cancel = -1 Msg = "Se ha cancelado el comando." Case vbYes ' Introduzca cdigo para guardar los datos aqu. Msg = "Datos guardados."' Pgina 51 de 161

Curso Visual Basic 5.0 Case vbNo Msg = "Datos no guardados." End Select MsgBox Msg, vbOKOnly, "Confirmacin" ' Mostrar mensaje. End Sub

13.10- QueryUnload
Aplicable a: Objeto Form y Coleccin Forms, Objeto MDIForm Ocurre antes de que se cierre un formulario o una aplicacin. Sintaxis Private Sub Form_QueryUnload(cancelar As Integer, modo_descarga As Integer) Private Sub MDIForm_QueryUnload(cancelar As Integer, modo_descarga As Integer) La sintaxis del evento QueryUnload consta de las siguientes partes: Parte Descripcin cancelar Un entero. Establecer este argumento a cualquier valor distinto de 0 detiene el evento QueryUnload en todos los formularios cargados y detiene el cierre del formulario y de la aplicacin. modo_descarga Un valor o una constante que indica la causa del evento QueryUnload, tal y como se describe en Valores que se pueden obtener. Valores que se pueden obtener El argumento modo_descarga devuelve los siguientes valores: Constante Valor Descripcin vbFormControlMenu 0 El usuario eligi el comando Cerrar del men Control del formulario. vbFormCode 1 Se invoc la instruccin Unload desde el cdigo. VbAppWindows 2 La sesin actual del entorno operativo Microsoft Windows est inalizando. vbAppTaskManager 3 El Administrador de tareas de Microsoft Windows est cerrando la aplicacin. vbFormMDIForm 4 Un formulario MDI secundario se est cerrando porque el formulario MDI tambin se est cerrando. Comentarios Normalmente este evento se utiliza para asegurarse de que no hay tareas sin finalizar en los formularios incluidos en una aplicacin antes de que esa aplicacin se cierre. Por ejemplo, si un usuario no ha guardado todava algunos datos nuevos de cualquier formulario, su aplicacin puede pedir al usuario que los guarde. Cuando una aplicacin se cierra, puede utilizar los procedimientos de evento QueryUnload o Unload para establecer la propiedad Cancel a True, deteniendo el proceso de cierre. Sin embargo, el evento QueryUnload ocurre en todos los formularios antes de que se descargue ninguno de ellos y el evento Unload ocurre conforme se descarga cada formulario. Ejemplo del evento QueryUnload En este ejemplo, al cerrar un formulario se consulta al operador si realmente quiere salir o no. Tambin se chequea si est saliendo del formulario o de toda la aplicacin. ' Pegar en la seccin Declaraciones de Form1. Private Sub Form_QueryUnload (Cancel As Integer, UnloadMode As Integer) Pgina 52 de 161

Curso Visual Basic 5.0 Dim Msg ' Declara la variable. If UnloadMode > 0 Then ' Si sale de la aplicacin. Msg = "Realmente desea salir de la aplicacin?" Else ' Si slo se cierra el formulario. Msg = "Realmente desea cerrar el formulario?" End If ' Si el usuario hace clic en el botn No, se detiene QueryUnload. If MsgBox(Msg, vbQuestion + vbYesNo, Me.Caption) = vbNo Then Cancel = True End Sub

13.11- Validate
Aplicable a: Control Data Se produce antes de que otro registro se convierta en el registro actual, antes del mtodo Update (excepto cuando se guardan los datos con el mtodo UpdateRecord) y antes de una operacin Delete, Unload o Close. Sintaxis Private Sub objeto_Validate ([ndice As Integer,] accin As Integer, guardar As Integer) La sintaxis del evento Validate consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a ndice Identifica el control si se encuentra en una matriz de controles accin Un entero que indica la operacin que provoca el evento, como se describe en Valores guardar Una expresin booleana que especifica si los datos enlazados han cambiado, como se describe en Valores Valores Los valores de accin son: Constante vbDataActionCancel vbDataActionMoveFirst vbDataActionMovePrevious vbDataActionMoveNext vbDataActionMoveLast vbDataActionAddNew vbDataActionUpdate vbDataActionDelete vbDataActionFind vbDataActionBookmark vbDataActionClose vbDataActionUnload

Valor 0 1 2 3 4 5 6 7 8 9 10 11

Descripcin Cancela la operacin al salir de Sub Mtodo MoveFirst Mtodo MovePrevious Mtodo MoveNext Mtodo MoveLast Mtodo AddNew Operacin Update (no UpdateRecord) Mtodo Delete Mtodo Find Se ha establecido la propiedad Bookmark El mtodo Close Se est descargando el formulario

Los valores de guardar son: Valor Descripcin True Los datos enlazados han cambiado False Los datos enlazados no han cambiado Comentarios

Pgina 53 de 161

Curso Visual Basic 5.0 El argumento guardar indica inicialmente si los datos enlazados han cambiado. Este argumento puede ser False si los datos del bfer de copia han cambiado. Si guardar es True cuando este evento termina, se invocan los mtodos Edit y UpdateRecord. El mtodo UpdateRecord slo guarda los datos de controles enlazados o del bfer de copia en los que la propiedad DataChanged sea True. Este evento se produce incluso aunque no se hayan modificado los datos de los controles enlazados y aunque no existan controles enlazados. Puede utilizar este evento para cambiar valores y actualizar datos. Tambin puede decidir guardar los datos o detener cualquier accin que est provocando el evento y sustituirla por otra accin diferente. Puede cambiar el argumento accin para cambiar una accin por otra. Puede cambiar los diversos mtodos Move y el mtodo AddNew, que se pueden intercambiar libremente (cualquier Move en AddNew, cualquier Move en cualquier otro Move o AddNew en cualquier Move). Cuando utilice AddNew, puede utilizar MoveNext y despus ejecutar otro AddNew para examinar la propiedad EditMode y determinar si hay una operacin Edit o AddNew en curso. El intento de sustituir AddNew o una accin Move en cualquier otra accin se pasa por alto o genera un error interceptable. Si se establece accin a 0, se puede detener cualquier accin. Dentro del cdigo de este evento puede comprobar los datos de cada control enlazado en el que DataChanged sea True. Despus puede establecer DataChanged a False para evitar guardar dichos datos en la base de datos. Durante este evento no puede utilizar ningn mtodo (como MoveNext) en el objeto Recordset subyacente.

Ejemplo de la propiedad DataChanged y del evento Validate


Este ejemplo ilustra una validacin de datos sencilla. En la tabla Authors de la base de datos Biblio.mdb hay dos campos: Au_ID y Author. Como el valor de Au_ID se utiliza para identificar de forma nica al autor, este valor no se debe cambiar. El ejemplo no permite que se modifique el campo Au_ID, que est enlazado a Text1. Private Sub Data1_Validate (Action As Integer, Save As Integer) If Text1.DataChanged Then ' Comprueba si los datos han cambiado. MsgBox "No puede cambiar el nmero de Id." Text1.DataChanged = False ' No guarda los datos modificados. End If ... End Sub

14- Mtodos ms importantes de los controles estndares. 14.1- AddItem


Aplicable a: ControlComboBox, ControlListBox Agrega un elemento a un control ListBox o ComboBox. Sintaxis objeto.AddItem elemento, ndice La sintaxis del mtodo AddItem consta de las siguientes partes: Parte Descripcin objeto Requerido. Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a. Elemento Requerido. expresin de cadena que especifica el elemento que se va a agregar al objeto. ndice Opcional. Entero que especifica la posicin dentro del objeto donde se insertan el elemento o la fila nuevos. Para el primer elemento de un control ListBox o ComboBox, ndice es 0. Comentarios

Pgina 54 de 161

Curso Visual Basic 5.0 Si se especifica un valor vlido para ndice, elemento se sita en dicha posicin dentro del objeto. Si se omite ndice, elemento se agrega en la posicin que le corresponda dentro del orden apropiado (si la propiedad Sorted es True) o al final de la lista (si Sorted es False). Los controles ListBox o ComboBox que estn enlazados a un control Data no aceptan el mtodo AddItem.

Ejemplo del mtodo AddItem


Este ejemplo utiliza el mtodo AddItem para agregar 100 elementos a un cuadro de lista. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario con un control ListBox llamado List1, y despus presione F5 y haga clic en el formulario. Private Sub Form_Click () Dim Entry, I, Msg ' Declara variables. Msg = "Haga clic en Aceptar para agregar 100 elementos a su cuadro de lista." MsgBox Msg ' Muestra el mensaje. For I = 1 To 100 ' Cuenta de 1 a 100. Entry = "Entrada " & I ' Crea la entrada. List1.AddItem Entry ' Agrega la entrada. Next I Msg = "Haga clic en Aceptar para quitar una de cada dos entradas." MsgBox Msg ' Muestra el mensaje. For I = 1 To 50 ' Determina cmo quitar List1.RemoveItem I ' cada elemento Next I Msg = "Haga clic en Aceptar para quitar todos los elementos del cuadro de lista." MsgBox Msg ' Muestra el mensaje. List1.Clear ' Limpia el cuadro de lista. End Sub

14.2- AddNew (Objeto Recordset)


Aplicable a: Objeto Recordset. Crea un nuevo registro para un objeto Recordset de tipo Table o Dynaset. Sintaxis recordset.AddNew El marcador de posicin del recordset es una variable de objeto que representa un objeto Recordset que se puede actualizar al que puede agregar un registro nuevo. Comentarios Utilice el mtodo AddNew para crear y agregar un nuevo registro en el objeto Recordset llamado por el recordset. Este mtodo establece los campos a los valores predeterminados y si no se especifican valores predeterminados, establece los campos a Null (los valores predeterminados especificados pare el Recordset tipo Table). Despus de modificar el nuevo registro, utilice el mtodo Update para guardar los cambios y agregar el registro al Recordset. No se producirn cambios en la base de datos hasta que no se utilice el mtodo Update. Precaucin Si ejecuta un AddNew y a continuacin realiza una operacin que desplace otro registro sin usar Update, los cambios se perdern sin previo aviso. Adems, si cierra el Recordset o finaliza el procedimiento que declara el Recordset o su objeto Database, el nuevo registro y los cambios realizados se descartarn sin previo aviso. Si no se ha desplazado hasta el ltimo registro de su Recordset, los registros agregados a las tablas subyacentes pueden incluirse, si se colocan ms all del registro activo. Sin embargo, si agrega un registro a un Recordset, el registro ser Pgina 55 de 161

Curso Visual Basic 5.0 visible en el Recordset y se incluir en la tabla subyacente donde estar visible para todos los nuevos objetos Recordset. La posicin del nuevo registro depende del tipo de Recordset: En un objeto Recordset tipo Dynaset, los registros se insertan al final del conjunto del Recordset, independientemente de las reglas de clasificacin u orden que estuvieran en vigor cuando se abri el Recordset. En un objeto Recordset tipo Table en el que su propiedad Index se haya establecido, los registros se insertan en el lugar adecuado dentro del orden definido. Si no se ha establecido la propiedad Index, los nuevos registros se insertarn al final del Recordset. Ejemplo de mtodo AddNew En este ejemplo se agrega un regisro nuevo a la tabla Agenda de la base de datos Clientes, tomando los datos desde un formulario que contiene 3 cajas de texto (txtCodigo, txtNombre y txtDireccion) y un botn para agregar los datos (cmdAgregar) Private Sub cmdAgregar_Click () Dim wsp as WorkSpace Dimensiono las variables Dim Base as Database Dim Agenda as Recordset Set wsp = DbEngine.Workspaces(0) Seteo el espacio de trabajo Set Base = wsp.OpenDatabase (Clientes.mdb) Abro la base de Datos Set Agenda = BasedeDatos.OpenRecordset(SELECT * FROM Agenda) Abro el Recordset Agenda.AddNew Agenda!Codigo = txtCodigo.Text Agenda!Direccion = txtDireccion.Text Agenda.Nombre = txtNombre.Text Agenda.Update Agenda.Close Base.Close Wsp.Close End Sub Agrego un registro en blanco Asigno los valores de las cajas de texto a los campos

Cierro el Recordset Cierro la base de Datos Cierro el espacio de trabajo

14.3- CancelUpdate (Objeto Recordset)


Aplicanble a: Objeto Recordset. Cancela todas las actualizaciones pendientes del objeto Recordset. Sintaxis recordset.CancelUpdate tipo La sintaxis del mtodo CancelUpdate consta de las siguientes partes. Parte Descripcin recordset Una variable de objeto que representa el objeto Recordset en el que se cancelan las actualizaciones pendientes.

Pgina 56 de 161

Curso Visual Basic 5.0 Tipo Opcional. Una constante que indica el tipo de actualizacin, como se especifica en Valores (slo espacios de trabajo ODBCDirect). Comentarios El mtodo CancelUpdate cancela todas las actualizaciones pendientes a causa de una operacin Edit o AddNew. Por ejemplo, si un usuario llama al mtodo Edit o AddNew sin haber llamado anteriormente al mtodo Update, CancelUpdate cancelar todos los cambios efectuados despus de llamar a Edit o AddNew. Ejemplo del mtodo CancelUpdate Al mismo ejemplo del Evento AddNew, le agregamos la opcin de confirmar o volver para atrs la actualizacin al operador, segn la respuesta a una caja de mensajes. Private Sub cmdAgregar_Click () Dim wsp as WorkSpace Dimensiono las variables Dim Base as Database Dim Agenda as Recordset Set wsp = DbEngine.Workspaces(0) Seteo el espacio de trabajo Set Base = wsp.OpenDatabase (Clientes.mdb) Abro la base de Datos Set Agenda = BasedeDatos.OpenRecordset(SELECT * FROM Agenda) Abro el Recordset Agenda.AddNew Agenda!Codigo = txtCodigo.Text Agenda!Direccion = txtDireccion.Text Agenda.Nombre = txtNombre.Text Agrego un registro en blanco Asigno los valores de las cajas de texto a los campos

If MsgBox ("Agrega el nuevo registro, vbYesNo) = vbYes then Agenda.Update Else Agenda.CancelUpdate End If Agenda.Close Base.Close Wsp.Close End Sub Cierro el Recordset Cierro la base de Datos Cierro el espacio de trabajo

14.4- Clear (Clipboard, Combo Box, List Box)


Aplicable a: Objeto Control ComboBox, Control ListBoxBorra el contenido de los controles ListBox o ComboBox. Sintaxis objeto.Clear El marcador de posicin objeto representa una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a. Comentarios Pgina 57 de 161

Curso Visual Basic 5.0

Los controles ListBox o ComboBox que estn enlazados a un control Data no aceptan el mtodo Clear. Ejemplo del mtodo Clear Este ejemplo utiliza el mtodo Clear para borrar todos los elementos de un cuadro de lista. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario con un control ListBox llamado List1, y despus presione F5 y haga clic en el formulario. Private Sub Form_Click () Dim Entry, I, Msg ' Declara variables. Msg = "Haga clic en Aceptar para agregar 100 elementos a su cuadro de lista." MsgBox Msg ' Muestra el mensaje. For I = 1 To 100 ' Cuenta de 1 a 100. Entry = "Entrada " & I ' Crea la entrada. List1.AddItem Entry ' Agrega la entrada. Next I Msg = "Haga clic en Aceptar para quitar cualquier otra entrada." MsgBox Msg ' Muestra el mensaje. For I = 1 To 50 ' Determina cmo quitar List1.RemoveItem I ' uno de cada dos Next I ' elementos. Msg = "Haga clic en Aceptar para quitar todos los elementos del cuadro de lista." MsgBox Msg ' Muestra el mensaje. List1.Clear ' Limpia el cuadro de lista. End Sub

14.5- Close (Objetos Database, Recordset o Workspace)


Aplicable a: Objeto Database, Objeto Recordset, Objeto Workspace. Cierra un objeto DAO (Data Access Object). Sintaxis objeto.Close El marcador de posicin objeto es una variable de objeto que representa un objeto Database, Recordset o Workspace abierto. Comentarios Si el objeto Database, Recordset o Workspace llamado por objeto est cerrado cuando utiliza Close se produce un error en tiempo de ejecucin. Precaucin Si sale de un procedimiento que declara objetos Database o Recordset y la base de datos est cerrada, los cambios no guardados se perdern, todas las transacciones pendientes se anularn y se anularn todas las modificaciones pendientes de los datos. Si intenta cerrar un objeto Connection o Database mientras hay algn objeto Recordset abierto, estos objetos Recordset se cerrarn y las actualizaciones o modificaciones pendientes quedarn anuladas. Si intenta cerrar un objeto Workspace mientras hay algn objeto Database abierto, los objetos Database se cerrarn, el cual cerrar sus objetos Recordset. La utilizacin del mtodo Close en un objeto Recordset original o duplicado no afecta al otro objeto Recordset. Una alternativa al mtodo Close es establecer el valor de una variable de objeto a Nothing (Set dbsTemp = Nothing).

Pgina 58 de 161

Curso Visual Basic 5.0 Ejemplo de mtodo Close Son vlidos los ejemplos de los mtodos AddNew y CancelUpdate. (donde se cierran objetos Workspace, Database y Recordset),

14.6- Cls
Aplicable a: Objeto Form, Control PictureBox. Borra los grficos y el texto generados en tiempo de ejecucin de los controles Form o PictureBox.

Sintaxis
objeto.Cls El marcador de posicin objeto representa una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a. Si se omite objeto, se supone que el objeto es el control Form que tenga el enfoque.

Comentarios
Cls borra el texto y los grficos generados en tiempo de ejecucin por instrucciones grficas y de impresin. Los mapas de bits de fondo definidos mediante la propiedad Picture y los controles colocados en un Form en tiempo de diseo no se ven afectados por Cls. Despus de llamar a Cls, las propiedades CurrentX y CurrentY del objeto se restablecen a 0. Ejemplo del mtodo Cls Este ejemplo utiliza el mtodo Cls para eliminar la informacin impresa de un formulario. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario, y despus presione F5 y haga clic en el formulario. Private Sub Form_Click () Dim Msg ' Declara variable. ForeColor = QBColor(15) ' Establece el color de primer plano a blanco. BackColor = QBColor(1) ' Establece el color de fondo a azul. Msg = "Esta informacin se imprime en el fondo del formulario." Print Msg ' Imprime el mensaje en el formulario. Msg = "Haga clic en Aceptar para borrar la informacin y el patrn de fondo " Msg = Msg & "mostrado en el formulario." MsgBox Msg ' Muestra el mensaje. Cls ' Borra el fondo del formulario. End Sub

14.7- CompactDatabase (Objeto DBEngine)


Aplicable a: Objeto DBEngine Copia, compacta y ofrece la posibilidad de cambiar la versin, la secuencia de ordenacin y la codificacin. (slo espacio de trabajo Microsoft Jet).

Pgina 59 de 161

Curso Visual Basic 5.0

Sintaxis
DBEngine.CompactDatabase antiguabasededatos, nuevabasededatos, escenario, opciones, contrasea La sintaxis del mtodo CompactDatabase tiene los siguientes argumentos: -Antiguabasededatos: Una String que identifica una base de datos existente y cerrada. Puede ser una ruta completa y un nombre de archivo, como "C:\db1.mdb". Si el nombre de archivo tiene una extensin, deber especificarla. Si su red lo admite, tambin puede especificar una ruta de red, como "\\server1\share1\dir1\db1.mdb". -nuevabasededatos: Un tipo de datos String que es la ruta completa de la base de datos compactada que va a crear. Tambin puede especificar una ruta de acceso de red al igual que con antiguabasededatos. No puede usar el argumento nuevabasededatos para especificar el mismo archivo de base de datos que antiguabasededatos. -Escenario: Opcional. Un tipo de datos Variant que es una expresin de cadena que se utiliza para especificar la secuencia de ordenacin para crear nuevabasededatos, como se especifica en Opciones. Si omite este argumento, el escenario de la nuevabasededatos ser el mismo que el de la antiguabasededatos. Tambin puede crear una contrasea para nuevabasededatos concatenando la cadena de la contrasea (que comienza con ";pwd=") con una constante del argumento escenario, como este: dbLangSpanish & ";pwd=NuevaContrasea" Si desea utilizar el mismo escenario como antiguabasededatos (el valor predeterminado), pero especificar una contrasea nueva, simplemente escriba una contrasea en escenario: ";pwd=NuevaContrasea" opciones Opcional. Un valor entero que indica una o ms opciones, segn se especifica en Opciones. Puede combinar opciones sumando las correspondientes constantes. -Contrasea: Opcional. Un tipo de datos Variant que es una expresin de cadena que contiene una contrasea, si la base de datos est protegida con contrasea. La cadena ";pwd=" debe preceder a la propia contrasea. Si incluye una valor de contrasea en escenario, este valor se ignora. Puede utilizar una de las siguientes constantes en el argumento opciones para especificar si desea o no codificar la base de datos mientras se compacta. Constante Descripcin dbEncrypt Codifica la base de datos durante la compactacin. DbDecrypt Descodifica la base de datos durante la compactacin. Si omite una constante de codificacin o si incluye a la vez dbDecrypt y dbEncrypt, nuevabasededatos tendr la misma codificacin que antiguabasededatos. Puede usar una de las siguientes constantes en el argumento opciones para especificar la versin del formato de los datos para la base de datos compactada. Esta constante afecta slo a la versin del formato de datos de nuevabasededatos y no afecta a la versin de ninguno de los objetos definidos por Microsoft Access, como formularios e informes. Constante Descripcin dbVersion10 Crea una base de datos que utiliza el motor de base de datos Microsoft Jet versin 1.0 durante la compactacin. DbVersion11 Crea una base de datos que utiliza el motor de base de datos Microsoft Jet versin 1.1 durante la compactacin. DbVersion20 Crea una base de datos que utiliza el motor de base de datos Microsoft Jet versin 2.0 durante la compactacin. DbVersion30 Crea una base de datos que utiliza el motor de base de datos Microsoft Jet versin 3.0 (compatible con la versin 3.5) durante la compactacin. Slo puede especificar una constante de versin. Si omite una constante de versin, nuevabasededatos tendr la misma versin que antiguabasededatos. Slo puede compactar nuevabasededatos a una versin igual o posterior a la de antiguabasededatos. Comentarios

Pgina 60 de 161

Curso Visual Basic 5.0 Al cambiar datos de una base de datos, el archivo de base de datos puede fragmentarse y utilizar ms espacio en disco del necesario. Regularmente, puede usar el mtodo CompactDatabase en la base de datos para desfragmentar el archivo de base de datos. La base de datos compactada suele ser ms pequea y ejecutarse con ms rapidez. Tambin puede cambiar la secuencia de ordenacin, la codificacin o la versin del formato de datos, mientras copia y compacta la base de datos. Tiene que cerrar antiguabasededatos antes de compactarla. En un entorno multiusuario, los dems usuarios no pueden tener abierta antiguabasededatos mientras usted la compacta. Si antiguabasededatos no est cerrada o no se encuentra disponible para su uso exclusivo, se producir un error. Puesto que CompactDatabase crea una copia de la base de datos, deber disponer de espacio suficiente en disco para la base de datos original y la duplicada. La operacin de compactacin fracasar si no hay suficiente espacio disponible en disco. La base de datos duplicada nuevabasededatos no tiene por qu estar en el mismo disco que antiguabasededatos. Despus de compactar una base de datos, puede eliminar el archivo antiguabasededatos y cambiar el nombre del archivo compactado nuevabasededatos por el nombre del archivo original. El mtodo CompactDatabase copia todos los datos y valores de permisos de seguridad de la base de datos especificada en antiguabasededatos a la base de datos especificada en nuevabasededatos. Si utiliza el mtodo CompactDatabase para convertir una base de datos versin 1.x a una versin 2.5 o 3.x, solamente las aplicaciones que utilizan las versiones de Microsoft Jet 2.5 o 3.x pueden abrir la base de datos convertida. Precaucin Debido a que el mtodo CompactDatabase no convertir objetos Microsoft Access, no es recomendable utilizar CompactDatabase para convertir una base de datos que contenga dichos objetos. Para convertir una base de datos que contenga objetos Microsoft Access, en el men Herramientas, elija Utilidades de la base de datos y despus haga clic en Convertir base de datos.

Ejemplo de mtodo CompactDatabase


Este ejemplo utiliza el mtodo CompactDatabase compactar la base de Datos Clientes.mdb. Sub CompactDatabaseX() DBEngine.CompactDatabase "Clientes.mdb", Compact.mdb" End Sub

14.8- Delete (Objeto Recordset)


Aplicable a: Objeto Recordset. Objetos Recordset: elimina el registro activo de un objeto Recordset de tipo Dynaset o Table. Para espacios de trabajo ODBCDirect, el tipo de controlador determina si los objetos Recordset se pueden actualizar y, por tanto, admiten el mtodo Delete. Sintaxis recordset.Delete La sintaxis del mtodo Delete utiliza los siguientes argumentos. Argumentos Descripcin recordset Una variable de objeto que identifica un objeto Recordset de tipo Dynaset o Table abierto, que contiene el registro que desea eliminar.

Comentarios
Puede utilizar el mtodo Delete para eliminar un registro activo de un objeto Recordset. Recordsets Un objeto Recordset debe contener un registro activo antes de que utilice el mtodo Delete; en caso contrario se produce un error en tiempo de ejecucin. En objetos Recordset, Delete elimina el registro activo y lo hace inaccesible. Aunque no pueda modificarlo o utilizarlo, el registro eliminado permanecer activo. Sin embargo, una vez que se desplace a otro registro no podr volver a Pgina 61 de 161

Curso Visual Basic 5.0 convertir en activo el registro eliminado. Las referencias subsiguientes a un registro eliminado en un Recordset no son vlidas y producen un error. Si la tabla base es la tabla principal en una relacin de eliminacin de cascada, al eliminar el registro activo tambin se eliminarn uno o ms registros de una tabla externa. Nota Para agregar, modificar o eliminar un registro, debe tener un ndice nico en el registro en el origen de datos de base. Si no es as, se producir un error "Permiso denegado" en la llamada al mtodo AddNew, Delete o Edit en un espacio de trabajo Microsoft Jet.

Ejemplo de mtodo Delete


Se necesitan borrar todos los registros de la tabla Agenda (dentro de la base de datos Clientes) cuyos cdigos de Clientes sean menores a 10. Private Sub cmdAgregar_Click () Dim wsp as WorkSpace Dimensiono las variables Dim Base as Database Dim Agenda as Recordset Set wsp = DbEngine.Workspaces(0) Seteo el espacio de trabajo Set Base = wsp.OpenDatabase (Clientes.mdb) Abro la base de Datos Set Agenda = BasedeDatos.OpenRecordset(SELECT * FROM Agenda WHERE Agenda.Codigo < 10) Recordset If Not Agenda.EOF Agenda.MoveFirst Do While Not Agenda.EOF Agenda.Delete Agenda.MoveNext Loop End If Agenda.Close Base.Close Wsp.Close End Sub si encontr algn registro me muevo al primer registro mientras no sea fin de archivo elimino el registro me desplazo al siguiente registro

Abro el

Cierro el Recordset Cierro la base de Datos Cierro el espacio de trabajo

14.9- Edit (Objeto Recordset)


Aplicable a : Objeto Recordset. Copia el registro activo de un objeto Recordset al bfer de copia para su posterior edicin. Sintaxis recordset.Edit El recordset representa el nombre de un objeto Recordset abierto y que se puede actualizar que contiene el registro que desea modificar.

Pgina 62 de 161

Curso Visual Basic 5.0

Comentarios
Una vez que utiliza el mtodo Edit, los cambios realizados en los campos del registro activo son copiados al bfer de copia. Despus de realizar los cambios deseados en el registro, utilice el mtodo Update para guardar los cambios. El registro activo permanece activo despus de utilizar el mtodo Edit. Precaucin Si modifica un registro y a continuacin pasa a otro registro sin utilizar antes Update, los cambios se perdern sin previo aviso. Adems, si cierra recordset o finaliza el procedimiento que declara el Recordset o el objeto Database o Connection, el registro modificado se descarta sin previo aviso. La utilizacin de Edit produce un error bajo las siguientes condiciones: No hay ningn registro activo. El objeto Database o Recordset se abri de slo lectura. No hay campos que se pueden actualizar en el registro. El objeto Database o Recordset se abri para uso en modo exclusivo por otro usuario (espacio de trabajo Microsoft Jet). Nota Para agregar, modificar o eliminar un registro, debe tener un ndice nico en el registro en el origen de datos de base. Si no es as, se producir un error "Permiso denegado" en la llamada al mtodo AddNew, Delete o Edit en un espacio de trabajo Microsoft Jet, o se producir un error "Argumento no vlido" el la llamada al mtodo Update en un espacio de trabajo ODBCDirect.

Ejemplo de mtodo Edit


Se necesita asignar la zona 1 a todos los registros de la tabla Agenda (dentro de la base de datos Clientes) cuyos cdigos de Clientes sean menores a 20. Private Sub cmdAgregar_Click () Dim wsp as WorkSpace Dimensiono las variables Dim Base as Database Dim Agenda as Recordset Set wsp = DbEngine.Workspaces(0) Seteo el espacio de trabajo Set Base = wsp.OpenDatabase (Clientes.mdb) Abro la base de Datos Set Agenda = BasedeDatos.OpenRecordset(SELECT * FROM Agenda WHERE Agenda.Codigo < 20) Recordset If Not Agenda.EOF si encontr algn registro Agenda.MoveFirst me muevo al primer registro Do While Not Agenda.EOF mientras no sea fin de archivo Agenda.Edit Edito el registro Agenda!Zona = 1 Agenda.Update Agenda.MoveNext me desplazo al siguiente registro Loop End If Agenda.Close Cierro el Recordset Base.Close Cierro la base de Datos Wsp.Close Cierro el espacio de trabajo End Sub

Abro el

Pgina 63 de 161

Curso Visual Basic 5.0

14.10- Hide
Aplicable a: Objeto Form. Oculta un objeto Form pero no lo descarga. Sintaxis objeto.Hide El marcador de posicin objeto representa una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a. Si se omite objeto, se supone que objeto es el formulario que tenga el enfoque.

Comentarios
Cuando se oculta un formulario, se quita de la pantalla y su propiedad Visible queda establecida a False. Los controles de un formulario oculto no son accesibles para el usuario, pero estn disponibles para la aplicacin de Visual Basic en ejecucin y para otros procesos que se estn comunicando con la aplicacin mediante DDE, as como para los eventos del control Timer. Cuando se oculta un formulario, el usuario no puede interactuar con la aplicacin hasta que el cdigo del procedimiento de evento que ha provocado la ocultacin del formulario haya terminado de ejecutarse. Si el formulario no est cargado cuando se llama al mtodo Hide, el mtodo Hide carga el formulario pero no lo presenta. Ejemplo del mtodo Hide Este ejemplo utiliza el mtodo Hide para ocultar un formulario. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario, y despus presione F5 y haga clic en el formulario. Private Sub Form_Click () Dim Msg ' Declara variable. Hide ' Oculta el formulario. Msg = "Haga clic en Aceptar para que vuelva a aparecer el formulario." MsgBox Msg ' Muestra el mensaje. Show ' Muestra de nuevo el formulario. End Sub

14.11-MoveFirst - MoveLast - MoveNext MovePrevious (Objeto Recordset)


Aplicable a: Objeto Recordset. Mueven al registro primero, ltimo, siguiente o anterior de un objeto Recordset y lo convierten en el registro activo.

Sintaxis
recordset.{MoveFirst | MoveLast [dbRunAsync] | MoveNext | MovePrevious} El marcador de posicin recordset es una variable de objeto que representa un objeto Recordset abierto.

Comentarios
Pgina 64 de 161

Curso Visual Basic 5.0 Precaucin Si modifica el registro activo, utilice el mtodo Update para guardar los cambios antes de ir a otro registro. Si va a otro registro sin actualizar, los cambios se perdern sin previo aviso. Al abrir un Recordset, el primer registro est activo y la propiedad BOF es False. Si el Recordset no contiene registros la propiedad BOF es True y no habr ningn registro activo. Si el primer o el ltimo registro est activo cuando utiliza MoveFirst o MoveLast, el registro activo no cambia. Si utiliza MovePrevious cuando el primer registro est activo, la propiedad BOF es True y no habr ningn registro activo. Si vuelve a utilizar MovePrevious se producir un error y BOF ser True. Si utiliza MoveNext cuando el ltimo registro est activo, la propiedad EOF es True y no habr ningn registro activo. Si vuelve a utilizar MoveNext se producir un error y EOF ser True. Si recordset hace referencia a un objeto Recordset de tipo Table (slo espacios de trabajo Microsoft Jet), el movimiento seguir el ndice activo. Puede establecer el ndice activo utilizando la propiedad Index. Si no establece el ndice activo, el orden de los registros devueltos no estar definido. Importante Puede utilizar el mtodo MoveLast para llenar completamente un objeto Recordset de tipo Dynaset o Snapshot para obtener el nmero de registros activos en el Recordset. Sin embargo, si utiliza MoveLast puede hacer ms lentas sus aplicaciones. Slo debe utilizar MoveLast para obtener un total de registros si es absolutamente necesario obtener un total exacto en un Recordset abierto recientemente. No puede utilizar los mtodos MoveFirst, MoveLast y MovePrevious en un Recordset de tipo Forward-only. Para mover la posicin del registro activo en un objeto Recordset un nmero especfico de registros hacia adelante o hacia atrs, utilice el mtodo Move. Ejemplo de mtodos MoveFirst, MoveLast, MoveNext, MovePrevious Para un ejemplo de uso de los mtodos MoveFirst y MoveNext, mire el ejemplo del mtodo Edit. Se necesita asignar la zona 1 a todos los registros de la tabla Agenda (dentro de la base de datos Clientes) cuyos cdigos de Clientes sean menores a 20. Es necesario recorrer la tabla de atrs hacia adelante. Private Sub cmdAgregar_Click () Dim wsp as WorkSpace Dimensiono las variables Dim Base as Database Dim Agenda as Recordset Set wsp = DbEngine.Workspaces(0) Seteo el espacio de trabajo Set Base = wsp.OpenDatabase (Clientes.mdb) Abro la base de Datos Set Agenda = BasedeDatos.OpenRecordset(SELECT * FROM Agenda WHERE Agenda.Codigo < 20) Recordset If Not Agenda.EOF si encontr algn registro Agenda.MoveLast me muevo al ltimo registro Do While Not Agenda.BOF mientras no sea principio de archivo Agenda.Edit Edito el registro Agenda!Zona = 1 Agenda.Update Agenda.MovePrevious me desplazo al registro anterior Loop End If Agenda.Close Cierro el Recordset Base.Close Cierro la base de Datos Wsp.Close Cierro el espacio de trabajo End Sub

Abro el

14.12- OpenDatabase (Objeto Workspace)


Pgina 65 de 161

Curso Visual Basic 5.0 Aplicable a: Objeto DBEngine, Objeto Workspace. Abre una base de datos especificada en un objeto Workspace y devuelve una referencia al objeto Database que la representa. Sintaxis Set basededatos = espaciodetrabajo.OpenDatabase (nombrebasededatos, opciones, slolectura, conexin) La sintaxis del mtodo OpenDatabase consta de las siguientes partes. Argumento Descripcin basededatos Una variable de objeto que representa el objeto Database que va a abrir. espaciodetrabajo Opcional. Una variable de objeto que representa el objeto Workspace existente que contendr la base de datos. Si no incluye un valor para espaciodetrabajo, OpenDatabase utiliza el espacio de trabajo predeterminado. Nombrebasededatos Un tipo de datos String que es el nombre de un archivo de base de datos Microsoft Jet existente o el nombre del origen de datos (DSN) de un origen de datos ODBC existente. opciones Opcional. Un tipo de datos Variant que establece varias opciones para la base de datos, como se especifica en Valores. slolectura Opcional. Un valor de tipo de datos Variant (subtipo Boolean) que es True si desea abrir la base de datos con acceso de slo lectura o False (predeterminado) si desea abrir la base de datos con acceso de lectura/escritura. conexin Opcional. Un tipo de datos Variant (subtipo String) que especifica informacin variada sobre la conexin, incluyendo las contraseas. Valores Para los espacios de trabajo Microsoft Jet, puede utilizar los siguientes valores para el argumento opciones: Valor Descripcin True Abre la base de datos en modo exclusivo. False (Predeterminado) Abre la base de datos en modo compartido. Comentarios Cuando abre una base de datos, automticamente se agrega a la coleccin Databases. Estas son algunas consideraciones que debe aplicar cuando utilice nombrebasededatos: Si hace referencia a una base de datos que ya est abierta para acceso en modo exclusivo por otro usuario, se produce un error. Si no hace referencia a una base de datos existente, se produce un error. El argumento conexin se expresa en dos partes: el tipo de base de datos, seguido por punto y coma (;) y los argumentos opcionales. Primero debe proporcionar el tipo de base de datos, como "ODBC;" o "FoxPro 2.5;". A continuacin, os argumentos opcionales sin un orden concreto, separados por punto y coma. Uno de los parmetros puede ser la contrasea (si hay alguna asignada). Por ejemplo: "FoxPro 2.5; pwd=micontrasea" Para cerrar una base de datos y, de este modo, quitar el objeto Database de la coleccin Databases, utilice el mtodo Close en el objeto . Ejemplo mtodo OpenDatabase Es vlido el mismo ejemplo utilizado para los mtodos MoveFirst, MoveLast, MoveNext, MovePrevious.

Pgina 66 de 161

Curso Visual Basic 5.0

14.13- OpenRecordset (Objeto Database)


Aplicable a: Objeto Database. Crea un nuevo objeto Recordset y lo aade a la coleccin Recordsets. Sintaxis Set variable = objeto.OpenRecordset (origen, tipo, opciones, bloquearmodificaciones) La sintaxis del mtodo OpenRecordset consta de las siguientes partes. Argumento Descripcin variable Una variable de objeto que representa el objeto Recordset que desea abrir. Objeto Una variable de objeto que representa un objeto existente desde el que desea crear el objeto Recordset nuevo. Origen Un tipo de datos String que especifica el origen de los registros para el nuevo Recordset. El origen puede ser un nombre de tabla, un nombre de consulta o una instruccin SQL que devuelve registros. Tipo Opcional. Una constante que indica el tipo de objeto Recordset a abrir, como se especifica en Valores. Opciones Opcional. Una combinacin de constantes que especifican las caractersticas del objeto Recordset nuevo, como se especifica en Valores. Bloquearmodificaciones Opcional. Una constante que determina el bloqueo para el objeto Recordset, como se especifica en Valores. Valores Puede utilizar una de las siguientes constantes para el argumento tipo. Constante Descripcin dbOpenTable Abre un objeto Recordset de tipo Table (slo espacios de trabajo Microsoft Jet). dbOpenDynaset Abre un objeto Recordset de tipo Dynaset (actualizable). DbOpenSnapshot Abre un objeto Recordset de tipo Snapshot (slo lectura) DbOpenForwardOnly Abre un objeto Recordset de tipo Forward-only. Nota Si abre un objeto Recordset en un espacio de trabajo Microsoft Jet y no especifica un tipo, el mtodo OpenRecordset crea una objeto Recordset de tipo Table, si es posible. Si especifica una tabla vinculada o una consulta, el mtodo OpenRecordset crea un objeto Recordset.de tipo Dynaset. Puede utilizar una combinacin de las siguientes constantes para el argumento opciones: -DbAppendOnly: Permite al usuario anexar registros nuevos al objeto Recordset, pero impide la modificacin o eliminacin de registros existentes (slo objetos Recordset de tipo Dynaset de Microsoft Jet). -DbSeeChanges: Genera un error en tiempo de ejecucin si otro usuario est cambiando los datos que usted est modificando.(Slo en objetos Recordset de tipo Snapshot de Microsoft Jet). Esto es til en aplicaciones donde varios usuarios tiene acceso de lectura/escritura simultneo a los mismos datos. -DbDenyWrite: Previene que otros usuarios puedan modificar o agregar registros (slo objetos Recordset de Microsoft Jet). -DbDenyRead: Previene que otros usuarios puedan leer datos de una tabla (slo objetos Recordset de tipo Table de Microsoft Jet). -DbForwardOnly: Crea un objeto Recordset de tipo Forward-only (slo objetos Recordset de tipo Snapshot de Microsoft Jet). Se proporciona slo para compatibilidad con versiones anteriores y debe utilizar la constante dbOpenForwardOnly en el argumento tipo en vez de utilizar esta opcin. -DbReadOnly : Previene que otros usuarios puedan hacer cambios el objeto Recordset (slo Microsoft Jet). La constante dbReadOnly en el argumento bloquearmodificaciones reemplaza esta opcin, la cual se proporciona para compatibilidad con versiones anteriores. -dbInconsistent : Permite actualizaciones inconsistentes (slo objetos Recordset de tipo Dynaset de Microsoft Jet). Pgina 67 de 161

Curso Visual Basic 5.0 -DbConsistent : Permite slo actualizaciones consistentes (slo objetos Recordset de tipo Dynaset de Microsoft Jet). Nota Las constantes dbConsistent y dbInconsistent se excluyen mutuamente y el uso de ambos produce un error. Proporcionar un argumento bloquearmodificaciones cuando el argumento opciones utiliza la constante dbReadOnly tambin produce un error. Puede utilizar las siguientes constantes para el argumento bloquearmodificaciones:. -dbReadOnly: Previene que los usuarios hagan cambios al Recordset. Puede utilizar dbReadOnly en el argumento opciones o en el argumento bloquearmodificaciones, pero nunca en ambos. Si lo utiliza en ambos argumentos, se produce un error en tiempo de ejecucin. -DbPessimistic: Utiliza el bloqueo pesimista para determinar cmo se pueden hacer cambios al objeto Recordset en un entorno multiusuario. La pgina que contiene el registro que est modificando est bloqueada mientras utiliza el mtodo Edit (predeterminado en espacios de trabajo Microsoft Jet). -DbOptimistic: Utiliza el bloqueo optimista para determinar cmo se pueden hacer cambios al objeto Recordset en un entorno multiusuario. La pgina que contiene el registro que est modificando est bloqueada mientras se ejecuta el mtodo Update. Comentarios En un espacio de trabajo Microsoft Jet, si objeto hace referencia a un objeto QueryDef o Recordset de tipo Dynaset o Snapshot o si origen hace referencia a una instruccin SQL o un TableDef que representa una tabla adjunta, no podr utilizar dbOpenTable para el argumento tipo y si lo hace, se producir un error interceptable. Si objeto hace referencia a un Recordset de tipo Dynaset o Snapshot, el Recordset nuevo es del mismo tipo objeto. Si objeto hace referencia a un objeto Recordset de tipo Table, el tipo del objeto nuevo es un objeto Recordset de tipo Dynaset. No puede abrir objetos Recordset nuevos desde objetos Recordset de tipo Forward-only. Utilice la constante dbSeeChanges en espacio de trabajo Microsoft Jet si desea captar los cambios realizados mientras dos o ms usuarios estn modificando o eliminando el mismo registro. Por ejemplo, si dos usuarios empiezan a modificar el mismo registro, el primer usuario que ejecute el mtodo Update consigue realizar la operacin. Cuando el segundo usuario ejecute el mtodo Update ocurre un error de tiempo de ejecucin. Del mismo modo, si el segundo usuario intenta utilizar el mtodo Delete para eliminar un registro y el primer usuario ha cambiado ya el mismo, se produce un error de tiempo de ejecucin. En general, si al usuario se le presenta este error mientras est actualizando, su cdigo debe actualizar el contenido de los campos y leer los valores recientemente modificados. Si se produce el error durante el proceso de eliminacin, el cdigo puede mostrar al usuario los nuevos datos del registro junto con un mensaje que indica que se han modificado recientemente los datos. En este momento, el cdigo puede solicitar una confirmacin de que el usuario desea an eliminar el registro. Al cerrar un Recordset utilizando el mtodo Close, se eliminar automticamente de la coleccin Recordsets.

Ejemplo del mtodo OpenRecordset


Es vlido el mismo ejemplo utilizado para los mtodos MoveFirst, MoveLast, MoveNext, MovePrevious.

14.14- RemoveItem
Aplicable a: Control ComboBox, Control ListBox. Quita un elemento de un control ListBox o ComboBox. No acepta argumentos con nombre. Sintaxis objeto.RemoveItem ndice

Pgina 68 de 161

Curso Visual Basic 5.0 La sintaxis del mtodo RemoveItem consta de las siguientes partes: Parte Descripcin objeto Requerido. Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a. ndice Requerido. Un entero que especifica la posicin dentro del objeto del elemento o la fila que se va a quitar. Para los primeros elementos de los controles ListBox o ComboBox, ndice es 0. Comentarios Los controles ListBox o ComboBox que estn enlazados a un control Data no aceptan el mtodo RemoveItem. Ejemplo del mtodo RemoveItem Este ejemplo utiliza el mtodo RemoveItem para quitar entradas de un cuadro de lista. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un control ListBox llamado List1, y despus presione F5 y haga clic en el formulario. Private Sub Form_Click () Dim Entry, I, Msg ' Declara variables. Msg = "Haga clic en Aceptar para agregar 100 elementos al cuadro de lista." MsgBox Msg ' Muestra el mensaje. For I = 1 To 100 ' Cuenta de 1 a 100. Entry = "Entrada " & I ' Crea la entrada. List1.AddItem Entry ' Agrega la entrada. Next I Msg = "Haga clic en Aceptar para quitar una de cada dos entradas." MsgBox Msg ' Muestra el mensaje. For I = 1 To 50 ' Determina cmo quitar List1.RemoveItem I ' uno de cada dos Next I ' elementos. Msg = "Haga clic en Aceptar para quitar todos los elementos del cuadro de lista." MsgBox Msg ' Muestra el mensaje. List1.Clear ' Borra el cuadro de lista. End Sub

14.15- RepairDatabase (Objeto DBEngine)


Aplicable a: Objeto DBEngine. Intenta reparar una base de datos daada que accede a base de datos Microsoft Jet. Sintaxis DBEngine.RepairDatabase nombrebasededatos El argumento nombrebasededatos representa un tipo de datos String que es la ruta de acceso y el nombre de un archivo de base de datos del motor Microsoft Jet existente. Si se omite la ruta, slo se buscar en el directorio activo. Comentarios

Pgina 69 de 161

Curso Visual Basic 5.0 Debe cerrar la base de datos especificada por nombrebasededatos antes de repararla. En un entorno multiusuario, los dems usuarios no podrn tener abierto nombrebasededatos mientras usted la repara. Si no est cerrado nombrebasededatos o no est disponible para uso exclusivo, se producir un error. Este mtodo intenta reparar una base de datos marcada como posiblemente daada por una operacin de escritura incompleta. Esto puede ocurrir si una aplicacin que utiliza el motor de base de datos Microsoft Jet termina inesperadamente debido a un corte en el suministro elctrico o un problema de hardware. La base de datos no se marcar como posiblemente daada si utiliza el mtodo Close o si sale de la aplicacin de una manera normal. El mtodo RepairDatabase tambin intenta validar todas las tablas del sistema y todos los ndices. Se descartan los datos que no se puedan reparar. Si no se puede reparar la base de datos, se produce un error interceptable. Cuando intente abrir o compactar una base de datos daada, normalmente se producir un error interceptable. En algunas situaciones, sin embargo, puede que no se detecte una base de datos daada y no se produzca ningn error. Es conveniente ofrecer a los usuarios un mtodo de ejecutar el mtodo RepairDatabase en su aplicacin, si la base de datos se comporta de manera impredecible. Algunos tipos de bases de datos se pueden daar si un usuario termina una aplicacin sin cerrar los objetos Database o Recordset y el motor de base de datos Microsoft Jet, Microsoft Windows no tienen la oportunidad de vaciar las memorias de cach de datos. Para evitar que se daen las bases de datos, establezca procedimientos para cerrar las aplicaciones y apagar los sistemas que aseguren que todas las pginas de la memoria cach estn guardadas en la base de datos. En algunos casos, puede que sean necesarias fuentes de alimentacin ininterrumpida para evitar prdidas de datos por las fluctuaciones del suministro elctrico. Nota Despus de reparar una base de datos, tambin es conveniente compactar la misma utilizando el mtodo CompactDatabase para defragmentar el archivo y recuperar espacio en disco.

Ejemplo del mtodo RepairDatabase


Este ejemplo intenta reparar la base de datos llamada Neptuno.mdb. Sub RepairDatabaseX() Dim errBucle As Error If MsgBox("Desea reparar la base de datos Neptuno?", vbYesNo) = vbYes Then DBEngine.RepairDatabase "Neptuno.mdb" MsgBox "Fin del procedimiento reparar!" End If End Sub

14.16- SetFocus
Aplicable a Control CheckBox, Control ComboBox, Control CommandButton, Objeto Form Controles HScrollBar y VScrollBar, Control ListBoxControl OptionButton, Control PictureBox, Control TextBox. Mueve el enfoque al control o formulario especificado.

Sintaxis
objeto.SetFocus El marcador de posicin objeto representa una expresin de objeto que da como resultado un objeto de la lista Aplicable a. Comentarios

Pgina 70 de 161

Curso Visual Basic 5.0 El objeto debe ser un objeto Form o un control que pueda recibir el enfoque. Despus de invocar el mtodo SetFocus, cualquier entrada del usuario se dirige al formulario o al control especificado. El enfoque slo se puede mover a un formulario o un control visible. Como un formulario y los controles de un formulario no son visibles hasta que el evento Load del formulario ha terminado, no puede usar en su propio evento Load el mtodo SetFocus para mover el enfoque al formulario que se est cargando a menos que use primero el mtodo Show para mostrar el formulario antes de que el procedimiento de evento Form_Load haya terminado. Tampoco puede mover el enfoque a un formulario o un control si su propiedad Enabled es False. Si la propiedad Enabled se ha establecido a False en tiempo de diseo, primero debe establecerla a True antes de poder recibir el enfoque mediante el mtodo SetFocus.

Ejemplo del mtodo SetFocus


Al hacer click en un botn de comando, setea el foco a la caja de texto txtCodigo Private Sub cmd1_Click() TxtCodigo.Setfocus End Sub

14.17- Show
Aplicable a: Objeto Form. Sintaxis objeto.Show estilo, formulario_propietario La sintaxis del mtodo Show consta de las siguientes partes: Parte Descripcin objeto Opcional. Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a. Si se omite objeto, se supone que objeto es el formulario asociado con el mdulo de formulario activo. estilo Opcional. Un entero que determina si el formulario es modal o no modal. Si estilo es 0, el formulario es no modal; si estilo es 1, el formulario es modal. formulario_propietario Opcional. Una expresin de cadena que especifica el componente que "posee" el formulario que se muestra. Para los formularios estndar de Visual Basic, utilice la palabra clave Me. Comentarios Si el formulario especificado no est cargado cuando se invoca el mtodo Show, Visual Basic lo carga automticamente. Cuando Show presenta un formulario no modal, contina con la ejecucin del cdigo que haya a continuacin. Cuando Show presenta un formulario modal, el cdigo que hay a continuacin no se ejecuta hasta que el formulario se oculta o se descarga. Cuando Show presenta un formulario modal, no hay entradas (de teclado o del mouse) excepto sobre los objetos del formulario modal. El programa debe ocultar o descargar los formularios modales (normalmente como respuesta a alguna accin del usuario) antes de que pueda producirse la entrada en otro formulario. Aunque los dems formularios de la aplicacin estn deshabilitados cuando se presenta un formulario modal, los de las dems aplicaciones no lo estn. El formulario inicial de una aplicacin se muestra automticamente despus de invocar su evento Load. Ejemplo del mtodo Show

Pgina 71 de 161

Curso Visual Basic 5.0 Este ejemplo utiliza el mtodo Show para mostrar un formulario oculto. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario y despus presione F5 y haga clic en el formulario. Private Sub Form_Click () Dim Msg ' Declara variable. Hide ' Oculta el formulario. Msg = "Haga clic en Aceptar para que vuelva a aparecer el formulario." MsgBox Msg ' Muestra el mensaje. Show ' Muestra de nuevo el formulario. End Sub

14.18- Update (Objeto recordset)


Aplicable a Objeto Recordset. Guarda el contenido del bfer de copia en un objeto Recordset de tipo Dynaset o Table especificado.

Sintaxis
recordset.Update (tipo, obligar ) La sintaxis del mtodo Update tiene las siguientes partes. Parte Descripcin Recordset Una variable de objeto que representa un objeto Recordset abierto que se puede actualizar. Tipo Opcional. Una constante que indica el tipo de actualizacin, como se especifica en Valores (slo espacios de trabajo ODBCDirect). Obligar Opcional. Un valor de tipo Boolean que indica si se pueden o no obligar los cambios en la base de datos, sin tener en cuenta si los datos base se han cambiado por otro usuario desde la llamada al mtodo AddNew, Delete o Edit. Si es True, los cambios se fuerzan y los cambios hechos por otros usuarios se sobrescriben. Si es False (predeterminado), los cambios hechos por otros usuarios mientras la actualizacin est pendiente provocarn que falle la actualizacin para aquellos cambios conflictivos.

Comentarios
Utilice Update para guardar el registro activo y los cambios que haya efectuado en l. Precaucin Los cambios realizados en el registro activo se perdern si: Utiliza el mtodo Edit o AddNew y a continuacin, pasa a otro registro sin actualizarlo previamente mediante Update. Utiliza Edit o AddNew y, a continuacin, vuelve a usar Edit o AddNew sin utilizar previamente Update. Cierra el conjunto de registros a los que hace referencia recordset sin utilizar primero Update. Cancela la operacin Edit utilizando el mtodo CancelUpdate. Para modificar un registro, utilice el mtodo Edit para copiar el contenido del registro activo al bfer de copia. Si no utiliza Edit en primer lugar, se producir un error cuando utilice Update o intente cambiar el valor de un campo. En un espacio de trabajo Microsoft Jet, cuando el objeto Recordset de la propiedad LockEdits establecida como True (bloqueo pesimista) en un entorno multiusuario, el registro permanecer bloqueado desde el momento en que se utiliza Edit hasta que se ejecuta el mtodo Update o se cancele la edicin. Si la configuracin de la propiedad LockEdits es False (bloqueo optimista), el registro se bloquea y se compara con el registro previamente modificado justo antes de se actualizado en la base de datos. Si ha cambiado el registro desde que utiliz el mtodo Edit, la operacin Update falla..

Pgina 72 de 161

Curso Visual Basic 5.0 Para que la operacin Update contine con los cambios, utilice de nuevo el mtodo Update. Para volver al registro, tal como lo cambi el otro usuario, actualice el registro activo usando los mtodos Move 0. Nota Para agregar, modificar o eliminar un registro, debe haber un ndice nico en el registro del origen de datos base. Se obtiene no lo hay, se producir un error "Permiso denegado" en la llamada al mtodo AddNew, Delete o Edit en un espacio de trabajo Microsoft Jet, se producir un error "Argumento no vlido" en la llamada al mtodo Update en un espacio de trabajo ODBCDirect. Ejemplo del mtodo Update Es vlido el ejemplo del mtodo AddNew.

15- Propiedades ms importantes de los controles estndares. 15.1- ActiveControl


Aplicable a: Objeto Form. Devuelve el control que tiene el enfoque. No est disponible en tiempo de diseo y es de slo lectura en tiempo de ejecucin. Sintaxis objeto.ActiveControl El marcador de posicin objeto representa una expresin de objeto que da como resultado un objeto de la lista Aplicable a. Comentarios Puede utilizar ActiveControl para tener acceso a las propiedades de un control o para invocar sus mtodos. Por ejemplo, Screen.ActiveControl.Tag = "0". Si todos los controles del formulario son invisibles o estn desactivados, se producir un error en tiempo de ejecucin. Cada formulario puede tener un control activo (Form.ActiveControl), independientemente de que el formulario est activo o no. Puede escribir cdigo que manipule el control activo de cada formulario de la aplicacin, incluso cuando el formulario no sea el activo. Ejemplo de la propiedad ActiveControl En este ejemplo se muestra el texto del control activo. Para probarlo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga controles TextBox, Label y CommandButton, y luego presione F5 y haga clic en el formulario. Private Sub Form_Click () If TypeOf Screen.ActiveControl Is TextBox Then Label1.Caption = Screen.ActiveControl.Text Else Label1.Caption = "Botn: " + Screen.ActiveControl.Caption End If End Sub

Pgina 73 de 161

Curso Visual Basic 5.0

15.2- BackColor, ForeColor


Aplicable a: Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form, Control Frame, Control Label, Control ListBox, Control OptionButton, Control PictureBox, Control Shape, Control TextBox. BackColor: devuelve o establece el color de fondo de un objeto. ForeColor: devuelve o establece el color de primer plano utilizado para mostrar texto y grficos en un objeto. Sintaxis objeto.BackColor [= color] objeto.ForeColor [= color] La sintaxis de las propiedades BackColor y ForeColor consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. color Un valor o una constante que determina el color de fondo o de primer plano del objeto, segn se indica en Valores. Valores Visual Basic utiliza el esquema de colores rojo-verde-azul (RGB) del entorno operativo Microsoft Windows. Los valores admitidos para color son: Para todos los formularios y controles, los valores predeterminados en tiempo de diseo son: BackColor: el color predeterminado del sistema especificado por la constante vbWindowBackground. ForeColor: el color predeterminado del sistema especificado por la constante vbWindowText. Comentarios En los controles Label y Shape, la propiedad BackColor se pasa por alto cuando el valor de la propiedad BackStyle es 0 (transparente). Si establece la propiedad BackColor de un objeto Form o de un control PictureBox, se borra todo el texto y todos los grficos, incluidos los grficos persistentes. Al establecer la propiedad ForeColor, los grficos o el resultado impreso no se ven afectados. En el resto de los controles, el color de la pantalla cambia inmediatamente. El intervalo vlido para un color RGB normal va de 0 a 16.777.215 (&HFFFFFF). El byte ms alto de los nmeros de este intervalo es 0, y los 3 ms bajos, del menos significativo al ms significativo, determinan la intensidad de rojo, verde y azul, respectivamente. Cada uno de los componentes rojo, verde y azul se representa con un nmero entre 0 y 255 (&HFF). Si el byte ms alto no es 0, Visual Basic utiliza los colores del sistema, definidos por el usuario en el Panel de control o por las constantes que se encuentran en la biblioteca de objetos de Visual Basic (VB) en el Examinador de objetos. Para mostrar texto en el entorno operativo Windows, tanto el color del texto como el de fondo deben ser slidos. Si no aparece el color que ha seleccionado para el texto o para el fondo, puede que uno de ellos sea de medios tonos; es decir, puede que est formado por pxeles de hasta tres colores distintos. Si elige un color de medios tonos para el texto o el fondo, se utilizar el color slido ms prximo. Ejemplo de las propiedades BackColor y ForeColor En este ejemplo se restablecen aleatoriamente los colores de primer plano y de fondo dos veces por segundo en un formulario y en un control PictureBox. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un control PictureBox y un control Timer control, y luego presione F5. Private Sub Form_Load () Timer1.Interval = 500 End Sub Private Sub Timer1_Timer () BackColor = QBColor(Rnd * 15) Pgina 74 de 161

Curso Visual Basic 5.0 ForeColor = QBColor(Rnd * 10) Picture1.BackColor = QBColor(Rnd * 15) Picture1.ForeColor = QBColor(Rnd * 10) End Sub

15.3- BackStyle
Aplicable a Control Label, Control Shape. Devuelve o establece un valor que indica si un control Label o el fondo de un color Shape es transparente u opaco. Sintaxis objeto.BackStyle [= nmero] La sintaxis de la propiedad BackStyle consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. nmero Una expresin numrica que especifica la transparencia, segn se indica en Valores. Valores Los valores admitidos para nmero son: Valor Descripcin 0 Transparente: el color de fondo y los grficos son visibles a travs del control. 1 (Predeterminado) Opaco: el control se llena con el valor de su propiedad BackColor, ocultando los colores o grficos que haya tras l. Comentarios Puede utilizar la propiedad BackStyle para crear controles transparentes cuando use un color de fondo en un objeto Form o en un control PictureBox, o cuando desee colocar un control sobre un grfico. Utilice un control opaco cuando quiera que destaque. La propiedad BackColor de un control se pasa por alto cuando BackStyle = 0.

15.4-BOF. EOF (Objeto Recordset)


Aplicable a Objeto Recordset. BOF: indica si la posicin del registro activo es anterior al primer registro de un objeto Recordset. EOF: indica si la posicin del registro activo es posterior al ltimo registro de un objeto Recordset.

Valores devueltos Los valores que se obtienen para las propiedades BOF y EOF son un tipo de datos Boolean. La propiedad BOF devuelve el valor True, si la posicin del registro activo es anterior al primer registro y False si el registro activo est en el registro activo o en el posterior. La propiedad EOF devuelve el valor True, si la posicin del registro activo es posterior al ltimo registro y False si el registro activo est en el ltimo registro o antes de ste. Comentarios Pgina 75 de 161

Curso Visual Basic 5.0

Puede utilizar las propiedades BOF y EOF para determinar si un objeto Recordset contiene registros o si se han sobrepasado los lmites de un objeto Recordset al ir pasando de un registro a otro. La ubicacin del puntero de l registro activo determina los valores devueltos de BOF y EOF. Si BOF o EOF tienen el valor True, no existe registro activo. Si abre un objeto Recordset que no contiene ningn registro, tanto BOF como EOF tendrn el valor True y el valor de la propiedad RecordCount ser 0. Cuando se abre un objeto Recordset que contiene al menos un registro, el primer registro pasa a ser el registro activo y tanto BOF como EOF tendrn el valor False; que conservar hasta que se sobrepase el principio o el final del objeto Recordset, mediante los mtodos MovePrevious o MoveNext respectivamente. Cuando se sobrepasan el principio o el final del conjunto de registros, no hay registro activo o no existe ningn registro. Si elimina el ltimo registro que queda en el objeto Recordset, tanto BOF como EOF podrn seguir teniendo el valor False hasta que intente volver a situar el registro activo. Si utiliza el mtodo MoveLast en un objeto Recordset que contiene registros, el ltimo registro pasar a ser el registro activo. Si a continuacin utiliza el mtodo MoveNext, el registro activo dejar de ser vlido y EOF pasar a tener el valor True. Por el contrario, si utiliza el mtodo MoveFirst en un objeto Recordset que contiene registros, el primer registro pasa a ser el registro activo. Si a continuacin utiliza el mtodo MovePrevious, el registro activo dejar de ser vlido y BOF asumir el valor True. Normalmente, al trabajar con todos los registros de un objeto Recordset, el cdigo ir pasando de un registro a otro mediante MoveNext, hasta que la propiedad EOF presente el valor True. Si utiliza MoveNext cuando EOF tiene el valor True o MovePrevious cuando BOF tiene el valor True, se producir un error. Si se permite usar un mtodo Move, ello no implica necesariamente que el mtodo vaya a situar de forma correcta un registro. Simplemente indica que se permite intentar utilizar el mtodo de movimiento en cuestin, sin que se produzca ningn error. El estado de los indicadores de BOF y EOF puede cambiar como resultado de intentar la operacin Move. El mtodo OpenRecordset invoca internamente MoveFirst. Por tanto, un OpenRecordset en un conjunto de registros vaco provoca que tanto BOF como EOF tengan el valor True. (Consulte la tabla que sigue para comprobar el comportamiento de un mtodo MoveFirst que ha fallado). Todos los mtodos Move que sitan sin problemas un registro borran (con valor False) tanto BOF como EOF. En un espacio de trabajo Microsoft Jet, si agrega un registro a un objeto Recordset vaco, BOF pasar a False, pero EOF permanecer en True, que indica que la posicin actual es al final del objeto Recordset. Ningn mtodo Delete, incluso si se elimina el nico registro que quede en un conjunto de registros, modificar el valor de BOF ni el de EOF. Ejemplo de las propiedades BOF y EOF Como ejemplo de la propiedad EOF sirve el ejemplo de mtodos MoveFirst, MoveLast, MoveNext, MovePrevious. Como ejemplo de la propiedad BOF sirve el ejemplo del mtodo Edit.

15.5-BOFAction, EOFAction
Aplicable a: Control Data. Devuelve o establece un valor que indica qu accin lleva a cabo el control Data cuando las propiedades BOF o EOF son True. Sintaxis objeto.BOFAction [= entero] objeto.EOFAction [= entero] La sintaxis de las propiedades BOFAction y EOFAction consta de estas partes: Parte Descripcin objeto Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a Pgina 76 de 161

Curso Visual Basic 5.0 entero Un valor de tipo Integer que especifica una accin, como se describe en Valores Valores Para la propiedad BOFAction, los valores de entero son los siguientes: Configuracin Valor Descripcin VbBOFActionMoveFirst 0 MoveFirst (Predeterminado): mantiene el primer registro como registro actual. vbBOFActionBOF 1 BOF: al desplazarse ms all del comienzo de un Recordset se desencadena el evento Validate del control Data del primer registro. En este punto se desactiva el botn Mover anterior del control Data. Para la propiedad EOFAction, los valores de entero son los siguientes: Configuracin Valor Descripcin vbEOFActionMoveLast 0 MoveLast (Predeterminado): mantiene el ltimo registro como registro actual. vbEOFActionEOF 1 EOF: al desplazarse ms all del final de un Recordset se desencadena el evento Validation del control Data del ltimo registro. En este momento se desactiva el botn Mover siguiente del control Data. vbEOFActionAddNew 2 AddNew: al desplazarse ms all del ltimo registro se desencadena el evento Validation del control Data en el registro actual, seguido de un AddNew automtico. Comentarios Estas constantes se enumeran en la biblioteca de objetos de Visual Basic (VB) en el Examinador de objetos. Si establece la propiedad EOFAction a vbEOFActionAddNew, cuando el usuario mueva el puntero del registro actual a EOF usando el control Data, el registro actual se situar en un nuevo registro del bfer de copia. En este punto podr modificar el registro recin agregado. Si realiza cambios en el nuevo registro y el usuario mueve posteriormente el puntero del registro actual usando el control Data, el registro se aadir automticamente al Recordset. Si no realiza cambios en este nuevo registro y cambia de posicin el registro actual a otro registro, el nuevo registro se descartar. Si utiliza el control Data para situar otro registro mientras se encuentra sobre este nuevo registro, se crear otro registro nuevo. Cuando utiliza cdigo para manipular objetos Recordset creados con el control Data, la propiedad EOFAction no surte ningn efecto; slo es efectiva cuando se manipula el control Data con el mouse. Tipo de datos Integer

15.6-BorderStyle
Aplicable a: Objeto Form, Control Frame, Control Image, Control Label, Control Line, Control PictureBox, Control Shape, Control TextBox. Devuelve o establece un valor que indica cul es el estilo de los bordes del control. La propiedad BorderStyle es de lectura y escritura durante el diseo del control y de slo lectura en tiempo de ejecucin. Sintaxis objeto.BorderStyle [= enum] La sintaxis de la propiedad BorderStyle consta de las partes siguientes: Pgina 77 de 161

Curso Visual Basic 5.0 Elemento Descripcin objeto Expresin de objeto cuyo resultado es un objeto de la lista Aplicable a. enum Valor enumerado que determina el estilo de los bordes del control, como se describe en Valores.

Valores
Los valores de enum son: Valor Descripcin 0-None Sin bordes. ste es el valor predeterminado. 1-Fixed Single Se dibuja una nica lnea alrededor del control.

15.7-Caption
Aplicable a: Control CheckBox, Control CommandButton, Control Data, Objeto Form, Control Frame, Control Label, Control Menu, Control OptionButton. Formulario: determina el texto que se muestra en la barra de ttulo del objeto Form. Cuando el formulario est minimizado, este texto se muestra debajo del icono del formulario. Control: determina el texto que se muestra en un control o junto a ste. Objeto MenuLine: determina el texto que se muestra para un control Menu o un objeto de la coleccin MenuItems. Sintaxis objeto.Caption [= cadena] La sintaxis de la propiedad Caption consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. Si se omite objeto, se supondr que el formulario asociado al mdulo de formulario activo es objeto. cadena Una expresin de cadena que da como resultado el texto que se muestra como ttulo. Comentarios Cuando crea un nuevo objeto, su ttulo predeterminado es el valor predeterminado de la propiedad Name. Este ttulo predeterminado incluye el nombre de objeto y un entero, como Comando1 o Formulario1. Para obtener una etiqueta ms descriptiva, establezca la propiedad Caption. Puede utilizar la propiedad Caption para asignar una tecla de acceso a un control. En el ttulo, incluya un signo & inmediatamente delante del carcter que desea designar como tecla de acceso. El carcter estar subrayado. Presione la tecla ALT y el carcter subrayado para mover el enfoque a ese control. Si desea incluir un signo & en un ttulo sin crear una tecla de acceso, incluya dos signos (&&). En el ttulo slo aparecer un smbolo y no habr caracteres subrayados. Para un control Label, el tamao del ttulo es ilimitado. Para los formularios y todos los dems controles que tienen ttulos, el lmite es de 255 caracteres. Para mostrar el ttulo de un formulario, establezca la propiedad BorderStyle a Fixed Single (1 o vbFixedSingle), Sizable (2 o vbSizable) o Fixed Dialog (3 o vbFixedDialog). Si el ttulo es demasiado largo para la barra de ttulo, se recortar. Sugerencia Para una etiqueta, establezca la propiedad AutoSize a True con el fin de ajustar automticamente el tamao del control de modo que quepa el ttulo.

Ejemplo de la propiedad Caption

Pgina 78 de 161

Curso Visual Basic 5.0 Este ejemplo cambia la propiedad Caption de un control CommandButton cada vez que el usuario hace clic en el botn. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un CommandButton llamado Command1, y despus presione F5 y haga clic en el botn. Private Sub Command1_Click () ' Comprueba el ttulo y lo cambia. If Command1.Caption = "Ha hecho clic" Then Command1.Caption = "Aceptar" Else Command1.Caption = "Ha hecho clic" End If End Sub

15.8-DatabaseName
Aplicable a Control Data. Devuelve o establece el nombre y la ubicacin del origen de datos de un control Data. Sintaxis objeto.DatabaseName [ = nombre_ruta ] La sintaxis de la propiedad DatabaseName consta de estas partes: Parte Descripcin objeto Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a. nombre_ruta Una expresin de cadena que indica la ubicacin de los archivos de base de datos. Comentarios Si el sistema de red lo admite, el argumento nombre_ruta puede ser un nombre completo de ruta de acceso de red como \\Miserv\Micomp\Basedato.mdb. El tipo de base de datos est indicado por el archivo o el directorio al que seala nombre_ruta, de la siguiente manera: nombre_ruta Seala a... Archivo .mdb Directorio con archivos .dbf Directorio con archivos .xls Directorio con archivos .dbf Directorio con archivos .wk1, .wk3, .wk4 o .wks Directorio con archivos .pdx Tipo de base de datos Base de datos de Microsoft Access Base de datos de dBASE Base de datos de Microsoft Excel Base de datos de FoxPro Base de datos de Lotus Base de datos de Paradox

Si cambia la propiedad DatabaseName despus de abrir el objeto Database del control, deber utilizar el mtodo Refresh para abrir la nueva base de datos. Nota Para obtener un mejor rendimiento al tener acceso a bases de datos externas, se recomienda adjuntar tablas de bases de datos externas a una base de datos del motor Microsoft Jet (.mdb) y utilizar el nombre de esta base de datos en la propiedad DatabaseName. Tipo de datos

String
Ejemplo de la propiedad DatabaseName Pgina 79 de 161

Curso Visual Basic 5.0

Este ejemplo examina la propiedad Database de un control Data e imprime el nombre de cada Table en la ventana Depuracin. Sub PrintTableNames () Dim Td As TableDef ' Define el archivo de la base de datos. Data1.DatabaseName = "BIBLIO.MDB" Data1.Refresh ' Abre la base de datos. ' Lee e imprime el nombre de cada tabla de la base de datos. For Each Td in Data1.Database.TableDefs Debug.Print Td.Name Next End Sub

15.9-DataChanged
Aplicable a: Control CheckBox, Control ComboBox, Control Image, Control Label, Control ListBox, Control PictureBox, Control TextBox. Devuelve o establece un valor que indica que algn proceso distinto de la recuperacin de datos del registro actual ha cambiado los datos del control enlazado. No est disponible en tiempo de diseo.

Sintaxis
objeto.DataChanged [= valor] La sintaxis de la propiedad DataChanged consta de estas partes: Parte Descripcin objeto Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a. valor Una expresin booleana que indica si los datos han cambiado, como se describe en Valores. Valores Los valores admitidos para valor son los siguientes: Valor Descripcin True Los datos que hay actualmente en el control no son iguales que los del registro actual. False (Predeterminado) Los datos que hay actualmente en el control (si los hay) son iguales que los del registro actual. Comentarios Cuando un control Data se mueve de un registro a otro, pasa datos desde los campos del registro actual a controles enlazados al campo especfico o todo el registro. Cuando se muestran datos en los controles enlazados, la propiedad DataChanged se establece a False. Si el usuario o alguna otra operacin cambia el valor del control enlazado, la propiedad DataChanged se establece a True. Si pasa a otro registro la propiedad DataChanged no se ve afectada. Cuando el control Data comienza a pasar a otro registro, se produce el evento Validate. Si DataChanged es True para algn control enlazado, el control Data invoca automticamente los mtodos Edit y Update para enviar los cambios a la base de datos. Si no desea guardar en la base de datos los cambios de un control enlazado, puede establecer la propiedad DataChanged a False en el evento Validate. Inspeccione el valor de la propiedad DataChanged en el cdigo para el evento Change de un control con el fin de evitar eventos en cascada. Esto se aplica a controles enlazados y no enlazados.

Pgina 80 de 161

Curso Visual Basic 5.0

Tipo de datos
Integer (Boolean)

15.10-DataField
Aplicable a: Control CheckBox, Control ComboBox, Control Image, Control Label, Control ListBox, Control PictureBox, Control TextBox. Devuelve o establece un valor que enlaza un control a un campo del registro actual. Sintaxis objeto.DataField [= valor] La sintaxis de la propiedad DataField consta de estas partes: Parte Descripcin objeto Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a. valor Una expresin de cadena que se evala como el nombre de uno de los campos del objeto Recordset especificado por las propiedades RecordSource y DatabaseName de un control Data. Comentarios Los controles enlazados proporcionan acceso a datos especficos de la base de datos. Los controles enlazados que administran un nico campo suelen mostrar el valor un campo especfico del registro actual. La propiedad DataSource de un control enlazado especifica un control Data vlido y la propiedad DataField especifica un nombre de campo vlido en el objeto Recordset creado por el control Data. Juntas, estas propiedades especifican qu datos aparecen en el control enlazado. Cuando utiliza un objeto QueryDef o una instruccin SQL que devuelve los resultados de una expresin, el motor de base de datos Microsoft Jet genera automticamente el nombre de campo . Por ejemplo, cuando codifica una funcin agregada de SQL o una expresin en su consulta SQL, a menos que asigne un alias a los campos agregados mediante una clusula AS, los nombres de campo se generarn automticamente. El nombre del campo de expresin suele ser Expr1 seguido de un nmero de tres dgitos que comienza por 000. La primera expresin devuelta tendra el nombre Expr1000. Se recomienda codificar las consultas SQL para asignar alias a columnas de expresin como se muestra a continuacin: Data1.RecordSource = "Select AVG(Sales) " _ & " AS AverageSales From SalesTable" Text1.DataField = "AverageSales" Data1.Refresh Nota Compruebe que el valor de la propiedad DataField es vlido para cada control enlazado. Si cambia el valor de la propiedad RecordSource de un control Data y a continuacin utiliza Refresh, el objeto Recordset identificar el nuevo objeto. Esto puede invalidar los valores de DataField de controles enlazados y generar un error interceptable. Tipo de datos String

15.11-DataSource
Aplicable a: Pgina 81 de 161

Curso Visual Basic 5.0 Control CheckBox, Control ComboBox, Control Image, Control Label, Control ListBox, Control PictureBox. Establece un valor que especifica el control Data a travs del cual el control actual se enlaza a una base de datos. No est disponible en tiempo de ejecucin.

Comentarios
Para enlazar un control a un campo de una base de datos en tiempo de ejecucin, debe especificar un control Data en la propiedad DataSource en tiempo de diseo desde la ventana Propiedades. Para completar la conexin con un campo del objeto Recordset administrado por el control Data, tambin deber proporcionar el nombre de un objeto Field en la propiedad DataField. A diferencia de la propiedad DataField, el valor de la propiedad DataSource no est disponible en tiempo de ejecucin. Tipo de datos String

15.12-Enabled
Aplicable a: Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form, Control Frame, Controles HScrollBar y VScrollBar, Control Image, Control Label, Control ListBox, Control Menu, Control OptionButton, Control PictureBox, Control TextBox, Control Timer. Devuelve o establece un valor que determina si un formulario o un control puede responder a eventos generados por el usuario. Sintaxis objeto.Enabled [= booleano] La sintaxis de la propiedad Enabled consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. Si se omite objeto, se supondr que el formulario asociado al mdulo del formulario activo es objeto. Booleano Una expresin de tipo Boolean que especifica si objeto puede responder a eventos generados por el usuario. Valores Los valores admitidos para booleano son: Valor Descripcin True (Predeterminado) Permite que objeto responda a eventos. False Impide que objeto responda a eventos. Comentarios La propiedad Enabled permite activar o desactivar formularios y controles en tiempo de ejecucin. Por ejemplo, puede desactivar objetos que no se aplican al estado actual de la aplicacin. Tambin puede desactivar un control empleado fundamentalmente con fines de presentacin, como un cuadro de texto que proporciona informacin de slo lectura. Si desactiva un control Timer estableciendo Enabled a False cancelar la cuenta atrs establecida por la propiedad Interval del control.

Ejemplo de la propiedad Enabled


Pgina 82 de 161

Curso Visual Basic 5.0 Este ejemplo habilita un control CommandButton siempre que un control TextBox contenga texto. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario con controles CommandButton y TextBox, y despus presione F5 y escriba algo en el cuadro de texto. Private Sub Form_Load () Text1.Text = "" ' Borra el cuadro de texto. Command1.Caption = "Guardar" ' Coloca el ttulo del botn. End Sub Private Sub Text1_Change () If Text1.Text = "" Then ' Mira si el cuadro de texto est vaco. Command1.Enabled = False ' Deshabilita el botn. Else Command1.Enabled = True ' Habilita el botn. End If End Sub

15.13-FontBold, FontItalic, FontStrikethru, FontUnderline.


Aplicable a: Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form, Control Frame, Control Label, Control ListBox, Control OptionButton, Control PictureBox, Control TextBox. Devuelve o establece los estilos de fuente en los siguientes formatos: Negrita, Cursiva, Tachado y Subrayado. Sintaxis objeto.FontBold [= booleano] objeto.FontItalic [= booleano] objeto.FontStrikethru [= booleano] objeto.FontUnderline [=booleano] La sintaxis de las propiedades FontBold, FontItalic, FontStrikethru y FontUnderline consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. Booleano Una expresin booleana que especifica el estilo de fuente, segn se indica en Valores. Valores Los valores admitidos para booleano son: Valor Descripcin True (Predeterminado para FontBold). Habilita el formato en el estilo correspondiente. False (Predeterminado para FontItalic, FontStrikethru y FontUnderline) Deshabilita el formato en el estilo correspondiente. Comentarios Utilice estas propiedades de fuente para dar formato al texto, ya sea en tiempo de diseo mediante la ventana Propiedades o en tiempo de ejecucin a travs de cdigo. En el caso de los controles PictureBox y los objetos Form y Printer, establecer estas propiedades no afecta a los grficos ni al texto ya dibujados en el control u objeto. Para todos los dems controles, las modificaciones en la fuente se hacen efectivas en la pantalla inmediatamente. Nota Las fuentes disponibles en Visual Basic varan dependiendo de la configuracin del sistema y de los dispositivos de presentacin e impresin. En las propiedades relacionadas con las fuentes slo pueden establecerse valores para los que existan fuentes en el sistema. En general, deber modificar la propiedad FontName antes de establecer los atributos de tamao y estilo con las propiedades FontSize, FontBold, FontItalic, FontStrikethru y FontUnderline. Sin embargo, cuando especifique un Pgina 83 de 161

Curso Visual Basic 5.0 tamao inferior a 8 puntos para una fuente TrueType, debe establecer el tamao en puntos con la propiedad FontSize, despus especificar la propiedad FontName y despus establecer de nuevo el tamao con FontSize. El entorno operativo Microsoft Windows utiliza una fuente distinta para las fuentes TrueType con un tamao inferior a 8 puntos. Ejemplo de las propiedades FontBold, FontItalic, FontStrikethru y FontUnderline En este ejemplo se escribe texto en un formulario con una de entre dos combinaciones de estilos con cada clic del mouse (ratn). Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario, presione F5 y haga clic en el formulario. Private Sub Form_Click () FontStrikethru = Not FontStrikethru FontItalic = Not FontItalic Print "Ahora es el momento!" End Sub ' Alternar el tachado. ' Alternar el estilo de la fuente. ' Imprimir texto.

15.14-FontName
Aplicable a: Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form, Control Frame, Control Label, Control ListBox, Control OptionButton, Control PictureBox, Control TextBox. Devuelve o establece la fuente utilizada para mostrar texto en un control o en una operacin de dibujo o impresin en tiempo de ejecucin. Sintaxis objeto.FontName [= fuente] La sintaxis de la propiedad FontName consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. fuente Una expresin de cadena que especifica el nombre de la fuente que se va a utilizar. Comentarios El valor predeterminado de esta propiedad lo determina el sistema. Las fuentes disponibles en Visual Basic varan dependiendo de la configuracin del sistema y de los dispositivos de presentacin e impresin. En las propiedades relacionadas con fuentes slo pueden establecerse valores para los que exista una fuente. En general, deber modificar FontName antes de establecer los atributos de tamao y estilo con las propiedades FontSize, FontBold, FontItalic, FontStrikethru y FontUnderline. Ejemplo de la propiedad FontName En este ejemplo se escribe el nombre de cada fuente usando como fuente ella misma. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario. Presione F5 para ejecutar el programa y luego haga clic en el formulario. Cada vez que haga clic en el formulario aparecer el nombre de la fuente. Private Sub Form_Click () Static I ' Declarar variables. Dim OldFont OldFont = FontName ' Conservar la fuente original. FontName = Screen.Fonts(I) ' Cambiar a una nueva fuente. Print Screen.Fonts(I) ' Imprimir el nombre de la fuente. I = I + 1 ' Incrementar el contador. If I = FontCount Then I = 0 ' Comenzar. FontName = OldFont ' Restaurar la fuente original. Pgina 84 de 161

Curso Visual Basic 5.0 End Sub

15.15-FontSize
Aplicable a: Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form, Control Frame, Control Label, Control ListBox, Control OptionButton, Control PictureBox, Control TextBox. Devuelve o establece el tamao de la fuente que se va a utilizar para el texto mostrado en un control o en una operacin de dibujo. Sintaxis objeto.FontSize [= puntos] La sintaxis de la propiedad FontSize consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. puntos Una expresin numrica que especifica el tamao de fuente que se va a utilizar, en puntos.

Comentarios
Utilice esta propiedad para dar al texto el tamao que desee. El valor predeterminado est determinado por el sistema. Para cambiar este valor, especifique el nuevo tamao de la fuente en puntos. El valor mximo de FontSize es 2160 puntos. Nota Las fuentes disponibles en Visual Basic varan dependiendo de la configuracin del sistema y de los dispositivos de presentacin e impresin. En las propiedades relacionadas con las fuentes slo pueden establecerse valores para los que exista una fuente. En general, deber modificar FontName antes de establecer los atributos de tamao y estilo con las propiedades FontSize, FontBold, FontItalic, FontStrikethru y FontUnderline. Sin embargo, cuando especifique un tamao inferior a 8 puntos para una fuente TrueType, primero deber establecer el tamao en puntos con la propiedad FontSize, despus especificar la propiedad FontName y por ltimo establecer de nuevo el tamao con FontSize. El entorno operativo Microsoft Windows utiliza una fuente distinta para las fuentes TrueType con un tamao inferior a 8 puntos. Ejemplo de la propiedad FontSize En este ejemplo se escribe texto en un formulario con uno de entre dos tamaos en puntos con cada clic del mouse. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario. Presione F5 para ejecutar el programa y luego haga clic en el formulario. Private Sub Form_Click () FontSize = 24 ' Establecer FontSize. Print "ste es un tipo de 24 puntos." ' Imprimir con el tipo grande. FontSize = 8 ' Establecer FontSize. Print "ste es un tipo de 8 puntos." 'Imprimir con el tipo pequeo. End Sub

15.16-Heigth, Width
Aplicable a: Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form, Control Frame, Controles HScrollBar y VScrollBar, Control Image, Control Label, Control ListBox, Control OptionButton, Control PictureBox, Control Shape, Control TextBox.

Pgina 85 de 161

Curso Visual Basic 5.0 Sintaxis objeto.Height [= nmero] objeto.Width [= nmero] La sintaxis de las propiedades Height y Width consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. nmero Una expresin numrica que especifica las dimensiones del objeto, segn se indica en Valores. Valores Las medidas se calculan de la siguiente forma: Form: alto y ancho externos del formulario, incluyendo los bordes y la barra de ttulo. Control: se mide desde el centro del borde del control, de forma que los controles con anchos de borde distintos se alineen correctamente. Estas propiedades utilizan las unidades de escala del contenedor de un control. Comentarios Para los objetos Form estas propiedades se miden siempre en twips. Para los formularios y controles, los valores de estas propiedades cambian cuando el usuario o el cdigo modifican el tamao del objeto. Los lmites mximos de estas propiedades para todos los objetos dependen del sistema. Utilice las propiedades Height, Width, Left y Top para realizar operaciones o clculos que impliquen el rea total de un objeto, como puede ser mover el objeto o cambiar su tamao. Utilice las propiedades ScaleLeft, ScaleTop, ScaleHeight y ScaleWidth para realizar operaciones o clculos que impliquen solamente el rea interna de un objeto, como dibujar o mover objetos dentro de otro objeto. Ejemplo de las propiedades Height y Width En este ejemplo se establece como tamao de un formulario el 75 por ciento del tamao de la pantalla y se centra el formulario al cargarlo. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario. Presione F5 y haga clic en el formulario. Private Sub Form_Click () Width = Screen.Width * .75 ' Establecer el ancho del formulario. Height = Screen.Height * .75 ' Establecer el alto del formulario. Left = (Screen.Width - Width) / 2 ' Centrar el formulario horizontalmente. Top = (Screen.Height - Height) / 2 ' Centrar el formulario verticalmente. End Sub

15.17-Icon
Aplicable a: Objeto Form. Devuelve el icono que aparece al minimizar un formulario en tiempo de ejecucin.

Sintaxis
objeto.Icon El marcador de posicin objeto representa una expresin de objeto que da como resultado un objeto de la lista Aplicable a. Comentarios

Pgina 86 de 161

Curso Visual Basic 5.0 Utilice esta propiedad para especificar un icono para cualquier formulario que el usuario pueda minimizar en tiempo de ejecucin. Por ejemplo, puede asignar a un formulario un icono nico que indique su funcin. Especifique el icono cargndolo mediante la ventana Propiedades en tiempo de diseo. El archivo que cargue debe tener la extensin .ico y el formato correspondiente. Si no especifica ningn icono, se utilizar el icono predeterminado para los formularios en Visual Basic. Puede utilizar como origen de iconos la biblioteca de iconos de Visual Basic (ubicada en el subdirectorio Icons). Cuando crea un archivo ejecutable, puede asignar un icono a la aplicacin mediante la propiedad Icon de cualquier formulario de la misma. Nota Puede ver un icono de formulario en la esquina superior izquierda del formulario en Windows 95, o cuando se minimiza el formulario en Windows 95 y en Windows NT. Si el formulario est minimizado, el valor de la propiedad BorderStyle debe ser 1 (Fixed Single, Simple fijo) o 2 (Sizable, Tamao ajustable), y el de la propiedad MinButton debe ser True para que el icono sea visible. En tiempo de ejecucin puede asignar el valor de la propiedad Icon de un objeto a la propiedad DragIcon o Icon de otro objeto distinto. Tambin puede asignar un icono obtenido con la funcin LoadPicture. Si utiliza la funcin LoadPicture sin argumentos, se asigna un icono vaco (nulo) al formulario, lo que permite dibujar sobre el icono en tiempo de ejecucin.

15.18-Index (Matriz de Controles)


Aplicable a: Control CheckBox, Control ComboBox, Control CommandButton, Control Data Control Frame, Controles HScrollBar y VScrollBar, Control Image, Control Label, Control Line, Control ListBox, Control Menu, Control OptionButton, Control PictureBox, Control Shape, Control TextBox, Control Timer. Devuelve o establece el nmero que identifica un control de forma exclusiva en una matriz de controles. Slo est disponible si el control forma parte de una matriz de controles. Sintaxis objeto[(nmero)].Index La sintaxis de la propiedad Index consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. nmero Una expresin numrica que da como resultado un entero que identifica un control individual en una matriz de controles. Valores Los valores admitidos para nmero son: Valor Descripcin Ningn valor (Predeterminado) No forma parte de una matriz de controles. 0 a 32.767 Parte de una matriz. Especifica un entero mayor o igual que 0 que identifica un control en una matriz de controles. Todos los controles de una matriz de controles tienen la misma propiedad Name. Visual Basic asigna automticamente el siguiente entero disponible de la matriz de controles. Comentarios Puesto que los elementos de matrices de controles comparten el mismo valor de la propiedad Name, deber utilizar la propiedad Index en cdigo para especificar un determinado control de la matriz. Index debe aparecer como un entero (o una expresin numrica que da como resultado un entero) entre parntesis al lado del nombre de la matriz de controles; por ejemplo, MisBotones(3). Tambin puede utilizar el valor de la propiedad Tag para distinguir un control de otro en una matriz de controles.

Pgina 87 de 161

Curso Visual Basic 5.0 Cuando un control de la matriz reconoce que se ha producido un evento, Visual Basic llama al procedimiento de evento de la matriz de controles y pasa el valor de Index correspondiente como argumento adicional. Aunque Visual Basic asigna de forma predeterminada el siguiente entero disponible como valor de Index para un nuevo control de una matriz de controles, puede anular este valor asignado y omitir enteros. Tambin puede establecer Index a un entero distinto de 0 para el primer control de la matriz. Si hace referencia a un valor Index en el cdigo que no identifica uno de los controles de una matriz de controles, se producir un error en tiempo de ejecucin de Visual Basic. Nota Para quitar un control de una matriz de controles, cambie el valor de la propiedad Name del control y elimine el valor de su propiedad Index.

Ejemplo de la propiedad Index


Este ejemplo comienza con dos controles OptionButton y agrega un nuevo OptionButton al formulario cada vez que hace clic en un control CommandButton. Private Sub Command1_Click () Static MaxIdx ' ndice mayor de la matriz. If MaxIdx = 0 Then MaxIdx = 1 ' MaxIdx preestablecido. MaxIdx = MaxIdx + 1 ' Incrementa el ndice. If MaxIdx > 7 Then Exit Sub ' Coloca ocho botones en el formulario. Load OptButton(MaxIdx) ' Crea nuevos elementos en la matriz. ' Establece la ubicacin del nuevo botn de opciones bajo un botn previo. OptButton(MaxIdx).Top = OptButton(MaxIdx - 1).Top + 360 OptButton(MaxIdx).Visible = True' Hace visible el nuevo botn. End Sub

15.19-ListCount
Aplicable a: Control ComboBox, Control ListBox Devuelve el nmero de elementos de la parte de lista de un control. Sintaxis objeto.ListCount El marcador de posicin objeto representa una expresin de objeto que da como resultado un objeto de la lista Aplicable a. Comentarios ListCount proporciona informacin especfica de cada control: Controles ComboBox y ListBox: el nmero de elementos de la lista. Si no hay seleccionado ningn elemento, el valor de la propiedad ListIndex es 1. El primer elemento de la lista corresponde a ListIndex = 0 y ListCount es siempre una unidad mayor que el valor mximo de ListIndex. Ejemplo de la propiedad ListCount En este ejemplo se carga la lista de fuentes de impresora en un control ComboBox, se muestra el primer elemento de la lista y se escribe el nmero total de fuentes. Cada vez que se hace clic en el botn de comando, todos los elementos de la lista cambian a maysculas o a minsculas. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un control ComboBox (Style = 2) y un control CommandButton, presione F5 y haga clic en el control CommandButton. Pgina 88 de 161

Curso Visual Basic 5.0

Private Sub Form_Load () Dim I ' Declarar la variable. AutoRedraw = True ' Establecer AutoRedraw. For I = 0 To Printer.FontCount - 1 ' Poner los nombre de las fuentes en una lista. Combo1.AddItem Printer.Fonts(I) Next I Combo1.ListIndex = 0 ' Establecer el texto del primer elemento. ' Imprimir la informacin de ListCount en el formulario. Print "Nmero de fuentes de impresora: "; Combo1.ListCount End Sub Private Sub Command1_Click () Static UpperCase Dim I ' Declarar variable. For I = 0 To Combo1.ListCount - 1 ' Bucle por la lista. If UpperCase Then Combo1.List(I) = UCase(Combo1.List(I)) Else Combo1.List(I) = LCase(Combo1.List(I)) End If Next I UpperCase = Not UpperCase ' Cambiar maysculas y minsculas. End Sub

15.20-ListIndex
Aplicable a: Control ComboBox, Control ListBox Devuelve o establece el ndice del elemento seleccionado actualmente en el control. No est disponible en tiempo de diseo.

Sintaxis
objeto.ListIndex [= ndice] La sintaxis de la propiedad ListIndex consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. ndice Una expresin numrica que especifica el ndice del elemento actual, segn se indica en Valores. Valores Los valores admitidos para ndice son: Valor Descripcin 1 (Predeterminado para los controles ComboBox) Indica que actualmente no hay ningn elemento seleccionado. Para un control ComboBox indica que el usuario ha escrito texto nuevo en la parte de cuadro de texto. n (Predeterminado para los controles ListBox) Nmero que indica el ndice del elemento seleccionado actualmente.

Comentarios
La expresin List(List1.ListIndex) devuelve la cadena correspondiente al elemento seleccionado actualmente. Pgina 89 de 161

Curso Visual Basic 5.0 El primer elemento de la lista corresponde a ListIndex = 0 y ListCount es siembre una unidad mayor que el valor mximo de ListIndex. Ejemplo de la propiedad ListIndex En este ejemplo se muestran los nombres de tres jugadores en un control ListBox y el sueldo del jugador seleccionado en un control Label. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un control ComboBox y un control Label, presione F5 y elija un nombre en el control ComboBox. Dim Player(0 To 2) ' Dimensionar dos matrices. Dim Salary(0 To 2) Private Sub Form_Load () Dim I ' Declarar variable. AutoSize = True Player(0) = "Daniel Rendich" ' Introducir los datos en las matrices. Player(1) = "Federico Couto" Player(2) = "Ernesto Mndez" Salary(0) = "234.500$" Salary(1) = "158.900$" Salary(2) = "1.030.500$" For I = 0 To 2 ' Agregar los nombres a la lista. Combo1.AddItem Player(I) Next I Combo1.ListIndex = 0 ' Mostrar el primer elemento de la lista. End Sub Private Sub Combo1_Click () ' Mostrar el salario correspondiente al nombre. Label1.Caption = Salary(Combo1.ListIndex) End Sub

15.21-Locked
Aplicable a: Control TextBox Devuelve o establece un valor que indica si un control se puede modificar. Sintaxis objeto.Locked [ = booleano] La sintaxis de la propiedad Locked consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. Booleano Una expresin booleana que especifica si el control se puede modificar, como se describe en Valores. Valores Los valores admitidos para booleano son: Valor Descripcin True Control TextBox: el texto del control se puede desplazar y resaltar, pero no se puede modificar. El programa puede cambiar el texto si cambia la propiedad Text. False Control TextBox: puede modificar el texto del control.

Pgina 90 de 161

Curso Visual Basic 5.0

15.22-MousePointer
Aplicable a: Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form Control Frame, Controles HScrollBar y VScrollBar, Control Image, Control Label, Control ListBox, Control OptionButton, Control PictureBox, Control TextBox. Devuelve o establece un valor que indica el tipo de puntero de mouse que aparece cuando se sita el mouse sobre un rea determinada de un objeto en tiempo de ejecucin.

Sintaxis
objeto.MousePointer [= valor] La sintaxis de la propiedad MousePointer consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. valor Un nmero entero que especifica el tipo de puntero de mouse que aparece, segn se describe en Valores. Valores Los valores admitidos para valor son: Constante Valor Descripcin vbDefault 0 (Predeterminado) Forma determinada por el objeto. VbArrow 1 Flecha. VbCrosshair 2 Cruz (puntero en forma de cruz). VbIbeam 3 Forma de I. VbIconPointer 4 Icono (pequeo cuadrado dentro de otro cuadrado). VbSizePointer 5 Tamao (flecha de cuatro puntas: norte, sur, este y oeste). VbSizeNESW 6 Tamao NE SO (flecha doble que apunta al nordeste y al sudoeste). VbSizeNS 7 Tamao N S (flecha doble que apunta al norte y al sur). VbSizeNWSE 8 Tamao NO SE (flecha doble que apunta al noroeste y al sudeste). VbSizeWE 9 Tamao O E (flecha doble que apunta al oeste y al este). VbUpArrow 10 Flecha hacia arriba. VbHourglass 11 Reloj de arena (espera). VbNoDrop 12 No colocar. VbArrowHourglass 13 Flecha y reloj de arena. VbArrowQuestion 14 Flecha y signo de interrogacin. vbSizeAll 15 Ajustar todo. vbCustom 99 Icono personalizado especificado en la propiedad MouseIcon.

Comentarios
Puede utilizar esta propiedad cuando desee indicar los cambios en la funcionalidad al desplazar el puntero del mouse por los controles de un formulario o cuadro de dilogo. La opcin de reloj de arena (11) es til para indicar que el usuario debe esperar a que termine un proceso u operacin. Ejemplo de la propiedad MousePointer En este ejemplo se cambia el puntero del mouse por un reloj de arena mientras se dibujan crculos en la pantalla y al final del procedimiento el puntero adopta la forma que tena originalmente. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario. Presione F5 para ejecutar el programa y luego haga clic en el formulario. Private Sub Form_Click () Pgina 91 de 161

Curso Visual Basic 5.0 Dim I ' Declara una variable. ' Cambia el puntero del mouse por un reloj de arena. Screen.MousePointer = vbHourglass ' Establece un color aleatorio y dibuja crculos en el formulario. For I = 0 To ScaleWidth Step 50 ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255) Circle (I, ScaleHeight * Rnd), 400 Next ' Vuelve al puntero normal. Screen.MousePointer = vbDefault End Sub

15.23-Multiline
Aplicable a: Control TextBox. Devuelve o establece un valor que indica si un control TextBox acepta y muestra mltiples lneas de texto. Es de slo lectura en tiempo de ejecucin.

Sintaxis
objeto.MultiLine El marcador de posicin objeto representa una expresin de objeto que da como resultado un objeto de la lista Aplicable a. Valores Los valores admitidos para la propiedad MultiLine son: Valor Descripcin True Permite mltiples lneas de texto. False (Predeterminado) Pasa por alto los retornos de carro y restringe los datos a una nica lnea.

Comentarios
Los controles TextBox de mltiples lneas ajustan el texto a la lnea siguiente cuando el usuario se extiende ms all del cuadro de texto. Tambin puede agregar barras de desplazamiento a los controles TextBox ms grandes, utilizando para ello la propiedad ScrollBars. Si no se especifica un control de barra de desplazamiento horizontal, el texto de los controles TextBox de mltiples lneas se ajustar automticamente a la lnea siguiente. Nota En los formularios sin ningn botn predeterminado, al presionar ENTRAR en un control TextBox de mltiples lneas, el enfoque pasa a la lnea siguiente. Si existe un botn predeterminado, deber presionar CTRL+ENTRAR para pasar a la lnea siguiente.

15.24-Name
Aplicable a: Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form, Control Frame, Controles HScrollBar y VScrollBar, Control Image, Control Label, Control Line, Control Menu, Control OptionButton, Control PictureBox, Control Shape, Control TextBox, Control Timer.

Pgina 92 de 161

Curso Visual Basic 5.0 Devuelve el nombre utilizado en el cdigo para identificar un formulario, un control o un objeto de acceso a datos. Es de slo lectura en tiempo de ejecucin.

Sintaxis
objeto.Name El marcador de posicin objeto representa una expresin de objeto que da como resultado un objeto de la lista Aplicable a. Si se omite objeto, se supondr que el formulario asociado al mdulo del formulario activo es objeto. Comentarios El nombre predeterminado para objetos nuevos es el tipo de objeto y un entero nico. Por ejemplo, el primer objeto Form nuevo ser Form1 y el tercer control TextBox que cree en un formulario ser Text3. La propiedad Name de un objeto debe comenzar por una letra y puede tener un mximo de 40 caracteres. Puede incluir nmeros y caracteres de subrayado (_), pero no signos de puntuacin ni espacios en blanco. Aunque el valor de la propiedad Name puede ser una palabra clave, un nombre de propiedad o el nombre de otro objeto, esto puede crear conflictos en el cdigo. Puede crear un conjunto de controles del mismo tipo si establece la propiedad Name al mismo valor. Por ejemplo, cuando establece el nombre de todos los botones de opcin en un grupo como MiOpc, Visual Basic asigna valores nicos a la propiedad Index de cada control con el fin de distinguir unos de otros en la matriz. Dos controles de distinto tipo no pueden tener el mismo nombre. Nota Aunque Visual Basic usa a menudo el valor de la propiedad Name como valor predeterminado de las propiedades Caption y Text, el cambio de una de estas propiedades no afecta a las otras.

15.25-NewIndex
Aplicable a: Control ComboBox, Control ListBox. Devuelve el ndice del ltimo elemento agregado a un control ComboBox o ListBox. Es de slo lectura en tiempo de ejecucin. Sintaxis objeto.NewIndex El marcador de posicin objeto representa una expresin de objeto que da como resultado un objeto de la lista Aplicable a.

Comentarios
Puede utilizar esta propiedad con listas ordenadas cuando necesite una lista de valores asociados a cada elemento de la matriz de la propiedad ItemData. Al agregar un elemento a una lista ordenada, Visual Basic lo inserta en orden alfabtico. Esta propiedad indica la posicin en la que se ha insertado el elemento, de forma que pueda insertar el valor correspondiente en la propiedad ItemData con el mismo ndice. La propiedad NewIndex devuelve -1 cuando no hay ningn elemento en la lista o cuando se ha eliminado un elemento despus de agregar el ltimo elemento.

15.26-ItemData
Aplicable a: Control ComboBox, Control ListBox. Pgina 93 de 161

Curso Visual Basic 5.0

Devuelve o establece un nmero especfico para cada elemento de un control ComboBox o ListBox. Sintaxis objeto.ItemData(ndex) [= nmero] La sintaxis de la propiedad ItemData consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. ndice El nmero de un elemento concreto del objeto. nmero El nmero que se asocia con el elemento especificado. Comentarios La propiedad ItemData es una matriz de valores enteros largos cuyo nmero de elementos es el valor de la propiedad List de un control. Puede utilizar los nmeros asociados con cada elemento para identificar los elementos. Por ejemplo, puede usar un nmero de identificacin de empleado para identificar cada nombre de empleado de un control ListBox. Cuando llena el ListBox, tambin se llenan los elementos correspondientes de la matriz ItemData con los nmeros de empleado. La propiedad ItemData se usa a menudo como ndice de una matriz de estructuras de datos asociadas con los elementos de un control ListBox. Nota Cuando inserta un elemento en una lista con el mtodo AddItem, el elemento tambin se inserta automticamente en la matriz ItemData. Sin embargo, el valor no se reinicia a cero; conserva el valor que haba en esa posicin antes agregar el elemento a la lista. Cuando use la propiedad ItemData, asegrese de establecer su valor al agregar nuevos elementos a la lista.

Ejemplo de la propiedad ItemData


Este ejemplo llena un control ListBox con nombres de empleados y llena la matriz de propiedades ItemData con nmeros de empleados usando la propiedad NewIndex para mantener los nmeros sincronizados con la lista ordenada. Un control Label presenta el nombre y el nmero de un elemento cuando el usuario hace una seleccin en la lista. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un control ListBox y un control Label. Establezca la propiedad Sorted del ListBox a True, y despus presione F5 y haga clic en el control ListBox. Private Sub Form_Load () ' Llena List1 y la matriz ItemData con los ' elementos correspondientes ordenados. List1.AddItem "Judy Phelps" List1.ItemData(List1.NewIndex) = 42310 List1.AddItem "Chien Lieu" List1.ItemData(List1.NewIndex) = 52855 List1.AddItem "Mauro Sorrento" List1.ItemData(List1.NewIndex) = 64932 List1.AddItem "Cynthia Bennet" List1.ItemData(List1.NewIndex) = 39227 End Sub Private Sub List1_Click () ' Agrega el nmero y el nombre del empleado. Msg = List1.ItemData(List1.ListIndex) & " " Msg = Msg & List1.List(List1.ListIndex) Label1.Caption = Msg End Sub Pgina 94 de 161

Curso Visual Basic 5.0

15.27-PassWordChar
Aplicable a: Control TextBox. Devuelve o establece un valor que indica si en un control TextBox aparecen los caracteres que escribe el usuario o un carcter marcador de posicin. Devuelve o establece el carcter utilizado como marcador de posicin. Sintaxis objeto.PasswordChar [= valor] La sintaxis de la propiedad PasswordChar consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. valor Una expresin de cadena que especifica el carcter marcador de posicin. Comentarios Utilice esta propiedad para crear un campo de contrasea en un cuadro de dilogo. Aunque puede utilizarse cualquier carcter como marcador de posicin, la mayora de las aplicaciones para Windows usan el asterisco (*) (Chr(42)). Esta propiedad no afecta a la propiedad Text, que contiene exactamente lo que haya escrito el usuario o lo que se haya establecido con el cdigo. Para mostrar el texto real, establezca PasswordChar a una cadena de longitud cero (""), que es la opcin predeterminada. Puede asignar cualquier cadena a esta propiedad, pero slo ser significativo el primer carcter, pasndose por alto todos los dems. Nota Si la propiedad MultiLine est establecida a True, la propiedad PasswordChar no tendr efecto.

Ejemplo de la propiedad PasswordChar


En este ejemplo se ilustra cmo la propiedad PasswordChar afecta a la forma en que un control TextBox muestra el texto. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un control TextBox, presione F5 y haga clic en el formulario. Cada vez que haga clic en el formulario, el texto alternar entre el carcter asterisco (*) de contrasea y texto normal. Private Sub Form_Click () If Text1.PasswordChar = "" Then Text1.PasswordChar = "*" Else Text1.PasswordChar = "" End If End Sub

15.28-Picture
Aplicable a: Control CheckBox, Control CommandButton, Objeto Form, Control Image, Control OptionButton, Control PictureBox. Devuelve o establece un grfico que se mostrar en un control. Pgina 95 de 161

Curso Visual Basic 5.0

Sintaxis objeto.Picture [= imagen] La sintaxis de la propiedad Picture consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. imagen Una expresin de cadena que especifica un archivo que contiene un grfico, segn se indica en Valores. Valores Los valores admitidos para imagen son: Valor (Ninguno) (Mapa de bits, icono, metarchivo, GIF, JPEG))

Descripcin (Predeterminado) Ninguna imagen. Especifica un grfico que puede cargar mediante la ventana Propiedades en tiempo de diseo. En tiempo de ejecucin tambin puede establecer esta propiedad, utilizando la funcin LoadPicture con un mapa de bits, un icono o un metarchivo.

Comentarios
En tiempo de diseo, puede transferir un grfico con el Portapapeles mediante los comandos Copiar, Cortar y Pegar del men Edicin. Al establecer la propiedad Picture en tiempo de diseo, el grfico se guarda y se carga con el formulario. Si crea un archivo ejecutable, la imagen estar contenida en l. Los grficos cargados en tiempo de ejecucin no se guardan con la aplicacin. Nota En tiempo de ejecucin puede establecer la propiedad Picture al valor de la propiedad Icon, Image o Picture de cualquier otro objeto y tambin se le puede asignar un grfico devuelto por la funcin LoadPicture. Ejemplo de la propiedad Picture En este ejemplo se cargan iconos de la biblioteca de iconos de Visual Basic en dos controles PictureBox. Al hacer clic en el formulario, el tercer control PictureBox se utiliza para intercambiar los otros dos. Puede utilizar dos iconos cualesquiera. Pegue el cdigo en la seccin Declaraciones de un formulario que contenga tres controles PictureBox (para Picture3, establezca Visible = False). Presione F5 para ejecutar el programa y luego haga clic en el formulario. Private Sub Form_Load () ' Cargar los iconos. Picture1.Picture = LoadPicture("ICONOS\EQUIPO\PAPEL02A.ICO") Picture2.Picture = LoadPicture("ICONOS\EQUIPO\PAPEL02B.ICO") End Sub Private Sub Form_Click () ' Cambiar los iconos. Picture3.Picture = Picture1.Picture Picture1.Picture = Picture2.Picture Picture2.Picture = Picture3.Picture ' Borrar la tercera imagen (no es necesario si no est visible). Picture3.Picture = LoadPicture() End Sub

15.29-Recordset

Pgina 96 de 161

Curso Visual Basic 5.0 Aplicable a: Control Data. Devuelve o establece un objeto Recordset definido por las propiedades de un control Data o por un objeto Recordset existente. Sintaxis Set objeto.Recordset [= valor ] La sintaxis de la propiedad Recordset consta de estas partes: Parte Descripcin objeto Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a. valor Una variable de objeto que contiene un objeto Recordset. Comentarios El control Data se inicializa automticamente cuando se inicia la aplicacin antes del procedimiento inicial Form_Load. Si son vlidas las propiedades Connect, DatabaseName, Options, RecordSource, Exclusive, ReadOnly y RecordsetType, o si establece estas propiedades del control Data en tiempo de ejecucin y utiliza el mtodo Refresh, el motor de base de datos Microsoft Jet intentar crear un nuevo objeto Recordset basado en esas propiedades. Es posible tener acceso a este Recordset a travs de la propiedad Recordset de un control Data. Sin embargo, si una o ms de estas propiedades se establecen de forma incorrecta en tiempo de diseo, puede ocurrir un error no interceptable cuando Visual Basic intente usar las propiedades para abrir la base de datos determinada y crear el objeto Recordset. Tambin puede solicitar el tipo de Recordset que se va a crear si establece la propiedad RecordsetType del control Data Si no solicita un tipo especfico, se crear un Recordset de tipo dynaset. Si utiliza la propiedad RecordsetType podr solicitar la creacin de un Recordset de tipo table, snapshot o dynaset. Sin embargo, si el motor Jet no puede crear el tipo solicitado, se producir un error interceptable. En la mayora de los casos, el tipo predeterminado y la configuracin del objeto Recordset que se ha creado es poco eficiente. Es decir, puede que no necesite un cursor actualizable, con desplazamiento completo y basado en claves para tener acceso a los datos. Por ejemplo, puede ser ms rpido crear un Recordset de tipo snapshot de slo lectura que el Recordset predeterminado. Asegrese de que elige el tipo ms eficiente estableciendo las propiedades Exclusive, Options y ReadOnly segn su situacin. Es posible que no se pueda actualizar un Recordset aunque solicite un Recordset de tipo dynaset o table. Si no se puede actualizar la base de datos, la tabla o el campo subyacente, es posible que el Recordset completo o partes de l sean de slo lectura. Examine la propiedad Updatable de los objetos Database y Recordset o la propiedad DataUpdatable del objeto Field para determinar si el cdigo puede modificar los registros. Incluso si la propiedad DataUpdatable devuelve True, hay situaciones en las que los campos de datos subyacentes pueden no ser actualizables; por ejemplo, puede que no tenga permisos suficientes para realizar cambios. Puede haber tambin otros factores que impidan la actualizacin de campos. El nmero de registros devueltos por el Recordset puede determinarse desplazndose al ltimo registro del Recordset y examinando la propiedad RecordCount del objeto Recordset. Antes de desplazarse al ltimo registro, el valor devuelto por la propiedad RecordCount slo indica el nmero de filas procesadas por el motor Jet. El ejemplo siguiente muestra cmo combinar la propiedad RecordCount de un Recordset con la propiedad Recordset para mostrar el nmero de registros del conjunto de registros de un control Data: Data1.Recordset.MoveLast MsgBox "Registros: " & Data1.Recordset.RecordCount Edicin profesional y Edicin empresarial Si crea un objeto Recordset mediante cdigo u otro control Data, puede establecer la propiedad Recordset del control Data a este nuevo Recordset. Cualquier Recordset existente en el control Data y el objeto Database asociado con l se liberarn cuando se asigne un nuevo Recordset a la propiedad Recordset. Asegrese de que las propiedades DataField de los controles enlazados conectados al control Data se establecen de forma que coincidan con los nombres de campo del nuevo objeto Recordset. Por ejemplo, para crear un Recordset en cdigo y pasarlo a un control Data existente:

Pgina 97 de 161

Curso Visual Basic 5.0 Dim Db As Database, Rs As Recordset ' Definidas como variables pblicas. Sub ApplyRecordset() Set Db = Workspaces(0).OpenDatabase("BIBLIO.MDB") Set Rs = Db.OpenRecordset("AUTHORS") ' De forma predeterminada el objeto Table. Set Data1.Recordset = Rs ' Asigna el Recordset. Data1.Recordset.Index = "PrimaryKey" Debug.Print Rs.Type ' Muestra el tipo creado. End Sub Nota El control Data no es compatible con objetos Recordset de tipo forward-only (desplazamiento slo hacia adelante). Si intenta asignar al control Data un objeto Recordset de tipo forward-only, ocurre un error interceptable. Importante Siempre puede hacer referencia a las propiedades del Recordset del control Data mediante la propiedad Recordset. Si hace referencia directamente al Recordset, podr determinar el Index que va a utilizar con objetos Table, la coleccin Parameters de un objeto QueryDef o el tipo de Recordset. Tipo de datos Recordset

15.30-RecordsetType
Aplicable a: Control Data. Devuelve o establece un valor que indica el tipo de objeto Recordset que desea que cree el control Data. Sintaxis objeto.RecordsetType [= valor ] La sintaxis de la propiedad RecordsetType consta de estas partes: Parte Descripcin objeto Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a valor Una constante o un valor que indica el tipo de Recordset, como se describe en Valores Valores Los valores admitidos para valor son los siguientes: Configuracin Valor Descripcin VbRSTypeTable 0 Un Recordset de tipo table vbRSTypeDynaset 1 (Predeterminado) Un Recordset de tipo dynaset vbRSTypeSnapshot 2 Un Recordset de tipo snapshot Comentarios Si el motor de base de datos Microsoft Jet no puede crear el tipo de Recordset que ha solicitado, se produce un error interceptable. Si no especifica un RecordsetType antes de que el control Data cree el Recordset, se crear si es posible un Recordset de tipo dynaset. En la mayora de los casos, el tipo predeterminado y la configuracin del objeto Recordset que se ha creado es poco eficiente. Es decir, puede que no necesite un cursor actualizable, con desplazamiento completo y basado en claves para tener acceso a los datos. Por ejemplo, un Recordset de tipo snapshot con desplazamiento slo hacia adelante de slo lectura puede ser ms rpido de crear que el cursor predeterminado. Asegrese de que elige el tipo ms eficiente estableciendo las propiedades RecordsetType, Exclusive, Options y ReadOnly segn su situacin. Tipo de datos Integer Pgina 98 de 161

Curso Visual Basic 5.0

Ejemplo de la propiedad RecordsetType Este ejemplo utiliza el control Data para crear un objeto Recordset y examina la propiedad RecordsetType del control Data para determinar el tipo de conjunto de registros creado. Sub DisplayRecordsetType() ' Indica el tipo de Recordset deseado. Data1.RecordsetType = vbRSTypeDynaset Data1.DatabaseName = "BIBLIO.MDB" Data1.RecordSource = "Authors" Data1.Refresh Select Case Data1.RecordsetType Case vbRSTypeTable Debug.print "Creado Recordset de tipo Table." Case vbRSTypeDynaset Debug.print "Creado Recordset de tipo Dynaset." Case vbRSTypeSnapshot Debug.print "Creado Recordset de tipo Snapshot." End Select End Sub

15.31-RecordSource
Aplicable a: Control Data. Devuelve o establece la tabla, la instruccin SQL o el objeto QueryDef subyacente para un control Data.

Sintaxis
Objeto.RecordSource [= valor] La sintaxis de la propiedad RecordSource consta de estas partes: Parte Descripcin objeto Una expresin de objeto cuyo resultado es un objeto de la lista Aplicable a. valor Una expresin de cadena que especifica un nombre, como se describe en Valores. Valores Los valores admitidos para valor son los siguientes: Valor Descripcin Un nombre de tabla El nombre de una de las tablas definidas en la coleccin TableDefs del objeto Database. Una consulta SQL Una cadena SQL vlida que utiliza una sintaxis apropiada para el origen de datos. Un QueryDef El nombre de uno de los objetos QueryDef de la coleccin QueryDefs del objeto Database, al tener acceso a una base de datos de Jet. Comentarios La propiedad RecordSource especifica el origen de los registros accesibles a travs de controles enlazados del formulario.

Pgina 99 de 161

Curso Visual Basic 5.0 Si establece la propiedad RecordSource al nombre de una tabla existente en la base de datos, todos los campos de esa tabla sern visibles en los controles enlazados adjuntos al control Data. Para conjuntos de registros de tipo table (RecordsetType = vbRSTypeTable), el orden de los registros recuperados lo establece el objeto Index que se selecciona mediante la propiedad Index del Recordset. Para objetos Recordset de tipo dynaset y snapshot, puede ordenar los registros usando una instruccin SQL con una clusula Order By en la propiedad RecordSource del control Data. De lo contrario, los datos se devuelven sin ningn orden en particular. Si establece la propiedad RecordSource al nombre de un objeto QueryDef existente en la base de datos, todos los campos devueltos por QueryDef sern visibles para los controles enlazados adjuntos al control Data. El orden de los registros recuperados lo establece la consulta del objeto QueryDef. Por ejemplo, QueryDef puede incluir una clusula ORDER BY para cambiar el orden de los registros que devuelve el objeto Recordset creado por el control Data o una clusula WHERE para filtrar los registros. Si el objeto QueryDef no especifica ningn orden, los datos se devolvern sin ningn orden concreto. Nota En tiempo de diseo, los objetos QueryDef mostrados en la ventana Propiedades para la propiedad RecordSource se filtran para mostrar nicamente los objetos QueryDef que se pueden utilizar con el control Data. No se muestran los objetos QueryDef que tengan parmetros. Si establece la propiedad RecordSource a una instruccin SQL que devuelve registros, todos los campos devueltos por la consulta SQL sern visibles para los controles enlazados adjuntos al control Data. Esta instruccin puede incluir una clusula ORDER BY para cambiar el orden de los registros devueltos por el objeto Recordset creado por el control Data o una clusula WHERE para filtrar los registros. Nota Cada vez que el objeto QueryDef o la instruccin SQL devuelve un valor de una expresin, el motor de base de datos Microsoft Jet crea automticamente el nombre de campo de la expresin. El nombre suele ser Expr1 seguido de un nmero de tres dgitos que comienza por 000. Por ejemplo, la primera expresin se llamara Expr1000. En la mayora de los casos, es posible que quiera asignar un alias a expresiones de modo que conozca el nombre de la columna a la que va a enlazar el control enlazado. Para obtener ms informacin al respecto, vea la clusula AS de la instruccin SQL SELECT. Despus de cambiar el valor de la propiedad RecordSource en tiempo de ejecucin, deber utilizar el mtodo Refresh para activar el cambio y volver a generar el Recordset. En tiempo de ejecucin, si el Recordset especifica un nombre de un tipo Table no vlido, un nombre de QueryDef o contiene sintaxis de SQL no vlida, se generar un error interceptable. Si el error ocurre durante el procedimiento inicial Form_Load, el error no ser interceptable. Nota Asegrese de que cada control enlazado tiene un valor vlido para su propiedad DataField. Si cambia el valor de la propiedad RecordSource de un control Data y a continuacin utiliza Refresh, el Recordset identificar al nuevo objeto. Esto puede invalidar los valores de la propiedad DataField de controles enlazados y producir un error interceptable. Tipo de datos

String

15.32-Shape
Aplicable a Control Shape Devuelve o establece un valor que indica la apariencia de un control Shape. Sintaxis objeto.Shape [= valor] La sintaxis de la propiedad Shape consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. valor Un nmero entero que especifica la apariencia del control, segn se describe en Valores.

Pgina 100 de 161

Curso Visual Basic 5.0

Valores
Los valores admitidos para valor son: Constante Valor Descripcin vbShapeRectangle 0 (Predeterminado) Rectngulo vbShapeSquare 1 Cuadrado vbShapeOval 2 Elipse vbShapeCircle 3 Crculo VbShapeRoundedRectangle 4 Rectngulo redondeado VbShapeRoundedSquare 5 Cuadrado redondeado Ejemplo de la propiedad Shape En este ejemplo se ilustran las seis posibles formas del control Shape. Para probarlo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un control OptionButton y un control Shape. En el OptionButton, establezca a 0 la propiedad Index para crear una matriz de controles de un elemento y presione F5. Haga clic en cada control OptionButton para ver una forma distinta. Private Sub Form_Load () Dim I ' Declara una variable. Option1(0).Caption = "Forma n 0" For I = 1 To 5 ' Crea cinco instancias de Option1. Load Option1(I) ' Establece la ubicacin del nuevo botn de opcin. Option1(I).Top = Option1(I - 1).Top + Option1(0).Height + 40 ' Establece el ttulo del botn de opcin. Option1(I).Caption = "Forma n " & I ' Muestra el nuevo botn de opcin. Option1(I).Visible = True Next I End Sub Private Sub Option1_Click (Index As Integer) Shape1.Shape = Index End Sub

15.33-SQL (Objeto QueryDef)


Aplicable a Objeto QueryDef Establece o devuelve la instruccin SQL que define la consulta ejecutada por un objeto QueryDef. Valores devueltos y establecidos El valor que se puede establecer u obtener es un tipo de datos String que contiene una instruccin SQL.

Comentarios
La propiedad SQL contiene la instruccin SQL que determina cmo se seleccionan, agrupan y ordenan los registros cuando se ejecuta la consulta. Puede utilizar la consulta para seleccionar registros a incluir en un objeto Recordset de tipo Dynaset o Snapshot. Tambin puede definir consultas para modificar datos sin devolver registros. La sintaxis SQL utilizada en una consulta debe ser acorde con el dialecto SQL del motor de consulta, que est determinado por el tipo de espacio de trabajo. En un espacio de trabajo Microsoft Jet, utilice el lenguaje SQL de Microsoft Jet.

Pgina 101 de 161

Curso Visual Basic 5.0 Ejemplo de la propiedad SQL Este ejemplo demuestra la propiedad SQL estableciendo y modificando la propiedad SQL de un QueryDef temporal y comparando los resultados. Se necesita la funcin SalidaSQL para ejecutar este procedimiento. Sub SQLX() Dim dbsNeptuno As Database Dim qdfTemp As QueryDef Dim rstEmpleados As Recordset Set dbsNeptuno = OpenDatabase("Neptuno.mdb") Set qdfTemp = dbsNeptuno.CreateQueryDef("") ' Abre un Recordset utilizando un objeto QueryDef ' temporal e imprime un informe. SalidaSQL "SELECT * FROM Empleados " & _ "WHERE Pas = 'Espaa' " & _ "ORDER BY Apellidos", qdfTemp ' Abre un Recordset utilizando un objeto QueryDef ' temporal e imprime un informe. SalidaSQL "SELECT * FROM Empleados " & _ "WHERE Pas = 'Mxico' " & _ "ORDER BY Apellidos", qdfTemp dbsNeptuno.Close End Sub Function SalidaSQL(strSQL As String, qdfTemp As QueryDef) Dim rstEmpleados As Recordset ' Establece la propiedad SQL del objeto QueryDef ' temporal y abre un Recordset. qdfTemp.SQL = strSQL Set rstEmpleados = qdfTemp.OpenRecordset ' Enumera el Recordset. Do While Not rstEmpleados.EOF Debug.Print " " & rstEmpleados!Nombre & " " &rstEmpleados!Apellidos & ", " & !Pas .MoveNext Loop RstEmpleados.Close End Function

15.34-Stretch
Aplicable a Control Image

Pgina 102 de 161

Curso Visual Basic 5.0 Devuelve o establece un valor que indica si un grfico cambia su tamao para ajustarse al de un control Image. Sintaxis objeto.Stretch [= booleano] La sintaxis de la propiedad Stretch consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. Booleano Una expresin de tipo Boolean que especifica si el grfico cambia su tamao, como se describe en Valores. Valores Los valores admitidos para booleano son: Valor Descripcin True El grfico cambia de tamao para ajustarse al del control. False (Predeterminado) El control cambia de tamao para ajustarse al del grfico.

Comentarios
Si Stretch tiene el valor True, al cambiar el tamao del control tambin se cambiar el del grfico que contenga. Ejemplo de la propiedad Stretch En este ejemplo se carga un icono de flecha de un directorio de iconos en un control Image. La flecha se arrastra por el formulario cuando la propiedad Stretch tiene el valor True y salta por el formulario cuando la propiedad Stretch tiene el valor False. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un control Image, un control CheckBox y un control Timer, presione F5 y haga clic en el formulario. Asegrese de comprobar la ruta de acceso al directorio de iconos y cmbiela si es necesario. Para ver los distintos efectos de la propiedad Stretch, haga clic en el control CheckBox y luego en el formulario. Dim ImgW ' Declara una variable. Private Sub Form_Load () ' Carga un icono en el control Image. Image1.Picture = LoadPicture("ICONS\ARROWS\ARW02RT.ICO") Image1.Left = 0 ' Mueve la imagen al borde izquierdo. ImgW = Image1.Width ' Guarda el ancho de la imagen. Timer1.Interval = 300 Timer1.Enabled = False ' Deshabilita el cronmetro. Check1.Caption = "Propiedad Stretch" End Sub Private Sub Form_Click () Timer1.Enabled = True End Sub ' Habilita el cronmetro.

Private Sub Timer1_Timer () Static MoveIcon As Integer ' Indicador para desplazar el icono. If Not MoveIcon Then Image1.Move Image1.Left + ImgW, Image1.Top, ImgW * 2 Else ' Mueve la imagen y la devuelve a su ancho original. Image1.Move Image1.Left + ImgW, Image1.Top, ImgW End If ' Si la imagen est fuera del borde del formulario, empezar otra vez. If Image1.Left > ScaleWidth Then Image1.Left = 0 Pgina 103 de 161

Curso Visual Basic 5.0 Timer1.Enabled = False End If MoveIcon = Not MoveIcon ' Restablece el indicador. End Sub Private Sub Check1_Click () Image1.Stretch = Check1.Value End Sub

15.35-Style
Aplicable a Control CheckBox, Control ComboBox, Control CommandButton, Control ListBox, Control OptionButton Devuelve o establece un valor que indica el tipo de muestra y el comportamiento del control. Es de slo lectura en tiempo de ejecucin. Sintaxis objeto.Style El marcador de posicin objeto representa una expresin de objeto que da como resultado un objeto de la lista Aplicable a. Valores Los valores de la propiedad Style para los controles Checkbox, CommandButton, y OptionButton son: Constante Valor Descripcin vbButtonStandard 0 (Predeterminado) Estndar. El control aparece como en las versiones anteriores de Visual Basic. Es decir, un control Checkbox aparece como una casilla de verificacin con una etiqueta a su lado, un control OptionButton aparece como un botn de opcin con una etiqueta a su lado y un CommandButton como un CommandButton estndar sin un grfico asociado. vbButtonGraphical 1 Grfico. El control se muestra con un estilo grfico. Es decir, un control Checkbox se muestra como un botn de tipo CommandButton que se puede soltar o presionar, un OptionButton aparece como un botn tipo CommandButton que permanece suelto o presionado hasta que se seleccione otro OptionButton de su grupo de opciones y un CommandButton se muestra como un CommandButton estndar que tambin puede mostrar un grfico asociado. Los valores de la propiedad Style para el control ComboBox son los siguientes: Constante Valor Descripcin vbComboDropDown 0 (Predeterminado) Cuadro combinado desplegable. Incluye una lista desplegable y un cuadro de texto. El usuario puede seleccionar datos en la lista o escribir en el cuadro de texto. VbComboSimple 1 Cuadro combinado simple. Incluye un cuadro de texto y una lista, que no se despliega. El usuario puede seleccionar datos en la lista o escribir en el cuadro de texto. El tamao de un cuadro combinado simple incluye las partes de edicin y de lista. De forma predeterminada, el tamao de un cuadro combinado simple no muestra ningn elemento de la lista. Incremente la propiedad Height para mostrar ms elementos de la lista. vbComboDrop-DownList 2 Lista desplegable. Este estilo slo permite la seleccin desde la lista desplegable. Pgina 104 de 161

Curso Visual Basic 5.0

Los valores de la propiedad Style para el control ListBox son los siguientes: Constante Valor Descripcin vbListBoxStandard 0 (Predeterminado) Estndar. El control ListBox se muestra como en las versiones anteriores de Visual Basic. Es decir, como una lista de elementos de texto. vbListBoxCheckbox 1 Casilla de verificacin. El control ListBox se muestra sin una marca de verificacin junto a cada elemento de texto. Es posible seleccionar mltiples elementos del ListBox si activa la casilla de verificacin que hay junto a ellos. Comentarios Para decidir el valor que debe elegir para el control ComboBox, siga estas directrices: Utilice el valor 0 (cuadro combinado desplegable) 1 (cuadro combinado simple) para proporcionar al usuario una lista de opciones. Los dos tipos permiten al usuario especificar una opcin en el cuadro de texto. El valor 0 ahorra espacio en el formulario, ya que la parte de lista se cierra cuando el usuario selecciona un elemento. Utilice el valor 2 (lista desplegable) para mostrar una lista fija de opciones entre las cuales el usuario pueda elegir una. La parte de lista se cierra cuando el usuario selecciona un elemento.

15.36-TabIndex
Aplicable a Control CheckBox, Control ComboBox, Control CommandButton, Control Frame, Controles HScrollBar y VScrollBar, Control Label, Control ListBox, Control OptionButton, Control PictureBox, Control TextBox. Devuelve o establece el orden de tabulacin de la mayora de los objetos dentro de su formulario. Sintaxis objeto.TabIndex [= ndice] La sintaxis de la propiedad TabIndex consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. ndice Un nmero entero entre 0 y (n1), donde n es el nmero de controles del formulario que tienen la propiedad TabIndex. Al asignar a TabIndex un valor inferior a 0 se produce un error. Comentarios De forma predeterminada, Visual Basic asigna un orden de tabulacin a los controles cuando se van agregando a un formulario, con la excepcin de los controles Menu, Timer, Data, Image, Line y Shape, que no se incluyen en el orden de tabulacin. En tiempo de ejecucin, los controles invisibles o deshabilitados y los controles que no pueden recibir el enfoque (controles Frame y Label) permanecen en el orden de tabulacin pero se pasan por alto al tabular. Cada control nuevo se sita el ltimo en el orden de tabulacin. Si modifica el valor de la propiedad TabIndex de un control para cambiar el orden predeterminado, Visual Basic renumerar automticamente la propiedad TabIndex de los controles restantes para reflejar las inserciones y eliminaciones. Puede efectuar los cambios en tiempo de diseo mediante la ventana propiedades o en tiempo de ejecucin a travs de cdigo. Nota El orden de tabulacin de un control no afecta a su tecla de acceso asociada. Si presiona la tecla de acceso de un control Frame o Label, el enfoque pasar al siguiente control del orden de tabulacin que pueda recibir el enfoque.

Ejemplo de la propiedad TabIndex


En este ejemplo se invierte el orden de tabulacin de un grupo de botones modificando la propiedad TabIndex de una matriz de botones de comando. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario Pgina 105 de 161

Curso Visual Basic 5.0 que contenga cuatro controles CommandButton. Establezca CommandX en la propiedad Name de cada botn para crear la matriz de controles, y luego presione F5 y haga clic en el formulario para invertir su orden de tabulacin. Private Sub Form_Click () Dim I, X ' Declarar variables. ' Invertir el orden de tabulacin estableciendo el valor inicial de X. If CommandX(0).TabIndex = 0 Then X = 4 Else X = 1 For I = 0 To 3 CommandX(I).Caption = X ' Establecer el ttulo. CommandX(I).TabIndex = X - 1 ' Establecer el orden de tabulacin. If CommandX(0).TabIndex = 3 Then X=X-1 ' Disminuir X. Else X=X+1 ' Incrementar X. End If Next I End Sub

15.37-TabStop
Aplicable a Control CheckBox, Control ComboBox, Control CommandButton, Controles HScrollBar y VScrollBar, Control ListBox, Control OptionButton, Control PictureBox, Control TextBox, Devuelve o establece un valor que indica si el usuario puede utilizar la tecla TAB para llevar el enfoque a un objeto. Sintaxis objeto.TabStop [= booleano] La sintaxis de la propiedad TabStop consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. Booleano Una expresin de tipo Boolean que especifica si el objeto es un tabulador, como se describe en Valores. Valores Los valores admitidos para booleano son: Valor Descripcin True (Predeterminado) Designa el objeto como un tabulador. False Hace que se salte el objeto en la tabulacin, aunque el objeto mantiene su lugar en el orden de tabulacin real, determinado en la propiedad TabIndex. Comentarios Esta propiedad permite agregar o quitar un control del orden de tabulacin de un formulario. Por ejemplo, si utiliza un control PictureBox para dibujar un grfico, establezca a False su propiedad TabStop para que el usuario no pueda situarse en el control PictureBox.

15.38-Tag
Aplicable a

Pgina 106 de 161

Curso Visual Basic 5.0 Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form Control Frame, Controles HScrollBar y VScrollBar, Control Image, Control Label, Control Line, Control ListBox, Control Menu, Control OptionButton, Control PictureBox, Control Shape, Control TextBox, Control Timer. Devuelve o establece una expresin que almacena cualquier dato adicional que necesite el programa. Al contrario de lo que sucede con otras propiedades, Visual Basic no utiliza el valor de Tag. Puede utilizar esta propiedad para identificar objetos. Sintaxis objeto.Tag [= expresin] La sintaxis de la propiedad Tag consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. Expresin Una expresin de cadena que identifica el objeto. El valor predeterminado es una cadena de longitud cero (""). Comentarios Puede utilizar esta propiedad para asignar una cadena de identificacin a un objeto sin afectar al resto de sus propiedades ni causar efectos secundarios. Ejemplo de la propiedad Tag En este ejemplo se muestra un icono nico para cada control que se arrastra. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga tres controles PictureBox. Establezca a 1 la propiedad DragMode de Picture1 y Picture2, y luego presione F5. Utilice el mouse para arrastrar Picture1 o Picture2 sobre Picture3. Private Sub Form_Load () Picture1.Tag = "ICONOS\FLECHAS\PUNTO03.ICO" Picture2.Tag = "ICONOS\FLECHAS\PUNTO04.ICO" End Sub Private Sub Picture3_DragOver (Source As Control, X As Single, Y As Single, State As Integer) If State = vbEnter Then ' Seleccionar en base a la propiedad Name de cada PictureBox. Select Case Source.Name Case "Picture1" ' Cargar el icono para Picture1. Source.DragIcon = LoadPicture(Picture1.Tag) Case "Picture2" ' Cargar el icono para Picture2. Source.DragIcon = LoadPicture(Picture2.Tag) End Select ElseIf State = vbLeave Then ' Cuando el origen no est sobre Picture3, descargar el icono. Source.DragIcon = LoadPicture() End If End Sub

15.39-Text
Aplicable a Control ComboBox, Control ListBox, Control TextBox Pgina 107 de 161

Curso Visual Basic 5.0 Control ComboBox (propiedad Style con el valor 0 [cuadro combinado desplegable] o 1 [cuadro combinado simple]) y control TextBox: devuelve o establece el texto contenido en el rea de edicin. Control ComboBox (propiedad Style con el valor 2 [cuadro combinado desplegable]) y control ListBox: devuelve el elemento seleccionado en el cuadro de lista; el valor de retorno es siempre equivalente al que devuelve la expresin List(ListIndex). Es de slo lectura en tiempo de diseo y es de slo lectura en tiempo de ejecucin. Sintaxis objeto.Text [= cadena] La sintaxis de la propiedad Text consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. cadena Una expresin de cadena que especifica el texto.

Comentarios
Solamente en tiempo de diseo, los valores predeterminados de la propiedad Text son: Controles ComboBox y TextBox: la propiedad Name del control. Control ListBox: una cadena de longitud cero (""). En el caso de un control ComboBox con el valor 0 (cuadro combinado desplegable) o 1 (cuadro combinado simple) en la propiedad Style, o para un control TextBox, esta propiedad es til para leer la cadena real contenida en el rea de edicin del control. Para un control ComboBox o ListBox con el valor 2 (lista desplegable) en la propiedad Style, puede utilizar la propiedad Text para determinar el elemento seleccionado actualmente. El valor de Text para un control TextBox est limitado a 2048 caracteres, a no ser que el valor de la propiedad MultiLine sea True, en cuyo caso el lmite es aproximadamente 32 KB. Ejemplo de la Propiedad Texto En este ejemplo se ilustra el uso de la propiedad Text. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga tres controles TextBox y un control CommandButton, presione F5 y escriba texto en Text1. Private Sub Text1_Change () Text2.Text = LCase(Text1.Text) ' Mostrar texto en minsculas. Text3.Text = UCase(Text1.Text) ' Mostrar texto en maysculas. End Sub Private Sub Command1_Click () Text1.Text = "" End Sub ' Eliminar el texto.

15.40-ToolTipText
Aplicable a Objeto Button, Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Control Frame, Control Image, Control Label, Control ListBox, Control OptionButton, Control PictureBox, Control TextBox. Devuelve o establece Informacin sobre herramientas. Sintaxis objeto.ToolTipText [= cadena] La sintaxis de la propiedad ToolTipText consta de las siguientes partes: Pgina 108 de 161

Curso Visual Basic 5.0 Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. cadena Una cadena asociada con un objeto de la lista Aplicable a que aparece durante un segundo aproximadamente en un pequeo rectngulo debajo del objeto cuando el cursor del usuario pasa por encima del objeto en tiempo de ejecucin. Comentarios Si usa nicamente una imagen para identificar un objeto, puede usar esta propiedad para explicar con pocas palabras cada uno de esos objetos. En tiempo de diseo puede establecer la cadena de la propiedad ToolTipText en el cuadro de dilogo de propiedades del control.

15.41-Value
Aplicable a Control CheckBox, Control CommandButton, Controles HScrollBar y VScrollBar, Control OptionButton Controles CheckBox y OptionButton: devuelve o establece el estado del control. Control CommandButton: devuelve o establece un valor que indica si se ha elegido el botn. No est disponible en tiempo de diseo. Controles HScrollBar y VScrollBar (barras de desplazamiento horizontal y vertical): devuelve o establece la posicin actual de la barra de desplazamiento, cuyo valor de retorno se encuentra siempre entre los valores de las propiedades Max y Min, inclusive. Sintaxis objeto.Value [= valor] La sintaxis de la propiedad Value consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. valor Un valor que especifica el estado, contenido o posicin de un control, segn se indica en Valores. Valores Los valores admitidos para valor son: Control CheckBox: 0 es desactivado (predeterminado), 1 es activado y 2 es atenuado. Control CommandButton: True indica que se ha elegido el botn y False (predeterminado) indica que no se ha elegido. Al establecer a True la propiedad Value se invoca el evento Click del botn. Controles HScrollBar y VScrollBar: establece valores entre 32.768 y 32.767 para situar el cuadro de desplazamiento. Control OptionButton: True indica que el botn est seleccionado y False (predeterminado) que no lo est. Ejemplo de la propiedad Value En este ejemplo se muestra el valor numrico de un control HScrollBar (barra de desplazamiento horizontal) en un control TextBox. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga un control TextBox y un control HScrollBar. Presione F5 para ejecutar el programa y haga clic en la barra de desplazamiento. Private Sub Form_Load () HScroll1.Min = 0 ' Inicializar la barra de desplazamiento. HScroll1.Max = 1000 HScroll1.LargeChange = 100 HScroll1.SmallChange = 1 Pgina 109 de 161

Curso Visual Basic 5.0 End Sub Private Sub HScroll1_Change () Text1.Text = Format (HScroll1.Value) End Sub

15.42-Visible
Aplicable a Control CheckBox, Control ComboBox, Control CommandButton, Control Data, Objeto Form Control Frame, Controles HScrollBar y VScrollBar, Control Image, Control Label, Control Line, Control ListBox, Control Menu, Control OptionButton, Control PictureBox, Control Shape, Control TextBox Devuelve o establece un valor que indica si un objeto es visible o est oculto. Sintaxis objeto.Visible [= booleano] La sintaxis de la propiedad Visible consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. Booleano Una expresin booleana que especifica si el objeto es visible o si est oculto. Valores Los valores admitidos para booleano son: Valor Descripcin True (Predeterminado) El objeto es visible. False El objeto est oculto. Comentarios Para ocultar un objeto al inicio, establezca la propiedad Visible a False en tiempo de diseo. Si establece esta propiedad en el cdigo puede ocultar y volver a mostrar posteriormente un control en tiempo de ejecucin como respuesta a un evento determinado. Nota El uso del mtodo Show o Hide en un formulario equivale a establecer True o False, respectivamente, en su propiedad Visible a travs del cdigo. Ejemplo de la propiedad Visible En este ejemplo se crea una animacin mediante dos controles PictureBox. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un formulario que contenga dos controles PictureBox de tamao de icono. Establezca a FileCab la propiedad Name de los dos controles PictureBox para crear una matriz, presione F5 y haga clic en la imagen para ver la animacin. Private Sub Form_Load () Dim I ' Declara la variable. FileCab(0).BorderStyle = 0 ' Establecer BorderStyle. FileCab(1).BorderStyle = 0 ' Cargar los iconos en los cuadros de imagen. FileCab(1).Picture = LoadPicture("ICONOS\OFFICE\ARCH03B.ICO") FileCab(0).Picture = LoadPicture("ICONOS\OFFICE\ARCH03A.ICO") For I = 0 To 1 FileCab(I).Move 400, 400 ' Colocar los grficos en el mismo punto. Pgina 110 de 161

Curso Visual Basic 5.0 Next I FileCab(1).Visible = False FileCab(0).Visible = True End Sub Private Sub FileCab_Click (Index As Integer) Dim I ' Declarar variable. For I = 0 To 1 ' Cambiar la visibilidad para los dos grficos. FileCab(I).Visible = Not FileCab(I).Visible Next I End Sub

' Establecer a invisible. ' Establecer a visible.

15.43-WindowState
Aplicable a Objeto Form. Devuelve o establece un valor que indica el estado visual de una ventana de formulario en tiempo de ejecucin. Sintaxis objeto.WindowState [= valor] La sintaxis de la propiedad WindowState consta de las siguientes partes: Parte Descripcin objeto Una expresin de objeto que da como resultado un objeto de la lista Aplicable a. valor Un nmero entero que especifica el estado del objeto, como se describe en Valores. Valores Los valores admitidos para valor son: Constante Valor Descripcin vbNormal 0 (Predeterminado) Normal VbMinimized 1 Minimizada (minimizada a un icono) VbMaximized 2 Maximizada (ampliado al tamao mximo) Comentarios Antes de mostrar un formulario, la propiedad WindowState tiene siempre el valor Normal (0), cualquiera que sea su estado inicial. Esto se refleja en los valores de las propiedades Height, Left, ScaleHeight, ScaleWidth, Top y Width. Si un formulario se oculta despus de mostrarse, estas propiedades reflejarn el estado anterior hasta que se muestre de nuevo el formulario, independientemente de los cambios que se hagan mientras tanto en la propiedad WindowState. Ejemplo de la propiedad WindowState En este ejemplo se oculta un cuadro de dilogo (Form2) cuando el formulario primario (Form1) se minimiza y se vuelve a mostrar cuando el formulario primario vuelve al estado original o se maximiza. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de Form1 en una aplicacin que contenga dos formularios. Presione F5 para iniciar el ejemplo. Desplace Form1 de forma que pueda ver los dos formularios, minimice o maximice el formulario y observe el comportamiento de Form2. Private Sub Form_Load () Form2.Show ' Muestra Form2. Pgina 111 de 161

Curso Visual Basic 5.0 End Sub Private Sub Form_Resize () ' Si el primario est minimizado... If Form1.WindowState = vbMinimized Then ' ... oculta Form2. Form2.Visible = False ' Si el primario no est minimizado... Else ' ... restaura Form2. Form2.Visible = True End If End Sub

16- Operadores. 16.1-Operadores Aritmticos.


Operadores utilizados para ejecutar clculos matemticos.

Operador ^: Se utiliza para elevar un nmero a la potencia del exponente.


resultado = nmero^exponente Operador *: Se utiliza para multiplicar dos nmeros. resultado = nmero1*nmero2 Operador /: Se utiliza para dividir dos nmeros y obtener un resultado de signo flotante. resultado = nmero1/nmero2 Operador \: Se utiliza para dividir dos nmeros y obtener un resultado entero. resultado = nmero1\nmero2 Operador Mod: Divide dos nmeros y devuelve slo el resto. resultado = nmero1 Mod nmero2 Operador +: Se utiliza para sumar dos nmeros. resultado = expresin1+expresin2 Operador -:Se utiliza para hallar la diferencia entre dos nmeros o para indicar el valor negativo de una expresin numrica. resultado = nmero1-nmero2

16.2-Operadores de Comparacin.
Operadores utilizados para efectuar comparaciones. Se utilizan para comparar expresiones.

Pgina 112 de 161

Curso Visual Basic 5.0

Sintaxis
resultado = expresin1 operadorcomparacin expresin2 resultado = cadena Like patrn Los operadores de comparacin constan de las siguientes partes: Parte Descripcin resultado Obligatorio; cualquier variable numrica. expresin Obligatorio; cualquier expresin. operadorcomparacin Obligatorio; cualquier operador de comparacin. cadena Obligatorio; cualquier expresin de cadena. patrn Obligatorio; cualquier expresin de cadena o intervalo de caracteres. Operador Like: Se utiliza para comparar dos cadenas de caracteres. Sintaxis resultado = cadena Like patrn La sintaxis del operador Like consta de las siguientes partes: Parte Descripcin Resultado Obligatorio; cualquier variable numrica. cadena Obligatorio; cualquier expresin de cadena. patrn Obligatorio; cualquier expresin de cadena que satisface las convenciones de coincidencia de patrones descritas en Comentarios. Comentarios Si cadena coincide con patrn, el resultado es True; si no coincide, el resultado es False. Si cadena o patrn es Null, el resultado es tambin Null. La funcin integrada de bsqueda de coincidencia de patrones ofrece una herramienta verstil para efectuar comparaciones de cadenas. Las caractersticas de esta funcin permiten el empleo de caracteres comodn, listas de caracteres o intervalos de caracteres en cualquier combinacin para hallar coincidencias en cadenas. En la siguiente tabla se indican los caracteres que se pueden poner en patrn y con qu coinciden los mismos: ? Un carcter cualquiera. * Cero o ms caracteres. # Un dgito cualquiera (09).

16.3-Operadores de Concatenacin.
Operadores utilizados para combinar cadenas de caracteres. Operador &: Se utiliza para forzar la concatenacin de las cadenas de dos expresiones. resultado = expresin1 & expresin2

16.4-Operadores Lgicos.
Operadores usados para realizar operaciones lgicas. Operador And: Se utiliza para efectuar una conjuncin lgica de dos expresiones. resultado = expresin1 And expresin2 La sintaxis del operador And consta de las siguientes partes: Parte Descripcin Pgina 113 de 161

Curso Visual Basic 5.0 resultado expresin1 expresin2 Obligatorio; cualquier variable numrica. Obligatorio; cualquier expresin. Obligatorio; cualquier expresin.

Si y slo si ambas expresiones se evalan como True, el resultado es True. Si cualquiera de las expresiones es False, el resultado es False. La siguiente tabla ilustra cmo se determina el resultado: Operador Not: Se utiliza para ejecutar una negacin lgica sobre una expresin. resultado = Not expresin Operador Or: Se utiliza para ejecutar una disyuncin lgica sobre dos expresiones. resultado = expresin1 Or expresin2

17- Funciones ms importantes de Visual Basic. 17.1-Asc.


Devuelve un tipo Integer que representa el cdigo de carcter correspondiente a la primera letra de una cadena. Sintaxis Asc(cadena) El argumento obligatorio cadena es una expresin de cadena vlida. Si cadena no contiene caracteres, se produce un error en tiempo de ejecucin. Ejemplo de la funcin Asc En este ejemplo se utiliza la funcin Asc para devolver el cdigo de carcter correspondiente a la primera letra de una cadena de caracteres. Dim MiNmero MiNmero = Asc("A") MiNmero = Asc("a") MiNmero = Asc("Apple") ' Devuelve 65. ' Devuelve 97. ' Devuelve 65.

17.2-Date
Devuelve un tipo Variant (Date) que contiene la fecha actual del sistema. Sintaxis Date Comentarios Utilice la instruccin Date para establecer la fecha del sistema.

17.3-DateDiff
Devuelve un valor de tipo Variant (Long) que especifica el nmero de intervalos de tiempo entre dos fechas determinadas. Sintaxis DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])

Pgina 114 de 161

Curso Visual Basic 5.0 La sintaxis de la funcin DateDiff consta de los siguientes argumentos con nombre: Parte Descripcin interval Requerido. Expresin de tipo cadena con el intervalo de tiempo utilizado para calcular la diferencia entre date1 y date2. date1, date2 Se requiere; Variant (Date). Las dos fechas que se van a utilizar en el clculo. firstdayofweek Opcional. Constante que especifica el primer da de la semana. Si no se especifica, se asume que es el domingo. firstweekofyear Opcional. Constante, que especifica la primera semana del ao. Si no se especifica, se asume que es aqulla en la que se encuentre el 1 de enero. Valores El argumento interval toma los valores siguientes: Intervalo Descripcin yyyy Ao q Trimestre m Mes y Da del ao d Da w Da de la semana ww Semana h Hora n Minuto s Segundo El argumento firstdayofweek toma los siguientes valores: Constante Valor Descripcin vbUseSystem vbSunday vbMonday vbTuesday vbWednesday vbThursday vbFriday vbSaturday 0 1 2 3 4 5 6 7 Utilice la configuracin de la API de NLS. Domingo (predeterminado) Lunes Martes Mircoles Jueves Viernes Sbado

El argumento firstweekofyear toma los valores siguientes: Constante Valor Descripcin vbUseSystem 0 Utilice la configuracin de la API de NLS. VbFirstJan1 1 Empieza con la semana en la que se encuentra el 1 de enero (predeterminado). VbFirstFourDays 2 Empieza con la primera semana que tenga al menos cuatro das en el nuevo ao. VbFirstFullWeek 3 Empieza con la primera semana que est completamente includa en el nuevo ao. Comentarios Puede utilizar la funcin DateDiff para determinar el nmero de intervalos especificados que existen entre dos fechas. Por ejemplo, con DateDiff podra calcular el nmero de das entre dos fechas o el nmero de semanas entre hoy y el final del ao. Si desea saber el nmero de das entre date1 y date2, puede utilizar Da del ao ("y") o Da ("d"). Cuando interval es Da de la semana ("w"), DateDiff devuelve el nmero de semanas entre las dos fechas. Si date1 es lunes, DateDiff contar el nmero de lunes hasta date2. En la cuenta incluir date2, pero no date1. Si interval es Semana ("ww"), la funcin DateDiff devolver el nmero de semanas entre las dos fechas. En este caso contar el nmero de domingos entre date1 y date2. DateDiff contar date2 si es domingo, pero no date1, aunque sea domingo. Si date1 se refiere a un momento posterior en el tiempo a date2, la funcin DateDiff devolver un nmero negativo. El argumento firstdayofweek afecta a los clculos que utilizan "w" y "ww" como smbolos de intervalo. Pgina 115 de 161

Curso Visual Basic 5.0 Si fecha1 o fecha2 es un literal de fecha, el ao, si se especifica, pasar a ser una parte permanente de la fecha. Sin embargo, si fecha1 o fecha2 est comprendida entre comillas dobles ("") y se omite el ao, se insertar el ao en curso en el cdigo cada vez que se evale la expresin fecha1 o fecha2. As es posible escribir cdigo que se pueda usar en aos distintos. Cuando compara el 31 de diciembre con el 1 de enero del ao siguiente, DateDiff para un ao ("yyyy") devolver 1 aunque slo haya pasado un da.

17.4-DoEvents
Cede el control de la ejecucin al sistema operativo, para que ste pueda procesar otros eventos. Sintaxis DoEvents( ) Comentarios La funcin DoEvents devuelve un tipo Integer que representa el nmero de formularios abiertos por una versin independiente de Visual Basic, como la de Visual Basic edicin estndar. DoEvents devuelve 0 en el resto de las aplicaciones. La funcin DoEvents pasa el control al sistema operativo. El control no se devuelve hasta que el sistema operativo haya terminado de procesar los eventos en cola y se hayan enviado todas las teclas de la cola SendKeys. DoEvents es ms til para tareas sencillas como permitir que un usuario cancele un proceso despus de que ha comenzado, por ejemplo una bsqueda de un archivo. Precaucin Cuando d preferencia al procesador temporalmente dentro de un procedimiento de evento, asegrese de que el procedimiento no se ejecute de nuevo desde una parte diferente del cdigo antes de que devuelva la primera llamada. Esto podra causar resultados impredecibles. Adems, no utilice la funcin DoEvents si existe la posibilidad de que otras aplicaciones interacten con el procedimiento, de manera imprevista, durante el tiempo en que ste ha cedido el control. Ejemplo de la funcin DoEvents En este ejemplo se utiliza la instruccin DoEvents para ceder el control de la ejecucin al sistema operativo una vez cada 1000 iteraciones del bucle. DoEvents devuelve el nmero de formularios de Visual Basic abiertos, slo cuando la aplicacin principal es Visual Basic. ' Crea una variable para mantener el nmero de ' formularios de Visual Basic cargados y visibles Dim I, OpenForms For I = 1 To 150000 ' Inicia el bucle. If I Mod 1000 = 0 Then ' Si el bucle se ejecuta 1000 veces. OpenForms = DoEvents ' Cede el control al sistema operativo. End If Next I ' Incrementa el contador del bucle.

17.5-Format
Devuelve un tipo Variant (String) que contiene una expresin formateada de acuerdo a las instrucciones contenidas en una expresin de formato. Sintaxis Format(expresin[, formato[, primerdadesemana[, primerdadeao]]]) La sintaxis de la funcin Format consta de las siguientes partes: Parte Descripcin expresin Obligatorio. Cualquier expresin vlida. formato Opcional. Una expresin de formato definida por el usuario o con nombre vlida. primerdadesemana Opcional. Una constante que especifica el primer da de la semana. primerdadeao Opcional. Una constante que especifica la primera semana del ao. Pgina 116 de 161

Curso Visual Basic 5.0

Valores El argumento primerdadesemana tiene estos valores: Constante Valor Descripcin vbUseSystem 0 Utiliza el valor de API NLS. VbSunday 1 Domingo (predeterminado) vbMonday 2 Lunes vbTuesday 3 Martes vbWednesday 4 Mircoles vbThursday 5 Jueves vbFriday 6 Viernes vbSaturday 7 Sbado El argumento primerdadeao tiene estos valores: Constante Valor Descripcin vbUseSystem 0 Utiliza el valor de API NLS. vbFirstJan1 1 Comienza con la semana donde est el 1 de enero (predeterminado). vbFirstFourDays 2 Comienza con la primera semana del ao que tenga cuatro das como mnimo. vbFirstFullWeek 3 Comienza con la primera semana completa del ao. Comentarios Para dar formato a: Nmeros: Utilice formatos numricos con nombre predefinidos o cree formatos numricos definidos por el usuario. Fechas y horas: Utilice formatos de fecha/hora con nombre predefinidos o cree formatos de fecha/hora definidos por el usuario. Nmeros seriales de fecha y hora: Utilice formatos de fecha y hora o formatos numricos. Cadenas : Cree sus propios formatos de cadena definidos por el usuario. Ejemplo de la funcin Format En este ejemplo se muestran varios usos de la funcin Format para dar formato a valores utilizando formatos definidos por el usuario y formatos con nombre. La verdadera salida formateada presentada por el sistema para el separador de fecha (/), de hora (:) y el literal AM/ PM depende de las configuraciones en ese momento. Cuando las horas y las fechas se vuelven a listar en el entorno de desarrollo, se utilizan los formatos abreviados de hora y de fecha de la configuracin regional del cdigo. Cuando son presentados por el cdigo en ejecucin, se utilizan los formatos abreviados de fecha y hora de la configuracin regional del sistema, los cuales pueden diferir de la configuracin regional del cdigo. En este ejemplo se asume que es Ingls/Estados Unidos. MiHora y MiFecha se presentan en el entorno de desarrollo utilizando configuraciones actuales de fecha corta y hora corta. Dim MiHora, MiFecha, MiCadena MiHora = #17:04:23# MiFecha = #27 enero 1993# ' Devuelve la hora actual del sistema en el formato largo de hora definido por el sistema. MiCadena = Format(Time, "Long Time") ' Devuelve la fecha actual del sistema en el formato largo de fecha definido por el sistema. MiCadena = Format(Date, "Long Date") MiCadena = Format(MiHora, "h:m:s") ' Devuelve "17:4:23". MiCadena = Format(MiHora, "hh:mm:ss AMPM") ' Devuelve "05:04:23 PM". MiCadena = Format(MiFecha, "dddd, d mmm aaaa")' Devuelve "Mircoles, ' 27 de Ene de 1993". Pgina 117 de 161

Curso Visual Basic 5.0 ' Si no se suministra el formato, devuelve una cadena. MiCadena = Format(23) ' Devuelve "23". ' Formatos definidos por el usuario. MiCadena = Format(5459.4, "##,##0.00") ' Devuelve "5.459,40". MiCadena = Format(334.9, "###0.00") ' Devuelve "334,90". MiCadena = Format(5, "0.00%") ' Devuelve "500,00%". MiCadena = Format("HOLA", "<") ' Devuelve "hola". MiCadena = Format("Esto es", ">") ' Devuelve "ESTO ES".

17.6-Iif
Devuelve uno de entre dos valores, dependiendo de la evaluacin de una expresin. Sintaxis IIf(expr, truepart, falsepart) La sintaxis de la funcin IIf cuenta con los siguientes argumentos con nombre: Parte Descripcin expr Requerido. Expresin que se desea evaluar. Truepart Requerido. Valor o expresin devuelta si expr es True. falsepart Requerido. Valor o expresin devuelta si expr es False. Comentarios IIf siempre evala truepart y falsepart, aunque slo vaya a devolver una de ellas. Por esta razn, deber vigilar que no se produzcan efectos no deseados. Por ejemplo, si al evaluar falsepart se produce un error de divisin por cero, se generar un error aunque expr sea True. Ejemplo de la funcin IIf Este ejemplo utiliza la funcin IIf para calcular el parmetro Prueba del procedimiento Comprobar y devuelve la palabra "Grande" si la cantidad es mayor que 1000; de lo contrario, devuelve la palabra "Pequeo". Function Comprobar (Prueba As Integer) Comprobar = IIf(Prueba > 1000, "Grande", "Pequeo") End Function

17.7-InputBox
Muestra un mensaje en un cuadro de dilogo, espera que el usuario escriba un texto o haga clic en un botn y devuelve un tipo String con el contenido del cuadro de texto. Sintaxis InputBox(prompt[, title][, default][, xpos][, ypos][, helpfile, context]) La sintaxis de la funcin InputBox consta de estos argumentos con nombre: -Prompt: Requerido. Expresin de cadena que se muestra como mensaje en el cuadro de dilogo. La longitud mxima de prompt es de aproximadamente 1024 caracteres, segn el ancho de los caracteres utilizados. Si prompt consta de ms de una lnea, puede separarlos utilizando un carcter de retorno de carro (Chr(13)), un carcter de avance de lnea (Chr(10)) o una combinacin de los caracteres de retorno de carro-avance de lnea (Chr(13) y Chr(10)) entre cada lnea y la siguiente. -title: Opcional. Expresin de cadena que se muestra en la barra de ttulo del cuadro de dilogo. Si omite title, en la barra de ttulo se coloca el nombre de la aplicacin. -default: Opcional. Expresin de cadena que se muestra en el cuadro de texto como respuesta predeterminada cuando no se suministra una cadena. Si omite default, se muestra el cuadro de texto vaco.

Pgina 118 de 161

Curso Visual Basic 5.0 -xpos: Opcional. Expresin numrica que especifica, en twips, la distancia en sentido horizontal entre el borde izquierdo del cuadro de dilogo y el borde izquierdo de la pantalla. Si se omite xpos, el cuadro de dilogo se centra horizontalmente. -ypos: Opcional. Expresin numrica que especifica, en twips, la distancia en sentido vertical entre el borde superior del cuadro de dilogo y el borde superior de la pantalla. Si se omite ypos, el cuadro de dilogo se coloca a aproximadamente un tercio de la altura de la pantalla, desde el borde superior de la misma. -helpfile: Opcional. Expresin de cadena que identifica el archivo de Ayuda que se utilizar para proporcionar ayuda interactiva para el cuadro de dilogo. Si se especifica helpfile, tambin deber especificarse context. -Context: Opcional. Expresin numrica que es el nmero de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context, tambin deber especificarse helpfile. Comentarios Cuando se especifica tanto helpfile como context, el usuario puede presionar F1 para ver el tema de Ayuda correspondiente a context. Si el usuario hace clic en Aceptar o presiona ENTRAR, la funcin InputBox devuelve lo que haya en el cuadro de texto. Si el usuario hace clic en Cancelar, la funcin devuelve una cadena de caracteres de longitud cero (""). Nota Si desea especificar ms que el primer argumento con nombre, debe utilizar InputBox en una expresin. Si desea omitir algunos argumentos de posicin, debe incluir el delimitador de coma correspondiente. Ejemplo de la funcin InputBox En este ejemplo se muestran distintas maneras de utilizar la funcin InputBox para indicar al usuario que debe introducir un valor. Si se omiten las posiciones x e y, el dilogo se centra automticamente segn los ejes respectivos. La variable MyValue contiene el valor introducido por el usuario, si ste elige Aceptar o presiona ENTRAR. Si el usuario elige Cancelar, se devuelve una cadena de caracteres de longitud cero. Dim Mensaje, Ttulo, ValorPred, MiValor Mensaje = " Introduzca un nmero del 1 a 3" ' Establece el mensaje. Ttulo = "Demostracin de InputBox" ' Establece el ttulo. ValorPred = "1" ' Establece el valor predeterminado. ' Muestra el mensaje, el ttulo, y el valor predeterminado. MiValor = InputBox(Mensaje, Ttulo, ValorPred) ' Muestra el mensaje, el ttulo y el valor predeterminado. MiValor = InputBox(Mensaje, Ttulo, , , , "DEMO.HLP", 10) ' Se muestra el dilogo en la posicin 100, 100. MiValor = InputBox(Mensaje, Ttulo, ValorPred, 100, 100)

17.8-Int, Fix
Devuelve un valor del mismo tipo que el que se pas como parmetro y que contiene la parte entera de un nmero.

Sintaxis
Int(nmero) Fix(nmero) El argumento nmero es un tipo Double o cualquier expresin numrica vlida. Si nmero contiene Null, la funcin devolver Null.

Comentarios
Las funciones Int y Fix eliminan la fraccin de un nmero y devuelven el valor entero resultante. La diferencia entre Int y Fix es que si el nmero es negativo, Int devuelve el primer entero negativo menor o igual a nmero, mientras que Fix devuelve el primer entero negativo mayor o igual a nmero. Por ejemplo, Int convierte -8.4 en -9 y Fix convierte -8.4 a -8. La funcin Fix(nmero) es equivalente a: Pgina 119 de 161

Curso Visual Basic 5.0 Sgn(nmero) * Int(Abs(nmero))

17.9-IsDate
Devuelve un valor de tipo Boolean que indica si una expresin se puede convertir en una fecha.

Sintaxis
IsDate(expresin) El argumento expresin requerido, es un tipo de datos Variant que contiene una expresin de fecha o una expresin de cadena reconocible como una fecha o una hora.

Comentarios
La funcin IsDate devuelve True si la expresin es una fecha o se puede convertir en una fecha vlida; en caso contrario, devuelve False. En Microsoft Windows, el intervalo de fechas vlidas va desde el 1 de enero de 100 D.C. hasta el 31 de diciembre de 9999 D.C; los intervalos varan de un sistema operativo a otro. Ejemplo de la funcin IsDate En este ejemplo se utiliza la funcin IsDate para determinar si una expresin puede convertirse en fecha. Dim MiFecha, TuFecha, SinFecha, MiPrueba MiFecha = "12 febrero 1969": TuFecha = #2/12/69#: SinFecha = "Hola" MiPrueba = IsDate(MiFecha) ' Devuelve True. MiPrueba = IsDate(TuFecha) ' Devuelve True. MiPrueba = IsDate(SinFecha) ' Devuelve False.

17.10-IsNull
Devuelve un valor de tipo Boolean que indica si una expresin contiene datos no vlidos (Null).

Sintaxis
IsNull(expresin) El argumento expresin requerido, es un tipo de datos Variant que contiene una expresin numrica o una expresin de cadena.

Comentarios
La funcin IsNull devuelve True si expresin es Null; en cualquier otro caso, IsNull devuelve False. Si expresin est formada por ms de una variable, la presencia de Null en cualquier variable hace que se devuelva True para toda la expresin. El valor Null indica que Variant contiene datos no vlidos. La funcin Null no es la misma que la funcin Empty, la cual indica que una variable todava no ha sido inicializada. Tampoco es lo mismo que una cadena de longitud cero (""), que a veces se suele llamar cadena nula. Importante Utilice la funcin IsNull para determinar si una expresin contiene un valor Null. Las expresiones que espera evaluar como True en ciertas circunstancias, tales como If Var = Null AND If Var <> Null, son siempre False. Esto se debe a que cualquier expresin que contiene un Null es por si misma de valor Null y por consiguiente False. Ejemplo de la funcin IsNull En este ejemplo se utiliza la funcin IsNull para determinar si una variable contiene Null. Dim MiVar, MiPrueba Pgina 120 de 161

Curso Visual Basic 5.0 MiPrueba = IsNull(MiVar) MiVar = "" MiPrueba = IsNull(MiVar) MiVar = Null MiPrueba = IsNull(MiVar) ' Devuelve False.

' Devuelve False.

' Devuelve True.

17.11-Left
Devuelve un tipo Variant (String) que contiene un nmero especificado de caracteres del lado izquierdo de una cadena. Sintaxis Left(string, length) La sintaxis de la funcin Left tiene estos argumentos con nombre: Parte Descripcin string Obligatorio. Expresin de cadena de la cual se devuelven los caracteres que estn ms a la izquierda. Si string contiene Null, se devuelve Null. length Se requiere, un tipo Variant (Long). Expresin numrica que indica cuntos caracteres se van a devolver. Si es 0, devuelve una cadena de longitud cero (""). Si es mayor o igual al nmero de caracteres en string, se devuelve la cadena entera. Comentarios Para determinar el nmero de caracteres en string, utilice la funcin Len.

Ejemplo de la funcin Left


En este ejemplo se utiliza la funcin Left para devolver un nmero especificado de caracteres del lado izquierdo de una cadena. Dim UnaCadena, MiCadena UnaCadena = "Hola Mundo" ' Define la cadena. MiCadena = Left(UnaCadena, 1) ' Devuelve "H". MiCadena = Left(UnaCadena, 6) ' Devuelve "Hola M". MiCadena = Left(UnaCadena, 10) ' Devuelve "Hola Mundo".

17.12-Len
Devuelve un tipo Long que contiene el nmero de caracteres en una cadena o el nmero de bytes necesarios para almacenar una variable.

Sintaxis
Len(cadena | nombrevar) La sintaxis de la funcin Len consta de las siguientes partes: Parte Descripcin cadena Cualquier expresin de cadena vlida. Si cadena contiene Null, se devuelve Null. Nombrevar Cualquier nombre de variable vlido. Si nombrevar contiene Null, se devuelve Null. Si nombrevar es un tipo Variant, Len acta igual que con un tipo String y siempre devuelve el nmero de caracteres que contiene. Pgina 121 de 161

Curso Visual Basic 5.0

Comentarios
Se deben especificar uno (y slo uno) de los dos argumentos posibles. Ejemplo de la funcin Len En este ejemplo se utiliza la funcin Len para devolver el nmero de caracteres en una cadena o el nmero de bytes requeridos para almacenar una variable. Dim MiEntero As Integer, MyCur As Currency Dim MiCadena, MiLong MiCadena = "Hola a todos" MiLong = Len(MiEntero) MiLong = Len(MiCadena) MiLong = Len(MyCur)

' Inicializa la cadenas. ' Devuelve 2. ' Devuelve 11. ' Devuelve 8.

17.13-LoadPicture
Carga un grfico en un control PictureBox o un control Image. Sintaxis LoadPicture([expresin_cadena]) El marcador de posicin expresin_cadena es el nombre del archivo grfico que se quiere cargar. Comentarios Los formatos grficos reconocidos por Visual Basic incluyen archivos de mapas de bits (.BMP), archivos de iconos (.ICO), archivos de longitud codificada (.RLE), metarchivos (.WMF), metarchivos mejorados (.EMF), archivos GIF y archivos JPEG (.JPG). Es posible limpiar los grficos de formularios, cuadros de imagen y controles de imagen si asigna LoadPicture sin argumentos. Para cargar grficos para presentarlos en un control PictureBox, en un control Image o como fondo de un formulario, el valor devuelto por LoadPicture debe asignarse a la propiedad Picture del objeto en el que se quiere presentar la imagen. Por ejemplo: Image1.Picture = LoadPicture("FIESTA.BMP") Para asignar un icono a un formulario, establezca el valor devuelto por la funcin LoadPicture a la propiedad Icon del objeto Form: Set Form1.Icon = LoadPicture("MIICONO.ICO") Ejemplo de la funcin LoadPicture Este ejemplo usa la funcin LoadPicture para cargar una imagen en la propiedad Picture de un formulario y para borrar la imagen del objeto Form. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un objeto Form y despus ejecute el ejemplo y haga clic en el objeto Form. Private Sub Form_Click () Dim Msg as String ' Declara variables. On Error Resume Next ' Establece el tratamiento de errores. Height = 3990 Width = 4890 ' Define el alto y el ancho. Set Picture = LoadPicture("PAPEL.BMP") ' Carga un mapa de bits. If Err Then Msg = "Imposible encontrar el archivo .BMP." Pgina 122 de 161

Curso Visual Basic 5.0 MsgBox Msg ' Presenta el mensaje de error. Exit Sub' Sale si hay error. End If Msg = "Elija "Aceptar" para borrar el mapa de bits del formulario." MsgBox Msg Set Picture = LoadPicture() ' Limpia el formulario. End Sub

17.14-Ltrim, Rtrim y Trim


Devuelve un tipo Variant (String) 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
LTrim(cadena) RTrim(cadena) Trim(cadena) El argumento cadena obligatorio es cualquier expresin de cadena vlida. Si cadena contiene Null, se devuelve Null. Ejemplo de las funciones LTrim, RTrim y Trim En este ejemplo se utilizan las funciones LTrim and RTrim para eliminar espacios a la derecha y a la izquierda de una variable de cadena de caracteres. El uso de la funcin Trim logra el mismo resultado. Dim MiCadena, CadenaCorte MiCadena = " <-Cortar-> " ' Inicializa la cadena. CadenaCorte = LTrim(MiCadena) ' CadenaCorte = "<-Cortar-> ". CadenaCorte = RTrim(MiCadena) ' CadenaCorte = " <-Cortar->". CadenaCorte = LTrim(RTrim(MiCadena)) ' CadenaCorte = "<-Cortar->". ' El uso de la funcin Trim por s sola logra el mismo resultado. CadenaCorte = Trim(MiCadena) ' CadenaCorte = "<-Cortar->".

17.15-Mid
Devuelve un tipo Variant (String) que contiene un nmero especificado de caracteres de una cadena. Sintaxis Mid(string, start[, length]) La sintaxis de la funcin Mid tiene estos argumentos con nombre: Parte Descripcin string Obligatorio. Expresin de cadena de la cual se devuelven los caracteres. Si string contiene Null, se devuelve Null. start Obligatorio; un tipo Long. Posicin de carcter en string en la cual comienza la parte que se quiere tomar. Si start es mayor que el nmero de caracteres en la string, Mid devuelve una cadena de longitud cero (""). length Opcional, un tipo Variant (Long). Nmero de caracteres que se van a devolver. Si se omite o en el texto hay menos de length caracteres (incluyendo el carcter de start), se devuelven todos los caracteres desde la posicin de start hasta el final de la cadena.

Pgina 123 de 161

Curso Visual Basic 5.0

Comentarios
Para determinar el nmero de caracteres en string, utilice la funcin Len.

Ejemplo de la funcin Mid


En este ejemplo se utiliza la funcin Mid para devolver un nmero especificado de caracteres de una cadena. Dim MiCadena, PrimeraPalabra, UltimaPalabra, PalabraMedia MiCadena = "Demostracin funcin Mid" ' Crea la cadena de texto. PrimeraPalabra = Mid(MiCadena, 1, 12) ' Devuelve "Demostracin". UltimaPalabra = Mid(MiCadena, 21, 3) ' Devuelve "Mid". PalabraMedia = Mid(MiCadena, 14) ' Devuelve "funcin Mid".

17.16-MsgBox
Muestra un mensaje en un cuadro de dilogo, espera a que el usuario haga clic en un botn y devuelve un tipo Integer correspondiente al botn elegido por el usuario. Sintaxis MsgBox(prompt[, buttons][, title][, helpfile, context]) La sintaxis de la funcin MsgBox consta de estos argumentos con nombre: Parte -prompt: Requerido. Expresin de cadena que representa el prompt en el cuadro de dilogo. La longitud mxima de prompt es de aproximadamente 1024 caracteres, segn el ancho de los caracteres utilizados. Si prompt consta de ms de una lnea, puede separarlos utilizando un carcter de retorno de carro (Chr(13)) o un carcter de avance de lnea (Chr(10)), o una combinacin de caracteres de retorno de carro-avance de lnea (Chr(13) y Chr(10)) entre cada lnea y la siguiente. -buttons: Opcional. Expresin numrica que corresponde a la suma de los valores que especifican el nmero y el tipo de los botones que se pretenden mostrar, el estilo de icono que se va a utilizar, la identidad del botn predeterminado y la modalidad del cuadro de mensajes. Si se omite este argumento, el valor predeterminado para buttons es 0. -title: Opcional. Expresin de cadena que se muestra en la barra de ttulo del cuadro de dilogo. Si se omite title, en la barra de ttulo se coloca el nombre de la aplicacin. -helpfile: Opcional. Expresin de cadena que identifica el archivo de Ayuda que se utiliza para proporcionar ayuda interactiva en el cuadro de dilogo. Si se especifica helpfile, tambin se debe especificar context. -context: Opcional. Expresin numrica que es igual al nmero de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context, tambin se debe especificar helpfile. Valores El argumento buttons tiene estos valores: Constante Valor Descripcin vbOKOnly 0 Muestra solamente el botn Aceptar. VbOKCancel 1 Muestra los botones Aceptar y Cancelar. VbAbortRetryIgnore 2 Muestra los botones Anular, Reintentar e Ignorar. VbYesNoCancel 3 Muestra los botones S, No y Cancelar. VbYesNo 4 Muestra los botones S y No. VbRetryCancel 5 Muestra los botones Reintentar y Cancelar. VbCritical 16 Muestra el icono de mensaje crtico. VbQuestion 32 Muestra el icono de pregunta de advertencia. VbExclamation 48 Muestra el icono de mensaje de advertencia. VbInformation 64 Muestra el icono de mensaje de informacin. VbDefaultButton1 0 El primer botn es el predeterminado. VbDefaultButton2 256 El segundo botn es el predeterminado. Pgina 124 de 161

Curso Visual Basic 5.0 VbDefaultButton3 VbDefaultButton4 VbApplicationModal VbSystemModal 512 768 0 4096 El tercer botn es el predeterminado. El cuarto botn es el predeterminado. Aplicacin modal; el usuario debe responder al cuadro de mensajes antes de poder seguir trabajando en la aplicacin actual. Sistema modal; se suspenden todas las aplicaciones hasta que el usuario responda al cuadro de mensajes.

El primer grupo de valores (0 a 5) describe el nmero y el tipo de los botones mostrados en el cuadro de dilogo; el segundo grupo (16, 32, 48, 64) describe el estilo del icono, el tercer grupo (0, 256, 512) determina el botn predeterminado y el cuarto grupo (0, 4096) determina la modalidad del cuadro de mensajes. Cuando se suman nmeros para obtener el valor final del argumento buttons, se utiliza solamente un nmero de cada grupo. Nota Estas constantes las especifica Visual Basic for Applications. Por tanto, el nombre de las mismas puede utilizarse en cualquier lugar del cdigo en vez de sus valores reales. Valores devueltos Constante Valor vbOK 1 vbCancel 2 vbAbort 3 vbRetry 4 vbIgnore 5 vbYes 6 vbNo 7 Descripcin Aceptar Cancelar Anular Reintentar Ignorar S No

Comentarios Cuando se proporcionan tanto helpfile como context, el usuario puede presionar F1 para ver el tema de Ayuda correspondiente al context. Si el cuadro de dilogo cuenta con un botn Cancelar, presionar la tecla ESC tendr el mismo efecto que hacer clic en este botn. Si el cuadro de dilogo contiene un botn Ayuda, se suministra ayuda interactiva para ese cuadro de dilogo. Sin embargo, no se devuelve valor alguno hasta que se hace clic en uno de estos botones. Nota Si desea especificar ms que el primer argumento con nombre, debe utilizar MsgBox en una expresin. Si desea omitir algn argumento de posicin, debe incluir el delimitador de coma correspondiente. Ejemplo de la funcin MsgBox En este ejemplo se utiliza la funcin MsgBox para mostrar un mensaje de error crtico en un cuadro de dilogo con botones S y No. El botn No se considera la respuesta predeterminada. El valor devuelto por la funcin MsgBox depende del botn elegido por el usuario. En este ejemplo, se supone que DEMO.HLP es un archivo de Ayuda que contiene un tema con un nmero de contexto igual a 1000. Dim Mensaje, Estilo, Ttulo, Ayuda, Ctxt, Respuesta, MiCadena Mensaje = "Desea continuar?" ' Define el mensaje. Estilo = vbYesNo + vbCritical + vbDefaultButton2 ' Define los botones. Ttulo = "Demostracin de MsgBox" ' Define el ttulo. Ayuda = "DEMO.HLP" ' Define el archivo de ayuda. Ctxt = 1000 ' Define el tema Respuesta = MsgBox(Mensaje, Estilo, Ttulo, Ayuda, Ctxt) If Respuesta = vbYes Then ' El usuario eligi el botn S. MiCadena = "S" ' Ejecuta una accin. Else ' El usuario eligi el botn No. MiCadena = "No" ' Ejecuta una accin. End If

17.17-Right
Pgina 125 de 161

Curso Visual Basic 5.0 Devuelve un tipo Variant (String) que contiene un nmero especificado de caracteres del lado derecho de una cadena. Sintaxis Right(string, lenght) La sintaxis de la funcin Right tiene estos argumentos con nombre: Parte Descripcin String Obligatorio. Expresin de cadena desde la cual se devuelven los caracteres que estn ms a la derecha. Si string contiene Null, se devuelve Null. lenght Se requiere, un tipo Variant (Long). Expresin numrica que indica cuntos caracteres se van a devolver. Si es 0, se devuelve una cadena de longitud cero (""). Si es mayor o igual al nmero de caracteres en string, se devuelve la cadena completa. Comentarios Para determinar el nmero de caracteres en string, utilice la funcin Len. Ejemplo de la funcin Right En este ejemplo se utiliza la funcin Right para devolver un nmero especificado de caracteres de la parte derecha de la cadena. Dim UnaCadena, MiCadena UnaCadena = "Hola Mundo" ' Define una cadena. MiCadena = Right(UnaCadena, 1) ' Devuelve "o". MiCadena = Right(UnaCadena, 6) ' Devuelve "Mundo". MiCadena = Right(UnaCadena, 20) ' ' Devuelve "Hola Mundo".

17.18-Str
Devuelve en un tipo Variant (String) la representacin de cadena de un nmero. Sintaxis Str(nmero) El argumento nmero necesario es un tipo Long que contiene una expresin numrica vlida.

Comentarios
Cuando los nmeros se convierten a cadenas, siempre se reserva un espacio a la izquierda para el signo del nmero. Si nmero es positivo, la cadena devuelta contiene un espacio a la izquierda y el signo ms se da por supuesto. Utilice la funcin Format para convertir valores numricos en valores con formato de fecha, hora, moneda o en otros formatos definidos por el usuario. A diferencia de Str, la funcin Format no incluye un espacio a la izquierda para el signo del nmero. Nota La funcin Str slo reconoce el punto (.) como separador decimal vlido. Ejemplo de la funcin Str En este ejemplo se utiliza Str para devolver una representacin de cadena de un nmero. Cuando un nmero se convierte en una cadena siempre se reserva un espacio a la izquierda para el signo. Dim MiCadena MiCadena = Str(459) ' Devuelve " 459". MiCadena = Str(-459.65) ' Devuelve "-459,65". MiCadena = Str(459.001) ' Devuelve " 459,001".

Pgina 126 de 161

Curso Visual Basic 5.0

17.19-Ucase
Devuelve un tipo Variant (String) que contiene una cadena especificada que se ha convertido a maysculas. Sintaxis UCase(cadena) El argumento cadena necesario es cualquier expresin de cadena vlida. Si string contiene Null, se devuelve Null. Comentarios Slo se convierten a maysculas las letras minsculas. Las letras maysculas o los caracteres que no son letras no sufren cambios. Ejemplo de la funcin UCase En este ejemplo se utiliza la funcin UCase para devolver la versin en maysculas de una cadena. Dim LowerCase, UpperCase LowerCase = "Hola Mundo 1234" ' Cadena a convertir. UpperCase = UCase(LowerCase) ' Devuelve "HOLA MUNDO 1234".

17.20-Val
Devuelve los nmeros contenidos en una cadena como un valor numrico del tipo adecuado. Sintaxis Val(cadena) El argumento obligatorio cadena es cualquier expresin de cadena vlida.

Comentarios
La funcin Val deja de leer la cadena en el primer carcter que no puede reconocer como parte de un nmero. Los smbolos y caracteres que se consideran a menudo parte de valores numricos, como signos de moneda y comas, no se reconocen. Sin embargo, la funcin reconoce los prefijos de base &O (para octal) y &H (para hexadecimal). Los espacios en blanco, los tabuladores y los avances de lnea se eliminan del argumento. Lo siguiente devuelve el valor 1615198: Val(" 1615 198 Calle N.E.")

En el cdigo que se muestra a continuacin, Val devuelve el valor decimal -1 correspondiente al valor hexadecimal entre parntesis: Val("&HFFFF") Nota La funcin Val slo reconoce el punto (.) como separador decimal vlido. Ejemplo de la funcin Val En este ejemplo se utiliza la funcin Val para devolver los nmeros contenidos en una cadena. Dim MiValor MiValor = Val("2457") ' Devuelve 2457. MiValor = Val(" 2 45 7") ' Devuelve 2457. MiValor = Val("24 y 57") ' Devuelve 24. Pgina 127 de 161

Curso Visual Basic 5.0

18- Instrucciones ms usadas en Visual Basic.


2.10.1-FileCopy.
Copia un archivo. Sintaxis FileCopy origen, destino La sintaxis de la instruccin FileCopy consta de los siguientes argumentos con nombre: Parte Descripcin origen Requerido. Expresin de cadena que especifica el nombre de un archivo que se va a copiar. El origen puede incluir el directorio o carpeta y la unidad de disco. Destino Requerido. Expresin de cadena que especifica el nombre del archivo de destino. Puede incluir el directorio o carpeta y la unidad de disco. Comentarios Si intenta utilizar la instruccin FileCopy en un archivo abierto actualmente, se producir un error. Ejemplo de la instruccin FileCopy En este ejemplo se utiliza la instruccin FileCopy para copiar un archivo en otro. Se supone que ARCHORIG es un archivo que contiene informacin. Dim ArchOrigen, ArchDestino ArchOrigen = "ARCHORIG" ' Se define el nombre del archivo de origen. ArchDestino = "ARCHDEST" ' Se define el nombre del archivo de origen. File Copy ArchOrigen, ArchDestino ' Se copia el archivo de origen en el archivo de destino.

2.10.2-Kill
Elimina archivos del disco. Sintaxis Kill nombre_ruta El argumento requerido nombre_ruta es una expresin de cadena que especifica uno o ms nombres de archivos que se van a eliminar. Puede incluir el directorio o carpeta y la unidad de disco. Comentarios La funcin Kill permite el uso de los caracteres comodn '*' (mltiples caracteres) y '?' (un solo carcter) para especificar varios archivos. Se producir un error si intenta usar la instruccin Kill para eliminar un archivo abierto. Nota Para eliminar directorios, utilice la instruccin RmDir. Ejemplo de la instruccin Kill En este ejemplo se utiliza la instruccin Kill para borrar un archivo de un disco. ' Se supone que PRUEBA es un archivo que contiene informacin. Kill "PRUEBA" ' Se elimina el archivo. ' En Microsoft Windows: ' Se eliminan todos los archivos *.TXT del directorio actual. Kill "*.TXT"

Pgina 128 de 161

Curso Visual Basic 5.0

2.10.3-MkDir
Crea un directorio o carpeta. Sintaxis MkDir ruta El argumento requerido ruta es una expresin de cadena que identifica el directorio o carpeta que se va a crear. Puede incluir la unidad de disco. Si no se especifica la unidad de disco, la instruccin MkDir crea el directorio o carpeta en la unidad de disco actual.

Ejemplo de la instruccin MkDir


En este ejemplo se utiliza la instruccin MkDir para crear un directorio o una carpeta. Si no se especifica la unidad de disco, el directorio o carpeta se crea en la unidad actual. MkDir "MIDIR" ' Se crea el directorio o la carpeta.

2.10.4-On Error.
Activa una rutina de control de errores y especifica la ubicacin de la misma en un procedimiento; tambin puede utilizarse para desactivar una rutina de control de errores.

Sintaxis
On Error GoTo lnea On Error Resume Next On Error GoTo 0 La sintaxis de la instruccin On Error puede tener cualquiera de los formatos siguientes: Instruccin: -On Error GoTo lnea: Activa la rutina de control de errores que comienza en la lnea especificada en el argumento necesario lnea. El argumento lnea es cualquier etiqueta de lnea o nmero de lnea. Si se produce un error en tiempo de ejecucin, el control pasa a lnea, activando el controlador de errores. La lnea especificada en el argumento lnea debe encontrarse en el mismo procedimiento que la instruccin On Error; o de lo contrario, se producir un error en tiempo de compilacin. -On Error Resume Next: Especifica que, en caso de que se produzca un error en tiempo de ejecucin, el control pase a la instruccin que sigue inmediatamente a aqulla en la que se ha producido el error, donde contina la ejecucin. -On Error GoTo 0: Desactiva cualquier controlador de errores del procedimiento actual. Comentarios Si no utiliza una instruccin On Error, cualquier error en tiempo de ejecucin que se produzca ser fatal; es decir, aparecer un mensaje de error y la ejecucin se detendr. Nota Una rutina de control de errores no es un procedimiento Sub ni Function,. Es una seccin de cdigo marcada con una etiqueta o un nmero de lnea. Las rutinas de control de errores se basan en el valor de la propiedad Number del objeto Err para determinar la causa del error. Una rutina de control de errores debe comprobar y guardar los valores de las propiedades del objeto Err antes de que pueda producirse otro error o antes de que se llame a un procedimiento que pueda causarlo. Los valores de las propiedades del objeto Err reflejan solamente el error ms reciente. El mensaje de error asociado a Err.Number se encuentra en Err.Description. On Error Resume Next hace que la ejecucin contine en la instruccin que sigue inmediatamente a la que caus el error en tiempo de ejecucin, o en la que sigue inmediatamente a la ltima llamada desde el procedimiento que contiene la instruccin On Error Resume Next. Esta instruccin permite continuar la ejecucin a pesar de que se haya producido un error en tiempo de ejecucin.. Puede colocar la rutina de control de errores donde se producira el error, en Pgina 129 de 161

Curso Visual Basic 5.0 vez de transferir el control a otra posicin dentro del procedimiento. La instruccin On Error Resume Next pasa a estar inactiva cuando se llama a otro procedimiento, por tanto usted debe ejecutar una instruccin On Error Resume Next en cada rutina que llamada si desea un control de errores integrado dentro de la propia rutina. On Error GoTo 0 desactiva el control de errores en el procedimiento actual. No especifica la lnea 0 como el inicio del cdigo de control de errores, ni siquiera cuando el procedimiento contiene una lnea con el nmero 0. Sin una instruccin On Error GoTo 0, el control de errores se desactiva automticamente al salir del procedimiento. Para evitar que el cdigo de control de errores se ejecute cuando no se ha producido ningn error, coloque una instruccin Exit Sub o Exit Function inmediatamente antes de la rutina de control de errores, como en el ejemplo siguiente: Sub InicializarMatriz(Var1, Var2, Var3, Var4) On Error GoTo ControlErrores ... Exit Sub ControlErrores: ... Resume Next End Sub Aqu, el cdigo de control de errores viene a continuacin de la instruccin Exit Sub y precede a End Sub para separarlo del flujo normal del procedimiento. El cdigo de control de errores puede situarse en cualquier lugar del procedimiento. Ejemplo de la instruccin On Error Este ejemplo utiliza primero la instruccin On Error GoTo para especificar la ubicacin de una rutina de control de errores dentro de un procedimiento. En el ejemplo, un intento de eliminar un archivo abierto genera el error nmero 55. El error se controla en la rutina de manejo de errores y a continuacin se devuelve el control a la instruccin que provoc el error. La instruccin On Error GoTo 0 desactiva la deteccin de errores. A continuacin se utiliza la instruccin On Error Resume Next para retardar la deteccin de errores de forma que se pueda conocer con total seguridad el contexto para el error generado por la instruccin posterior. Observe que Err.Clear se utiliza para borrar las propiedades del objeto Err despus de tratar el error. Sub DemoInstrucOnError() On Error GoTo ControlError ' Activa la rutina de control de errores. Open "PRUEBA" For Output As #1 ' Abre archivo para salida. Kill "PRUEBA" ' Intenta eliminar el archivo ' abierto. On Error Goto 0 ' Desactiva la deteccin de errores. On Error Resume Next ' Retarda deteccin de errores. RefObjeto = GetObject("MiWord.Basic") ' Intenta ' iniciar un objeto que no existe, despus ' comprueba errores de Automatizacin. If Err.Number = 440 Or Err.Number = 432 Then ' Indica al usuario lo que ha ocurrido. Luego borra el objeto Err. Msg = "Se produjo un error al intentar abrir el objeto Automatizacin!" MsgBox Msg, , "Prueba de error retardada" Err.Clear ' Borra campos del objeto Err End If Exit Sub' Salir para evitar el controlador. ControlError: ' Rutina de control de errores. Select Case Err.Number ' Evala el nmero de error. Case 55 ' Error "Archivo ya est abierto". Close #1' Cierra el archivo abierto. Case Else ' Puede incluir aqu otras situaciones... Pgina 130 de 161

Curso Visual Basic 5.0 End Select Resume ' Continuar ejecucin en la lnea que ' caus el error. End Sub

2.10.5-Option Explicit
Se usa en el nivel de mdulo para forzar declaraciones explcitas de todas las variables en ese mdulo. Sintaxis Option Explicit Comentarios Si se usa, la instruccin Option Explicit debe aparecer en un mdulo antes de cualquier procedimiento. Cuando Option Explicit aparece en un mdulo, debe declarar explcitamente todas las variables mediante las instrucciones Dim, Private, Public, ReDim o Static. Si intenta usar un nombre de variable no declarado, ocurrir un error en tiempo de compilacin. Nota Utilice Option Explicit para evitar escribir incorrectamente el nombre de una variable existente o para evitar confusiones en el cdigo, donde el alcance de la variable no est claro. Ejemplo de la instruccin Option Explicit En este ejemplo se utiliza la instruccin Option Explicit para forzar la declaracin explcita de todas las variables. Si se intenta utilizar una variable no declarada se obtiene un error en el tiempo de compilacin. La instruccin Option Explicit slo se utiliza en el nivel de mdulo. Option Explicit Dim MiVar MiEnt = 10 MiVar = 10 ' Fuerza la declaracin explcita de variables. ' Declara la variable. ' La variable no declarada genera un error. ' La variable declarada no generar error.

2.10.6-SendKeys
Enva una o ms pulsaciones de teclas a la ventana activa, como si se hubieran presionado desde el teclado. Sintaxis SendKeys string[, wait] La sintaxis de la instruccin SendKeys consta de estos argumentos con nombre: Parte Descripcin string Requerido. Expresin de cadena que especifica las pulsaciones de teclas que se van a enviar. wait Opcional. Valor Boolean que indica el modo de espera. Si este valor es False (predeterminado), se devuelve el control al procedimiento inmediatamente despus de enviar las pulsaciones. Si es True, se procesan las pulsaciones antes de devolver el control al procedimiento. Comentarios Cada tecla est representada por uno o ms caracteres. Para especificar un nico carcter del teclado, se utiliza el carcter propiamente dicho. Por ejemplo, para representar la letra A, utilice "A" como string. Si se desea representar ms de un carcter, agregue cada carcter adicional al que lo precede. Para representar las letras A, B y C, utilice "ABC" para string. El signo ms (+), el smbolo de intercalacin (^), el smbolo de porcentaje (%), la tilde (~) y los parntesis ( ) tienen significados especiales para SendKeys. Para especificar uno de estos caracteres, debe incluirlo entre llaves. Por ejemplo, para especificar el signo ms, utilice {+}. Para especificar caracteres que no se muestran al presionar una tecla (como por ejemplo ENTRAR o TAB) y teclas que representan acciones, en lugar de caracteres, se utilizan los siguientes cdigos: Tecla: Pgina 131 de 161

Curso Visual Basic 5.0 RETROCESO: {BACKSPACE}, {BS}o {BKSP} INTER: {BREAK} BLOQ MAYS: {CAPSLOCK} SUPR: {DELETE} o {DEL} FLECHA ABAJO: {DOWN} FIN: {END} ENTRAR: {ENTER}o ~ ESC: {ESC} AYUDA: {HELP} INICIO: {HOME} INSERT: {INSERT} o {INS} FLECHA IZQUIERDA: {LEFT} BLOQ NM: {NUMLOCK} RE PG: {PGDN} AV PG: {PGUP} IMPR PANT: {PRTSC} FLECHA DERECHA: {RIGHT} BLOQ DESPL: {SCROLLLOCK} TAB: {TAB} FLECHA ARRIBA: {UP} F1: {F1} F2: {F2} F3: {F3} F4: {F4} F5: {F5} F6: {F6} F7: {F7} F8: {F8} F9: {F9} F10: {F10} F11: {F11} F12: {F12} F13: {F13} F14: {F14} F15: {F15} F16: {F16} Para especificar teclas con cualquier combinacin de las teclas MAYS, CTRL y ALT, introduzca delante del cdigo de la tecla uno o ms de los siguientes cdigos: Tecla MAYS: + CTRL (CONTROL): ^ ALT: % Para especificar que se debe mantener presionada una combinacin cualquiera de las teclas MAYS, CTRL y ALT mientras se presionan otras teclas, ponga entre parntesis el cdigo relativo a esas teclas. Por ejemplo, para especificar que se debe mantener presionada MAYS mientras se presionan las teclas E y C, utilice "+(EC)". Para especificar que se debe mantener presionada MAYS mientras se presiona la tecla E y que luego se debe presionar C, sin presionar MAYS, utilice "+EC". Para especificar pulsaciones repetidas de teclas, utilice el formato {tecla nmero}. Debe dejar un espacio en blanco entre tecla y nmero. Por ejemplo, {LEFT 42} significa que se debe presionar la tecla FLECHA IZQUIERDA 42 veces; {h 10} significa que se debe presionar la tecla h 10 veces. Nota No puede utilizar SendKeys para enviar pulsaciones de teclas a aplicaciones que no estn diseadas para funcionar con Microsoft Windows. SendKeys puede enviar tambin la pulsacin de la tecla IMPR PANT (PRTSC) a cualquier aplicacin.

Pgina 132 de 161

Curso Visual Basic 5.0 Ejemplo de la instruccin SendKeys En este ejemplo se utiliza la funcin Shell para ejecutar la aplicacin Calculadora incluida en Microsoft Windows; luego se utiliza la instruccin SendKeys para enviar pulsaciones de teclas para sumar algunos nmeros y finalmente se termina la aplicacin Calculadora. La instruccin SendKeys no est disponible en Macintosh. (Para ver el ejemplo, pguelo en un procedimiento y a continuacin, ejecute el procedimiento. Puesto que AppActivate cambia el enfoque a la aplicacin Calculadora, no puede avanzar paso a paso por el cdigo). Dim ReturnValue, I ReturnValue = Shell("Calc.exe", 1) ' Ejecuta la Calculadora. AppActivate ReturnValue ' Activa la Calculadora. For I = 1 To 100 ' Establece un bucle contador. SendKeys I & "{+}", True ' Enva pulsaciones a la Calculadora Next I ' para sumar cada valor de I. SendKeys "=", True ' Obtiene el total general. SendKeys "%{F4}", True ' Enva ALT+F4 para cerrar la Calculadora.

2.10.7-Unload
Descarga de memoria un formulario.. Sintaxis Unload objeto El marcador de posicin objeto es el nombre de un objeto Form. Comentarios La descarga de un formulario puede ser necesaria o conveniente en aquellos casos en los que la memoria utilizada sea necesaria para alguna otra tarea o cuando sea necesario restablecer las propiedades a sus valores originales. Antes de descargar un formulario se produce el evento Query_Unload, seguido del procedimiento de evento Form_Unload. Si establece el argumento cancelar a True en alguno de estos eventos no se descargar el formulario. Nota Cuando se descarga un formulario, slo se descarga el componente mostrado. El cdigo asociado al mdulo del formulario permanece en memoria. Ejemplo de la instruccin Unload Este ejemplo usa la instruccin Unload para descargar un objeto Form. Para probar este ejemplo, pegue el cdigo en la seccin Declaraciones de un objeto Form y despus ejecute el ejemplo y haga clic en el objeto Form. Private Sub Form_Click () Dim Answer, Msg ' Declara la variable. Unload Form1 ' Descarga el formulario. Msg = "Form1 se ha descargado. Elija "S" para cargarlo y " Msg = Msg & "presentarlo. Elija "No" para cargar el " Msg = Msg & "formulario y dejarlo invisible." Answer = MsgBox(Msg, vbYesNo) ' Obtiene la respuesta del usuario. If Answer = vbYes Then ' Evala la respuesta. Show ' Si es S, muestra el formulario. Else Load Form1 ' Si es No, slo lo carga. Msg = "Form1 se ha cargado. Elija "Aceptar" para mostrarlo." MsgBox Msg ' Presenta el mensaje. Show ' Muestra el formulario. End If End Sub

2.11-Trabajando con menes.


Pgina 133 de 161

Curso Visual Basic 5.0

2.11.1-Creacin de menes con el editor de menes.


Puede utilizar el Editor de mens para crear nuevos mens y barras de mens, agregar nuevos comandos a mens existentes, reemplazar comandos de men existentes por sus propios comandos, y cambiar y eliminar mens y barras de mens existentes. Para presentar el Editor de mens En el men Herramientas, elija Editor de mens. O bien Haga clic en el botn Editor de mens de la barra de herramientas.
.

Aparecer el Editor de mens. Mientras que casi todas las propiedades del control de mens pueden establecerse mediante el Editor de mens, todas las propiedades de los mens estn disponibles en la ventana Propiedades. Las dos propiedades ms importantes de los controles de mens son: Name: es el nombre que se utiliza para hacer referencia al control de mens en el cdigo. Caption: es el texto que aparece en el control.

Otras propiedades del Editor de mens, como Index, Checked y NegotiatePosition, se describen ms adelante en este tema.

2.11.2-Uso del cuadro de lista del editor de menes.


El cuadro de lista del control de mens (la parte inferior del Editor de mens) enumera todos los controles de mens del formulario actual. Cuando escribe un elemento de men en el cuadro de texto Caption, dicho elemento tambin aparece en el cuadro de lista del control de mens. Si selecciona un control de mens existente del cuadro de lista, podr modificar las propiedades de dicho control. Por ejemplo, la figura del editor de menes muestra los controles de mens del men Archivo de una aplicacin tpica. La posicin del control de mens en el cuadro de lista del control de mens determina si el control es un ttulo de men, un elemento de men, un ttulo de submen o un elemento de submen: Un control de mens que aparezca alineado a la izquierda en el cuadro de lista se presenta en la barra de mens como un ttulo de men. Un control de mens que est sangrado una vez en el cuadro de lista se presenta en el men cuando el usuario hace clic en el ttulo de men precedente. Un control de mens sangrado seguido de controles de mens con un nivel mayor de sangra se convierte en un ttulo de submen. Los controles de mens sangrados bajo el ttulo del submen se convierten en elementos del submen. Un control de mens con un guin (-) como propiedad Caption aparece como una barra separadora. Una barra separadora divide los elementos del men en grupos lgicos. Nota Un control de mens no puede ser una barra separadora si es un ttulo de men, tiene elementos submen, est activado o desactivado, o tiene una tecla de mtodo abreviado. Para crear controles de mens en el Editor de mens 1.Seleccione el formulario. 2.En el men Herramientas, elija Editor de mens. o bien Haga clic en el botn Editor de mens de la barra de herramientas. 3.En el cuadro de texto Caption, escriba el texto del ttulo del primer men que quiera que aparezca en la barra de mens. Coloque tambin un signo & delante de la letra que desee que sea la tecla de acceso a dicho elemento de men. Esta letra aparecer subrayada automticamente en el men. El texto del ttulo del men se presenta en el cuadro de lista del control de mens.

Pgina 134 de 161

Curso Visual Basic 5.0 4.En el cuadro de texto Name, escriba el nombre que desee utilizar para hacer referencia al control de mens desde el cdigo. Vea "Recomendaciones de ttulos y nombres de mens", ms adelante en este mismo tema. 5.Haga clic en los botones de flecha a la izquierda o a la derecha para modificar el nivel de sangra del control. 6.Establezca otras propiedades del control, si lo desea. Puede hacerlo con el Editor de mens o, posteriormente, en la ventana Propiedades. 7.Elija Siguiente para crear otro control de mens. o bien Haga clic en Insertar para agregar un control de mens entre controles existentes. Tambin puede hacer clic en los botones de flecha arriba y flecha abajo para mover el control entre los controles de mens existentes. 8.Elija Aceptar para cerrar el Editor de mens cuando haya creado todos los controles de mens del formulario. En el formulario se mostrarn los ttulos de los mens creados. En tiempo de diseo, haga clic en el ttulo de un men para desplegar sus correspondientes elementos de men.

2.11.3-Separacin de elementos de menes.


Una barra separadora se presenta como una lnea horizontal entre los elementos de un men. En un men con muchos elementos, puede utilizar una barra separadora para dividir los elementos en grupos lgicos. Por ejemplo, el men Ayuda de Visual Basic usa barras separadoras para dividir sus elementos de men en tres grupos, como se muestra en la figura.

Figura: Barras separadoras

Para crear una barra separadora con el Editor de mens 1.Si va a agregar una barra separadora a un men existente, elija Insertar para insertar un control de mens entre los elementos de men que desee separar. 2.Si es necesario, haga clic en el botn de flecha a la derecha para sangrar el nuevo elemento de men al mismo nivel que los elementos de men que vaya a separar. 3.Escriba un guin (-) en el cuadro de texto Caption. 4.Establezca la propiedad Name. 5.Elija Aceptar para cerrar el Editor de mens. Nota Aunque las barras separadoras se crean como controles de mens, no responden al evento Click y los usuarios no pueden seleccionarlas.

2.11.4-Asignacin de teclas de acceso y de mtodo abreviado.


Puede mejorar el acceso por teclado a los comandos de los mens si define teclas de acceso y de mtodo abreviado. Teclas de acceso Las teclas de acceso permiten al usuario abrir un men presionando la tecla ALT y escribiendo una letra designada. Una vez abierto el men, el usuario puede elegir un control si presiona la letra (tecla de acceso) asignada al mismo. Por ejemplo, ALT+E podra abrir el men Edicin y P podra seleccionar el elemento de men Pegar. La asignacin de la tecla de acceso aparece como una letra subrayada en el ttulo del control de mens, como se muestra en la figura. Pgina 135 de 161

Curso Visual Basic 5.0 Figura: Teclas de acceso.

Pgina 136 de 161

Curso Visual Basic 5.0

Pgina 137 de 161

Curso Visual Basic 5.0

Para asignar una tecla de acceso a un control de mens con el Editor de mens 1.Seleccione el elemento de men al que desee asignar una tecla de acceso. 2.En el cuadro Ttulo, escriba un signo & inmediatamente delante de la letra que elija como tecla de acceso. Por ejemplo, si abre el men Edicin mostrado en la figura anterior, los siguientes valores de la propiedad Caption se corresponden con las siguientes teclas de acceso.

Nota No use teclas de acceso duplicadas en los mens. Si usa la misma tecla de acceso para ms de un elemento del men, dicha tecla no funcionar. Por ejemplo, si C es la tecla de acceso para Cortar y Copiar, cuando seleccione el men Edicin y presione C, se seleccionar el comando Copiar, pero la aplicacin no ejecutar el comando hasta que presione ENTRAR. El comando Cortar no se seleccionar. Teclas de mtodo abreviado Las teclas de mtodo abreviado ejecutan un elemento de men inmediatamente cuando se presionan. A los elementos de men que se utilizan con ms frecuencia se les puede asignar una tecla de mtodo abreviado, que proporciona un mtodo de acceso por teclado de slo un paso, en lugar del mtodo de tres pasos de presionar ALT, un carcter de acceso al ttulo del men y despus un carcter de acceso al elemento del men. Las asignaciones de mtodos abreviados incluyen combinaciones de teclas de funcin y de control, como CTRL+F1 o CTRL+A. Aparecen en el men a la derecha del elemento de men correspondiente, como se muestra en la figura. Figura: Teclas de mtodo abreviado

Pgina 138 de 161

Curso Visual Basic 5.0 Para asignar una tecla de mtodo abreviado a un elemento de men 1.Abra el Editor de mens. 2.Seleccione el elemento de men. 3.Seleccione una combinacin de teclas de funcin o de otra tecla en el cuadro combinado Shortcut. Para quitar una asignacin de tecla de mtodo abreviado, elija "(Ninguno)" en la parte superior de la lista. Nota Las teclas de mtodo abreviado aparecen automticamente en el men; por tanto, no tiene que escribir CTRL+tecla en el cuadro de texto Caption del Editor de mens.

2.11.5-Creacin de Submenes.
Cada men que cree puede incluir hasta cinco niveles de submens. Un submen sale de otro men para presentar sus propios elementos de men. Puede utilizar un submen cuando: La barra de mens est llena. Un control de mens concreto se utilice con poca frecuencia. Quiera hacer nfasis en la relacin de un control de mens con otro. Sin embargo, si hay sitio en la barra de mens, es mejor crear un ttulo de men adicional en lugar de un submen. De esta manera, todos los controles son visibles para el usuario cuando el men se despliega. Tambin es una buena prctica de programacin restringir el uso de los submens de forma que los usuarios no se pierdan intentando explorar la interfaz de mens de la aplicacin. (La mayora de las aplicaciones utilizan slo un nivel de submens.) En el Editor de mens, cualquier control de mens sangrado bajo un control de mens que no sea un ttulo de men es un control de submens. En general, los controles de submens pueden incluir elementos de submen, barras separadoras y ttulos de submen. Para crear un submen 1.Cree el elemento de men que vaya a ser el ttulo del submen. 2.Cree los elementos que vayan a aparecer en el nuevo submen y sngrelos haciendo clic en el botn de flecha a la derecha. Cada nivel de sangra est precedido por cuatro puntos (.) en el Editor de mens. Para quitar un nivel de sangra, haga clic en botn de flecha a la izquierda. Nota Si est pensando en la posibilidad de utilizar ms de un nivel de submens, piense en utilizar un cuadro de dilogo en su lugar. Los cuadros de dilogo permiten que los usuarios especifiquen varias opciones en un nico lugar. Para obtener informacin acerca del uso de cuadros de dilogo, vea "Cuadros de dilogo", ms adelante en este mismo tema.

2.11.6-Escritura de cdigo para controles de menes.


Cuando el usuario elige un control de mens, se produce un evento Click. Es necesario escribir un procedimiento de evento Click para cada control de mens. Todos los controles de mens, excepto las barras separadoras (y los controles de mens desactivados o invisibles), reconocen el evento Click. El cdigo que escribe en un procedimiento de evento de men no es diferente del que escribira en los procedimientos de evento de cualquier otro control. Por ejemplo, el cdigo de un evento Click para el elemento Cerrar del men Archivo podra parecerse a lo siguiente: Sub mnuFileClose_Click () Unload Me End Sub Visual Basic presenta automticamente un men cuando se elige el ttulo del men; por tanto, no es necesario que escriba cdigo para el procedimiento de evento Click de un ttulo de men a menos que quiera realizar alguna otra accin, como desactivar ciertos elementos del men cuando ste sea visible.

Pgina 139 de 161

Curso Visual Basic 5.0 Nota En tiempo de diseo, los mens que cree se presentarn en el formulario al cerrar el Editor de mens. Al elegir un elemento de un men dentro del formulario se presenta el procedimiento de evento Click de dicho control de mens.

2.12-Depuracin y control de errores.


2.12.1-Planteamientos de depuracin.
Las tcnicas de depuracin que se presentan en este tema usan las herramientas de anlisis proporcionadas por Visual Basic. Visual Basic no puede diagnosticar ni solucionar los errores por usted, pero proporciona las herramientas para ayudarle a analizar cmo fluye la ejecucin de una parte del procedimiento a otra y cmo cambian los valores de las propiedades y las variables a medida que se ejecutan las instrucciones. Las herramientas de depuracin le dejan examinar dentro de la aplicacin para ayudarle a determinar lo que pasa y por qu. La depuracin en Visual Basic incluye puntos de interrupcin, expresiones de interrupcin, expresiones de inspeccin, paso a paso a travs de una instruccin o procedimiento cada vez y presentacin de los valores de las variables y las propiedades. Visual Basic tambin incluye caractersticas especiales de depuracin, como la posibilidad de modificar y continuar, establecimiento de la prxima instruccin para ejecutar y prueba de procedimientos mientras la aplicacin est en modo de interrupcin.

2.12.2- Tipos de errores.


Para entender de qu manera puede ser til la depuracin, considere los tres tipos de errores que se puede encontrar. Errores de compilacin Errores en tiempo de ejecucin Errores lgicos

2.12.3-Errores de Compilacin.
Los errores de compilacin se producen por un cdigo creado incorrectamente. Si escribe incorrectamente una palabra clave, omite algn signo de puntuacin necesario o usa una instruccin Next sin la instruccin For correspondiente en tiempo de diseo, Visual Basic detectar estos errores cuando compile la aplicacin. Los errores de compilacin incluyen errores en la sintaxis. Por ejemplo, podra tener una instruccin como sigue: Left Left es una palabra vlida en el lenguaje de Visual Basic, pero sin un objeto, no cumple con los requisitos sintcticos para esa palabra (objeto.Left). Si ha seleccionado la opcin Comprobacin automtica de sintaxis en la ficha Editor del cuadro de dialogo Opciones, Visual Basic presentar un mensaje de error tan pronto como introduzca un error sintctico en la ventana Cdigo. Para establecer la opcin Comprobacin automtica de sintaxis 1.En el men Herramientas, seleccione Opciones y haga clic en la ficha Editor del cuadro de dilogo Opciones. 2.Seleccione Comprobacin automtica de sintaxis.

2.12.4-Errores en tiempo de ejecucin


Los errores en tiempo de ejecucin se producen mientras la aplicacin est en ejecucin (y Visual Basic los detecta) cuando una instruccin intenta una operacin que es imposible de realizar. Un ejemplo de esto es una divisin por cero. Suponga que tiene esta instruccin: Velocidad = Kilmetros / Horas Si la variable Horas contiene cero, la divisin no es una operacin vlida, incluso aunque la instruccin sea sintcticamente correcta. La aplicacin se debe ejecutar antes de que se pueda detectar este error.

2.12.5-Errores lgicos.
Pgina 140 de 161

Curso Visual Basic 5.0

Los errores lgicos se producen cuando una aplicacin no acta de la forma que se pretenda. Una aplicacin puede tener cdigo sintcticamente vlido, ejecutarse sin llevar a cabo ninguna operacin que no sea vlida y, an as, producir resultados incorrectos. Slo si prueba la aplicacin y analiza los resultados puede comprobar que la aplicacin est actuando correctamente.

2.12.6-Como ayudan las herramientas de depuracin.


Las herramientas de depuracin estn diseadas para ayudarle con: Los errores lgicos y los que se producen en tiempo de ejecucin. La observacin del comportamiento del cdigo que no tiene errores. Por ejemplo, un resultado incorrecto puede producirse al final de una larga serie de clculos. En la depuracin, la tarea es determinar dnde ha fallado algo y qu es lo que ha fallado. Quiz se le ha olvidado inicializar una variable, ha elegido el operador equivocado o ha utilizado una frmula incorrecta. No hay trucos mgicos para depurar y no hay una secuencia fija de pasos que funcione todas las veces. Bsicamente, la depuracin le ayuda a entender qu es lo que est sucediendo mientras se ejecuta su aplicacin. Las herramientas de depuracin le ofrecen una instantnea del estado actual de su aplicacin, incluyendo lo siguiente: La apariencia de la interfaz de usuario (UI). Los valores de las variables, expresiones y propiedades. Las llamadas a los procedimientos activos. Cuanto mejor entienda cmo funciona su aplicacin, ms rpido podr encontrar los errores.

2.12.7-La barra de herramientas de depuracin.


Entre sus muchas herramientas de depuracin, Visual Basic proporciona varios botones en la barra de herramientas opcional Depuracin que son muy tiles. La figura muestra estas herramientas. Para presentar la barra de herramientas Depuracin, haga clic con el botn secundario del mouse (ratn) en la barra de herramientas de Visual Basic y seleccione la opcin Depuracin. Figura: La barra de herramientas Depuracin

La siguiente tabla describe brevemente el objetivo de cada herramienta. Los temas de este tema tratan las situaciones en las que cada una de estas herramientas le pueden ayudar a depurar o analizar una aplicacin con ms eficacia. Herramienta de depuracin Punto de interrupcin Objetivo Define una lnea en la ventana Cdigo donde Visual Basic suspende la ejecucin de una aplicacin. Pgina 141 de 161

Curso Visual Basic 5.0 Paso a paso por instrucciones Paso a paso por procedimientos Paso a paso para salir Ventana Locales Ventana Inmediato Ventana Inspeccin Inspeccin rpida Pila de llamadas Ejecuta la siguiente lnea ejecutable de cdigo de la aplicacin y recorre paso a paso las instrucciones de procedimientos. Ejecuta la siguiente lnea ejecutable de cdigo de la aplicacin sin recorrer paso a paso las instrucciones de procedimientos. Ejecuta el resto del procedimiento actual y se interrumpe en la siguiente lnea del procedimiento de llamada. Presenta el valor actual de las variables locales. Le permite ejecutar cdigo o valores de consulta mientras la aplicacin est en modo de interrupcin. Presenta los valores de las expresiones seleccionadas. Presenta el valor actual de una expresin mientras la aplicacin est en modo de interrupcin. Mientras est en modo de interrupcin, presenta un cuadro de dilogo que muestra todos los procedimientos a los que se ha llamado, pero que todava no se han ejecutado completamente.

2.13-Creacin de un programa de instalacin.


2.13.1-Uso del Asistente para instalar de Visual Basic.
El Asistente para instalar de Visual Basic facilita la creacin de un programa de instalacin para una aplicacin. Al igual que otros asistentes, el Asistente para instalar le pide informacin para poder crear lo que quiera. En la mayora de los casos, el Asistente para instalar es todo lo que necesitar para crear un programa de instalacin. Para iniciar el Asistente para instalar 1-Si el proyecto para el que quiere crear un programa de instalacin est abierto, gurdelo y cierre Visual Basic. 2-Seleccione el icono Asistente para instalar del men Inicio de Visual Basic 5.0, en Windows 95 o en Windows NT 4.0, o del Grupo de programas de Visual Basic 5.0, en el Administrador de programas de Windows NT 3.51. Cada pantalla del Asistente para instalar le pedir informacin acerca del proyecto y le permitir elegir qu opciones quiere incorporar al programa de instalacin, cmo se va a distribuir, si quiere que el Asistente para instalar compile la aplicacin, etc. En cada una de estas pantallas se explica adems su uso, cundo cierta informacin es opcional y qu informacin debe introducir antes de que el proceso pueda continuar (antes de que pueda pasar a la prxima pantalla). A medida que avanza en cada pantalla, si necesita ms informacin, presione F1 o haga clic en el botn Ayuda.

2.13.2-Opciones de Distribucin.
Puede distribuir la aplicacin en disquetes, en CD o en una red. Si va a utilizar disquetes, puede elegir el mtodo Disquete o el mtodo Directorios de discos del Asistente para instalar. Si piensa distribuir la aplicacin en un CD o en una red, puede elegir el mtodo Directorio nico o el mtodo Directorios de disco. Figura: Eleccin de las opciones de distribucin con el Asistente para instalar

Pgina 142 de 161

Curso Visual Basic 5.0

Si piensa distribuir la aplicacin en disquetes, puede utilizar la opcin Unidad de discos para generar discos flexibles en el equipo o puede crear imgenes de disquetes para emplearlas con un servicio de duplicado de discos mediante la opcin Directorios de discos. Si piensa distribuir la aplicacin en una red o en CD, tambin tiene dos opciones. Puede utilizar la opcin Directorio nico o la opcin Directorios de discos. Ambos mtodos copian los archivos de instalacin en un directorio temporal del equipo o de un servidor de red. A continuacin puede ubicar los archivos de instalacin en el servidor de red adecuado o transferirlos a un CD. Unidad de discos Para crear disquetes para el programa de instalacin de la aplicacin cuando no necesite imgenes de disco, seleccione la opcin Unidad de discos de la pantalla Mtodo de distribucin del Asistente para instalar. Esta pantalla est disponible cuando ejecuta el Asistente para instalar y selecciona la opcin Crear un programa de instalacin. El Asistente para instalar le preguntar el tipo de disquete (1,44, 1,2, 720 360) y la unidad de disco del equipo. Al igual que en la mayora de las funciones del Asistente para instalar, se le pedir que confirme los archivos y dependencias del proyecto. Una vez confirmados, el Asistente para instalar determinar la disposicin de los disquetes, comprimir los archivos apropiados y los copiar a la unidad de disco, pidindole que inserte y quite disquetes cuando sea necesario. Tambin puede utilizar la opcin Directorios de discos para crear imgenes de disco del programa de instalacin. El Asistente para instalar realiza esencialmente las mismas acciones que para la opcin Unidad de discos, excepto que las imgenes se copian a directorios separados de un directorio temporal del equipo o de un servidor de red en lugar de copiarse a la unidad de disquetes. A continuacin puede copiarlos manualmente a discos, ubicar los archivos en un servidor de red y permitir que los usuarios los copien a disquetes (si est trabajando en un entorno de red) o proporcionales un servicio de duplicado de disquetes. Directorio nico Puede crear una instalacin de directorio nico si selecciona la opcin Directorio nico. Debe utilizar esta opcin o la opcin Directorios de discos cuando desee distribuir la aplicacin en una red o en CD. Esta tcnica simplemente copia todos los archivos de instalacin a un nico directorio.

Pgina 143 de 161

Curso Visual Basic 5.0 Cuando seleccione esta opcin, el Asistente para instalar le pedir que confirme los archivos y dependencias del proyecto y, a continuacin, comprimir y copiar los archivos apropiados a un directorio temporal del equipo o del servidor de red. De forma predeterminada, los archivos se copian a C:\Windows\Temp\SwSetup. Despus, puede copiar los archivos al servidor de red o transferirlos a un CD. Directorios de discos La opcin Directorios de discos copia los archivos a una estructura de directorios que se asemeja a los discos de distribucin: Disk1, Disk2, Disk3, etc. Al igual que con la opcin Directorio nico, cuando seleccione esta opcin el Asistente para instalar le pedir que confirme los archivos y las dependencias del proyecto, y despus comprimir y copiar los archivos apropiados a un directorio temporal del equipo o del servidor de red. De forma predeterminada, los archivos se copian a C:\Windows\Temp\SwSetup. Puede copiar estos directorios (Disk1, Disk2, etc.) a un servidor de red o transferirlos a un CD para su distribucin. El usuario puede instalar la aplicacin simplemente si abre la carpeta Disk1 y hace doble clic en el programa de instalacin.

2.13.3-Instalacin de Componentes de acceso a datos.


Si la aplicacin utiliza Objetos de acceso a datos (DAO), el Asistente para instalar le pedir que elija los componentes ISAM apropiados y de espacio de trabajo. Puede elegir uno o ms formatos de base de datos ISAM. Al menos debe seleccionar un espacio de trabajo; el Asistente para instalar no le permitir desactivar las dos opciones de espacio de trabajo: debe seleccionar una o ambas. Si la aplicacin requiere controladores ODBC, debe instalarlos por separado. Para obtener ms informacin, consulte ms adelante. Figura: Opciones de acceso a datos

Creacin de un disco de instalacin para aplicaciones ODBC Para la Edicin profesional y la Edicin empresarial, si crea una aplicacin con ODBC y desea distribuirla, debe crear un disco de instalacin de ODBC. Antes de instalar la aplicacin de Visual Basic en la mquina del usuario (mediante un programa de instalacin que haya escrito), debe instalar ODBC. Nota Si la aplicacin utiliza Objetos de datos remotos (RDO), debe dar instrucciones al usuario para que instale los controladores ODBC antes de instalar la aplicacin. Si no se instalan primero los controladores ODBC, los componentes RDO no se registrarn.

Pgina 144 de 161

Curso Visual Basic 5.0 Para crear un disco de instalacin de ODBC 1-Copie todos los archivos del subdirectorio \Odbc del directorio principal de Visual Basic a un disco o a un directorio de red. 2-Antes de instalar la aplicacin en la mquina del usuario, ejecute el programa Setup.exe del disco de instalacin de ODBC o del directorio de red. Utilice la funcin Shell para ejecutar el archivo Setup.exe de ODBC desde el programa de instalacin o asigne al disco de instalacin de ODBC un ttulo como "Programa de instalacin de ODBC: ejecute Setup.exe antes de instalar la aplicacin". Despus de ubicar los archivos ODBC en un disco, compruebe el disco de instalacin de ODBC en una mquina que no tenga archivos ODBC. Nota Para instalar ODBC en la mquina de un usuario, debe utilizar el programa de instalacin proporcionado en el subdirectorio \Odbc del directorio principal de Visual Basic. Algunos de los archivos ODBC estn comprimidos y el programa de instalacin debe descomprimirlos para instalarlos correctamente.

3) Acceso a Bases de Datos con Visual Basic y Lenguage SQL.


3.1-Fundamentos del lenguage SQL.
3.1.1- Qu es SQL?
SQL es un lenguaje de programacin de bases de datos cuyos orgenes estn estrechamente relacionados con la invencin de las bases de datos relacionales por E. F. Codd a principios de los 70. Un antecedente del actual SQL fue el lenguaje Sequel, razn por la cual SQL todava se pronuncia en ingls como sequel en vez de letra a letra, aunque las dos pronunciaciones son aceptables. El SQL moderno ha evolucionado hasta ser un estndar utilizado ampliamente en bases de datos relacionales y se define por la norma ANSI. La mayora de las implementaciones de SQL tienen pocas variaciones respecto al estndar, incluyendo la versin admitida por el motor de base de datos Jet. Estas diferencias se contemplan ms adelante en este tema, pero la estructura y el funcionamiento generales del lenguaje son muy coherentes entre los distintos fabricantes. Si ha utilizado alguna implementacin de SQL, no tendr dificultad en realizar la transicin a la versin de Microsoft Jet. SQL frente a desplazamiento Como se describi antes en este manual, el motor de base de datos Microsoft Jet proporciona dos mtodos para la mayora de las tareas con bases de datos: Un modelo de desplazamiento basado en el movimiento por los registros de las bases de datos. Un modelo relacional basado en el lenguaje de consulta estructurado (SQL). Los programadores que estn familiarizados con sistemas de bases de datos orientados a archivos, como dBASE, FoxPro y Paradox, se sentirn ms cmodos con los modelos de desplazamiento. No obstante, en la mayora de los casos, el mtodo equivalente de SQL es ms eficiente y debe usarse cuando sea importante el rendimiento. Adems, SQL tiene la ventaja de ser una interfaz de bases de datos estndar, por lo que conocer los comandos de SQL permite tener acceso y manipular una gran variedad de productos de bases de datos procedentes de distintos fabricantes. En la prctica, a menudo se encontrar utilizando los dos modelos simultneamente. Por ejemplo, podra utilizar la instruccin SQL SELECT para crear un pequeo Recordset de elementos seleccionados de una tabla grande y a continuacin emplear los mtodos de desplazamiento Move para avanzar por el Recordset y examinar determinados registros de uno en uno. Nota Los trminos relacionales fila y columna equivalen a los conocidos trminos de bases de datos registro y campo. Puesto que SQL es un lenguaje de base de datos relacional puro, los trminos fila y columna se utilizan con ms frecuencia para describir el funcionamiento de los comandos SQL. Para evitar confusiones, ambos conjuntos de trminos se usan indistintamente en este tema. Recuerde simplemente que una fila es un registro y una columna un campo.

3.1.2-Componentes de SQL.
El lenguaje SQL est compuesto por comandos, clusulas, operadores y funciones agregadas. Estos elementos se combinan en las instrucciones empleadas para crear, actualizar y manipular bases de datos. Pgina 145 de 161

Curso Visual Basic 5.0

3.1.2.1-Comandos de SQL
Comando SELECT INSERT UPDATE DELETE Descripcin Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado. Utilizado para cargar lotes de datos en la base de datos en una nica operacin. Utilizado para modificar los valores de determinados campos y registros. Utilizado para quitar registros de una tabla de base de datos.

3.1.2.2-Clusulas de SQL
Las clusulas son condiciones de modificacin utilizadas para definir los datos que desea seleccionar o manipular. La siguiente tabla muestra las clusulas que puede utilizar. Clusula Descripcin FROM Utilizada para especificar la tabla de la cual se van a seleccionar los registros. WHERE Utilizada para especificar las condiciones que deben cumplir los registros que se van a seleccionar. GROUP BY Utilizada para separar los registros seleccionados en grupos especficos. HAVING Utilizada para expresar la condicin que debe satisfacer cada grupo. ORDER BY Utilizada para ordenar los registros seleccionados de acuerdo con un orden especificado.

3.1.2.3-Operadores de SQL
Existen dos tipos de operadores en SQL: operadores lgicos y operadores de comparacin. Operadores lgicos Los operadores lgicos se usan para conectar expresiones, normalmente dentro de una clusula WHERE. Por ejemplo: SELECT * from Mitabla WHERE condicin1 AND condicin2 Aqu el operador AND conecta las expresiones condicin1 y condicin2 para especificar que se deben cumplir las dos condiciones para satisfacer el criterio de seleccin. Los operadores lgicos son: AND OR NOT Operadores de comparacin Los operadores de comparacin se usan para comparar valores relativos de dos expresiones con el fin de determinar la accin que debe ejecutarse. Por ejemplo: SELECT * from Editores WHERE Id_de_editor = 5 Aqu el operador = especifica que slo se seleccionarn los registros que tengan un campo Id_de_editor con un valor de 5. Los operadores de comparacin se enumeran en la siguiente tabla. Operador Significado/Uso < Menor que <= Menor o igual que > Mayor que >= Mayor o igual que = Igual que <> Distinto de BETWEEN Utilizado para especificar un intervalo de valores LIKE Utilizado en la comparacin de modelos IN Utilizado para especificar registros de una base de datos

3.1.2.4-Funciones agregadas de SQL.


Pgina 146 de 161

Curso Visual Basic 5.0

Las funciones agregadas se usan dentro de una clusula SELECT en grupos de registros para devolver un nico valor que se aplica a un grupo de registros. Por ejemplo, la funcin agregada AVG devuelve el promedio de todos los valores de un determinado campo de un objeto Recordset. La siguiente tabla enumera las funciones agregadas. Funcin agregada Descripcin AVG Utilizada para calcular el promedio de los valores de un determinado campo. COUNT Utilizada para devolver el nmero de registros de la seleccin. SUM Utilizada para devolver la suma de todos los valores de un determinado campo. MAX Utilizada para devolver el valor ms alto de un campo especificado. MIN Utilizada para devolver el valor ms bajo de un campo especificado.

3.1.3-Comandos ms importantes de SQL


3.1.3.1-Select
Pide al motor de base de datos Microsoft Jet que devuelva informacin de la base de datos como un conjunto de registros. Sintaxis SELECT [predicado] { * | tabla.* | [tabla.]campo1 [AS alias1] [, [tabla.]campo2 [AS alias2] [, ...]]} FROM expresintabla [, ...] [IN basededatosexterna] [WHERE... ] [GROUP BY... ] [HAVING... ] [ORDER BY... ] La sintaxis de la instruccin SELECT consta de las siguientes partes: Parte Descripcin predicado Uno de los siguientes predicados: ALL, DISTINCT, DISTINCTROW o TOP. Puede utilizar el predicado para limitar el nmero de registros devueltos. Si no especifica ninguno, el valor predeterminado es ALL. * Especifica que se seleccionan todos los campos de la tabla o tablas especificadas. tabla El nombre de la tabla que contiene los campos de la que se van a seleccionar los registros. campo1, campo2 Los nombres de los campos que contienen los datos que desea recuperar. Si incluye ms de un campo, stos se recuperan en el orden enumerado. alias1, alias2 Los nombres que se van a utilizar como encabezados de columnas en vez de los nombres de columnas originales en tabla. expresintabla El nombre de la tabla o las tablas que contienen los datos que desea recuperar. Basededatosexterna El nombre de la base de datos que contiene las tablas en expresintabla si no estn en la base de datos activa. Comentarios Para realizar esta operacin, el motor de base de datos Microsoft Jet busca la tabla o las tablas especificadas, extrae las columnas elegidas, selecciona las filas que cumplen los criterios y ordena o agrupa las filas resultantes en el orden especificado. Las instrucciones SELECT no modifican los datos de la base de datos. La instruccin SELECT suele ser la primera palabra en una instruccin SQL. La sintaxis mnima para una instruccin SELECT es: SELECT campos FROM tabla Puede utilizar un asterisco (*) para seleccionar todos los campos de una tabla. El ejemplo siguiente selecciona todos los campos de la tabla Empleados: SELECT * FROM Empleados; Si se incluye un nombre de campo en ms de una tabla en la instruccin FROM, escriba delante el nombre de la tabla y el operador . (punto). En el siguiente ejemplo, el campo Departamento est en la tabla Empleados y en la tabla Pgina 147 de 161

Curso Visual Basic 5.0 Supervisores. La instruccin SQL selecciona los departamentos de la tabla Empleados y los nombres de supervisores de la tabla Supervisores: SELECT Empleados.Departamento, Supervisores.NombreSupervisor FROM Empleados INNER JOIN Supervisores WHERE Empleados.Departamento = Supervisores.Departamento; Cuando se crea un objeto Recordset, el motor de base de datos Microsoft Jet utiliza el nombre de campo de la tabla como el nombre de objeto Field en el objeto Recordset. Si desea un nombre de campo diferente o un nombre que no participe en la expresin utilizada para generar el campo, utilice la palabra reservada AS. El siguiente ejemplo utiliza el ttulo Nacimiento para dar nombre al objeto Field devuelto en el objeto Recordset resultante: SELECT FechaNacimiento AS Nacimiento FROM Empleados; Siempre que utilice funciones de dominio agregado o consultas que devuelvan nombres de objetos Field ambiguos o duplicados, debe utilizar la clusula AS para proporcionar un nombre alternativo para el objeto Field. El siguiente ejemplo utiliza el ttulo CuentaEncabezado para dar nombre al objeto Field devuelto del objeto Recordset resultante: SELECT COUNT(IdEmpleado) AS CuentaEncabezado FROM Empleados; Puede utilizar otras clusulas en una instruccin SELECT para limitar y organizar an ms los datos devueltos. Para obtener ms informacin al respecto, vea el tema de Ayuda relativo a las clusulas que est utilizando.

3.1.3.2-Delete
Crea una consulta de eliminacin que elimina registros de una o ms tablas enumeradas en la clusula FROM y que cumplen la clusula WHERE. Sintaxis DELETE [tabla.*] FROM tabla WHERE criterio La instruccin DELETE consta de las siguientes partes: Parte Descripcin tabla El nombre opcional de la tabla cuyos registros se van a eliminar. tabla El nombre de la tabla cuyos registros se van a eliminar. criterio Una expresin que determina qu registros se van a eliminar.

Comentarios
La instruccin DELETE es especialmente til cuando desea eliminar muchos registros. Cuando utiliza DELETE slo se elimina el dato; la estructura de la tabla y todas sus propiedades, como los atributos y los ndices de los campos, permanecen intactos. Puede utilizar DELETE para quitar registros de las tablas que estn en una relacin uno a varios con otras tablas. Las operaciones de eliminacin en cascada hacen que los registros de las tablas que estn en el lado varios de la relacin se eliminen cuando el registro correspondiente del lado uno de la relacin se elimina en la consulta. Por ejemplo, en la relacin entre las tablas Clientes y Pedidos, la tabla Clientes est en el lado uno y la tabla Pedidos est en el lado varios de la relacin. La eliminacin de un registro de la tabla Clientes provoca que los registros correspondientes de la tabla Pedidos se eliminen si se especifica la opcin de eliminacin en cascada. Una consulta de eliminacin suprime registros completos, y no slo los datos de los campos especficos. Si desea eliminar valores de un campo especfico, cree una consulta de actualizacin que cambie los valores a Null. Importante Despus de quitar registros utilizando una consulta de eliminacin, no puede deshacer la operacin. Si desea saber qu registros se eliminaron, primero examine el resultado con una consulta de seleccin que utilice el mismo criterio y despus ejecute la consulta de eliminacin. Mantenga siempre copias de seguridad de sus datos. Si elimina los registros por equivocacin, podr recuperarlos de sus copias de seguridad. Pgina 148 de 161

Curso Visual Basic 5.0

3.1.3.3-Insert
Agrega uno o varios registros a una tabla. Esto se conoce como una consulta de datos aadidos.

Sintaxis
Consulta de datos aadidos para mltiples registros: INSERT INTO destino [IN basededatosexterna] [(campo1[, campo2[, ...]])] SELECT [origen.]campo1[, campo2[, ...] FROM expresintabla Consulta de datos aadidos para un registro: INSERT INTO destino [(campo1[, campo2[, ...]])] VALUES (valor1[, valor2[, ...]) La instruccin INSERT INTO consta de las siguientes partes: -destino: El nombre de la tabla o consulta donde se van a aadir registros. -Basededatosexterna: La ruta de una base de datos externa. Si desea una descripcin de la ruta de acceso, vea la clusula IN. -origen: El nombre de la tabla o consulta de donde se van a copiar registros. -Campo1, campo2: Los nombres de los campos donde se van a aadir los datos, si est a continuacin del argumento destino, o los nombres de los campos de donde se obtienen los datos, si est a continuacin de un argumento origen. -Expresintabla: El nombre de la tabla o las tablas de donde se van a insertar los registros. Este argumento puede ser un nombre de tabla sencillo o uno compuesto resultante de una operacin INNER JOIN, LEFT JOIN o RIGHT JOIN, o una consulta guardada. -Valor1, valor2: Los valores que se van a insertar en los campos especficos del nuevo registro. Cada valor se inserta en el campo que corresponde a la posicin del valor en la lista: valor1 se inserta en campo1 del nuevo registro, valor2 dentro de campo2, y as sucesivamente. Debe separar los valores con una coma y escribir los campos de texto entre comillas (' '). Comentarios Puede utilizar la instruccin INSERT INTO para agregar un nico registro a una tabla utilizando la sintaxis de consulta de datos aadidos para un nico registro como se muestra anteriormente. En este caso, su cdigo especifica el nombre y valor de cada campo del registro. Debe especificar cada uno de los campos del registro a los que se va a asignar un valor y dicho valor para ese campo. Cuando no especifique cada campo, se inserta el valor predeterminado o Null en las columnas no especificadas. Los registros se agregan al final de la tabla. Tambin puede utilizar la instruccin INSERT INTO para aadir un conjunto de registros de otra tabla o consulta utilizando la clusula SELECT ... FROM tal y como se muestra anteriormente en la sintaxis de consulta de datos aadidos para mltiples registros. En este caso, la clusula SELECT especifica los campos a aadir a la tabla destino especificada. La tabla origen o destino puede especificar una tabla o una consulta. Si especifica una consulta, el motor de base de datos Microsoft Jet aade registros a cualquiera y a todas las tablas especificadas en la consulta. La instruccin INSERT INTO es opcional pero cuando se incluye, debe preceder a la instruccin SELECT. Si su tabla de destino contiene una clave principal, asegrese de que aade un valor nico y distinto de Null al campo o campos de la clave principal; si no, el motor de base de datos Microsoft Jet no aadir los registros. Si aade registros a una tabla con un campo de tipo AutoNumber y desea volver a numerar los registros aadidos, no incluya el campo AutoNumrico en su consulta. Incluya el campo Autonumrico en la consulta si desea conservar los valores originales del campo. Utilice la clusula IN para aadir registros a una tabla de otra base de datos. Para ver qu registros se van a aadir antes de ejecutar la consulta de datos aadidos, ejecute primero una consulta de seleccin que utilice el mismo criterio de seleccin para ver los resultados. Una consulta de datos aadidos copia los registros de una o ms tablas a otra. Las tablas que contienen los registros que aade no se ven afectadas por la consulta de datos aadidos. En lugar de aadir registros existentes de otra tabla, puede especificar el valor de cada campo en un registro nuevo utilizando la clusula VALUES. Si omite la lista de campos, la clusula VALUES debe incluir un valor para cada

Pgina 149 de 161

Curso Visual Basic 5.0 campo de la tabla o; de lo contrario; la instruccin INSERT fallar. Utilice una instruccin INSERT INTO adicional con una clusula VALUES para cada registro adicional que desee crear.

3.1.3.4-Update
Crea una consulta de actualizacin que cambia los valores de los campos en una tabla especfica segn un criterio especfico. Sintaxis UPDATE tabla SET nuevovalor WHERE criterio; La instruccin UPDATE consta de las siguientes partes: Parte Descripcin tabla El nombre de la tabla cuyos datos desea modificar. Nuevovalor Una expresin que determina el valor que se va insertar en un campo concreto de los registros actualizados. Criterio Una expresin que determina qu registros se actualizarn. Slo se actualizan los registros que satisfacen la expresin. Comentarios La instruccin UPDATE es especialmente til desea cambiar muchos registros o cuando los registros que desea cambiar estn en mltiples tablas. Puede cambiar varios campos al mismo tiempo. El ejemplo siguiente aumenta los valores de Importe Pedido en un 10 por ciento y los valores de Cargo en un 3 por ciento para las compaas de envo de Mxico: UPDATE Pedidos SET ImportePedido = ImportePedido * 1.1, Cargo = Cargo * 1.03 WHERE PasDestinatario = 'Mxico';

Importante
La instruccin UPDATE no genera un conjunto de resultado. Adems, despus de actualizar registros utilizando una consulta de actualizacin, no puede deshacer la operacin. Si desea saber qu registros se actualizaron, examine primero el resultado de una consulta de seleccin que utilice el mismo criterio y despus ejecute la consulta de actualizacin. Mantenga siempre copias de seguridad de sus datos. Si actualiza registros equivocados, puede recuperarlos desde sus copias de seguridad.

3.1.4-Clusulas ms importantes de SQL


3.1.4.1-From
Especifica las tablas o consultas que contienen la lista de campos enumerados en la instruccin SELECT. Sintaxis SELECT listacampos FROM expresintabla [IN basededatosexterna] Una instruccin SELECT que contiene una clusula FROM consta de las siguientes partes: Parte Descripcin listacampos El nombre del campo o de los campos que se van a recuperar junto con cualquier alias de nombre de campo, funciones de dominio agregado de SQL, predicados de seleccin (ALL, DISTINCT, DISTINCTROW o TOP) u otras opciones de la instruccin SELECT. Expresintabla Una expresin que identifica a una o ms tablas de las que se van a recuperar datos. La expresin puede ser un nombre de tabla nico, un nombre de consulta guardada o una Pgina 150 de 161

Curso Visual Basic 5.0 composicin resultante de una clusula INNER JOIN, LEFT JOIN o RIGHT JOIN. Basededatosexterna La ruta completa de una base de datos externa que contiene todas las tablas en expresintabla. Comentarios La clusula FROM es obligatoria y sigue a cualquier instruccin SELECT. El orden de los nombres de las tablas en expresintabla no es importante. Para mejorar el rendimiento y facilitar el uso, se recomienda que utilice una tabla vinculada en lugar de una clusula IN para recuperar datos de una base de datos externa. El siguiente ejemplo muestra cmo puede recuperar datos de la tabla Empleados: SELECT Apellidos, Nombre FROM Empleados;

3.1.4.2-Where
Especifica qu registros de las tablas enumeradas en la clusula FROM se ven afectados por la instruccin SELECT, UPDATE o DELETE. Sintaxis SELECT listacampos FROM expresintabla WHERE criterio Un instruccin SELECT que contiene una clusula WHERE consta de las siguientes partes: Parte Descripcin listacampos El nombre del campo o de los campos que se van a recuperar con cualquier alias de nombre de campo, predicado de seleccin (ALL, DISTINCT, DISTINCTROW o TOP) u otras opciones de la instruccin SELECT. Expresintabla El nombre de la tabla o de las tablas de las que se van a recuperar los datos. Criterio Una expresin que deben cumplir los registros para que se incluyan en el resultado de la consulta. Comentarios El motor de base de datos Microsoft Jet selecciona los registros que cumplen las condiciones enumeradas en la clusula WHERE. Si no especifica una clusula WHERE, la consulta devuelve todas las filas de la tabla. La clusula WHERE es opcional, pero cuando se incluye, sigue a la clusula FROM. Por ejemplo, puede seleccionar todos los empleados del departamento de ventas (WHERE Dept = 'Ventas') o todos los clientes que tengan entre 18 y 30 aos (WHERE Edad Between 18 And 30). Si no utiliza una clusula JOIN para realizar operaciones de combinacin SQL en mltiples tablas, el objeto Recordset resultante no podr actualizar. La clusula WHERE es similar a la clusula HAVING. La clusula WHERE determina qu registros se seleccionan. De forma parecida, una vez que los registros se agrupan con la clusula GROUP BY, la clusula HAVING determina qu registros se van a mostrar. Utilice la clusula WHERE para eliminar registros que no desea que se agrupen mediante una clusula GROUP BY. Utilice varias expresiones para determinar qu registros devuelve la instruccin SQL. Por ejemplo, la siguiente instruccin SQL selecciona todos los empleados cuyos salarios son superiores a $21,000: SELECT Apellidos, Salario FROM Empleados WHERE Salario > 21000; Una clusula WHERE puede contener hasta 40 expresiones vinculadas por operadores lgicos, como And y Or. Cuando introduce un nombre de campo que contiene un espacio en blanco o un signo de puntuacin, escriba el nombre entre corchetes ([ ]). Por ejemplo, una tabla de informacin de clientes podra incluir informacin acerca de unos clientes concretos: SELECT [Restaurante favorito del cliente]

Pgina 151 de 161

Curso Visual Basic 5.0 Cuando especifica el argumento criterio, los literales de fecha deben estar en el formato de EE.UU., incluso si no est utilizando la versin norteamericana del motor de base de datos Microsoft Jet. Por ejemplo, el 10 de mayo de 1996, se escribe 10/5/96 en Espaa y Latinoamrica, y 5/10/96 en Estados Unidos de Amrica. Asegrese de escribir los literales de fecha entre signos # como se muestra en los siguientes ejemplos. Para encontrar registros con fecha 10 de mayo de 1996 en una base de datos espaola o latinoamericana, debe utilizar la siguiente instruccin SQL: SELECT * FROM Pedido WHERE Fecha de envo = #5/10/96#; Tambin puede utilizar la funcin DateValue, que reconoce las configuraciones internacionales establecidas por Microsoft Windows. Por ejemplo, utilice este cdigo para Estados Unidos de Amrica: SELECT * FROM Pedidos WHERE Fecha de envo = DateValue('5/10/96'); Y utilice este cdigo para Espaa y Latinoamrica: SELECT * FROM Pedidos WHERE Fecha de envo = DateValue('10/5/96');

3.1.4.3-Order By
Ordena los registros resultantes de una consulta por un campo o unos campos especificados en sentido ascendente o descendente. Sintaxis SELECT listacampos FROM tabla WHERE criterioseleccin [ORDER BY campo1 [ASC | DESC ][, campo2 [ASC | DESC ]][, ...]]] Una instruccin SELECT que contenga una clusula ORDER BY consta de las siguientes partes: Apartado Descripcin listacampos El nombre del campo o de los campos que se van a recuperar junto con cualquier alias de nombre de campo, funciones de dominio agregado de SQL , predicado de seleccin (ALL, DISTINCT, DISTINCTROW o TOP) u otras opciones de la instruccin SELECT. tabla El nombre de la tabla o tablas de las que se van a recuperar los datos. Para obtener ms informacin al respecto, vea la clusula FROM. criterioseleccin Criterio de seleccin. Si la instruccin incluye una clusula WHERE, el motor de base de datos Microsoft Jet ordena los valores despus de aplicar las condiciones de la clusula WHERE a los registros. Campo1, campo2 Los nombres de los campos por los que se va a ordenar. Comentarios La clusula ORDER BY es opcional. Sin embargo, si desea que su datos se muestren ordenados, debe utilizar la clusula ORDER BY. El orden predeterminado es ascendente (A a Z, 0 a 9). Los dos ejemplos siguientes ordenan los nombres de los empleados por su apellido: SELECT Apellidos, Nombre FROM Empleados ORDER BY Apellidos; SELECT Apellidos, Nombre FROM Empleados ORDER BY Apellidos ASC; Pgina 152 de 161

Curso Visual Basic 5.0

Para ordenar en sentido descendente (de Z a A,y de 9 a 0), agregue la palabra reservada DESC al final de cada campo por el que desee ordenar en sentido descendente. El siguiente ejemplo selecciona los sueldos y los ordena en sentido descendente: SELECT Apellidos, Salario FROM Empleados ORDER BY Salario DESC, Apellidos; Si especifica un campo que contiene datos de tipo Memo u Objeto OLE en la clusula ORDER BY, se produce un error. El motor de base de datos Microsoft Jet no ordena campos de estos tipos. La clusula ORDER BY suele ser el ltimo elemento de una instruccin SQL. Puede incluir campos adicionales en la clusula ORDER BY. Los registros se ordenan primero por el primer campo enumerado despus de la clusula ORDER BY. Los registros que tengan valores iguales en ese campo se ordenan entonces por el valor del segundo campo, y as sucesivamente.

3.1.5-Operaciones ms importantes de SQL


3.1.5.1-Inner Join
Combina registros de dos tablas siempre que existan valores coincidentes en un campo comn. Sintaxis FROM tabla1 INNER JOIN tabla2 ON tabla1.campo1 operadorcomp tabla2.campo2 La operacin INNER JOIN consta de las siguientes partes: Parte Descripcin tabla1, tabla2 Los nombres de las tablas cuyos registros se van a combinar. Campo1, campo2 Los nombres de los campos que se van a combinar. Si no son numricos, los campos deben ser del mismo tipo de datos y contener la misma clase de datos, pero no tienen porqu tener el mismo nombre. Operadorcomp Cualquier operador de comparacin relacional: "=," "<," ">," "<=," ">=," o "<>." Comentarios Puede utilizar una operacin INNER JOIN en cualquier clusula FROM. Esta es el tipo de combinacin ms comn. Las combinaciones internas combinan los registros de dos tablas siempre que tengan valores coincidentes en un campo comn a ambas tablas. Puede utilizar INNER JOIN con las tablas Departamentos y Empleados para seleccionar todos los empleados de cada departamento. En cambio, para seleccionar todos los departamentos (aunque alguno no tenga empleados asignados) o todos los empleados (aunque alguno no est asignado a ningn departamento), puede utilizar una operacin LEFT JOIN o RIGHT JOIN para crear una combinacin externa. Si intenta combinar campos que contienen datos de tipo Memo se produce un error. Puede combinar dos campos numricos cualesquiera de tipos similares. Por ejemplo, puede combinar campos AutoNumber y Long puesto que son tipos similares. Sin embargo, no puede combinar campos de tipo Single y Double. El siguiente ejemplo muestra cmo podra combinar las tablas Categoras y Productos por el campo IdCategora: SELECT NombreCategora, NombreProducto FROM Categoras INNER JOIN Productos ON Categoras.IdCategora = Productos.IdCategora; En el ejemplo anterior, IdCategora es el campo combinado, pero no se incluye en la salida de la consulta porque no est incluido en la instruccin SELECT. Para incluir el campo combinado, incluya el nombre de campo en la instruccin SELECT; en este caso, Categoras. IdCategora. Tambin puede vincular varias clusulas ON en una instruccin JOIN, utilizando la sintaxis siguiente: SELECT campos FROM tabla1 INNER JOIN tabla2 ON tabla1.campo1 operadorcomp tabla2.campo1 AND ON tabla1.campo2 operadorcomp tabla2.campo2) OR ON tabla1.campo3 operadorcomp tabla2.campo3)]; Pgina 153 de 161

Curso Visual Basic 5.0

Tambin puede anidar instrucciones JOIN utilizando la sintaxis siguiente: SELECT campos FROM tabla1 INNER JOIN (tabla2 INNER JOIN [( ]tabla3 [INNER JOIN [( ]tablax [INNER JOIN ...)] ON tabla3.campo3 operadorcomp tablax.campox)] ON tabla2.campo2 operadorcomp tabla3.campo3) ON tabla1.campo1 operadorcomp tabla2.campo2; Una operacin LEFT JOIN o RIGHT JOIN se puede anidar dentro de una operacin INNER JOIN, pero una operacin INNER JOIN no se puede anidar dentro de LEFT JOIN o RIGHT JOIN.

3.1.5.2-Left Join, Right Join


Combinan registros de la tabla de origen cuando se utiliza en cualquier clusula FROM. Sintaxis FROM tabla1 [ LEFT | RIGHT ] JOIN tabla2 ON tabla1.campo1 operadorcomp tabla2.campo2 Las operaciones LEFT JOIN y RIGHT JOIN consta de las siguientes partes: Parte Descripcin tabla1, tabla2 El nombre de las tablas cuyos registros se van a combinar. Campo1, campo2 Nombres de los campos que se combinan. Los campos deben ser del mismo tipo de datos y contener la misma clase de dato, pero no necesitan tener el mismo nombre. operadorcomp Cualquier operador de comparacin relacional: "=," "<," ">," "<=," ">=," or "<>." Comentarios Utilice una operacin LEFT JOIN para crear una combinacin externa por la izquierda. Las combinaciones externas por la izquierda pueden incluir todos los registros de la primera (parte izquierda) de dos tablas, aunque no haya valores coincidentes para los registros de la segunda tabla (parte derecha). Utilice una operacin RIGHT JOIN para crear una combinacin externa por la derecha. Las combinaciones externas por la izquierda pueden incluir todos los registros de la segunda (parte derecha) de dos tablas, aunque no haya valores coincidentes para los registros de la primera tabla (parte izquierda). Por ejemplo, podra utilizar LEFT JOIN con las tablas Departamentos (parte izquierda) y Empleados (parte derecha) para seleccionar todos los departamentos, incluyendo aquellos que no tengan empleados asignados a ellos. Para seleccionar todos los empleados, incluyendo aquellos que no estn asignados a ningn departamento, podra utilizar RIGHT JOIN. El siguiente ejemplo muestra cmo podra combinar las tablas Categoras y Productos mediante el campo IdCategora. La consulta produce una lista de todas las categoras, incluyendo aquellas que no contienen productos: SELECT NombreCategora, NombreProducto FROM Categoras LEFT JOIN Productos ON Categoras.IdCategora = Productos.IdCategora; En este ejemplo, el campo combinado es IdCategora pero no se incluye en el resultado de la consulta porque no est incluido en la instruccin SELECT. Para incluir el campo combinado, introduzca el nombre del campo en la instruccin SELECT; en este caso, Categoras.IdCategora. Notas Para crear una consulta que incluya slo los registros en los cuales los datos de los campos combinados son los mismos, utilice una operacin INNER JOIN. Una operacin LEFT JOIN o RIGHT JOIN se puede anidar en una INNER JOIN, pero una INNER JOIN no se puede anidar en una LEFT JOIN o RIGHT JOIN. Vea la explicacin del anidamiento en el tema dedicado a INNER JOIN para ver cmo se anidan combinaciones dentro de otras combinaciones. Puede vincular mltiples clusulas ON. Vea la explicacin de la vinculacin de clusulas en el tema dedicado a INNER JOIN para ver cmo se hace. Pgina 154 de 161

Curso Visual Basic 5.0 Si intenta combinar campos que contienen datos tipo Memo, se produce un error.

3.1.6-Operadores ms importantes en SQL


3.1.6.1-Like
Compara una expresin de cadena con un modelo en una expresin SQL.

Sintaxis
expresin Like "modelo" La sintaxis del operador Like consta de las siguientes partes: Parte Descripcin Expresin Expresin SQL utilizada en una clusula WHERE. modelo Cadena o literal de cadena de caracteres con la que se compara expresin. Comentarios Puede utilizar el operador Like para encontrar valores en un campo que coincidan con el modelo que se especific. Para modelo, puede especificar el valor completo (por ejemplo , Like "Garca") o puede utilizar caracteres comodn para encontrar un intervalo de valores (por ejemplo, Like "Ga*"). En una expresin, puede utilizar el operador Like para comparar un valor de campo con una expresin de cadena. Por ejemplo, si introduce Like "C*" en una consulta SQL, la consulta devuelve todos los valores de campo que empiecen con la letra C. El siguiente ejemplo devuelve los datos que empiezan con la letra P seguida de cualquier letra entre A y F, y tres nmeros: Like "P[A-F]###" La tabla siguiente muestra cmo puede utilizar el operador Like para probar expresiones de diferentes mtodo modelos.

3.2-Objetos de Acceso a Bases de Datos.


3.2.1-DBEngine.
El objeto DBEngine es el objeto de nivel ms alto en el modelo de objeto DAO.

Pgina 155 de 161

Curso Visual Basic 5.0

Comentarios
El objeto DBEngine contiene y controla todos los otros objetos en la jerarqua de los objetos del DAO. No puede crear objetos DBEngine adicionales y el objeto DBEngine no es un elemento de ninguna coleccin. Con cualquier tipo de base de datos o conexin, puede: Utilizar la propiedad Version para obtener el nmero de versin del DAO. Utilizar la propiedad DefaultType para establecer el tipo predeterminado de conexin de base de datos que utilizarn a continuacin los objetos Workspace creados. Utilizar las propiedades DefaultPassword y DefaultUser para establecer la identificacin de usuario y contrasea para el objeto Workspace predeterminado. Utilizar el mtodo CreateWorkspace para crear un objeto Workspace nuevo. Puede utilizar argumentos opcionales para sobrescribir los valores de las propiedades DefaultType, DefaultPassword y DefaultUser. Utilizar el mtodo OpenDatabase para abrir una base de datos en el Workspace predeterminado y utilizar los mtodos BeginTrans, Commit y Rollback para controlar transacciones en el Workspace predeterminado. Utilizar la coleccin Workspaces para hacer referencia a objetos Workspace especficos. Utilizar la coleccin Errors para examinar detalles sobre los errores de acceso a datos. Otras propiedades y mtodos slo estn disponibles cuando utiliza DAO con el motor de base de datos Microsoft Jet. Puede utilizarlos para controlar el motor de base de datos Microsoft Jet, manipular sus propiedades y ejecutar tareas en objetos temporales que no son elementos de colecciones. Por ejemplo, puede: Utilizar el mtodo CreateDatabase para crear un nuevo objeto Microsoft Jet Database. Utilizar el mtodo Idle para activar el motor de base de datos Microsoft Jet y completar las tareas pendientes. Utilice los mtodos CompactDatabase y RepairDatabase para mantener los archivos de base de datos. Utilizar las propiedades IniPath y SystemDB para especificar la ubicacin de la informacin de Registro de Windows de Microsoft Jet y el archivo de informacin de grupo de trabajo Microsoft Jet, respectivamente. El mtodo SetOption le permite sobrescribir los valores del Registro de Windows para el motor de base de datos Microsoft Jet. Despus de cambiar los valores de la propiedad DefaultType y IniPath, slo los objetos Workspace subsiguientes reflejarn estos cambios. Para hacer referencia a una coleccin que pertenezca al objeto DBEngine, a un mtodo o a una propiedad que se aplique a este objeto, utilice la siguiente sintaxis: [DBEngine.][coleccin | mtodo | propiedad] Mtodos Mtodos BeginTrans, CommitTrans, Rollback Mtodo OpenConnection Mtodo CompactDatabase Mtodo OpenDatabase Mtodo CreateDatabase Mtodo RegisterDatabase Mtodo CreateWorkspace Mtodo RepairDatabase Mtodo Idle Mtodo SetOption Propiedades Propiedad DefaultType Propiedad DefaultUser, DefaultPassword Propiedad IniPath

Propiedad LoginTimeout Propiedad SystemDB Propiedad Version

3.2.2-Workspace

Pgina 156 de 161

Curso Visual Basic 5.0 Un objeto Workspace define una sesin para un usuario. Contiene las bases de datos abiertas y proporciona mecanismos para realizar transacciones y, en espacios de trabajo Microsoft Jet admite asegurar grupos de trabajo. Tambin controles si utiliza el motor de base de datos Microsoft Jet o ODBCDirect para tener acceso a datos externos.

Comentarios
Utilice el objeto Workspace para administrar la sesin actual o para iniciar una sesin adicional. En una sesin, puede abrir mltiples bases de datos o conexiones y administrar transacciones. Por ejemplo, puede: Utilizar las propiedades Name, UserName y Type para establecer una sesin con nombre. La sesin crea un alcance en el que puede abrir mltiples bases de datos y dirigir una instancia de transacciones anidadas. Utilice el mtodo Close para terminar una sesin. Utilizar el mtodo OpenDatabase para abrir una o ms bases de datos existentes en ese Workspace. Utilizar los mtodos BeginTrans, CommitTrans y Rollback para administrar el proceso de transacciones anidadas en un Workspace y utilizar varios objetos Workspace para realizar varias transacciones simultneas y superpuestas. Adems, utilizar una base de datos Microsoft Jet, puede establecer seguridad basada en nombres de usuario y contraseas: Utilice las colecciones Groups y Users para establecer permisos de acceso a nivel de grupo y usuario a objetos en el objeto Workspace. Utilice la propiedad IsolateODBCTrans para aislar mltiples transacciones que involucren a la misma base de datos ODBC conectada a Microsoft Jet. Cuando hace la primera referencia o utiliza un objeto Workspace, automticamente crea el espacio de trabajo predeterminado, DBEngine.Workspaces(0). Los valores de las propiedades Name y UserName del espacio de trabajo predeterminado son "#Default Workspace#" y "Admin," respectivamente. Si est establecida la seguridad, el valor de la propiedad UserName es el nombre del usuario que inici la sesin. Cuando utilice transacciones, afecta a todas las bases de datos del objeto Workspace especificado - incluso si estn abiertos mltiples objetos Database en el objeto Workspace. Por ejemplo, utilice un mtodo BeginTrans, actualice varios registros en una base de datos y despus elimine registros en otra base de datos. Si despus utiliza el mtodo Rollback, las operaciones de actualizacin y eliminacin se cancelan y se deshacen los cambios. Puede crear objetos Workspace adicionales para administrar transacciones independientemente a travs de los objetos Database. Puede crear objetos Workspace con el mtodo CreateWorkspace. Despus de crear un nuevo objeto Workspace, debe agregarlo a la coleccin Workspaces si necesita hacer referencia a l desde la coleccin Workspaces. Puede utilizar un objeto Workspace creado nuevamente sin agregarlo a la coleccin Workspaces. Sin embargo, debe hacer referencia a l mediante la variable de objeto que tiene asignada. Para hacer referencia a un objeto Workspace en una coleccin por su nmero de orden o por el valor de la propiedad Name, utilice cualquiera de los formatos de sintaxis siguientes: DBEngine.Workspaces(0) DBEngine.Workspaces("nombre") DBEngine.Workspaces![nombre] Mtodos Mtodos BeginTrans, CommitTrans, Rollback

Mtodo CreateUser Pgina 157 de 161

Curso Visual Basic 5.0 Mtodo Close Mtodo CreateDatabase Mtodo CreateGroup Mtodo OpenConnection Mtodo OpenDatabase

Propiedades Propiedad DefaultCursorDriver Propiedad Name Propiedad IsolateODBCTrans Propiedad Type Propiedad LoginTimeout Propiedad UserName

3.2.3-Database.
Un objeto Database representa una base de datos abierta.

Comentarios Para manipular una base de datos abierta se utiliza un objeto Database y sus mtodos y propiedades. En cualquier tipo de bases de datos, puede: Utilizar el mtodo Execute para ejecutar una consulta de accin. Utilizar la propiedad RecordsAffected para determinar cuntos registros se cambiaron en una consulta de accin. Utilizar el mtodo OpenRecordset para ejecutar una consulta de seleccin y crear un objeto Recordset. Utilizar la propiedad Version para determinar qu versin de un motor de base de datos cre la base de datos. Con una base de datos Microsoft Jet (archivo .mdb), tambin puede utilizar otros mtodos, propiedades y colecciones para manipular un objeto Database, y para crear, modificar u obtener informacin acerca de sus tablas, consultas y relaciones. Por ejemplo, puede: Utilizar los mtodos CreateTableDef y CreateRelation para crear respectivamente tablas y relaciones. Utilizar el mtodo CreateProperty para definir nuevas propiedades Database. Utilizar el mtodo CreateQueryDef para crear una definicin de consulta permanente o temporal. Utilizar los mtodos MakeReplica, Synchronize y PopulatePartial para crear y sincronizar rplicas parciales o completas de la base de datos. Establecer la propiedad CollatingOrder para establecer el orden alfabtico para campos de tipo carcter en diferentes idiomas. Utilice el mtodo CreateDatabase para crear un objeto Database permanente que se anexa automticamente a la coleccin Databases y de ese modo guardarlo en disco. No necesita especificar el objeto DBEngine cuando utiliza el mtodo OpenDatabase. Abrir una base de datos con tablas vinculadas no establece automticamente vnculos a los archivos externos especificados o a los origen de datos ODBC conectados a Microsoft Jet. Debe hacer referencia a los objetos TableDef o Field de la tabla o abrir un objeto Recordset. Si no puede establecer vnculos a estas tablas, se produce un error interceptable. Tambin puede necesitar permiso para tener acceso a la base de datos u otro usuario podra tener abierta la base de datos de modo exclusivo. En estos casos se producen errores interceptable. Tambin puede utilizar el mtodo OpenDatabase para abrir una base de datos externa (como FoxPro, dBASE y Paradox) directamente en vez de abrir una base de datos Microsoft Jet que tiene vnculos con las tablas. Pgina 158 de 161

Curso Visual Basic 5.0 Nota No se recomienda abrir un objeto Database directamente en un origen de datos ODBC conectado a Microsoft Jet, como Microsoft SQL Server, porque el rendimiento de la consulta es mucho ms lento que cuando se utilizan tablas vinculadas. Sin embargo, el rendimiento no es un problema al abrir un objeto Database directamente en un archivo de base de datos ISAM externo, como FoxPro o Paradox. Cuando un procedimiento que declara un objeto Database termina su ejecucin, estos objetos Database locales se cierran junto con cualquier objeto Recordset abierto. Todas las actualizaciones pendientes se pierden y las transacciones pendientes se reanudan, pero no se produce ningn error. Se pueden terminar explcitamente las transacciones pendientes o editar y cerrar objetos Recordset y Database, antes de abandonar los procedimientos que declaran localmente esas variables del objeto. Cuando utiliza uno de los mtodos de transaccin (BeginTrans, CommitTrans o Rollback) en el objeto Workspace, estas transacciones se aplican a todas las bases de datos abiertas en el Workspace desde el que se abri el objeto Database. Si desea utilizar transacciones independientes, primero debe abrir un objeto Workspace adicional y despus abrir otro objeto Database en ese objeto Workspace. Nota Puede abrir el mismo origen de datos o base de datos ms de una vez, creando nombres duplicados en la coleccin Databases. Debe asignar objetos Database a variables de objeto y hacer referencia a ellas con un nombre de variable. Mtodos Mtodo Close Mtodo MakeReplica Mtodo CreateProperty Mtodo NewPassword Mtodo CreateQueryDef Mtodo OpenRecordset Mtodo CreateRelation Mtodo PopulatePartial Mtodo CreateTableDef Mtodo Synchronize Mtodo Execute Propiedades Propiedad CollatingOrder Propiedad ReplicaID Propiedad Connect Propiedad Transactions Propiedad Connection Propiedad Updatable Propiedad Name Propiedad V1xNullBehavior Propiedad QueryTimeout Propiedad Version Propiedad RecordsAffected Propiedad Replicable

3.2.4-Recordset.
Un objeto Recordset representa los registros de una tabla base o los registros que se generan al ejecutar una consulta.

Comentarios Utilice los objetos Recordset para manipular datos en una base de datos a nivel de registro. Cuando utiliza objetos de acceso de datos, interacta con los datos prcticamente utilizando objetos Recordset. Todos los objetos Recordset se construyen utilizando registros (filas) y campos (columnas). Existen tres tipos de objetos Recordset: Recordset de tipo Table - una representacin en cdigo de una tabla base que puede utilizarse para aadir, cambiar o eliminar registros desde una nica tabla de base de datos (slo espacios de trabajo Microsoft Jet).

Pgina 159 de 161

Curso Visual Basic 5.0 Recordset de tipo Dynaset - el resultado de una consulta cuyos registros pueden actualizarse. Un objeto Recordset de tipo Dynaset es un conjunto dinmico de registros que puede utilizarse para aadir, cambiar o eliminar registros desde una tabla o tablas subyacentes de una base de datos. Un objeto Recordset de tipo Dynaset puede contener campos de una o ms tablas de una base de datos. Recordset de tipo Snapshot - una copia esttica de un conjunto de registros que puede utilizar para encontrar datos o generar informes. Un objeto Recordset de tipo Snapshot puede contener campos de una o ms tablas de una base de datos pero no se puede actualizar. Recordset de tipo Forward-only - idntico a un tipo Snapshot excepto que no se proporciona ningn cursor. Slo puede avanzar en los registros. Esto mejora el rendimiento en situaciones donde slo necesita hacer una pasada sencilla en el conjunto de resultado. Recordset de tipo Dynamic - un conjunto de resultado de una consulta de una o ms tablas base en las que puede agregar, cambiar o eliminar registros de una consulta que devuelve filas. Adems, tambin aparecen en el objeto Recordset los registros que agregan, eliminan o modifican otros usuarios en la tablas base. Puede elegir el tipo de objeto Recordset que quiere crear usando el argumento tipo del mtodo OpenRecordset. En un espacio de trabajo Microsoft Jet, si no especifica un tipo, DAO intenta crear el tipo de objeto Recordset con la mayor funcionalidad disponible, comenzando con tabla. Si no est disponible este tipo, DAO intenta un Dynaset, despus un Snapshot y por ltimo un objeto Recordset de tipo Forward-only. Cuando se crea un objeto Recordset utilizando un objeto TableDef no adjunto, se crean objetos Recordset de tipo Table. Slo pueden crearse Recordset de tipo Dynaset o Snapshot con tablas adjuntas o tablas de bases de datos externas ODBC. Cuando abre el objeto se agrega automticamente un nuevo objeto Recordset a la coleccin Recordsets y se elimina automticamente cuando lo cierra. Nota Si utiliza variables para representar un objeto Recordset y el objeto Database que contiene el conjunto de registros, compruebe que las variables tengan el mismo alcance o duracin. Por ejemplo, si establece una variable global que representa un objeto Recordset, debe asegurarse de que la variable que represente la base de datos que contiene el conjunto de registros tambin sea global o se encuentra en un procedimiento Sub o Function con la palabra clave Static. Su aplicacin puede crear tantas variables objeto Recordset como se necesiten. Un objeto Recordset puede hacer referencia a una o ms tablas o consultas y los campos sin conflictos. Los Recordset de tipo Dynaset y Snapshot se almacenan en la memoria local. Si no hay suficiente espacio en la memoria local para almacenar los datos, el motor de base de datos Microsoft Jet guarda los datos adicionales en el disco TEMP. Si este espacio est agotado, se producir un error. La coleccin predeterminada de un objeto Recordset es la coleccin Fields y la propiedad predeterminada de un objeto Field es la propiedad Value. El cdigo puede simplificarse utilizando estos valores predeterminados. Cuando se crea un objeto Recordset, el registro activo se coloca como primer registro si existen varios registros. Si no hay registros, el valor de la propiedad RecordCount ser 0 y los valores de la propiedad BOF y EOF sern True. Puede utilizar los mtodos MoveNext, MovePrevious, MoveFirst y MoveLast para volver a establecer el registro activo. Los objetos Recordset de tipo Forward-only slo admiten el mtodo MoveNext. Cuando se utilizan los mtodos Move para moverse entre los registros (o "andar" a travs del objeto Recordset), puede utilizar las propiedades BOF y EOF para comprobar el inicio o el fin del objeto Recordset. Con los objetos Recordset de tipo Dynaset y Snapshot en un espacio de trabajo Microsoft Jet, tambin puede utilizar los mtodos Find, como FindFirst, para localizar un registro especfico basado en un criterio. Si no se encuentra el registro, la propiedad NoMatch se establece a True. Para objetos Recordset de tipo Table, puede buscar registros utilizando el mtodo Seek. La propiedad Type indica el tipo de objeto Recordset creado y la propiedad Updatable indica si puede cambiar los registros del objeto. La informacin acerca de la estructura de la tabla base, como los nombres y los tipos de datos de cada objeto Field y cualquier objeto Index, se almacena en un objeto TableDef. Para hacer referencia a un objeto Recordset en una coleccin por su nmero de orden o por el valor de la propiedad Name, utilice cualquiera de los formatos de sintaxis siguientes: Recordsets(0) Recordsets("nombre") Recordsets![nombre]

Pgina 160 de 161

Curso Visual Basic 5.0 Mtodos Mtodo AddNew Mtodos FindFirst, FindLast, FindNext, FindPrevious Mtodo Cancel Mtodo GetRows Mtodo CancelUpdate Mtodo Move Mtodo Clone Mtodos MoveFirst, MoveLast, MoveNext, MovePrevious Mtodo Close Mtodo NextRecordset Mtodo CopyQueryDef Mtodo OpenRecordset Mtodo Delete Mtodo Requery Mtodo Edit Mtodo Seek Mtodo FillCache Mtodo Update Propiedades Propiedad AbsolutePosition Propiedad LockEdits Propiedad BatchCollisionCount Propiedad Name Propiedad BatchCollisions Propiedad NoMatch Propiedad BatchSize Propiedad PercentPosition Propiedades BOF, EOF Propiedad RecordCount Propiedad Bookmark Propiedad RecordStatus Propiedad Bookmarkable Propiedad Restartable Propiedad CacheSize Propiedad Sort Propiedad CacheStart Propiedad StillExecuting Propiedad Connection Propiedad Transactions Propiedades DateCreated, LastUpdated Propiedad Type Propiedad EditMode Propiedad Updatable Propiedad Filter Propiedad UpdateOptions Propiedad Index Propiedad ValidationRule Propiedad LastModified Propiedad ValidationText

Pgina 161 de 161

You might also like