Vous êtes sur la page 1sur 89

ILCOMP

ALTA TECNOLOGIA A SU ALCANCE

Managua, Nicaragua

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN

INDICE DE CONTENIDO
1 Introduccin a Visual Basic .Net .................................................................................. 5
1.1 1.2 1.3 1.4 1.5 1.6 1.7
1.7.1 1.7.2

Qu es .NET? ................................................................................................................... 5 Informacin general acerca de .NET Framework .............................................................. 5 Caractersticas de Common Language Runtime ................................................................ 7 Biblioteca de clases de .NET Framework .......................................................................... 7 Desarrollo de aplicaciones cliente...................................................................................... 8 Desarrollo de aplicaciones de servidor .............................................................................. 8 Entorno Integrado de Desarrollo...................................................................................... 10
Mejoras cosmticas ...................................................................................................................10 Aceleradores del desarrollo .......................................................................................................11

Introduccin a soluciones, proyectos y elementos .................................................... 12


2.1 2.2 2.3 Contenedores: soluciones y proyectos ............................................................................. 12 Elementos: archivos, referencias y conexiones de datos ................................................. 12 Elementos de la solucin ................................................................................................. 12

Caractersticas grficas de .NET................................................................................ 13


3.1
3.1.1

Explorador de soluciones ................................................................................................. 13


Iconos de la barra de herramientas ............................................................................................15

3.2 3.3
3.3.1 3.3.2 3.3.3

Examinar clases con la Vista de Clases ........................................................................... 16 Pgina de inicio................................................................................................................ 17


Mi perfil. ...................................................................................................................................17 Proyectos...................................................................................................................................18 Recursos en lnea.......................................................................................................................19

3.4
3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6

Tipos de proyectos ........................................................................................................... 19


Creando Aplicaciones ...............................................................................................................20 Aplicaciones Windows de Visual Studio ..................................................................................20 Las aplicaciones Windows y Visual Studio ..............................................................................20 Desarrollo de aplicaciones Windows ........................................................................................20 Aplicaciones de servicios de Windows .....................................................................................21 Proyectos Win32 .......................................................................................................................21

Controles de formularios Windows ........................................................................... 21


4.1
4.1.1 4.1.2

Cuadro de Mensajes ......................................................................................................... 21


Funcin InputBox......................................................................................................................21 Funcin MsgBox.......................................................................................................................22

4.2 4.3
4.3.1

Insertar controles en el formulario ................................................................................... 24 Propiedades controles ...................................................................................................... 24


Editar las propiedades del control .............................................................................................24

4.4

Controles bsicos de formularios Windows..................................................................... 24


PGINA 1

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN 4.4.1 4.4.2 4.4.3 4.4.4 4.4.5 4.4.6 4.4.7 Label..........................................................................................................................................24 TextBox.....................................................................................................................................25 Button........................................................................................................................................25 Checkbox ..................................................................................................................................26 Groupbox ..................................................................................................................................27 Panel..........................................................................................................................................27 Radiobutton ...............................................................................................................................27

4.5 4.6 4.7


4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.7.10 4.7.11 4.7.12 4.7.13 4.7.14 4.7.15 4.7.16 4.7.17 4.7.18 4.7.19 4.7.20 4.7.21 4.7.22

Orden de tabulacin ......................................................................................................... 28 Validar el contenido del control....................................................................................... 29 Otros Controles ................................................................................................................ 29
LinkLabel ..................................................................................................................................29 Listbox ......................................................................................................................................30 CheckedListBox........................................................................................................................31 ComboBox ................................................................................................................................32 Picturebox .................................................................................................................................32 Timer.........................................................................................................................................33 TabControl ................................................................................................................................33 TrackBar....................................................................................................................................33 ProgressBar ...............................................................................................................................34 ListView ...............................................................................................................................34 TreeView ..............................................................................................................................36 DateTimePicker....................................................................................................................37 MonthCalendar.....................................................................................................................38 DomainUpDown ..................................................................................................................38 NumericUpDown .................................................................................................................39 RichTextBox ........................................................................................................................39 ImageList..............................................................................................................................40 HelpProvider ........................................................................................................................41 ToolTip.................................................................................................................................41 StatusBar ..............................................................................................................................42 NotifyIcon ............................................................................................................................43 ErrorProvider........................................................................................................................43

4.8 4.9 4.10 4.11


4.11.1 4.11.2

Creacin de controles en tiempo de ejecucin................................................................. 43 Coleccin de controles..................................................................................................... 44 Clase Form ....................................................................................................................... 44 Mens............................................................................................................................... 45
Agregar mens y elementos de men a formularios Windows Forms .................................45 Agregar funcionalidad a los elementos de men ..................................................................46

4.12

Barras de Herramientas (Control) .................................................................................... 47

Elementos de Programacin ....................................................................................... 47


5.1
5.1.1 5.1.2 5.1.3

Tipos de Datos ................................................................................................................. 47


Tipos de valores y tipos de referencia .......................................................................................48 Tipos de datos como clases y estructuras ..................................................................................48 Tipos de datos numricos..........................................................................................................49

VISUAL BASIC.NET CON SQL SERVER

PGINA 2

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN 5.1.4 5.1.5 Tipos de datos de caracteres......................................................................................................50 Tipos de datos varios.................................................................................................................50

5.2
5.2.1 5.2.2

Variables .......................................................................................................................... 51
Declaracin de variables ...........................................................................................................52 Variables de tipo objecto...........................................................................................................52

5.3
5.3.1 5.3.2 5.3.3

Perodo de duracin, mbito y accesibilidad de variables ............................................... 53


Perodo de duracin...................................................................................................................53 mbito ......................................................................................................................................54 Accesibilidad.............................................................................................................................55

5.4
5.4.1 5.4.2

Constantes y Enumeraciones ........................................................................................... 55


Constantes .................................................................................................................................56 Enumeraciones ..........................................................................................................................57

5.5
5.5.1 5.5.2 5.5.3 5.5.4

Matrices ........................................................................................................................... 58
Matrices como objetos ..............................................................................................................58 Clase de matriz..........................................................................................................................58 Inicializar matrices ....................................................................................................................59 Cambiar el tamao de matrices .................................................................................................60

5.6
5.6.1 5.6.2 5.6.3 5.6.4 5.6.5

Operadores ....................................................................................................................... 60
Operadores aritmticos..............................................................................................................60 Operadores Concatenacin........................................................................................................61 Operadores relacionales o de comparacin ...............................................................................61 Operadores lgicos....................................................................................................................63 Combinacin eficaz de operadores............................................................................................64

5.7
5.7.1 5.7.2 5.7.3 5.7.4 5.7.5 5.7.6

Flujo de control ................................................................................................................ 64


Estructuras de decisin..............................................................................................................64 Estructuras de bucles.................................................................................................................67 Bucles For...Next ms rpidos...................................................................................................71 With...End With (Instrucciones)................................................................................................72 Instrucciones de control anidadas..............................................................................................72 Exit (Instruccin) ......................................................................................................................72

Procedimientos............................................................................................................. 73
6.1
6.1.1 6.1.2

Procedimientos Sub ......................................................................................................... 74


Declaracin de argumentos .......................................................................................................74 Sintaxis de llamada ...................................................................................................................74

6.2
6.2.1 6.2.2

Procedimientos Function ................................................................................................. 74


Valores devueltos ......................................................................................................................75 Sintaxis de llamada ...................................................................................................................75

6.3
6.3.1 6.3.2 6.3.3

Procedimientos Property .................................................................................................. 76


Declaracin de propiedades ......................................................................................................76 Declaracin de argumentos .......................................................................................................76 Sintaxis de llamada ...................................................................................................................77

6.4
6.4.1 6.4.2

Argumentos de procedimientos ....................................................................................... 77


Declaracin del tipo de datos de un argumento.........................................................................77 Pasar un argumento con ByVal y ByRef...................................................................................77

VISUAL BASIC.NET CON SQL SERVER

PGINA 3

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN 6.4.3 6.4.4 6.4.5 6.4.6 6.4.7 6.4.8 Argumentos variables y no variables ........................................................................................77 Mecanismo para pasar argumentos ...........................................................................................78 Argumentos opcionales .............................................................................................................79 Llamar a procedimientos con argumentos opcionales...............................................................79 Determinar si un argumento opcional est presente..................................................................79 Matrices de parmetros .............................................................................................................80

Funciones de Visual Basic .NET................................................................................. 80


7.1
7.1.1 7.1.2 7.1.3 7.1.4 7.1.5

Manipulacin de cadenas ................................................................................................. 80


Tipos de mtodos de manipulacin de cadenas.........................................................................81 Nothing y cadenas .....................................................................................................................81 Comparar cadenas .....................................................................................................................81 Buscar cadenas dentro de cadenas.............................................................................................81 Crear nuevas cadenas a partir de cadenas existentes .................................................................82

7.2
7.2.1 7.2.2

Analizar cadenas de fecha y hora [Visual Basic]............................................................ 83


Parse ..........................................................................................................................................83 ParseExact.................................................................................................................................84

7.3 7.4 7.5 7.6


7.6.1

Manipulacin de fechas y horas. Estructura DateTime. .................................................. 84 Manipulacin de Intervalos de Tiempo. Estructura TimeSpan........................................ 85 Mtodos pblicos. ............................................................................................................ 85 Conversiones implcitas y explcitas................................................................................ 86
La palabra clave CType.............................................................................................................87

7.7

Funciones de comprobacin de tipos de datos................................................................. 87

Estructura de un programa de Visual Basic ............................................................. 88


8.1 8.2 8.3 8.4 8.5 Instrucciones Option ........................................................................................................ 88 Instrucciones Imports....................................................................................................... 88 Procedimiento Main......................................................................................................... 88 Instrucciones Class, Module y Namespace...................................................................... 88 Instrucciones de compilacin condicional ....................................................................... 88

VISUAL BASIC.NET CON SQL SERVER

PGINA 4

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN

1 Introduccin a Visual Basic .Net


1.1 Qu es .NET?
Antes que profundicemos en los detalles de Visual Basic .NET, echemos un vistazo global a todos los cambios y nuevas caractersticas. Esta nueva versin es un cambio significativo de la versin anterior. Tomar un poco de esfuerzo acostumbrarse a ella, pero estoy seguro que sentir que las nuevas caractersticas valen la pena. Visual Basic .NET es mucho ms que una simple actualizacin de Visual Basic 6.0. Como esperara, el Entorno de Desarrollo Integrado (IDE) ha sido mejorado con algunas caractersticas nuevas. Ahora todas las herramientas de desarrollo de Visual Studio compartirn el mismo entorno. Por ejemplo, ya no necesitar aprender un IDE diferente al cambiar entre Visual Basic y Visual C++. Se han agregado algunas caractersticas buenas que muchos de nosotros hemos estado esperando para facilitar el desarrollo. Visual Studio .NET se construye basado en el Framework .NET. ste ser un cambio significativo comparado con Visual Basic 6.0. El Framework .NET hace que el desarrollo de la aplicacin vea el Internet como el nuevo sistema operativo. Sus aplicaciones ya no reconocern el hardware como una limitante. sta es una evolucin del modelo Windows DNA. Este nuevo Framework se construye sobre los protocolos abiertos de Internet para tener una interoperabilidad estandarizada entre las plataformas y lenguajes de programacin. El Framework .NET tambin permitir la creacin de nuevos tipos de aplicaciones. Ahora las aplicaciones se ejecutarn usando el tiempo de ejecucin del Lenguaje Comn (CLR). Todas las aplicaciones de .NET usarn este mismo entorno de tiempo de ejecucin que permite que sus aplicaciones de Visual Basic se ejecuten en el mismo espacio que otros lenguajes de programacin. El CLR le permite a Visual Basic proporcionar la herencia e hilado de ejecucin independiente cuya ausencia cre dos limitaciones muy notables en las aplicaciones de Visual Basic. Visual Basic .NET est basado en objetos. Ahora todo es un objeto, y cada objeto se hereda de una clase base estndar. Otro beneficio del CLR es un sistema de tipos comunes lo que significa que todos los lenguajes de programacin comparten los mismos tipos de datos. Esto aumenta grandemente la interoperabilidad entre los lenguajes.

El Internet ha entrado en una nueva fase. Primero, fue usado para desplegar las pginas Web estticas. Los negocios encontraron pronto que esto no los ayudaba significativamente. Luego, Internet evolucion al contenido dinmico y permiti el comercio electrnico. El siguiente paso es moverse hacia aplicaciones que se ejecutan completamente en Internet. Y Visual Basic .NET promueve el desarrollo de estas nuevas aplicaciones para Web. Los servicios Web permiten a los objetos ser localizados en cualquier parte y ser llamados desde cualquier aplicacin a travs de Internet (ya no hace falta tratar de configurar DCOM). Por supuesto, extender las aplicaciones a travs Internet implica un aumento en los riesgos de seguridad. Sin embargo, el Framework .NET tiene incorporadas muchas caractersticas de seguridad que le permitirn proteger sus aplicaciones. La seguridad de tipos es algo obligatorio que se revisa desde el tiempo de diseo. Esto impide al cdigo tener acceso a ubicaciones de la memoria a las que no tiene autorizacin. Esto tambin le permite definir cmo se tiene acceso a sus objetos. Antes de que el cdigo se ejecute, se verifica si es seguro a nivel de tipos. Si no es seguro a nivel de tipos, slo se ejecutar si sus polticas de seguridad lo permiten. Visual Basic tiene muchos cambios nuevos. En este captulo le daremos un vistazo de alto nivel a esos cambios arquitectnicos. Este vistazo le ayudar a profundizar en los detalles en los siguientes captulos teniendo una imagen global.

1.2 Informacin general acerca de .NET Framework


.NET Framework es una nueva plataforma informtica que simplifica el desarrollo de aplicaciones en un entorno altamente distribuido como es Internet. El diseo de .NET Framework est enfocado a cumplir los objetivos siguientes: Proporcionar un entorno coherente de programacin orientada a objetos, en el que el cdigo de los objetos se pueda almacenar y ejecutar de forma local, ejecutar de forma local pero distribuida en Internet o ejecutar de forma remota. PGINA 5

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Proporcionar un entorno de ejecucin de cdigo que reduzca lo mximo posible la implementacin de software y los conflictos de versiones. Ofrecer un entorno de ejecucin de cdigo que garantice la ejecucin segura del mismo, incluso del creado por terceras personas desconocidas o que no son de plena confianza. Proporcionar un entorno de ejecucin de cdigo que elimine los problemas de rendimiento de los entornos en los que se utilizan secuencias de comandos o intrpretes de comandos. Ofrecer al programador una experiencia coherente entre tipos de aplicaciones muy diferentes, como las basadas en Windows o en el Web. Basar toda la comunicacin en estndares del sector para asegurar que el cdigo de .NET Framework se puede integrar con otros tipos de cdigo. administradas y no administradas. En .NET Framework no slo se ofrecen varios hosts de motor de tiempo de ejecucin, sino que tambin se admite el desarrollo de estos hosts por parte de terceros. Por ejemplo, ASP.NET aloja el motor de tiempo de ejecucin para proporcionar un entorno de servidor escalable para el cdigo administrado. ASP.NET trabaja directamente con el motor de tiempo de ejecucin para habilitar aplicaciones de ASP.NET y servicios Web XML, que se tratan ms adelante en este tema. Internet Explorer es un ejemplo de aplicacin no administrada que aloja el motor de tiempo de ejecucin (en forma de una extensin de tipo MIME). Al usar Internet Explorer para alojar el motor de tiempo de ejecucin, puede incrustar componentes administrados o controles de Windows Forms en documentos HTML. Al alojar el motor de tiempo de ejecucin de esta manera se hace posible el uso de cdigo mvil administrado (similar a los controles de Microsoft ActiveX), pero con mejoras significativas que slo el cdigo administrado puede ofrecer, como la ejecucin con confianza parcial y el almacenamiento aislado de archivos seguros. En la ilustracin siguiente se muestra la relacin de Common Language Runtime y la biblioteca de clases con las aplicaciones y el sistema en su conjunto. En la ilustracin se representa igualmente cmo funciona el cdigo administrado dentro de una arquitectura mayor. .NET Framework en contexto

.NET Framework contiene dos componentes principales: Common Language Runtime y la biblioteca de clases de .NET Framework. Common Language Runtime es el fundamento de la tecnologa. El motor de tiempo de ejecucin se puede considerar como un agente que administra el cdigo en tiempo de ejecucin y proporciona servicios centrales, como la administracin de memoria, la administracin de subprocesos y la interaccin remota, al tiempo que aplica una seguridad estricta a los tipos y otras formas de especificacin del cdigo que garantizan su seguridad y solidez. De hecho, el concepto de administracin de cdigo es un principio bsico del motor de tiempo de ejecucin. El cdigo destinado al motor de tiempo de ejecucin se denomina cdigo administrado, a diferencia del resto de cdigo, que se conoce como cdigo no administrado. La biblioteca de clases, el otro componente principal de .NET Framework, es una completa coleccin orientada a objetos de tipos reutilizables que se pueden emplear para desarrollar aplicaciones que abarcan desde las tradicionales herramientas de interfaz grfica de usuario (GUI) o de lnea de comandos hasta las aplicaciones basadas en las innovaciones ms recientes proporcionadas por ASP.NET, como los formularios Web Forms y los servicios Web XML. .NET Framework puede alojarse en componentes no administrados que cargan Common Language Runtime en sus procesos e inician la ejecucin de cdigo administrado, con lo que se crea un entorno de software en el que se pueden utilizar caractersticas

VISUAL BASIC.NET CON SQL SERVER

PGINA 6

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN En las secciones siguientes se describen con ms detalle los componentes y caractersticas principales de .NET Framework. Adems, el motor de tiempo de ejecucin aumenta la productividad del programador. Por ejemplo, los programadores pueden crear aplicaciones en el lenguaje que prefieran y seguir sacando todo el provecho del motor de tiempo de ejecucin, la biblioteca de clases y los componentes escritos en otros lenguajes por otros colegas. El proveedor de un compilador puede elegir destinarlo al motor de tiempo de ejecucin. Los compiladores de lenguajes que se destinan a .NET Framework hacen que las caractersticas de .NET Framework estn disponibles para el cdigo existente escrito en dicho lenguaje, lo que facilita enormemente el proceso de migracin de las aplicaciones existentes. Aunque el motor de tiempo de ejecucin est diseado para el software del futuro, tambin es compatible con el software actual y el software antiguo. La interoperabilidad entre el cdigo administrado y no administrado permite que los programadores continen utilizando los componentes COM y las DLL que necesiten. El motor de tiempo de ejecucin est diseado para mejorar el rendimiento. Aunque Common Language Runtime proporciona muchos servicios estndar de motor de tiempo de ejecucin, el cdigo administrado nunca se interpreta. Una caracterstica denominada compilacin JIT (Just-In-Time) permite ejecutar todo el cdigo administrado en el lenguaje mquina nativo del sistema en el que se ejecuta. Mientras tanto, el administrador de memoria evita que la memoria se pueda fragmentar y aumenta la zona de referencia de la memoria para mejorar an ms el rendimiento. Por ltimo, el motor de tiempo de ejecucin se puede alojar en aplicaciones de servidor de gran rendimiento, como Microsoft SQL Server e IIS (Servicios de Internet Information Server). Esta infraestructura permite utilizar cdigo administrado para escribir lgica empresarial, al tiempo que se disfruta del superior rendimiento de los mejores servidores empresariales del sector que puedan alojar el motor de tiempo de ejecucin.

1.3 Caractersticas de Language Runtime

Common

Common Language Runtime administra la memoria, ejecucin de subprocesos, ejecucin de cdigo, comprobacin de la seguridad del cdigo, compilacin y dems servicios del sistema. Estas caractersticas son intrnsecas del cdigo administrado que se ejecuta en Common Language Runtime. Con respecto a la seguridad, los componentes administrados reciben grados de confianza diferentes, en funcin de una serie de factores entre los que se incluye su origen (como Internet, red empresarial o equipo local). Esto significa que un componente administrado puede ser capaz o no de realizar operaciones de acceso a archivos, operaciones de acceso al Registro y otras funciones delicadas, incluso si se est utilizando en la misma aplicacin activa. El motor de tiempo de ejecucin impone seguridad en el acceso al cdigo. Por ejemplo, los usuarios pueden confiar en que un archivo ejecutable incrustado en una pgina Web puede reproducir una animacin en la pantalla o entonar una cancin, pero no puede tener acceso a sus datos personales, sistema de archivos o red. Por ello, las caractersticas de seguridad del motor de tiempo de ejecucin permiten que el software legtimo implementado en Internet sea excepcionalmente variado. Adems, el motor de tiempo de ejecucin impone la solidez del cdigo mediante la implementacin de una infraestructura estricta de comprobacin de tipos y cdigo denominada CTS (Common Type System, Sistema de tipos comn). CTS garantiza que todo el cdigo administrado es autodescriptivo. Los diferentes compiladores de lenguajes de Microsoft y de terceros generan cdigo administrado que se ajusta a CTS. Esto significa que el cdigo administrado puede usar otros tipos e instancias administrados, al tiempo que se aplica inflexiblemente la fidelidad y seguridad de los tipos. Adems, el entorno administrado del motor de tiempo de ejecucin elimina muchos problemas de software comunes. Por ejemplo, el motor de tiempo de ejecucin controla automticamente la disposicin de los objetos, administra las referencias a stos y los libera cuando ya no se utilizan. Esta administracin automtica de la memoria soluciona los dos errores ms comunes de las aplicaciones: la prdida de memoria y las referencias no vlidas a la memoria.

1.4 Biblioteca de clases de .NET Framework


La biblioteca de clases de .NET Framework es una coleccin de tipos reutilizables que se integran estrechamente con Common Language Runtime. La biblioteca de clases est orientada a objetos, lo que proporciona tipos de los que su propio cdigo administrado puede derivar funciones. Esto ocasiona que los tipos de .NET Framework sean sencillos de utilizar y reduce el tiempo asociado con el aprendizaje de las nuevas caractersticas de .NET Framework. PGINA 7

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Adems, los componentes de terceros se pueden integrar sin dificultades con las clases de .NET Framework. Por ejemplo, las clases de coleccin de .NET Framework implementan un conjunto de interfaces que puede usar para desarrollar sus propias clases de coleccin. stas se combinarn fcilmente con las clases de .NET Framework. Como en cualquier biblioteca de clases orientada a objetos, los tipos de .NET Framework permiten realizar diversas tareas de programacin comunes, como son la administracin de cadenas, recopilacin de datos, conectividad de bases de datos y acceso a archivos. Adems de estas tareas habituales, la biblioteca de clases incluye tipos adecuados para diversos escenarios de desarrollo especializados. Por ejemplo, puede utilizar .NET Framework para desarrollar los siguientes tipos de aplicaciones y servicios: Aplicaciones de consola Aplicaciones GUI de Windows (Windows Forms) Aplicaciones de ASP.NET Servicios Web XML Servicios de Windows Windows Forms) implementado en Internet como una pgina Web. Esta aplicacin es muy parecida a otras aplicaciones cliente: se ejecuta de forma nativa, tiene acceso a los recursos locales e incluye elementos grficos. En el pasado, los programadores creaban esas aplicaciones mediante C o C++ en combinacin con MFC (Microsoft Foundation Classes) o con un entorno RAD (Rapid Application Development, desarrollo rpido de aplicaciones) como Microsoft Visual Basic. En .NET Framework se incorporan aspectos de estos productos, que siguen existiendo, en un nico entorno de desarrollo coherente que simplifica de forma espectacular el desarrollo de las aplicaciones cliente. Las clases de Windows Forms contenidas en .NET Framework estn diseadas para utilizarse en el desarrollo de GUI. Puede crear ventanas, botones, mens, barras de herramientas y dems elementos de pantalla fcilmente con la flexibilidad requerida para adaptarse a la evolucin de las necesidades de su empresa. Por ejemplo, .NET Framework proporciona propiedades simples para ajustar los atributos visuales asociados con los formularios. En determinadas circunstancias, el sistema operativo subyacente no permite cambiar estos atributos directamente y, entonces, .NET Framework vuelve a crear los formularios de forma automtica. sta es una de las mltiples maneras en que .NET Framework integra la interfaz del programador, con lo que la creacin de cdigo resulta ms sencilla y ms coherente. A diferencia de los controles ActiveX, los controles de Windows Forms tienen acceso con una confianza parcial al equipo de un usuario. Esto significa que el cdigo binario o que se ejecuta de forma nativa puede tener acceso a algunos de los recursos del sistema del usuario (como elementos de la GUI y acceso limitado a los archivos) sin tener acceso ni comprometer los dems recursos. Debido a la seguridad de acceso a cdigo, muchas aplicaciones que antes era necesario instalar en el sistema de un usuario, ahora se pueden implementar con seguridad a travs del Web. Las aplicaciones pueden implementar las caractersticas de una aplicacin local a la vez que se implementan como una pgina Web.

Por ejemplo, las clases de Windows Forms son un conjunto completo de tipos reutilizables que simplifican enormemente el desarrollo de interfaces GUI para Windows. Si escribe una aplicacin Web Form de ASP.NET, puede utilizar las clases de Web Forms.

1.5 Desarrollo cliente

de

aplicaciones

Las aplicaciones cliente constituyen lo ms parecido a una aplicacin de estilo tradicional en la programacin basada en Windows. En este tipo de aplicaciones se muestran ventanas o formularios en el escritorio, lo que permite al usuario realizar una tarea. Entre las aplicaciones cliente se incluyen los procesadores de texto y las hojas de clculo, adems de aplicaciones empresariales, como herramientas de entrada de datos, de informes, etctera. En las aplicaciones cliente se suelen emplear ventanas, mens, botones y otros elementos de la interfaz grfica de usuario, y suelen tener acceso a recursos locales como el sistema de archivos y a dispositivos perifricos como las impresoras. Otro tipo de aplicacin cliente es el tradicional control ActiveX (reemplazado ahora por el control de

1.6 Desarrollo de aplicaciones de servidor


Las aplicaciones de servidor en entornos administrados se implementan mediante hosts de motor de tiempo de ejecucin. Las aplicaciones no administradas alojan Common Language Runtime, PGINA 8

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN que permite al cdigo administrado personalizado controlar el comportamiento del servidor. Este modelo proporciona todas las caractersticas de Common Language Runtime y la biblioteca de clases, adems de obtener el rendimiento y la escalabilidad del servidor host. En la ilustracin siguiente se muestra un esquema de red bsico donde se ejecuta cdigo administrado en diferentes entornos de servidor. Los servidores como IIS y SQL Server pueden realizar operaciones estndar mientras la lgica de la aplicacin se ejecuta en el cdigo administrado. Cdigo administrado en el servidor ya no es necesario que el cdigo comparta el mismo archivo con el texto HTTP (aunque puede seguir hacindolo, si lo prefiere). Las pginas de Web Forms se ejecutan en lenguaje mquina nativo porque, al igual que todas las aplicaciones administradas, sacan todo el provecho del motor de tiempo de ejecucin. En cambio, las pginas ASP no administradas siempre utilizan secuencias de comandos e intrpretes de comandos. El desarrollo de pginas de ASP.NET es ms rpido, ms funcional y ms sencillo que el desarrollo de pginas ASP no administradas, porque interactan con el motor de tiempo de ejecucin como una aplicacin administrada. .NET Framework proporciona tambin una coleccin de clases y herramientas para ayudar al desarrollo y uso de las aplicaciones de servicios Web XML. Los servicios Web XML se basan en estndares como SOAP (un protocolo de llamadas a procedimientos remotos), XML (un formato de datos extensible) y WSDL (el Lenguaje de descripcin de servicios Web). En .NET Framework se utilizan estos estndares para fomentar la interoperabilidad con soluciones que no son de Microsoft. Por ejemplo, la herramienta Lenguaje de descripcin de servicios Web incluida en .NET Framework SDK puede consultar un servicio Web XML publicado en el Web, analizar su descripcin de WSDL y producir cdigo fuente de C# o Visual Basic que la aplicacin puede utilizar para convertirse en cliente del servicio Web XML en cuestin. El cdigo fuente puede crear clases derivadas de las clases de la biblioteca de clases que controlan completamente la comunicacin subyacente mediante SOAP y anlisis de XML. Aunque puede utilizar la biblioteca de clases para usar los servicios Web XML directamente, la herramienta Lenguaje de descripcin de servicios Web y las dems herramientas incluidas en el SDK facilitan el trabajo de desarrollo con .NET Framework. Si desarrolla y publica su propio servicio Web XML, .NET Framework proporciona un conjunto de clases que cumplen todos los estndares de comunicacin subyacentes, como SOAP, WSDL y XML. El uso de esas clases le permite centrarse en la lgica del servicio, sin preocuparse de la infraestructura de comunicaciones que se requiere en el desarrollo de software distribuido. Por ltimo, al igual que las pginas de Web Forms en un entorno administrado, el servicio Web XML se ejecutar con la velocidad del lenguaje mquina nativo mediante la comunicacin escalable de IIS.

ASP.NET es el entorno host que permite a los programadores utilizar .NET Framework con las aplicaciones para el Web. Sin embargo, ASP.NET no es slo un host de motor de tiempo de ejecucin: se trata de una completa arquitectura para el desarrollo de sitios Web y objetos distribuidos en Internet mediante cdigo administrado. Los formularios Web Forms y los servicios Web XML utilizan IIS y ASP.NET como mecanismos de publicacin de las aplicaciones y ambos disponen de una coleccin de clases compatibles en .NET Framework. Los servicios Web XML, que constituyen una evolucin importante de la tecnologa basada en el Web, son componentes distribuidos de aplicaciones de servidor similares a los sitios Web comunes. Sin embargo, a diferencia de las aplicaciones basadas en el Web, los componentes de servicios Web XML no tienen interfaz de usuario y no estn orientados a exploradores como Internet Explorer y Netscape Navigator. En su lugar, los servicios Web XML consta de componentes de software reutilizables diseados para que los utilicen otras aplicaciones, como aplicaciones cliente tradicionales, aplicaciones basadas en el Web o, incluso, otros servicios Web XML. Como resultado, la tecnologa de servicios Web XML est desplazando rpidamente el desarrollo y la implementacin de aplicaciones hacia el entorno altamente distribuido de Internet. Si ha utilizado versiones anteriores de la tecnologa ASP, apreciar de inmediato las mejoras que ofrecen ASP.NET y Web Forms. Por ejemplo, puede desarrollar pginas de Web Forms en cualquier lenguaje compatible con .NET Framework. Adems,

VISUAL BASIC.NET CON SQL SERVER

PGINA 9

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN

1.7 Entorno Integrado de Desarrollo


Sin importar si usted es un desarrollador o un gerente, es muy probable est ms preocupado por saber qu tan difcil ser la transicin a este nuevo entorno que por cada nueva caracterstica. Microsoft comparte sus preocupaciones. Conforme usted explore lo que VB.NET puede ofrecer, observar una combinacin inteligente de versiones anteriores de VB con caractersticas adaptadas de otros lenguajes. Y en ninguna otra parte esto ms evidente que en el IDE. Microsoft ha agregado nueva funcionalidad significativa para hacer que los desarrolladores trabajen ms eficazmente, sin exigirles que aprendan maneras completamente nuevas de hacer sus trabajos. Si usted ha visto versiones anteriores de Visual Basic, la IDE para VB.NET le parecer muy familiar. Pero si usted tambin ha trabajado con InterDev en el pasado, la nueva interfaz le resultar an ms familiar. Esto es porque el nuevo IDE usado para VB.NET integra las mejores ideas de ambos entornos para brindar una medio ms eficaz de realizar el trabajo. Claro, nada viene sin un costo. Algunos de los problemas involucrados con esta actualizacin de VB se discuten ms adelante en este captulo y en los captulos posteriores, y estos desafos ciertamente deben sopesarse al momento de seleccionar una herramienta de desarrollo. Pero primero, echemos una mirada a algunas de las nuevas caractersticas especficas del IDE y los beneficios que nos proporcionan.

Caracterstica monitores mltiples

Descripcin desarrolladores pueden usar ms de un monitor al mismo tiempo

Formularios organizados en pestaas

Se usa una disposicin de pestaas para mostrar los formularios MDI hijos dentro del entorno de desarrollo. Las ventanas de cdigo, las pantallas de ayuda, las ventanas de diseo de formularios y la pgina de inicio todas pueden ubicarse unas sobre otras y mostrarlas en un mismo panel. En vez de mostrar los controles en una cuadrcula, los controles se presentan de forma vertical, con una descripcin a lado de cada uno.

Beneficio cdigo en una ventana y depurando en otra, los desarrolladores puede simular de forma ms precisa la experiencia del usuario final. Aunque no se puede ver toda la informacin al mismo tiempo, al menos se tiene el beneficio de ocupar menos espacio real de pantalla.

Caja de herramientas

1.7.1

Mejoras cosmticas

Aunque se han hecho numerosos cambios al IDE, los que usted probablemente notar primero son los cambios cosmticos a la funcionalidad existente. Las versiones anteriores de Visual Basic han intentado establecer un equilibrio entre mantener el espacio disponible en la pantalla y permitir acceso a uno slo a tanta funcionalidad como sea posible. La tabla Cambios Cosmticos describe algunas de las formas en que estos mejoras se han implementado en VB.NET. Caracterstica Soporte para Descripcin Los Beneficio Ejecutando

el

En versiones anteriores de Visual Basic, tenas que sealar cada control para ver el nombre del control. (Esto era en especial frustrante cuando se desarrollaban controles personalizados, debido a que frecuentemente podan tener todos el mismo icono por defecto.=

VISUAL BASIC.NET CON SQL SERVER

PGINA 10

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Caracterstica Cdigo expandible Descripcin Usando una interfaz similar a los esquemas de Microsoft Word, ahora puede dividir el cdigo en secciones y ocultarlas o expandirlas con un simple clic. En lugar de tener que presionar F1, el IDE .NET ahora observa lo que se hace y presenta ayuda sensible al contexto en su propia ventana. Beneficio Los desarrolladores ahora pueden mantener una vista de alto nivel su cdigo, permitindoles migrar a travs de sus aplicaciones de forma ms eficiente. Se tiene disponible continuamente ayuda precisa para los desarrolladores en tiempo real. Caracterstica Explorador de soluciones Descripcin A diferencia del Explorador de proyectos de las versiones anteriores, el Explorador de soluciones presenta un repositorio para administrar recursos de desarrollo heterogneos. Beneficio equivocado. Ahora puede administrar componentes que no han sido creados con VB. (La habilidad de que VB trabaje mejor con otros lenguajes de programacin es una de las fuerzas impulsoras detrs de la iniciativa .NET.) Lo que antes se haca manualmente ahora puede hacerse usando arrastrar-y-pegar. Por ejemplo, si tiene un procedimiento almacenado en un servidor en SQL, puede directamente ubicar el procedimiento almacenado y hacer la actualizacin directamente en pantalla. Ahora puede hacer ms programando visualmente, reduciendo las posibilidades de error. Por ejemplo, si tiene un procedimiento almacenado en SQL Server, podra ubicar el procedimiento almacenado y arrastrarlo al PGINA 11

Ayuda

Explorador de servidores

Tabla Cambios cosmticos

1.7.2

Aceleradores desarrollo

del

Ahora puede ver los servidores disponibles para una aplicacin cliente/servidor o de Internet y directamente incorporar sus recursos en el cdigo.

Por supuesto, no todas las caractersticas nuevas del IDE son simplemente accesorias. Los desarrolladores de VB.NET tambin han proporcionado nuevas interfaces para usar la funcionalidad existente de forma ms eficaz. Las caractersticas presentadas en la Tabla Aceleradores de desarrollo tienen sus evidentes predecesores en VB 6.0, pero ahora permiten a los desarrolladores generar sus aplicaciones ms eficazmente. Caracterstica Diseador de mens Descripcin Usando el nuevo Diseador de mens, ahora puede editar mens directamente en el formulario al que est asociado el men. Beneficio Antes, tena que seleccionar el elemento Editor de men en el men Herramientas. Este cambio acelera el desarrollo y reduce los errores asociados con el uso de un formulario

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Caracterstica Descripcin Beneficio panel correspondiente. VB se encarga del resto de la codificacin de forma automtica. La Pgina de inicio proporciona una ubicacin central para establecer preferencias, leer noticias de productos, ponerse en contacto con otros programadores y obtener acceso a otro tipo de informacin que le permita mejorar su rendimiento con Visual Studio. estos contenedores le permite beneficiarse del entorno de desarrollo integrado de varias formas: Puede administrar la configuracin de la solucin en su totalidad o dividida en proyectos individuales Puede utilizar el Explorador de soluciones para controlar los detalles de la administracin de archivos al mismo tiempo que se centra en los elementos que constituyen la labor de programacin Puede agregar elementos tiles a varios proyectos de la solucin o a la solucin sin tener que hacer referencia a dichos elementos en cada proyecto Puede trabajar en diversos archivos, independientes de soluciones o proyectos

Pgina inicio

de

La pantalla de apertura que aparece cuando se inicia VB, ahora se genera usando DHTML.

2.2 Elementos: archivos, referencias y conexiones de datos


Los elementos pueden ser archivos y otras partes del proyecto como referencias, conexiones de datos o carpetas. Los elementos pueden organizarse de varias formas en el Explorador de soluciones: En forma de elementos del proyecto, es decir, elementos comprendidos en el proyecto, tales como formularios, archivos de cdigo fuente y clases de un proyecto del Explorador de soluciones. La organizacin y la presentacin dependern de la plantilla de proyecto que se seleccione, as como de cualquier modificacin que se realice. En forma de elementos de la solucin para archivos que se aplican a la solucin en su totalidad en la carpeta Elementos de la solucin del Explorador de soluciones. En forma de varios archivos que se corresponden con archivos reales que no estn asociados a ningn proyecto ni a ninguna solucin y que pueden mostrarse en la carpeta Archivos varios.

Tabla Aceleradores del desarrollo

2 Introduccin a soluciones, proyectos y elementos


Para administrar con eficacia los elementos (como referencias, conexiones de datos, carpetas y archivos) necesarios para llevar a cabo la labor de programacin, Visual Studio .NET ofrece dos contenedores: soluciones y proyectos. Para ver y administrar estos contenedores y sus elementos asociados se proporciona una interfaz, el Explorador de soluciones, que forma parte del entorno de desarrollo integrado (IDE).

2.3 Elementos de la solucin


Una solucin, en calidad de contenedor, puede controlar varios tipos de elementos. Por ejemplo, dentro de una solucin puede haber proyectos. No obstante, puede encontrarse con elementos que desee administrar independientemente de un proyecto, pero en asociacin con una solucin. Estos elementos, que se consideran elementos de la solucin, aparecern en la carpeta Elementos de la solucin en el Explorador de soluciones. Los elementos de la solucin siempre estarn disponibles en el Explorador de soluciones, cuando abra la solucin.

2.1 Contenedores: proyectos

soluciones

Las soluciones y los proyectos contienen elementos en forma de referencias, conexiones de datos, carpetas y archivos necesarios para crear la aplicacin. Un contenedor de tipo solucin puede contener varios proyectos y un contenedor de tipo proyecto normalmente contiene varios elementos. El uso de

VISUAL BASIC.NET CON SQL SERVER

PGINA 12

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Los elementos de la solucin son independientes del proyecto trabajar en archivos fuera del contexto de una solucin o proyecto. Presentacin jerrquica Una nica solucin y sus proyectos se muestran mediante una presentacin jerrquica, que proporciona informacin actualizada sobre el estado de la solucin, los proyectos y los elementos. Esto le permitir trabajar en varios proyectos al mismo tiempo. Los elementos de la carpeta Elementos de la solucin son archivos independientes del proyecto creados adems de los archivos de proyecto. Estos elementos representan archivos fundamentales para el desarrollo de los proyectos, pero no pertenecen a un proyecto en particular. Las hojas de estilos en cascada son elementos comunes de una solucin. Una sola hoja de estilos, por ejemplo, puede estandarizar el formato de numerosas pginas Web en varios proyectos. Cuando se cierra la solucin, la hoja de estilos permanece junto a las pginas Web. Cuando vuelve a abrirse la solucin, la hoja de estilos aparece debajo del nodo Elementos de la solucin del Explorador de soluciones. Los archivos de proyecto que aparezcan en el Explorador de soluciones debajo del proyecto al que se van a agregar estn incluidos en generaciones de proyectos o soluciones. No se generar ningn archivo de solucin que aparezca en la carpeta Elementos de la solucin. Puede utilizar control de cdigo fuente con los elementos de solucin y con proyectos y archivos de proyectos. Los elementos de una solucin son fundamentales para los proyectos de una solucin. Aunque se administren en forma de vnculos y pueda guardarlos en cualquier ubicacin, puede que desee guardarlos en el directorio de la solucin. El archivo de la solucin (.sln) recuerda y, lo que es ms importante, realiza un seguimiento de la ubicacin de los elementos de la solucin. Elementos y contenedores La administracin de los elementos que se muestran en el Explorador de soluciones se basa en la relacin del elemento con los contenedores del proyecto y de la solucin. Los elementos pueden relacionarse de las siguientes formas: Como elementos del proyecto, que aparecen debajo de una carpeta de proyecto en el Explorador de soluciones; por ejemplo, formularios, archivos de cdigo fuente y clases. Como elementos de la solucin, que aparecen en la carpeta Elementos de la solucin en el Explorador de soluciones. Como archivos varios, es decir, archivos que no estn asociados a ningn proyecto ni a ninguna solucin y que se muestran en la carpeta Archivos varios. El Explorador de soluciones es flexible en el sentido de que permite trabajar independientemente de un proyecto, en otras palabras, pueden modificarse y crearse archivos sin un proyecto. El Explorador de soluciones muestra este tipo de archivos en la carpeta Archivos varios. Tambin es posible trabajar con archivos asociados nicamente a la solucin. Estos elementos se mostrarn en la carpeta Elementos de la solucin.

3.1 Explorador de soluciones

3 Caractersticas grficas de .NET


Utilizar el Explorador de soluciones El Explorador de soluciones le permite ver elementos y realizar tareas de administracin de elementos en una solucin o en un proyecto. Tambin le permite utilizar los editores de Visual Studio .NET para

VISUAL BASIC.NET CON SQL SERVER

PGINA 13

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN El Explorador de soluciones proporciona una vista organizada de los proyectos y sus archivos, as como acceso rpido a los comandos relativos a ellos. Normalmente, una barra de herramientas asociada a esta ventana ofrece los comandos que se utilizan con ms frecuencia con el elemento resaltado en la lista. Para tener acceso al Explorador de soluciones, seleccione Explorador de soluciones en el men Ver. Vista de rbol Esta vista estndar del Explorador de Soluciones presenta la solucin activa como un contenedor lgico de uno o ms proyectos y de los elementos asociados a ellos. Puede abrir elementos de proyecto para modificarlos, adems de llevar a cabo otras tareas de administracin directamente desde esta vista. Dado que diferentes tipos de proyectos harn que tambin los elementos se almacenen de manera diferente, la estructura de carpetas en el Explorador de soluciones no refleja necesariamente el almacenamiento fsico real de los elementos enumerados. Cuando la opcin "Realizar seguimiento del elemento activo en el Explorador de Soluciones" est seleccionada en el cuadro de dilogo Proyectos y soluciones, Entorno, Opciones, el Explorador de soluciones abre automticamente la carpeta del elemento activo, se desplaza hasta su nodo en vista de rbol y selecciona su nombre. El elemento seleccionado va cambiando conforme se trabaja con los distintos archivos en un proyecto o solucin o con los distintos componentes en un diseador de entorno de desarrollo integrado (IDE). Cuando esta opcin est desactivada, la seleccin en el Explorador de soluciones no cambia automticamente. Para asociar un archivo a una solucin, pero no a un proyecto especfico, agregue el archivo directamente a la solucin. Se mostrar entonces un nuevo nodo para el archivo agregado en la carpeta Elementos de la solucin. Otros archivos que an no se hayan asociado a la solucin activa o a alguno de sus proyectos se colocarn en la carpeta Archivos varios. stos suelen ser archivos abiertos o creados en su disco local mientras trabajaba con un proyecto. Nota Para mostrar todos los archivos de la carpeta Archivos varios, seleccione la opcin "Mostrar archivos varios en el Explorador de soluciones" en el cuadro de dilogo Documentos, Entorno, Opciones. Al seleccionar esta opcin, se activa tambin el comando Ver en el explorador del men Archivo, para mostrar documentos Web externos no incluidos en una aplicacin Web. Proyecto en negrita El proyecto que se muestra en negrita est seleccionado como Proyecto de inicio con fines de ejecucin y depuracin. Si hay ms de un proyecto de inicio, entonces se muestra en negrita el nodo de la solucin en la vista de rbol. Los proyectos de inicio se ejecutan automticamente al iniciar el depurador de Visual Studio. Aunque, de forma predeterminada, se considere proyecto inicial al primer proyecto creado en la solucin, es posible cambiar con facilidad los proyectos que debern ejecutarse primero al generar o ejecutar una solucin. Con la opcin "Generar proyectos de inicio y dependencias nicamente al ejecutar" del cuadro de dilogo Proyectos y soluciones, Entorno, Opciones seleccionada, slo se generarn el proyecto inicial y sus dependencias cuando se presione F5 o se seleccione el comando Iniciar en el men Depurar. O bien Cuando se presione CTRL + MAYS + b o se escoja el comando Generar solucin del men Ejecutar. Con esta opcin desactivada, cualquiera de estas acciones generar todos los proyectos, dependencias y archivos de soluciones. Solucin en negrita Cuando una solucin se muestra en negrita, indica que la opcin para ejecutar varios proyectos al iniciar el depurador est habilitada. Aunque la opcin est habilitada, no significa que se hayan seleccionado proyectos para ejecutarse; de forma predeterminada, estn configurados para que no se ejecuten. Comandos Puede abrir archivos, agregar y quitar elementos y realizar otras tareas de administracin. Cada plantilla de proyecto dispone de sus propias carpetas e iconos para indicar la naturaleza de los elementos del proyecto. Puede agregar carpetas y elementos que se ajusten a las necesidades de su proyecto de desarrollo individual. Los iconos pueden indicar diferente informacin acerca de un elemento. Por ejemplo, segn el proyecto, podra ver un icono que indica que el elemento es un archivo HTML o que un archivo est bajo el control del cdigo fuente. Adems, cada plantilla de proyecto determina qu herramientas y diseadores estn asociados a un tipo de archivo, as como los PGINA 14

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN comandos disponibles para la administracin de elementos. Seleccin Al seleccionar una solucin, proyecto o elemento en la lista, automticamente se actualizan los comandos disponibles. Por ejemplo, el comando Copiar Web slo est disponible en la barra de herramientas del Explorador de soluciones si hay una aplicacin Web seleccionada en la lista. Puede hacer doble clic en un archivo para mostrarlo en el diseador, herramienta o editor asociado al tipo de archivo. Para cambiar el editor predeterminado de algunos tipos de archivo, haga clic con el botn secundario en el archivo y, despus, elija Abrir con en el men contextual. Seleccin mltiple Es posible seleccionar varios elementos de un solo proyecto o varios elementos que abarquen varios proyectos. Seleccione varios elementos si desea llevar a cabo operaciones por lotes (con el fin de abrir simultneamente varios archivos para editar, por ejemplo) o cuando desee determinar o editar las propiedades que comparten dos o ms elementos de solucin. Al seleccionar varios elementos, los comandos disponibles representan la interseccin de los comandos comunes a todos los elementos seleccionados. Abre el cuadro de dilogo Copiar proyecto para copiar un proyecto Web completo o un conjunto de proyectos Web de un servidor Web a otro. Tambin puede duplicar un proyecto Web en el mismo servidor con un nombre nuevo. Este comando slo est disponible cuando hay un proyecto Web seleccionado. Abrir Abre el elemento seleccionado en el editor predeterminado para ese elemento, tal y como determina la plantilla de proyecto. El editor predeterminado de un tipo de archivo especfico se puede cambiar en el cuadro de dilogo Abrir con; haga clic con el botn secundario en el archivo, en el Explorador de soluciones, y seleccione Abrir con en el men contextual. Por ejemplo, puede cambiar el editor de recursos por el editor de texto para los archivos de recursos. Ver cdigo Abre el archivo seleccionado para editarlo en el Editor de cdigo. Actualizar Actualiza el estado de los elementos del proyecto o solucin que se haya seleccionado. Sugerencia: Si forma parte de un grupo de desarrollo que trabaje con archivos de proyectos compartidos que se hayan combinado y se mantengan bajo control de cdigo fuente, seleccione este botn para mostrar el estado actual de los archivos incluidos en su solucin activa. Propiedades Muestra la interfaz de usuario de propiedades correspondiente al elemento seleccionado en la vista de rbol.

3.1.1 Iconos de herramientas

la

barra

de

En la barra de herramientas del Explorador de soluciones slo aparecen los botones especficos del elemento seleccionado en la lista. Por ejemplo, si selecciona un archivo .asax, aparece un conjunto de botones en la barra de herramientas. Sin embargo, si se selecciona un archivo .asp, slo aparece el botn Propiedades. Debido a que el proyecto seleccionado determina los iconos de la barra de herramientas, esta lista es una representacin parcial de los que podra encontrar al trabajar en el Explorador de soluciones. Mostrar todos los archivos Muestra todos los elementos de proyecto, incluso los excluidos y los que normalmente estn ocultos. Inicialmente, el proyecto determina qu elementos estn ocultos. Copiar proyecto

3.1.1.1 Iconos de seal


Los iconos de seal muestran informacin sobre el estado de los archivos. Elemento no encontrado

VISUAL BASIC.NET CON SQL SERVER

PGINA 15

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN El elemento se ha movido, cambiado el nombre o eliminado del directorio del proyecto y no se encuentra. Protegido El elemento se ha incluido en una base de datos de control de cdigo fuente. Desprotegido en exclusiva El elemento est desprotegido desde una base de datos de control de cdigo fuente slo para un desarrollador. El resto de desarrolladores no puede obtener acceso al archivo. Desprotegido para uso compartido El elemento est desprotegido desde una base de datos de control de cdigo fuente para su uso compartido por parte de un equipo de desarrollo. Las diferentes versiones del elemento se combinarn en el momento de la proteccin. La Vista de clases se diferencia del Examinador de objetos en que est pensada para proyectos y smbolos de la solucin, ms que para componentes externos o a los que se haga referencia. Adems, muestra la estructura de anidacin real de los smbolos, a diferencia de la vista plana del Examinador de objetos. La Vista de clases se diferencia del Explorador de soluciones en que proporciona una vista lgica del cdigo, mientras que el explorador proporciona una vista fsica de la solucin centrada en los archivos. Nota No es necesario compilar los proyectos para ver sus smbolos en la Vista de clases, ya que segn se agregan o modifican smbolos a un proyecto, sta se actualiza dinmicamente para reflejar los cambios. Como resultado, no es necesario un comando de actualizacin. Para abrir la ventana Vista de clases, presione CTRL+MAYS+C o elija Vista de clases en el men Ver. Vista de clases - Ordenar por <vista> El botn Ordenar por le permite elegir una vista de los datos determinada. La Informacin sobre herramientas del botn muestra el nombre de la vista actual. Las opciones disponibles son: Ordenar alfabticamente: los smbolos se enumeran alfabticamente por sus nombres en orden ascendente (a - z). Ordenar por tipo: los smbolos del mismo tipo se enumeran juntos; todas las clases aparecen juntas, todas las interfaces aparecen juntas, etc. Este orden no se puede cambiar. Ordenar por acceso: los smbolos se enumeran segn su tipo de acceso, como public, protected o private. Agrupar por tipo: los smbolos del mismo tipo se agrupan bajo una carpeta virtual. Este orden no se puede cambiar.

3.2 Examinar clases con la Vista de Clases


La Vista de clases muestra una vista programtica de los smbolos del cdigo, por ejemplo, los espacios de nombres, las clases, los mtodos y las funciones. Los smbolos estn organizados por proyectos, y dentro de cada proyecto, el contenido se muestra en una vista de rbol jerarquizada, que indica las relaciones de contencin entre los smbolos. Asimismo, puede aparecer otra informacin estructural, como las clases e interfaces base y los mtodos suplantables. Esta vista lgica de la solucin y sus proyectos permite comprender mejor la estructura del cdigo y las interrelaciones existentes entres sus diversos smbolos. Todos los smbolos estn representados por iconos que indican su tipo y, si contienen otros smbolos, se pueden expandir haciendo clic en el signo ms (+) que aparece junto al icono o presionando la tecla + del teclado numrico para ver sus miembros. Para desplazarse a los smbolos del cdigo basta con hacer doble clic en ellos. Si la definicin de un smbolo no est disponible, su declaracin se mostrar en el Examinador de objetos. Otro modo de desplazarse por los smbolos consiste en invocar al comando Bsqueda rpida de smbolos del Examinador de objetos para un smbolo seleccionado en la Vista de clases presionando ALT+MAYS+F12.

Nueva carpeta Mtodo alternativo para organizar smbolos utilizados con frecuencia, este botn crea una nueva carpeta a la que puede arrastrar smbolos y otras carpetas y tener fcil acceso a ellos.

VISUAL BASIC.NET CON SQL SERVER

PGINA 16

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Iconos de la Vista de clases La Vista de clases muestra varios iconos, cada uno representa un tipo de smbolo diferente, como un espacio de nombres, una clase, una funcin o una variable. La siguiente tabla presenta los iconos que se muestran en la Vista de clases, con una descripcin de cada uno. Icono Descripcin Espacio de nombres Clase Interfaz Estructura Unin Enum TypeDef Mdulo Intrnseco Delegado Excepcin Mapa Global Mtodo o funcin Operador Propiedad Campo o variable Evento Constante Elemento de tipo enumerado Elemento de mapa Declaracin externa Macro Plantilla Desconocido o error programadores y obtener acceso a otro tipo de informacin que le permita mejorar su rendimiento con Visual Studio. Para ver la Pgina de inicio, seleccione Mostrar pgina de inicio en el men Ayuda. Determinados paneles, como los que figuran en la ficha Recursos en lnea, reciben actualizaciones peridicas a travs de Internet. El entorno de desarrollo integrado (IDE) descargar estas actualizaciones de forma automtica cada vez que seleccione uno de estos paneles estando conectado a Internet. Si no est conectado, el panel mostrar la ltima informacin recibida. Adems, el filtro actual de Ayuda seleccionar el contenido en lnea de modo que slo aparezca la informacin relevante. Nota Al cambiar un filtro de Ayuda en la Pgina de inicio, se cambia tambin el filtro aplicado a la documentacin de MSDN. A continuacin se describen cada una de las fichas de la Pgina de inicio.

3.3.1 Mi perfil.
Utilice esta ficha de la Pgina de inicio para establecer sus preferencias de trabajo en el entorno de desarrollo integrado (IDE). Para ver la Pgina de inicio, seleccione Mostrar pgina de inicio en el men Ayuda. Perfil Muestra los perfiles predeterminados que establecen automticamente las opciones Esquema de teclado, Diseo de ventana y Filtro de Ayuda. Si cambia una de las configuraciones predeterminadas una vez seleccionado un perfil predefinido, el nombre del perfil cambia a "(Personalizado)". Programador de Visual Studio: especifica la opcin Predeterminados de Visual Studio para Esquema de teclado, Diseo de ventana y Filtro de Ayuda. Programador de Visual Basic: especifica la opcin Visual Basic 6.0 para Esquema de teclado, Diseo de ventana y el Filtro de Ayuda de Visual Basic. Programador de Visual C++: especifica la opcin Visual C++ 6.0 para Esquema de teclado, Diseo de ventana y el Filtro de Ayuda de Visual C++. Programador de Visual InterDev: especifica la opcin Visual Basic 6.0 para Esquema de teclado, Predeterminados de Visual Studio para Diseo de ventana y ningn Filtro de Ayuda. PGINA 17

3.3 Pgina de inicio


La Pgina de inicio proporciona una ubicacin central para establecer preferencias, leer noticias de productos, ponerse en contacto con otros

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Programador de macros de VS: especifica la opcin Predeterminados de Visual Studio para Esquema de teclado, Diseo de ventana y Filtro de Ayuda de las macros de Visual Studio. Programador de Visual C#: especifica la opcin Predeterminados de Visual Studio para Esquema de teclado, Diseo de ventana y el Filtro de Ayuda de Visual C#. Programador de Visual J#: especifica la opcin Predeterminados de Visual Studio para Esquema de teclado, Ventana de diseo de Visual Studio y el Filtro de Ayuda de Visual J#. Programador avanzado: especifica la opcin Predeterminados de Visual Studio para Esquema de teclado, Mnimo para Diseo de ventana y Filtro de Ayuda. Este perfil slo est disponible con Visual Studio Edicin acadmica. Esquema de teclado Muestra las posibles configuraciones de teclas de mtodo abreviado que puede utilizar. Tambin puede crear combinaciones de teclado personalizadas o cambiar combinaciones de teclado en el panel Teclado de las opciones Entorno del cuadro de dilogo Opciones. Diseo de ventana Muestra las posibles configuraciones de ventana predeterminadas. Una vez seleccionado un diseo, se pierde cualquier personalizacin realizada con anterioridad y se aplica el diseo seleccionado. Predeterminados de Visual Studio: este diseo oculta automticamente el Explorador de servidores y la ventana Cuadro de herramientas a lo largo del extremo izquierdo del IDE; el Explorador de soluciones y la Vista de clases se acoplan mediante fichas a la derecha, con la ventana Propiedades y la ventana Ayuda dinmica acopladas mediante fichas por debajo. Visual Basic 6: este diseo oculta automticamente el Explorador de servidores a lo largo del extremo izquierdo del IDE y acopla el Cuadro de herramientas a la izquierda; el Explorador de soluciones y la Vista de clases se acoplan mediante fichas a la derecha, con la ventana Propiedades y la ventana Ayuda dinmica acopladas mediante fichas por debajo. Visual C++ 6: este diseo coloca las ventanas Vista de recursos, Vista de clases y Explorador de soluciones acopladas mediante fichas a la izquierda; la ventana Propiedades y las ventanas Ayuda dinmica se acoplan mediante fichas por debajo, tambin a la izquierda. Estudiante: este diseo coloca las ventanas Vista de clases y Explorador de soluciones acopladas mediante fichas a la izquierda, con la ventana Ayuda dinmica debajo; y las ventanas Lista de tareas y Resultados acopladas mediante fichas en la parte inferior. Sin herramientas: este diseo slo muestra el espacio de edicin, sin ninguna ventana de herramientas abierta. Filtro de Ayuda Muestra los posibles filtros predeterminados para la documentacin de Microsoft Developer Network (MSDN) y la informacin mostrada en paneles de la Pgina de inicio. El filtro de Ayuda que seleccione no se aplicar al contenido mostrado en la ventana Ayuda dinmica. Tambin puede cambiar el filtro de Ayuda aplicado desde las ventanas Contenido, ndice y Buscar de MSDN. Mostrar Ayuda Especifica si se muestra la Ayuda dentro de una ventana en el IDE o en una ventana independiente disponible fuera del IDE. Al iniciar mostrar Especifica qu interfaz de usuario aparece al iniciar Visual Studio. Elija entre Mostrar pgina de inicio, Cargar ltima solucin cargada, Mostrar el cuadro de dilogo Abrir proyecto, Mostrar el cuadro de dilogo Nuevo proyecto y Mostrar el entorno vaco.

3.3.2 Proyectos.
Esta ficha de la Pgina de inicio proporciona una lista de soluciones recientes y le permite obtener acceso a cuadros de dilogo clave para crear proyectos nuevos y abrir proyectos existentes. Para ver la Pgina de inicio, seleccione Mostrar pgina de inicio en el men Ayuda. Nombre Muestra los nombres de las soluciones creadas anteriormente. Modificado Muestra el da y la hora en que se actualiz por ltima vez la solucin. Abrir proyecto Muestra el cuadro de dilogo Abrir proyecto. PGINA 18

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Nuevo proyecto Muestra el cuadro de dilogo Nuevo proyecto. Plantilla de proyecto Se utiliza para crear proyecto EXE estndar de Visual Basic 6.0. Plantilla clases Biblioteca de Clases o componentes reutilizables que puedan compartirse con otros proyectos. Este tipo de proyecto se considera que no tiene ventanas y no contendr una clase formulario de Windows Forms de Controles personalizados para utilizarlos en formularios Windows Forms Web ASP.NET

3.3.3 Recursos en lnea.


Este panel de la Pgina de inicio proporciona un sistema de bsqueda para localizar temas en el rea de documentacin principal as como cdigos de ejemplo en lnea. Para buscar en lnea, debe estar conectado a Internet. Para ver la Pgina de inicio, seleccione Mostrar pgina de inicio en el men Ayuda. Obtener el perfil de los ejemplos Reduce los resultados de la bsqueda limitndola a aquellos ejemplos que coincidan con los requisitos del perfil seleccionado. De forma predeterminada, este perfil coincide con el perfil seleccionado en la ficha Mi perfil de la Pgina de inicio. Los cambios que realice en el perfil utilizado en esta ficha no afectarn al perfil seleccionado en la ficha Mi perfil. Filtrar por Elija Palabra clave para buscar en los ejemplos con texto de bsqueda personalizado. Seleccione Tipo para buscar en los ejemplos utilizando una categora de ejemplos predefinida. Ejemplos de la Ayuda Muestra una lista de los ejemplos que contiene la documentacin de MSDN.

Plantilla Biblioteca controles de Windows

Plantilla Aplicacin Web Aplicaciones ASP.NET programables.

Plantilla de Aplicacin Aplicaciones Web ASP.NET Web de ASP.NET Mobile para PDA (asistentes personales digitales), telfonos mviles y otros dispositivos mviles. Plantilla ASP.NET Servicio Web Los servicios Web XML se crean con ASP.NET, funcionalidad que puede publicarse y recibir llamadas de aplicaciones externas de Controles personalizados para utilizarlos en pginas de formularios Web Forms Nota para Visual Basic Este tipo de proyecto es anlogo al proyecto de controles ActiveX de Visual Basic 6.0. de Aplicaciones comandos. de lnea de

Plantilla Biblioteca controles Web

3.4 Tipos de proyectos


Cuando se crea un nuevo proyecto, los iconos de los cuadros de dilogo Nuevo proyecto y Agregar proyecto representan los tipos de proyecto disponibles y sus plantillas. La plantilla de proyecto asociada con el icono de proyecto elegido determina el tipo de resultado y otras opciones disponibles para el proyecto. Hay dos modelos de proyecto bsicos en Visual Basic: local y Web. En el presente curso nos vamos a centrar principalmente en los proyectos locales, los cuales se describen brevemente en la siguiente tabla. Plantilla de proyecto Plantilla de para Windows Se utiliza para crear Plantilla consola Plantilla Windows Aplicacin Servicio

de Aplicaciones de larga duracin que no tienen una interfaz de usuario. Las aplicaciones de servicios de Windows (antes denominadas "servicios NT") pueden supervisar elementos tales como el rendimiento del sistema.

Plantilla Nuevo proyecto Proyectos en blanco dentro de en carpeta existente una carpeta de aplicacin existente que sirven para utilizar archivos de aplicacin Aplicaciones autnomas un proyecto preexistente. Esta tradicionales para Windows o una plantilla puede utilizarse tanto con interfaz rica para una aplicacin proyectos locales como con Web distribuida. proyectos Web. Nota para Visual Basic Esto Proyecto vaco. La plantilla crea reemplaza las plantillas de Plantilla Proyecto vaco PGINA 19

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Plantilla de proyecto

3.4.3 Las aplicaciones Windows y Visual Studio la estructura de archivos necesaria


Se utiliza para crear

para almacenar la informacin de Al igual que con cualquier otra aplicacin la aplicacin; las referencias, .NET, se pueden crear aplicaciones Windows en un archivos o componentes deben editor de texto, hacer llamadas a mtodos y clases agregarse manualmente. .NET, compilar la aplicacin en la lnea de comandos y distribuir el programa ejecutable resultante. Plantilla Proyecto Web Para usuarios avanzados que vaco desean empezar a programar en un Tambin puede utilizar Visual Studio .NET. entorno vaco y agregar su propia Cuando utilice Visual Studio .NET para crear funcionalidad basada en el aplicaciones Web, estar creando esencialmente la servidor. misma aplicacin que podra crear a mano. La ventaja de utilizar Visual Studio .NET es que proporciona herramientas que hacen que el desarrollo de 3.4.1 Creando Aplicaciones aplicaciones sea mucho ms rpido, sencillo y confiable. Entre estas herramientas se incluyen: Una parte importante de Visual Studio.NET es la capacidad de crear aplicaciones Windows que se ejecutan localmente en los equipos de los usuarios. Diseadores visuales para Visual Studio .NET permite crear la aplicacin con su formularios Windows Forms con interfaz de usuario mediante formularios Windows controles de arrastrar y colocar. Forms. Editores de cdigo inteligentes que incluyen finalizacin de instrucciones, comprobacin de 3.4.2 Aplicaciones Windows de Visual sintaxis y otras caractersticas de IntelliSense. Studio Compilacin y depuracin Una aplicacin Windows de Visual Studio se integradas. desarrolla en torno al Framework .NET, un amplio Utilidades de administracin de conjunto de clases que permiten programar proyectos para la creacin y aplicaciones sofisticadas. Por ejemplo, puede crear administracin de archivos de aplicaciones Windows mediante cualquier lenguaje de aplicacin, incluida la programacin .NET (Visual Basic, C#, Extensiones implementacin en servidores de administradas para C++ y muchos otros) y las intranet o Internet. utilidades de depuracin .NET. Si ya utiliz Visual Studio antes, este tipo de funciones le parecern familiares, porque son Las aplicaciones Windows creadas con clases similares a las disponibles en versiones anteriores de .NET proporcionan otros beneficios. Es posible Visual Basic y Visual C++. Visual Studio .NET las obtener acceso a los servicios del sistema operativo y ampla para ofrecer un entorno de primer nivel para beneficiarse de las ventajas que proporciona el programar aplicaciones Windows. entorno de ejecucin del usuario. Puede tener acceso a datos utilizando ADO.NET. GDI+ permite realizar funciones avanzadas de dibujado y pintado en los formularios. Las aplicaciones Windows pueden 3.4.4 Desarrollo de aplicaciones realizar llamadas a mtodos que se exponen a travs Windows de servicios Web XML, lo cual invita a aprovechar la El desarrollo de aplicaciones Windows con informacin y los recursos de procesamiento de Visual Studio puede tomar muchas formas diferentes. diferentes fuentes y socios. Se pueden crear aplicaciones de formularios Windows Forms y servicios Windows que aprovechen todas las posibilidades de .NET Framework, o utilizar Visual C++ para crear aplicaciones Win32.

VISUAL BASIC.NET CON SQL SERVER

PGINA 20

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN

3.4.5 Aplicaciones Windows

de

servicios

de

un botn y devuelve una cadena con el contenido del cuadro de texto.


Public Function InputBox( _ ByVal Prompt As String, _ Optional ByVal Title As String = "", _ Optional ByVal DefaultResponse As String = "", _ Optional ByVal XPos As Integer = -1, _ Optional ByVal YPos As Integer = -1 _ ) As String

Si utiliza Microsoft Visual Studio .NET o Microsoft .NET Framework SDK, podr generar servicios fcilmente al crear una aplicacin que se instale como servicio. Este tipo de aplicacin se denomina Servicio de Windows. Con las funciones del marco de trabajo, es posible crear servicios, instalarlos, iniciarlos, detenerlos y controlar su comportamiento.

3.4.6 Proyectos Win32


Se puede utilizar el Asistente para proyectos con el fin de crear tipos de proyecto Win32, incluidas aplicaciones de consola, aplicaciones Windows ejecutables, bibliotecas de vnculos dinmicos y bibliotecas estticas. Para crear un proyecto de Aplicacin para Windows La base de la mayor parte de soluciones que impliquen formularios Windows Forms es el proyecto Aplicacin para Windows. Resulta sencillo crearlo mediante el entorno de desarrollo integrado (IDE). 1. En el men Archivo, elija Nuevo y, a continuacin, seleccione Proyecto. 2. En el panel Tipos de proyecto, elija el idioma que desee. 3. En el panel Plantillas, elija Aplicacin para Windows para proyectos de Visual Basic. Nota En el cuadro Nombre, asigne al proyecto un nombre nico, que indique cul es el propsito de la aplicacin. En el cuadro Ubicacin, escriba el directorio en el que desee guardar el proyecto o haga clic en el botn Examinar para desplazarse hasta l. Se abrir el Diseador de Windows Forms, que mostrar el formulario Form1 del proyecto creado.

4 Controles Windows

de

formularios

4.1 Cuadro de Mensajes


4.1.1 Funcin InputBox
Muestra un mensaje en un cuadro de dilogo, espera a que el usuario escriba un texto o haga clic en

Parmetros Prompt Requerido. Expresin de tipo String 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 va a tener ms de una lnea, stas pueden separarse mediante un carcter de retorno de carro (Chr(13)), un carcter de avance de lnea (Chr(10)) o la combinacin retorno de carro-avance de lnea (Chr(13)) & (Chr(10)) entre cada lnea. Title Opcional. Expresin de tipo String que se muestra en la barra de ttulo del cuadro de dilogo. Si se omite Title, en la barra de ttulo aparecer el nombre de la aplicacin. DefaultResponse Opcional. Expresin de tipo String que se muestra en el cuadro de texto como respuesta predeterminada en caso de que no se suministre otra entrada. Si se omite DefaultResponse, el cuadro de texto se mostrar vaco. XPos Opcional. Expresin numrica que especifica, en twips, la distancia entre el borde izquierdo del cuadro de dilogo y el borde izquierdo de la pantalla. Si se omite XPos, el cuadro de dilogo quedar centrado horizontalmente. YPos Opcional. Expresin numrica que especifica, en twips, la distancia entre el borde superior del cuadro de dilogo y el borde superior de la pantalla. Si se omite YPos, el cuadro de dilogo se situar, en sentido vertical, a aproximadamente un tercio del alto total de la pantalla.

VISUAL BASIC.NET CON SQL SERVER

PGINA 21

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Comentarios: Si desea especificar ms que el primer argumento, deber utilizar la funcin InputBox en una expresin. Si omite alguno de los argumentos de posicin, deber conservar el correspondiente delimitador de coma. Ejemplo En este ejemplo se muestran distintas formas de utilizar la funcin InputBox para pedir al usuario que introduzca un valor. Si se omiten las posiciones x e y, el cuadro de dilogo quedar centrado automticamente respecto a ambos ejes. La variable MyValue contiene el valor introducido por el usuario al hacer clic en Aceptar o presionar la tecla ENTRAR. Si el usuario hace clic en Cancelar, se devolver una cadena de longitud cero.
Dim message, title, defaultValue As String Dim myValue As Object message = "Enter a value between 1 and 3" ' Set prompt. title = "InputBox Demo" ' Set title. DefaultValue = "1" ' Set default value. ' Display message, title, and default value. myValue = InputBox(message, title, defaultValue) ' Display dialog box at position 100, 100. myValue = InputBox(message, title, defaultValue, 100, 100)

carro (Chr(13)), un carcter de avance de lnea (Chr(10)) o la combinacin retorno de carro/avance de lnea (Chr(13)) & (Chr(10)) entre cada lnea. Buttons Opcional. Expresin numrica que corresponde a la suma de los valores que especifican el nmero y tipo de botones que se han de mostrar, el estilo de icono que se va a usar, la identificacin del botn predeterminado y la modalidad del cuadro de mensaje. Si se omite Buttons, el valor predeterminado ser cero. Title Opcional. Expresin de tipo String que se muestra en la barra de ttulo del cuadro de dilogo. Si se omite Title, en la barra de ttulo aparecer el nombre de la aplicacin. Configuracin En la siguiente tabla se incluyen los valores de enumeracin de MsgBoxStyle: Enumeracin OKOnly OKCancel Valor 0 1 2 3 4 5 16 32 48 64 0 256 Descripcin Muestra Aceptar. slo el botn botones

4.1.2 Funcin MsgBox


Muestra un mensaje en un cuadro de dilogo, espera a que el usuario haga clic en un botn y devuelve un entero que indica el botn utilizado.
Public Function InputBox( _ ByVal Prompt As String, _ Optional ByVal Title As String = "", _ Optional ByVal DefaultResponse As String = "", _ Optional ByVal XPos As Integer = -1, _ Optional ByVal YPos As Integer = -1 _ ) As String

Muestra los Aceptar y Cancelar.

AbortRetryIgnore YesNoCancel YesNo RetryCancel Critical Question

Muestra los botones Anular, Reintentar y Omitir. Muestra los botones S, No y Cancelar. Muestra los botones S y No. Muestra los botones Reintentar y Cancelar. Muestra el icono Mensaje crtico. Muestra el icono Consulta de advertencia. Muestra el icono Mensaje de advertencia. Muestra el icono Mensaje de informacin. El primer botn es el predeterminado. El segundo botn es el predeterminado. PGINA 22

Parmetros Prompt Requerido. Expresin de tipo String 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 va a tener ms de una lnea, stas pueden separarse mediante un carcter de retorno de

Exclamation Informacin DefaultButton1 DefaultButton2

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Enumeracin DefaultButton3 ApplicationModal Valor 512 0 Descripcin El tercer botn predeterminado. es Excepciones o errores el Tipo de excepcin el al ArgumentException de la Condicin Prompt no es una expresin String o Title no es vlido. El proceso no se est ejecutando en modo interactivo de usuario.

Aplicacin modal: usuario debe responder cuadro de mensaje antes continuar trabajando en aplicacin actual.

SystemModal

4096

Sistema modal: se suspenden todas las InvalidOperationException aplicaciones hasta que el usuario responda al cuadro de mensaje. Especifica la ventana del cuadro de mensaje como ventana de primer plano.

MsgBoxSetForegrou nd MsgBoxRight MsgBoxRtlReading

Uno o ms parmetros no son miembros las 524288 Texto alineado a la derecha.InvalidEnumArgumentException de enumeraciones 1048576 Especifica que el texto debe MsgBoxResult aparecer para ser ledo de o derecha a izquierda en los MsgBoxStyle. sistemas rabe y hebreo. Comentarios Si el cuadro de dilogo muestra un botn Cancel, presionar la tecla ESC tendr el mismo efecto que hacer clic en Cancel. Si el cuadro de dilogo contiene un botn Help, existe ayuda contextual para ese cuadro de dilogo en concreto. Sin embargo, no se devolver ningn valor hasta que se haga clic en uno de estos botones. Nota Si desea especificar ms que el primer argumento, deber utilizar la funcin MsgBox en una expresin. Si omite alguno de los argumentos de posicin, deber conservar el correspondiente delimitador de coma. Ejemplo: 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. Todo ello se consigue combinando los valores de constante de MsgBox en una expresin numrica. En este caso, si se agrega 4 (la combinacin de botones S/No) y 16 (la ventana Mensaje crtico) y 256 (el segundo botn como botn predeterminado) se obtiene un total de 276. El valor que devuelve la funcin MsgBox depende del botn que elija el usuario: S devuelve un valor 6; No un valor 7.
Dim msg As String Dim title As String Dim style As MsgBoxStyle

65536

El primer grupo de valores (0 a 5) describe el nmero y tipo de botones mostrados en el cuadro de dilogo; el segundo grupo (16, 32, 48, 64) detalla el estilo de icono; el tercero (0, 256, 512) determina el botn predeterminado; el cuarto (0, 4096), la modalidad del cuadro de mensaje; y, por ltimo, el quinto grupo especifica si la ventana del cuadro de mensaje est en primer plano o no, as como la alineacin y la direccin que ha de tener el texto. A la hora de sumar nmeros para crear el valor final del argumento Buttons, se deber utilizar nicamente un nmero de cada grupo. Valores devueltos Valor OK Cancel Abort Retry Ignore Yes No 1 2 3 4 5 6 7

VISUAL BASIC.NET CON SQL SERVER

PGINA 23

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN
Dim response As MsgBoxResult msg = "Do you want to continue?" ' Define message. style = MsgBoxStyle.DefaultButton2 Or _ MsgBoxStyle.Critical Or MsgBoxStyle.YesNo title = "MsgBox Demonstration" ' Define title. ' Display message. response = MsgBox(msg, style, title) If response = MsgBoxResult.Yes Then ' User chose Yes. ' Perform some action. Else ' Perform some other action. End If

3.

El control se agregar al formulario en la ubicacin especificada, con su tamao predeterminado.

Nota Puede hacer doble clic en un control del Cuadro de herramientas para agregarlo al margen superior izquierdo del formulario con su tamao predeterminado.

4.3 Propiedades controles


4.3.1 Editar las control propiedades del

4.2 Insertar controles formulario

en

el

Existe una gran variedad de controles que se puede insertar en los formularios Windows Forms, segn las necesidades de la aplicacin. La mayora de los formularios se disean mediante la adicin de controles a la superficie del formulario, para definir una interfaz de usuario. Un control es un componente de un formulario que se utiliza para mostrar informacin o aceptar los datos introducidos por el usuario. Para dibujar un control en un formulario 1. Abra el formulario. 2. En el Cuadro de herramientas, haga clic en el control que desee agregar al formulario. 3. En el formulario, haga clic en el punto en que desee que se encuentre la esquina superior izquierda del control y arrastre hasta donde desee que se encuentre la esquina inferior derecha del control. El control se agregar al formulario con la ubicacin y el tamao especificados. Cada control tiene definido un tamao predeterminado. Puede agregar un control al formulario con su tamao predeterminado arrastrndolo desde el Cuadro de herramientas al formulario. Para agregar un control a un formulario 1. Abra el formulario. 2. En el Cuadro de herramientas, haga clic en el control que desee y arrstrelo al formulario.

Para editar las propiedades de uno o ms controles 1. En el cuadro de dilogo, seleccione el control que desee modificar. Nota Si selecciona varios controles, slo ser posible modificar las propiedades que sean comunes a todos ellos. 2. En la ventana Propiedades, cambie las propiedades del control. Para deshacer los cambios de las propiedades de un control 1. Asegrese de que el control tiene el foco en el Editor de cuadros de dilogo. 2. Elija Deshacer en el men Edicin (si el foco no est en el control, este comando no estar disponible).

4.4 Controles bsicos de formularios Windows


4.4.1 Label
Los controles Label se utilizan normalmente para proporcionar texto descriptivo de un control. Por ejemplo, se puede utilizar un objeto Label para agregar texto descriptivo para un control TextBox e informar al usuario del tipo de datos que se espera tener en el control. Los controles Label se pueden utilizar tambin para agregar texto descriptivo a un formulario para proporcionar al usuario informacin til. Por ejemplo, se puede agregar Label en la parte superior de Form que proporciona al usuario instrucciones sobre cmo introducir datos en los controles del formulario. Los controles Label se pueden utilizar tambin para mostrar informacin en PGINA 24

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN tiempo de ejecucin sobre el estado de una aplicacin. Por ejemplo, se puede agregar un control Label a un formulario para mostrar el estado de cada archivo cuando se procesa una lista de archivos. Label participa en el orden de tabulacin de un formulario, pero no recibe el foco (el siguiente control del orden de tabulacin recibe el enfoque). Por ejemplo, si la propiedad UseMnemonic est establecida en true y se especifica un carcter mnemotcnico (el primer carcter despus del smbolo &) en la propiedad Text del control, cuando el usuario presiona ALT + la tecla mnemotcnica, el foco se mueve hacia el siguiente control del orden de tabulacin. Esta caracterstica permite desplazarse por un formulario mediante el teclado. Adems de mostrar texto, el control Label puede mostrar asimismo una imagen mediante la propiedad Image, o una combinacin de las propiedades ImageIndex e ImageList. Nota Para que Label sea transparente, hay que establecer la propiedad BackColor a Color.Transparent. Para limitar la cantidad de texto escrito en un control TextBox, establezca la propiedad MaxLenght en un nmero de caracteres especfico. Los controles TextBox se pueden utilizar tambin para aceptar contraseas y otra informacin delicada. Es posible utilizar la propiedad PasswordChar para enmascarar caracteres escritos en una versin de una sola lnea del control. Para restringir que se escriba texto en un control TextBox, se puede crear un controlador de eventos para el evento KeyDown con el fin de validar cada carcter escrito en el control. Tambin se puede restringir toda entrada de datos en un control TextBox; para ello, establezca la propiedad ReadOnly en true. Nota La mayor parte de la funcionalidad del control TextBox se hereda de la clase TextBoxBase.

4.4.3 Button
El control Button de los formularios Windows Forms permite al usuario hacer clic en l para ejecutar una accin. Cuando se hace clic en el botn, da la sensacin de que se ha presionado y soltado. Cada vez que el usuario hace clic en un botn, se invoca al controlador del evento Click. El cdigo se ubica en el controlador del evento Click para ejecutar la accin deseada. El texto que se muestra en el botn se almacena en la propiedad Text. Si este texto supera el ancho del botn, se ajustar en la lnea siguiente. No obstante, si el control no dispone del alto suficiente, el texto aparecer cortado. La propiedad Text puede contener una tecla de acceso, que permite al usuario presionar la tecla ALT junto con la tecla de acceso para "hacer clic" en el control. La propiedad Font y la propiedad TextAlign controlan la apariencia del texto. El control Button puede mostrar tambin imgenes, por medio de las propiedades Image e ImageList. Se puede hacer clic en Button utilizando el mouse (ratn), la tecla ENTRAR o la BARRA ESPACIADORA si el botn tiene foco. Se establece la propiedad AcceptButton o CancelButton de un objeto Form para permitir a los usuarios hacer clic en un botn presionando ENTRAR o ESCAPE incluso si el botn no tiene foco. Esto proporciona al formulario el comportamiento de un cuadro de dilogo. Al mostrar un formulario mediante el mtodo ShowDialog, se puede utilizar la propiedad

4.4.2 TextBox
El control TextBox permite al usuario escribir texto en una aplicacin. Este control tiene funcionalidad adicional que no se encuentra en el control de cuadro de texto de Windows estndar, como el enmascaramiento de caracteres de contrasea y la edicin de mltiples lneas. Habitualmente, se utiliza un control TextBox para mostrar, o aceptar como entrada, una sola lnea de texto. Es posible utilizar las propiedades Multiline y ScrollBars para permitir que se muestren o escriban varias lneas de texto. Establezca las propiedades AcceptsTab y AcceptsReturn en true con el fin de permitir una mayor manipulacin de texto en un control TextBox multilnea. El texto que se muestra en el control se encuentra almacenado en la propiedad Text. De forma predeterminada, en un cuadro de texto se puede escribir 2048 caracteres como mximo. Si establece la propiedad MultiLine en true, podr escribir un mximo de 32 KB de texto. La propiedad Text puede establecerse en tiempo de diseo con la ventana Propiedades, en tiempo de ejecucin mediante cdigo o por medio de la introduccin de datos por el usuario en tiempo de ejecucin. El contenido actual de un cuadro de texto puede recuperarse en tiempo de ejecucin mediante la lectura de la propiedad Text.

VISUAL BASIC.NET CON SQL SERVER

PGINA 25

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN DialogResult de un botn para especificar el valor devuelto de ShowDialog. Nombre Descripcin Abort El valor devuelto por el cuadro de dilogo es Abort (suele enviarse desde un botn Anular). El valor devuelto por el cuadro de dilogo es Cancel (suele enviarse desde un botn Cancelar). El valor devuelto por el cuadro de dilogo es Ignore (suele enviarse desde un botn Omitir). El valor devuelto por el cuadro de dilogo es No (suele enviarse desde un botn No). El cuadro de dilogo devuelve Nothing. Esto significa que el cuadro de dilogo modal contina ejecutndose. El valor devuelto por el cuadro de dilogo es OK (suele enviarse desde un botn Aceptar). El valor devuelto por el cuadro de dilogo es Retry (suele enviarse desde un botn Reintentar). El valor devuelto por el cuadro de dilogo es Yes (suele enviarse desde un botn S). devueltos por la propiedad

4.4.4 Checkbox
El control CheckBox de los formularios Windows Forms indica si una condicin determinada est activada o desactivada. Se utiliza habitualmente para presentar al usuario una seleccin de tipo S/No o Verdadero/Falso. Puede utilizar grupos de casillas de verificacin para mostrar mltiples opciones entre las cuales el usuario puede elegir una o ms. El control casilla de verificacin es similar al control botn de opcin, puesto que los dos se utilizan para indicar una seleccin realizada por el usuario. Slo difieren en que en un grupo de botones de opcin no se puede seleccionar ms de un botn de opcin. Sin embargo, en un grupo de casillas de verificacin es posible seleccionar tantas casillas de verificacin como se desee. Puede conectar una casilla de verificacin a elementos de una base de datos mediante enlaces simples de datos. Tambin puede agrupar mltiples casillas de verificacin por medio del control GroupBox. Esto resulta til para mejorar la apariencia visual y para el diseo de la interfaz de usuario, puesto que permite mover juntos los controles agrupados por el diseador de formularios El control CheckBox tiene dos importantes propiedades: Checked y CheckState. La propiedad Checked devuelve true o false. Se utiliza la propiedad Checked para obtener o establecer el valor de un control de casilla de verificacin de dos estados. La propiedad CheckState devuelve CheckState.Checked o CheckState.Unchecked; o bien, si la propiedad ThreeState est definida como true, CheckState puede devolver tambin CheckState.Indeterminate. En el estado indeterminado, el cuadro se muestra atenuado para indicar que la opcin no est disponible. El control de la casilla de verificacin puede mostrar una imagen o texto o ambos. La propiedad Appearance determina si la casilla de verificacin aparece en su forma tpica o como un botn. Nota Si se establece la propiedad ThreeState en true, la propiedad Checked devuelve true para los estados activado o indeterminado. La propiedad FlatStyle determina el estilo y el aspecto del control. Si la propiedad FlatStyle se establece en FlatStyle.System, el sistema operativo del usuario determina la apariencia del control. Nota Cuando se establece la propiedad FlatStyle en FlatStyle.System, se omite la propiedad CheckAlign y se muestra el control con la alineacin PGINA 26

Cancel

Ignore

No None

OK.

Retry.

Yes.

Tabla Valores DialogResult.

Es posible cambiar la apariencia del botn. Por ejemplo, para darle un aspecto liso a una pgina Web, hay que establecer la propiedad FlatStyle en FlatStyle.Flat. La propiedad FlatStyle tambin puede establecerse en FlatStyle.Popup, y el botn presentar un aspecto liso hasta que el puntero del mouse pase sobre el mismo, con lo cual a partir de ese momento el botn adoptar la apariencia de un botn estndar de Windows. Nota: Si el control que tiene el foco acepta y procesa la accin de presionar la tecla ENTRAR, el control Button no lo procesa. Por ejemplo, si un control TextBox multilnea o cualquier otro botn tiene foco, dicho control procesa la accin de presionar la tecla ENTRAR en lugar del botn que representa la accin de Aceptar.

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN ContentAlignment.MiddleLeft o ContentAlignment.MiddleRight. Si se establece la propiedad CheckAlign en una de las alineaciones a la derecha, se muestra el control con la alineacin ContentAlignment.MiddleRight; de lo contrario, se muestra con la alineacin ContentAlignment.MiddleLeft. A continuacin se describe en qu consiste un estado indeterminado. Se puede partir de una casilla de verificacin que determina si el texto seleccionado en un control RichTextBox est en negrita. Al seleccionar texto se puede hacer clic en la casilla de verificacin para poner en negrita la seleccin. De igual forma, al seleccionar un poco de texto, la casilla muestra si el texto seleccionado est en negrita. Si ste contiene texto en negrita y normal, la casilla de verificacin tendr un estado indeterminado.

4.4.6 Panel
Los controles Panel de formularios Windows Forms se utilizan para proporcionar un agrupamiento identificable para otros controles. Normalmente, los paneles se utilizan para subdividir un formulario por funciones. Agrupar todas las opciones en un panel ofrece al usuario una pista visual lgica. En tiempo de diseo todos los controles se pueden mover fcilmente; cuando se mueve el control Panel, todos los controles que contiene se desplazan tambin. Se puede obtener acceso a los controles agrupados en un panel mediante su propiedad Controls. Los controles Panel y GroupBox son similares; sin embargo, el control Panel es el nico de los dos que puede tener barras de desplazamiento y el control GroupBox es el nico de los dos que muestra un ttulo. Panel es un control que contiene otros controles. Al igual que sucede con otros controles contenedores, como el control GroupBox, si la propiedad Enabled del control Panel est establecida en false, los controles contenidos dentro de Panel tambin se deshabilitarn. Para mostrar barras de desplazamiento, establezca la propiedad AutoScroll en true. Para personalizar la apariencia del panel, establezca las propiedades BackColor, BackgroundImage y BorderStyle. El control Panel se muestra de forma predeterminada sin bordes. La propiedad BorderStyle sirve para distinguir el rea del panel de otras reas del formulario, determina si el panel est rodeado por un borde invisible (None), una lnea simple (FixedSingle) o una lnea sombreada (Fixed3D). Debido a que el control Panel deriva de la clase ScrollableControl, se puede utilizar la propiedad AutoScroll para habilitar barras de desplazamiento en el control Panel. Cuando la propiedad AutoScroll est establecida en true, es posible desplazarse a cualquier control situado dentro de Panel, aunque fuera de su regin visible, con las barras de desplazamiento proporcionadas.

4.4.5 Groupbox
Los controles GroupBox de formularios Windows Forms se utilizan para proporcionar un agrupamiento identificable para otros controles. Normalmente, los cuadros de grupo se utilizan para subdividir un formulario por funciones. Por ejemplo, podra tener un formulario de pedido que especifique opciones de envo con un grupo lgico de controles RadioButton, como el servicio de transporte urgente que se va a utilizar. La agrupacin de todas las opciones en un cuadro de grupo ofrece al usuario una pista visual lgica. Adems, en tiempo de diseo es fcil mover todos los controles, ya que, al mover el control GroupBox, tambin se mueve todo su contenido. Los controles GroupBox y Panel son similares; sin embargo, el control GroupBox es el nico de los dos que muestra un ttulo y el control Panel es el nico de los dos que puede tener barras de desplazamiento. La propiedad Text define el ttulo del cuadro de grupo. GroupBox muestra un marco alrededor de un grupo de controles con o sin ttulo. Se pueden agregar controles a GroupBox mediante el mtodo Add de la propiedad Controls. Nota Solo se pueden seleccionar o recibir foco los controles que se incluyen en el control GroupBox. No puede seleccionarse ni recibir foco todo el control GroupBox.

4.4.7 Radiobutton
Los controles RadioButton de formularios Windows Forms presentan al usuario un conjunto de dos o ms opciones excluyentes entre s. Aunque puede parecer que los botones de opcin y las casillas de verificacin funcionan de forma parecida, existe una diferencia PGINA 27

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN importante: cuando un usuario selecciona un botn de opcin, no puede seleccionar ninguno de los otros botones de opcin del mismo grupo sin perder la seleccin de este botn. En cambio, es posible activar tantas casillas de verificacin como se desee. Al definir un grupo de botones de opcin, se indica al usuario que "tiene este conjunto de opciones entre las que puede elegir una y solamente una". Cuando se hace clic en un control RadioButton, su propiedad Checked se establece en true y se llama al controlador de eventos Click. El evento CheckedChanged se produce cuando cambia el valor de la propiedad Checked. Si la propiedad AutoCheck se establece en true (la opcin predeterminada), al seleccionar el botn de opcin se desactivarn automticamente los dems botones de opcin del grupo. Normalmente, esta propiedad slo se establece en false cuando se utiliza cdigo de validacin para comprobar que el botn de opcin seleccionado corresponde a una opcin vlida. El texto que se muestra dentro del control se establece con la propiedad Text, que puede contener teclas de acceso directo. Una tecla de acceso directo permite al usuario "hacer clic" en el control; para ello, debe presionar la tecla ALT junto con la tecla de acceso Si se establece la propiedad Appearance en Appearance.Button, el control RadioButton puede tener la apariencia de un botn de comando o botn alternar, que parece estar presionado cuando est seleccionado. Los botones de opcin pueden mostrar tambin imgenes mediante las propiedades Image e ImageList. Todos los controles RadioButton de un contenedor determinado, como Form, constituyen un grupo. Para crear varios grupos en un formulario, coloque cada grupo en su propio contenedor, como un control GroupBox o Panel. Nota En ocasiones, el botn de opcin se denomina botn de radio. 1. En el men Ver, elija Orden de tabulacin. Esto activa el modo de seleccin del orden de tabulacin en el formulario. En la esquina superior izquierda de cada control aparecer un nmero (que representa la propiedad TabIndex). 2. Haga clic secuencialmente en los controles para establecer el orden de tabulacin que desee. Nota La posicin de un control dentro del orden de tabulacin puede establecerse en cualquier valor mayor o igual a cero. Cuando existen duplicados, se evala el orden z de los dos controles y se coloca primero el control superior. El orden z es la disposicin visual en capas de los controles de un formulario a lo largo del eje z del formulario (profundidad). El orden z determina qu controles se encuentran por delante de otros controles. 3. Cuando termine, elija otra vez Orden de tabulacin en el men Ver para abandonar el modo de orden de tabulacin. Nota Los controles que no pueden tener el foco, as como los deshabilitados e invisibles, no tienen propiedad TabIndex y no se incluyen en el orden de tabulacin. Cuando el usuario presiona la tecla TABULADOR, estos controles se omiten. Tambin es posible establecer el orden de tabulacin en la ventana Propiedades, mediante la propiedad TabIndex. La propiedad TabIndex de un control determina su posicin dentro del orden de tabulacin. De forma predeterminada, para el primer control que se dibuja el valor de TabIndex es 0; para el segundo, el valor de TabIndex es 1 y as sucesivamente. Adems, como opcin predeterminada, los controles GroupBox tienen su propio valor TabIndex, que es un nmero entero. Un control GroupBox no puede tener por s mismo el foco en tiempo de ejecucin. Por tanto, cada control de un GroupBox tiene su propio valor TabIndex decimal, comenzando con .0. Naturalmente, conforme aumenta el valor TabIndex de un control GroupBox, los controles que contiene aumentarn en consecuencia. Si cambia el valor de TabIndex de 5 a 6, el valor de TabIndex del primer control de su grupos cambia automticamente a 6.0, etc. Finalmente, es posible omitir cualquier control del formulario en el orden de tabulacin. Habitualmente, al presionar sucesivamente la tecla TABULADOR en tiempo de ejecucin, se selecciona cada control en el orden de tabulacin. Al desactivar la propiedad TabStop, es posible hacer que un control se pase por alto en el orden de tabulacin del formulario.

4.5 Orden de tabulacin


El orden de tabulacin es el orden en el que el usuario mueve el foco de un control a otro al presionar la tecla TABULADOR. Cada formulario tiene su propio orden de tabulacin. De forma predeterminada, el orden de tabulacin es el mismo que el orden en el que se crearon los controles. La numeracin del orden de tabulacin empieza por cero. Para establecer el orden de tabulacin de un control

VISUAL BASIC.NET CON SQL SERVER

PGINA 28

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Para quitar un control del orden de tabulacin Establezca la propiedad TabStop del control en false en la ventana Propiedades. Un control cuya propiedad TabStop se haya establecido en false contina manteniendo su posicin en el orden de tabulacin, aunque se omita al recorrer los controles con la tecla TABULADOR. Nota En tiempo de ejecucin, un grupo de botones de opcin tiene una sola tabulacin en tiempo de ejecucin. El botn seleccionado (es decir, el botn para el que el valor de Checked es true), tiene su propiedad TabStop establecida automticamente en true, mientras que los dems botones tienen su propiedad TabStop establecida en false. Sin embargo, en algunos casos, puede permitir al usuario cerrar el formulario independientemente de que los valores de los controles sean vlidos o no. Puede reemplazar la validacin y cerrar un formulario que contenga datos no vlidos creando un controlador para el evento Closing del formulario. En el evento, defina la propiedad Cancel como False. Esto obliga al formulario a cerrarse. Nota Si fuerza al formulario a cerrarse de esta manera, se pierde la informacin de los controles que no se haya guardado antes. Nota Los formularios modales no validan el contenido de los controles cuando se cierran. No obstante, puede utilizar la validacin de controles para bloquear el foco en un control, pero no tiene que preocuparse por el comportamiento relativo al cierre del formulario. Ejemplo: En este ejemplo se valida la escritura por parte del usuario de al menos ocho caracteres en un control TextBox.
Private Sub TextBox1_Validating(ByVal sender As Object, _ ByVal e As System.ComponentModel.CancelEventArgs) _ Handles TextBox1.Validating If TextBox1.Text.Length < 8 Then MessageBox.Show _ ("El valor introducido no es vlido;" _ & " debe tener al menos 8 caracteres.") e.Cancel = True End If End Sub

4.6 Validar el contenido del control


Con frecuencia, se comprueba si la informacin que especifican los usuarios en un formulario Windows Forms es vlida. Por ejemplo, si tiene un control TextBox para un nmero de telfono, puede comprobar que contiene slo los caracteres correctos (nmeros, parntesis, guiones, etc.). Con frecuencia, se utilizan expresiones regulares para validar datos especificados por el usuario. Validacin en accin Para validar el contenido de un control, escriba cdigo que controle el evento Validating. En el controlador de eventos, debe probar una condicin determinada (como el nmero de telfono del ejemplo anterior). La validacin es uno de una serie de eventos que tiene lugar durante el procesamiento. Si la prueba da error, debe definir la propiedad Cancel del CancelEventArgs del evento Validating como True. Esto cancela el evento Validating y devuelve el foco al control. El efecto prctico es que el usuario no puede dejar el control hasta que los datos sean vlidos. Cerrar el formulario y reemplazar la validacin Un efecto secundario de que el control mantenga el foco cuando los datos no son vlidos es que no se puede cerrar el formulario primario con los mtodos que se usan normalmente para cerrar un formulario: Haciendo clic en el botn Cerrar. A travs del men Sistema que aparece cuando se hace clic con el botn secundario del mouse (ratn) en la barra de ttulo. Llamando al mtodo Close mediante programacin.

4.7 Otros Controles


4.7.1 LinkLabel
El control LinkLabel de formularios Windows Forms permite agregar vnculos de estilo Web a aplicaciones de formularios Windows Forms. El control LinkLabel es similar a un control Label, con la excepcin de que puede mostrar un hipervnculo. Puede utilizar el control LinkLabel para todo aquello para lo que pueda utilizar el control Label. Tambin puede establecer parte del texto como un vnculo a un archivo, una carpeta o una pgina Web. Adems de todas las propiedades, mtodos y eventos del control Label, el control LinkLabel posee propiedades para hipervnculos y colores de vnculo. La propiedad LinkArea establece el rea del texto que activa el vnculo. Las propiedades LinkColor, VisitedLinkColor y ActiveLinkColor establecen los colores del vnculo. El evento LinkClicked determina qu ocurre cuando se selecciona el texto del vnculo. PGINA 29

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN El uso ms simple del control LinkLabel es utilizarlo para mostrar un nico vnculo mediante la propiedad LinkArea, aunque tambin se pueden mostrar varios hipervnculos con la propiedad Links, que permite obtener acceso a una coleccin de vnculos. Asimismo, en la propiedad LinkData se pueden especificar datos de cada objeto Link individual. Cada hipervnculo puede realizar una tarea distinta dentro de una aplicacin. Por ejemplo, puede utilizar un hipervnculo para mostrar un sitio Web en Microsoft Internet Explorer o para cargar un archivo de registro asociado a una aplicacin. Cada hipervnculo que se muestra en el control LinkLabel es una instancia de la clase LinkLabel.Link. La clase LinkLabel.Link define informacin apariencia, estado y ubicacin del hipervnculo. Adems, la propiedad LinkData de la clase LinkLabel.Link permite asociar al hipervnculo informacin, como, por ejemplo, una direccin URL que se va a mostrar. Cuando un usuario hace clic en un hipervnculo del control, se provoca el evento LinkClicked y el objeto LinkLabel.Link que representa el hipervnculo en el que se hizo clic se pasa como parte del objeto LinkLabelLinkClickedEventArgs que se pasa como parmetro al controlador de eventos. Puede utilizar este objeto para obtener el objeto LinkLabel.Link asociado al hipervnculo en el que el usuario hizo clic. Todos los hipervnculos contenidos en el control LinkLabel se almacenan en la instancia de la clase LinkLabel.LinkCollection para el control. Existen dos maneras de agregar un hipervnculo al control LinkLabel. La forma ms rpida es especificar un objeto LinkArea y asignarlo a la propiedad LinkArea. De este modo, se puede especificar un solo hipervnculo en el texto del control. Para agregar varios hipervnculos, puede utilizar el mtodo Add de la clase LinkLabel.LinkCollection mediante el acceso a la coleccin a travs de la propiedad Links. Cuando se crea un control LinkLabel, se agrega a LinkLabel.LinkCollection un hipervnculo predeterminado que contiene todo el texto del control LinkLabel. Para reemplazar este vnculo predeterminado, especifique una nueva rea de vnculo con la propiedad LinkArea o especifique un vnculo con el mtodo Add de LinkLabel.LinkCollection. Tambin puede quitar el hipervnculo predeterminado utilizando el mtodo Remove de la clase LinkLabel.LinkCollection. LinkLabel proporciona varias propiedades que permiten definir la apariencia de los hipervnculos en el control. Las propiedades ActiveLinkColor, DisabledLinkColor, LinkColor y VisitedLinkColor definen los colores que se utilizan al mostrar un hipervnculo en distintos estados. La propiedad LinkBehavior define cmo se muestra el subrayado asociado a un hipervnculo.

4.7.2 Listbox
Un control ListBox de formularios Windows Forms muestra una lista de elementos de los cuales el usuario puede seleccionar uno o ms. Si el nmero total de elementos supera el nmero que se puede mostrar, se agrega automticamente una barra de desplazamiento al control ListBox. Cuando la propiedad MultiColumn se establece en true, el cuadro de lista muestra elementos en varias columnas y aparece una barra de desplazamiento horizontal. Cuando la propiedad MultiColumn se establece en false, el cuadro de lista muestra elementos en una nica columna y aparece una barra de desplazamiento vertical. Cuando ScrollAlwaysVisible se establece en true, la barra de desplazamiento aparece, independientemente del nmero de elementos. La propiedad SelectionMode determina cuntos elementos de la lista pueden seleccionarse a la vez. La propiedad SelectedIndex devuelve un valor entero que corresponde al primer elemento seleccionado en el cuadro de lista. Para cambiar mediante programacin el elemento seleccionado, cambie el valor SelectedIndex en el cdigo; el elemento correspondiente de la lista aparecer resaltado en el formulario Windows Forms. Si no se selecciona ningn elemento, el valor de SelectedIndex es -1. Si se selecciona el primer elemento de la lista, el valor SelectedIndex es 0. Cuando se seleccionan mltiples elementos, el valor SelectedIndex refleja el elemento seleccionado que aparece primero en la lista. La propiedad SelectedItem es similar a SelectedIndex, pero devuelve el elemento en s, habitualmente un valor de cadena. La propiedad Items.Count refleja el nmero de elementos de la lista. Su valor es siempre uno ms que el mayor valor posible para SelectedIndex, ya que SelectedIndex est basado en cero. Para agregar o eliminar elementos de un control ListBox, utilice los mtodos Items.Add, Items.Insert, Items.Clear o Items.Remove. Tambin puede agregar elementos a la lista mediante la propiedad Items en tiempo de diseo. Normalmente, Windows controla la tarea de dibujar los elementos que se van a mostrar en el control ListBox. Utilice la propiedad DrawMode y controle

VISUAL BASIC.NET CON SQL SERVER

PGINA 30

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN los eventos MeasureItem y DrawItem para poder reemplazar el dibujo automtico de Windows y dibujar los elementos por s mismo. Utilice controles ListBox dibujados por el propietario para mostrar elementos de alto variable, imgenes, un color o una fuente diferente para el texto de cada elemento de la lista. La propiedad HorizontalExtent as como los mtodos GetItemHeight y GetItemRectangle tambin proporcionan ayuda a la hora de dibujar elementos propios. Adems de la funcionalidad de presentacin y seleccin, ListBox tambin proporciona funciones que permiten agregar de manera eficaz elementos al control ListBox y buscar texto en los elementos de la lista. Los mtodos BeginUpdate y EndUpdate permiten agregar un gran nmero de elementos a ListBox sin tener que volver a dibujar el control cada vez que se agrega un elemento a la lista. Los mtodos FindString y FindStringExact permiten buscar un elemento de la lista que contenga una cadena de bsqueda especfica. Las propiedades Items, SelectedItems y SelectedIndices proporcionan acceso a las tres colecciones que ListBox utiliza. En la tabla siguiente se presentan las tres colecciones que ListBox utiliza y se indica su uso dentro del control. Clase de coleccin Uso dentro del cuadro de lista clase ListBox.ObjectCollection, puede usar tambin la propiedad DataSource de la clase ListControl.

4.7.3 CheckedListBox
El control CheckedListBox de los formularios Windows Forms complementa al control ListBox. Hace casi todo lo que puede hacer un cuadro de lista y, adems, puede mostrar una marca de verificacin junto a los elementos de la lista. Estos dos controles tambin se diferencian en que los cuadros de lista con marcas de verificacin slo admiten DrawMode.Normal y solamente pueden tener un elemento o ningn elemento seleccionado. Observe que un elemento seleccionado aparece resaltado en el formulario y que no es lo mismo que un elemento activado. En tiempo de ejecucin, se pueden agregar elementos a los cuadros de lista con marcas de verificacin mediante el Editor de la coleccin de cadenas, o bien se les pueden agregar elementos dinmicamente desde una coleccin, utilizando la propiedad Items. Este control presenta una lista de elementos por los que el usuario se puede desplazar mediante el teclado o la barra de desplazamiento situada a la derecha del control. El usuario puede colocar una marca de verificacin junto a uno o ms elementos, y puede explorar los elementos activados con CheckedListBox.CheckedItemCollection y CheckedListBox.CheckedIndexCollection. Para agregar objetos a la lista en tiempo de ejecucin, hay que asignar una matriz de referencias a objetos con el mtodo AddRange. De este modo la lista muestra el valor de cadena predeterminado para cada objeto. Es posible agregar elementos individuales a la lista con el mtodo Add. El objeto CheckedListBox admite tres estados a travs de la enumeracin CheckState: Checked, Indeterminate y Unchecked. Hay que establecer el estado de Indeterminate en el cdigo, ya que la interfaz de usuario de CheckedListBox no proporciona ningn mecanismo para ello. Si UseTabStops es true, CheckedListBox reconocer y extender los caracteres de tabulacin en el texto de un elemento, creando columnas. Sin embargo, las posiciones de tabulacin estn presentes y no pueden modificarse. La clase CheckedListBox admite las siguientes tres colecciones indizadas:

ListBox.ObjectCollecti Contiene todos los elementos on incluidos en el control ListBox. ListBox.SelectedObject Contiene una coleccin de los Collection elementos seleccionados, que constituye un subconjunto de los elementos incluidos en el control ListBox. ListBox.SelectedIndex Contiene una coleccin de los Collection ndices seleccionados, que constituye un subconjunto de los ndices de ListBox.ObjectCollection. Estos ndices especifican los elementos seleccionados. El mtodo Add de la clase ListBox.ObjectCollection permite agregar elementos a ListBox. El mtodo Add puede aceptar cualquier objeto al agregar un miembro a ListBox. Cuando se agrega un objeto a ListBox, el control utiliza el texto definido en el mtodo ToString del objeto, a menos que se especifique un nombre de miembro del objeto en la propiedad DisplayMember. Para agregar elementos, adems del mtodo Add de la

VISUAL BASIC.NET CON SQL SERVER

PGINA 31

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Clase de coleccin Uso dentro del cuadro de lista con marcas de verificacin seleccionar una opcin de la lista o escribir texto nuevo. El comportamiento predeterminado de ComboBox es mostrar un campo de edicin con una lista desplegable oculta. La propiedad DropDownStyle determina el estilo que mostrar el cuadro combinado. Puede escribir un valor que permita lo siguiente: una lista desplegable simple, en que la lista se muestra siempre; un cuadro de lista desplegable, en que la parte de texto no se puede editar y es necesario presionar una flecha para ver el cuadro de lista desplegable; o el cuadro de lista desplegable predeterminado, en que la parte de texto se puede editar y el usuario debe presionar la tecla de flecha para ver la lista. Para que siempre se muestre una lista que el usuario no puede editar, use un control ListBox. Para agregar objetos a la lista en tiempo de ejecucin, asigne una matriz de referencias a objetos con el mtodo AddRange. De este modo la lista muestra el valor de cadena predeterminado para cada objeto. Puede agregar objetos individuales con el mtodo Add. Adems de la funcionalidad de presentacin y seleccin, el ComboBox proporciona tambin caractersticas que permiten agregar elementos al ComboBox y buscar texto en los elementos de la lista de forma eficaz. Los mtodos BeginUpdate y EndUpdate permiten agregar un gran nmero de elementos al ComboBox sin que el control se tenga que volver a dibujar cada vez que se agrega un elemento a la lista. Los mtodos FindString y FindStringExact permiten buscar un elemento de la lista que contenga una cadena de bsqueda concreta. Estas propiedades se pueden usar para administrar el elemento de la lista seleccionado actualmente, la propiedad Text para especificar la cadena que se muestra en el campo de edicin, la propiedad SelectedIndex para obtener o establecer el elemento actual y la propiedad SelectedItem para obtener o establecer una referencia al objeto. CheckedListBox.Obj Todos los elementos incluidos en el ectCollection control CheckedListBox. CheckedListBox.Che Elementos activados (incluidos los ckedItemCollection elementos con estado indeterminado), que es un subconjunto de los elementos que contiene el control CheckedListBox. CheckedListBox.Che ndices activados, que constituyen un ckedIndexCollection subconjunto de los ndices de la coleccin de elementos. Estos ndices especifican elementos que estn activados o en un estado indeterminado.

4.7.4 ComboBox
El control ComboBox de los formularios Windows Forms se utiliza para mostrar datos en un cuadro combinado desplegable. De forma predeterminada, el control ComboBox aparece en dos partes: la parte superior es un cuadro de texto que permite al usuario escribir un elemento de la lista. La segunda parte es un cuadro de lista que muestra una lista de elementos de entre los que el usuario puede seleccionar uno La propiedad SelectedIndex devuelve un valor entero que corresponde al elemento seleccionado en la lista. Para cambiar mediante programacin el elemento seleccionado, cambie el valor de SelectedIndex en el cdigo; el elemento correspondiente de la lista aparecer en la parte de cuadro de texto del cuadro combinado. Si no se selecciona ningn elemento, el valor de SelectedIndex es -1. Si se selecciona el primer elemento de la lista, el valor de SelectedIndex es 0. La propiedad SelectedItem es similar a SelectedIndex, pero devuelve el elemento en s, normalmente un valor de cadena. La propiedad Items.Count refleja el nmero de elementos de la lista. Su valor es siempre uno ms que el mayor valor posible para SelectedIndex, ya que SelectedIndex est basado en cero. Para agregar o eliminar elementos de un control ListBox, utilice los mtodos Items.Add, Items.Insert, Items.Clear o Items.Remove. Tambin puede agregar elementos a la lista mediante la propiedad Items del diseador. Un ComboBox muestra un campo de edicin combinado con un ListBox y permite al usuario

4.7.5 Picturebox
El control PictureBox de los formularios Windows Forms se utiliza para mostrar grficos en formato de mapa de bits, GIF, JPEG, metarchivo, icono o PNG. La imagen que se muestra est determinada por la propiedad Image, que se puede establecer en tiempo de ejecucin o en tiempo de diseo. La propiedad SizeMode controla el ajuste entre la imagen y el control. PGINA 32

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Establezca la propiedad Image con el objeto Image que desea mostrar, ya sea en tiempo de diseo o en tiempo de ejecucin. La propiedad SizeMode controla el recorte y la ubicacin de la imagen en el rea de presentacin; los valores de esta propiedad se establecen en la enumeracin PictureBoxSizeMode. Se puede cambiar el tamao del rea de presentacin en tiempo de ejecucin con la propiedad ClientSize. El control PictureBox se muestra de forma predeterminada sin bordes. Para proporcionar un borde estndar o tridimensional, utilice la propiedad BorderStyle con el fin de distinguir el cuadro de imagen del resto del formulario, incluso si no contiene ninguna imagen. Modos de recorte y ubicacin (Propiedad SizeMode, Enumeracin PictureBoxSizeMode) Nombre miembro AutoSize de Descripcin El tamao de PictureBox debe ajustarse igual que el tamao de la imagen que contiene. La imagen se muestra en el centro si PictureBox es ms grande que la imagen. Si la imagen es ms grande que PictureBox, la imagen se coloca en el centro de PictureBox y se recortan los bordes exteriores. La imagen se coloca en la esquina superior izquierda de PictureBox. La imagen se recorta si es ms grande que el objeto PictureBox que la contiene. Start y Stop, que activan y desactivan el temporizador. Cuando el temporizador est desactivado, se reinicia; no hay modo de hacer una pausa en un componente Timer. Al aplicar este temporizador, utilice el evento Tick para realizar una operacin de sondeo o para mostrar una pantalla de inicio durante un perodo de tiempo determinado. Siempre que la propiedad Enabled se establece en true y la propiedad Interval es mayor que cero, el evento Tick se provoca en los intervalos especificados en la propiedad Interval.

4.7.7 TabControl
El control TabControl de formularios Windows Forms muestra mltiples fichas, similares a los divisores de un cuaderno o a las etiquetas de las carpetas de un archivador. Las fichas pueden contener imgenes y otros controles. Puede utilizar el control de fichas para crear cuadros de dilogo con varias pginas como los que suelen aparecer en el sistema operativo Windows, por ejemplo, en el control Pantalla del panel de control. La propiedad ms importante de TabControl es TabPages, que contiene las fichas individuales. Cada ficha individual es un objeto TabPage. Cuando se hace clic en una ficha, se produce el evento Click correspondiente al objeto TabPage.

CenterImage

Normal

4.7.8 TrackBar
El control TrackBar de formularios Windows Forms (tambin denominado en ocasiones control "deslizante") se utiliza para desplazarse por grandes volmenes de informacin o para ajustar visualmente una configuracin numrica. El control TrackBar tiene dos partes: el control de posicin, tambin conocido como control deslizante, y las marcas de paso. El control de posicin es la parte que puede ajustarse. Su posicin corresponde a la propiedad Value. Las marcas de paso son indicadores visuales espaciados a intervalos regulares. La barra de seguimiento se desplaza en los incrementos que se especifiquen y puede alinearse horizontal o verticalmente. Por ejemplo, se puede usar la barra de seguimiento para controlar la velocidad de intermitencia del cursor o la velocidad del mouse (ratn) en un sistema.

StretchImage La imagen situada dentro de PictureBox se estira o encoge para ajustarse al tamao de PictureBox.

4.7.6 Timer
El componente Timer de formularios Windows Forms produce un evento a intervalos regulares. Este componente est diseado para un entorno de formularios Windows. La longitud de los intervalos est definida por la propiedad Interval, cuyo valor se expresa en milisegundos. Cuando el componente est habilitado, el evento Tick se produce a cada intervalo. Aqu es donde se agrega el cdigo que se va a ejecutar. Los mtodos ms importantes del componente Timer son

VISUAL BASIC.NET CON SQL SERVER

PGINA 33

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Las propiedades principales del control TrackBar son Value, TickFrequency, Minimum y Maximum. TickFrequency es el espaciado de las marcas de paso. Minimum y Maximum son los valores mnimo y mximo que se pueden representar en la barra de seguimiento. Otras dos propiedades importantes son SmallChange y LargeChange. El valor de la propiedad SmallChange es el nmero de posiciones que se desplaza el control de posicin en respuesta a la accin de presionar la tecla FLECHA DERECHA o FLECHA IZQUIERDA. El valor de la propiedad LargeChange es el nmero de posiciones que se desplaza el control de posicin en respuesta a la accin de presionar la tecla RE PG o AV PG, o en respuesta a la accin de hacer clic con el mouse en la barra de seguimiento a ambos lados del control de posicin. TrackBar es un control desplazable similar al control ScrollBar. Para configurar los intervalos entre los que se desplaza el valor de la propiedad Value de una barra de seguimiento, establezca la propiedad Minimum para especificar el extremo inferior del intervalo y la propiedad Maximum para especificar el extremo superior del intervalo. La propiedad LargeChange define el incremento que se debe sumar o restar de la propiedad Value al hacer clic en uno de los lados del control deslizante. La barra de seguimiento se puede mostrar horizontal o verticalmente. Este control se puede utilizar para entrar los datos numricos obtenidos mediante la propiedad Value. Estos datos numricos se pueden mostrar en un control o se pueden utilizar en el cdigo. progreso realizado para completar la operacin. Puesto que la barra mostrada en el control se compone de bloques, el valor que muestra el control ProgressBar slo se aproxima al valor actual de la propiedad Value. En funcin del tamao del control ProgressBar, la propiedad Value determina cundo se muestra el siguiente bloque. El modo ms comn de actualizar el valor de progreso actual es escribir cdigo para definir la propiedad Value. En el ejemplo de la carga de un archivo grande, podra establecer el mximo en el tamao del archivo en kilobytes. Por ejemplo, si se establece la propiedad Maximum en 100, la propiedad Minimum en 10 y la propiedad Value en 50, se mostrarn 5 rectngulos, que es la mitad de los que se pueden mostrar. Sin embargo, hay otros modos de modificar el valor que muestra el control ProgressBar, aparte de definir la propiedad Value directamente. La propiedad Step se puede utilizar para especificar un valor con el que incrementar la propiedad Value. As, al llamar al mtodo PerformStep, se incrementar el valor. Para variar el valor de incremento, puede utilizar el mtodo Increment y especificar un valor con el que incrementar la propiedad Value. Otro control que informa grficamente al usuario acerca de una accin actual es el control StatusBar.

4.7.10 ListView
El control ListView de formularios Windows Forms muestra una lista de elementos con iconos. Puede utilizar una vista de lista para crear una interfaz de usuario similar al panel derecho del Explorador de Windows. El control tiene cuatro modos de vista: LargeIcon, SmallIcon, List y Details. El modo LargeIcon muestra iconos grandes junto al texto de los elementos; si el control es lo suficientemente grande, los elementos aparecen en varias columnas. El modo SmallIcon es igual, pero muestra iconos pequeos. El modo List muestra iconos pequeos, pero siempre en una sola columna. El modo Details muestra los elementos en varias columnas. El modo de vista est determinado por la propiedad View. Todos los modos de vista pueden mostrar imgenes procedentes de listas de imgenes. La propiedad clave del control ListView es Items, que contiene los elementos que muestra el control. La propiedad SelectedItems contiene la coleccin de elementos seleccionados actualmente en el control. Si la propiedad MultiSelect se establece en true, el PGINA 34

4.7.9 ProgressBar
El control ProgressBar de formularios Windows Forms indica el progreso de un proceso, mediante la presentacin de un nmero adecuado de rectngulos dispuestos en una barra horizontal. Cuando se completa el proceso, la barra se llena. Las barras de progreso suelen utilizarse para dar al usuario una idea de cunto deber esperar hasta que se complete un proceso largo como, por ejemplo, la carga de un archivo grande. Las propiedades ms importantes del control ProgressBar son Value, Minimum y Maximum. Las propiedades Minimum y Maximum establecen los valores mximo y mnimo que puede mostrar la barra de progreso. La propiedad Value representa el

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN usuario puede seleccionar varios elementos, por ejemplo, para arrastrar y colocar en otro control varios elementos a la vez. Si la propiedad CheckBoxes se establece en true, el control ListView puede mostrar casillas de verificacin junto a los elementos. La propiedad Activation determina el tipo de accin que debe realizar el usuario para activar los elementos de la lista: las opciones son Standard, OneClick y TwoClick. La activacin OneClick necesita un solo clic para activar el elemento. La activacin TwoClick requiere que el usuario haga doble clic para activar el elemento; un solo clic cambia el color del texto del elemento. La activacin Standard requiere que el usuario haga doble clic para activar un elemento, pero la apariencia del elemento no cambia. Un control ListView permite mostrar una lista de elementos con texto y, de forma opcional, con un icono que identifique el tipo de elemento. Por ejemplo, la lista de archivos del Explorador de Windows es similar en apariencia a un control ListView. Muestra una lista de los archivos y carpetas seleccionados actualmente en el rbol. Cada archivo y cada carpeta muestra un icono asociado para ayudar a identificar el tipo de archivo o carpeta. La clase ListViewItem representa un elemento dentro de un control ListView. Los elementos que se muestran en la lista se pueden presentar en una de cuatro vistas distintas. Se pueden mostrar como iconos grandes, como iconos pequeos o como iconos pequeos en una lista vertical. Los elementos tambin pueden tener subelementos que contengan informacin relacionada con el elemento primario. El cuarto estilo de vista (vista de detalles) permite mostrar el elemento y sus subelementos en una cuadrcula con encabezados de columna que identifican la informacin mostrada de cada subelemento. ListView admite la seleccin nica o mltiple. La funcin de seleccin mltiple permite a los usuarios hacer su seleccin en una lista de elementos de forma similar a un control ListBox. Adems, el usuario puede activar elementos seleccionados para realizar una tarea. Por ejemplo, se puede utilizar un control ListView para mostrar una lista de archivos que la aplicacin puede abrir y utilizar. El usuario puede seleccionar los archivos que desea abrir y, a continuacin, hacer doble clic en ellos para activar los elementos y abrir los archivos en la aplicacin. El ListView tambin puede mostrar casillas de verificacin, mediante la propiedad CheckBoxes, para permitir al usuario activar los elementos sobre los que desea realizar una accin. El control ListView se puede utilizar de diversas formas. Por ejemplo, para mostrar informacin de una aplicacin, una base de datos o un archivo de texto. El ListView tambin se puede utilizar para obtener informacin suministrada por el usuario, como la seleccin de un conjunto de archivos para su procesamiento. ListView ofrece un gran nmero de propiedades que proporcionan flexibilidad a la apariencia y al comportamiento. La propiedad View permite cambiar la forma en la que se muestran los elementos. Las propiedades LargeImageList, SmallImageList y StateImageList permiten especificar los objetos ImageList que contienen las imgenes que se muestran para los elementos y, en el caso del StateImageList, las casillas de verificacin que se muestran cuando la propiedad CheckBoxes est establecida en true. Para determinar los elementos activados, puede utilizar la propiedad CheckedItems para obtener acceso a la coleccin ListView.CheckedListViewItemCollection. La propiedad Columns permite obtener acceso al ListView.ColumnHeaderCollection, el cual almacena los encabezados de columna que se muestran cuando la propiedad View del control est establecida en View.Details. Los elementos se agregan y se quitan del ListView mediante la propiedad Items. La propiedad Items permite obtener acceso al ListView.ListViewItemCollection del control, el cual proporciona mtodos para manipular los elementos del control. Si desea permitir al usuario editar el texto de un elemento, puede utilizar la propiedad LabelEdit. Cuando el control contiene un gran nmero de elementos, a veces es ms sencillo para el usuario verlos de forma ordenada. Se puede utilizar la propiedad Sorting para ordenar los elementos alfabticamente. Muchas de las propiedades del control ListView se utilizan cuando la propiedad View est establecida en View.Details. La propiedad AllowColumnReorder permite al usuario del control ListView volver a configurar el orden de las columnas en tiempo de ejecucin. La propiedad FullRowSelect permite seleccionar un elemento y sus subelementos en lugar de slo el elemento. Para mostrar lneas de cuadrcula en la vista de detalles que identifiquen los lmites de los elementos y subelementos en el ListView, se puede utilizar la propiedad GridLines. La propiedad HeaderStyle permite especificar el tipo de encabezado de columna que se va a mostrar. Adems de las distintas propiedades disponibles para un control ListView, existen mtodos y eventos que la aplicacin puede utilizar para proporcionar funciones adicionales al ListView. Los mtodos BeginUpdate y EndUpdate permiten agregar varios elementos a un ListView sin tener que volver a dibujar el control cada vez que se agrega un elemento, lo que mejora el rendimiento. Si el control ListView muestra PGINA 35

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN elementos y subelementos, es posible que desee proporcionar alguna funcionalidad cuando el usuario haga clic con el botn secundario del mouse (ratn) en un subelemento. Para determinar el elemento en cuyo subelemento se est haciendo clic, se puede utilizar el mtodo GetItemAt. Al realizar la validacin de los elementos despus de que el usuario los haya editado, es posible que desee mostrar un elemento especfico al usuario para que lo cambie. Se puede llamar al mtodo EnsureVisible para garantizar que el elemento especfico se encuentre en el rea visible del control. Si la propiedad LabelEdit est establecida en true, se pueden realizar tareas como la validacin del texto editado antes y despus de cambiarlo mediante la creacin de un controlador de eventos para los eventos BeforeLabelEdit y AfterLabelEdit. Para realizar tareas como la apertura de un archivo o la presentacin de un cuadro de dilogo para editar un elemento mostrado en un ListView, puede crear un controlador de eventos para el evento ItemActivate. Si permite al usuario ordenar los elementos de un ListView al hacer clic en un encabezado de columna, puede crear un controlador de eventos para el evento ColumnClick que realice la ordenacin. Cuando la propiedad CheckBoxes est establecida en true, puede determinar cundo se ha producido un cambio en el estado de activacin de un elemento mediante el control del evento ItemCheck. la imagen predeterminada para los nodos de la vista de rbol. La coleccin Nodes contiene todos los objetos TreeNode asignados al control TreeView. A los nodos de rbol de esta coleccin se les conoce como los nodos de rbol raz. Cualquier nodo de rbol que se agregue posteriormente a un nodo de rbol raz se conoce como nodo secundario. Como cada TreeNode puede contener una coleccin de otros objetos TreeNode, puede ser difcil determinar la ubicacin en la estructura de rbol cuando se recorre la coleccin en iteracin. Se puede analizar la cadena TreeNode.FullPath usando el valor de la cadena PathSeparator para determinar dnde empieza y termina una etiqueta TreeNode. Al lado de los nodos de rbol se pueden mostrar imgenes asignando un objeto ImageList a la propiedad ImageList y haciendo referencia al valor de ndice de una Image de la ImageList para asignar Image. Establezca la propiedad ImageIndex en el valor de ndice de la Image que desea que se muestre cuando no est seleccionado un nodo de rbol. De igual manera, establezca la propiedad SelectedImageIndex en el valor de ndice de la Image que desea que se muestre cuando est seleccionado un nodo de rbol. Las imgenes a las que hacen referencia los valores de las propiedades ImageIndex y SelectedImageIndex son las imgenes predeterminadas que muestran todos los nodos de rbol asignados a la coleccin Nodes. Cada nodo de rbol puede reemplazar las imgenes predeterminadas estableciendo las propiedades TreeNode.ImageIndex y TreeNode.SelectedImageIndex. Los nodos de rbol se pueden expandir para mostrar el siguiente nivel de nodos de rbol secundarios. El usuario puede expandir el TreeNode haciendo clic en el botn con el signo ms (+), si se muestra al lado del TreeNode, o se puede expandir el TreeNode llamando al mtodo TreeNode.Expand. Para expandir todos los niveles de nodos de rbol secundarios de la coleccin Nodes, llame al mtodo ExpandAll. El nivel secundario del TreeNode se puede contraer llamando al mtodo TreeNode.Collapse, o el usuario puede presionar el botn con el signo menos (-) si se muestra al lado del TreeNode. Tambin se puede llamar al mtodo TreeNode.Toggle para alternar los estados de rbol expandido y contrado. Si se desea, los nodos de rbol pueden mostrar casillas de verificacin. Para mostrar casillas de verificacin, establezca la propiedad CheckBoxes de la TreeView en true. La propiedad Checked se establece en true para nodos de rbol en estado activado. Nota Si la propiedad TreeNode.Checked se establece desde el evento BeforeCheck o AfterCheck, el evento PGINA 36

4.7.11 TreeView
El control TreeView de formularios Windows Forms muestra una jerarqua de nodos similar al modo en que se muestran los archivos y las carpetas en el panel izquierdo del Explorador de Windows. Cada nodo puede contener otros nodos, que se denominan nodos secundarios. Los nodos primarios, nodos que contienen nodos secundarios, pueden mostrarse expandidos o contrados. Si la propiedad CheckBoxes se establece en true, las vistas de rbol pueden mostrar casillas de verificacin junto a los nodos. Entonces, es posible activar o desactivar nodos mediante programacin estableciendo la propiedad Checked del nodo en true o false. Las propiedades clave del control TreeView son Nodes y SelectedNode. La propiedad Nodes contiene la lista de los nodos de nivel superior en la vista de rbol. La propiedad SelectedNode establece el nodo actualmente seleccionado. Es posible mostrar iconos junto a los nodos; las imgenes se toman del control ImageList establecido en la propiedad ImageList de la vista de rbol. La propiedad ImageIndex establece

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN se provoca varias veces y puede producirse un comportamiento imprevisto. Por ejemplo, la propiedad Checked puede establecerse en el controlador de eventos cuando los nodos secundarios se estn actualizando de forma recursiva, de forma que el usuario no tenga que expandir y comprobar cada uno de los nodos uno por uno. Para evitar que el evento se provoque varias veces, hay que agregar lgica al controlador de eventos para que slo ejecute el cdigo recursivo si la propiedad Action de TreeViewEventArgs no est establecida en TreeViewAction.Unknown. La apariencia del control TreeView se puede cambiar estableciendo algunas de sus propiedades de presentacin y estilo. Si se establece ShowPlusMinus en true, se muestra un botn con el signo ms (+) o con el signo menos (-) al lado de cada objeto TreeNode que se puede expandir o contraer, segn corresponda. Si se establece la propiedad ShowRootLines en true, la TreeView muestra lneas que unen entre s todos los nodos de rbol raz. Se pueden mostrar lneas que unan los nodos de rbol secundarios con su correspondiente nodo raz estableciendo la propiedad ShowLines en true. Si se establece la propiedad HotTracking en true, cambia la apariencia de las etiquetas de nodo de rbol cuando el puntero del mouse pasa sobre ellas. Cuando se hace un seguimiento completo de las etiquetas de los nodos de rbol, dichas etiquetas tienen el aspecto de un hipervnculo. Nota Si se establecen las propiedades CheckBoxes, Scrollable, ImageIndex y SelectedImageIndex en tiempo de ejecucin, se vuelve a crear el identificador TreeView para que se actualice la apariencia del control. Esto hace que se contraigan todos los nodos de rbol, con excepcin del TreeNode seleccionado. Cuando la propiedad ShowCheckBox se establece en true, junto a la fecha seleccionada en el control se muestra una casilla de verificacin. Si la casilla de verificacin est activada, el valor de fecha y hora seleccionado se puede actualizar. Cuando la casilla de verificacin est sin marcar, el valor no est disponible. Las propiedades MaxDate y MinDate del control determinan el intervalo de fechas y horas. La propiedad Value contiene la fecha y hora actualmente establecidas en el control. Los valores pueden mostrarse en cuatro formatos, establecidos por la propiedad Format: Long, Short, Time o Custom. Si se selecciona un formato personalizado, deber establecer la cadena adecuada en la propiedad CustomFormat. El control DateTimePicker se utiliza para permitir al usuario seleccionar una fecha y una hora, y para mostrar esa fecha y esa hora en el formato especificado. Es posible limitar las fechas y las horas que se pueden seleccionar al establecer las propiedades MinDate y MaxDate. Para cambiar la presentacin de la parte del control que corresponde al calendario, establezca las propiedades CalendarForeColor, CalendarFont, CalendarTitleBackColor, CalendarTitleForeColor, CalendarTrailingForeColor y CalendarMonthBackground. La propiedad Format establece la clase DateTimePickerFormat del control. La propiedad Format predeterminada de la fecha es DateTimePickerFormat.Long. Si la propiedad Format se establece en DateTimePickerFormat.Custom, se puede crear un estilo de formato propio mediante el establecimiento de la propiedad CustomFormat y la construccin de una cadena de formato personalizado. La cadena de formato personalizado puede ser una combinacin de caracteres de campos personalizados y de otros caracteres literales. Por ejemplo, se puede presentar la fecha como "June 01, 2001 - Friday" al establecer la propiedad CustomFormat en "MMMM dd, yyyy - dddd". Si desea utilizar un control de estilo de flechas para ajustar el valor de fecha y hora, establezca la propiedad ShowUpDown en true. El control de calendario no se desplegar cuando se seleccione el control. Para ajustar la fecha y la hora, se puede seleccionar cada elemento por separado y utilizar los botones Arriba y Abajo para cambiar el valor. Si se necesita aplicar un formato de fecha personalizado y limitar la seleccin a una sola fecha, se puede utilizar un control DateTimePicker en lugar de MonthCalendar. Al utilizar DateTimePicker, se

4.7.12 DateTimePicker
El control DateTimePicker de formularios Windows Forms permite al usuario seleccionar un solo elemento de una lista de fechas y horas. Cuando se usa para representar una fecha, aparece en dos partes: una lista desplegable con una fecha representada como texto y una cuadrcula, que aparece al hacer clic en la flecha hacia abajo que se encuentra junto a la lista. La cuadrcula es similar al control MonthCalendar, que puede utilizarse para seleccionar mltiples fechas. Una alternativa a la cuadrcula, til para la edicin de horas en lugar de fechas, son los botones arriba y abajo que aparecen cuando la propiedad ShowUpDown se establece en true.

VISUAL BASIC.NET CON SQL SERVER

PGINA 37

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN limitar la necesidad de validar muchos datos de valores de fecha y hora. Nota El control DateTimePicker slo admite calendarios gregorianos. Si se necesita aplicar un formato de fecha personalizado y limitar la seleccin a una sola fecha, se puede utilizar un control DateTimePicker en lugar de un MonthCalendar. El uso del DateTimePicker elimina en gran medida la necesidad de validar los valores de fecha y hora.

4.7.13 MonthCalendar 4.7.14 DomainUpDown


El control MonthCalendar de formularios Windows Forms muestra una intuitiva interfaz grfica de usuario para que los usuarios vean y establezcan informacin relativa a fechas. El control muestra un calendario: una cuadrcula que contiene los das numerados del mes, organizados en columnas bajo los das de la semana, con el intervalo de fechas seleccionadas resaltado. Para seleccionar un mes diferente, puede hacer clic en los botones de flecha a los lados del ttulo del mes. A diferencia del control DateTimePicker, de apariencia similar, con este control es posible seleccionar ms de una fecha. La apariencia del control MonthCalendar es altamente configurable. De forma predeterminada, la fecha de hoy se muestra con un crculo y se indica tambin en la parte inferior de la cuadrcula. Para cambiar esta funcin, puede establecer las propiedades ShowToday y ShowTodayCircle en false. Tambin puede agregar nmeros de semana al calendario; para ello, establezca la propiedad ShowWeekNumbers en true. Si establece la propiedad CalendarDimensions, podr mostrar varios meses en horizontal y en vertical. De forma predeterminada, se muestra el domingo como primer da de la semana; sin embargo, es posible designar cualquier da mediante la propiedad FirstDayOfWeek. Tambin puede establecer que ciertas fechas se muestren en negrita una sola vez, anualmente o mensualmente; para ello, agregue objetos DateTime a las propiedades BoldedDates, AnnuallyBoldedDates y MonthlyBoldedDates. La propiedad ms importante del control MonthCalendar es SelectionRange, es decir, el intervalo de fechas seleccionadas en el control. El valor de SelectionRange no puede superar al nmero mximo de das que se puede seleccionar, establecido en la propiedad MaxSelectionCount. Las primeras y ltimas fechas que puede seleccionar el usuario las determinan las propiedades MaxDate y MinDate. La apariencia de la parte del control correspondiente al calendario se puede cambiar mediante las propiedades ForeColor, Font, TitleBackColor, TitleForeColor, TrailingForeColor y BackColor. El control DomainUpDown de formularios Windows Forms se asemeja a una combinacin de un cuadro de texto y un par de botones para moverse hacia arriba o hacia abajo por una lista. El control muestra y establece una cadena de texto a partir de una lista de opciones. Para seleccionar la cadena, el usuario puede hacer clic en los botones hacia arriba y hacia abajo para desplazarse por una lista, puede presionar las teclas de FLECHA ARRIBA y FLECHA ABAJO o escribir una cadena que coincida con un elemento de la lista. Un posible uso para este control es la seleccin de elementos de una lista de nombres ordenados alfabticamente. (Para ordenar la lista, establezca la propiedad Sorted en true.) La funcin de este control es muy similar a la del cuadro de lista o el cuadro combinado, pero ocupa muy poco espacio. Las propiedades ms importantes del control son Items, ReadOnly y Wrap. La propiedad Items contiene la lista de objetos cuyos valores de texto se muestran en el control. El usuario tambin puede escribir texto en el control, sin embargo, si ReadOnly se establece en true, la cadena escrita debe coincidir con uno de los elementos de la coleccin para que pueda aceptarse. Si Wrap se establece en true, al desplazarse ms all del ltimo elemento ir al primer elemento de la lista y viceversa. Los mtodos ms importantes del control son UpButton y DownButton. Este control slo muestra cadenas de texto. Si desea un control que muestre valores numricos, utilice el control NumericUpDown. Un control DomainUpDown muestra un nico valor de cadena seleccionado de una coleccin Object haciendo clic en los botones Arriba o Abajo del control. Al seleccionar un elemento, el objeto se convierte a un valor de cadena para que pueda mostrarse en el control de flechas. Para crear una coleccin de objetos que se mostrarn en el control DomainUpDown, se pueden agregar o quitar los elementos por separado mediante los mtodos Add y Remove. Se puede llamar a dichos

VISUAL BASIC.NET CON SQL SERVER

PGINA 38

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN mtodos en un controlador de eventos, como el correspondiente al evento Click de un botn. Cuando se llama a los mtodos UpButton o DownButton, bien en el cdigo o mediante el clic de los botones Arriba o Abajo, se llama a UpdateEditText para actualizar la nueva cadena. Si se establece UserEdit en true, se compara la cadena con uno de los valores de la coleccin antes de actualizar el texto mostrado en el control. propiedad ThousandsSeparator en true. Para especificar el nmero de dgitos que deben aparecer detrs del smbolo decimal, hay que establecer la propiedad DecimalPlaces en el nmero de posiciones decimales que se desee mostrar. Para especificar el intervalo de valores permitidos en el control, hay que establecer las propiedades Minimum y Maximum. Se establece el valor de Increment con el fin de especificar el valor que se debe aumentar o disminuir para la propiedad Value cuando el usuario hace clic en los botones de flecha Arriba o Abajo. Cuando se llama a los mtodos UpButton o DownButton, ya sea en el cdigo o al hacer clic en los botones Arriba o Abajo, el nuevo valor queda validado y el control se actualiza con el nuevo valor en el formato correspondiente. En concreto, si UserEdit est establecido en true, se llama a ParseEditText antes de validar o actualizar el valor. Despus, se comprueba si el valor se encuentra entre los valores Minimum y Maximum, y se llama al mtodo UpdateEditText.

4.7.15 NumericUpDown
El control NumericUpDown de formularios Windows Forms es similar a una combinacin de un cuadro de texto y un par de flechas en las que el usuario puede hacer clic para ajustar un valor. El control muestra y establece un valor numrico nico a partir de una lista de opciones. Para incrementar y reducir el nmero, el usuario puede hacer clic en los botones hacia arriba y hacia abajo, presionar las teclas FLECHA ARRIBA y FLECHA ABAJO, o escribir un nmero. Al presionar la tecla FLECHA ARRIBA, se mueve hacia arriba hacia el valor mximo; al presionar la tecla FLECHA ABAJO, el valor se mueve hacia el mnimo. Un ejemplo donde puede ser til este tipo de control es el control de volumen de un reproductor de msica. Los controles numricos de flechas se utilizan en muchas aplicaciones del Panel de control de Windows. Los nmeros que se muestran pueden tener diversos formatos, entre ellos el hexadecimal. Las propiedades ms importantes del control son Value, Maximum (valor predeterminado 100), Minimum (valor predeterminado 0) e Increment (valor predeterminado 1). La propiedad Value establece el nmero seleccionado actualmente en el control. La propiedad Increment establece la cantidad en la que se ajusta el valor cuando el usuario hace clic en un botn arriba o abajo. Cuando el foco se desplaza fuera del control, la entrada escrita se valida frente a los valores mximo y mnimo. Los mtodos ms importantes del control son UpButton y DownButton. El usuario tambin puede escribir un valor, a menos que la propiedad ReadOnly se haya establecido en true. Para aplicar formato a la representacin numrica, se puede establecer la propiedad DecimalPlaces, Hexadecimal o ThousandsSeparator. Para mostrar valores hexadecimales en el control, hay que establecer la propiedad Hexadecimal en true. Para mostrar un separador de miles en los nmeros decimales cuando corresponda, hay que establecer la

4.7.16 RichTextBox
El control RichTextBox de formularios Windows Forms se utiliza para mostrar, escribir y manipular texto con formato. El control RichTextBox hace todo lo que realiza el control TextBox, pero adems puede efectuar las siguientes operaciones: mostrar fuentes, colores y vnculos; cargar texto e imgenes incrustadas desde un archivo; y buscar caracteres especificados. El control RichTextBox suele utilizarse para manipular texto y proporcionar funciones de presentacin similares a las de aplicaciones de procesador de textos tales como Microsoft Word. Al igual que el control TextBox, el control RichTextBox puede mostrar barras de desplazamiento; sin embargo, a diferencia del control TextBox, su configuracin predeterminada es mostrar tanto barras de desplazamiento horizontales como verticales segn se precise, y posee configuraciones adicionales para las barras de desplazamiento. Como sucede con el control TextBox, el texto que se muestra se establece con la propiedad Text. El control RichTextBox tiene numerosas propiedades para dar formato al texto. Para manipular archivos, los mtodos LoadFile y SaveFile pueden mostrar y escribir varios formatos de archivo, entre ellos texto sin formato, texto sin formato Unicode y formato de texto enriquecido (RTF). Los posibles formatos de archivo

VISUAL BASIC.NET CON SQL SERVER

PGINA 39

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN se enumeran en RichTextBoxStreamType (Enumeracin). Puede utilizar el mtodo Find para buscar cadenas de texto o caracteres especficos. Tambin puede utilizar un control RichTextBox para vnculos de estilo Web; para ello, establezca la propiedad DetectUrls en true y escriba cdigo para controlar el evento LinkClicked. Para evitar que el usuario manipule una parte o la totalidad del texto del control, puede establecer la propiedad SelectionProtected en true. Para deshacer y rehacer la mayora de las operaciones de edicin de un control RichTextBox, llame a los mtodos Undo y Redo. El mtodo CanRedo permite determinar si la ltima operacin deshecha por el usuario puede aplicarse de nuevo al control. El control RichTextBox permite al usuario escribir y modificar texto, al tiempo que proporciona caractersticas de formato ms avanzadas que el control TextBox estndar. El texto se puede asignar directamente al control o se puede cargar desde un archivo de formato de texto enriquecido (RTF) o de texto sin formato. Al texto del control se le puede asignar formato de carcter y prrafo. El control RichTextBox ofrece varias propiedades que se pueden emplear para aplicar formato a cualquier parte del texto del control. Para cambiar el formato del texto, primero se debe seleccionar. Slo se le puede asignar formato de carcter y prrafo al texto seleccionado. Una vez configurado el formato de una seccin de texto seleccionada, todo el texto que se escriba a continuacin tendr el mismo formato, hasta que se realice un cambio de configuracin o se seleccione una seccin diferente del documento del control. La propiedad SelectionFont permite cambiar el texto a negrita o a cursiva. Esta propiedad tambin se puede utilizar para cambiar el tamao y el tipo de letra del texto. La propiedad SelectionColor permite cambiar el color del texto. Para crear listas con vietas se puede utilizar la propiedad SelectionBullet. Para ajustar el formato de prrafo, tambin es posible establecer las propiedades SelectionIndent, SelectionRightIndent y SelectionHangingIndent. El control RichTextBox tiene mtodos que proporcionan funciones para abrir y guardar archivos. El mtodo LoadFile permite cargar un archivo de texto RTF o ASCII existente en el control. Tambin es posible cargar datos desde una secuencia de datos ya abierta. El mtodo SaveFile permite guardar un archivo en formato RTF o ASCII. De manera similar al mtodo LoadFile, se puede utilizar el mtodo SaveFile para guardar en una secuencia de datos abierta. El control RichTextBox tambin proporciona funciones para buscar cadenas de texto. El mtodo Find se sobrecarga para buscar cadenas de texto y caracteres especficos en el texto del control. Tambin se puede inicializar el control a datos de RichTextBox almacenados en la memoria. Por ejemplo, se puede inicializar la propiedad Rtf a una cadena que contiene el texto que se va a mostrar, incluyendo los cdigos RTF que determinan cmo se debe dar formato al texto. Si el texto del control contiene vnculos, por ejemplo, a sitios Web, se puede utilizar la propiedad DetectUrls para que los vnculos se muestren correctamente en el texto del control. A continuacin, se puede controlar el evento LinkClicked para realizar las tareas asociadas a los vnculos. La propiedad SelectionProtected permite proteger el texto del control de manera que el usuario no lo pueda manipular. Al proteger el texto del control, se puede controlar el evento Protected para determinar en qu momento el usuario ha intentado modificar el texto protegido y advertirle de que est protegido o indicarle una forma estndar para manipularlo. Las aplicaciones que ya utilizan controles TextBox se pueden adaptar fcilmente para que utilicen controles RichTextBox. No obstante, el control RichTextBox no tiene el mismo lmite de capacidad de caracteres de 64 K que el control TextBox. Normalmente, se utiliza RichTextBox para proporcionar funciones de manipulacin y presentacin de texto similares a las de aplicaciones de procesamiento de texto como Microsoft Word.

4.7.17 ImageList
El componente ImageList de formularios Windows Forms se utiliza para almacenar imgenes que, a partir de ese momento, podrn mostrar otros. Una lista de imgenes permite escribir cdigo para un catlogo de imgenes nico y consistente. Por ejemplo, para girar las imgenes que muestra un control Button, simplemente cambie la propiedad ImageIndex del botn. Tambin puede asociar la misma lista de imgenes con varios controles. Por ejemplo, si utiliza un control ListView y un control TreeView para mostrar la misma lista de archivos, al cambiar el icono de un archivo en la lista de imgenes, el nuevo icono aparecer en ambas vistas. Puede utilizar una lista de imgenes con cualquier control que tenga una propiedad ImageList o, en el caso del control ListView, las propiedades SmallImageList y LargeImageList. Entre los controles que pueden asociarse con una lista de PGINA 40

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN imgenes se incluyen los siguientes: ListView, TreeView, ToolBar, TabControl, Button, CheckBox, RadioButton y Label. Para asociar la lista de imgenes con un control, establezca la propiedad ImageList del control como el nombre del componente ImageList. La propiedad clave del componente ImageList es Images, que contiene las imgenes que utilizar el control asociado. Puede tener acceso a cada una de las imgenes mediante su valor de ndice. La propiedad ColorDepth determina el nmero de colores con los que se pueden representar las imgenes. Todas las imgenes se muestran con el mismo tamao, establecido por la propiedad ImageSize. Las imgenes de mayor tamao se ajustan a este tamao. Normalmente, la clase ImageList la utilizan otros controles, como ListView, TreeView o ToolBar. Se pueden agregar mapas de bits, iconos o metarchivos a ImageList y los dems controles podrn utilizar las imgenes que necesiten. ImageList utiliza un identificador para administrar la lista de imgenes. Handle no se crea hasta que se realizan determinadas operaciones en la lista de imgenes, como por ejemplo, obtener las propiedades Count o Handle, y llamar al mtodo Draw. con el componente HelpProvider por medio de la propiedad HelpNamespace. Para especificar el tipo de Ayuda que se proporciona, llame a SetHelpNavigator y proporcione al control especificado un valor de la enumeracin HelpNavigator. Para proporcionar la palabra clave o el tema de Ayuda, llame al mtodo SetHelpKeyword. Opcionalmente, puede utilizar el mtodo SetHelpString para asociar una cadena de Ayuda especfica a otro control. Cuando el usuario presione la tecla F1 mientras el control tiene el foco, la cadena asociada por medio de este mtodo se mostrar en una ventana emergente. Si no estableci HelpNamespace, deber utilizar SetHelpString para proporcionar el texto de Ayuda. Si estableci tanto HelpNamespace como la cadena de Ayuda, tendr precedencia la Ayuda basada en HelpNamespace. Cuando se agrega a un formulario, el componente HelpProvider aparece en la bandeja de components en la parte inferior del Diseador de Windows Forms. HelpProvider llama a los mtodos de Help para proporcionar la funcionalidad de Ayuda.

4.7.19 ToolTip 4.7.18 HelpProvider


El componente HelpProvider de los formularios Windows Forms se utiliza para asociar un archivo de Ayuda HTML Help 1.x (ya sea un archivo .chm, producido con HTML Help Workshop o un archivo .htm) a una aplicacin para Windows. Puede proporcionar ayuda de varias maneras: Proporcionar ayuda contextual para controles de formularios Windows Forms. Proporcionar ayuda contextual sobre un cuadro de dilogo en particular o sobre controles especficos de un cuadro de dilogo. Abrir un archivo de Ayuda en reas especficas, como la pgina principal de una Tabla de contenido, el ndice o una funcin de bsqueda. Agregar un componente HelpProvider al formulario Windows Forms permite al resto de los controles del formulario exponer las propiedades Help del componente HelpProvider, Esto posibilita proporcionar ayuda sobre los controles del formulario Windows Forms. Puede asociar un archivo de Ayuda El componente ToolTip de formularios Windows Forms muestra texto cuando el usuario apunta con el cursor sobre algn control. Un componente ToolTip puede asociarse a cualquier control. Por ejemplo, este componente se puede utilizar para ahorrar espacio en un formulario, puede mostrar un pequeo icono en un botn y utilizar un control ToolTip para explicar la funcin del botn. Un componente ToolTip proporciona una propiedad ToolTip a mltiples controles de un formulario Windows Forms u otro contenedor. Normalmente, la clase ToolTip se utiliza para notificar a los usuarios el uso al que est destinado un control. Por ejemplo, si coloca un componente ToolTip en un formulario, puede mostrar "Escriba aqu su nombre" e indicar el formato para un control TextBox y "Haga clic aqu para guardar los cambios" para un control Button. Los mtodos principales del componente ToolTip son SetToolTip y GetToolTip. Puede utilizar el mtodo SetToolTip para establecer las informaciones sobre herramientas que se muestran para los controles. Las propiedades ms importantes son Active, que debe establecerse en true para que aparezca la informacin sobre herramientas, y AutomaticDelay, que establece el periodo de tiempo durante el que se muestra la PGINA 41

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN informacin, cunto tiempo debe apuntar el usuario al control para que aparezca la informacin y cunto tarda en aparecer la ventana de informacin siguiente. Adems de para proporcionar ayuda, la clase ToolTip se puede utilizar para proporcionar informacin de estado en tiempo de ejecucin. Por ejemplo, se podra utilizar la clase ToolTip para mostrar datos sobre la velocidad de conexin y la calidad de la lnea cuando el usuario desplace el cursor del mouse sobre un control PictureBox que muestra el estado de la conexin a Internet. La clase ToolTip dispone de propiedades que permiten modificar la velocidad y la duracin de la presentacin de la ventana de informacin sobre herramientas. AutoPopDelay determina durante cunto tiempo se muestra la ventana de informacin sobre herramientas; las propiedades InitialDelay y ReshowDelay determinan el retraso antes de que se muestre una ventana de informacin sobre herramientas. Para establecer todas estas propiedades de manera coherente, utilice la propiedad AutomaticDelay. Este valor se utiliza para calcular y establecer los valores de las dems propiedades de retraso. Para que se muestre el texto de informacin sobre herramientas de un control, independientemente de si Form o el contenedor donde se encuentra el control estn habilitados, utilice la propiedad ShowAlways. Si desea que no se muestre ningn texto de informacin sobre herramientas en la aplicacin, utilice la propiedad Active. La clase ToolTip se puede utilizar en cualquier contenedor. Para especificar el contenedor especfico donde se utilizar la clase ToolTip, utilice el constructor ToolTip. Para que el texto de informacin sobre herramientas se muestre siempre que el usuario mueva el cursor del mouse sobre un control, el texto de informacin sobre herramientas se debe asociar al control en una instancia de la clase ToolTip. Para asociar un texto de informacin sobre herramientas a un control, utilice el mtodo SetToolTip. Para cambiar el texto al que est asociado el control, el mtodo SetToolTip se puede llamar ms de una vez para el mismo control. Si desea obtener el texto al que est asociado un control, utilice el mtodo GetToolTip. Para quitar todos los textos de informacin sobre herramientas asociados a una instancia de la clase ToolTip, utilice el mtodo RemoveAll. Nota La informacin sobre herramientas no se muestra para los controles que estn deshabilitados.

4.7.20 StatusBar
El control StatusBar de formularios Windows Forms se utiliza en los formularios como un rea, que habitualmente se muestra en la parte inferior de una ventana, en la que una aplicacin puede mostrar informacin de estado de diferentes tipos. Los controles StatusBar pueden tener paneles de barra de estado que muestren texto o iconos con informacin de estado o una serie de iconos animados que indiquen el funcionamiento de un proceso (como por ejemplo Microsoft Word cuando indica que se est guardando un documento). Internet Explorer utiliza una barra de estado que indica la direccin URL de una pgina cuando el mouse (ratn) pasa sobre el hipervnculo; Microsoft Word ofrece informacin sobre la ubicacin de pgina, la ubicacin de seccin y los modos de edicin, tales como sobrescribir y revisar cambios; por ltimo, Visual Studio utiliza la barra de estado para ofrecer informacin contextual como, por ejemplo, indicaciones de cmo manipular las ventanas acoplables, ya sea acopladas o flotantes. Para mostrar un nico mensaje en la barra de estado, establezca la propiedad ShowPanels en false (el valor predeterminado) y la propiedad Text de la barra de estado en el texto que desee que aparezca en la barra de estado. Puede dividir la barra de estado en paneles para mostrar informacin de varios tipos; para ello, establezca la propiedad ShowPanels en true y utilice el mtodo Add de la clase StatusBarPanelCollection, al que se puede tener acceso a travs de la propiedad Panels del control. Usando los mtodos de la propiedad Panels se pueden quitar paneles del control u obtener acceso a un panel en espcfico. Normalmente, un control StatusBar est formado por objetos StatusBarPanel, cada uno de los cuales muestra texto o un icono. Tambin puede proporcionar paneles personalizados dibujados por el usuario como una barra de progreso o una serie de imgenes que muestren el estado de la aplicacin. Normalmente, un control StatusBar muestra informacin acerca del objeto que se est mostrando en un control Form, los componentes del objeto o informacin contextual relativa a la operacin de ese objeto en la aplicacin. El control StatusBar dispone de propiedades que permiten personalizar el aspecto del control. Si StatusBar se muestra en un formulario cuyo tamao se puede cambiar, utilice la propiedad SizingGrip para mostrar un control de tamao en la esquina inferior

VISUAL BASIC.NET CON SQL SERVER

PGINA 42

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN derecha del formulario para indicar a los usuarios que el tamao del formulario se puede cambiar. Si desea determinar cundo se hace clic a un objeto StatusBarPanel en un control StatusBar, puede crear un controlador para el evento PanelClick. Para realizar operaciones de dibujo personalizadas en un panel, puede crear un controlador para el evento DrawItem. Los datos del evento que se envan al controlador de eventos proporciona informacin sobre el panel que se va a dibujar y el objeto Graphics que se utilizar para realizar las tareas de dibujo. Cuando se crea una instancia de StatusBar, se establecen las propiedades de lectura y escritura en sus valores iniciales. con la presentacin de errores dentro de un conjunto de datos. Un proveedor de errores es una alternativa mejor que mostrar un mensaje de error en un cuadro de mensaje, porque una vez que se descarta un cuadro de mensaje, el mensaje de error deja de estar visible. El componente ErrorProvider muestra un icono de error ( ) junto al control correspondiente, por ejemplo, un cuadro de texto; cuando el usuario coloca el puntero del mouse (ratn) sobre el icono de error aparece una informacin sobre herramientas que muestra la cadena del mensaje de error. Las propiedades ms importantes del componente ErrorProvider son DataSource, ContainerControl e Icon. La propiedad ContainerControl debe establecerse en el contenedor adecuado (habitualmente el formulario Windows Forms), para que el componente ErrorProvider muestre un icono de error en el formulario. Cuando se agrega el componente en el diseador, la propiedad ContainerControl se establece en el formulario contenedor; si agrega el control mediante cdigo, deber establecerlo usted mismo. La propiedad Icon puede establecerse en un icono de error personalizado, en lugar del predeterminado. Cuando se establece la propiedad DataSource, el componente ErrorProvider puede mostrar mensajes de error para un conjunto de datos. El mtodo clave del componente ErrorProvider es SetError, que especifica la cadena del mensaje de error y dnde debe aparecer el icono de error. ErrorProvider presenta un mecanismo simple para indicar al usuario final que un control de un formulario tiene un error asociado. Si se especifica una cadena de descripcin de error para el control, se muestra un icono junto a ste. El icono parpadea de la manera que especifica BlinkStyle, con la frecuencia que especifica BlinkRate. Cuando el mouse (ratn) pase por encima del icono, se mostrar la informacin sobre herramientas con una cadena de descripcin del error. Normalmente, ErrorProvider se utiliza con controles enlazados a datos. Si utiliza ErrorProvider con controles enlazados a datos, debe especificar la propiedad ContainerControl en el constructor o estableciendo la propiedad ContainerControl.

4.7.21 NotifyIcon
El componente NotifyIcon de formularios Windows Forms se usa normalmente para mostrar iconos en los procesos que se ejecutan en segundo plano y que, por tanto, no muestran una interfaz de usuario la mayor parte del tiempo. Un ejemplo sera un programa de proteccin antivirus al que se puede tener acceso si se hace clic en un icono situado en el rea de notificacin de estado de la barra de tareas. Cada componente NotifyIcon muestra un solo icono en el rea de estado. Si tiene tres procesos en segundo plano y desea que se muestre un icono para cada uno, deber agregar tres componentes NotifyIcon al formulario. Las principales propiedades del componente NotifyIcon son Icon y Visible. La propiedad Icon establece el icono que aparece en el rea de estado. Para que aparezca el icono, la propiedad Visible debe establecerse en true. Los iconos tienen asociada informacin sobre herramientas y mens contextuales. Los mens emergentes de un icono se definen con la propiedad ContextMenu. La propiedad Text asigna texto de informacin sobre herramientas. Para que el icono aparezca en el rea de estado, la propiedad Visible debe establecerse en true.

4.7.22 ErrorProvider
El componente ErrorProvider de los formularios Windows Forms se utiliza para validar los datos que proporciona el usuario en un formulario o control. Habitualmente, se utiliza junto con la validacin de entrada del usuario en un formulario o

4.8 Creacin de controles en tiempo de ejecucin


Para agregar un control a un formulario mediante programacin, declare e instancia una variable del tipo de control que desea insertar en el formulario dentro

VISUAL BASIC.NET CON SQL SERVER

PGINA 43

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN del manejador del evento en que desee que se agregue el control. Establezca la propiedad Location para el control y cualesquiera otras propiedades de la variable del control, segn convenga y finalmente agregue el control a la coleccin controles del formulario. Es importante instanciar la variable usando la palabra clave New y tambin establecer los valores para la propiedad Location, de otra manera se disparar un excepcin en tiempo de ejecucin o no se presentar el control en pantalla. Hay que tener cuidado de no establecer la ubicacin del control ms all de los lmites del tamao del formulario. Por ejemplo, se podra insertar en el mtodo que controla el evento Click del botn Button1 dentro de la clase del formulario, cdigo similar al siguiente para agregar una referencia a la variable de control MyText, establecer el valor de Location para el control y agregar el control:
' Visual Basic Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim MyText As New TextBox() MyText.Location = New Point(25, 25) Me.Controls.Add(MyText) End Sub

Mtodo IndexOf Remove

Descripcin Recupera el ndice del control especificado de la coleccin de controles. Quita el control especificado de la coleccin de controles.

RemoveAt Quita un control de la coleccin de controles en la ubicacin del ndice especificada. Ejemplo En el siguiente ejemplo se quita un Control de Control.ControlCollection de la clase derivada Panel si se trata de un miembro de la coleccin. En el ejemplo se supone que se ha creado un control Panel, un control Button y al menos un control RadioButton en Form. Los controles RadioButton se agregan al control Panel y el control Panel se agrega a Form. Al hacer clic en el botn, el botn de opcin denominado radioButton2 se quita de Control.ControlCollection.
' Remove the RadioButton control if it exists. Private Sub RemoveButton_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles RemoveButton.Click If Panel1.Controls.Contains(RadioAddRangeButton) Then Panel1.Controls.Remove(RadioAddRangeButton) End If End Sub

4.10 Clase Form


Form es una representacin de cualquiera de las ventanas que se muestran en una aplicacin. La clase Form se puede usar para crear ventanas estndar, de herramientas, sin bordes y flotantes. Tambin se puede utilizar la clase Form para crear ventanas modales, como cuadros de dilogo. El formulario MDI (interfaz de mltiples documentos), que es un tipo especial de formulario, puede contener otros formularios, denominados formularios MDI secundarios. Un formulario MDI se crea estableciendo la propiedad IsMdiContainer en true. Los formularios MDI secundarios se crean estableciendo la propiedad MdiParent en el formulario MDI principal que va a contener el formulario secundario. Mediante las propiedades disponibles en la clase Form, se puede definir el aspecto, el tamao, el color y las caractersticas de administracin de ventanas correspondientes a la ventana o al cuadro de dilogo que se crea. La propiedad Text permite especificar el ttulo de la ventana en la barra de ttulo. Las propiedades Size y DesktopLocation permiten definir el tamao y la posicin que tendr la ventana cuando PGINA 44

4.9 Coleccin de controles


Todo formulario de Windows tiene una propiedad Controls del tipo Control.ControlCollection que representa la coleccin de controles que contiene el formulario. Los controles del formulario pueden ser manipulados usando los mtodos disponibles en la coleccin. En la tabla se muestran algunos mtodos disponibles en esta coleccin: Mtodo Add Clear Contains Descripcin Agrega el control especificado a la coleccin de controles. Quita todos los controles de la coleccin. Determina si el objeto especificado es un miembro de la coleccin.

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN se muestre. Se puede usar la propiedad de color ForeColor para cambiar el color de primer plano predeterminado de todos los controles que se coloquen en el formulario. Las propiedades FormBorderStyle, MinimizeBox y MaximizeBox permiten controlar si el formulario se puede minimizar, maximizar o cambiar de tamao en tiempo de ejecucin. Adems de las propiedades, se pueden usar los mtodos de la clase para manipular un formulario. Por ejemplo, se puede usar el mtodo ShowDialog para mostrar un formulario como cuadro de dilogo modal. El mtodo SetDesktopLocation se puede usar para situar el formulario en el escritorio. Los eventos de la clase Form permiten reaccionar ante las acciones llevadas a cabo en el formulario. El evento Activated se puede usar para realizar operaciones como la actualizacin de los datos que se muestran en los controles del formulario cuando se activa dicho formulario. Un formulario tiene como tamao predeterminado un alto de 300 pxeles y un ancho de 300 pxeles. para mostrar el texto del men de derecha a izquierda con el fin de admitir idiomas como el rabe, que se lee de derecha a izquierda. Se pueden crear objetos MainMenu distintos para representar diferentes estructuras de men para el formulario. Si se desea volver a utilizar la estructura de men contenida en un objeto MainMenu especfico, se puede utilizar el mtodo CloneMenu correspondiente para crear una copia. Una vez se disponga de una copia de la estructura de men, se pueden realizar las modificaciones adecuadas para la nueva estructura de men.

4.11.1 Agregar mens y elementos de men a formularios Windows Forms


Un men de un formulario Windows Form se crea con un objeto MainMenu, que es una coleccin de objetos MenuItem. Para agregar mens a los formularios Windows Forms en tiempo de diseo, agregue el componente MainMenu y, a continuacin, agrguele elementos de men mediante el Diseador de mens. Los mens tambin se pueden agregar mediante programacin; para ello, agregue uno o varios objetos MainMenu a un formulario Windows Form y agregue objetos MenuItem a la coleccin. Los procedimientos descritos en este tema muestran cmo crear un men sencillo denominado Archivo, ya sea con el Diseador de mens o en el cdigo. Para agregar un men a un formulario Windows Forms en tiempo de diseo 1. Abra el formulario al que desee agregar un men en el Diseador de Windows Forms. 2. En el Cuadro de herramientas, haga doble clic en el componente MainMenu. Se agregar un men al formulario (con el texto "Escriba aqu") y se agregar el componente MainMenu a la bandeja de componentes. Para agregar un men a un formulario Windows Forms mediante programacin 1. En el Editor de cdigo, cree un nuevo mtodo pblico que incluya el cdigo que agrega el men al formulario.
' Visual Basic Public Sub AddMenu() End Sub

4.11 Mens
El componente MainMenu de formularios Windows Forms muestra un men en tiempo de ejecucin. Si se agrega este componente al Diseador de Windows Forms, el Diseador de mens permitir configurar visualmente la estructura del men principal. Todos los submens del men principal y los elementos individuales son objetos MenuItem. Para designar un elemento de men como elemento predeterminado, establezca la propiedad DefaultItem en true. El elemento predeterminado aparece en negrita cuando se hace clic en el men. El valor de la propiedad Checked del elemento de men puede ser true o false, e indica si ste est seleccionado. La propiedad RadioCheck del elemento de men personaliza la apariencia del elemento seleccionado: si RadioCheck se establece en true, aparecer un botn de opcin junto al elemento; si se establece en false, aparecer una marca de verificacin. El control MainMenu representa el contenedor para la estructura de men de un formulario. Un men est formado por objetos MenuItem que representan los comandos de men individuales de la estructura de men. Cada objeto MenuItem puede ser un comando de la aplicacin o un men primario para otros elementos de submen. Para enlazar MainMenu con el objeto Form que lo mostrar, asigne MainMenu a la propiedad Menu de Form. En el caso de aplicaciones que admiten varios idiomas, se puede utilizar la propiedad RightToLeft

VISUAL BASIC.NET CON SQL SERVER

PGINA 45

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN 2. Agregue, dentro del mtodo, cdigo similar al siguiente para crear una instancia del componente MainMenu: 2. Dentro del mtodo, cree objetos MenuItem para agregarlos a la coleccin del objeto MainMenu:

' Visual Basic Dim mnuFileMenu as New MainMenu() Me.Menu = mnuFileMenu

' Visual Basic Dim myMenuItemFile as New MenuItem("&File") Dim myMenuItemNew as New MenuItem("&New")

Una vez que haya agregado un componente MainMenu al formulario Windows Forms, deber agregarle elementos de men. El Diseador de mens permite agregar elementos de men al componente de men en tiempo de diseo. El contenido de los mens se mantiene dentro de una coleccin, de modo que, para agregar elementos a un men en tiempo de ejecucin, deber agregar objetos MenuItem a esta coleccin. Para agregar elementos de men a un men en tiempo de diseo 1. Haga clic en el componente MainMenu del formulario Windows Forms. Se mostrar el texto "Escriba aqu". 2. Haga clic en el texto que se muestra y escriba el nombre del elemento de men que desea agregarle. 3. Para agregar otro elemento de men, haga clic en otra rea "Escriba aqu" dentro del Diseador de mens. Haga clic en el rea que se encuentra a la derecha del elemento de men actual para agregar un submen. O bien Haga clic en el rea que se encuentra bajo el elemento de men actual para agregar otra entrada al mismo men. Para agregar elementos de men a un men mediante programacin 1. Si no existe ya uno, agregue un componente MainMenu al formulario Windows Forms dentro de un mtodo pblico y asigne una instancia de la clase MainMenu a la propiedad Menu del formulario.
' Visual Basic Public Sub AddMenuAndItems() Dim mnuFileMenu as New MainMenu() Me.Menu = mnuFileMenu End Sub

Nota De forma predeterminada, un objeto MainMenu no contiene elementos de men, de modo que el primer elemento de men que se agrega se convierte en encabezado del men. sta es la razn por la que la propiedad Text de myMenuItemFile se establece en &File. 3. Dentro del mtodo, asigne el elemento de men de nivel superior y agrguele los elementos de men siguientes:
' Visual Basic mnuFileMenu.MenuItems.Add(myMenuItemFile) myMenuItemFile.MenuItems.Add(myMenuItemNew)

Nota Para crear submens, puede agregar objetos MenuItem a la propiedad MenuItems del objeto MenuItem primario. En el ejemplo anterior, si deseara agregar un tercer elemento de men (myMenuItemFolder) como submen del segundo elemento de men (myMenuItemNew), debera incluir las siguientes lneas de cdigo:
' Visual Basic Dim myMenuItemFolder as New MenuItem("&Folder") myMenuItemNew.MenuItems.Add(myMenuItemFolder)

Los elementos de men tambin se pueden agregar dinmicamente en el momento de crearlos, de forma que las propiedades se establecen en el momento de crearlas y agregarlas. Por ejemplo, para agregar un cuarto elemento de men a la coleccin anterior, escriba el fragmento de cdigo siguiente:
' Visual Basic mnuFileMenu.MenuItems.Add("Save &As")

4.11.2 Agregar funcionalidad elementos de men

los

Finalmente, una vez establecida la estructura del men, desear proporcionar funcionalidad a los elementos del men. A menudo, esto se consigue mediante el controlador de eventos del evento MenuItem.Click

VISUAL BASIC.NET CON SQL SERVER

PGINA 46

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN

4.12 Barras (Control)

de

Herramientas

El control ToolBar de formularios Windows Forms se utiliza en los formularios como una barra de controles que muestra una fila de mens desplegables y botones de mapas de bits que activan comandos. Los botones pueden aparecer como un botn estndar, un botn de alternar o un botn desplegable. Por lo tanto, hacer clic en un botn de una barra de herramientas puede ser un equivalente a elegir un comando de men. Puede configurar los botones para que aparezcan y se comporten como botones de comando, mens desplegables o separadores. Habitualmente, una barra de herramientas contiene botones y mens que corresponden a los elementos de la estructura de mens de una aplicacin y proporciona acceso rpido a las funciones y comandos de la aplicacin de uso ms frecuente. Un control ToolBar suele estar "acoplado" en la parte superior de su ventana primaria, pero tambin se puede acoplar a cualquier lado de la ventana. Una barra de herramientas puede mostrar informacin sobre herramientas cuando el usuario sita el puntero del mouse (ratn) en un botn de la barra. La informacin sobre herramientas es una pequea ventana emergente que describe de forma breve el propsito del botn o del men. Para mostrar informacin sobre herramientas, debe establecerse la propiedad ShowToolTips en true. Nota Algunas aplicaciones tienen controles muy similares a la barra de herramientas que tienen la capacidad de "flotar" sobre la ventana de la aplicacin y se puede cambiar su posicin. El control ToolBar de Windows Forms no puede realizar estas acciones. Cuando la propiedad Appearance se establece en Normal, los botones de la barra de herramientas aparecen realzados en tres dimensiones. Puede establecer la propiedad Appearance de la barra de herramientas en Flat para proporcionar a la barra de herramientas y a sus botones una apariencia plana. Cuando el puntero del mouse se mueve sobre un botn plano, la apariencia del botn cambia a tridimensional. Los botones de las barras de herramientas pueden dividirse en grupos lgicos por medio de separadores. Un separador es un botn de barra de herramientas con la propiedad Style establecida en Separator. Aparece como un espacio vaco en la barra de herramientas. Cuando la barra de herramientas tiene una apariencia plana, los separadores de botones aparecen como lneas, en lugar de como espacios entre los botones.

El control ToolBar permite crear barras de herramientas agregando objetos Button a una coleccin Buttons. Se puede usar el Editor de colecciones para agregar botones a un control ToolBar; cada objeto Button debe tener asignado un texto o una imagen, aunque es posible asignarle ambas cosas. La imagen la proporciona un componente ImageList asociado, indicando el valor de ndice de la imagen a la propiedad ImageIndex para cada ToolBarButton. A continuacin, se puede asignar texto que aparecer debajo o a la derecha de la imagen estableciendo la propiedad Text de ToolBarButton. En tiempo de ejecucin, puede agregar o quitar botones de la coleccin ToolBarButtonCollection mediante los mtodos Add y Remove. Para programar los botones de una barra de herramientas, agregue cdigo a los eventos ButtonClick del control ToolBar, usando la propiedad Button de la clase ToolBarButtonClickEventArgs para determinar en qu botn se hizo clic. Si no se ha establecido ButtonSize, se calcula un objeto Size dentro de la clase para establecerlo de manera predeterminada. El tamao calculado se ajustar a la imagen ms grande y al texto asignados a los controles ToolBarButton.

5 Elementos de Programacin
5.1 Tipos de Datos
El tipo de datos de un elemento de programacin hace referencia al tipo de datos que puede contener y a cmo se almacenan stos. Los tipos de datos se aplican a todos los valores que pueden almacenarse en la memoria del equipo o participar en la evaluacin de una expresin. Cada variable, literal, constante, propiedad, argumento de procedimiento y valor devuelto por un procedimiento tiene un tipo de datos. Un tipo de datos declarado est especificado como parte de la declaracin de un elemento de programacin. A menos que utilice la programacin sin tipos, debe declarar los tipos de datos de todos los elementos de programacin. Los tipos de datos de Visual Basic .NET se pueden clasificar en funcin de si una variable de un tipo especfico almacena sus propios datos o un puntero a los datos. Esta clasificacin afecta a la forma en que se implementa un tipo de datos.

VISUAL BASIC.NET CON SQL SERVER

PGINA 47

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN

5.1.1 Tipos de valores y tipos de referencia


Un tipo de datos es un tipo de valores si almacena los datos en su propia asignacin de memoria. Un tipo de referencia contiene un puntero a otra ubicacin de memoria que almacena los datos. Los tipos de valores incluyen: Todos los tipos de datos numricos Boolean, Char y Date Todas las estructuras, incluso si sus miembros son tipos de referencia Las enumeraciones, ya que su tipo subyacente es siempre Byte, Short, Integer o Long Los tipos de referencia incluyen: String Todas las matrices, incluso si sus elementos son tipos de valores Los tipos de clase, como Form Delegados Puede asignar indistintamente un tipo de referencia o un tipo de valores a una variable del tipo de datos Object. Una variable Object siempre contiene un puntero a los datos, nunca los propios datos. Sin embargo, si se asigna un tipo de valor a una variable Object, sta se comporta como si contuviera sus propios datos. Puede saber si una variable Object est actuando como un tipo de referencia o como un tipo de valores si la pasa al mtodo IsReference de la clase Information en el espacio de nombres Microsoft.VisualBasic. Microsoft.VisualBasic.Information.IsReference devuelve True si el contenido de la variable Object representa un tipo de referencia.

System.UInt16, System.UInt32 y System.UInt64 ofrecen los equivalentes sin signo de Short, Integer y Long. Puede utilizar estos tipos sin signo para declarar variables y constantes, as como tener acceso a los mtodos que .NET implementa en estos tipos. Sin embargo, Visual Basic .NET no admite operaciones o conversiones de tipo que impliquen a tipos que no proporciona la aplicacin. En .NET Framework, una estructura es un tipo de valor y una clase es un tipo de referencia. Por este motivo, las estructuras .NET admiten tipos de valor como Char e Integer, mientras que las clases .NET admiten tipos de referencia como Object y String. Como cada tipo de referencia representa una clase .NET subyacente, es preciso utilizar la palabra clave New al inicializarlo. La instruccin siguiente inicializa una matriz: Dim Totals() As Single = New Single(8) {} Tambin puede utilizar la palabra clave New para inicializar un tipo de valor. Esto resulta especialmente til si el tipo tiene un constructor que toma parmetros.

5.1.2.1 Miembros de tipos de datos


Puesto que estn admitidos por las estructuras y clases de .NET, los tipos de datos de Visual Basic tienen miembros. Estos miembros incluyen constructores, mtodos, propiedades y campos. Puede obtener acceso a los miembros (excepto los constructores) de una variable del mismo modo que a los mtodos y propiedades de un objeto. En el ejemplo siguiente se utilizan las propiedades Year, Month y Day, y el mtodo DaysInMonth de la estructura System.DateTime para determinar cuntos das restan del mes actual:
Dim Current As Date ' El tipo de datos Date es soportado por System.DateTime. Dim DaysRemaining As Integer ' Das restantes de este mes. ' ... Current = Now ' Obtiene la fecha y la hora actual en Current. DaysRemaining = Date.DaysInMonth(Current.Year, Current.Month) - Current.Day

5.1.2 Tipos de datos como clases y estructuras


Cada tipo de datos bsico de Visual Basic .NET es compatible con una estructura o una clase en el espacio de nombres System. El compilador utiliza la palabra clave de cada tipo de datos como alias para la clase o estructura subyacente. Por ejemplo, declarar una variable con la palabra reservada Byte es igual que declararla con el nombre completo de estructura System.Byte. Common Language Runtime tambin admite estructuras y clases que Visual Basic .NET no proporciona. Por ejemplo, las estructuras

Conviene sealar que se debe calificar una referencia a un miembro de tipo de datos, bien con el nombre del tipo (Date) o bien con el nombre de una variable declarada de dicho tipo (Current).

5.1.2.2 Ejemplos de miembros de tipos de datos


Los siguientes prototipos de cdigo ilustran algunos mtodos, propiedades y campos tiles con los tipos de datos: <Char>.IsDigit() ' Returns True if character is a numeric digit. PGINA 48

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN <Char>.IsLower() ' Returns True if character is a lowercase letter. <Date>.IsLeapYear() ' Returns True if current year is a leap year. <Date>.ToUniversalTime() ' Returns local date/time converted to UTC. <Double>.IsInfinity() ' Returns True if contents represent infinity. <Double>.IsNaN() ' Returns True if contents are not a number (0/0). <Long>.MaxValue ' Constant representing largest positive Int64 value. <Object>.GetType() ' Returns Type object representing type of <Object>. <Object>.GetType().GetTypeCode() ' Returns type code of <Object>. <String>.Chars(<index>) ' Character at position <index> of <String>. <String>.Length ' Number of characters currently in <String>. Todos los tipos numricos, incluidos Byte y Char, exponen los campos pblicos MaxValue y MinValue, que pueden ser muy tiles al trabajar con estos tipos. El tipo integral sin signo es Byte (8 bits). Si una variable contiene datos binarios o datos de naturaleza desconocida, declrela como variable de este tipo. Si se necesitan ms de ocho bits de datos, declare la variable como una matriz de elementos de tipo Byte. Los operadores aritmticos son ms rpidos con los tipos integrales que con cualquier otro tipo de datos. Con el que ms rpidos son es con el tipo de datos Integer de Visual Basic .NET. Los tipos integrales son especialmente tiles como variables de contador en bucles For ... Next. Como Byte es un tipo sin signo con un intervalo de 0255, no puede representar un nmero negativo. Si utiliza el operador menos (-) unario en una expresin que produce un resultado del tipo Byte, Visual Basic convierte primero la expresin a Integer. Si intenta asignar a una variable de un tipo integral un nmero que est fuera del intervalo correspondiente a este tipo, se produce un error. Si intenta asignarle un nmero decimal, se redondea el nmero, como en el ejemplo siguiente:
Dim K As Integer ' El rango vlido es de -2147483648 a +2147483647. ' ... K = 2147483648 ' Provoca un error. K = CInt(5.9) ' Establece K a 6.

5.1.2.3 Equivalencia de miembro de tipos de datos


.NET Framework proporciona tambin varios mtodos para tipos de datos que podran resultar equivalentes a funciones y palabras clave de Visual Basic. Por ejemplo, System.Decimal.ToSingle() realiza el mismo tipo de acciones que la palabra clave CSng realiza en la expresin Decimal. Sin embargo, Visual Basic no siempre utiliza los mtodos de .NET Framework para realizar conversiones u otras operaciones. No est garantizado que CSng utilice System.<tipo de datos>.ToSingle(), y por consiguiente no se garantiza que los resultados sean los mismos bajo condiciones extremas o fuera de los mrgenes habituales.

Los datos binarios almacenados en variables Byte como matrices se conservan durante las conversiones de formato. No debera utilizar una variable String para datos binarios, ya que su contenido puede daarse durante la conversin entre los formatos ANSI y Unicode. Esta conversin puede realizarse de forma automtica cuando Visual Basic lee datos de archivos o escribe en ellos, o cuando llama a archivos DLL, mtodos y propiedades. Para tipos integrales, los caracteres de tipo literal son S para Short, I para Integer y L para Long. No existe un carcter de tipo literal para Byte.

5.1.3.2 Tipos no integrales


Los tipos de datos no integrales son aquellos que representan nmeros que contienen tanto partes enteras como decimales. Los tipos de datos numricos no integrales son Decimal (punto fijo de 128 bits), Single (punto flotante de 32 bits) y Double (punto flotante de 64 bits). Todos ellos son tipos con signo. Si una variable puede contener una valor decimal, declrela como variable de uno de estos tipos. El tipo de datos Decimal admite como mximo 29 dgitos significativos y puede representar de 7,9228 x 1028. Es especialmente adecuado para clculos, como los financieros, que necesitan un gran nmero de dgitos pero no pueden tolerar errores de redondeo. PGINA 49

5.1.3 Tipos de datos numricos


5.1.3.1 Tipos integrales
Los tipos de datos integrales son aquellos que slo representan nmeros enteros. Los tipos de datos integrales con signo son Short (16 bits), Integer (32 bits) y Long (64 bits). Si una variable almacena siempre nmeros enteros en lugar de nmeros con una parte decimal, declrela como variable de uno de estos tipos.

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Para asignar una valor de gran tamao a una variable o constante Decimal, debe agregar el carcter de tipo literal a un literal numrico si es demasiado largo para el tipo de datos Long, tal y como se puede ver en el ejemplo siguiente:
Dim DecVar As Decimal DecVar = 9223372036854775808 ' Overflow; too big for Long data type. DecVar = 9223372036854775808D ' No overflow; Decimal data type. CharVar = "@" ' Cannot convert String to Char with Option Strict On. CharVar = "@"C ' Successfully assigns single character to CharVar.

Recuerde que el tipo Char no tiene signo. El carcter de tipo literal para Char es C.

5.1.4.2 Tipo String


El tipo de datos String es una secuencia de cero o ms caracteres Unicode de dos bytes (16 bits). Si una variable siempre contiene una cadena de caracteres y nunca contiene un valor numrico, declrela para que sea del tipo String, como en el ejemplo siguiente:
Private S As String

Los nmeros con punto flotante (Single y Double) tienen intervalos mayores que los nmeros Decimal pero pueden estar sujetos a errores de redondeo. Los tipos de punto flotante admiten menos dgitos significativos que Decimal pero pueden representar valores de mayor magnitud. Los valores de punto flotante se pueden expresar como mmmEeee, donde mmm es la mantisa (los dgitos significativos) y eee es el exponente (una potencia de 10). El valor positivo ms elevado de un tipo de datos Single es 3,4028235E+38, y el valor positivo ms elevado de un tipo de datos Double es 1,79769313486231570E+308. Para tipos no integrales, los caracteres de tipo literal son D para Decimal, F para Single y R para Double.

A continuacin puede asignar cadenas a esta variable y manipularla mediante el uso de funciones de cadena, como en el ejemplo siguiente:
S = "Database" S = Microsoft.VisualBasic.Left(S, 4) ' Establece S a "Data".

5.1.4 Tipos de datos de caracteres


Visual Basic proporciona tipos de datos de caracteres para trabajar con caracteres que se pueden mostrar e imprimir. Aunque ambos tipos utilizan caracteres Unicode, Char contiene un nico carcter, mientras que String contiene cualquier nmero de caracteres.

El tipo de datos String contiene caracteres Unicode, cada uno de los cuales tiene un valor entre 0 y 65.535. Una variable o argumento String es siempre una cadena de longitud variable, que crece o se reduce al asignarle nuevos datos. Algunas veces las cadenas se completan con espacios iniciales o finales. Las funciones Trim, LTrim y RTrim eliminan estos espacios. Quizs encuentre tiles estas funciones cuando trabaje con cadenas. No existe ningn carcter de tipo literal para String. Sin embargo, el compilador trata los literales encerrados entre comillas dobles (" ") como String.

5.1.4.1 Tipo Char


El tipo de datos Char es un nico carcter Unicode de dos bytes (16 bits). Puede utilizar mtodos como IsDigit y IsPunctuation en una variable Char para determinar su clasificacin Unicode. Visual Basic no realiza conversiones directas entre el tipo Char y los tipos numricos. Se pueden realizar conversiones de tipos con funciones como AscW y ChrW. Si el modificador de comprobacin de tipos (Option Strict) est activado, se debe agregar el carcter de tipo literal a un literal de cadena con un slo carcter para identificarlo como el tipo de datos Char, como se muestra en el siguiente ejemplo:
Option Strict On ' ... Dim CharVar As Char

5.1.5 Tipos de datos varios


Visual Basic proporciona varios tipos de datos que no estn orientados a nmeros o caracteres. En lugar de ello, tratan con datos especializados como valores de tipo s/no o fecha y hora.

5.1.5.1 Boolean (Tipo)


El tipo de datos Boolean es un valor sin signo que se interpreta como True o False (verdadero o falso). Si una variable slo puede contener informacin de tipo verdadero/falso, s/no o activado/desactivado, declrela como de tipo Boolean. El valor predeterminado de Boolean es False. En el ejemplo siguiente, RunningVB es una variable Boolean que almacena un nico parmetro de tipo s/no.
Dim RunningVB As Boolean ' Check to see if program is running on VB engine. If ScriptEngine = "VB" Then

VISUAL BASIC.NET CON SQL SERVER

PGINA 50

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN
RunningVB = True End If

No existe ningn carcter de tipo literal para Boolean.

variable Object actualmente, puede utilizar el mtodo GetTypeCode de la clase Type, como en el ejemplo siguiente:
Dim MyObject As Object ' ... Suppose MyObject has now had something assigned to it. Dim DatTyp As Integer DatTyp = Type.GetTypeCode(MyObject.GetType())

5.1.5.2 Date (Tipo)


El tipo de datos Date es un entero con signo de 64 bits (8 bytes). Cada incremento representa 100 nanosegundos de tiempo transcurrido desde el principio (12:00 a.m.) del 1 de enero del ao 1 del calendario gregoriano. Una variable o constante del tipo de datos Date contiene tanto la fecha como la hora, como en el ejemplo siguiente:
SomeDate = #11/18/2002 10:36 AM#

Si no se incluye una fecha en un literal de fecha/hora, Visual Basic establece la parte de fecha del valor en 1 de junio de 0001. Si se incluye una hora en un literal de fecha/hora Visual Basic establece la parte de hora del valor en el inicio del da, es decir, medianoche. Al convertir un tipo de datos numrico en Date, Visual Basic trata su valor como un entero con signo. Si se intenta convertir un nmero negativo, se produce un error. No existe ningn carcter de tipo literal para Date. Sin embargo, el compilador trata los literales encerrados entre caracteres de signo de nmero (# #) como Date.

Los elementos de programacin declarados como Object pueden aceptar valores de cualquier tipo de datos. Object se trata como un tipo de valor cuando contiene un tipo de valor, y como tipo de referencia cuando contiene un tipo de referencia. En cada caso, una variable Object no contiene el propio valor, sino un puntero al valor. Siempre utiliza cuatro bytes en la memoria del sistema, pero sin incluir el almacenamiento para los datos que representan el valor de la variable. Debido al cdigo que el puntero utiliza para buscar los datos, las variables Object que contienen tipos de valor son de acceso un poco ms lento que las variables que tienen un tipo explcito. No existe ningn carcter de tipo literal para Object.

5.2 Variables
A menudo, es necesario almacenar valores de forma temporal para efectuar clculos en Visual Basic. Por ejemplo, puede que necesite calcular varios valores, compararlos y realizar distintas operaciones con ellos, en funcin del resultado de la comparacin. Para poder comparar los valores, debe guardarlos, pero no es necesario que los almacene en una propiedad. Visual Basic, al igual que la mayora de los lenguajes de programacin, utiliza variables para almacenar valores. Una variable tiene un nombre (la palabra que se utiliza para referirse al valor que contiene la variable) y un tipo de datos (que determina la clase de datos que puede almacenar la variable). Una variable puede representar una matriz, si es necesario que almacene un conjunto indizado de elementos de datos estrechamente relacionados entre s. Para efectuar clculos y asignar el resultado a una variable, se utilizan instrucciones de asignacin, como se muestra en el siguiente cdigo:
ApplesSold = 10 ' El valor 10 es asignado a la variable. ApplesSold = ApplesSold + 1 ' La variable es incrementada.

5.1.5.3 Object (Tipo)


El tipo de datos Object es una direccin de 32 bits (4 bytes) que apunta a un objeto dentro de la aplicacin o en alguna otra aplicacin. Al declarar una variable como Object, puede utilizarla posteriormente para hacer referencia a cualquier objeto reconocido por la aplicacin, como en el ejemplo siguiente:
Dim objDb As Object Dim MyCollection As New Collection() ' ... Suponer que MyCollection ya ha sido llenada. objDb = MyCollection.Item(1)

Al declarar una variable de objeto, es preferible utilizar una clase especfica en lugar del genrico Object; por ejemplo, Database en lugar de Object, en el ejemplo precedente. Tambin es preferible utilizar la clase ms especfica disponible, como TextBox en lugar de Control, as se podr tener acceso a sus propiedades y mtodos. Normalmente puede utilizar la lista Clases del Examinador de objetos para buscar nombres de clase disponibles. Las variables del tipo de datos Object pueden apuntar tambin a datos de cualquier tipo. Esto significa que puede asignar una variable, constante o expresin de cualquier tipo de datos a una variable Object. Para determinar el tipo de datos al que hace referencia la

Nota El signo igual (=) de este ejemplo es un operador de asignacin, no un operador de igualdad. El valor se asigna a la variable ApplesSold.

VISUAL BASIC.NET CON SQL SERVER

PGINA 51

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN

5.2.1 Declaracin de variables


Una variable se declara para especificar su nombre y sus caractersticas. La instruccin de declaracin para variables es Dim. Su ubicacin y contenido determinan las caractersticas de la variable.

y sus valores se pierden. No obstante, si se declara una variable local con la palabra clave Static, sta seguir existiendo y conservar su valor aunque finalice el procedimiento. Las variables de mdulo, compartidas y de instancia conservan sus valores mientras contine la ejecucin de la aplicacin.

5.2.1.1 Niveles de declaracin


Una variable local es aquella que se declara dentro de un procedimiento. Una variable de mdulo se declara en el interior del mdulo, pero no dentro de un procedimiento interno del mdulo. La categora de una variable que no sea local, en una clase o estructura, depende de que la variable est o no compartida. Si una variable se declara con la palabra clave Shared, es una variable compartida, y existe en una nica copia compartida por todas las instancias de la clase o estructura. De lo contrario, es una variable de instancia, y se crea una copia independiente de ella para cada instancia de la clase o estructura. Una copia determinada de una variable de instancia slo est disponible en la instancia para la cual se cre.

5.2.1.4 Declarar el mbito


El mbito de una variable est formado por todo cdigo que puede hacer referencia a la variable sin tener que especificar su nombre. El mbito de una variable est determinado por la ubicacin en la que se haya declarado la variable. El cdigo de una regin determinada puede utilizar las variables definidas en dicha regin sin necesidad de especificar los nombres de las variables. Cuando se declara un mbito, se aplican las siguientes reglas: El mbito de una variable de mdulo es el espacio de nombres completo en el que est definido el mdulo. El mbito de una variable de instancia o compartida es la estructura o clase en la que se ha declarado. El mbito de una variable local es el procedimiento en el que se ha declarado. No obstante, si se declara una variable local dentro de un bloque, su mbito ser nicamente el propio bloque. Un bloque es un conjunto de instrucciones que terminan por una instruccin End, Else, Loop o Next; por ejemplo, una construccin For...Next o If...Then...Else...End If.

5.2.1.2 Declarar el tipo de datos


La clusula As de la instruccin de declaracin permite definir el tipo de datos o de objetos de la variable que se est declarando. Se puede especificar cualquiera de los siguientes tipos para una variable: Un tipo de datos elemental, como Boolean, Long o Decimal. Un tipo de datos compuesto, como una matriz o una estructura. Un tipo de objeto, o de clase, de Visual Basic u otra aplicacin, como Label o TextBox. Se pueden declarar varias declarar distintas variables en la misma instruccin sin necesidad de repetir el tipo de datos. En las instrucciones que se muestran a continuacin, las variables I, J y K se declaran como de tipo Integer, L y M como Long y X e Y como Single:
Dim I, J, K As Integer ' Las tres son variables de tipo Integer. Dim L, M As Long, X, Y As Single ' L y M son Long, X y Y son Single.

5.2.1.5 Declarar la accesibilidad


La accesibilidad de una variable viene determinada por la palabra o palabras clave, Dim, Public, Protected, Friend, Protected Friend o Private, que se utilizan en la instruccin de declaracin. Con cualquiera de estas palabras clave se puede declarar una variable de mdulo, estructura, clase o instancia. Dentro de un procedimiento, solamente est permitida la palabra clave Dim, y la accesibilidad siempre es privada.

5.2.1.3 Declarar el perodo de duracin


El perodo de duracin de una variable representa el tiempo durante el cual la variable est disponible para que pueda ser utilizada. Una variable local declarada con una instruccin Dim slo existe durante la ejecucin del procedimiento. Cuando finaliza el procedimiento, todas sus variables locales desaparecen

5.2.2 Variables de tipo objecto


Una variable, adems de almacenar valores, puede hacer referencia a un objeto. Puede asignar un objeto a

VISUAL BASIC.NET CON SQL SERVER

PGINA 52

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN una variable por los mismos motivos que asigna un valor a una variable: Un nombre de variable suele ser ms corto y ms fcil de recordar que la ruta de acceso completa a los mtodos o propiedades necesarios para obtener acceso al propio objeto. El uso de una variable que hace referencia a un objeto es ms eficiente que el acceso reiterado al propio objeto mediante los mtodos o propiedades adecuados. Es posible cambiar una variable para que haga referencia a otros objetos durante la ejecucin del cdigo. Las variables de objeto permiten reducir la cantidad de cdigo que hay que escribir. Por ejemplo, podra encontrarse ante un segmento de cdigo como el siguiente:
' Hay que asumi que Me es un Form vlido, o reemplazar Me con un Form vlido. Me.Activate() ' Activa el formulario. Me.ActiveControl = Label1 ' Activa algn control del formulario. ' ... Me.ActiveForm.ActiveControl.Text = "Test" Me.ActiveForm.ActiveControl.Location = New Point(100, 100) Me.ActiveForm.ActiveControl.Show()

argumentos del procedimiento y los valores devueltos de las funciones como casos especiales de las variables. El perodo de duracin de una variable representa el tiempo durante el cual puede contener un valor. Su valor puede variar en su perodo de duracin, pero siempre contiene un valor.

5.3.1.1 Perodos de duracin diferentes


Una variable declarada en el nivel de mdulo, habitualmente existe durante todo el tiempo de ejecucin de la aplicacin. Una variable no compartida declarada en una clase o una estructura existe como una copia separada de cada instancia de la clase o la estructura en la que se ha declarado; una variable de esta clase tiene el mismo perodo de duracin que la instancia. No obstante, una variable Shared slo tiene un perodo de duracin, que es el tiempo completo de ejecucin de la aplicacin. Las variables locales declaradas con Dim solamente existen mientras se ejecuta el procedimiento en el que se declaran. Esto tambin es aplicable a los argumentos del procedimiento y a cualquier valor devuelto de funcin. No obstante, si el procedimiento llama a otros procedimientos, las variables locales conservan su valor durante la ejecucin de los ltimos.

Podra abreviar este segmento de cdigo utilizando una variable de objeto para el control, con lo que aumentara la rapidez de su ejecucin. Es conveniente que declare la variable de objeto con la clase concreta que desee asignarle (Control en el ejemplo siguiente). Una vez que haya asignado un objeto a la variable, podr tratarla exactamente igual que al objeto al que hace referencia. Tambin puede establecer o devolver las propiedades del objeto o utilizar cualquiera de sus mtodos, como en el ejemplo siguiente:
Dim ctrlBal As Control ' Must declare to be of class Control. ' ... ctrlBal = Me.ActiveForm.ActiveControl ctrlBal.Text = "Test" ctrlBal.Location = New Point(100, 100) ctrlBal.Show()

5.3.1.2 Comienzo del perodo de duracin


El perodo de duracin de una variable local empieza con la ejecucin del procedimiento en el que se declara. Las variables locales se inicializan con el valor predeterminado de su tipo de datos en el momento en que empieza la ejecucin del procedimiento. Las variables numricas (incluidas Byte y Char) se inicializan a cero, las variables Date a la medianoche del 1 de enero del ao 1, las variables Boolean a False y las variables de tipo referencia (incluidas las cadenas, matrices y Object) a Nothing. Los miembros de una variable de estructura se inicializan como si cada uno fuera una variable independiente. De forma similar, los elementos de una variable de matriz se inicializan de manera individual. Si una variable se declara con un inicializador, el valor especificado se le asigna cuando se ejecuta su instruccin de declaracin, como se muestra en el siguiente ejemplo:
Dim X As Double = 18.973 ' X ha sido iniciada previmente a 0.

5.3 Perodo de duracin, mbito y accesibilidad de variables


5.3.1 Perodo de duracin
El perodo de duracin de un elemento declarado es el tiempo durante el cual est disponible para el uso. Las variables son los nicos elementos que tienen un perodo de duracin; para ello, el compilador trata los

Las variables declaradas en un bloque de un procedimiento se inicializan a su valor predeterminado cuando entran en el procedimiento. Dichas inicializaciones tienen lugar se ejecute o no el bloque.

5.3.1.3 Final del perodo de duracin


Cuando finaliza la ejecucin de un procedimiento, el valor de sus variables locales no se conserva, y se PGINA 53

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN recupera la memoria utilizada para los elementos locales. La siguiente vez que se ejecute el procedimiento, se crearn de nuevo todos sus elementos locales y se inicializarn las variables locales. Cuando finaliza una instancia de una clase o una estructura, se pierde el valor de sus variables no compartidas. Cada nueva instancia de la clase o la estructura crea todos sus elementos no compartidos e inicializa las variables no compartidas. Los elementos Shared se conservan hasta que finaliza la ejecucin de la aplicacin.

5.3.2 mbito
El mbito de un elemento declarado es el conjunto de cdigo que puede hacerle referencia sin calificar su nombre o marcarlo como disponible mediante una instruccin Imports. Un elemento puede tener uno de los niveles de mbito siguientes: mbito de bloque: disponible nicamente en el bloque de cdigo en el que se ha declarado. mbito de procedimiento: disponible nicamente dentro del procedimiento en el que se ha declarado. mbito de mdulo: disponible en todo el cdigo del mdulo, la clase o la estructura donde se ha declarado. mbito de espacio de nombres: disponible en todo el cdigo del espacio de nombres. Estos niveles de mbito progresan desde el ms restringido (bloque) al ms amplio (espacio de nombres), donde mbito ms restringido significa el conjunto de cdigo ms pequeo que puede hacer referencia al elemento sin calificacin. El mbito de un elemento se especifica al declararlo y puede depender de los factores siguientes: La regin (bloque, procedimiento, mdulo, clase o estructura) donde se declara el elemento. El espacio de nombres que contiene la declaracin del elemento. La accesibilidad que se declara para el elemento. Tenga cuidado cuando defina variables del mismo nombre pero con mbito diferente, puesto que ello podra causar resultados inesperados. Eleccin del mbito de una variable El mbito de una variable est formado por todo cdigo que puede hacer referencia a la variable sin tener que especificar su nombre. El mbito de una variable est determinado por la ubicacin en la que se haya declarado la variable. En lo que se refiere al mbito, es importante tener en cuenta que las variables locales son una opcin idnea para cualquier tipo de clculo provisional. Slo consumen memoria cuando se ejecuta el procedimiento, y sus nombres no son susceptibles de entrar en conflicto. Por ejemplo, es posible crear varios procedimientos distintos que contengan una PGINA 54

5.3.1.4 Prolongar el perodo de duracin


Si una variable local se declara con la palabra clave Static, su perodo de duracin se alarga ms que el tiempo de ejecucin del procedimiento en el que se declara. Si el procedimiento est contenido dentro de un mdulo, la variable esttica sobrevive mientras dure la ejecucin de la aplicacin. Si una variable esttica se declara en un procedimiento dentro de una clase, el perodo de duracin de la variable depende de si el procedimiento es compartido. Si el procedimiento se declara con la palabra clave Shared, el perodo de duracin de la variable contina hasta que finaliza la aplicacin. Si el procedimiento no es compartido, sus variables estticas son miembros de instancia de la clase y sus perodos de duracin ser iguales a los de la instancia de clase. En el ejemplo siguiente, la funcin RunningTotal calcula un total acumulado mediante la suma de un valor nuevo al total de los valores previos almacenados en la variable esttica ApplesSold: Function RunningTotal(ByVal Num As Integer) As Integer
Static ApplesSold As Integer ApplesSold = ApplesSold + Num Return ApplesSold ' ApplesSold conserva su valor actual. End Function

Si ApplesSold se hubiera declarado sin utilizar Static, los valores acumulados anteriormente no se habran conservado despus de las llamadas a la funcin, y sta sencillamente habra devuelto el mismo valor con el que se le llam. Puede generar el mismo perodo de duracin si declara ApplesSold en el nivel de mdulo. No obstante, si cambia de esta forma el mbito de una variable, el procedimiento dejar de tener acceso exclusivo a l. Dado que otros procedimientos podran tener acceso a la variable y cambiar su valor, el total acumulado no sera confiable, lo que podra dificultar el mantenimiento del cdigo.

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN variable denominada intTemp. En tanto que intTemp est declarado como una variable local, cada procedimiento reconocer nicamente su propia versin de intTemp. Cualquier procedimiento puede cambiar el valor de su variable intTemp local sin que ello afecte a las variables intTemp del resto de los procedimientos. Nota Las variables de mdulo, compartidas, de instancia y estticas consumen recursos de memoria hasta que finaliza la ejecucin de la aplicacin, por lo que no conviene utilizarlas si no es realmente necesario. En general, cuando se declara una variable o una constante, es un buen hbito de programacin asignar un mbito lo ms restringido posible (el mbito de un bloque es el ms restringido). Esto permite que no se pierda memoria y reduce al mnimo la posibilidad de que el cdigo haga referencia por error a una variable incorrecta. Del mismo modo, slo debera declararse una variable como Static si es necesario que conserve su valor entre una llamada al procedimiento y otra. dentro de la misma clase o desde una clase derivada de ella. El cdigo siguiente muestra un ejemplo de declaracin Protected:
Protected Class ClassForMyHeirs

Slo puede utilizar Protected en el nivel de clase, y solamente cuando declare un miembro de una clase.

5.3.3.3 Friend
La palabra clave Friend de la instruccin Dim declara elementos como accesibles desde dentro del mismo proyecto, pero no desde fuera de l. El cdigo siguiente muestra un ejemplo de declaracin Friend:
Friend StringForThisProject As String

5.3.3 Accesibilidad
La accesibilidad de un elemento declarado es la capacidad para utilizarlo; es decir, el permiso para que el cdigo pueda leerlo o modificarlo. Est determinada no solamente por cmo se declara el propio elemento, sino tambin por la accesibilidad del contenedor del elemento. Si el elemento contenedor no est accesible, tampoco lo estarn los elementos contenidos, aunque se hayan declarado como Public. Por ejemplo, una variable Public de una estructura Private est accesible desde el interior de la clase que contiene la estructura, pero no desde el exterior.

Puede utilizar Friend solamente en el nivel de mdulo, espacio de nombres o archivo. Esto es, puede declarar un elemento de tipo amigo en un archivo de cdigo fuente o dentro de un mdulo, una clase o una estructura, pero no dentro de un procedimiento. Protected Friend La palabra clave Protected junto con la palabra clave Friend en la instruccin Dim declaran elementos como accesibles desde clases derivadas o desde dentro del mismo proyecto, o ambos. El cdigo siguiente muestra un ejemplo de declaracin Protected Friend:
Protected Friend StringForProjectAndHeirs As String

Slo puede utilizar Protected Friend en el nivel de clase, y solamente cuando declare un miembro de una clase.

5.3.3.4 Private
La palabra clave Private en la instruccin Dim declara elementos como accesibles solamente desde dentro del mismo mdulo, clase o estructura. El cdigo siguiente muestra un ejemplo de declaracin Private:
Private NumberForMeOnly As Integer

5.3.3.1 Public
La palabra clave Public de la instruccin Dim declara elementos como accesibles desde cualquier parte del mismo proyecto, desde otros proyectos que hagan referencia al proyecto, y desde un ensamblado generado a partir del proyecto. El cdigo siguiente muestra un ejemplo de declaracin Public:
Public Class ClassForEverybody

Puede utilizar Public solamente en el nivel de mdulo, espacio de nombres o archivo. Esto es, puede declarar un elemento pblico en un archivo de cdigo fuente o dentro de un mdulo, clase o estructura, pero no dentro de un procedimiento.

Puede utilizar Private solamente en el nivel de mdulo, espacio de nombres o archivo. Esto es, puede declarar un elemento privado en un archivo de cdigo fuente o dentro de un mdulo, clase o estructura, pero no dentro de un procedimiento. Nota En el nivel de mdulo, la instruccin Dim sin palabras clave de accesibilidad equivale a una declaracin Private. No obstante, podra convenirle usar la palabra clave Private para facilitar la lectura y la interpretacin del cdigo.

5.4 Constantes y Enumeraciones


Las constantes son una forma de utilizar nombres significativos en el lugar de valores que no se modifican. Las constantes almacenan valores que, como su nombre indica, permanecen constantes PGINA 55

5.3.3.2 Protected
La palabra clave Protected de la instruccin Dim declara elementos como accesibles solamente desde

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN durante la ejecucin de una aplicacin. El uso de constantes puede hacer ms legible el cdigo, puesto que se utilizan nombres significativos en lugar de nmeros. Las enumeraciones proporcionan una forma cmoda de trabajar con conjuntos de constantes relacionadas y de asociar valores de constantes con nombres. Por ejemplo, se puede declarar una enumeracin para un conjunto de constantes de tipo entero asociadas con los das de la semana, y despus utilizar los nombres de los das en el cdigo en lugar de sus valores enteros. Una constante puede declararse dentro de un procedimiento o en la seccin de declaraciones de un mdulo, clase o estructura. Las constantes de nivel de clase o de estructura son de tipo Private de manera predeterminada, pero tambin se pueden declarar como Public, Friend, Protected o Protected Friend segn el nivel apropiado de acceso al cdigo. La constante debe tener un nombre simblico vlido (las reglas son las mismas que se aplican para la creacin de nombres de variables) y una expresin que se componga de constantes numricas o de cadena, y operadores; no obstante, no se pueden utilizar llamadas a funciones. Para declarar una constante Escriba una declaracin que incluya un especificador de acceso, la palabra clave Const y una expresin, como en los ejemplos siguientes:
Public Const DaysInYear = 365 Private Const WorkDays = 250

5.4.1 Constantes
A menudo el cdigo contiene valores constantes que vuelven a aparecer. Tambin puede ocurrir que el cdigo dependa de ciertos nmeros difciles de recordar o cuyo significado no sea evidente. En estos casos, puede mejorar considerablemente la legibilidad del cdigo y facilitar su mantenimiento mediante constantes. Una constante es un nombre significativo que toma el lugar de un nmero o cadena que no cambia. Las constantes almacenan valores que, como su nombre indica, permanecen constantes durante la ejecucin de una aplicacin. Las constantes se declaran con la instruccin Const, utilizando las mismas directrices que en la creacin de nombres de variables. Si Option Strict est On, debe declarar explcitamente el tipo de constante. El mbito de una constante es el mismo que el de una variable declarada en la misma ubicacin. Para crear una constante que exista en el mbito de un procedimiento concreto, declrela dentro de dicho procedimiento. Para crear una constante disponible en toda la aplicacin, declrela con la palabra clave Public en la seccin de declaraciones de la clase. Nota Aunque las constantes son de algn modo similares a las variables, no se pueden modificar ni asignrsele valores como a stas ltimas. Las constantes que se utilizan en el cdigo pueden ser intrnsecas al modelo de objeto para los controles o componentes con los que trabaja o definidas por el usuario, es decir, creadas por ste.

Si Option Strict est On, debe declarar una constante de forma explcita especificando un tipo de datos (Boolean, Byte, Char, DateTime, Decimal, Double, Integer, Long, Short, Single o String). Si Option Strict est Off, el compilador asigna un tipo de datos a la constante. Para declarar una constante con Option Strict On Con Option Strict On, escriba una declaracin que incluya la palabra clave As y un tipo de datos explcito, como en los siguientes ejemplos:
Option Strict On Public Const MyInteger As Integer = 42 Private Const DaysInWeek As Short = 7 Protected Friend Const Funday As String = "Sbado"

Pueden declararse varias constantes en una sola lnea, si bien para facilitar la lectura del cdigo se recomienda declarar solamente una constante por lnea. Si declara varias constantes en una sola lnea, todas ellas deben tener el mismo nivel de acceso (Public, Private, Friend, Protected, o Protected Friend). Para declarar varias constantes en una sola lnea Separe las declaraciones con una coma y un espacio, como en el ejemplo siguiente:
Public Const Four As Integer = 4, Five As Integer = 5, Six As Integer = 44

5.4.1.1 Declaracin de constantes


La instruccin Const se utiliza para declarar una constante y establecer su valor. Al declarar una constante, puede asignar un nombre significativo a un valor. Una vez que se declara una constante, no se puede modificar ni se le puede asignar un nuevo valor.

VISUAL BASIC.NET CON SQL SERVER

PGINA 56

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN

5.4.2 Enumeraciones
Las enumeraciones proporcionan una forma cmoda de trabajar con conjuntos de constantes relacionadas y de asociar valores de constantes con nombres. Por ejemplo, se puede declarar una enumeracin para un conjunto de constantes de tipo entero asociadas con los das de la semana, y despus utilizar los nombres de los das en el cdigo en lugar de sus valores enteros. Una enumeracin se crea con la instruccin Enum en la seccin de declaraciones de una clase o mdulo. Un tipo Enum tiene un nombre, un tipo subyacente y un conjunto de campos, cada uno de los cuales representa una constante. El nombre debe ser un calificador de Visual Basic .NET vlido. El tipo subyacente puede ser uno de los tipos enteros: Byte, Short, Long o Integer. Integer es el valor predeterminado. Las enumeraciones tienen siempre establecimiento inflexible de tipos y no son intercambiables con los tipos de nmeros enteros. Puede asignarse el mismo valor a varios campos. Al hacerlo, el compilador marca uno de los valores Enum como principal para la conversin y reflexin de cadenas. Se pueden asignar explcitamente valores a constantes en una enumeracin mediante una instruccin de asignacin. Se admiten todos los valores enteros, incluidos los nmeros negativos.

denominada Lunes con el valor 1, una constante denominada Martes con el valor 2, etc.:
Public Enum Days Domingo Lunes Martes Mircoles Jueves Viernes Sbado End Enum

Se pueden asignar explcitamente valores a constantes en una enumeracin mediante una instruccin de asignacin. Se puede asignar cualquier valor entero, incluidos nmeros negativos. Por ejemplo, puede que desee que las constantes con valores menores que cero representen condiciones de error. En la siguiente enumeracin, a la constante Invalido se le asigna explcitamente el valor 1, y a la constantes Domingo se le asigna el valor 0. Debido a que es la primera constante de la enumeracin, Sbado tambin se inicializa con el valor 0. El valor de Lunes es 1 (el valor de Domingo ms uno); el valor de Martes es 2, y as sucesivamente.
Public Enum WorkDays Sbado Domingo = 0 Lunes Martes Miercoles Jueves Viernes Invalido = -1 End Enum

5.4.2.1 Declaracin de enumeraciones


Una enumeracin se crea con la instruccin Enum en la seccin de declaraciones de una clase o mdulo. No puede declarar una enumeracin dentro de un mtodo. Para especificar el nivel apropiado de acceso al cdigo, utilice Private, Protected, Friend o Public. Para declarar una enumeracin Escriba una declaracin que incluya un nivel de acceso, la palabra clave Enum y un nombre vlido, como en los ejemplos siguientes:
Private Enum MyEnum Public Enum MyEnum Protected Enum MyEnum Friend Enum MyEnum Protected Friend Enum MyEnum

Las enumeraciones son de tipo Integer de manera predeterminada. Puede declararlas explcitamente como Integer, Short, Long o Byte. Para declarar una enumeracin explcitamente Escriba una declaracin con la sintaxis siguiente:
Public Enum MyEnum As Byte Zero One Two End Enum

De manera predeterminada, la primera constante de una enumeracin se inicializa con 0 y las siguientes se inicializan con un valor igual al de la constante anterior ms uno. Por ejemplo, la siguiente enumeracin, Days, contiene una constante denominada Domingo con el valor 0, una constante

Las enumeraciones no pueden tener valores de punto flotante. Si se asigna un valor de punto flotante a una enumeracin con Option Strict On, se producir un error del compilador. Si Option Strict est Off, el valor se convierte automticamente al tipo Enum.

VISUAL BASIC.NET CON SQL SERVER

PGINA 57

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN

5.5 Matrices
Las matrices permiten hacer referencia a una serie de variables mediante un mismo nombre y utilizar un nmero, denominado ndice o subndice, para distinguirlas. De esta forma, se puede crear un cdigo ms simple y reducido en muchos casos, ya que es posible utilizar bucles que usen el ndice para procesar eficientemente cualquier nmero de elementos de la matriz. Dimensiones de matriz Las matrices pueden tener una o varias dimensiones. La dimensin (el rango) de la matriz corresponde al nmero de subndices que se utilizan para identificar un elemento individual. Se pueden especificar hasta 32 dimensiones, aunque no es habitual tener ms de tres. Tamao de matriz Cada dimensin de una matriz tiene una longitud distinta de cero. Los elementos de la matriz son contiguos en cada dimensin, desde 0 hasta el mayor valor del subndice de esa dimensin. Puesto que Visual Basic asigna espacio para todos los elementos de una matriz, se debe evitar declarar una matriz mayor de lo necesario. Una matriz de longitud cero es una matriz sin elementos. A veces resulta necesario especificar matrices de este tipo, por ejemplo al utilizar formularios Windows Forms. Para hacerlo, declare una de las dimensiones de la matriz como 1. La matriz estar vaca, pero existir. En consecuencia, una variable que apunte a la matriz no ser igual a Nothing. Las matrices de Visual Basic no tienen un tamao fijo. Despus de haber creado una matriz, se puede cambiar su tamao. La instruccin ReDim asigna un objeto matriz completamente nuevo a la variable matriz especificada. Por consiguiente, ReDim puede cambiar la longitud de cada dimensin.

No se considera que dos variables de matrices son del mismo tipo de datos a no ser que tengan el mismo rango y elemento de tipo de datos.

5.5.2 Clase de matriz


Todas las matrices heredan de la clase Array, procedente del espacio de nombres System, por lo que es posible obtener acceso a los mtodos y a las propiedades de System.Array para cualquier matriz. Por ejemplo, la propiedad Rank devuelve el rango de la matriz, mientras que el mtodo Sort permite ordenar sus elementos. Tipo de elemento de matriz Una declaracin de matriz especifica un tipo de datos y todos sus elementos deben ser de ese tipo. Cuando el tipo es Object, los elementos individuales pueden contener diferentes clases de datos (objetos, cadenas, nmeros, etc.). Se pueden declarar matrices de cualquiera de los tipos de datos fundamentales, de una estructuras o de clases de objetos. Tambin se puede declarar una matriz que contenga otras matrices como sus elementos. En este caso, las matrices constituyentes deben tener el mismo elemento de tipo de datos, que se especifica en la declaracin. Una matriz de matrices se denomina una matriz escalonada porque las matrices constituyentes no tienen por qu tener los mismos tamaos. Nota Las matrices escalonadas no son compatibles con Common Language Specification (CLS). Esto significa que no se deben exponer matrices escalonadas desde ninguna clase que deba ser consumida por cdigo compatible con CLS.

5.5.2.1 Declarar variables de matriz


Las variables de matriz se declaran del mismo modo que otras variables, mediante la instruccin Dim. Se agregan uno o ms pares de parntesis a continuacin del nombre de la variable para indicar que es una matriz en vez de un valor escalar (una variable que contiene un solo valor). Para declarar una variable de matriz unidimensional En la declaracin, agregue un par de parntesis detrs del nombre de la variable, tal y como muestra el siguiente ejemplo:
Dim MySingleArray() As Integer

5.5.1 Matrices como objetos


En Visual Basic .NET, las matrices son objetos, de modo que cada tipo de matriz es un tipo de referencia individual. Este hecho implica lo siguiente: Una variable matriz mantiene un puntero a los datos que constituyen los elementos y la informacin de rango y longitud. Cuando se asigna una variable de matriz a otra, slo se copia el puntero.

VISUAL BASIC.NET CON SQL SERVER

PGINA 58

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Para declarar una variable de matriz multidimensional En la declaracin, agregue un par de parntesis detrs del nombre de la variable y coloque comas dentro de los parntesis para separar las dimensiones, tal y como muestra el siguiente ejemplo:
Dim My4DArray(,,,) As Short ' Four-dimensional array. Dim BA() As Byte = New Byte() {0,1,2} ' (0) through (2). Dim BA() As Byte = New Byte(2) {0,1,2} ' (0) through (2).

Una variable de matriz multidimensional se puede inicializar de forma similar. En las siguientes declaraciones de ejemplo se muestra una variable de matriz bidimensional declarada como una matriz de tipo Short con 2 filas y 2 columnas.
Dim S2X2(1, 1) As Short ' (0) through (1), (0) through (1). Dim S2X2(1, 1) As Short = New Short(,) ' INVALID (New after lengths). Dim S2X2(,) As Short = New Short(,) ' INVALID (missing braces). Dim S2X2(,) As Short = New Short(1, 1) ' INVALID (missing braces). Dim S2X2(,) As Short = New Short(,) {} ' Empty array object. Dim S2X2(,) As Short = New Short(1, 1) {} ' Elements have default value. Dim S2X2(,) As Short = New Short(,) {{5, 6}, {7, 8}} ' Four elements.

Para declarar una variable de matriz escalonada En la declaracin, agregue tantos pares de parntesis detrs del nombre de la variable como niveles de matrices anidadas haya, tal y como se ve en el siguiente ejemplo:
Dim MyJaggedArray()()() As Byte arrays. ' Array of arrays of Byte

5.5.3 Inicializar matrices


Se puede inicializar una variable de matriz como parte de su propia declaracin. Se puede realizar una de las siguientes acciones en la instruccin de declaracin: Especificar la longitud inicial de una o ms de las dimensiones entre parntesis detrs del nombre de la variable, sin asignar un objeto de matriz a la variable. Asignar un objeto de matriz a la variable, mediante la clusula New. Al utilizar una clusula New, sta debe ir seguida de llaves ({}), incluso si estn vacas. Asignar un objeto matriz a la variable y suministrar las longitudes iniciales mediante la clusula New. Asignar un objeto matriz a la variable y suministrar los valores de elementos iniciales mediante la clusula New. Puede suministrar ambas longitudes y valores en la misma clusula New. Si especifica longitudes de dimensin en los parntesis detrs del nombre de la variable, debe utilizar una instruccin de asignacin posterior para asignar un objeto de matriz a la variable. En las siguientes declaraciones de ejemplo se muestra la sintaxis correcta e incorrecta para una variable de matriz unidimensional:
Dim BA(2) As Byte ' Currently contains Nothing (no object). Dim BA(2) As Byte = New Byte() ' INVALID (New after length specified). Dim BA() As Byte = New Byte() {} ' Empty Byte array object. Dim BA() As Byte = New Byte() ' INVALID (missing braces). Dim BA() As Byte = New Byte(2) ' INVALID (missing braces).

El primer argumento representa las filas; el segundo, las columnas. En las matrices de las declaraciones anteriores, los valores del ndice varan entre 0 y 1 tanto para las filas como para las columnas. Al inicializar una variable de matriz escalonada, slo puede especificar las longitudes de dimensin para la matriz del nivel superior. En las siguientes declaraciones de ejemplo se muestra la sintaxis correcta e incorrecta para una matriz de matrices con elementos de tipo Byte:
Dim JB(1)() As Byte ' Matriz de dos matrices de elementos Byte. Dim JB(1)(1) As Byte ' INVALIDO (slo puede especificar el tamao del nivel superior). Dim JB(1)() As Byte = New Byte()() ' INVALIDO (palabra clave New despus del tamao). Dim JB()() As Byte = {New Byte() {}, New Byte() {}} ' Matriz vaca. Dim JB()() As Byte = {New Byte(1) {}, New Byte(1) {}} ' Valores por defecto. Dim JB()() As Byte = {New Byte() {5, 6}, New Byte() {7, 8}}

En la ltima de las declaraciones anteriores, JB se inicializa en dos elementos, JB(0) y JB(1), cada uno de los cuales se inicializa en una matriz de tipo Byte de dos elementos, la primera con los valores de los elementos 5 y 6 y la segunda con los elementos 7 y 8. Lmites de tamao de matriz La longitud de cada dimensin de una matriz se limita al valor mximo del tipo de datos Long, el cual es (2 ^ 64) - 1. El lmite de tamao total de una matriz vara, segn el sistema operativo y la cantidad de memoria disponible. El uso de una matriz que supere la cantidad de RAM disponible en el sistema ser ms lento, ya que las operaciones de lectura y escritura debern realizarse en el disco.

VISUAL BASIC.NET CON SQL SERVER

PGINA 59

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Nota Puesto que en Visual Basic .NET las matrices son objetos, es importante distinguir entre un objeto de matriz y una variable de matriz. Un objeto matriz, una vez creado, no cambia de tamao o rango. Sin embargo, una variable de matriz puede recibir la asignacin de diferentes matrices de distintos tamaos y rangos durante su existencia. comparacin, que determina cul de dos valores es mayor; una operacin lgica, que evala si dos expresiones son ambas verdaderas. Los operadores combinados con elementos de cdigo que devuelven valores como literales o variables forman expresiones o, en el caso del operador de asignacin, instrucciones. El siguiente es un ejemplo de una instruccin que utiliza el operador de asignacin simple (=):
x = 45

5.5.4 Cambiar el tamao de matrices


Una matriz se puede redimensionar en cualquier momento asignando un objeto matriz diferente a la misma variable de matriz, mediante ReDim o una instruccin de asignacin estndar. El nuevo objeto matriz puede tener dimensiones diferentes e incluso distinto rango. Esto ayuda a administrar la memoria de forma ms eficaz. Por ejemplo, es posible utilizar una matriz grande durante un tiempo reducido y, despus, redimensionarla mediante ReDim a un tamao menor. De este modo, se libera memoria que ya no se necesita. Cuando se redimensiona una matriz mediante ReDim, normalmente se pierden los valores existentes. No obstante, se pueden conservar si se incluye la palabra clave Preserve en la instruccin ReDim. Por ejemplo, la siguiente instruccin asigna una nueva matriz, inicializa sus elementos a partir de los elementos correspondientes de MyArray y asigna la nueva matriz a MyArray.
ReDim Preserve MyArray(10, 20)

En el ejemplo anterior, el operador de asignacin realiza la operacin de asignacin: toma el valor del lado derecho del operador y lo asigna a la variable del lado izquierdo. Varios operadores pueden realizar acciones en una expresin o instruccin simples, como se demuestra a continuacin:
x = 45 + y * z ^ 2

En este ejemplo, se realizan las operaciones de la expresin situada a la derecha del operador de asignacin y el valor resultante se asigna a la variable x, situada a la izquierda. No existe lmite en cuanto al nmero de operadores que se pueden combinar en una expresin, pero debe comprender la Prioridad de operadores en Visual Basic para asegurarse de que obtendr los resultados previstos.

5.6.1 Operadores aritmticos


Los operadores aritmticos se utilizan para realizar muchas de las operaciones aritmticas habituales que implican el clculo de valores numricos representados por literales, variables, otras expresiones, llamadas a funciones y propiedades, y constantes.

En una matriz de varias dimensiones, cuando se utiliza Preserve, slo se puede cambiar la ltima dimensin. Si se intenta cambiar cualquiera de las otras dimensiones, se produce un error en tiempo de ejecucin. Si no se conoce el tamao real de una dimensin, se puede utilizar el mtodo GetUpperBound, que devuelve el valor de subndice ms alto de la dimensin especificada. En el siguiente ejemplo, la primera lnea es vlida, pero no la segunda, ya que intenta cambiar la primera dimensin de las dos existentes.
ReDim Preserve Matrix(Matrix.GetUpperBound(0), Matrix.GetUpperBound(1) + 10) ReDim Preserve Matrix(Matrix.GetUpperBound(0) + 10, Matrix.GetUpperBound(1))

5.6.1.1 Operaciones aritmticas


Puede sumar dos valores en una expresin con el operador + o restar un valor de otro con el operador -, como se muestra en los siguientes ejemplos:
Dim x As Integer x = 67 + 34 x = 32 - 12

5.6 Operadores
Un operador es una unidad de cdigo que realiza una operacin sobre uno o ms elementos de cdigo que devuelven valores. Tal operacin puede ser una operacin aritmtica, como una suma o una multiplicacin; una operacin de concatenacin, que combina dos cadenas en una nueva; una operacin de

La negacin tambin utiliza el operador -, pero con una sintaxis algo diferente, como se muestra a continuacin:
Dim x As Integer = 65 Dim y As Integer y = -x

La multiplicacin y la divisin utilizan los operadores * y /, respectivamente, como en estos ejemplos:


Dim y As Double y = 45 * 55.23

VISUAL BASIC.NET CON SQL SERVER

PGINA 60

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN
y = 32 / 23

La exponenciacin utiliza el operador ^, como se muestra a continuacin:


Dim z As Double z = 23 ^ 3 ' z equals the cube of 23.

inesperada de datos o de precisin. Por este motivo, se recomienda utilizar Option Strict On para escribir cdigo de produccin.

La divisin de enteros se lleva a cabo con el operador \. La divisin de enteros devuelve el nmero de veces que un entero puede dividirse exactamente en otro. Con este operador, slo se pueden utilizar tipos enteros (Byte, Short, Integer y Long). Todos los dems tipos deben convertirse antes a tipo integral. A continuacin se muestra un ejemplo de una divisin de enteros:
Dim k As Integer k = 23 \ 5 ' k = 4

5.6.2 Operadores Concatenacin


Los operadores de concatenacin combinan varias cadenas en una sola. Hay dos operadores de concatenacin, + y &; ambos llevan a cabo la operacin de concatenacin bsica, como se muestra a continuacin:
Dim x As String x = "Con" & "caten" & "ation" ' x equals "Concatenation". x = "Con" + "caten" + "ation" ' x equals "Concatenation".

El mdulo aritmtico se calcula con el operador Mod. Este operador devuelve el resto una vez que se divide el divisor por el dividendo un nmero integral de veces. Si tanto el divisor como el dividendo son tipos integrales, el valor devuelto es integral. Si el divisor y el dividendo son tipos de punto flotante, el valor devuelto es una variable de punto flotante. Dos ejemplos ilustran este comportamiento:
Dim x As integer = 100 Dim y As Integer = 6 Dim z As Integer z = x Mod y ' z equals 4. Dim a As Double = 100.3 Dim b As Double = 4.13 Dim c As Double c = a Mod b ' c equals 1.18.

Estos operadores tambin concatenan String, como en el ejemplo siguiente:


Dim x As String = "abc" Dim y As String = "def" Dim z As String z = x & y ' z equals "abcdef". z = x + y ' z equals "abcdef".

variables

5.6.1.2 Seguridad de tipos


Normalmente, los operandos deben ser del mismo tipo. Por ejemplo, si agrega una variable Integer, debe agregarla a otra variable Integer, y la variable a la que se asigna el valor debe ser de tipo Integer tambin. Una buena forma de garantizar la seguridad de tipos consiste en utilizar Option Strict. Si el valor de Option Strict es On, Visual Basic .NET realiza automticamente conversiones de seguridad de tipos. De esta forma, si intenta agregar una variable Integer a una variable Double y asignar el valor a una variable Double, la operacin contina normalmente. Por otra parte, las conversiones no seguras o de restriccin, causan un error del compilador. Por tanto, si intenta agregar una variable Integer a una variable Double y asignar el valor a la variable Integer, se produce un error del compilador, porque una variable Double no se puede convertir implcitamente al tipo Integer. No obstante, si el valor de Option Strict es Off, se permite realizar estas conversiones de restriccin implcitas, aunque pueden producir la prdida

Si el valor de Option Strict es On, el operador + requiere explcitamente cadenas para las operaciones de concatenacin. Tambin realiza operaciones aritmticas con operandos numricos cuando el valor de Option Strict es On. No obstante, si el valor de Option Strict es Off, el operador + admite una amplia variedad de conversiones implcitas para operaciones de concatenacin. El operador & slo se define para operandos de tipo String y siempre ampla sus operandos a String, independientemente de la configuracin de Option Strict. El operador & est recomendado para la concatenacin de cadenas, porque est definido exclusivamente para cadenas y reduce las posibilidades de generar una conversin no deseada.

5.6.3 Operadores relacionales o de comparacin


Los operadores de comparacin comparan dos expresiones y devuelven un valor Boolean que representa el resultado de la comparacin. Existen operadores para comparar valores numricos, operadores para comparar cadenas y operadores para comparar objetos. Los tres tipos de operadores se describen a continuacin.

5.6.3.1 Comparar valores numricos


Para comparar valores numricos se utilizan seis operadores de comparacin numrica. En la siguiente

VISUAL BASIC.NET CON SQL SERVER

PGINA 61

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN tabla se muestran los operadores y un ejemplo de la condicin que prueba cada uno. Operador Condicin que Ejemplos prueba = (Igualdad) Es el valor que 23 = representa la False 23 = primera True expresin igual 23 = que el valor que False representa la segunda?
33 23 ' '

5.6.3.2 Comparar cadenas


Para comparar cadenas se utiliza el operador Like, as como los operadores de comparacin numrica. El operador Like permite especificar un modelo; despus se compara la cadena con el modelo y, si coincide, el resultado es True. De lo contrario, el resultado es False. Los operadores numricos permiten comparar valores String basndose en el tipo de ordenacin:
"73" < "9" ' This result is True.

12 '

Es el valor que 23 <> 33 <> (Desigualdad) representa la True 23 <> 23 primera False expresin no 23 <> 12 igual que el True valor que representa la segunda? < (Less than) Es el valor que 23 < representa la True 23 < primera False expresin 23 < menor que el False valor que representa la segunda? > (Mayor Es el valor que 23 > que) representa la False 23 > primera False expresin 23 > mayor que el True valor que representa la segunda?
33 23

' ' '

El resultado es True porque el primer carcter de la primera cadena se ordena antes que el primer carcter de la segunda cadena. Si los primeros caracteres fueran iguales, la comparacin continuara con el siguiente carcter de las dos cadenas, y as sucesivamente. La igualdad de cadenas tambin se puede probar mediante el operador de igualdad, como en este ejemplo:
"734" = "734" ' The result is True.

' '

12 '

En este ejemplo, las dos cadenas se comparan directamente y, puesto que son iguales, se devuelve True. Si una cadena es un prefijo de otra, como "aa" y "aaa", la cadena ms larga se ordena despus de la ms corta. Por tanto, la siguiente expresin es verdadera (True):
"aaa" > "aa"

El criterio de ordenacin se basar en una comparacin binaria o una comparacin textual en funcin del valor de Option Compare.
33 23 ' '

5.6.3.3 Comparar objetos


Puede utilizar el operador Is para determinar si dos variables de objeto hacen referencia a la misma instancia de un objeto. Por ejemplo:
Dim x As MyClass Dim y As New MyClass() x=y If x Is y Then ' Insert code to continue program execution.

12 '

<= (Menor o Es el valor que 23 <= 33 igual que) representa la True 23 <= 23 primera True expresin 23 <= 12 menor o igual False que el valor que representa la segunda? >= (Mayor o Es el valor que 23 >= 33 igual que) representa la False 23 >= 23 primera True expresin 23 >= 12 mayor o igual True que el valor que representa la segunda?

' ' '

En este ejemplo, la evaluacin de x Is y devuelve True, porque las dos variables hacen referencia a la misma instancia. Compare este resultado con el del ejemplo siguiente:
Dim x As New MyClass() Dim y As New MyClass() If x Is y then ' Insert code to continue program execution.

' ' '

En este ejemplo, la evaluacin de x Is y devuelve False, puesto que aunque las variables son del mismo tipo, hacen referencia a instancias diferentes de ese tipo. Para probar si un objeto es de un tipo concreto se utiliza el operador TypeOf...Is. . La sintaxis es la siguiente: PGINA 62

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN
TypeOf <object expression> Is <TypeName>

Cuando TypeName especifica un tipo de interfaz, el operador TypeOf ... Is devuelve True si el objeto implementa el tipo de interfaz. Cuando TypeName es un tipo de clase, el operador devuelve True (verdadero) si el objeto es una instancia de la clase especificada o una instancia que se deriva de la especificada. Por ejemplo:
Dim x As Button x = New Button() If TypeOf x Is Control Then ' Insert code to continue program execution.

Puesto que el tipo de x es Button, y Button hereda de Control, la expresin TypeOf x Is Control se evala como True.

5.6.4 Operadores lgicos


Los operadores lgicos comparan expresiones Boolean y devuelven un resultado Boolean. Los operadores And, Or, AndAlso, OrElse y Xor aceptan dos operandos, mientras que el operador Not slo acepta un operando. El operador Not realiza la negacin lgica de una expresin Boolean. En trminos simples, proporciona lo contrario de la expresin que evala. Si la evaluacin de la expresin devuelve True, Not proporciona False; si devuelve False, Not proporciona True. A continuacin se muestra un ejemplo: Dim x As Boolean x = Not 23 > 12 ' x equals False. x = Not 23 > 67 ' x equals True. El operador And realiza la conjuncin lgica de dos expresiones Boolean. Es decir, si la evaluacin de ambas expresiones es True, el operador And devuelve True. Si al evaluar una o las dos expresiones se obtiene False, And devuelve False. El operador Or realiza la disyuncin lgica de dos expresiones Boolean. Si la evaluacin de alguna expresin devuelve True, Or devuelve True. Si la evaluacin de alguna expresin devuelve True, Or devuelve False. Xor realiza la exclusin lgica en dos expresiones. Si la evaluacin de una de las expresiones devuelve True (pero no las dos), Xor devuelve True. Si la evaluacin devuelve True o False para las dos expresiones, Xor devuelve False. A continuacin se muestran ejemplos de uso de los operadores And, Or y Xor: Dim x As Boolean x = 23 > 12 And 12 >4 ' x = True

x = 12 > 23 And 12 > 4 ' x = False x = 23 > 12 Or 4 > 12` ' x = True x = 23 > 45 Or 4 > 12 ' x = False x = 23 > 45 Xor 12 > 4 ' x = True x = 23 > 12 Xor 12 > 4 ' x = False x = 12 > 23 Xor 4 > 12 ' x = False Nota Adems de ser operadores lgicos, Not, Or, And y Xor tambin realizan operaciones aritmticas bit a bit cuando se utilizan en valores numricos. Puede encontrar informacin sobre esta funcionalidad en Operadores aritmticos. El operador AndAlso es muy similar al operador And, ya que tambin realiza la conjuncin lgica de dos expresiones Boolean. La diferencia clave entre AndAlso y And es que AndAlso muestra comportamiento de corto-circuito. Si el valor de la primera expresin evaluada de una expresin AndAlso es False, no se evaluar la segunda expresin y se devolver False para la expresin AndAlso. De manera similar, el operador OrElse realiza la disyuncin lgica de evaluacin "cortocircuitada" de dos expresiones Boolean. Si la evaluacin de la primera expresin de una expresin OrElse devuelve True, no se evaluar la segunda expresin y se devolver True para la expresin OrElse. A continuacin se muestran algunos ejemplos que ilustran la diferencia entre And, Or y sus equivalentes: 12 > 45 And MyFunction(4) ' MyFunction() is called. 12 > 45 AndAlso MyFunction(4) ' MyFunction() is not called. 45 > 12 Or MyFunction(4) ' MyFunction is called. 45 > 12 OrElse MyFunction(4) ' MyFunction is not called En el primer ejemplo, se llama a MyFunction() aunque 12 > 45 devuelve False, debido a que no se "cortocircuita" la evaluacin de And. En el segundo ejemplo, no se llama a MyFunction porque 12 > 45 devuelve False, con lo cual AndAlso "cortocircuita" la evaluacin de la segunda expresin. En el tercer ejemplo, se llama a MyFunction aunque 45 > 12 devuelve True, debido a que no se "cortocircuita" la evaluacin de Or. En el cuarto ejemplo, no se llama a MyFunction porque 45 > 12 devuelve True, con lo cual OrElse "cortocircuita" la evaluacin de la segunda expresin. Nota Aunque And y Or admiten operaciones bit a bit con valores numricos, AndAlso y OrElse no lo hacen. PGINA 63

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN A menudo, desea que la ejecucin de las operaciones se realice en un orden diferente del que determina la prioridad de operador. Considere este ejemplo:
x=z*y+4

5.6.5 Combinacin operadores

eficaz

de

Las expresiones complejas pueden contener muchos operadores diferentes. Considere la siguiente instruccin:
x = (45 * (y + z)) ^ (2 / 85) * 5 + z

La creacin de expresiones complejas como stas requiere comprender a fondo las reglas de prioridad de operador. En este tema, que le ayudar a construir expresiones eficientes, se presupone que est familiarizado con las reglas de prioridad de operador.

5.6.5.1 Expresiones numricas


En expresiones numricas como la del ejemplo anterior, los operadores siguen un estricto modelo de prioridad. Primero se lee cualquier variable o propiedad existente y se ejecutan las posibles llamadas a funciones que devuelven valores. Una vez recuperados estos valores, se evalan las expresiones segn las reglas de prioridad de operador. Primero se realiza la exponenciacin (^), despus la negacin (-). stos operadores van seguidos de la multiplicacin (*) y la divisin (/), que tienen la misma prioridad de operador y, por tanto, se ejecutan en el orden textual en que aparecen de izquierda a derecha. La divisin de enteros (\) se produce a continuacin, seguida del mdulo aritmtico (Mod). Despus se realizan la suma (+) y la resta (-); los Operadores lgicos/bit a bit se evalan en ltimo lugar. Cuando una expresin incluye operadores de igual prioridad, la evaluacin se realiza de izquierda a derecha en el orden en que aparezcan.

En este ejemplo, z se multiplica por y, y a continuacin el resultado se suma a 4. Pero, qu ocurre si se desean sumar y y 4 antes de multiplicar por z? En tal caso, puede anular la prioridad de operador mediante parntesis. Si escribe una expresin entre parntesis, fuerza a que dicha expresin se evale primero, independientemente de la prioridad de operador. As, para forzar a la expresin anterior a que evale primero la suma, volvera a escribir el ejemplo de la siguiente manera:
x = z * (y + 4)

Ahora el valor de y se suma a 4 y esa suma se multiplica por z. Puede anidar expresiones en mltiples niveles para forzar ms la prioridad. A las expresiones con mayor profundidad de anidamiento se les concede prioridad principal, seguidas de las expresiones de menor profundidad de anidamiento y as sucesivamente. Observe el ejemplo siguiente:
x = (z * 4) ^ (y * (z + 2))

Aqu, z + 2 tiene prioridad principal, y despus tienen prioridad las dems expresiones entre parntesis. La exponenciacin, que generalmente tiene mayor prioridad que la suma o la multiplicacin, se evala en ltimo lugar debido a que las otras expresiones estn escritas entre parntesis.

5.7 Flujo de control


Si se deja libre, un programa avanza por sus instrucciones de principio a fin. Algunos programas muy simples pueden escribirse slo con este flujo unidireccional. No obstante, la mayor eficacia y utilidad de cualquier lenguaje de programacin se deriva de la posibilidad de cambiar el orden de ejecucin con instrucciones de control y bucles. Las instrucciones de flujo de control permiten regular el flujo de ejecucin de un programa. Mediante instrucciones de control, puede escribir cdigo de Visual Basic para tomar decisiones y repetir acciones. Otra instruccin muy til es With...End With, que permite ejecutar una serie de instrucciones sin necesidad de volver a calificar un objeto.

5.6.5.2 Expresiones booleanas


Las expresiones Boolean pueden ser an ms complejas que las expresiones numricas, dado que combinan operadores aritmticos, operadores de comparacin y operadores lgicos. A continuacin se muestra un ejemplo que contiene las tres clases de operadores:
x + y > z And z + y < w

En este ejemplo, las operaciones aritmticas se realizan mediante el operador +, las de comparacin con los operadores > y <, y las lgicas con el operador And. Cuando se evalan expresiones con diferentes clases de operadores, normalmente la prioridad estndar de operadores determina el orden de la operacin.

5.6.5.3 Expresiones entre parntesis

5.7.1 Estructuras de decisin


Visual Basic permite probar condiciones y realizar diferentes operaciones en funcin de los resultados de PGINA 64

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN la prueba. Puede comprobar si una condicin es verdadera o falsa, los distintos valores de una expresin o las diferentes excepciones que se generan al ejecutar una serie de instrucciones. Las instrucciones de decisin que admite Visual Basic incluyen: If...Then If...Then...Else Select...Case Try...Catch...Finally Puede utilizar If...Then...Else con la instruccin Else para definir dos bloques de instrucciones ejecutables. Si el valor de la condicin es True, se ejecuta un bloque, y si es False, se ejecuta el otro.
Dim AlertLabel As New System.Windows.Forms.Label ' ... Sub AlertUser(ByVal Value As Long) If Value = 0 Then AlertLabel.ForeColor = Color.Red AlertLabel.Font = New Font(AlertLabel.Font, _ FontStyle.Bold Or FontStyle.Italic) Else AlertLabel.Forecolor = Color.Black AlertLabel.Font = New Font(AlertLabel.Font, _ FontStyle.Regular) End If End Sub

5.7.1.1 If...Then...Else (Instrucciones)


Se pueden utilizar instrucciones If...Then...Else para ejecutar una instruccin especfica o un bloque de instrucciones dependiendo del valor de tipo Boolean de una condicin. Generalmente, la condicin es el resultado de comparar dos valores, pero tambin puede ser cualquier expresin que da como resultado un valor de tipo Boolean (True o False). Esto incluye los valores de otros tipos de datos, como los numricos, que han sido convertidos a valores de tipo Boolean. Ejecutar instrucciones si una condicin es True Para ejecutar slo una instruccin cuando una condicin es True, se puede utilizar la sintaxis de una sola lnea de If...Then...Else omitiendo las instrucciones Else y End If, como muestra el ejemplo siguiente:
Sub FixDate() Dim MyDate As Date = #2/13/1973# If MyDate < Now Then MyDate = Now End Sub

Probar condiciones adicionales si la primera condicin es False Puede agregar una o ms instrucciones ElseIf a If...Then...Else para probar condiciones adicionales si la primera condicin es False. Por ejemplo, el siguiente procedimiento Function calcula una bonificacin en la nmina basndose en el nivel de rendimiento. La instruccin que sigue a la instruccin Else slo se ejecutar si el valor de las condiciones de todas las instrucciones If y ElseIf es False.
Function Bonus(ByVal Performance As Integer, ByVal Salary As Decimal) _ As Decimal If Performance = 1 Then Return Salary * 0.1 ElseIf Performance = 2 Then Return Salary * 0.09 ElseIf Performance = 3 Then Return Salary * 0.07 Else Return 0 End If End Function

Para ejecutar ms de una lnea de cdigo cuando la condicin es True se utiliza la sintaxis de varias lneas, que incluye la instruccin End If. Si no existe cdigo que ejecutar cuando la condicin es False, se omite la instruccin Else, como se muestra en el ejemplo siguiente:
Dim AlertLabel As New System.Windows.Forms.Label ' ... Sub AlertUser(ByVal Value As Long) If Value = 0 Then AlertLabel.ForeColor = Color.Red AlertLabel.Font = New Font(AlertLabel.Font, _ FontStyle.Bold Or FontStyle.Italic) End If End Sub

Ejecutar algunas instrucciones si una condicin es True y otras si es False

Visual Basic prueba las condiciones en el orden en que aparecen en las pruebas de las instrucciones If...Then...Else hasta que encuentra una condicin True o una instruccin Else, cuando esto ocurre ejecuta el bloque de instrucciones correspondiente. La ejecucin realiza entonces una bifurcacin al final del bloque If...Then...Else. Puede existir un nmero arbitrario de instrucciones ElseIf o ninguna. Puede incluirse u omitirse una instruccin Else independientemente de que existan instrucciones ElseIf. Las instrucciones If...Then...Else se pueden anidar a tantos niveles como sea necesario. No obstante, es PGINA 65

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN posible que en favor de la legibilidad, desee utilizar instrucciones Select...Case en lugar de varios niveles de instrucciones If...Then...Else anidadas o muchas instrucciones ElseIf.

5.7.1.3 Try...Catch...Finally (Instrucciones)


Puede utilizar la instruccin Try...Catch...Finally para el control estructurado de excepciones. As puede ejecutarse un bloque concreto de instrucciones si se produce una excepcin especificada mientras se ejecuta el cdigo. Cuando esto ocurre, se dice que el cdigo provoca la excepcin, que se detecta con la instruccin Catch correspondiente. La ejecucin entra en el bloque Try...Catch...Finally con el bloque de instrucciones que sigue a la instruccin Try. Si Visual Basic finaliza este bloque sin que se genere una excepcin, busca la instruccin opcional Finally al final del bloque. Si ha proporcionado la instruccin Finally, Visual Basic ejecuta el bloque de instrucciones que est a continuacin de dicha instruccin. En cualquier caso, a continuacin el control se transfiere a la instruccin que sigue a la instruccin End Try. Si se produce una excepcin, Visual Basic examina las instrucciones Catch en el orden en que aparecen dentro de Try...Catch...Finally. Si encuentra una instruccin Catch que controla la excepcin generada, sta ejecuta el bloque de instrucciones correspondiente. Cuando termina de ejecutar el bloque Catch, ejecuta el bloque Finally si existe. Despus, la ejecucin contina en la instruccin que sigue a End Try. Una instruccin Catch controla una excepcin que es del mismo tipo que el declarado en la instruccin Catch o de un tipo derivado de ste. Si se incluye una instruccin Catch que no especifica un tipo de excepcin, sta controlar cualquier excepcin derivada de la clase Exception. Si tal instruccin es la ltima instruccin Catch, puede detectar cualquier excepcin no controlada en los bloques Catch anteriores. Una instruccin Catch puede incluir opcionalmente la clusula When, independientemente de que especifique o no un tipo de excepcin. La clusula When va seguida de una expresin que debe poder convertirse a tipo Boolean. La excepcin slo se controla si es del tipo correcto y la expresin When se evala como True, como en el ejemplo siguiente:
Catch Exc As System.NotSupportedException When SupportCheck >= 1

5.7.1.2 Select...Case (Instrucciones)


Cuando compara una misma expresin con varios valores diferentes, puede utilizar las instrucciones Select...Case como alternativa a las instrucciones If...Then...Else. A diferencia de las instrucciones If y ElseIf, que pueden evaluar una expresin diferente en cada instruccin, la instruccin Select evala una nica expresin una sola vez y la utiliza para cada comparacin. Visual Basic compara el valor de la expresin con los valores de las instrucciones Case en el orden en que stos aparecen en el bloque Select...Case. Si encuentra una coincidencia o una instruccin Case Else, ejecuta el bloque de instrucciones correspondiente. En cualquier caso, despus ejecuta el cdigo que sigue a la instruccin End Select. Puede utilizarse cualquier nmero de instrucciones Case e incluirse u omitirse una instruccin Case Else. En el ejemplo siguiente se usa Select...Case para evaluar el nivel de rendimiento que se pasa al procedimiento Function. Observe que cada instruccin Case puede contener ms de un valor, un intervalo de valores o una combinacin de valores y operadores de comparacin. Cuando una instruccin Case contiene ms de un valor, el bloque Case se ejecuta si cualquiera de los valores coincide con el valor de la expresin de instruccin Select.
Function Bonus(ByVal Performance As Integer, ByVal Salary As Decimal) _ As Decimal Select Performance Case 1 ' Performance is 1. Return Salary * 0.1 Case 2, 3 ' Performance is 2 or 3. Return Salary * 0.09 Case 5 To 7 ' Performance is 5, 6, or 7. Return Salary * 0.07 Case 4, 8 To 10 ' Performance is 4, 8, 9, or 10. Return Salary * 0.05 Case Is < 15 ' Performance is 11, 12, 13, or 14. Return 100 Case Else ' Performance is < 1 or > 14. Return 0 End Select End Function

Si se incluye la instruccin opcional Finally, el bloque de instrucciones correspondiente es siempre el ltimo cdigo que se ejecuta inmediatamente antes de que el control abandone Try...Catch...Finally. Esto es as, aunque se produzca una excepcin no controlada o se ejecute una instruccin Exit Try.

VISUAL BASIC.NET CON SQL SERVER

PGINA 66

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Puede utilizarse cualquier nmero de instrucciones Catch e incluirse u omitirse una instruccin Finally. No obstante, debe utilizarse al menos una instruccin Catch o una instruccin Finally. No es posible bifurcar fuera de un bloque Try, en un bloque Catch o dentro o fuera de un bloque Finally. Puede bifurcar de un bloque Catch a un bloque Try asociado con ese bloque Catch. Por ejemplo, si una construccin Try...Catch...Finally est anidada dentro de otra, un bloque Catch puede bifurcar al bloque Try de su propio nivel de anidamiento, pero no a ningn otro bloque Try. En el ejemplo siguiente, Try...Catch...Finally intenta calcular la fecha y la hora de 100 aos exactamente a partir del valor que se proporciona en la variable GivenDate de Object:
Dim GivenDate As Object ' Should contain date/time information. Dim NextCentury As Date Try NextCentury = DateAdd("yyyy", 100, GivenDate) Catch ThisExcep As System.ArgumentException ' At least one argument has an invalid value. Catch ThisExcep As ArgumentOutOfRangeException ' The result is later than December 31, 9999. Catch ThisExcep As InvalidCastException ' GivenDate cannot be interpreted As a date/time. Catch ' An unforeseen exception has occurred. Finally ' This block is always executed before leaving. End Try

While Do...Loop For...Next For Each...Next

5.7.2.1 While (Instruccin)


Se puede utilizar la instruccin While para ejecutar un bloque de instrucciones, un nmero de veces indefinido, dependiendo del valor de tipo Boolean de una condicin. Las instrucciones se repiten mientras la condicin sea True. Generalmente, la condicin es el resultado de comparar dos valores, pero tambin puede ser cualquier expresin que da como resultado un valor de tipo Boolean (True o False). Esto incluye los valores de otros tipos de datos, como los numricos, que han sido convertidos a valores de tipo Boolean. La instruccin While comprueba siempre la condicin antes de iniciar el bucle. La ejecucin en bucle contina mientras el valor de la condicin permanezca en True. En el ejemplo siguiente, el procedimiento CheckWhile comprueba la condicin antes de entrar en el bucle. Si Number se hubiera inicializado en 6 y no en 10, las instrucciones del bucle nunca se ejecutaran. Sub CheckWhile() Dim Counter As Integer = 0 Dim Number As Integer = 10 While Number > 6 Number = Number - 1 Counter = Counter + 1 End While MsgBox("The loop ran " & Counter & " times.") ' Runs 4 times. End Sub Puede transferirse el control fuera de una instruccin While mediante la instruccin Exit While. Un uso de esta instruccin consiste en comprobar una condicin que pudiera ocasionar un bucle sin fin; es decir, un bucle que pudiera ejecutarse un nmero extremadamente elevado de veces e incluso infinitamente. Si la condicin es True, utilice Exit While para salir. Si la condicin es False, el bucle contina ejecutndose. En el siguiente ejemplo se asigna a Number un valor que podra ocasionar que el bucle se ejecutara ms de 2 ^ 31 veces. La instruccin If realiza esta comprobacin y sale si existe el valor para evitar un bucle sin fin. Sub ExitWhileExample() Dim Counter As Integer = 0 PGINA 67

Las excepciones que se pueden prever a partir de la funcin DateAdd se pueden controlar en los tres primeros bloques Catch, adems se puede tratar cualquier excepcin imprevista en el ltimo bloque Catch. Con independencia de lo que suceda, el bloque Finally es siempre el cdigo que se ejecuta en ltimo lugar antes de abandonar Try...Catch...Finally. Si ThisExcep no aparece en una instruccin de declaracin como Dim, la instruccin Catch con la clusula As sirve como declaracin de la variable de excepcin.

5.7.2 Estructuras de bucles


Las estructuras de bucles permiten ejecutar una o ms lneas de cdigo repetitivamente. Una instruccin puede repetirse hasta que una condicin sea verdadera, hasta que sea falsa, un nmero de veces especificado o una vez para cada objeto de una coleccin. Las estructuras de bucles que admite Visual Basic incluyen:

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Dim Number As Integer = 8 While Number <> 10 If Number < 0 Then Exit While Number = Number - 1 Counter = Counter + 1 End While MsgBox("The loop ran " & Counter & " times.") ' Runs 9 times. End Sub Nota Para detener un bucle sin fin, presione ESC o CTRL+INTER. MsgBox("The loop ran " & Counter & " times.") ' Runs 4 times. End Sub ' ... Sub CheckWhileLast() Dim Counter As Integer = 0 Dim Number As Integer = 5 Do Number = Number - 1 Counter = Counter + 1 Loop While Number > 6 MsgBox("The loop ran " & Counter & " times.") ' Runs 1 time. End Sub Repetir instrucciones hasta que una condicin sea True Hay dos maneras de utilizar la palabra clave Until para comprobar una condicin en un bucle Do. Puede comprobar la condicin antes de entrar en el bucle o comprobarla despus de que el bucle se haya ejecutado al menos una vez. La ejecucin en bucle contina mientras la condicin permanezca en False. En el ejemplo siguiente, el procedimiento CheckUntilFirst comprueba la condicin antes de entrar en el bucle. Si Number se hubiera inicializado en 15 y no en 20, las instrucciones del bucle nunca se ejecutaran. En el procedimiento CheckWhileLast, las instrucciones del bucle se ejecutan una vez antes de comprobar la condicin, que es False en la primera prueba. Sub CheckUntilFirst() Dim Counter As Integer = 0 Dim Number As Integer = 20 Do Until Number = 15 Number = Number - 1 Counter = Counter + 1 Loop MsgBox("The loop ran " & Counter & " times.") ' Runs 5 times. End Sub ' ... Sub CheckUntilLast() Dim Counter As Integer = 0 Dim Number As Integer = 20 Do Number = Number - 1 Counter = Counter + 1 Loop Until Number = 15

5.7.2.2 Do...Loop (Instrucciones)


Puede utilizar instrucciones Do...Loop para ejecutar un bloque de instrucciones un nmero de veces indefinido dependiendo del valor de tipo Boolean de una condicin. Las instrucciones pueden repetirse mientras el valor de la condicin sea True o hasta que sea True. Generalmente, la condicin es el resultado de comparar dos valores, pero tambin puede ser cualquier expresin que da como resultado un valor de tipo Boolean (True o False). Esto incluye los valores de otros tipos de datos, como los numricos, que han sido convertidos a valores de tipo Boolean. Repetir instrucciones mientras una condicin es True Hay dos maneras de utilizar la palabra clave While para comprobar una condicin en un bucle Do. Puede comprobar la condicin antes de entrar en el bucle o comprobarla despus de que el bucle se haya ejecutado al menos una vez. La ejecucin en bucle contina mientras el valor de la condicin permanezca en True. En el ejemplo siguiente, el procedimiento CheckWhileFirst comprueba la condicin antes de entrar en el bucle. Si Number se hubiera inicializado en 6 y no en 10, las instrucciones del bucle nunca se ejecutaran. En el procedimiento CheckWhileLast, las instrucciones del bucle se ejecutan una vez antes de comprobar la condicin, que es False en la primera prueba. Sub CheckWhileFirst() Dim Counter As Integer = 0 Dim Number As Integer = 10 Do While Number > 6 Number = Number - 1 Counter = Counter + 1 Loop

VISUAL BASIC.NET CON SQL SERVER

PGINA 68

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN MsgBox("The loop ran " & Counter & " times.") ' Runs 5 times. End Sub Salir de un bucle Do desde dentro del bucle Puede transferirse el control fuera de un bucle Do mediante la instruccin Exit Do. Un uso de esta instruccin consiste en comprobar una condicin que pudiera ocasionar un bucle sin fin; es decir, un bucle que pudiera ejecutarse un nmero extremadamente elevado de veces e incluso infinitamente. Si la condicin es True, utilice Exit Do para salir. Si la condicin es False, el bucle contina ejecutndose. En el siguiente ejemplo se asigna a Number un valor que podra ocasionar que el bucle se ejecutara ms de 2 ^ 31 veces. La instruccin If realiza esta comprobacin y sale si existe el valor para evitar un bucle sin fin. Sub ExitDoExample() Dim Counter As Integer = 0 Dim Number As Integer = 8 Do Until Number = 10 If Number <= 0 Then Exit Do Number = Number - 1 Counter = Counter + 1 Loop MsgBox("The loop ran " & Counter & " times.") ' Runs 8 times. End Sub Nota Para detener un bucle sin fin, presione ESC o CTRL+INTER. Reemplazar la instruccin Continue Visual Basic .NET no admite la instruccin Continue de anteriores versiones de Visual Basic. Sin embargo, es posible obtener la misma funcionalidad si se utiliza una etiqueta de instruccin en la instruccin Loop y se bifurca hacia ella desde el interior del bucle: Dim LoopCounter As Integer = 0 Do While LoopCounter < 100 LoopCounter += 1 Dim SkipToNextIteration As Boolean ' Local to this loop. ' Processing, which might change value of SkipToNextIteration. If SkipToNextIteration = True Then GoTo EndOfLoop ' More processing if SkipToNextIteration was still False. EndOfLoop: Loop ' Acts like Continue.

5.7.2.3 For...Next (Instrucciones)


Los bucles Do funcionan bien cuando no se sabe de antemano cuntas veces se necesitan ejecutar las instrucciones en el bucle. No obstante, si tiene previsto ejecutar el bucle un nmero especfico de veces, un bucle For...Next es una opcin mejor. A diferencia de un bucle Do, un bucle For utiliza una variable denominada counter cuyo valor aumenta o disminuye cada vez que se repite el bucle. La sintaxis es la siguiente:
For counter [ As datatype ] = start To end [ Step step ] ' Statement block to be executed for each value of counter. Next [ counter ]

La variable counter debe ser un tipo de datos numrico que admita los operadores mayor o igual que (>=), menor o igual que (<=) y suma (+); generalmente es de tipo Integer. Los valores de iteracin start, end, y step son expresiones que deben evaluarse como tipos de datos que se amplan al tipo de counter. Normalmente tambin son Integer. El valor opcional step puede ser positivo o negativo. Si se omite, se considera que es 1. Si counter no est declarada fuera del bucle, puede utilizar la clusula As para declararla como parte de la instruccin For. Al iniciarse la ejecucin del bucle For...Next, Visual Basic evala start, end y step. Despus asigna start a counter. Antes de ejecutar el bloque de instrucciones, compara counter con end. Si counter ya ha superado el valor final, el bucle For finaliza y el control pasa a la instruccin que sigue a Next. En caso contrario, se ejecuta el bloque de instrucciones. Cada vez que Visual Basic encuentra la instruccin Next, incrementa el contador segn el valor de step y vuelve a la instruccin For. Vuelve a comparar el contador con end, y una vez ms ejecuta el bloque o termina el bucle dependiendo del resultado. Este proceso contina hasta que el contador supera end o se ejecuta una instruccin Exit For. El bucle no termina hasta que counter haya superado el valor final. Si counter es igual a end, el bucle contina. La comparacin que determina si se ejecuta el bloque es counter <= end si step es positivo y counter >= end si step es negativo. Opcionalmente, puede especificarse counter en la instruccin Next. De este modo mejora la legibilidad del programa. La variable que especifique debe ser igual a la que aparece en la instruccin For. El procedimiento siguiente preestablece todos los elementos de una matriz en 128. La instruccin For especifica la variable contadora I y sus valores start y PGINA 69

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN end. La instruccin Next incrementa el contador en 1, porque no se proporciona step.
Sub Preset(ByRef A() As Integer) Dim I As Integer For I = 0 To UBound(A) A(I) = 128 Next I End Sub

si detecta una condicin que hace que sea innecesario o no se pueda continuar la iteracin, como puede ser un valor errneo o una solicitud de finalizacin. Asimismo, si detecta una excepcin en Try...Catch...Finally, puede utilizar Exit For al final del bloque Finally.

Los valores de iteracin start, end y step slo se evalan una vez, antes de iniciarse el bucle. Si el bloque de instrucciones cambia end o step, estos cambios no afectan a la iteracin del bucle. En el ejemplo anterior, la funcin UBound slo se invoca cuando la instruccin For se ejecuta por primera vez. Si el bloque de instrucciones hubiera cambiado posteriormente la longitud de la matriz A, el bucle For seguira utilizando la longitud original como valor final, puesto que no vuelve a llamar a la funcin UBound. Aumentar y disminuir la variable de contador Mediante la palabra clave Step, puede aumentar o disminuir el contador en el valor que especifique. En el siguiente ejemplo, la variable de contador J se incrementa en 2 cada vez que se repite el bucle. Cuando finaliza el bucle, Total es la suma de 2, 4, 6, 8 y 10.
Sub TwosTotal() Dim J, Total As Integer For J = 2 To 10 Step 2 Total = Total + J Next J MsgBox("The total is " & Total) End Sub

5.7.2.4 For Each...Next (Instrucciones)


El bucle For Each...Next es parecido al bucle For...Next, pero ejecuta el bloque de instrucciones una vez por cada elemento de una coleccin, en vez de un nmero de veces especificado. La sintaxis es la siguiente:
For Each elementvariable [ As datatype ] In collection ' Statement block to be executed for each elementvariable. Next [ elementvariable ] value of

Para disminuir la variable de contador, utilice un valor negativo para Step. Cuando haga esto, debe especificar un valor final que sea menor que el valor de inicio. En el siguiente ejemplo, la variable de contador N disminuye en 2 cada vez que se repite el bucle. Cuando finaliza el bucle, Total es la suma de 16, 14, 12, 10, 8, 6 y 4.
Sub NewTotal() Dim N, Total As Integer For N = 16 To 4 Step -2 Total = Total + N Next N MsgBox("The total is " & Total) End Sub

Los elementos de collection pueden ser de cualquier tipo de datos. El tipo de datos de elementvariable ha de ser tal que cada elemento de la coleccin pueda ser convertido al mismo. Si elementvariable no est declarada fuera del bucle, puede utilizar la clusula As para declararla como parte de la instruccin For Each. Para cada iteracin del bucle, Visual Basic establece la variable elementvariable en uno de los elementos de la coleccin y ejecuta el bloque de instrucciones. Cuando todos los elementos de la coleccin han sido asignados a elementvariable, el bucle For Each finaliza y el control pasa a la instruccin que sigue a Next. Opcionalmente, puede especificarse la variable de elemento en la instruccin Next. De este modo mejora la legibilidad del programa. La variable que especifique debe ser igual a la que aparece en la instruccin For Each. El siguiente procedimiento acepta un formulario y establece el color de fondo de cada control del formulario en azul claro:
Sub LightBlueBackground(ByVal ThisForm As System.Windows.Forms.Form) Dim ThisControl As System.Windows.Forms.Control For Each ThisControl In ThisForm.Controls ThisControl.BackColor = System.Drawing.Color.LightBlue Next ThisControl End Sub

Salir de un bucle For...Next antes de que el contador supere su valor final Puede salir de un bucle For...Next antes de que el contador supere su valor final utilizando la instruccin Exit For. Por ejemplo, puede desear salir de un bucle

La coleccin debe ser un objeto que implemente la interfaz IEnumerable del espacio de nombres System.Collections. IEnumerable define el mtodo GetEnumerator, que devuelve un objeto enumerador para la coleccin. El objeto enumerador expone la propiedad Current y el mtodo MoveNext. Visual Basic utiliza stos para recorrer la coleccin. El tipo PGINA 70

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN de datos de los elementos devueltos por Current debe ser convertible al tipo de datos de elementvariable. Modificar elementos La propiedad Current del objeto enumerador es ReadOnly y devuelve una copia local de cada elemento de la coleccin. Esto significa que no es posible modificar los propios elementos en un bucle For Each...Next. Cualquier modificacin que haga afectar slo a la copia local de Current y no se ver reflejada de nuevo en la coleccin. Sin embargo, si un elemento es un tipo de referencia, es posible modificar los miembros de la instancia a los que apunta. Esta es la razn por la cual, en el ejemplo anterior, se puede modificar el miembro BackColor de cada elemento ThisControl, aunque no se pueda modificar el propio ThisControl. Acceso a matrices Dado que System.Array implementa la interfaz IEnumerable, todas las matrices exponen el mtodo GetEnumerator. Esto significa que es posible recorrer una matriz con un bucle For Each...Next. Sin embargo, slo podr leer los elementos de la matriz, no modificarlos. El propsito del siguiente procedimiento es calcular la suma de los elementos de una matriz y reiniciar cada elemento a cero:
Function SumAndReset(ByRef A() As Integer) As Integer Dim Elt As Integer Dim Sum As Integer = 0 For Each Elt In A Sum += Elt Elt = 0 Next Elt Return Sum End Function

Cuando se ejecuta un bucle For Each...Next, el recorrido de la coleccin est bajo el control del objeto enumerador devuelto por el mtodo GetEnumerator. El orden de recorrido no lo determina Visual Basic, sino el mtodo MoveNext del objeto enumerador. Esto significa que tal vez no pueda predecir qu elemento de la coleccin es el primero que se devuelve en elementvariable o qu elemento es el siguiente en ser devuelto tras un elemento dado. Si el cdigo utilizado depende del recorrido de una coleccin en un orden concreto, un bucle For Each...Next no es la mejor opcin a menos que conozca las caractersticas del objeto enumerador que expone la coleccin. Es posible que obtenga resultados ms confiables si utiliza un bucle diferente, tal como For...Next o Do...Loop. Salir de un bucle For Each...Next antes de terminar con la coleccin Puede salir de un bucle For Each...Next antes de que haya recorrido la coleccin mediante la instruccin Exit For. Por ejemplo, puede desear salir de un bucle si detecta una condicin que hace que sea innecesario o no se pueda continuar la iteracin, como puede ser un valor errneo o una solicitud de finalizacin. Asimismo, si detecta una excepcin en Try...Catch...Finally, puede utilizar Exit For al final del bloque Finally.

5.7.3 Bucles For...Next ms rpidos


La actualizacin de las variables Integer es un poco ms rpida que en el caso de las variables Short o Long. Esta diferencia slo es apreciable si se realizan muchos miles de operaciones. No obstante, la diferencia entre Integer y Single o Decimal se aprecia ms rpidamente. El ejemplo siguiente muestra algunas variaciones posibles:
Dim Fastest As Integer ' First case -- Integer is fastest. For Fastest = 0 to 100000 ' Statements to execute for each value of Fastest. Next Fastest ' ... Dim NotAsFast As Long ' Second case -- Long is not as fast. For NotAsFast = 0 to 100000 ' Statements to execute for each value of NotAsFast. Next NotAsFast ' ... Dim MuchSlower As Decimal ' Third case -- Decimal is slower. For MuchSlower = 0 to 100000 ' Statements to execute for each value of MuchSlower. Next MuchSlower

La suma funciona segn los esperado, porque se basa slo en leer los elementos. Sin embargo, la reinicializacin a cero no funciona segn lo esperado, porque slo se reinicia a cero la copia local mientras los elementos originales permanecen sin modificar en la coleccin. Alterar la coleccin El objeto enumerador no permite alterar la coleccin mediante la adicin, eliminacin, sustitucin o reordenacin de elementos. Si altera la coleccin despus de haber iniciado un bucle For Each...Next, el objeto enumerador deja de ser vlido y el siguiente intento de acceso a un elemento produce una excepcin InvalidOperationException. Recorrer la coleccin

VISUAL BASIC.NET CON SQL SERVER

PGINA 71

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN En el primer caso anterior, la ejecucin tarda un poco menos que en el segundo caso. Sin embargo, si Fastest supera 2.147.483.647 se produce un error. Esto se soluciona en los casos segundo y tercero, puesto que los tipos Long y Decimal aceptan una gama ms amplia de enteros, aunque se ejecutan ms lentamente. Para tipos de datos que utilizan 4 o ms bytes, la manipulacin de tipos ms pequeos suele requerir menos tiempo que la de tipos ms grandes.

5.7.5 Instrucciones anidadas

de

control

5.7.4 With...End With (Instrucciones)


En Visual Basic generalmente se debe especificar un objeto en cada instruccin que llame a uno de sus mtodos o que tenga acceso a una de sus propiedades. Sin embargo, si tiene una serie de instrucciones que operan en un mismo objeto, puede utilizar una instruccin With...End With para especificar el objeto solo una sola vez para todas las instrucciones. De este modo puede acelerar la ejecucin de los procedimientos y evitar la escritura repetitiva. El ejemplo siguiente establece el color del primer plano y el estilo de fuente de una etiqueta segn el valor de un argumento de procedimiento.
Dim AlertLabel As New System.Windows.Forms.Label ' ... Sub AlertUser(ByVal Value As Long) With AlertLabel If Value = 0 Then .ForeColor = Color.Red .Font = New Font(.Font, FontStyle.Bold Or FontStyle.Italic) Else .Forecolor = Color.Black .Font = New Font(.Font, FontStyle.Regular) End If End With End Sub

Puede colocar instrucciones de control dentro de otras instrucciones de control, por ejemplo un bloque If...Then...Else dentro de un bucle For...Next. Cuando una instruccin de control se coloca dentro de otra, se dice que est anidada. En Visual Basic, las instrucciones de control pueden anidarse tantos niveles como se desee. A fin de que las estructuras de decisin y los bucles anidados sean ms fciles de leer, es prctica habitual aplicar sangra al cuerpo de cada uno. En el siguiente ejemplo, el procedimiento suma los elementos positivos de cada fila de la matriz:
Public Sub SumRows(ByVal A(,) As Double, ByRef R() As Double) Dim I, J As Integer For I = 0 To UBound(A, 1) R(I) = 0 For J = 0 To UBound(A, 2) If A(I, J) > 0 Then R(I) = R(I) + A(I, J) End If Next J Next I End Sub

Observe que el primer Next cierra el bucle For interno y el ltimo Next cierra el bucle For externo. Del mismo modo, en las instrucciones If anidadas, las instrucciones End If se aplican automticamente a la instruccin If anterior ms prxima. Los bucles Do anidados funcionan de forma similar; la instruccin Loop ms interna est emparejada con la instruccin Do ms interna.

Puede anidar instrucciones With...End With para conseguir mayor eficacia. En el siguiente ejemplo se inserta una frmula en la celda A1 y despus se da formato a la fuente.
Sub MyInput() With Workbooks("Book1").Worksheets("Sheet1").Cells(1, 1) .Formula = "=SQRT(50)" With .Font .Name = "Arial" .Bold = True .Size = 8 End With End With End Sub

5.7.6 Exit (Instruccin)


La instruccin Exit permite salir directamente de cualquier estructura de decisin, bucle o procedimiento. Transfiere inmediatamente la ejecucin a la instruccin que sigue a la ltima instruccin de control. La sintaxis de la instruccin Exit especifica el tipo de instruccin de control desde la que se transfiere la ejecucin. Son posibles las siguientes versiones de la instruccin Exit: Exit Select Exit Try Exit Do Exit While Exit For PGINA 72

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Tambin puede salir directamente de un procedimiento Function, Sub o Property; la sintaxis es parecida a la de Exit For y Exit Do: Exit Sub Exit Function Exit Property Do Until y = -1 If x < 0 Then Exit Do x = Math.Sqrt(x) If y > 0 Then Exit Do y=y+3 If z = 0 Then Exit Do z=x/z Loop La instruccin Exit Do funciona con todas las versiones de sintaxis del bucle Do (con While o Until) y Exit For funciona con todas las versiones de sintaxis del bucle For (con o sin Each).

Exit Sub, Exit Function y Exit Property pueden aparecer todas las veces que sea necesario, en cualquier punto del cuerpo del procedimiento. Incluso pueden aparecer dentro de una instruccin de control como If...Then...Else. Estas instrucciones son tiles cuando un procedimiento ha completado su cometido y puede volver inmediatamente.

5.7.6.1 Salir de instrucciones de control anidadas


Si se encuentra una instruccin Exit dentro de instrucciones de control anidadas, la ejecucin contina con la instruccin que sigue al final de la instruccin de control ms interna del tipo especificado en la instruccin Exit. En el ejemplo siguiente, la instruccin Exit For se encuentra en el bucle For interno, de modo que pasa el control a la instruccin que sigue al bucle y contina con el bucle For externo. Public Sub InvertElements(ByRef A(,) As Double) Dim I, J As Integer For I = 0 To UBound(A, 1) For J = 0 To UBound(A, 2) If A(I, J) = 0 Then Exit For ' Cannot complete this row. Else
A(I, J) = 1 / A(I, J) End If

6 Procedimientos
Un procedimiento es un bloque de instrucciones de Visual Basic delimitado por una instruccin de declaracin y una instruccin End. En Visual Basic, todo el cdigo se incluye dentro de procedimientos. Los procedimientos se invocan desde otras partes del cdigo. Cuando finaliza la ejecucin de un procedimiento, ste devuelve el control al cdigo que lo invoc, que recibe el nombre de cdigo de llamada. El cdigo de llamada es una instruccin o una expresin contenida en una instruccin, que hace referencia al procedimiento por su nombre y le transfiere el control. Tipos de procedimientos Visual Basic utiliza varios tipos de procedimientos: Los procedimientos Sub ejecutan acciones, pero no devuelven un valor al cdigo de llamada. Los procedimientos de control de eventos son procedimientos Sub que se ejecutan en respuesta a un evento desencadenado por una accin del usuario o por un suceso en un programa. Los procedimientos Function devuelven un valor al cdigo de llamada. Los procedimientos Property devuelven y asignan valores de propiedades en objetos o mdulos. Procedimientos y cdigo estructurado Todas las lneas de cdigo de una aplicacin deben encontrarse dentro de un procedimiento, por ejemplo, Main, Calculate o Button1_Click. La aplicacin se leer con mayor facilidad si subdivide los procedimientos grandes en procedimientos ms pequeos. Los procedimientos son tiles para realizar tareas repetitivas o compartidas, como clculos de uso PGINA 73

' Control comes here if the Exit For is executed. Next J Next I End Sub

5.7.6.2 Mltiples instrucciones Exit


La instruccin Exit en cualquiera de sus formas puede aparecer tantas veces como sea necesaria dentro del bucle o instruccin apropiados. En el siguiente ejemplo se muestra esto dentro de un bucle Do: Dim x, y, z As Double

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN frecuente, manipulacin de texto y controles, y operaciones con bases de datos. Se puede llamar a un procedimiento desde distintos lugares del cdigo; de modo que los procedimientos se prestan a servir de unidades de creacin de la aplicacin. La estructuracin del cdigo en procedimientos aporta las siguientes ventajas: Los procedimientos permiten desglosar los programas en unidades lgicas independientes. Es ms fcil depurar unidades individuales que todo un programa sin procedimientos. Los procedimientos desarrollados para un programa pueden utilizarse en otros programas, generalmente sin tener que realizar apenas modificaciones.
[Optional] datatype [ByVal|ByRef] [ParamArray] argumentname As

Si el argumento es opcional, la declaracin de ste debe contener tambin un valor predeterminado, como se muestra a continuacin:
Optional [ByVal|ByRef] argumentname As datatype = defaultvalue

6.1.2 Sintaxis de llamada


Los procedimientos Sub se invocan de forma explcita, con una instruccin de llamada independiente. No se les puede llamar utilizando su nombre en una expresin. La instruccin de llamada debe suministrar el valor de todos los argumentos que no sean opcionales, y debe incluir la lista de argumentos entre parntesis. Si no se proporcionan argumentos, se puede omitir el parntesis. El uso de la palabra clave Call tambin es opcional. La sintaxis para llamar a un procedimiento Sub es la siguiente:
[Call] subname[(argumentlist)]

6.1 Procedimientos Sub


Un procedimiento Sub consiste en una serie de instrucciones de Visual Basic delimitadas por las instrucciones Sub y End. Cada vez que se llama a un procedimiento, se ejecutan las instrucciones de ste, desde la primera instruccin ejecutable tras la instruccin Sub hasta la primera instruccin End Sub, Exit Sub o Return que se encuentre. Un procedimiento Sub ejecuta acciones, pero no devuelve ningn valor. Puede tomar argumentos, como constantes, variables o expresiones, que le pasa el cdigo de llamada. La sintaxis para declarar un procedimiento Sub es la siguiente:
[accessibility] Sub subname[(argumentlist)] ' Statements of the Sub procedure go here. End Sub

El procedimiento Sub que aparece a continuacin notifica al usuario del equipo la tarea que est a punto de realizar la aplicacin, y tambin muestra una marca de tiempo. En lugar de duplicar este fragmento de cdigo al principio de cada tarea, la aplicacin simplemente llama a TellOperator desde varios lugares. Cada llamada pasa una cadena al argumento Task que identifica la tarea que se va a iniciar.
Sub TellOperator(ByVal Task As String) Dim Stamp As Date ' Stamp is local to TellOperator. Stamp = TimeOfDay() ' Get current time for time stamp. ' Use MessageBox class of System.Windows.Forms namespace. MessageBox.Show("Starting " & Task & " at " & CStr(Stamp)) End Sub

Una llamada tpica a TellOperator tendra esta forma:


Call TellOperator("file update")

La accesibilidad puede ser Public, Protected, Friend, Protected Friend o Private. Los procedimientos Sub pueden definirse en mdulos, clases y estructuras. Son Public de forma predeterminada, lo que significa que se les puede llamar desde cualquier parte de una aplicacin.

6.2 Procedimientos Function


Un procedimiento Function consiste en una serie de instrucciones de Visual Basic delimitadas por las instrucciones Function y End Function. Cada vez que se llama a un procedimiento de este tipo, se ejecutan las instrucciones de ste, desde la primera instruccin ejecutable tras la instruccin Function hasta la primera instruccin End Function, Exit Function o Return que se encuentre. Un procedimiento Function es similar a un procedimiento Sub, pero adems devuelve un valor al programa que realiza la llamada al procedimiento. Un procedimiento Function puede tomar argumentos, como constantes, variables o expresiones, que le pasa el cdigo de llamada. PGINA 74

6.1.1 Declaracin de argumentos


Los argumentos de un procedimiento se declaran igual que las variables, especificando el nombre y el tipo de datos del argumento. Tambin puede especificarse el mecanismo que se va a utilizar para pasar el argumento, as como si se trata de un argumento opcional. La sintaxis de los argumentos en una lista de argumentos es la siguiente:

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN La sintaxis para declarar un procedimiento Function es la siguiente:
[accessibility] Function functionname[(argumentlist)] As datatype ' Statements of the Function procedure. End Function

posible dentro de la funcin. Si se intentara hacerlo, el compilador lo interpretar como una llamada a la funcin. En el siguiente ejemplo se generan errores de compilacin:
Function AllOnes(ByVal N As Integer) As Integer() Dim I As Integer ' Singleton Integer, not Integer array. For I = 1 To N - 1 ' Assume N has a valid value. AllOnes(I) = 1 ' Compiler error: call with wrong data type. Next I Return AllOnes() ' Compiler error: call with no argument. End Function

La accesibilidad puede ser Public, Protected, Friend, Protected Friend o Private. Los procedimientos Function pueden definirse en mdulos, clases y estructuras. Son Public de forma predeterminada, lo que significa que se les puede llamar desde cualquier parte de una aplicacin. Los argumentos se declaran del mismo modo que en un procedimiento Sub.

6.2.1 Valores devueltos


El valor que un procedimiento Function devuelve al programa que realiza la llamada se denomina valor devuelto. La funcin puede devolver dicho valor de dos maneras: La funcin asigna un valor a su propio nombre de funcin en una o ms instrucciones del procedimiento. No se devuelve el control al programa que realiza la llamada hasta que se ejecuta una instruccin Exit Function o End Function, como en el siguiente ejemplo:

Todos los procedimientos Function tienen un tipo de datos, al igual que las variables. La clusula As de la instruccin Function especifica el tipo de datos, y determina el tipo del valor devuelto. En las siguientes declaraciones de ejemplo se ilustra esto ltimo:
Function Yesterday As Date ' ... End Function Function FindSqrt(ByVal Number As Single) As Single ' ... End Function

6.2.2 Sintaxis de llamada


Para llamar a un procedimiento Function, hay que incluir el nombre y los argumentos de ste en la parte derecha de una asignacin o en una expresin. Esto ltimo se ilustra en los siguientes ejemplos de llamada:
lvalue = functionname[(argumentlist)] If ((functionname[(argumentlist)] / 3) <= expression) Then ...

Function functionname[(argumentlist)] As datatype ' ... functionname = expression 'Control remains within the function. ' ... End Function

El siguiente procedimiento Function calcula la hipotenusa de un tringulo rectngulo a partir de los valores de los catetos:
Function Hypotenuse (ByVal Side1 As Single, ByVal Side2 As Single) As Single Return Math.Sqrt((Side1 ^ 2) + (Side2 ^ 2)) End Function

La funcin utiliza la instruccin Return para especificar el valor devuelto, e inmediatamente devuelve el control al programa de llamada, como en el siguiente ejemplo:

Son llamadas habituales a Hypotenuse las siguientes:


Dim TestLength, TestHypotenuse, X, Y, Area As Single TestHypotenuse = Hypotenuse(TestLength, 10.7) ' Assume TriangleArea is a defined Function procedure the ' returned value from Hypotenuse is used as an argument to TriangleArea. Area = TriangleArea(X, Y, Hypotenuse(X, Y))

Function functionname[(argumentlist)] As datatype ' ... Return expression 'Control is returned immediately. ' ... End Function

La ventaja de asignar el valor devuelto al nombre de la funcin es que el control permanece en la funcin hasta que el programa encuentra una instruccin Exit Function o End Funcin, lo que permite asignar un valor previo y, si es necesario, se puede ajustar despus. Si la funcin devuelve datos de tipo matricial, el acceso a los elementos individuales de la matriz no es

Common Language Runtime proporciona multitud de funciones, que se encuentran en el espacio de nombres Microsoft.VisualBasic. Entre las funciones ms comunes se encuentran, por ejemplo, Beep, MsgBox y StrComp. Puede llamar a estas funciones de la misma manera que llama a los procedimientos Function que ha creado usted mismo. Cuando se llama a un procedimiento Function, no es necesario utilizar su valor devuelto, en cuyo caso se PGINA 75

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN ejecutan todas las acciones de la funcin, pero el valor devuelto se omite. Las llamadas a MsgBox suelen hacerse de esta manera.

6.3.1 Declaracin de propiedades


Una propiedad se define mediante un bloque de cdigo delimitado por las instrucciones Property y End Property. Dentro del bloque, cada procedimiento Property aparece como un bloque interno encerrado entre una instruccin de declaracin (Get o Set) y una instruccin End. La sintaxis para declarar una propiedad y sus procedimientos es la siguiente: [Default] [accessibility] Property propertyname[(argumentlist)] As datatype Get ' ... Return expression ' expression is returned as property's value. End Get Set [(ByVal newvalue As datatype)] ' ... lvalue = newvalue ' newvalue is the new value to be assigned. End Set End Property La accesibilidad puede ser Public, Protected, Friend, Protected Friend o Private. Las propiedades pueden definirse en clases, estructuras y mdulos. De forma predeterminada las propiedades son Public, es decir, pueden llamarse desde cualquier parte de una aplicacin.

6.3 Procedimientos Property


Un procedimiento Property consiste en una serie de instrucciones de Visual Basic que manipulan una propiedad personalizada en un mdulo, una clase o una estructura. Los procedimientos Property tambin se conocen como descriptores de acceso de propiedades. Una propiedad se diferencia de una variable pblica o de un campo en los siguientes aspectos: Una propiedad se implementa con cdigo ejecutable (sus procedimientos Property), y no con una instruccin de declaracin individual. Los procedimientos Property se ejecutan cuando se establece o se recupera el valor de la propiedad. Esto permite que una clase realice acciones personalizadas cuando el cdigo del cliente obtiene acceso a la propiedad. Una propiedad no tiene asociada a su declaracin ninguna ubicacin de almacenamiento. Aunque los procedimientos Property suelen definir constantes y variables locales, stas no suelen estar disponibles para el cdigo de acceso a la propiedad. Por lo tanto, aunque es posible incluir una variable o un campo como miembro de una estructura o una matriz, no lo es en el caso de una propiedad. Una propiedad puede definirse como de slo lectura, slo escritura o lectura y escritura. El valor predeterminado es de lectura y escritura.

6.3.2 Declaracin de argumentos


Los argumentos se declaran del mismo modo que en un procedimiento Function o Sub, a excepcin de que el mecanismo utilizado para pasar el argumento es por valor. La sintaxis de los argumentos en una lista de argumentos es la siguiente: [Optional] ByVal [ParamArray] argumentname As datatype Si el argumento es opcional, la declaracin de ste debe contener tambin un valor predeterminado, como se muestra a continuacin: Optional ByVal argumentname As datatype = defaultvalue

Visual Basic proporciona los siguientes procedimientos Property: Los procedimientos Get devuelven el valor de una propiedad; se llama a estos procedimientos cuando se obtiene acceso a la propiedad en una expresin. Los procedimientos Set establecen el valor de una propiedad, e incluyen una referencia de objeto; se llama a estos procedimientos cuando se le asigna un valor a la propiedad. Normalmente los procedimientos Property se definen por parejas, utilizando las palabras clave Get y Set, pero si la propiedad es de slo lectura (Get) o de slo escritura (Set) puede definirse cada procedimiento de forma individual.

VISUAL BASIC.NET CON SQL SERVER

PGINA 76

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN En un procedimiento Get, el valor devuelto se suministra a la expresin de llamada como valor de la propiedad. En un procedimiento Set, el nuevo valor de la propiedad se pasa a travs del argumento de la instruccin Set. Si un argumento se declara de forma explcita, el tipo de datos de ste debe ser el mismo que el de la propiedad. Si no se declara un argumento, el compilador utiliza el argumento implcito Value para representar el nuevo valor que se va a asignar a la propiedad. llamada. Estos datos se componen de variables, constantes y expresiones que se pasan al procedimiento cuando se le llama. Un valor que se pasa a un procedimiento se denomina argumento.

6.4.1 Declaracin del tipo de datos de un argumento


El tipo de datos de un argumento se declara utilizando la clusula As en su declaracin. Por ejemplo, la siguiente funcin acepta una cadena y un entero:
Function Appointment(ByVal Day As String, ByVal Hour As Integer) As String ' Code to return any appointment for the given day and time. End Function

6.3.3 Sintaxis de llamada


Un procedimiento Property se invoca de forma implcita mediante el cdigo que hace referencia a la propiedad. El cdigo utiliza el nombre de la propiedad del mismo modo que si se tratase del nombre de una variable, a excepcin de que debe suministrar valores a todos los argumentos que no sean opcionales, y debe encerrar la lista de argumentos entre parntesis. Si no se proporcionan argumentos, se puede omitir el parntesis. La sintaxis de una llamada implcita a un procedimiento Set Property es la siguiente: propertyname[(argumentlist)] = expression Los siguientes ejemplos de llamadas muestran la sintaxis de llamada permitida para un procedimiento Get Property: lvalue = propertyname[(argumentlist)] Do While (propertyname[(argumentlist)] > expression) Nota El tipo de datos de una propiedad y el acceso a dicha propiedad se definen en la instruccin Property, no en los procedimientos Property. Una propiedad slo puede tener un tipo de datos y un tipo de accesibilidad. Por ejemplo, no puede definirse una propiedad de forma que establezca un valor Decimal, y que a la vez obtenga un valor Double. Del mismo modo, Private Set y Public Get no pueden definirse en la misma propiedad. Para conseguir esta funcionalidad, puede definir un propiedad Public ReadOnly y un mtodo de configuracin Private independiente de la propiedad.

Si el modificador de comprobacin de tipos (Option Strict (Instruccin)) est desactivado, la clusula As ser opcional, salvo que alguno de los argumentos la utilice, en cuyo caso el resto de los argumentos tendr que utilizarla tambin. Si la comprobacin de tipos est activada, la clusula As ser obligatoria para todos los argumentos del procedimiento. Si desea pasar diferentes tipos de datos a un argumento en particular, tales como Byte a Integer o clases de enlace en tiempo de ejecucin a Object, deber tener Option Strict Off.

6.4.2 Pasar un argumento con ByVal y ByRef


En Visual Basic, puede pasarse un argumento a un procedimiento por valor o por referencia, especificando las palabras clave ByVal o ByRef, respectivamente. Pasar un argumento por valor implica que el procedimiento no puede modificar el contenido del elemento variable en el cdigo de llamada subyacente al argumento. Pasar un argumento por referencia permite que el procedimiento modifique el contenido de la misma forma que puede hacerlo el propio cdigo de llamada. La distincin que se hace entre pasar los argumentos por valor y por referencia no tiene nada que ver con la clasificacin de los tipos de datos en tipos de valor y tipos de referencia. No obstante, ambas categoras interactan entre s.

6.4.3 Argumentos variables

variables

no

6.4 Argumentos de procedimientos


En la mayora de los casos, un procedimiento necesita algunos datos sobre las circunstancias en las que se le ha llamado. Un procedimiento que ejecuta tareas repetidas o compartidas utiliza datos distintos en cada

El elemento de programacin subyacente a un argumento puede ser un elemento variable, con capacidad para cambiar de valor, o un elemento no variable. La siguiente tabla muestra elementos variables y no variables.

VISUAL BASIC.NET CON SQL SERVER

PGINA 77

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Elementos variables Elementos no variables El mecanismo para pasar argumentos se determina en la declaracin del procedimiento. El cdigo de llamada no puede reemplazar a un mecanismo ByVal, pero, si un argumento se declara con ByRef, el cdigo de llamada puede forzar al mecanismo para que pase el argumento por valor; para ello hay que encerrar el nombre del argumento entre parntesis en la llamada. Esto se ilustra en el siguiente ejemplo: Sub DoSomething(ByRef InString As String) ' Code that makes changes to InString. End Sub ' ...
Dim Str As String = "Cannot be replaced if passed ByVal"

Variables declaradas, incluidas Constantes las variables de objetos Campos (de clases) Elementos matriciales Elementos estructurales Literales Enumeraciones Expresiones

Los argumentos no variables no se modifican nunca en el cdigo de llamada, aunque se pasen por referencia. El procedimiento al que se llama podra modificar su copia del argumento no variable, pero la modificacin no afectara al elemento subyacente al cdigo de llamada.

6.4.4 Mecanismo argumentos

para

pasar

Call DoSomething((Str)) ' Pass Str ByVal even though declared ByRef. ' The parentheses around Str protect it from change. En Visual Basic, el valor predeterminado es pasar los argumentos por valor. Este cdigo se puede leer con ms facilidad si se utiliza la palabra clave ByVal, como en el ejemplo siguiente: Sub PostAccounts(ByVal AcctNum As Integer) ' Code to post accounts. End Sub Cuando se pasa una variable por referencia, debe utilizarse la palabra clave ByRef para especificar este mecanismo. El ejemplo anterior puede ampliarse con un segundo argumento, como se muestra a continuacin: Sub PostAccount(ByVal AcctNum As Integer, ByRef RunningTotal As Single) ' Code to post account for AcctNum and change value of RunningTotal. End Sub Es un hbito de programacin recomendado incluir la palabra clave ByVal o ByRef con cada argumento que declare.

Si se pasa un elemento no variable como argumento, el procedimiento no podr modificarlo nunca en el cdigo de llamada, se pase con ByVal o con ByRef. En la tabla siguiente se resume, para un elemento variable, la interaccin entre el tipo de datos del elemento y el mecanismo para pasarlos. Tipo de elemento Pasado con ByVal Pasado con ByRef

Tipo de El El valor (slo procedimiento procedimiento contiene un no puede puede valor) modificar la modificar la variable ni variable y los ninguno de los miembros de miembros de sta. sta. Tipo de El El referencia procedimiento procedimiento (contiene un no puede puede cambiar puntero a modificar la la variable y una instancia variable, pero los miembros de clase o puede cambiar de la instancia estructura) los miembros a la que seala. de la instancia a la que seala.

6.4.4.2 Seleccin del mecanismo para pasar argumentos


A la hora de elegir uno de los dos mecanismos que existen para pasar argumentos, el criterio ms importante que hay que tener en cuenta es la exposicin al cambio de las variables de llamada. La ventaja de pasar un argumento con ByRef es que el procedimiento puede devolver un valor al cdigo de PGINA 78

6.4.4.1 Determinacin del mecanismo para pasar argumentos

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN llamada por medio del argumento. La ventaja de pasarlo con ByVal es que protege a la variable de los cambios que sobre ella pueda efectuar el procedimiento. Aunque el mecanismo que se utilice para pasar argumentos tambin puede afectar al rendimiento del cdigo, la diferencia suele ser insignificante. Existe una excepcin: cuando se pasa un tipo de valor con ByVal. En esta caso, Visual Basic copia todo el contenido de los datos del argumento. Por lo tanto, para un tipo de valor grande, como una estructura, lo ms eficiente es pasarlo con ByRef. Para los tipos de referencia, slo se copia el puntero de cuatro bytes a los datos. Por lo tanto, se pueden pasar argumentos de tipo String u Object ByVal sin perjudicar al rendimiento. El valor predeterminado de un argumento opcional debe ser una expresin constante. Todos los argumentos que vayan a continuacin de un argumento opcional en la definicin del procedimiento tambin deben ser opcionales.

La siguiente sintaxis muestra una declaracin de procedimiento con un argumento opcional:


Sub subname(ByVal arg1 As type1, Optional ByVal arg2 As type2 = default)

6.4.6 Llamar a procedimientos con argumentos opcionales


Cuando se llama a un procedimiento con un argumento opcional, se puede elegir si se suministra o no el argumento. Si no se suministra, el procedimiento utiliza el valor predeterminado declarado para dicho argumento. Si se omiten uno o ms argumentos opcionales de la lista de argumentos, hay que utilizar comas sucesivas para delimitar sus posiciones. En el ejemplo de llamada siguiente se suministran los argumentos primero y cuarto, pero no el segundo ni el tercero:
Call subname(arg1, , , arg4) ' Leaves out arg2 and arg3.

6.4.4.3 Pasar argumentos con ByVal


Si pasa un argumento variable por valor utilizando la palabra clave ByVal, el procedimiento no puede modificar la propia variable. No obstante, si el argumento es un tipo de referencia, puede modificar los miembros del objeto al que seala, aunque no pueda reemplazar el propio objeto. En concreto, puede modificar los miembros del objeto. Por ejemplo, si el argumento es una variable de matriz, no puede asignarle otra matriz, pero s puede cambiar uno o ms de sus elementos. La modificacin de los elementos queda reflejada en la variable de matriz subyacente al cdigo de llamada.

6.4.7 Determinar si un argumento opcional est presente


En tiempo de ejecucin un procedimiento no puede detectar si un argumento determinado se ha omitido o si el cdigo de llamada ha suministrado de forma explcita el valor predeterminado de dicho argumento. Si fuese necesario hacer esta distincin, se podra establecer como valor predeterminado un valor improbable. El procedimiento que se muestra a continuacin incluye el argumento opcional Office y comprueba si su valor predeterminado, QJZ, ha sido omitido:
Sub Notify(ByVal Company As String, Optional ByVal Office As String = "QJZ") If Office = "QJZ" Then Debug.WriteLine("Office not supplied -notifying Headquarters") Office = "Headquarters" End If ' Code to notify headquarters or specified office. End Sub

6.4.4.4 Pasar argumentos con ByRef


Si pasa un argumento variable por referencia utilizando la palabra clave ByRef, el procedimiento puede modificar la propia variable. En concreto, si el argumento es una variable de objeto, puede asignarle un nuevo objeto. Esta reasignacin tambin afecta a la variable de objeto del programa de llamada.

6.4.5 Argumentos opcionales


Un argumento de un procedimiento puede ser opcional si as se especifica, es decir, que no es necesario suministrarlo al llamar al procedimiento. Los argumentos opcionales se indican mediante la palabra clave Optional en la definicin del procedimiento. Se aplican las siguientes reglas: Todos los argumentos opcionales de la definicin del procedimiento deben especificar un valor predeterminado.

Si el argumento opcional es un tipo de referencia, como String, puede utilizar Nothing como valor predeterminado, siempre y cuando ste no sea un valor esperado para el argumento. Otra forma de definir un procedimiento con argumentos opcionales consiste en utilizar una PGINA 79

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN sobrecarga. Si tiene un argumento opcional, puede definir dos versiones sobrecargadas del procedimiento, una con el argumento y otra sin l. Este planteamiento se complica a medida que aumenta el nmero de argumentos opcionales. No obstante, tiene la ventaja de que permite saber con total certeza si el programa de llamada ha suministrado o no cada argumento opcional. Ninguno, es decir, puede omitirse el argumento ParamArray. En este caso, se pasar una matriz vaca al procedimiento. Tambin puede pasarse la palabra clave Nothing, obtenindose el mismo efecto. Una lista con un nmero de argumentos indeterminado, separados por comas. El tipo de los datos de cada argumento debe poder convertirse implcitamente al tipo de elemento ParamArray. Una matriz con el mismo tipo de elemento que la matriz de parmetros.

6.4.8 Matrices de parmetros


Normalmente no es posible llamar a un procedimiento con un nmero de argumentos superior al especificado en la declaracin del procedimiento. Si se necesita un nmero indeterminado de argumentos, puede declararse una matriz de parmetros, que permite que un procedimiento acepte una matriz de valores para un argumento. No es necesario conocer el nmero de elementos de la matriz de parmetros en el momento de definir el procedimiento. El tamao de la matriz se determina individualmente en cada llamada al procedimiento. Utilice la palabra clave ParamArray para denotar una matriz de parmetros. Se aplican las siguientes reglas: Un procedimiento slo puede tener una matriz de parmetros, que debe ser el ltimo argumento de la definicin del procedimiento.

En el siguiente ejemplo se muestra cmo se puede definir un procedimiento con una matriz de parmetros: Sub StudentScores(ByVal Name As String, ByVal ParamArray Scores() As String) Dim I As Integer Debug.WriteLine("Scores for " & Name & ":") ' Use UBound function to determine largest subscript of array. For I = 0 To UBound(Scores) Debug.WriteLine("Score " & I & ": " & Scores(I)) Next I End Sub En los siguientes ejemplos se muestran llamadas tpicas a StudentScores: StudentScores("Anne", "10", "26", "32", "15", "22", "24", "16") StudentScores("Mary", "High", "Low", "Average", "High") Dim JohnScores() As String = {"35", "Absent", "21", "30"} StudentScores("John", JohnScores)

La matriz de parmetros debe pasarse por valor. Es un hbito de programacin recomendado incluir de manera explcita la palabra clave ByVal en la definicin del procedimiento. El cdigo del procedimiento debe considerar a la matriz de parmetros una matriz unidimensional; el tipo de datos de los elementos de la matriz ha de ser el mismo que el tipo de datos de ParamArray. La matriz de parmetros es opcional de forma automtica. Su valor predeterminado es una matriz unidimensional vaca del tipo de elemento de la matriz de parmetros. Todos los argumentos que preceden a la matriz de parmetros deben ser obligatorios. La matriz de parmetros debe ser el nico argumento opcional.

7 Funciones de Visual Basic .NET


7.1 Manipulacin de cadenas
La clase String de .NET Framework proporciona muchos mtodos integrados para facilitar la comparacin y manipulacin de cadenas. Ahora resulta sencillo obtener datos acerca de una cadena, o crear nuevas cadenas mediante la manipulacin de las cadenas actuales. El lenguaje Visual Basic .NET PGINA 80

Cuando uno de los argumentos del procedimiento al que se llame sea una matriz de parmetros, sta podr tomar cualquiera de estos valores:

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN tambin tiene mtodos inherentes que duplican muchas de estas funcionalidades.
stringLength = Len(MyString) ' This line, however, causes an exception to be thrown. stringLength = MyString.Length

7.1.1 Tipos de mtodos manipulacin de cadenas

de

En esta seccin se describen diferentes formas de analizar y manipular cadenas. Algunos mtodos son parte del lenguaje Visual Basic, mientras que otros son inherentes a la clase String. Los mtodos de Visual Basic .NET se utilizan como funciones inherentes al lenguaje. Pueden utilizarse sin calificacin en el cdigo. En el siguiente ejemplo se muestra el uso habitual de un comando de manipulacin de cadenas de Visual Basic .NET:
Dim aString As String = "SomeString" Dim bString As String bString = Mid(aString, 3, 3)

El tiempo de ejecucin de Visual Basic .NET evala Nothing como una cadena vaca, es decir, como "". Sin embargo, .NET Framework, no lo hace, e iniciar una excepcin cuando se intente realizar una operacin de cadena en Nothing.

7.1.3 Comparar cadenas


Puede comparar dos cadenas con el mtodo String.Compare. ste es un mtodo esttico sobrecargado de la clase de cadena base. En su forma ms comn, este mtodo puede utilizarse para comparar directamente dos cadenas basndose en el orden alfabtico. Funciona de manera similar a la funcin StrComp (Funcin) de Visual Basic. En el siguiente ejemplo se ilustra cmo se utiliza este mtodo:
Dim myString As String = "Alphabetical" Dim secondString As String = "Order" Dim result As Integer result = String.Compare (myString, secondString)

En este ejemplo, la funcin Mid realiza una operacin directa en aString y asigna el valor a bString. Tambin puede manipular cadenas con los mtodos de la clase String. Existen dos tipos de mtodos en String: mtodos compartidos y mtodos de instancia. Un mtodo compartido es un mtodo que se deriva de la propia clase String y no necesita una instancia de dicha clase para funcionar. Estos mtodos se pueden calificar con el nombre de la clase (String) en vez de con una instancia de dicha clase. Por ejemplo:
Dim aString As String bString = String.Copy("A literal string")

En el ejemplo anterior, el mtodo String.Copy es un mtodo esttico, que acta sobre una expresin dada y asigna el valor resultante a bString. En contraste, los mtodos de instancia se derivan de una instancia concreta de String y deben calificarse con el nombre de la instancia. Por ejemplo:
Dim aString As String = "A String" Dim bString As String bString = aString.SubString(2,6) ' bString = "String"

Este mtodo devuelve un entero que indica la relacin entre las dos cadenas comparadas basndose en el criterio de ordenacin. Un resultado con un valor positivo indica que la primera cadena es mayor que la segunda. Un resultado negativo indica que la primera cadena es ms pequea y cero indica igualdad entre la dos cadenas. Cualquier cadena, incluida una cadena vaca, se evala como mayor que una referencia nula. Las sobrecargas adicionales del mtodo String.Compare permiten indicar si deben tenerse en cuenta los formatos de maysculas y minsculas y las referencias culturales, y si deben compararse subcadenas dentro de las cadenas proporcionadas.

En este ejemplo, el mtodo SubString es un mtodo de la instancia de String (es decir, aString). Realiza una operacin en aString y asigna ese valor a bString.

7.1.4 Buscar cadenas cadenas

dentro

de

7.1.2 Nothing y cadenas


El tiempo de ejecucin de Visual Basic y .NET Framework evalan Nothing de modo diferente cuando se trata de cadenas. Considere el ejemplo siguiente:
Dim MyString As String = "This is my string" Dim stringLength As Integer ' Explicitly set the string to Nothing. MyString = Nothing ' stringLength = 0

En ocasiones es til tener informacin sobre los caracteres de una cadena y de su posicin dentro de la cadena. Una cadena se puede considerar como una matriz de caracteres (instancias Char); se puede recuperar un carcter concreto haciendo referencia al ndice de dicho carcter a travs de la propiedad Chars. Por ejemplo:
Dim myString As String = "ABCDE" Dim myChar As Char myChar = myString.Chars(3) ' myChar = "D"

Puede utilizar el mtodo String.IndexOf para que devuelva el ndice donde se encuentra un carcter concreto, como en el siguiente ejemplo:
Dim myString As String = "ABCDE"

VISUAL BASIC.NET CON SQL SERVER

PGINA 81

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN
Dim myInteger As Integer myInteger = myString.IndexOf("D") ' myInteger = 3

En el ejemplo anterior, se utiliz el mtodo IndexOf de myString para obtener el ndice correspondiente a la primera instancia del carcter "C" de la cadena. IndexOf es un mtodo sobrecargado; las otras sobrecargas proporcionan mtodos para buscar cualquiera de los caracteres de un conjunto o una cadena dentro de otra cadena, entre otros. El comando InStr de Visual Basic .NET tambin permite realizar funciones similares.

determinada. A veces puede ser necesario eliminar espacios iniciales o finales de una cadena. Por ejemplo, podra estar analizando una cadena que tiene espacios insertados con fines de alineacin. Puede eliminar esos espacios con la funcin String.Trim (Mtodo) o con la funcin Trim de Visual Basic .NET. A continuacin se muestra un ejemplo:
Dim spaceString As String = _ " This string will have the spaces removed " Dim oneString As String Dim twoString As String ' This removes all trailing and leading spaces. oneString = spaceString.Trim ' This also removes all trailing and leading spaces. twoString = Trim(spaceString)

7.1.5 Crear nuevas cadenas a partir de cadenas existentes


Cuando utiliza cadenas, puede que desee modificar las que tiene para crear otras nuevas. Puede que desee hacer algo tan simple como convertir toda la cadena a maysculas o eliminar los espacios finales; o hacer algo ms complejo, como extraer una subcadena de una cadena. La clase System.String proporciona una amplia gama de opciones para modificar, manipular y crear nuevas cadenas a partir de las existentes. Para combinar varias cadenas, puede utilizar los operadores de concatenacin (& o +). Tambin puede utilizar String.Concat (Mtodo) para concatenar una serie de cadenas o cadenas contenidas en objetos. A continuacin se muestra un ejemplo del mtodo String.Concat:
Dim aString As String = "A" Dim bString As String = "B" Dim cString As String = "C" Dim dString As String = "D" Dim myString As String ' myString = "ABCD" myString = String.Concat(aString, bString, cString, dString)

Si slo desea quitar los espacios finales, puede utilizar el mtodo String.TrimEnd (Mtodo) o la funcin RTrim. Del mismo modo, si desea quitar los espacios iniciales, puede utilizar el mtodo String.TrimStart (Mtodo) o la funcin LTrim. Las funciones String.Trim y otras relacionadas tambin permiten eliminar instancias de un carcter especfico al final de las cadenas. El siguiente ejemplo elimina todas las instancias iniciales y finales del carcter "#":
Dim myString As String = "#####Remove those!######" Dim oneString As String OneString = myString.Trim("#")

Tambin puede agregar caracteres iniciales o finales mediante los mtodos String.PadLeft (Mtodo) o String.PadRight (Mtodo). Si tiene exceso de caracteres en el cuerpo de la cadena, puede eliminarlos con String.Remove (Mtodo), o puede reemplazarlos con otro carcter mediante String.Replace (Mtodo). Por ejemplo:
Dim aString As String = "This is My Str@o@o@ing" Dim myString As String Dim anotherString As String ' myString = "This is My String" myString = aString.Remove(14, 5) ' anotherString = "This is Another String" anotherString = myString.Replace("My", "Another")

Las cadenas se pueden convertir en cadenas totalmente en maysculas o totalmente minsculas con funciones de Visual Basic .NET UCase (Funcin) o LCase (Funcin) o mediante los mtodos String.ToUpper (Mtodo) y String.ToLower (Mtodo). A continuacin se muestra un ejemplo:
Dim myString As String = "UpPeR oR LoWeR cAsE" Dim newString As String ' newString = "UPPER OR LOWER CASE" newString = UCase(myString) ' newString = "upper or lower case" newString = LCase(myString) ' newString = "UPPER OR LOWER CASE" newString = myString.ToUpper ' newString = "upper or lower case" newString = myString.ToLower

Puede utilizar el mtodo String.Replace para reemplazar caracteres individuales o cadenas de caracteres. La instruccin Mid (Instruccin) de Visual Basic .NET tambin se puede utilizar para reemplazar una cadena interior por otra. Asimismo, puede utilizar String.Insert (Mtodo) para insertar una cadena dentro de otra, como en el ejemplo siguiente:
Dim aString As String = "This is My Stng" Dim myString As String ' Results in a value of "This is My String". myString = aString.Insert(13, "ri")

El mtodo String.Format y el comando Format de Visual Basic .Net pueden generar una nueva cadena mediante la aplicacin de formato a una cadena

VISUAL BASIC.NET CON SQL SERVER

PGINA 82

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN El primer parmetro del mtodo String.Insert es el ndice del carcter tras el cual se insertar la cadena, y el segundo parmetro es la cadena que se va a insertar. Se puede concatenar una matriz de cadenas con una cadena separadora mediante String.Join (Mtodo). El siguiente es un ejemplo:
Dim shoppingItem(2) As String Dim shoppingList As String shoppingItem(0) = "Milk" shoppingItem(1) = "Eggs" shoppingItem(2) = "Bread" shoppingList = String.Join(",", shoppingItem)

posicin 1. El mtodo String.SubString toma un ndice del carcter de la cadena donde debe comenzar la subcadena, a partir de la posicin 0. As, si tiene una cadena "ABCDE", los caracteres individuales se numeran 1,2,3,4,5 si se utilizan con la funcin Mid, y 0,1,2,3,4 si se utilizan con el funcin System.String.

7.2 Analizar cadenas de fecha y hora [Visual Basic]


De forma parecida a la de los tipos numricos, la clase DateTime tiene la capacidad de convertir una cadena en un objeto DateTime. Se pueden usar los mtodos Parse y ParseExact para convertir una representacin de cadena de una fecha u hora en un objeto DateTime. El mtodo Parse convierte todas las representaciones de cadena vlidas, mientras que el mtodo ParseExact slo convierte las cadenas con el formato que se especifique. Ambos mtodos pueden convertir satisfactoriamente cualquier cadena que tenga el formato de uno de los modelos de DateTime estndar descritos en la seccin Cadenas de formato de fecha y hora. Los valores utilizados para representar los nombres de los meses y los das, adems del orden de presentacin de los componentes de DateTime, se definen en los proveedores de formato. Los mtodos Parse y ParseExact aceptan un proveedor de formato, lo que permite especificar y analizar explcitamente cadenas especficas de referencia cultural. Si no se especifica ningn proveedor de formato, se utiliza el proveedor asociado al subproceso actual. De manera predeterminada, toda informacin sobre la fecha y la hora, que no se encuentre en la cadena que se pasa, se rellena con la informacin de fecha y hora actual desde DateTime.Now. Por ejemplo, si se analiza la cadena "1/1/00", slo se han especificado las propiedades Month, Year y Day de DateTime. Otras propiedades, como Minutes, Seconds y Ticks, se establecen en los valores actuales especificados en DateTime.Now. Este comportamiento se puede modificar especificando DateTimeStyles.NoCurrentDateDefault, que hace que Year, Month y Day se establezcan en "1" en lugar de en el ao, el mes y el da actuales.

El valor de shoppingList tras ejecutar este cdigo es "Milk,Eggs,Bread". Es de resear que si la matriz tiene miembros vacos, el mtodo agrega igualmente una cadena separadora entre todas las instancias vacas de la matriz. Tambin se puede crear una matriz de cadenas a partir de una sola cadena mediante String.Split (Mtodo). En el siguiente ejemplo se demuestra lo contrario que en el ejemplo anterior: se convierte una lista de la compra en una matriz de artculos de la compra. En este caso el separador es una instancia del tipo de datos Char; por tanto, se le agrega el carcter de tipo literal c.
Dim shoppingList As String = "Milk,Eggs,Bread" Dim shoppingItem(2) As String shoppingItem = shoppingList.Split(","c)

La funcin Mid (Funcin) de Visual Basic .NET puede utilizarse para agregar subcadenas a una cadena. En el siguiente ejemplo se muestra el uso de estas funciones:
Dim aString As String = "Left Center Right" Dim rString, lString, mString As String ' rString = "Right" rString = Mid(aString, 13) ' lString = "Left" lString = Mid(aString, 1, 4) ' mString = "Center" mString = Mid(aString, 6,6)

Tambin se pueden generar subcadenas de una cadena con String.Substring (Mtodo). Este mtodo acepta dos argumentos: el ndice del carcter donde debe comenzar la subcadena y la longitud de la subcadena. El mtodo String.Substring funciona de modo similar a la funcin Mid. A continuacin se muestra un ejemplo:
Dim aString As String = "Left Center Right" Dim subString As String ' subString = "Center" subString = aString.SubString(5,6)

7.2.1 Parse
En el ejemplo de cdigo siguiente se ilustra el uso del mtodo Parse para convertir una cadena en DateTime. En este ejemplo, para realizar el anlisis, se utiliza la referencia cultural asociada al subproceso PGINA 83

Existe una diferencia muy importante entre el mtodo String.SubString y la funcin Mid. La funcin Mid toma un argumento que indica la posicin del carcter donde debe comenzar la subcadena, a partir de la

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN actual. Si el objeto CultureInfo asociado a la referencia cultural actual no puede analizar la cadena de entrada, se inicia una FormatException. Dim MyString As String = "Jan 1, 2002" Dim MyDateTime As DateTime DateTime.Parse(MyString) Console.WriteLine(MyDateTime) de fecha y hora estndar o una combinacin limitada de los especificadores de formato de fecha y hora personalizados. Si se usan los especificadores de formato personalizados, se puede construir una cadena de reconocimiento personalizada. En el ejemplo de cdigo siguiente, se pasa al mtodo ParseExact un objeto de cadena que se debe analizar, seguido de un especificador de formato, seguido de un objeto CultureInfo. Este mtodo ParseExact slo puede analizar cadenas que muestren el modelo de fecha larga de la referencia cultural en-US. Imports System.Globalization Dim MyCultureInfo As CultureInfo = new CultureInfo("en-US") Dim MyString As String = "Tuesday, April 10, 2001" Dim MyDateTime As DateTime = DateTime.ParseExact(MyString, "D", MyCultureInfo) Console.WriteLine(MyDateTime)

Tambin se puede especificar un objeto CultureInfo establecido en una de las referencias culturales que define dicho objeto. En el ejemplo de cdigo siguiente se utiliza un proveedor de formato para analizar una cadena alemana en un objeto DateTime. Un objeto CultureInfo que representa la referencia cultural deDE se define y se pasa con la cadena que se est analizando para garantizar el anlisis correcto de esta cadena concreta. Esto descarta el valor que tenga CurrentCulture del CurrentThread. Imports System.Globalization Dim MyCultureInfo As CultureInfo = CultureInfo("de-DE") Dim MyString As String = "12 Juni 2002" Dim MyDateTime As DateTime DateTime.Parse(MyString, MyCultureInfo) Console.WriteLine(MyDateTime) new

7.3 Manipulacin de fechas y horas. Estructura DateTime.


El tipo de valor DateTime representa fechas y horas cuyos valores estn comprendidos entre la medianoche (12:00:00) del 1 de enero de 0001 d.C. (era cristiana) y las 11:59:59 de la noche del 31 de diciembre de 9999 d.C. (era cristiana). Los valores de hora se miden en unidades de 100 nanosegundos, denominadas pasos, y una fecha concreta es el nmero de pasos transcurridos desde las 12:00 de la noche del 1 de enero de 1 d.C. (era cristiana) en el calendario GregorianCalendar. Por ejemplo, un valor en pasos de 31241376000000000L representa la fecha de viernes, 1 de enero de 0100 a las 12:00:00 de la noche. Un valor DateTime siempre se expresa en el contexto de un calendario explcito o predeterminado. Los tipos de valor DateTime y TimeSpan se diferencian en que DateTime representa un instante de tiempo, mientras que TimeSpan representa un intervalo de tiempo. Esto significa, por ejemplo, que se puede restar una instancia de DateTime de otra para obtener el intervalo de tiempo entre ambas. O bien, se podra agregar un TimeSpan positivo al DateTime actual para calcular una fecha futura. A una instancia de DateTime se le pueden sumar y restar valores de tiempo. Los valores de tiempo pueden ser positivos o negativos, y pueden expresarse en unidades tales como pasos, segundos o instancias de TimeSpan. Los mtodos y las propiedades de este

En el ejemplo de cdigo siguiente se utiliza la enumeracin DateTimeStyles para especificar que la informacin de fecha y hora actual no se debe agregar al objeto DateTime en los campos que no defina la cadena. Imports System.Globalization Dim MyCultureInfo As CultureInfo = new CultureInfo("de-DE") Dim MyString As String = "12 Juni 2002" Dim MyDateTime As DateTime = DateTime.Parse(MyString, MyCultureInfo, DateTimeStyles.NoCurrentDateDefault) Console.WriteLine(MyDateTime)

7.2.2 ParseExact
El mtodo ParseExact slo convierte en objeto DateTime el modelo de cadena especificado. Cuando se pasa a este mtodo una cadena que no tiene el formato especificado, se inicia una FormatException. Se puede definir uno de los especificadores de formato

VISUAL BASIC.NET CON SQL SERVER

PGINA 84

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN tipo de valor tienen en cuenta una serie de detalles, como los aos bisiestos y el nmero de das de un mes. Las descripciones de valores de tiempo de este tipo suelen expresarse utilizando el estndar de hora universal coordinada (UTC), que antes se denominaba hora media de Greenwich (GMT). Los clculos y las comparaciones de instancias de DateTime slo tienen significado si las instancias se crean en la misma zona horaria. Por este motivo, se da por sentado que el programador dispone de algn mecanismo externo, como una variable o una directiva explcita, para saber en qu zona horaria se cre un DateTime. A la hora de realizar clculos o comparaciones, los mtodos y las propiedades de esta estructura utilizan siempre la zona horaria local. Cuando se realiza un clculo en una instancia de DateTime, como Add o Subtract, el valor de la instancia no se modifica. En lugar de ello, el clculo devuelve una nueva instancia de DateTime cuyo valor es el resultado del clculo. Cada miembro de DateTime usa de forma implcita el calendario gregoriano para realizar su operacin, con la excepcin de los constructores que especifican un calendario y los mtodos que indican implcitamente un calendario con un parmetro derivado de IFormatProvider; por ejemplo, System.Globalization.DateTimeFormatInfo. Utilice la clase System.Globalization.Calendar para realizar las operaciones de fecha y hora con un calendario diferente. Este tipo se hereda de IComparable, IFormattable e IConvertible. Utilice la clase Convert para las conversiones en lugar de la implementacin de miembro de interfaz explcita de IConvertible de este tipo. a las fracciones de segundo. Por ejemplo, un TimeSpan inicializado con 1.0e+13 pasos (ticks) representa "11.13:46:40", lo cual corresponde a 11 das, 13 horas, 46 minutos y 40 segundos. Debido a la variacin del nmero de das en meses y aos, la unidad mayor de tiempo que utiliza TimeSpan es el da.

7.5 Mtodos pblicos.


A continuacin se enumeran los mtodos de la estructura TimeSpan. Mtodo Add Compare Descripcin Agrega el TimeSpan especificado a esta instancia. Compara dos valores de TimeSpan y devuelve un entero que indica su relacin. Compara esta instancia con un objeto especificado y devuelve una indicacin de los valores relativos. Devuelve un TimeSpan cuyo valor es el valor absoluto de esta instancia. Devuelve un valor que indica si dos instancias de TimeSpan son iguales. Devuelve un TimeSpan que representa un nmero de das especificado con una precisin aproximada al milisegundo ms cercano. Devuelve un TimeSpan que representa un nmero de horas especificado cuya precisin se aproximada al milisegundo ms cercano. que de

CompareTo

Duration

Equals

FromDays

FromHours

7.4 Manipulacin de Intervalos de Tiempo. Estructura TimeSpan.


El valor de una instancia de TimeSpan representa un perodo de tiempo. Ese valor corresponde al nmero de pasos (ticks) incluidos en la instancia y puede ir de Int64.MinValue a Int64.MaxValue. Un paso es la unidad de tiempo ms pequea que se puede especificar, y equivale a 100 nanosegundos. Tanto la especificacin de un nmero de pasos como el valor de TimeSpan puede ser positivo o negativo. Se puede representar TimeSpan como una cadena con el formato "[-]d.hh:mm:ss.ff", donde "-" es un signo opcional para valores de TimeSpan negativos, el componente "d" corresponde a los das, "hh" a las horas, "mm" a los minutos, "ss" a los segundos y "ff"

FromMilliseconds Devuelve un TimeSpan representa un nmero milisegundos especificado. FromMinutes

Devuelve un TimeSpan que representa un nmero de minutos especificado con una precisin aproximada al milisegundo ms cercano. Devuelve un TimeSpan que representa un nmero de segundos especificado con una

FromSeconds

VISUAL BASIC.NET CON SQL SERVER

PGINA 85

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Mtodo Descripcin precisin aproximada milisegundo ms cercano. FromTicks al Palabra Convierte Tipos de datos permitidos clave de una para la expresin que se va conversin expresin a convertir de tipos en el siguiente tipo de datos CBool Boolean Cualquier tipo numrico (incluido el tipo Byte y los tipos enumerados), String y Object Cualquier tipo numrico, cualquier tipo enumerado, Boolean, String y Object String y Object String y Object Cualquier tipo numrico (incluido el tipo Byte y los tipos enumerados), Boolean, String y Object Cualquier tipo numrico (incluido el tipo Byte y los tipos enumerados), Boolean, String y Object Cualquier tipo numrico (incluido el tipo Byte y los tipos enumerados), Boolean, String y Object Cualquier tipo numrico (incluido el tipo Byte y los tipos enumerados), Boolean, String y Object Cualquier tipo Cualquier tipo numrico (incluido el tipo Byte y los tipos enumerados), Boolean, String y Object Cualquier tipo numrico (incluido el tipo Byte y los tipos enumerados), Boolean, String y Object Cualquier tipo numrico (incluido el tipo Byte), Boolean, Char, matriz Char(), Date y Object

Devuelve un TimeSpan que representa un tiempo especificado en unidades de paso. Devuelve un TimeSpan cuyo valor es el valor negado de esta instancia. Crea un objeto TimeSpan a partir de un intervalo de tiempo indicado mediante una cadena especificada. Resta el objeto TimeSpan especificado de esta instancia.

Negate

Parse

CByte

Byte

Subtract

CChar CDate CDbl

Char Date Double

7.6 Conversiones explcitas

implcitas

y
CDec Decimal

Una conversin implcita no requiere ninguna sintaxis especial en el cdigo fuente. En el ejemplo siguiente, Visual Basic .NET convierte de forma implcita el valor de K a punto flotante de precisin simple antes de asignarlo a Q.
Dim K As Integer Dim Q As Double ' ... K = 432 ' Integer widens to Double, so Option Strict can be On. Q=K

CInt

Integer

CLng

Long

Una conversin explcita utiliza una palabra clave de conversin de tipos. Visual Basic .NET proporciona varias de estas palabras clave, que convierten una expresin entre parntesis en el tipo de datos deseado. Estas palabras clave actan como funciones, pero el compilador genera el cdigo en la misma lnea, de modo que la ejecucin es un poco ms rpida que con una llamada de funcin. En esta extensin del ejemplo anterior, la palabra clave CInt convierte el valor de Q de nuevo en un entero antes de asignarlo a K:
Q = Math.Sqrt(Q) ' Q had been assigned the value 432 from K. K = CInt(Q) ' K now has the value 21 (rounded square root of 432).

CObj CShort

Object Short

CSng

Simple

La tabla siguiente muestra las palabras clave de conversin disponibles.

CStr

String

CType

Tipo Al convertir a un tipo bsico especificado (incluida una matriz de un despus de tipo bsico), se permiten los PGINA 86

VISUAL BASIC.NET CON SQL SERVER

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Palabra Convierte Tipos de datos permitidos clave de una para la expresin que se va conversin expresin a convertir de tipos en el siguiente tipo de datos la coma (,) mismos tipos para la palabra clave de conversin correspondiente Al convertir a un tipo compuesto, las interfaces que implementa y las clases de las que hereda en tiempo de ejecucin si no existe relacin de herencia entre los dos tipos. La accin de realizar una conversin explcita se denomina tambin convertir una expresin en un determinado tipo de datos o clase de objeto.

7.7 Funciones de comprobacin de tipos de datos


En la siguiente tabla se presentan algunas de las funciones ms comunmente usadas para comprobacin de tipos de datos. Funcin IsArray Descripcin IsArray devuelve True si variable apunta a una matriz; si devuelve False. IsArray especialmente til en el caso objetos que contienen matrices. la no, es de

7.6.1 La palabra clave CType


La palabra clave CType acta sobre dos argumentos. El primero es la expresin que va a convertirse y el segundo es la clase de objeto o el tipo de datos de destino. El siguiente ejemplo muestra el uso de CType.
K = CType(Q, Integer) ' Uses CType keyword instead of CInt. F = CType(W, Label) ' Coerces W to the specific object class Label.

IsDate

IsDate devuelve True si la expresin es de tipo Date, o si es una cadena que se puede convertir al tipo Date; si no, devuelve False. IsDBNull devuelve True si el tipo de datos de Expression se evala como de tipo DBNull; si no, IsDBNull devuelve False. El valor System.DBNull indica que la expresin de tipo Object representa datos que no se encuentran o no existen. DBNull no es lo mismo que Nothing, que indica que una variable no se ha inicializado todava. Tampoco es lo mismo que una cadena de longitud cero (""), a la que a veces se hace referencia como cadena de valor null. IsError devuelve True si la expresin representa una variable Object que se deriva de la clase Exception en el espacio de nombres System. Una excepcin que se deriva de System.Exception puede capturarse con las instrucciones Try...Catch...Finally. IsNothing devuelve True si la expresin representa una variable de tipo Object que no tiene actualmente ningn objeto asignado; en caso contrario, devuelve False.

IsDBNull

Puede utilizar CType para convertir valores en tipos de datos compuestos as como en tipos bsicos. Tambin puede utilizarlo para convertir una clase de objeto en el tipo de una de sus interfaces, como en el ejemplo siguiente:
' Assume class CZone implements interface IZone. Dim H As Object Dim CZ As CZone ' Cannot use a type as first argument of CType. H = CType(CZ, IZone) ' Coerces CZone object to its interface IZone.

CType tambin puede convertir tipos de matrices, como en el ejemplo siguiente:


Dim V() As ClassV ' Array of ClassV objects. Dim ObArray() As Object ' Array of objects to be assigned. ' Some object array is assigned to ObArray. If TypeOf ObArray Is ClassV() ' Check for run-time type compatibility. V = CType(ObArray, ClassV()) ' ObArray can be converted to ClassV. End If

IsError

Nota Los valores utilizados con una palabra clave de conversin deben ser vlidos para el tipo de datos de destino; de lo contrario, se produce un error. Por ejemplo, si intenta convertir un tipo Long en Integer, el valor de Long debe estar dentro del intervalo vlido para el tipo de datos Integer. Precaucin La especificacin de CType para convertir de un tipo de clase a otro produce un error

IsNothing

VISUAL BASIC.NET CON SQL SERVER

PGINA 87

ILCOMP
INSTITUTO LATINOAMERICANO DE COMPUTACIN Funcin IsNumeric Descripcin IsNumeric devuelve True si Expression se reconoce globalmente como un nmero; si no, devuelve False. IsNumeric devuelve True si el tipo de datos de Expression es Short, Integer, Long, Decimal, Single o Short. Tambin devuelve True si Expression es de tipo String y se puede convertir al tipo Double. Devuelve False si Expression es del tipo Date. Devuelve un valor de tipo Boolean que indica si una expresin es un tipo de referencia. prevenir errores de lgica y prdidas de datos que puedan producirse al trabajar entre variables de diferentes tipos. La instruccin Option Compare especifica la forma en que se comparan las cadenas entre s, mediante su disposicin de tipo Binary o Text.

8.2 Instrucciones Imports


Las instrucciones Imports le permiten poner nombre a clases y otros tipos definidos en el espacio de nombres importado sin tener que calificarlos.

IsReference

8.3 Procedimiento Main


El procedimiento Main es el "punto inicial" de la aplicacin, el primer procedimiento al cual se obtiene acceso al ejecutar el cdigo. Main seala el lugar que corresponde al cdigo al cual debe obtenerse acceso en primer lugar. En Main, se puede especificar el formulario se cargar primero al iniciar el programa, se puede saber si se est ejecutando una copia de la aplicacin en el sistema, establecer un conjunto de variables para la aplicacin o abrir una base de datos que la aplicacin requiera. Hay cuatro variedades de Main: Sub Main() Sub Main(ByVal CmdArgs() As String) Function Main() As Integer Function Main(ByVal CmdArgs() As String) As Integer La variedad ms comn de este procedimiento es Sub Main( ).

8 Estructura de un programa de Visual Basic


Un programa de Visual Basic consta de unidades de creacin estndar. El cdigo de Visual Basic se almacena en mdulos de proyecto. Los proyectos se componen de archivos, que se compilan en aplicaciones. Al iniciar un proyecto y abrir el editor de cdigo, ver que ya hay cdigo en el lugar que le corresponde y en el orden correcto. Cualquier cdigo que cree debe seguir esta secuencia: 1. 2. 3. 4. Instrucciones Option Instrucciones Imports Procedimiento Main Instrucciones Class, Module y Namespace, si corresponde

8.4 Instrucciones Class, Module y Namespace


Las clases y los mdulos forman la mayora del cdigo del archivo de cdigo fuente. Contienen la mayor parte del cdigo que se escribe; principalmente instrucciones Sub, Function, Method y Event, junto con declaraciones de variable y otro cdigo necesario para que funcione la aplicacin.

Adems, un programa puede contener instrucciones de compilacin condicional. Estas instrucciones se pueden ubicar en cualquier parte del mdulo. Muchos programadores prefieren ponerlas al final. Si escribe instrucciones en un orden distinto, pueden producirse errores de compilacin.

8.1 Instrucciones Option


Las instrucciones Option establecen reglas de base para el cdigo subsiguiente, y de esta forma ayudan a prevenir errores de sintaxis y de lgica. La instruccin Option Explicit asegura que todas las variables estn declaradas y escritas correctamente, lo que reducir el posible tiempo que deber utilizarse posteriormente para depurar. La instruccin Option Strict ayuda a

8.5 Instrucciones condicional

de

compilacin

Las instrucciones de compilacin condicional pueden aparecer en cualquier lugar dentro del mdulo. Estn configuradas para ejecutarse si se cumplen determinadas condiciones en tiempo de ejecucin. Tambin puede utilizarlas para depurar la aplicacin, ya que el cdigo condicional se ejecuta nicamente en modo de depuracin.

VISUAL BASIC.NET CON SQL SERVER

PGINA 88

Vous aimerez peut-être aussi