Anda di halaman 1dari 438

Visual Basic y ASP .

NET a su alcance
Nivel Bsico/Intermedio

Carlos Alberto Vanegas


Ingeniero de Sistemas
Especialista en Ingeniera de Software
Maestra en Ingeniera de Sistemas
Profesor, Universidad Distrital Francisco Jos de Caldas

Bogot, enero 2011

Contenido
PRLOGO .................................................................................................................................... 7
1. INTRODUCCIN A VISUAL BASIC .NET .............................................................................. 10
1.1 Microsoft Visual Studio .NET ........................................................................................ 10
1.2 .NET FrameWork ......................................................................................................... 10
1.3 Pgina de Inicio Visual Studio .NET/2008 .................................................................... 11
2. PROYECTOS WINDOWS FORMS CON VISUAL BASIC .NET ............................................ 14
2.1 Crear una Aplicacin Windows Forms ......................................................................... 14
2.2 Elegir la plantilla de aplicaciones. ................................................................................. 14
2.3 Crear la interfaz de usuario. ......................................................................................... 19
2.4 Establecer las propiedades de los controles ................................................................ 20
2.5 Escribir cdigo .............................................................................................................. 21
2.6 Guardar la aplicacin .................................................................................................... 22
2.7 Ejecutar la aplicacin Windows Forms. ....................................................................... 23
2.8 Cerrar y Abrir un proyecto Windows Forms. ................................................................ 24
3. FUNDAMENTOS DE VISUAL BASIC .NET ............................................................................ 25
3.1 Variables ....................................................................................................................... 25
3.2 Constantes .................................................................................................................... 26
3.3 Tipos de datos .............................................................................................................. 26
3.3.1 Ejemplo prctico tipos de datos ................................................................................. 26
3.4 Funciones de conversin de tipos de datos ................................................................. 30
3.5 Operadores y Expresiones ........................................................................................... 32
3.5.1 Operadores aritmticos ............................................................................................. 32
3.5.2 Operadores relacionales ........................................................................................... 32
3.5.3 Operadores de igualdad ............................................................................................ 32
3.5.4 Operadores Lgicos .................................................................................................. 33
3.5.5 Ejemplo prctico operadores aritmticos .................................................................. 33
3.6 Palabras clave .............................................................................................................. 36
3.7 Comentarios ................................................................................................................. 36
4. ESTRUCTURAS DE CONTROL ............................................................................................. 37
4.1 Estructura de control If - Else ....................................................................................... 37
4.1.1 Sentencia If ................................................................................................................ 37
4.1.2 Sentencia If- Else....................................................................................................... 38
4.1.3 If (operador) ............................................................................................................... 39
4.1.4 IIF ............................................................................................................................... 39
4.1.5 Ejemplo estructura If-Else ......................................................................................... 39
4.2 Sentencia Select ........................................................................................................... 42
4.2.1 Ejemplo estructura Select .......................................................................................... 43
4.3 Estructura For-Next ...................................................................................................... 45
4.3.1 Ejemplo estructura For-Next ...................................................................................... 46
4.4 Estructura While ........................................................................................................... 48
4.4.1 Ejemplo estructura While ........................................................................................... 49
4.5 Do-Loop While .............................................................................................................. 51
4.5.1 Ejemplo estructura Do-Loop while............................................................................. 52
4.6 Estructura For-Each...................................................................................................... 55
4.6.1 Ejemplo estructura For-Each ..................................................................................... 55
4.7 Ejercicios estructuras de control ................................................................................... 58
5. MDULOS Y PROCEDIMIENTOS ......................................................................................... 59
5.1 Mdulos ........................................................................................................................ 59
5.2 Procedimientos o funciones ......................................................................................... 61
5.2.1 Ejemplo prctico mdulo y procedimientos Sub y Function ...................................... 62
5.3 Funciones predeterminadas ......................................................................................... 66
5.3.1 Funcin de fecha y hora ............................................................................................ 66

5.3.1.1 Ejemplo prctico funciones de fecha y hora ........................................................... 67


5.3.2 Funciones Matemticas ............................................................................................. 69
5.3.2.1 Ejemplo prctico funciones matemticas ............................................................... 70
5.3.3 Funciones para cadenas de caracteres .................................................................... 72
5.3.3.1 Ejemplo prctico funciones de cadena de caracteres ............................................ 74
5.4 Ejercicios de procedimientos ........................................................................................ 77
6. MATRICES Y COLECCIONES ............................................................................................... 78
6.1 Matrices de una Dimensin o Unidimensionales ......................................................... 78
6.1.1 Ejemplo prctico matriz unidimensional .................................................................... 78
6.2. Matrices de ms de una Dimensin ............................................................................ 81
6.2.1 Ejemplo prctico matrices bidimensionales .............................................................. 82
6.3 Colecciones .................................................................................................................. 84
6.3.1 Ejemplo prctico colecciones .................................................................................... 84
6.4 Ejercicios Matrices ........................................................................................................ 90
7. CONTROLES PARA INTERFAZ DE USUARIO ..................................................................... 91
7.1 LinkLabel ...................................................................................................................... 91
7.1.1 Ejemplo prctico LinkLabel ........................................................................................ 91
7.2 Controles ListBox y ComboBox .................................................................................... 93
7.2.1 Ejemplo prctico ListBox y ComboBox...................................................................... 93
7.3 Checkbox y RadioButton .............................................................................................. 99
7.3.1 Ejemplo prctico Checkbox y RadioButton ............................................................... 99
7.4 VScrollBar, HScroolBar, TrackBar. ............................................................................. 102
7.4.1 Ejemplo prctico VScrollBar y TrackBar ................................................................. 102
7.5 DataGridView .............................................................................................................. 105
7.5.1 Ejemplo prctico DataGridView ............................................................................... 105
7.6 ListView ...................................................................................................................... 107
7.6.1 Ejemplo prctico ListView ........................................................................................ 107
7.7 RichTextBox ............................................................................................................... 115
7.7.1 Ejemplo prctico RichTextBox ................................................................................. 115
7.8 TreeView. .................................................................................................................... 118
7.8.1 Ejemplo prctico TreeView ...................................................................................... 119
7.9 FolderBrowserDialog .................................................................................................. 122
7.9.1 Ejemplo prctico FolderBrowserDialog ................................................................... 122
7.10 WebBrowser ............................................................................................................. 125
7.10.1 Ejemplo prctico WebBrowser .............................................................................. 125
7.11 Ejercicios interfaz de usuario .................................................................................... 129
8. MENS EN FORMULARIOS ................................................................................................ 130
8.1 Creacin de Mens con Interfaz de documento sencillo............................................ 130
8.1.1 Ejemplo prctico mens con interfaz de documento sencillo ................................. 130
8.2 Creacin de Mens con interfaz mltiple ................................................................... 141
8.2.1 Ejemplo prctico formularios MDI ............................................................................ 141
8.3 Men Ventana ............................................................................................................ 153
8.4 Desactivar las opciones del men en formularios MDI .............................................. 156
8.5 Creacin de una barra de herramientas en una aplicacin MDI ................................ 156
8.6 Crear un men contextual .......................................................................................... 159
9. GRFICOS Y ANIMACIN ................................................................................................... 162
9.1 El espacio de nombres System.Drawing .................................................................... 162
9.2 Movimiento de un control ........................................................................................... 172
9.2.1 Ejemplo prctico movimiento de un control ............................................................. 172
9.3 Expandir y contraer un control .................................................................................... 175
9.3.1 Ejemplo prctico expandir y contraer un control ..................................................... 176
9.4 Animacin ................................................................................................................... 178
9.4.1 Ejemplos prcticos de animacin ........................................................................... 178
9.5 Ejercicios de grficos .................................................................................................. 187
10. MANEJO DE EVENTOS (MOUSE TECLADO) ............................................................... 188

10.1 Eventos del mouse ................................................................................................... 188


10.2 Ejercicios de eventos del mouse .............................................................................. 189
10.3 Eventos del teclado .................................................................................................. 193
10.4 Ejercicios de eventos del teclado ............................................................................. 193
11. PROGRAMACIN ORIENTADA A OBJETOS CON VB.NET ............................................ 198
11.1 Constructores ........................................................................................................... 199
11.1.1 Constructores sin parmetros ............................................................................... 199
11.1.2 Constructores con parmetros .............................................................................. 200
11.1.3 Sobrecarga de constructores ................................................................................ 200
11.2 Herencia y polimorfismo ........................................................................................... 201
11.3 Ejemplos prcticos de clases ................................................................................... 202
11.4 Interfaces .................................................................................................................. 217
11.5 Ejemplo prctico de interfaces ................................................................................. 218
11.6 Ejercicios P.O.O ....................................................................................................... 222
12. ACCESO A BASES DE DATOS CON VB.NET .................................................................. 223
12.1 Tipos de Bases de Datos. ........................................................................................ 223
12.1.1 bases de datos relacionales .................................................................................. 223
12.1.2 bases de datos orientadas a objetos. .................................................................... 223
12.2 Lenguaje de consulta estructurado (S.Q.L.) ............................................................. 223
12.2.1 Comandos S.Q.L .................................................................................................. 223
12.2.2 Clusulas S.Q.L .................................................................................................... 224
12.2.3 Operadores lgicos S.Q.L .................................................................................... 224
12.2.4 Operadores de comparacin S.Q.L ...................................................................... 225
12.2.5 Funciones de agregado S.Q.L ............................................................................... 225
12.3 Sentencias bsicas S.Q.L ........................................................................................ 226
12.3.1 CREATE DATABASE ............................................................................................ 226
12.3.2 DROP DATABASE ................................................................................................ 226
12.3.3 CREATE TABLE .................................................................................................... 226
12.3.4 DROP TABLE ........................................................................................................ 227
12.3.5 INSERT .................................................................................................................. 227
12.3.6 ALTER ................................................................................................................... 227
12.3.7 SELECT ................................................................................................................. 227
12.3.8 DELETE ................................................................................................................. 228
12.3.9 UPDATE ................................................................................................................ 229
12.3.10 INNER JOIN ........................................................................................................ 229
12.4 Conexin a bases de datos con VB.NET ................................................................. 230
12.5 Ejemplos prcticos de bases de datos ..................................................................... 231
12.5.1 Conexin a una base de datos SQL Server por cdigo ........................................ 231
12.5.2. Conexin a SQL Server utilizando el Explorador de servidores .......................... 234
12.5.3 Conexin a una base de datos con DataGridView y BindingNavigator ................ 241
12.5.4 Insertar un nuevo registro a una tabla ................................................................... 248
12.5.5 Filtrar registros de una tabla .................................................................................. 252
12.5.6 Informe de los registros de una tabla .................................................................... 256
12.5.7 Relacin de tablas ................................................................................................. 268
12.6 Ejercicios bases de datos ......................................................................................... 276
13. LENGUAJE DE CONSULTA INTEGRADO (LINQ) ............................................................ 277
13.1 Proveedores LINQ .................................................................................................... 277
13.2 Operadores de Consulta LINQ de VB.NET .............................................................. 277
13.3 Escribir una consulta con LINQ en VB.NET ............................................................. 279
13.4 Ejemplos prcticos consultas LINQ .......................................................................... 280
13.4.1 Consulta LINQ a un texto ...................................................................................... 280
13.4.2 Consulta LINQ a una matriz .................................................................................. 283
13.4.3 Consultar una base de datos SQL Server con LINQ To SQL .............................. 286
13.4.4 Operaciones con una tabla de una base de datos SQL Server ............................ 291
13.4.5 Relacin entre dos tablas de una base de datos SQL Server .............................. 301
13.4.6 Relacin tablas con LINQ to SQL y DataGridView ............................................... 306
13.4.7 Consulta LINQ to DataSet ..................................................................................... 311

13.5 Ejercicios de consulta LINQ ..................................................................................... 314


14. APLICACIONES WEB ASP.NET ........................................................................................ 315
14.1 Aplicacin Web (ASP.NET) ...................................................................................... 316
14.1.1 Crear un nuevo sitio Web ...................................................................................... 316
14.1.2 Crear la interfaz de usuario ................................................................................... 318
14.1.3 Establecer las propiedades de los controles ......................................................... 319
14.1.5 Ejecutar la aplicacin Web .................................................................................... 325
14.1.6 Cerrar y abrir nuevamente un sitio Web ................................................................ 326
14.2 Controles para interfaz de usuario ASP.NET ........................................................... 326
14.2.1 Control CheckBoxList ............................................................................................ 327
14.2.1.1 Ejemplo prctico control CheckBox List ............................................................. 327
14.2.2 Control ImageMap ................................................................................................. 329
14.2.2.1 Ejemplo prctico control ImageMap ................................................................... 330
14.2.3 Control BulletedList ............................................................................................... 333
14.2.3.1 Ejemplo prctico control BulletedList.................................................................. 334
14.2.4 Control RadioButtonList ......................................................................................... 337
14.2.4.1 Ejemplo prctico control RadioButtonList ........................................................... 337
14.2.5 Control MultiView ................................................................................................... 340
14.2.5.1 Ejemplo prctico control MultiView ..................................................................... 341
14.3 Controles para validar datos ..................................................................................... 348
14.3.1 Ejemplo prctico controles de validacin .............................................................. 348
15. ACCESO A BASES DE DATOS CON ASP.NET ................................................................ 353
15.1 Controles para operaciones con orgenes de datos ................................................. 353
15.2 Ejemplos prcticos bases de datos con ASP.NET ................................................... 353
15.2.1 Conexin a SQL Server por cdigo ....................................................................... 353
15.2.2 Conexin a una base de datos con un control GridView ...................................... 357
15.2.3 Consulta una base de datos utilizando el Explorador de servidores .................... 362
15.2.4 Insertar un registro en una tabla ............................................................................ 369
15.2.5 Modificar un registro de una tabla ......................................................................... 375
15.2.6 Eliminar un registro de una tabla ........................................................................... 378
15.2.7 Filtrar registros de una tabla .................................................................................. 382
15.2.8 Informe de los registro de una tabla ...................................................................... 388
15.2.9 Visualizar los registros de dos tablas relacionadas............................................... 396
15.3 Ejercicios bases de datos con ASP.NET.................................................................. 404
16. SERVICIOS WEB ................................................................................................................ 405
16.1 Crear un servicio Web desde Visual Basic .NET ..................................................... 405
16.2 Acceder a un Servicio Web ...................................................................................... 411
16.2.1 Ejemplo prctico para acceder a un Servicio Web desde ASP.NET .................... 411
NDICE ...................................................................................................................................... 416
BIBLIOGRAFA.......................................................................................................................... 419
INFOGRAFA............................................................................................................................. 419
ANEXO A SQL SERVER .......................................................................................................... 420
A.1 Conectarse a SQL Server. ......................................................................................... 420
A.2 Crear una base de datos ............................................................................................ 421
A.3 Crear tablas en la base de datos ............................................................................... 423
A.4 Crear Diagramas de una base de datos .................................................................... 431
A.5 Crear una vista ........................................................................................................... 435

PRLOGO
Visual Basic y ASP .NET a su alcance (bsico / intermedio) proporciona los elementos
necesarios para obtener un conocimiento hasta un nivel intermedio del lenguaje de
programacin Visual Basic. Este libro se elaboro pensado en aquellos usuarios que
estn interesado en conocer las posibilidades de programacin orientada a objetos con
Visual Basic .NET, lo relacionado con la creacin de clases, herencia e interfaces.
Adems conocer los fundamentos del lenguaje de programacin: definicin de
variables, constantes, tipos de datos, estructuras de control, mdulos, procedimientos,
matrices y colecciones, as como tambin la creacin de interfaz de usuario utilizando
aplicaciones Windows Forms y ASP.NET, acceso a bases de datos, el lenguaje de
consulta integrado LINQ y la creacin y la utilizacin de servicios Web.
Todo el material didctico del libro se trata de exponer en un lenguaje sencillo,
donde se hace una conceptualizacin bsica sobre cada tema y se complementa con
ejemplos prcticos explicados y graficados que aportan al objetivo de aprendizaje. Cada
ejemplo es explicado lnea por lnea. En algunos casos se exceptan explicaciones que
ya se han realizado.
Debido al enfoque practico, basado en ejercicios y al esfuerzo de sntesis resulta
posible utilizarlo para adquirir con facilidad y rapidez un conocimiento para el
desarrollo de aplicaciones con el lenguaje de programacin Visual Basic.NET.
Todos los ejemplos del libro se han codificado, compilado y ejecutado desde el
entorno de desarrollo integrado de Microsoft Visual Studio 2008 (la mayora de los
ejemplos tambin se pueden trabajar con las versiones Express Edition Visual Basic
2005/2008 y Visual Web Developer 2005/2008).
Captulos del Libro
Visual Basic y ASP .NET a su alcance contiene 16 captulos distribuidos de la siguiente
forma:

Capitulo 1, Introduccin a Visual Basic .NET: Se realiza una


conceptualizacin bsica sobre el lenguaje de programacin Visual Basic.
NET, el entorno de desarrollo de Microsoft Visual Studio y el componente
.NET Framework.
Capitulo 2, Un Primer Proyecto Windows Forms con VB.NET: Habla de
cmo crear un proyecto Windows Forms, la eleccin de la plantilla de
aplicaciones, la creacin de la interfaz de usuario, el establecimiento de las
propiedades en un objeto, la escritura de cdigo y la ejecucin del proyecto.
Capitulo 3, Fundamentos de Visual Basic .NET: Maneja los conceptos
bsicos del lenguaje de programacin Visual Basic .NET: variables,
constantes, tipos de datos, operadores, expresiones y sus palabras reservadas,
con ejemplo prcticos.
Capitulo 4, Estructuras de control: Maneja los conceptos de las estructuras
de decisin If, Else, IIf, Select y las estructuras repetitivas While, For- Next,
Do- Loop While, For Each, con una serie de ejemplos que permiten
reforzar los conceptos y con el planteamiento de unos ejercicios para
resolver.
7

Capitulo 5, Mdulos y Procedimientos: Aqu se habla sobre la creacin de


mdulos y procedimientos Sub y Function. Adems se conceptualiza sobre
algunas funciones predeterminadas de fecha y hora, matemticas y de
manipulacin de caracteres, complementado con ejemplos prcticos y
ejercicios para resolver.
Capitulo 6, Matrices y colecciones: Se habla sobre la estructuracin de
datos en matrices unidimensionales y bidimensionales con elementos de un
mismo tipo y las colecciones en memoria con tipos de datos diferentes; aqu
tambin se presentan ejemplos aplicados al tema, como tambin ejercicios
para practicar.
Capitulo 7, Controles para Interfaz de Usuario: Se explican y trabajan
controles que permiten mejorar el diseo de la interfaz grfica de usuario en
un programa apoyado por ejemplos.
Capitulo 8, Mens en Formularios: En este captulo encontrar la forma de
crear mens con interfaz de documento sencillo y mltiple, as como la
creacin de barras de herramientas, mens contextuales y desactivar
opciones del men, explicados a travs de ejemplos.
Capitulo 9, Grficos y animacin: Se conceptualiza sobre el espacio de
nombres System.Drawing, algunas funciones para graficar, el movimiento de
controles, la expansin y contraccin de controles, as como los aspectos
bsicos para lograr la animacin. Todo esto es apoyado con ejemplos
prcticos y ejercicios para practicar.
Capitulo 10, Manejo de eventos (mouse, teclado) : Se explican los
posibles eventos que pueden ocurrir al utilizar el mouse y el teclado, con
ejemplos prcticos para un mejor aprendizaje.
Capitulo 11, Programacin orientada a objetos utilizando VB.NET: Se
manejan los conceptos de programacin orientada a objetos utilizando el
lenguaje de programacin Visual Basic .NET en cuanto a: constructores,
sobrecarga de constructores, herencia, polimorfismo e interfaces, cada tema
explicado a travs de ejemplos.
Capitulo 12, Acceso a bases de datos con .NET: Se conceptualiza sobre
bases de datos, el lenguaje de consulta estructurado (SQL) y como se accede
a una base de datos para manipular la informacin contenida en ella,
complementada con ejemplos prcticos y ejercicios para resolver.
Capitulo 13, Lenguaje de consulta integrado (LINQ): En este captulo se
habla de cmo crear y ejecutar consultas de datos con colecciones de
memoria, con bases de datos SQL Server, apoyado por diversos ejemplos
para complementar el aprendizaje, as como una serie de ejercicios para
practicar.
Capitulo 14, Aplicaciones Web ASP.NET: En este captulo se habla de
cmo crear y ejecutar una aplicacin Web ASP.NET. Adems se explican
algunos controles utilizados en los formularios Web para el diseo de la
interfaz de usuario y para la validacin de datos. Todo esto es referenciado
por medio de ejemplos.
Capitulo 15, Acceso a bases de datos con ASP.NET: Se aplican los
conceptos de bases de datos y las formas de conexin que se manejan en el
captulo 12 en aplicaciones Web ASP.NET, apoyado con ejemplos. Adems
se presentan una serie de ejercicios como complemento al aprendizaje del
acceso a base de datos con ASP.NET.

Capitulo 16 Servicios Web: En este captulo se conceptualiza sobre los


servicios Web, la creacin de un servicio Web, as como la forma de accesar
a un servicio Web desde una aplicacin ASP.NET.
Anexo A: Se explica cmo se realiza la conexin a la base de datos SQL
Server, as como la creacin de una base de datos, la creacin de tablas,
diagramas y vistas dentro de la base de datos. Este anexo apoya cada uno de
los ejemplos de acceso a bases de datos en aplicaciones Windows Forms y
ASP.NET.

Como apoyo complementario a esta publicacin se ha incluido un CD que


contiene cada uno de los captulos del libro, el anexo explicativo de SQL Server 2005,
el cdigo fuente de todos los ejemplos mostrados en el libro por captulo. Adems se
incluye el documento del libro en pdf.
Si al insertar el CD no se ejecuta automticamente, el usuario deber abrir el
archivo inicio.html que se encuentra en el directorio raz del CD. Una vez abierto, se
podr ver la pgina de inicio y al pulsar la imagen Visual Basic y ASP .NET a su
alcance se visualizar la pgina principal donde encontrar los vnculos para cada
captulo, el anexo, el software, los archivos con el cdigo fuente y el documento del
libro.

1. INTRODUCCIN A VISUAL BASIC .NET


Visual Basic .NET (VB.NET) es una versin de Visual Basic enfocada al desarrollo de
aplicaciones .NET. Este lenguaje de programacin apareci en el ao 1991 como una
evolucin del QuickBasic que fabricaba Microsoft. Dicho lenguaje de programacin es
orientado a objetos y permite crear la interfaz de usuario utilizando formularios y
controles a los cuales se les puede escribir cdigo para definir el comportamiento de una
aplicacin. Visual Basic .NET contiene una serie de instrucciones, funciones y palabras
clave que estn relacionados con la interfaz grafica de Windows. Con este lenguaje es
posible la creacin de aplicaciones Windows Forms y sitios Web, donde se puede
realizar la gestin estructurada de errores, el soporte para la ejecucin de varios
subprocesos, as como la interaccin con archivos de texto, bases de datos, utilizando el
envi de datos con documentos XML1 y la generacin de informes, etc.. Generalmente
el usuario que programa con Visual Basic .NET utiliza el entorno de desarrollo
integrado de Microsoft Visual Studio NET (2003, 2005, 2008).
1.1 Microsoft Visual Studio .NET
Microsoft Visual Studio .NET es un entorno de desarrollo integrado (Integrated
Development Environment IDE) que ayuda a disear, desarrollar, depurar e implantar
con rapidez soluciones basadas en el marco de trabajo de .NET (.NET Framework 2.0,
3.0, 3.5). Desde all se pueden crear soluciones y proyectos que contendrn los
elementos bsicos de una aplicacin, conexiones de datos, carpetas y archivos
necesarios para crear
aplicaciones de consola, aplicaciones Windows Forms,
aplicaciones Web ASP.NET, servicios Web y aplicaciones mviles. Dicho entorno
permite trabajar con los lenguajes de programacin Visual Basic, Visual C#, Visual
C++. Asimismo dichos lenguajes utilizan las funciones de .NET Framework, las cuales
ofrecen acceso a tecnologas clave para simplificar el desarrollo de aplicaciones web
ASP y servicios Web XML. Es por eso, que con Visual Studio se simplifica el diseo,
desarrollo e implementacin en equipo de soluciones empresariales utilizando sus
herramientas de desarrollo basadas en componentes y otras tecnologas.
2008.

Para el objetivo del libro se trabajar con el entorno Microsoft Visual Studio

1.2 .NET FrameWork


Es un componente integral de Windows que proporciona un entorno para varios
lenguajes basado en estndares. El diseo de .NET FrameWork trata de cumplir los
siguientes objetivos:
Proporcionar un entorno de programacin orientada a objetos.
Ofrecer un entorno de ejecucin de cdigo que permita la ejecucin segura del
mismo.
Proporcionar un entorno que elimine los problemas de rendimiento.

XML, es el estndar de Extensible Markup Language. XML no es ms que un conjunto de reglas para
definir etiquetas semnticas que nos organizan un documento en diferentes partes. XML es un
metalenguaje que define la sintaxis utilizada para definir otros lenguajes de etiquetas estructurados.

10

Ofrecer un entorno coherente entre lenguajes de programacin diferentes


basados en Windows o Web.
Ofrecer estndares para que el cdigo de .NET FrameWork se pueda integrar
con otros tipos de cdigo.
.NET FrameWork se compone de dos partes principales: Common Language Runtime
(CLR) y una biblioteca de clases.
Common Language Runtime es el motor en tiempo de ejecucin, ya que
administra el cdigo en tiempo de ejecucin y proporciona los servicios de
administracin de memoria, de subprocesos y la interaccin remota, al tiempo que
aplica una seguridad al acceso del cdigo. El cdigo del motor en tiempo de ejecucin
se denomina cdigo administrado, al resto de cdigo se le denomina cdigo no
administrado. Common Language Runtime proporciona servicios estndares de motor
en 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 de mquina nativo del sistema en el que se ejecuta.
Mientras tanto, el administrador de memoria evita que la memoria se pueda fragmentar.
Para entender cmo funciona el .NET FrameWork, es necesario conocer la siguiente
terminologa:
Clase: es una entidad de programacin con nombre que consta de un conjunto
comn de mtodos, propiedades y atributos. Por ejemplo, Form es una de las
clases del espacio de nombres System.Windows.Forms que se utiliza para crear
formularios Windows Forms.
Espacio de nombres: identifica una coleccin de clases relacionadas y/u otros
espacios de nombres del .NET FrameWork. Algunos ejemplos de espacios de
nombres incluyen:
System
System.Windows.Forms
La biblioteca de clases es una completa coleccin orientada a objetos de tipos
reutilizables que se pueden emplear para desarrollar aplicaciones de interfaz grfica de
usuario o de lnea de comandos hasta las aplicaciones ASP.NET, como los formularios
Web Forms y los servicios Web XML. La biblioteca de clases permite administrar las
cadenas, recolectar datos, conectar bases de datos y permitir el acceso a archivos, como
tambin desarrollar las siguientes aplicaciones y servicios:

Aplicaciones de consola.
Aplicaciones Windows Forms.
Aplicaciones Windows Presentation Foundation (WPF).
Aplicaciones ASP.NET
Servicios Web.

1.3 Pgina de Inicio Visual Studio .NET/2008


Al instalarse Microsoft Visual Studio 2008, se crea en el computador una carpeta
llamada Microsoft Visual Studio 2008 (Por omisin), donde encontrar los accesos
directos a los programas: Visual Studio Remote Tools, Visual Studio Tools,
documentacin de Microsoft Visual Studio 2008 y Microsoft Visual Studio 2008.

11

Para iniciar el entorno de Visual Studio .NET 2008 pulse la opcin


Visual Studio 2008.

Microsoft

En la pgina de inicio de Visual Studio .NET/2008, encontrar una barra de


mens con los mens desplegables: Archivo, Editar, Ver, Herramientas, Prueba,
Ventana y Ayuda. Adems una barra de herramientas estndar de Windows, como
tambin las ventanas: Cuadro de Herramientas, Explorador de soluciones y Lista de
errores. La figura 1.1, muestra la pgina de inicio:
Figura 1.1 Pgina de Inicio Visual Studio 2008.

Las principales caractersticas del IDE de Microsoft Visual Studio/2008 se


describen en la siguiente tabla:
Tabla 1.1 caracteristicas de programacin en Visual Basic .NET.
Caracterstica

Descripcin

Diseador de Windows
Forms

Una superficie de diseo grfico que permite crear


rpidamente la interfaz de usuario de una aplicacin. Se
puede arrastrar o dibujar controles sobre esta superficie.

Herramientas
Aplicaciones
Forms

para
Windows

Se proporciona una plantilla Aplicacin Windows Forms,


con referencias de proyectos bsicos y cdigo de inicio
como ayuda para crear aplicaciones Windows Forms
estndares.

Herramientas para Web


Forms

Se proporciona una plantilla Aplicacin Web ASP.NET, con


referencias de proyectos bsicos y cdigo de inicio como
ayuda para crear aplicaciones Web ASP.NET en las que la
interfaz de usuario principal es un navegador.

Herramientas
servicios Web XML

Se proporciona una plantilla Aplicacin de servicios Web


ASP.NET. Esta plantilla construye la estructura de un
proyecto de aplicacin Web en un servidor Web de
desarrollo.

para

12

Soporte
de
lenguajes

mltiples

Soporta los lenguajes de programacin de la plataforma


.NET: Visual Basic .NET, Visual C++ y Visual C#, que
estn integrados en el entorno de desarrollo.

Acceso a datos

Componentes para crear aplicaciones que comparten


datos, herramientas de bases de datos visuales para
acceder a los datos y un robusto conjunto de clases de
Microsoft ADO.NET.

Gestin de errores

Las herramientas de depuracin con soporte multilenguaje


ayudan a encontrar y solucionar errores de cdigo, donde
se pueden utilizar clases de excepciones estructuradas
para incluir la gestin de errores en una aplicacin.

Asistentes

Los asistentes ayudan a completar rpidamente tareas


comunes. Cada pgina de un asistente ayuda a establecer
opciones, configurar y personalizar proyectos.

Microsoft Visual Studio/2008 trabaja con el marco de trabajo .NET FrameWork


3.5., el cual agrega de forma incremental las nuevas caractersticas de .NET FrameWork
3.0. Algunas de estas caractersticas son:

Integracin total de LINQ2 (Language Integrated Query) y del reconocimiento


de los datos: permite escribir cdigo en idiomas habilitados para LINQ para
filtrar, enumerar y crear proyecciones de varios tipos de datos SQL, colecciones,
XML y conjuntos de datos usando la misma sintaxis.
ASP.NET AJAX: permite crear experiencias Web ms eficaces, ms interactivas
y con un gran ndice de personalizacin que funcionan con los exploradores ms
usados.
Nueva compatibilidad con el protocolo web para generar servicios WCF, como
por ejemplo AJAX, JSON, REST, POX, RSS, ATOM.
Nuevas clases en la biblioteca de clases base (BCL) de .NET FrameWork 3.5
que tratan numerosas solicitudes de cliente comunes.

Un nuevo conjunto de herramientas diseado para reducir la complejidad del acceso a Base de Datos.

13

2. PROYECTOS WINDOWS FORMS CON VISUAL BASIC .NET


Crear una aplicacin Windows Forms en Visual Basic .NET, requiere de unos pasos
muy sencillos como son: iniciar un nuevo proyecto Visual Basic .NET, crear la interfaz
del usuario, establecer las propiedades de los objetos, escribir el cdigo, guardar la
aplicacin y ejecutar el proyecto.
Como ejemplo, se crear un proyecto Windows Forms llamado
MiprogramaWF que permita a un usuario digitar un nmero y al pulsar un botn se
muestre en una cuadricula la tabla de multiplicacin hasta 10 de dicho nmero.
2.1 Crear una Aplicacin Windows Forms
Para crear una aplicacin Windows Forms desde la pgina de inicio de Visual Studio, se
pueden seguir los siguientes pasos:

1. En la ventana proyectos recientes seleccionar la opcin Crear: link Proyecto


2. Hacer clic en la opcin Archivo del men y seleccionar Nuevo Proyecto...

Cuando se crea un proyecto por cualquier de las dos opciones se visualiza la


siguiente ventana:
Figura 2.1 Ventana Nuevo proyecto.

2.2 Elegir la plantilla de aplicaciones.


Visual Studio .NET ofrece varias plantillas de aplicaciones para soportar el desarrollo
de diferentes tipos de aplicaciones y componentes. Antes de iniciar un nuevo proyecto,
se debe escoger el tipo de plantilla que se va a utilizar. Una plantilla de aplicacin
proporciona archivos de inicio y una estructura de proyecto, adems contiene los
objetos bsicos del proyecto y la configuracin del entorno que se necesita para crear el
tipo de aplicacin que se desea. En los ejemplos del libro se utilizarn las plantillas:

14

Aplicacin para Windows Forms y Aplicacin Web ASP.NET. La plantilla


Aplicacin para Windows Forms proporciona las herramientas, estructura y cdigo de
inicio para crear una aplicacin estndar basada en Windows, aadiendo
automticamente las referencias bsicas del proyecto y los archivos a utilizar como
punto de partida para la aplicacin. La plantilla Aplicacin Web ASP.NET se utiliza
para crear una aplicacin Web ASP.NET en un equipo que tenga instalado Internet
Information Services (IIS)3 versin 5.0 o posterior. Para iniciar el diseo de la
aplicacin la plantilla crea los archivos bsicos necesarios en el servidor.
Para el ejemplo como Tipo de proyecto se debe seleccionar Visual Basic Windows, como plantilla Aplicacin de Windows Forms, como Nombre del proyecto
MiProgramaWF. Pulse el botn Aceptar para visualizar el entorno de desarrollo del
proyecto Windows Forms MiProgramaWF.
Figura 2.2 Entorno de desarrollo nuevo proyecto Windows Forms.

Cuando se selecciona una plantilla de aplicaciones, en el entorno de desarrollo


encontrar:
1. Men principal y la barra de herramientas estndar: Proporcionan acceso a
la mayora de comandos que controlan el entorno de programacin de Visual
Studio .NET. Los comandos del men principal funcionan igual que en todas
las aplicaciones basadas en Windows. La barra de herramientas proporciona los
iconos que sirven como acceso a la mayora de comandos estndar de Windows.
Tambin contiene iconos que permiten abrir el explorador de soluciones, la

Este servicio convierte a un computador en un servidor de Internet o Intranet es decir


que en los computadores que tienen este servicio instalado se pueden publicar pginas
Web tanto local como remotamente (servidor Web).

15

ventana de propiedades, el cuadro de herramientas y otros elementos


importantes del entorno de desarrollo.
Figura 2.3 Menu principal y barra de herramientas estndar.

Men Principal

Barra de Herramientas

2. Cuadro de Herramientas: El cuadro de herramientas contiene diversos


controles que se pueden utilizar para aadir ilustraciones, etiquetas, botones,
cuadros de lista, barras de desplazamiento, mens y formas geomtricas a una
interfaz de usuario. Cada control que se aade a un formulario se convierte en un
objeto de la interfaz de usuario programable en la aplicacin. Estos objetos son
visibles para los usuarios cuando la aplicacin se ejecuta y funcionan como los
objetos estndares de cualquier aplicacin basada en Windows.
Figura 2.4 Cuadro de Herramientas.

3. Diseador formulario Windows (Windows Forms): Cuando se inicia un


proyecto en Visual Basic .NET, el Diseador de formulario de Windows
(Windows Forms) se abre en la vista diseo (un formulario tiene vista diseo
cuando se inicia el proyecto y est en modo de ejecucin cuando se ejecuta la
aplicacin), mostrndose el formulario Form1 del proyecto. En dicho
formulario se pueden ubicar los controles u objetos necesarios para la aplicacin
arrastrndolos desde el cuadro de herramientas para crear la interfaz de usuario.
El formulario predeterminado contiene los elementos mnimos utilizados por la
mayora de formularios: una barra de ttulo, un cuadro de control y los botones
16

minimizar, maximizar y cerrar. Para visualizar un formulario en la vista Diseo


se puede realizar siguiente:
o

Con el Explorador de soluciones

, hacer doble clic en el formulario.

En el Explorador de soluciones
el botn Ver Diseador

, seleccionar el formulario y d clic en

de la barra de herramientas.

Figura 2.5 Formulario Windows.

4. Explorador de soluciones
: Permite visualizar archivos y realizar tareas de
administracin de archivos en una solucin o en un proyecto. Una solucin es un
contenedor para proyectos y elementos de solucin que pueden incluirse en una
aplicacin. Normalmente, una solucin contiene uno o ms proyectos
relacionados. Un proyecto es un contendor dentro de una solucin que se utiliza
para administrar, generar y depurar lgicamente los elementos del (os) proyecto
(s) que constituyen la aplicacin.
Figura 2.6 Ventana Explorador de soluciones.

17

La siguiente tabla describe algunos tipos de archivos habituales especficos para


las soluciones basadas en Visual Basic .NET:
Tabla 2.1 Tipos de Archivos en Visual Basic .NET.
Extensin

Nombre

Descripcin

.sln

Solucin
Studio

Visual

Organiza proyectos, elementos de proyectos y


elementos de soluciones en una solucin
proporcionando al entorno referencias a sus
ubicaciones en disco.

.suo

Solution
options

user

Registra todas las opciones que podemos asociar a


nuestra solucin de forma que cada vez que
abramos la solucin incluya las personalizaciones
que hayamos realizado.

.vb

Proyecto
Basic

Visual

Representa los archivos de formularios, controles de


usuario, clases y mdulos que pertenecen a la
solucin de un solo proyecto. Los archivos que no
estn basados en un lenguaje de programacin
tienen su propia extensin. Por ejemplo, un archivo
Crystal Report tiene la extensin .rpt, y un archivo
de texto tiene la extensin .txt.

.vbproj

Proyectos Visual
Basic

Representa los archivos de formularios, controles de


usuario, clases y mdulos que pertenecen a la
solucin con mltiples proyectos. Esta extensin
nos permite diferenciar entre archivos escritos en
Visual Basic .NET y otros lenguajes compatibles con
.NET. (Visual C# utiliza .csproj.)

.aspx
.asmx
.asax

Elementos
de
proyecto Web

Los elementos de proyecto Web incluyen archivos


Web especficos como .aspx para Web Forms,
.asmx para servicios Web XML, y .asax para clases
globales de aplicaciones. Los proyectos Web
tambin utilizan la extensin .vb para clases y
mdulos.

5. Ventana de propiedades: Muestra una lista de las propiedades que facilitan la


configuracin de los valores o propiedades del control seleccionado y se pueden
modificar mientras se crea o se edita la aplicacin. Una propiedad describe una
caracterstica de un objeto, como el tamao, ttulo, color, etc. Algunos controles,
documentos y formularios muestran un gran nmero de propiedades en la
ventana Propiedades., Esto puede dificultar la localizacin de la propiedad que
se desea establecer. La ventana Propiedades permite seleccionar las
propiedades de un formulario o control en una vista ordenada por categoras en
lugar de una vista alfabtica, segn sea el caso se puede realizar lo siguiente:
o

Para visualizar las propiedades por categoras: Haga clic en el botn Por
de la ventana Propiedades. Las propiedades para el formulario o
categoras
control seleccionado se dividirn en categoras definidas por el control.

Para visualizar las propiedades de una categora: se expande el nodo


de la
propiedad El signo ms (+) permite expandir la propiedad y el signo menos (-)
contraer la propiedad.

Para visualizar las propiedades alfabticamente, d clic en el botn Alfabtico


de la ventana de propiedades.

18

Figura 2.7 Cuadro de propiedades.

6. Ventana de depuracin de errores: Muestra una lista de los errores que se


generan al realizar modificaciones a los controles o al ejecutar la aplicacin.
Figura 2.8 Ventana de lista de errores.

2.3 Crear la interfaz de usuario.


Para crear la interfaz de usuario de la aplicacin, en primer lugar se deben ubicar los
controles necesarios en un formulario desde el cuadro de herramientas. D clic en el
control que se desea aadir y arrstrelo a la ubicacin deseada en el formulario. Para
este caso de ejemplo se diseara la interfaz de usuario utilizando los siguientes
controles: 3 Label (etiqueta), 1 TextBox (campo de texto), 1 Button (botn) y 1
DataGridView (malla de datos).
Los siguientes pasos permiten:
1. Cambiar la posicin de un control: Hacer clic en el mismo para seleccionarlo, y
arrastrarlo a la posicin deseada en el formulario.
2. Cambiar el tamao de un control: Hacer clic en el control para seleccionarlo,
mantener pulsado y arrastrar uno de los extremos de ajuste del tamao hasta que el
control tenga el tamao deseado y soltar el botn del mouse.

Cuando existen varios controles del mismo tipo, estos se numeran en el mismo orden en
que son colocados (nombre del control ms nmero del consecutivo). La interfaz de
usuario del ejemplo ser como muestra la figura a continuacin.
19

Figura 2.9 Prepantalla de la interfaz de usuario.

2.4 Establecer las propiedades de los controles


Despus de colocar los controles u objetos a un formulario, se puede establecer sus
propiedades en la ventana Propiedades o en el Editor de cdigo.
Para modificar las propiedades se selecciona el control en el formulario y se
cambia su configuracin en la ventana Propiedades. Para el caso del ejemplo
establezca las siguientes modificaciones en la propiedad correspondiente a cada uno de
los siguientes controles:
Tabla 2.2 Propiedades de los controles de la aplicacin MiProgramaWF.
Control
Label1

Label2
Label3
TextBox1
Button1
Form1

Propiedad
Name
Text
Font - Bold
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text

Valor
titulo
Generar una tabla de
multiplicar:
True
txtnumero
Digite numero:
txttabla
La tabla del numero
camponumero
En blanco
boton
Ver tabla
formulario
Tablas de multiplicar

La interfaz de usuario con las modificaciones respectivas en las propiedades de


cada control queda como se muestra en la siguiente figura:

20

Figura 2.10 Pantalla final de la interfaz de usuario.

2.5 Escribir cdigo


Una vez se hayan establecido las propiedades inciales del formulario y sus objetos, se
puede agregar el cdigo que se ejecutar en respuesta a un evento especifico de cada
control. Los eventos ocurren cuando se realizan diferentes acciones sobre un control u
objeto. Por ejemplo, el evento Clic de un botn tiene lugar cuando un usuario hace clic
sobre l con el mouse. Por lo general en las aplicaciones, es necesario escribir cdigo
para lograr el objetivo de dar solucin al problema planteado por el usuario. Para
escribir cdigo que se ejecute en un evento determinado de un control, se debe realizar
lo siguiente:
1. Seleccionar el control en el que se desea escribir cdigo.
2. En el men Ver, d clic en la opcin Cdigo para abrir el Editor de cdigo o doble clic
sobre el control.
3. En la lista Nombre de mtodo, haga clic en el evento deseado para abrir su gestor de
eventos en el Editor de cdigo. El Editor de cdigo muestra las sentencias de
programacin que marcan el inicio (Sub) y el final (End Sub) del procedimiento del
evento en particular.
4. Escriba el cdigo entre los puntos inicial y final del cuerpo del procedimiento.

El Editor de cdigo contiene dos listas desplegables en la parte superior de la


ventana: la lista Nombre de Clase a la izquierda y la lista Nombre de mtodo a la
derecha. La lista Nombre de Clase muestra todos los controles del formulario asociado.
Si se hace clic en el nombre de un control de la lista, la lista Nombre de mtodo
muestra todos los eventos de dicho control (los eventos son acciones que se realizan
sobre el control y que la aplicacin puede interpretar). Utilizando las listas Nombre de
Clase y Nombre de mtodo conjuntamente, se puede localizar rpidamente y editar el
cdigo de la aplicacin.

21

Figura 2.11 Editor de cdigo del objeto boton.

Para el caso del ejemplo d doble clic en el objeto Button llamado boton y abra
el editor de cdigo, la figura muestra el editor de cdigo del control
Ahora escriba el siguiente cdigo entre Private Sub y End Sub:
With tabla
.Columns.Add("Multiplicando", " Multiplicando ")
.Columns.Add("Multiplicador", " Multiplicador ")
.Columns.Add("Producto", "Producto")
.RowCount = 10
For i As Integer = 0 To .RowCount - 1
.Item(0, i).Value = camponumero.Text
.Item(1, i).Value = i + 1
.Item(2, i).Value = (camponumero.Text * (i + 1))
Next
End With

Este cdigo sirve para rellenar el objeto tabla con los respectivos datos.
Utilizando el mtodo Add de la propiedad Columns se le adicionan los nombres
Multiplicando, Multiplicador, Producto en la primera fila y la propiedad RowCount
se le asigna un valor de 10 filas. Con un ciclo For que se ejecutar desde una posicin i
igual a cero (0) hasta el numero de filas -1 del objeto tabla y por cada fila tres tems. En
la primera columna se imprimir el valor digitado en el objeto camponumero, en la
segunda columna se imprimir el valor de i+1, en la tercera columna el producto de
multiplicar el valor del objeto camponumero por i+1.
2.6 Guardar la aplicacin
Una vez finalizada la creacin de la aplicacin, se debe guarda la aplicacin dentro del
entorno de desarrollo para asegurar que todos los cambios realizados se almacenen, esto
se puede realizar de la siguiente forma:

En el men Archivo, d clic en Guardar todo.

O hacer clic en el icono

de la barra de herramientas.

Cualquier opcin visualizar la siguiente ventana:

22

Figura 2.12 Ventana para Guardar el proyecto.

Se debe seleccionar la ubicacin en donde se guardar el proyecto. Al pulsar el


botn Guardar se crear una carpeta con el mismo nombre del proyecto. Dentro de
dicha carpeta se crean los archivos:
1. Un archivo de proyecto .vbproj, el cual contiene informacin especfica para una
determinada tarea de programacin.
2. Un archivo de solucin .sln, el cual contiene informacin relacionada con uno o ms
proyectos. Siempre elija el archivo solucin para abrir un proyecto.

2.7 Ejecutar la aplicacin Windows Forms.


Para ejecutar el proyecto en el entorno de desarrollo de Visual Basic.NET se debe
realizar lo siguiente:
1. Hacer clic en el botn Iniciar
de la barra de herramientas estndar. Tambin puede
presionar F5 para ejecutar el proyecto. Si la aplicacin se ejecuta sin errores,
aparecer una versin ejecutable del formulario.
2. Cuando termine de ejecutar la aplicacin se debe cerrar el formulario para regresar al
entorno de programacin.

Cuando se ejecuta un proyecto o solucin, automticamente se crea un archivo


ejecutable (.exe) en la carpeta nombre_carpeta_proyecto\bin\Debug y
nombre_carpeta_proyecto\bin\Release (en el caso del ejercicio el nombre de la
carpeta es MiProgramaWF). Otra forma de generar un archivo ejecutable es seleccionar
en el men Generar la opcin Generar nombre_proyecto.
Para ejecutar la aplicacin MiProgramaWF desde el sistema operativo
Windows, existen dos formas de hacerlo: la primera es utilizando el comando Ejecutar
del men Inicio y buscar el archivo MiProgramaWF.exe que se encuentra en la
carpeta PrimerPrograma\bin\Debug PrimerPrograma\bin\Release. La segunda
forma es realizar la bsqueda de la carpeta PrimerPrograma\bin\Debug
PrimerPrograma\bin\Release utilizando el explorador de Windows y hacer doble clic
en el nombre del archivo MiProgramaWF.exe para ejecutarlo.
Visual Basic .NET instala de manera automtica los archivos de soporte,
incluyendo las bibliotecas de vnculos dinmicos y archivos de .NET Framework.
Visual Studio puede crear dos tipos de archivos ejecutables:
1. Debug: Compilacin de depuracin, se utiliza cuando se prueba y depura un programa
(Default).
2. Release: Versin de edicin, se utiliza cuando se termina el programa siendo esta una
versin optimizada de menor tamao

23

Si se escribe el nmero 5 en el campo de texto y se pulsa el botn Ver Tabla, se


visualizar la siguiente figura.
Figura 2.13 Aplicacin MiProgramaWF ejecutado.

2.8 Cerrar y Abrir un proyecto Windows Forms.


Para cerrar el proyecto MiProgramaWF o cualquier otro proyecto, en modo diseo se
pueden realizar los siguientes pasos:
1. En el men Archivo, hacer clic en la opcin Cerrar Proyecto.
2. Si desea cerrar el proyecto y salir de Visual Studio, en el men Archivo haga clic en la
opcin Salir.

En cada caso se deben guardar los nuevos cambios que se hayan realizado.
Para volver a abrir la aplicacin MiProgramaWF o cualquier otra aplicacin
existente se debern realizar los siguientes pasos:
1. Abrir Visual Studio .NET.
2. Si en la pantalla inicial de Visual Studio .NET se visualiza el nombre del proyecto que
se desea abrir haga doble clic para abrir la aplicacin. Si por el contrario no se visualiza
la aplicacin en el men Archivo, seleccione Abrir proyecto..., busque la carpeta
MiProgramaWF y seleccione el archivo MiPrograma.sln y pulse la opcin Abrir para
abrir la aplicacin en el entorno de desarrollo de Visual Basic .NET.

24

3. FUNDAMENTOS DE VISUAL BASIC .NET


Para iniciar el conocimiento del mundo Visual Basic .NET, es necesario conocer
conceptos fundamentales como: creacin de variables, constantes, tipos de datos, tipos
de operadores, definicin de comentarios, expresiones, etc.
3.1 Variables
Una variable es un espacio de memoria para almacenar un valor de un determinado
tipo de dato dentro de un programa. El valor de la variable puede ser modificado
durante la ejecucin del programa. El nombre de la variable puede contener letras,
nmeros, etc., los nombres de las variables deben aportar informacin que permita
identificar el tipo de informacin que se va a almacenar. Para declarar una variable se
utiliza la palabra clave Dim. El formato para declarar variables es:
Dim nombre_variable As tipo_de_dato

Despus de declarar el tipo de variable, se le puede asignar un valor inicial de la


siguiente forma:
nombre_variable= valor_inicial

Tambin es posible declarar una variable con el siguiente formato:


Dim nombre_variable As tipo_de_dato = valor_inicial

Las variables pueden ser locales o globales. Las variables locales son aquellas
que se crean dentro de un bloque especfico de programacin y se destruirn al
finalizarse el bloque de programacin.
Ejemplo:

Private Sub funcin ()


Dim var_local As Integer (variable local)
var_local=10

End Sub

Las variables globales son aquellas que pueden ser modificadas desde cualquier
punto de un programa.
Ejemplo:
Public Class Variables_Globales
Public var_global As Integer (variable global)
Private Sub funcin ()
Dim var_local As integer
var_global=10 (valor modificado en la funcin1 ())
::::::::
End Sub
Private Sub funcin2 ()
Dim var_local As integer
var_global=20 (valor modificado en la funcin2 ())
::::::::::
End Sub

::::::::::::::::
End Class

25

3.2 Constantes
Son variables que permanecen constantes durante el desarrollo del programa. Existen
constantes numricas, de carcter, lgicas, etc. El formato de la declaracin de una
variable constante es:
Ejemplo:

Const nombre_variable As tipo_de_dato= valor_constante


Const miconstante As Integer= 10

3.3 Tipos de datos


Un tipo de dato define todo el posible rango de valores que una variable puede tomar al
momento de la ejecucin de un programa y a lo largo de toda la vida til del propio
programa. Para seleccionar un tipo de dato en un programa se debe tener en cuenta el
que mejor se adapte a los datos. Por ejemplo, si un programa necesita almacenar valores
entre -20000 y 30000, los tipos de datos que se podran utilizar seran short, long,
integer. Si utiliza el tipo de dato short, la aplicacin utilizara menos memoria para
almacenar el valor de la variable. A continuacin se presenta la tabla con los tipos de
datos que soporta Visual Basic .NET y su respectivo tamao.
Tabla 3.1 Tipos de datos de Visual Basic .NET.
Tipo
Boolean
Byte
Char
DateTime
Decimal
Double

Integer
Long
Short
Single

String

Valores
Representa un valor verdadero (True) o falso (False).
Representa un valor de 8 bits en un rango entre 0 y 255.
Representa un carcter de 16 bits.
Representa un valor de fecha y hora.
Representa un valor de 28 dgitos significativos. De +/7,9228162514264337593543950335.
Representa un valor en coma flotante de 64 bits. De 1,79769613486231570E+308
a
4,94065645841246544E-324 para valores negativos;
4,94065645841246544E-324
a
1,79769613486231570E+308 para valores positivos.
Representa un valor entre un rango de +/-2,147,483,698
Representa un valor entre un rango de +/9.223.372.036.854.775.807
Representa un valor entre un rango de +/- 32.677
De -3,4028235E+38 a -1,401298E-45 para los valores
negativos; 1,401298E-45 a 3,4028235E+38 para los
valores positivos.

Tamao
2 bytes
1 byte (0-255)
2 bytes (0-65535)
8 bytes
12 bytes

Cadena de caracteres

0 a 2 millones de
caracteres.

8 bytes

4 Bytes
8 Bytes
2 Bytes
4 bytes

3.3.1 Ejemplo prctico tipos de datos


Realizar una aplicacin Windows Forms llamado TiposdeDatos que permita a un
usuario visualizar en cajas de texto los diferentes tipos de datos cuando se pulse un
botn llamado Tipos de Datos. Adems poder salir de la aplicacin utilizando un botn
llamado Salir.

26

Iniciar un nuevo proyecto Visual Basic .NET


1. En el men Archivo, d clic en Nuevo Proyecto.
2. En el panel Tipos de proyecto, haga clic en Visual Basic luego en Windows. En el
panel Plantillas, haga clic en Aplicacin de Windows Forms.
3. En el cuadro Nombre escriba TiposdeDatos y a continuacin d clic en el botn
Aceptar.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 10 Label, 10 Textbox, 2
Button. La figura 3.1., muestra la interfaz de usuario para la aplicacin TiposdeDatos.
Figura 3.1 Interfaz de usuario (tipos de datos).

Establecer las propiedades de los objetos del interfaz de usuario

Despus de colocar los controles u objetos a un formulario, se puede establecer sus


propiedades en la ventana Propiedades o en el Editor de cdigo.
Para modificar las propiedades se selecciona el control en el formulario y se
cambia su configuracin en la ventana Propiedades. Para el caso del ejemplo,
establezca las modificaciones a los controles que se muestran en la tabla 3.2:

27

Tabla 3.2 Propiedades de los controles de la aplicacin TiposdeDatos.


Label1

Control

Label2
Label3
Label4
Label5
Label6
Label7
Label8
Label9
Label10
TextBox1TextBox10
Button1
Button2
Form1

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text

Valor
lblboolean
Boolean:
lblbyte
Byte:
lblchar
Char:
lblfechora
Fecha/Hora:
lbldecimal
Decimal:
lbldouble
Double:
lblinteger
Integer:
lbllong
Long:
lblshort
Short:
lblstring
String:
Txtcampo1txtcampo10
En blanco
boton
Tipos de Datos
botonsalir
Salir
formulario
Tipos de datos en Visual
Basic .NET

Escribir cdigo

Una vez se hayan establecido las propiedades inciales del formulario y sus objetos, se
puede agregar cdigo que se ejecutar en respuesta a eventos.
Para escribir cdigo que se ejecute en un evento determinado del control, realice
lo siguiente:
1. En el Explorador de soluciones, seleccione el control para el que desea escribir
cdigo.
2. Escriba el cdigo entre el punto inicial
procedimiento.

(Sub) y final del cuerpo (End Sub) del

Para el ejemplo, d doble clic sobre el objeto boton para ver el editor de cdigo,
la figura 3.2, muestra el editor de cdigo del control.
Figura 3.2 Editor de cdigo del control boton de la aplicacin TiposdeDatos.
Public Class formulario

28

Private Sub boton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles boton.Click
:::::::::::::::,
End Sub
End Class

Entre Sub y End Sub escriba el siguiente cdigo:


Dim boleana As Boolean = False
Dim bytes As Byte = 101
Dim caracter As Char = "a"
Dim fechas_hora As Date
Dim con_decimal As Decimal = 10.23
Dim entera As Integer = 32000
Dim doble As Double = 63528457
Dim larga As Long = 100258479
Dim corta As Short = 27000
Dim cadena As String = "hola mi gente"
txtcampo1.Text = boleana
txtcampo2.Text = bytes
txtcampo3.Text = caracter
txtcampo4.Text = fechas_hora
txtcampo5.Text = con_decimal
txtcampo6.Text = doble
txtcampo7.Text = entera
txtcampo8.Text = larga
txtcampo9.Text = corta
txtcampo10.Text = cadena

En el anterior cdigo se definen las diferentes variables determinando el tipo de


dato que almacenarn respectivamente. Adems se inicializan las variables con los
valores apropiados para cada tipo de dato. La variable fechas_hora es la nica que no
es inicializada, en dicha variable se almacenar los valores predeterminados de tipo
Date del sistema operativo. Por ltimo se le asigna a la propiedad Text de cada control
txtcampo110 la respectiva variable. Cuando el usuario pulse el botn en tiempo de
ejecucin se mostrar en cada cuadro de texto el valor respectivo de la variable que ha
sido asignada.
Despus d doble clic sobre el objeto botonsalir, para abrir el editor de cdigo y escriba
el siguiente cdigo:
End

Se utiliza la instruccin End para detener la ejecucin de una aplicacin. Visual


Basic .NET dispone de varias palabras reservadas que no pueden ser utilizadas como
variables, este tema ser tratado ms adelante.

Guardar la aplicacin

Una vez finalizada la creacin de la aplicacin, se guarda dentro del entorno de


desarrollo para asegurar que se almacenen los cambios realizados en los diferentes
objetos que contiene la aplicacin, esto lo puede realizar de la siguiente forma:

En el men Archivo, d clic en Guardar todo.

O haga clic en el icono

de la barra de herramientas

29

Ejecutar el proyecto

Para ejecutar el proyecto en el entorno de desarrollo de Visual Basic.NET se debe


realizar lo siguiente:
Haga clic en el botn Iniciar de la barra de herramientas estndar. Tambin
puede presionar F5 para ejecutar el proyecto. Si la aplicacin se ejecuta sin
errores, aparecer una versin ejecutable de la aplicacin. Al pulsar el botn
Tipos de Datos, se visualizar la siguiente figura:
Figura 3.3 Ejecucin aplicacin TiposdeDatos.

Si desea salir de la aplicacin pulse el botn Salir para regresar al entorno de


programacin.
3.4 Funciones de conversin de tipos de datos
Son funciones que se utilizan para realizan conversin a un tipo de dato diferente al que
inicialmente estaba estipulado en una variable. Estas funciones generalmente forman
parte del cdigo de un programa. Su formato es:
Objeto_nuevo_tipo=nombre_funcin_de_conversion (expresin).
Donde expresin es el tipo de datos actual. Algunas funciones de conversin se
presentan en la siguiente tabla:

30

Tabla 3.3 Funciones de conversin.


Funcin
CBool

Tipo de dato devuelto


Booleano

CByte

Byte

CChar

Char

CDbl

Double

CDate

Fecha

CDec

Decimal

CInt

Entero

CLng

Long

CShort

Short

Str

String

Val

Numrico

Ejemplo
Dim x,y As Integer
Dim valor as Boolean
x=10
y=10
valor = CBool(x=y) Devuelve verdadero
(True).
Dim x As Double
Dim valor as Byte
x=10.5658
valor = CByte(x) Devuelve 11.
Dim x As String
Dim valor as Char
x=ABC
valor = CChar(x) Devuelve A. Solo convierte
el primer carcter a Char.
Dim x As Decimal
Dim valor as Double
x=158.2459
valor = CDbl(x) Devuelve 158,2459.
Dim x As String
Dim valor as Date
x=Agosto 30, de 2010
valor = CDate(x) Devuelve 30/8/2010.
Dim x As Double
Dim valor as Decimal
x=16547.2358
valor= CDec(x) Devuelve 16547,2358.
Dim x As Double
Dim valor as Integer
x=16.23
valor= CInt(x) Devuelve 16.
Dim x As Double
Dim valor as Long
x=1658.55
valor= CLng(x) Devuelve 1659. En la parte
decimal se aproxima al entero superior si es
>=.5 y al entero inferior si es <.5.
Dim x As Double
Dim valor as Long
x=1658.49
valor= CShort(x) Devuelve 1658. Se
aproxima al entero superior si es >=.5 y al
entero inferior si es <.5.
Dim x As Integer
Dim valor as String
x=15
valor= Str(x) Devuelve el String 15.
Dim x As String
Dim valor as Integer
x=15
valor= Val(x) Devuelve el nmero 15.

31

3.5 Operadores y Expresiones


Los operadores son smbolos que pueden realizar acciones sobre uno o dos operandos.
Se clasifican en: aritmticos, relacionales, lgicos, de asignacin. Las expresiones son
combinaciones de constantes, variables, smbolos de operaciones, parntesis.
3.5.1 Operadores aritmticos
Se utilizan para crear expresiones aritmticas, estas pueden resultar de la unin de
variables o constantes con operadores.
Tabla 3.4 Operadores Aritmticos.
Operadores de Visual
Basic .NET
Suma
Resta
Multiplicacin
Divisin
Divisin entera
Residuo
Exponenciacin

Operador

Expresin

+
*
/
\
mod
^

numero1 +numero2
numero1 numero2
numero1 * numero2
numero1 / numero2
numero1 \ numero2
numero1 mod numero2
numero1 ^ numero2

3.5.2 Operadores relacionales


Se utilizan para la toma de decisiones que se puedan necesitar dentro de un programa.
Tabla 3.5 Operadores relacionales.
Operadores
Relacionales
Mayor que
Mayor o igual que
Menor que
Menor o igual que

Operador

Expresin

>
>=
<
<=

variable1>variable2
variable1>=variable2
variable1<variable2
variable1<=variable2

3.5.3 Operadores de igualdad


Se utilizan para asignar o comparar valores dentro de un programa.
Tabla 3.6 Operadores de igualdad.
Operadores de
Igualdad
Diferente
De asignacin
Igual a

Operador

Expresin

<>
=

variable1<>variable2
variable1=valor
variable1=variable2

32

3.5.4 Operadores Lgicos


Al igual que los operadores de relacin se utilizan para la toma de decisiones.
Tabla 3.7 Operadores lgicos.
Operadores
lgicos
Y

Operador

Expresin

And

Tambin Y

AndAlso

Or

Tambin O

OrElse

Negacin

Not

Es verdadero, si al evaluar cada uno de los operandos el


resultado es verdadero, si uno de los operandos es falso el
resultado ser falso.
Es falso, si al evaluar el primer operando el resultado es
falso, el segundo operando no es evaluado.
Es falso, si al evaluar cada uno de los operandos el
resultado es falso, si uno de los operandos es verdadero el
resultado ser verdadero.
Es verdadero, si al evaluar el primer operando el resultado
es verdadero, el segundo operando no es evaluado.
El resultado de aplicar este operando es falso si al evaluar
su operando el resultado es verdadero, y verdadero en caso
contrario.
Da como resultado verdadero, si al evaluar cada uno de los
operando uno de ellos es verdadero y el otro falso, caso
contrario es falso.

Xor

3.5.5 Ejemplo prctico operadores aritmticos


Realizar una aplicacin llamada OperadoresAritmeticos que permita a un usuario
visualizar en cajas de texto las operaciones aritmticas bsicas cuando se pulse un botn
llamado Operadores Aritmticos.

Iniciar un nuevo proyecto Visual Basic .NET


1. 1. En el men Archivo, d clic en Nuevo Proyecto.
2. En el panel Tipos de proyecto, haga clic en Visual Basic luego en Windows. En el
panel Plantillas, haga clic en Aplicacin de Windows Forms.
3. En el cuadro Nombre escriba OperadoresAritmeticos y a continuacin haga clic en el
botn Aceptar.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 7 Label, 7 Textbox, 2
Button.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, se establecen las


propiedades en la ventana Propiedades o en el Editor de cdigo. Para el caso del
ejemplo establezca las siguientes modificaciones a los controles:

33

Tabla 3.8 Propiedades de los controles del proyecto OperadoresAritmticos.


Label1

Control

Label2
Label3
Label4
Label5
Label6
Label7
TextBox1TextBox7
Button1
Button2
Form1

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text

Valor
lblsuma
Suma
lblresta
Resta:
lblmultiplicacion
Multiplicacin
lbldivision
Divisin
lbldiventera
Divisin Entera
lblresiduo
Residuo
lblexponeniacion
Exponenciacin
txtcampo1txtcampo7
En blanco
boton
Operadores Aritmticos
botonsalir
Salir
formulario
Operadores Aritmticos
en Visual Basic .NET

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 3.4 Interfaz de usuario (OperadoresAritmticos).

34

Escribir cdigo

Seleccione el objeto boton y abra el editor de cdigo y escriba el siguiente cdigo:


Dim valor_uno, valor_dos As Integer
valor_uno=8
valor_dos=5
txtcampo1.Text = valor_uno + valor_dos
txtcampo2.Text = valor_uno - valor_dos
txtcampo3.Text = valor_uno * valor_dos
txtcampo4.Text = valor_uno / valor_dos
txtcampo5.Text = valor_uno \ valor_dos
txtcampo6.Text = valor_uno mod valor_dos
txtcampo7.Text = valor_uno ^ valor_dos

En el anterior cdigo se definen las variables valor_uno y valor_dos de tipo


Integer. Luego en dichas variables se almacenan los valores 8 y 5 respectivamente.
Tambin se le asigna una operacin aritmtica en la propiedad Text de cada caja de
texto. Cuando el usuario pulse el botn Operadores Aritmeticos en tiempo de
ejecucin mostrar en cada cuadro de texto el valor respectivo de la operacin que le
fue asignada.

Ejecutar el proyecto

Para ejecutar el proyecto en el entorno de desarrollo de Visual Basic.NET, se debe


realizar lo siguiente:

Haga clic en el botn Iniciar


de la barra de herramientas estndar. Tambin puede
presionar F5 para ejecutar el proyecto. Si la aplicacin se ejecuta sin errores,
aparecer una versin ejecutable del formulario y al pulsar el botn Operadores
Aritmticos, se visualizar la siguiente figura:

Figura 3.5 Ejecucin aplicacin Operadores Aritmticos .

35

3.6 Palabras clave


Las palabras clave son identificadores predefinidos que tiene significado especial para
el compilador de Visual Basic .NET. Por lo tanto, una variable o constante definida por
el usuario no puede tener el mismo nombre de una palabra clave. Las palabras clave de
Visual Basic .NET se muestran en la siguiente tabla:
Tabla 3.9 Palabras Clave.
AddHandler
Ansi
ByRef
Match
CDec
CLng
CStr
Default
Double
Enum
False
Get
Implements
Interface
Loop
MustOverride
Next
Object
OrElse
RaiseEvent
Resume
Shared
Stop
Then
Typeof
UIT

AddressOf
As
Byte
CBool
CDbl
CObj
CType
Delegate
Each
Erase
Finally
GetType
Imports
Is
Me
MyBase
Not
On
Private
ReadOnly
Return
String
Short
Throw
Unicote
WithEvents

Palabras Clave
ndAlso
Alias
Assembly
Auto
Byval
Call
CByte
CChar
Char
CInt
Const
CShort
Date
Decimal
Dim
DirectCast
Else
ElseIf
Error
Event
For
Friend
GoTo
Handles
In
Inherits
Lib
Like
Mod
Module
MyClass
Namespace
Nothing
NotInhertable
Option
Optional
Property
Protected
ReDim
Rem
Select
Set
Structure
Static
Single
Sub
To
True
Until
When
WriteOnly
Xor

And
Boolean
Case
Cdate
Class
CSng
Declare
Do
End
Exit
Function
If
Integer
Long
MustInherit
New
NotOverridable
Or
Public
RemoveHandler
Shadows
Step
SyncLock
Try
While

3.7 Comentarios
Para establecer o definir un comentario se utiliza la comilla simple () al inicio del
comentario. Cada comentario debe ir en una sola lnea.
Ejemplo:

Este es un comentario

36

4. ESTRUCTURAS DE CONTROL
Cuando se escriben programas a veces es necesario determinar un control del flujo de
ejecucin de acuerdo a los cambios que sufran los diferentes tipos de datos. Entonces
cuando se requiere realizar programas ms complejos se debe utilizar estructuras de
control que evalen algunos resultados para determinar qu proceso u operacin se debe
ejecutar. En Visual Basic .NET existen palabras clave que permiten tener un control del
flujo de ejecucin como lo son las sentencias de toma de decisiones (If, If-Else, Select)
y las estructuras repetitivas (For-Next, While, Do-Loop While, For-Each).
4.1 Estructura de control If - Else
4.1.1 Sentencia If
Representa una toma de decisin sencilla, es decir, si la condicin que se evala es
verdadera se realizan las instrucciones que pertenezcan al bloque If y continuar con el
resto del programa. Si la condicin es falsa no entrar al bloque If y por consiguiente
todas las instrucciones que estn en el If no se ejecutarn. Cada vez que se utilice un If
se debe finalizar con EndIf. Su formato es:
1) If (condicin) Then
Instruccin(es) a ejecutarse si la condicin es verdadera
::::::::
Endif
Resto del programa

Si la condicin del If es verdadera se realiza la instruccin y contina con el


resto del programa.
2) If (condicin) Then Instruccin a ejecutarse si la condicin es verdadera
Resto del programa

Si la condicin del If es verdadera y se requiere realizar solo una instruccin no


es necesario EndIf.
.

3) If (condicin) Then
Instruccin(es) a ejecutarse si la condicin es verdadera
:::::::
If (condicin) Then
Instruccin(es) a ejecutarse si la condicin es verdadera
::::::::
Endif
Endif
Resto del programa

Se pueden anidar varios If, es decir, uno entre otro, para ingresar cada vez al If
ms interno es necesario que la condicin sea verdadera. Se debe tener en cuenta que
por cada bloque If que se realice debe existir una finalizacin EndIf. Tambin se
pueden utilizar los operadores lgicos (And, Andalso, Or, OrAlso, Xor, Not) para
concatenar varias condiciones. Si se utiliza el operador lgico And, cada una de las
condiciones debe ser verdadera para que ingrese al If y se ejecuten las instrucciones. En
el caso del operador Or, si una de las condiciones es verdadera ingresara al If y
ejecutar las instrucciones.

37

4) If (condicin1 And condicion2) Then


Instruccin(es) a ejecutarse si las condiciones son verdaderas
:::::::
Endif
Resto del programa
If (condicin1 Or condicion2) Then
Instruccin(es) a ejecutarse si alguna de las condiciones es verdadera
::::::::
Endif
Resto del programa

Adems de utilizar los operadores lgicos, tambin se puede recurrir a los


operadores relaciones (<, >, >=, <=), con el fin de evaluar una o ms variables para
determinar su valor verdadero para que ingrese al If y se ejecuten las instrucciones
correspondientes.

5) If (condicin1 > condicion2) Then


Instruccin(es) a ejecutarse si las condiciones son verdaderas
::::::::
Endif
Resto del programa
If (condicin1 > condicion2 And condicion1 > condicion3) Then
Instruccin(es) a ejecutarse si las condiciones son verdaderas
::::::::
Endif
Resto del programa
If (condicin1 > condicion2 Or condicion1 > condicion3) Then
Instruccin(es) a ejecutarse si las condiciones son verdaderas
::::::::
Endif
Resto del programa

4.1.2 Sentencia If- Else


Es una estructura compuesta que evala una condicin. Si esta es verdadera realizar las
instrucciones contenidas en el bloque If, en caso contrario ingresar por el bloque Else.
El programa solo tomar una de las dos alternativas y continuar con el resto del
programa. Su formato es el siguiente:
If (condicin) Then
Instruccin(es) a ejecutarse si la condicin es verdadera
::::::::
Else
Instruccin(es) a ejecutarse si la condicin es falsa
::::::::
Endif
Resto del programa

Como en el caso de la toma de decisin If simple tambin se puede utilizar los


operadores lgicos y relaciones, adems se pueden anidar varios If Else.
38

4.1.3 If (operador)
Se utiliza para una toma de decisin mltiple donde se devolver uno de dos valores al
evaluar una expresin. Su formato es:
If (condicin, primer_argumento_por_verdad, segundo_argumento_por_falso)

Ejemplo:

Dim valor As integer


Dim respuesta As String
valor=3
respuesta =If (valor>0,Positivo, Negativo) Devuelve Positivo
Resto del programa

Dado que la expresin If (operador) utiliza la evaluacin de cortocircuito, evala


el primer argumento o el segundo argumento, con respecto al valor de la condicin. Si
el valor de la condicin es True (verdadero) el nmero no es negativo y es seguro
evaluar el primer argumento y por consiguiente devuelve Positivo. Si el valor de la
condicin es False (falso) slo se evala el segundo argumento y se devuelve Negativo.
4.1.4 IIF
Es parecido a la estructura If (operador), la diferencia radica en que la estructura IIF
evalua los dos argumentos sin importar que al evaluar una expresin sea True o False.
IIF (condicin, primer_argumento_por_verdad, segundo_argumento_por_falso)

Ejemplo:

Dim valor As integer


Dim respuesta As String
valor=3
respuesta =IIF (valor>0,Positivo, Negativo) Devuelve Positivo
Resto del programa

4.1.5 Ejemplo estructura If-Else


Crear una aplicacin Windows Forms llamada EstructuraIfElse que permita a un
usuario capturar en cajas de texto con formato de hora militar las horas, los minutos y
los segundos e imprimir las horas, los minutos y los segundos un segundo despus.
OBSERVACIN: Se supondr que el usuario digitara las horas entre 0 y 23, los
minutos y segundos entre 0 y 59.
Ejemplo:
H

17
13
18
23

15
44
59
59

25
59
59
59

+1
segundo

un

17
13
19
0

15
45
0
0

26
0
0
0

NOTA: a partir de este captulo se omitirn pasos que se supone que el lector ya maneja
como son: iniciar un nuevo proyecto, escoger los controles y los pasos para ejecutar el
39

proyecto.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 6 Label, 6 Textbox, 1
Button.
Figura 4.1 Interfaz de usuario inicial (EstructuraIfElse).

Establecer las propiedades de los objetos de la interfaz de usuario

Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
Tabla 4.1 Propiedades de los controles del proyecto TomadeDecisiones.
Control
Label1
Label2
Label3
Label4
Label5
Label6
TextBox1
TextBox2
TextBox3
TextBox4

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text

lblhoras
Digite la hora:
lblminutos
Digite los minutos:
lblsegundos
Digite los segundos:
Lblhora
Horas:
Lblminuto
Minutos
lblsegundo
Segundos:
hora
En blanco
minuto
En blanco
segundo
En blanco
horas
En blanco

Valor

40

TextBox5
TextBox6
Button1
Form1

Name
Text
Name
Text
Name
Text
Name
Text

minutos
En blanco
segundos
En blanco
boton
Ms un segundo
formulario
Toma de decisiones (If-Else) en Visual Basic .NET

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 4.2 Interfaz de usuario final (EstructuraIfElse).

Escribir cdigo

Seleccione el objeto boton, d doble clic para abrir el editor de cdigo boton_Click y
escriba el siguiente cdigo:
Dim H, M, S As Integer
H = horas.Text
M = minutos.Text
S = segundos.Text
If(H = 23 And M = 59 And S = 59) Then
H=0
M=0
S=0
Else
If (M = 59 And S = 59) Then
H=H+1
M=0
S=0
Else
If (S = 59) Then
M=M+1
S=0
Else
S=S+1
End If
End If

41

End If
hora.Text = H
minuto.Text = M
segundo.Text = S

Se utiliza la sentencia Dim para definir las variables de tipo entero H, M, S y a


dichas variables se les asigna el valor capturado en la propiedad Text de los campos de
texto horas, minutos y segundos. Con una primera estructura If se evala si el valor de
H es igual a 23, el de M es igual a 59 y el de S igual a 59, si se cumple la condicin se
le asigna a las variables el valor de cero (0). Si no se cumple la condicin por falso
(Else) se evaluar los valores de M y S. Si estos son iguales a 59, se incrementar en
uno (+1) el valor de la variable H y a las variables M y S se les asignar el valor cero
(0). Si tampoco la condicin es verdadera se evaluar el valor de S. Si esta es igual a 59,
se incrementa en uno (+1) el valor de la variable M y a S se le asignar el valor de cero
(0). Por otro lado, si tampoco se cumple la condicin se incrementar S en uno (+1). Al
determinarse los valores de H, M, S se imprimir en los campos de texto hora, minuto,
segundo en la propiedad Text dichos valores respectivamente.

Ejecutar el proyecto

Al ejecutarse el proyecto en el entorno de desarrollo de Visual Basic.NET y al digitar en


el campo horas 23, en el campo minutos 59, en el campo segundos 59 y despus pulsar
el botn Ms un segundo, se visualizar la siguiente pantalla:
Figura 4.3 Ejecucin aplicacin EstructuraIfElse.

4.2 Sentencia Select


Es una toma de decisin con varias opciones, esto es, segn sea el valor (entero o
caracter) de una variable escoger un caso entre varias alternativas. Su formato es:
Select (variable)
Case expresion1
instrucciones1
Case expresion2
instrucciones2

42

...
...
[Case Else]
instruccionesN
End Select

La expresin1, expresion2expresinN representan una lista de expresiones


que pueden tener cada Case y se puede expresar de las siguientes formas:
Case Is <y
variable < y
Case 3
variable =3
Case y to 10 variable = y, y+1,..,10
Case 3, x
variable = 3, x
Case -5, w To 5 variable = -1, w, w+1.,5
Case dato, DATO variable =dato, DATO
Case Is >=200
variable >=200

Cuando se ejecuta Select, se evala la variable y busca el primer caso (Case)


que incluya el valor evaluado. Si no existe un valor igual a la variable, se ejecuta(n)
la(s) instruccin (es) a continuacin del Case Else (opcional), si se ha especificado.
4.2.1 Ejemplo estructura Select
Disear una aplicacin Windows Forms llamada EstructuraSelect que permita a un
usuario digitar en una caja de texto un nmero e imprimir el nombre del da de dicho
numero.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 2 Label, 2 Textbox, 1
Button.
Figura 4.4 Interfaz de usuario inicial (EstructuraSelect).

43

Establecer las propiedades de los objetos de la interfaz de usuario

Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
Tabla 4.2 Propiedades de los controles del proyecto EstructuraSelect.
Label1

Control

Label2
TextBox1
TextBox2
Button1
Form1

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text

Valor
lblnumero
Digite un nmero:
lbldia
El da de la semana es:
numero
En blanco
dia
En blanco
boton
Visualizar da
formulario
Estructura Select

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 4.5 Interfaz de usuario final (EstructuraSelect).

Escribir cdigo

Seleccione el objeto boton, d doble clic para abrir el editor de cdigo boton_Click y
escriba el siguiente cdigo:
Dim valor As Integer
valor = numero.Text
Select Case valor
Case Is = 1
dia.Text = "Lunes"
Case Is = 2
dia.Text = "Martes"

44

Case Is = 3
dia.Text = "Miercoles"
Case Is = 4
dia.Text = "Jueves"
Case Is = 5
dia.Text = "Viernes"
Case Is = 6
dia.Text = "Sbado"
Case Is = 7
dia.Text = "Domingo"
Case Else
dia.Text = "No es un dia de la semana"
End Select

Se define la variable de tipo entero valor, a dicha variable se le asigna el valor


capturado en la propiedad Text del campo de texto numero. Utilizando la estructura
Select se evala lo capturado para determinar el nombre del da de la semana. En caso
de que no exista el da de la semana se imprimir el mensaje No es un da de la
semana.

Ejecutar el proyecto

Al ejecutarse el proyecto, si se escribe el nmero cinco (5) en el campo de texto y se


pulsar el botn Visualizar el da, se mostrar la siguiente pantalla:
Figura 4.6 Ejecucin aplicacin EstructuraSelect.

4.3 Estructura For-Next


Sirve para repetir una o varias instrucciones, usando una variable que por lo general es
llamada contador; esta estructura inicializa el contador y evala su valor por medio de
una condicin, si esta es verdadera se ejecutarn las instrucciones del ciclo y aumentar
o disminuir el contador automticamente, de lo contrario se finalizar el ciclo. Su
formato es:
For variable =expresion1 To expresin2 [Step expresion3]
Instruccion(es)
::::::::
Next

45

El valor de variable es inicializado con el valor que contenga expresion1.


Expresion2 representa el valor final del ciclo repetitivo. La sentencia Step es opcional,
por defecto sino existe dicha sentencia el incremento ser de uno (1), si por el contrario
se utiliza la sentencia Step se pueden realizar incrementos o decrementos diferentes de
uno (1).
4.3.1 Ejemplo estructura For-Next
Elaborar una aplicacin llamada EstructuraForNext que permita a un usuario digitar
10 nmeros en una caja de texto. Cada nmero digitado se debe imprimir en otro campo
de texto. Tambin se debe imprimir la sumatoria de los nmeros capturados.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 1 Label, 1 Textbox, 1
Button.
Figura 4.7 Interfaz de usuario inicial (EstructuraForNext).

Establecer las propiedades de los objetos de la interfaz de usuario

Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
Tabla 4.3 Propiedades de los controles del proyecto EstructuraForNext.
Label1

Control

TextBox1

Button1

Propiedad
Name
Text
Name
Text
MultiLine
ScrollBar
Name
Text

Valor
lblnumeros
Nmeros capturados
numero
En blanco
True
vertical
boton
Capturar 10 nmeros

46

Form1

Name
Text

formulario
Estructura For-Next

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 4.8 Interfaz de usuario final (EstructuraForNext).

Escribir cdigo

Seleccione el objeto boton, d doble clic para abrir el editor de cdigo boton_Click y
escriba el siguiente cdigo:
Dim inicio, valor, suma As Integer
For inicio = 1 To 10
valor = InputBox("Digite numero", "Captura de nmeros")
numero.Text = numero.Text & valor & vbCrLf
suma = suma + valor
Next
numero.Text = numero.Text & vbCrLf & "La sumatoria es: " & suma

Se definen las variables de tipo entero inicio, valor, suma. Se inicializa un ciclo
For que se repetir 10 veces. En l se le asigna a la variable valor los diferentes
nmeros capturados con la funcin InputBox (Esta funcin permite capturar un valor
por teclado; en este caso, solamente se utilizan dos parmetros: el primero para
establecer un mensaje y el segundo para un titulo). Por otro lado, al control numero en
su propiedad Text se le asigna el contenido que tenga en ese momento concatenado con
el valor capturado y un salto de carro (vbcrlf); la variable suma guardar la sumatoria
de los valores capturados. Al salir del ciclo For se imprimir en el objeto numero el
texto La sumatoria es: unido con el valor de la variable suma.

Ejecutar el proyecto

Al ejecutarse el proyecto y pulsar el botn Capturar 10 nmeros se mostrar el cuadro


de captura:

47

Figura 4.9 Cuadro para capturar los nmeros.

figura:

Al escribir los nmeros: 3, 15, 6, 8, 23, 5, 14, 9, 1, 10, se visualizar la siguiente

Figura 4.10 Ejecucin aplicacin EstructuraForNext.

4.4 Estructura While


Sirve para repetir una secuencia de instrucciones siempre que la condicin evaluada sea
verdadera. Si al evaluarse la condicin es falsa no ingresar al ciclo y continuar con el
resto del programa. Su formato es:
While (condicin)
Instruccion(es)
::::::::
incremento decremento
End While
Resto del programa

48

4.4.1 Ejemplo estructura While


Crear una aplicacin llamada EstructuraWhile que permita a un usuario digitar 10
nmeros e imprimir el mayor y el menor de dichos nmeros.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 2 Label, 2 Textbox, 1
Button.
Figura 4.11 Interfaz de usuario inicial (EstructuraWhile).

Establecer las propiedades de los objetos de la interfaz de usuario

Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
Tabla 4.4 Propiedades de los controles del proyecto EstructuraWhile.
Label1

Control

Label2
TextBox1
TextBox2
Button1
Form1

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text

Valor
lbmayor
El mayor es:
lblmenor
El menor es:
mayor
En blanco
menor
En blanco
boton
Capturar 10 nmeros
formulario
Estructura While

La interfaz de usuario queda como se muestra en la siguiente figura:

49

Figura 4.12 Interfaz de usuario final (EstructuraWhile).

Escribir cdigo

Seleccione el objeto boton, d doble clic para abrir el editor de cdigo boton_Click y
escriba el siguiente cdigo:
Dim contador, valor, nmayor, nmenor As Integer
contador = 1
While (inicio <= 10)
valor = InputBox("Digite numero", "Captura de nmeros")
If (contador = 1) Then
nmayor = valor
nmenor = valor
End If
If (nmayor < valor) Then
nmayor = valor
End If
If (nmenor > valor) Then
nmenor = valor
End If
mayor.Text = nmayor
menor.Text = nmenor
contador = contador + 1
End While

En el anterior cdigo se definen las variables contador, valor, nmayor, nmenor


de tipo Integer. Se inicializa la variable contador con un valor de uno (1), luego se crea
un ciclo While que permitir ejecutar una serie de instrucciones mientras contador sea
menor o igual a 10. Dentro del ciclo a la variable valor se le asigna el nmero capturado
en la funcin predeterminada Inputbox (cuadro de captura). Cuando se captura el
primer valor la variable contador tiene un valor de 1, lo cual permite ingresar por nica
vez a la primera sentencia de control If donde se le asigna a nmayor y nmenor el valor
de la variable valor. A dicha instruccin solo se ingresar una vez pues ms adelante se
incrementa la variable contador y por consiguiente obtendra un valor mayor de 1. En
las siguientes sentencias se evala las variables nmayor y nmenor respectivamente con
la variable valor para determinar si a dichas variables se les asigna un nuevo valor. Por
otro lado, se le asigna a los campos de texto mayor y menor en su propiedad Text los
valores de las variables nmayor y nmenor y adems se incrementa la variable

50

contador en 1 para que al digitar los 10 valores se pueda salir del ciclo While.

Ejecutar el proyecto

Al ejecutarse el proyecto y pulsar el botn Capturar 10 nmeros se mostrar el cuadro


de captura:
Figura 4.13 Cuadro para capturar los nmeros.

figura:

Al escribir los nmeros: 3, 15, 6, 8, 23, 5, 14, 9, 1, 10, se visualizar la siguiente

Figura 4.14 Ejecucin aplicacin EstructuraWhile.

4.5 Do-Loop While


Existen muchas situaciones en las que se desea que un ciclo se ejecute al menos una vez
antes de comprobar la condicin de repeticin. En la estructura While si el valor de la
expresin booleana es inicialmente falso, las instrucciones del ciclo no se ejecutarn;
por ello, se necesitan otros tipos de estructuras repetitivas como Do-Loop While, que se
ejecuta por lo menos una vez. Su formato es:

51

Do
Instruccin(es)
::::::::
incremento decremento
Loop While (condicin)

4.5.1 Ejemplo estructura Do-Loop while


Escribir una aplicacin llamada EstructuraDoLoopWhile que permita a un usuario
capturar N nmeros. El usuario podr decidir si continua o no capturando nmeros. Al
terminar de digitar se debe visualizar la sumatoria de los nmeros capturados.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 2 Label, 2 Textbox, 1
Button.
Figura 4.15 Interfaz de usuario inicial (EstructuraDoLoopWhile).

Establecer las propiedades de los objetos de la interfaz de usuario


Para el caso del ejemplo establezca las siguientes modificaciones a los controles:

Tabla 4.5 Propiedades de los controles del proyecto EstructuraDoLoopWhile


Label1

Control

Label2
TextBox1

Propiedad
Name
Text
Name
Text
Name
Text

Valor
lblnumeros
Nmeros capturados
lblsuma
La suma de los nmeros fue:
camponumeros
En blanco

52

TextBox2
Button1
Form1

MultiLine
ScrollBar
Name
Text
Name
Text
Name
Text

True
vertical
camposuma
En blanco
boton
Capturar 10 nmeros
formulario
Estructura Do Loop While

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 4.16 Interfaz de usuario final (EstructuraDoLoopWhile).

Escribir cdigo

Seleccione el objeto boton, d doble clic para abrir el editor de cdigo boton_Click y
escriba el siguiente cdigo:
Dim valor, suma As Integer
Dim respuesta As String
Do
valor = InputBox("Digite nmero:", "Capturar nmeros")
camponumeros= camponumeros & valor & vbcrlf
suma = suma + valor
respuesta = MsgBox("Desea Continuar (Si/No):", MsgBoxStyle.YesNo)
Loop While (respuesta = "6")
camposuma.Text = suma

Se crean tres variables: dos de tipo entero valor, suma y una de tipo String
llamada respuesta. Dentro de un ciclo Do Loop While se le asigna a la variable valor
los diferentes nmeros capturados con la funcin InputBox, adems al objeto
camponumeros en su propiedad Text se le asigna el contenido que tenga en ese
momento concatenado con el valor capturado y un salto de carro (vbcrlf); Por otro
lado, la variable suma guardar la sumatoria de los valores capturados y a la variable
53

respuesta se le asigna el valor retornado por la funcin MsgBox (El primer parmetro
es un mensaje para el cuadro de dilogo; el segundo parmetro es una expresin
numrica que especifican el nmero y los botones que se van a mostrar). Si desea
continuar (Si) capturando nmeros el valor que se almacenar en la variable respuesta
es 6, en caso contrario, se almacenar el valor 7. Al salir del ciclo Do Loop
While se imprimir en el objeto camposuma en su propiedad Text el valor de la
variable suma.

Ejecutar el proyecto

Al ejecutarse el proyecto y pulsar el botn Capturar Nmeros se visualizar la


siguiente figura:
Figura 4.17 Cuadro de dilogo para capturar nmeros.

Al digitarse cualquier nmero (Ej: 5) y pulsar Enter el botn Aceptar, se


muestra el cuadro de mensaje de Continuar (Si/No): como se aprecia en la siguiente
figura:
Figura 4.18 Cuadro de mensaje.

Si se pulsa el botn S, se mostrar nuevamente la figura 4.17., para capturar un


nuevo nmero. Si por el contrario se pulsa el botn No, se visualizar la siguiente
pantalla:

54

Figura 4.19 Ejecucin aplicacin EstructuraDoLoopWhile.

4.6 Estructura For-Each


Sirve para repetir una o varias instrucciones por cada elemento de una coleccin. Esta
estructura es til cuando en una coleccin no se puede determinar cuntos elementos
existen. Su formato es:
For Each elemento [As tipo_de_dato] In coleccin
Instruccion(es)
::::::::
Next elemento

El valor elemento se utiliza para recorrer los elementos de la coleccin. El tipo


de dato es obligatorio si el elemento no se ha declarado con anterioridad. La expresin
coleccin contiene todos los elementos sobre los que se deben repetir las instrucciones
del For-Next. El valor elemento en el Next no es obligatorio.
4.6.1 Ejemplo estructura For-Each
Hacer una aplicacin llamada EstructuraForEach que permita a un usuario digitar una
oracin en un campo de texto e imprimir cuantas vocales A contiene dicha oracin.

Crear la interfaz de usuario.

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 2 Label, 2 Textbox, 1
Button.

55

Figura 4.20 Interfaz de usuario inicial (EstructuraForEach).

Establecer las propiedades de los objetos de la interfaz de usuario

Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
Tabla 4.6 Propiedades de los controles del proyecto EstructuraForNext.
Label1

Control

Label2
TextBox1
TextBox2
Button1
Form1

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text

Valor
lblcadena
Digite una oracin:
lblvocal
La cantidad de vocales a es:
campooracion
En blanco
campovocal
En blanco
boton
Contar vocal
formulario
Estructura For-Each

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 4.27. Interfaz de usuario final (EstructuraForEach)

56

Escribir cdigo

Seleccione el objeto boton, d doble clic para abrir el editor de cdigo boton_Click y
escriba el siguiente cdigo:
Dim cuentavocal As Integer
Dim cadena As String
cadena = campocadena.Text
For Each letra As String In cadena
If letra = "a" Then
cuentavocal = cuentavocal + 1
End If
Next
campovocal.Text = cuentavocal

Se crean dos variables: cuentavocal de tipo entero y cadena de tipo String a la


cual se le asigna el texto digitado en el objeto campocadena. Se inicializa un ciclo ForEach que recorrer cada uno de los caracteres que contiene la variable cadena. Con la
estructura If se pregunta que si el valor de la variable letra es igual al caracter a. Si se
cumple la condicin se incrementara en uno (+1) el valor de la variable cuentavocal. Al
terminar el ciclo For-Next se imprimir en el objeto campovocal el valor de la variable
cuentavocal.

Ejecutar el proyecto

Al ejecutarse el proyecto y escribir en el objeto campocadena el texto hola mi gente


colombiana y pulsando el botn Contar vocal, se obtendr la siguiente figura:
Figura 4.28 Ejecucin aplicacin EstructuraForEach.

57

4.7 Ejercicios estructuras de control


1. Escribir un programa que pida al usuario digitar dos nmeros e imprima las
operaciones con los operadores aritmticos, los operadores relacionales y los
operadores lgicos.
2. Realizar un programa que pida al usuario digitar dos nmeros enteros e imprima
l nmero mayor seguido del texto "Es el mayor".
3. Elaborar un programa que capture tres nmeros enteros e imprima l nmero
mayor, el del medio y el menor.
4. Hacer un programa que convierta una temperatura dada en grados Celsius a
grados Fahrenheit. La formula de conversin es F=9/5c +32.
5. Disear un programa que pida al usuario digitar un nmero e imprima el mes del
ao de dicho nmero. Si el nmero digitado no es un mes del ao se deber
mostrar el mensaje No es un mes del ao.
6. Crear un programa que imprima en un campo de texto los nmeros impares que
se encuentren entre 1 y 30, as como su sumatoria.
7. Escribir un programa que permita sumar los nmeros enteros de 1 a 100 usando
las estructuras: for, while, do while.
8. Realizar un programa que imprima todos los nmeros primos entre 2 y 100
inclusive (nota: utilice la propiedad Multiline del control TextBox para imprimir
los resultados).
9. Disear un programa que permita capturar N nmeros. Se debe imprimir el
nmero capturado en cajas de texto dependiendo si es par o impar, as como la
sumatoria de estos.
10. Escriba un programa que dado un nmero entero, diga si es o no es, un cubo
perfecto. Los nmeros astromg o cubos perfectos, son aquellos que sumados los
cubos de cada uno de sus dgitos da el mismo nmero. Por ejemplo 153 es un
cubo perfecto, pues (1) elevado a 3 + (5) elevado a 3 + (3) elevado a 3 es igual a
153.

58

5. MDULOS Y PROCEDIMIENTOS
A medida que se escriban programas de mayor robustez o complejidad (varios
formularios), es casi seguro, que existan muchos procesos comunes. Para esto se
disean subprogramas que realizan una tarea especfica denominados procedimientos o
funciones, Por otro lado, a veces es necesario tener variables, constantes o expresiones
que se puedan utilizar en el entorno de desarrollo sin tener que volverlas a definir
(variables globales). Visual Basic .NET permite compartir variables, procedimientos en
varios formularios, para esto, es necesario crear un mdulo que permita contener las
variables globales y los procedimientos.
5.1 Mdulos
Un mdulo es un contenedor que se visualiza de forma independiente en el explorador
de soluciones y solamente se le puede incluir cdigo y no tendr interfaz de usuario.
Dicho mdulo puede contener variables globales pblicas, procedimientos sub y
function y estos pueden ser compartidos por varios formularios. Cada mdulo tiene una
instancia y no necesita ser creado ni asignado a una variable. Dentro de una aplicacin
pueden existir varios mdulos, sin embargo, al hacer referencia a alguno de sus
miembros (variables, procedimientos, funciones) se debe referenciar con el nombre del
mdulo adecuado.
Ejemplo:
Module uno
Public a As integer=6
End Module
Module dos
Public a As integer=5
End Module
as:

Si se necesita utilizar la variable a del mdulo llamado dos se debe referenciar


dos.a

Por defecto el primer mdulo de un programa tendr como nombre module1.vb.


Su formato es:
Modificador de acceso (public, friend) Module nombre_mdulo
variables, procedimientos
End Module
Por omisin cada vez que se crea un mdulo el modificador de acceso es friend.
Para crear un mdulo dentro de un proyecto aplicacin existen varias formas:
1. Seleccionar Agregar Mdulo del men Proyecto, donde se visualizar un
cuadro de dilogo que le permitir seleccionar la plantilla mdulo y asignarle
un nombre a este.
2. Utilizar el botn agregar nuevo elemento
de la barra de herramientas
estndar y seleccionar la opcin Agregar Mdulo.
3. Desde el explorador de soluciones situarse en el nombre del proyecto y dar clic
derecho del mouse para seleccionar la opcin Agregar y despus escoger
59

Mdulo.
La figura que se visualizar al seleccionar cualquiera de los pasos anteriores es
la siguiente:
Figura 5.1 Agregar un mdulo al proyecto.

Al hacer clic en el botn Agregar, Visual Basic .NET agregar al proyecto el


mdulo llamado Module1.vb apareciendo el Editor de Texto como se muestra a
continuacin:
Figura 5.2 Editor Module1.vb.

Luego se podr observar en el Explorador de Soluciones


agregado al proyecto:

, el mdulo

Figura 5.3 Mdulo en el Explorador de soluciones.

60

Para declarar una variable pblica (aquellas que estn disponibles para todos los
procedimientos de la aplicacin) en un mdulo solo se necesita que al inicio del mdulo
se escriba la palabra clave public seguido por el nombre de la variable y el tipo de dato.
Una vez declarada esta variable podr ser utilizada para leerla, modificarla o
visualizarlA por cualquier procedimiento del programa.
5.2 Procedimientos o funciones
En Visual Basic .NET existen dos tipos de procedimientos: Function y Sub. Los
procedimientos Function pueden ser invocados por su nombre desde otros
procedimientos, pueden recibir argumentos (son datos necesarios para que un
procedimiento trabaje correctamente y deben ir dentro de parntesis y separados por
comas), y siempre devuelven un valor con el nombre de la funcin. Los procedimientos
Sub tambin pueden ser son invocados por su nombre desde otros procedimientos,
pueden recibir argumentos y no devuelven valores. Los procedimientos Function y
Sub se pueden definir en el cdigo de un formulario, pero lo ms aconsejable es
definirlos dentro de un mdulo para que todos los elementos de un proyecto puedan
utilizarlos.
Un procedimiento Function es un grupo de cdigo localizado entre una
instruccin Function y EndFunction. Se podr llamar a un procedimiento Function
desde un programa utilizando el nombre asociado al procedimiento junto con los
argumentos necesarios. Su formato es:
[Modificar de acceso] Function nombre_funcin (argumentos) As tipo de dato
Instrucciones
nombre_function = valor a retornar
End Function

[Modificar de acceso] Function nombre_funcin (argumentos) As tipo de dato


Instrucciones
Return = valor a retornar
End Function

Donde el modificador de acceso puede ser public, prvate, protected o friend.


Para llamar al procedimiento Function desde otro procedimiento y suponiendo que se
tiene una etiqueta Label1, sera de la siguiente forma:
Se enva:
Se recibe:

Label1.Text =nombre_funcin (12, hola)

Public Function nombre_funcin (Byval entero As Integer, Byval cadena As String)

Un procedimiento Sub es similar a un procedimiento Function solo que Sub no


retorna un valor asociado con su nombre pero pueden devolver uno o ms valores al
procedimiento que lo llamo. En la llamada al procedimiento el nmero y el tipo de
argumentos enviados deben ser igual al nmero y tipo de argumentos del
procedimiento. Su formato es:
[Modificar de acceso] Sub nombre_sub (argumentos)
Instrucciones
End Sub

61

Para llamar al procedimiento Sub desde otro procedimiento se debe especificar


el nombre del procedimiento y el nmero de argumentos. El ejemplo sera el siguiente:
Se enva:
Se recibe:

MiSub (12, hola)

MiSub (Byval entero As Integer, Byval cadena As String)

5.2.1 Ejemplo prctico mdulo y procedimientos Sub y Function


Realizar una aplicacin llamada MdulosProcedimientos que permita a un usuario
capturar un nmero y retornar en texto si dicho nmero es PRIMO NO. Utilizando los
procedimientos Function y Sub.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 2 TextBox, 2 Label, 2
Button. Se omitir la interfaz inicial del proyecto.

Establecer las propiedades de los objetos del interfaz de usuario

Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
Tabla 5.1 Propiedades de los controles de la aplicacin MdulosProcedimientos.
Control
TextBox1
TextBox2
Label1
Label2
Button1
Button2
Form1

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text

Valor
txtnumero
En blanco
txtresultado
En blanco
lblnumero
Digite un nmero:
lblresultado
El nmero es:
botonfunction
Verificar Numero Primo con Function
botonsub
Verificar Numero Primo con Sub
formulario
Mdulos y procedimientos.

La interfaz de usuario queda como se muestra en la siguiente figura:

62

Figura 5.4 Interfaz de usuario (MdulosProcedimientos).

Agregar mdulo

Para agregar el nuevo mdulo se utilizar el icono agregar nuevo elemento


de la
barra de herramientas estndar y all se seleccionara la opcin Agregar Mdulo,
donde se visualizar un cuadro de dilogo que le permitir seleccionar la plantilla de
Mdulo y asignarle un nombre al mdulo. Por defecto el primer mdulo de un
programa tendr como nombre module1.vb cmbielo por mimdulo.vb.
Figura 5.5 Mdulo mimdulo.vb en la aplicacin MdulosProcedimientos.

Si se desea cambiar el nombre del mdulo, se pueden seleccionar las


propiedades del mdulo dando clic sobre el nombre actual de ste. Como los mdulos
solo contienen cdigo, las propiedades son mnimas. Una de las propiedades ms
importantes es nombre de archivo que permite cambiar el nombre del mdulo (tenga
en cuenta que la extensin debe seguir igual a vb).

63

Escribir cdigo en el mdulo

En el mdulo d doble clic sobre el nombre de este y entre las instrucciones Module y
End Module escriba el siguiente cdigo:
Module mimdulo
Public incremento As Integer
Public auxiliar As Integer
Public texto As String
iniciamos el procedimiento Function
Function primo_Function(ByVal numero As Integer) As String
auxiliar = 0
incremento = 2
If (numero <= 0) Then
primo_Function = "No hay solucin"
Else
If (numero >= 1 And numero < 3) Then
texto = "PRIMO"
Else
While (auxiliar = 0)
If ((numero Mod incremento) = 0) Then
texto = "No PRIMO"
auxiliar = 1
Else
incremento += 1
End If
If (numero = incremento) Then
texto = "PRIMO"
auxiliar = 1
End If
End While
End If
primo_Function = texto
End If
End Function
Finaliza el procedimiento funcin
Inicia el procedimiento Sub
Sub primo_Sub(ByVal numero As Integer)
auxiliar = 0
incremento = 2
If (numero <= 0) Then
texto = "No hay solucin"
Else
If (numero >= 1 And numero < 3) Then
texto = "PRIMO"
Else
While (auxiliar = 0)
If ((numero Mod incremento) = 0) Then
texto = "No PRIMO"
auxiliar = 1
Else
incremento += 1
End If
If (numero = incremento) Then
texto = "PRIMO"
auxiliar = 1
End If
End While

64

End If
End If
End Sub
Finaliza el procedimiento Sub
End Module

En el mdulo se crean tres variables pblicas auxiliar e incremento de tipo


Integer y texto de tipo String, las cuales pueden ser utilizadas por cualquier
procedimiento que este dentro del mdulo o por cualquier formulario que pertenezca a
la aplicacin. En este caso dichas variables son utilizadas por los procedimientos
primo_Function y primo_Sub. Tanto en el procedimiento primo_Function como en
el procedimiento primo_Sub se reciben un nmero el cual es evaluado para determinar
si es primo no. Por otro lado, en el procedimiento primo_Function se retorna el
contenido de la variable global texto al procedimiento que lo llam y en el
procedimiento primo_Sub el resultado es asignado a la variable texto.

Escribir cdigo en los controles Button


a) Seleccione el objeto botonfunction y abra el editor de cdigo y escriba el
siguiente cdigo:
Dim numero As Integer
numero = txtnumero.Text
txtresultado.Text = primo_Function(numero)

El anterior cdigo se define la variable numero de tipo Integer. A dicha


variable se le asigna el valor capturado en el objeto txtnumero. Por ltimo a la
propiedad Text del control txtresultado se le asigna el valor que retorne el
procedimiento primo_Function. Como se puede apreciar, a dicho procedimiento se le
enva como argumento la variable numero que es exactamente el nmero de
argumentos que recibe primo_Function.
b) Seleccione el objeto botonsub y abra el editor de cdigo y escriba el siguiente
cdigo:
Dim numero As Integer
numero = txtnumero.Text
primo_Sub(numero)
txtresultado.Text = texto

En este cdigo tambin se define la variable numero de tipo Integer. A dicha


variable se le asigna el valor capturado en el objeto txtnumero. Se llama al
procedimiento primo_Sub y se le enva como argumento la variable numero. Por
ltimo a la propiedad Text del control txtresultado se le asigna el valor de la variable
global texto.

Ejecutar el proyecto

Al ejecutarse el proyecto en el entorno de desarrollo de Visual Basic.NET, si se digit el


valor 281 y pulsando cualquiera de los dos botones se visualizar la siguiente pantalla:

65

Figura 5.6 Ejecucin aplicacin MdulosProcedimientos.

5.3 Funciones predeterminadas


En Visual Basic .NET existen funciones predeterminadas o incorporadas que facilitan la
realizacin de tareas especficas, entre ellas, se pueden encontrar funciones:
matemticas, de fechas, para manipulacin de cadenas de caracteres., etc.
5.3.1 Funcin de fecha y hora
El objeto Date permite la manipulacin de la fecha y la hora. Now y Today son dos
funciones bsicas para el manejo del tiempo y la fecha. Now muestra en formato
numrico la fecha y la hora del sistema (Ej: 31/08/2010 16:14:20), mientras que Today
muestra en formato numrico la fecha del sistema (Ej: 31/08/2010). Con la funcin
Format se puede manejar diferentes formatos de presentacin de fecha y hora
utilizando carcteres especficos. En la siguiente tabla se describe algunos caracteres
que permite la creacin de formatos de fecha y hora definidos por el usuario:
Tabla 5.2 Caracteres para crear formatos de fecha.
Carcter
(/)

Separador de fecha.

Descripcin

Muestra una fecha con el formato de fecha larga. Por ejemplo: martes, 31 de
agosto de 2010.

Muestra una fecha con el formato de fecha corta. Por ejemplo: 31/10/2010.

dd

Muestra el da como un nmero con cero a la izquierda (por ejemplo: 01).

ddd

Muestra el da de forma abreviada (por ejemplo: mar).

dddd

Muestra el da de forma completa (por ejemplo: martes).

Muestra el da y el mes de una fecha (por ejemplo: 31 agosto).

MM

Muestra el mes como un nmero con cero a la izquierda (por ejemplo, 09).

MMM

Muestra el mes en forma abreviada (por ejemplo, ago).

MMMM

Muestra el mes en forma completa (por ejemplo: agosto).

Muestra el mes y el ao (por ejemplo: agosto de 2010).

yy

Muestra el ao en formato numrico de dos dgitos.

yyy

Muestra el ao en formato numrico de cuatro dgitos.

F,f

Muestra la fecha larga y la hora corta. Por ejemplo: martes, 31 de agosto de


2010 11:07.

66

Tabla 5.3 Caracteres para crear formatos de hora.


Carcter
(:)
hh

Separador de hora.

Descripcin

Muestra la hora como un nmero con ceros a la izquierda y en formato de


12 horas.

HH

Muestra la hora como un nmero con ceros a la izquierda y en formato de


24 horas.

mm

Muestra los minutos como un nmero con ceros a la izquierda.

ss

Muestra los segundos como un nmero con ceros a la izquierda.

Muestra la hora y los minutos en formato de 24 horas.

5.3.1.1 Ejemplo prctico funciones de fecha y hora


Crear una aplicacin llamadas FuncionesFechasHoras que permita a un usuario pulsar
un botn y visualizar en cajas de texto alguno de los formatos de fecha y hora.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 10 Label, 10 Textbox, 1
Button.

Establecer las propiedades de los objetos de la interfaz de usuario


Para el caso del ejemplo establezca las siguientes modificaciones a los controles:

Tabla 5.4 Propiedades de los controles del proyecto FuncionesFechasHoras.


Control
Label1
Label2
Label3
Label4
Label5
Label6
Label7
Label8
Label9
Label10
Label1.Label10
TextBox1TextBox10
Button1
Form1

Propiedad
Name
Name
Name
Name
Name
Name
Name
Name
Name
Name
Text
Name
Text
Name
Text
Name
Text

Valor
Funcin Now
Funcin TODAY
Formato d/MM/y:
Formato D:
Formato d-MMMM-yyy
Formato F:
Formato h:m:s:
Formato hh:mm:ss
Formato HH
Formato HH:mm
texto1texto10
formato1formato10
En blanco
boton
Ver formatos de fecha/hora
formulario
Formato de fecha/hora

La interfaz de usuario queda como se muestra en la siguiente figura:

67

Figura 5.7 Interfaz de usuario (FuncionesFechasHoras).

Escribir cdigo

Seleccione el objeto boton y abra el editor de cdigo y escriba el siguiente cdigo:


formato1.Text = Date.Now
formato2.Text = Date.Today
formato3.Text = Format(Date.Now, "d/MM/y")
formato4.Text = Format(Date.Now, "D")
formato5.Text = Format(Date.Now, "d-MMMM-yyy")
formato6.Text = Format(Date.Now, "F")
formato7.Text = Format(Date.Now, "h:m:s")
formato8.Text = Format(Date.Now, "hh:mm:ss")
formato9.Text = Format(Date.Now, "HH")
formato10.Text = Format(Date.Now, "HH:mm")

Se utiliza la funcin Format (fecha actual del sistema, tipo de formato) para dar
un formato especfico de fecha u hora a las diferentes cajas de texto en la propiedad
Text. Cuando el usuario pulse el botn Ver formatos fecha/hora en tiempo de
ejecucin mostrar en cada caja de texto el formato respectivo.

Ejecutar el proyecto

Al ejecutarse el proyecto en el entorno de desarrollo de Visual Basic.NET, se debera


visualizar la siguiente pantalla:

68

Figura 5.8 Ejecucin aplicacin FuncionesFechasHoras.

5.3.2 Funciones Matemticas


La clase Math de Visual Basic .NET contiene una serie de funciones trigonomtricas,
logartmicas y otras funciones matemticas que sirven para realizar clculos aritmticos,
en la siguiente tabla se muestran las funciones ms comunes:
Tabla 5.5 Funciones matemticas de Visual Basic .NET.
Mtodo de Visual Basic .NET
Math.Ceiling(double)

Math.Floor(double)

Math.sqrt(n)
Math.pow(n,p)
Math.Abs(n)
Math.sin(n)
Math.cos(n)
Math.tan(n)
Math.Max(n1,n2)
Math.min(n1,n2)
Math.BigMul(n1,n2)
Math.round(double)

Descripcin
Devuelve el nmero entero ms pequeo mayor o
igual que el nmero especificado.
Math.ceiling(1.6)=2
Math.ceiling(0.8)=1
Devuelve el nmero entero ms grande menor o
igual que el nmero especificado.
Math.Floor(1.6)=1
Math.Floor(0.8)=0
Devuelve la raz cuadrada de un nmero.
Devuelve un nmero especificado elevado a la
potencia especificada.
Sobrecargado. Devuelve el valor absoluto de un
nmero especificado.
Devuelve el seno del ngulo especificado.
Devuelve el coseno del ngulo especificado.
Devuelve la tangente del ngulo especificado.
Devuelve el mayor de dos nmeros.
Devuelve el menor de dos nmeros.
Calcula el producto de dos nmeros.
Devuelve el nmero ms prximo al valor
especificado.
Math.round(10.5)=10
Math.round(10.51)=11

69

5.3.2.1 Ejemplo prctico funciones matemticas


Hacer una aplicacin llamadas FuncionesMatematicas que permita a un usuario pulsar
un botn y visualizar en cajas de texto las funciones aritmticas bsicas.

Crear la interfaz de usuario.

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 11 Label, 11 Textbox, 1
Button.

Establecer las propiedades de los objetos de la interfaz de usuario

Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
Tabla 5.6 Propiedades de los controles del proyecto FuncionesMatematicas.
Label1

Control

Label2
Label3
Label4
Label5
Label6
Label7
Label8
Label9
Label10
Label11
TextBox1TextBox11
Button1
Form1

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text

Valor
Funcin Math.Ceiling(8.5)
texto1
Funcin Math.Floor(8.5)
texto2
Funcin Math.Round(10.5)
texto3
Funcin Math.Round(10.51)
texto4
Funcin Math.Max(7,5)
texto5
Funcin Math.Min(7,5)
texto6
Funcin Math.Pow(5,2)
texto7
Funcin Math.Sqrt(3)
texto8
Funcin Math.Sin(1.0)
texto9
Funcin Math.cos(1.0)
texto10
Funcin Math.tan(1.0)
texto11
campo1campo10
En blanco
boton
Ver funciones matemticas.
formulario
Funciones matemticas.

La interfaz de usuario queda como se muestra en la siguiente figura:

70

Figura 5.9 Interfaz de usuario (FuncionesMatematicas).

Escribir cdigo

Seleccione el objeto boton y abra el editor de cdigo y escriba el siguiente cdigo:


campo1.Text = Math.Ceiling(8.5)
campo2.Text = Math.Floor(8.5)
campo3.Text = Math.Round(10.5)
campo4.Text = Math.Round(10.51)
campo5.Text = Math.Max(7, 5)
campo6.Text = Math.Min(7, 5)
campo7.Text = Math.Pow(5, 2)
campo8.Text = Math.Sqrt(3)
campo9.Text = Math.Sin(1.0)
campo10.Text = Math.Cos(1.0)
campo11.Text = Math.Tan(1.0)

El anterior cdigo se le asigna una funcin matemtica a la propiedad Text de cada


caja de texto. Cuando el usuario pulse el botn Ver Funciones matemticas en tiempo
de ejecucin mostrar en cada caja de texto el valor respectivo de la operacin que le
fue asignada.

Ejecutar el proyecto

Al ejecutarse el proyecto en el entorno de desarrollo de visual Basic.NET, se debe


visualizar:

71

Figura 5.10 Ejecucin aplicacin FuncionesMatematicas.

5.3.3 Funciones para cadenas de caracteres


Visual Basic .NET contiene una serie de funciones para la manipulacin de cadenas de
caracteres que sirven para realizar diferentes operaciones entre caracteres, en la
siguiente tabla se muestran las funciones ms comunes:
Tabla 5.7 Funciones para manipulacin de cadenas.
Funcin
Chars(n): Permite obtener un carcter
especfico de una cadena de
caracteres.
Length: Permite obtener la longitud
de de una cadena de caracteres.
Concat(texto1,
texto,....,
texton):
Permite unir dos o ms cadenas de
caracteres.
ToUpper: Convierte una cadena de
caracteres de minscula a mayscula.
ToLower: Convierte una cadena de
caracteres de mayscula a minscula.

Ejemplo
Dim micadena As String = "ABCDE"
Dim micaracter As Char
micaracter = micadena.Chars(3)
micaracter = "D"
Dim micadena As String = "ABCDE"
Dim Entero As Integer
entero=cadena.length
entero=5
Dim micadena As String = "hola"
Dim unircadena As String
unircadena= String.Concat(micadena, " ",
"pueblo")
unircadena= hola pueblo
Dim micadena As String = "hola"
micadena= micadena.ToUpper()
micadena= HOLA
Dim micadena As String = "HOLA"
micadena= micadena.ToLower()
micadena= hola

72

Remove(posicin inicial, nmero de


caracteres): Permite eliminar una
cantidad determinada de caracteres
en una posicin especfica de una
cadena de caracteres.
Insert (posicin de insercin,cadena
de caracteres): Permite insertar una
cantidad determinada de caracteres
en una posicin especfica de una
cadena de caracteres.
SubString((posicin inicial, nmero
de caracteres): Permite obtener una
subcadena de una cadena de
caracteres.
Replace(cadena
de
caracteres,
carcter original, nuevo carcter):
Permite reemplazar una subcadena
determinada por otra subcadena
especificada.
StrReverse(cadena de caracteres):
Devuelve una cadena de caracteres
invertida segn el orden de los
caracteres de la cadena especificada.
Mid (cadena de caracteres, posicin
inicial, numero de caracteres),
Mid (cadena de caracteres, posicin
inicial): Devuelve una subcadena que
a su vez contiene un nmero
especificado de caracteres de una
cadena de caracteres.
Len (cadena de caracteres): Devuelve
un entero que contiene el nmero de
caracteres de una cadena
de
caracteres.
TocharArray: Convierte una cadena
de caracteres en un arreglo de
caracteres.
Split
(cadena
de
caracteres,
delimitador): Devuelve un arreglo
unidimensional que contiene un
nmero especfico de subcadenas.
Trim (cadena): Elimina los espacios
de ambos lados de una cadena de
caracteres.
Asc (carcter): Devuelve el numero
Ascci de un carcter.
Chr (numero): Devuelve el carcter
Ascci de un nmero.
String.Copy (cadena): Copia una
cadena de caracteres.
IndexOf (carcter a buscar): Devuelve
la posicin de un carcter especfico.

Dim micadena As String = "campoalegre"


micadena= micadena.Remove(2,3)
micadena= caalegre
Dim micadena As String = "campoalegre"
micadena= micadena.insert(4, ms )
micadena= campo ms alegre
Dim micadena As String = "campoalegre"
Dim subcadena As String
subcadena= micadena.substring(5,4)
subcadena=aleg
Dim micadena As String = "campoalegre"
Dim Nuevacadena As String
nuevacadena =replace( m i c a d e n a , "e", "i")
nuevacadena=campoaligri
Dim micadena As String = "campoalegre"
Dim Nuevacadena As String
nuevacadena =StrReverse( m i c a d e n a )
nuevacadena=ergelaopmac
Dim micadena As String = "campoalegre"
Dim Nuevacadena As String
nuevacadena =Mid( m i c a d e n a , 1 , 5 )
nuevacadena=campo
Dim micadena As String = "campoalegre"
Dim Nuevacadena As String
nuevacadena =Mid( m i c a d e n a , 5 )
nuevacadena=alegre
Dim micadena As String = "ABCDE"
Dim Entero As Integer
entero=len(micadena)
entero=5
Dim micadena As String = "campeon"
Dim arreglo() As char
arreglo=mi cadena.ToCharArray()
arreglo={c,a,m,p,e,o,n}
Dim cadena as String=42,21,50,33
Dim subcadenas() As String
Subcadenas=Split(subcadenas,,)
Retorna={42 21 50 33}
Dim cadena As String= Colombia
cadena=Trim(cadena)
Dim numero As Integer
numero=Asc(a) Devuelve 97
Dim letra As char
letra=Chr(97) Devuelve a
Dim cadena As String=Hola
Dim copia as String
copia=String.Copy(cadena)
Dim cadena as String=Colombia
Dim posicin As Integer
posicin=cadena.IndexOf(m) Devuelve 4

73

5.3.3.1 Ejemplo prctico funciones de cadena de caracteres


Disear una aplicacin llamada FuncionesCadenas que permita a un usuario visualizar
en una caja de texto las funciones de manipulacin de cadena de caracteres bsicas
cuando se pulse un botn especfico.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 2 Label, 2 Textbox, 12
Button.

Establecer las propiedades de los objetos de la interfaz de usuario

Para el caso del ejemplo establezca las siguientes modificaciones a los controles:
Tabla 5.8 Propiedades de los controles del proyecto FuncionesCadenas.
Control
Label1
Label2
Button1
Button2
Button3
Button4
Button5
Button6
Button7
Button8
Button9
Button10
Button11
Button12
TextBox1
Textbox2
Form1

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text

Valor
lblcadena
Cadena origonal
lblresultado
Cadena resultante
boton1
Chars(n)
boton2
Length
boton3
ToUpper
boton4
ToLower
boton5
Remove
boton6
Insert
boton7
Substring
boton8
Mid
boton9
StrReverse
boton10
Replace
boton11
Asc
boton12
Concat
txtcadena
Esternomscleoide
txtresultante
En blanco
formulario
Funciones de cadenas de caracteres.

La interfaz de usuario queda como se muestra en la siguiente figura:


74

Figura 5.11 Interfaz de usuario (FuncionesCadenas).

Escribir cdigo

Seleccione el objeto boton1 y abra el editor de cdigo y escriba el siguiente cdigo:


resultado.Text = texto.Text.Chars(5)

Seleccione el objeto boton2 y abra el editor de cdigo y escriba el siguiente cdigo:


resultado.Text = texto.Text.Length

Seleccione el objeto boton3 y abra el editor de cdigo y escriba el siguiente cdigo:


resultado.Text = texto.Text.ToUpper

Seleccione el objeto boton4 y abra el editor de cdigo y escriba el siguiente cdigo:


resultado.Text = texto.Text.ToLower

Seleccione el objeto boton5 y abra el editor de cdigo y escriba el siguiente cdigo:


resultado.Text = texto.Text.Remove(2, 5)

Seleccione el objeto boton6 y abra el editor de cdigo y escriba el siguiente cdigo:


resultado.Text = texto.Text.Insert(5, "NUEVO")

Seleccione el objeto boton7 y abra el editor de cdigo y escriba el siguiente cdigo:


resultado.Text = texto.Text.Substring(2, 5)

Seleccione el objeto boton8 y abra el editor de cdigo y escriba el siguiente cdigo:


resultado.Text = Mid(texto.Text, 2, 5)

75

Seleccione el objeto boton9 y abra el editor de cdigo y escriba el siguiente cdigo:


resultado.Text = StrReverse(texto.Text)

Seleccione el objeto boton10 y abra el editor de cdigo y escriba el siguiente cdigo:


resultado.Text = texto.Text.Replace("e", "x")

Seleccione el objeto boton11 y abra el editor de cdigo y escriba el siguiente cdigo:


resultado.Text = Asc(texto.Text.Chars(5))

Seleccione el objeto boton12 y abra el editor de cdigo y escriba el siguiente cdigo:


resultado.Text = String.Concat(texto.Text, " que palabrita")

En el anterior cdigo se le asigna una funcin de manipulacin de cadenas en la


propiedad Text de cada caja de texto. Cuando el usuario pulse un botn en tiempo de
ejecucin mostrar en el objeto resultado el valor respectivo de la operacin que le fue
asignada.

Ejecutar el proyecto

Al ejecutarse la aplicacin se visualizar la figura 5.11, Se puede pulsar cada uno de los
botones para ver los resultados de la funcin especificada. Por ejemplo si se pulsa el
botn Concat, se obtendr la siguiente figura:
Figura 5.12 Ejecucin aplicacin cadenas_caracteres.

76

5.4 Ejercicios de procedimientos


1. Crear un programa que contenga un mtodo llamado perfecto que reciba un
parmetro entero e imprima si este es o no perfecto. Se dice que un nmero es
un nmero perfecto si la suma de sus factores, incluido el 1, da como
resultado el nmero. Por ejemplo, 6 es un nmero perfecto porque 6=1+2+3.
2. Disear un programa que contenga un mtodo llamado Celsius que reciba un
valor representado en grados Celsius y retorne el valor representado en grados
Fahrenheit digitado desde el teclado.
3. Elaborar un programa que contenga un mtodo que reciba un nmero entero y
retorne el nmero con sus dgitos invertidos. Ejemplo: dado el nmero 7631 el
mtodo deber retornar 1367.
4. Escribir un programa que capture dos nmeros y por medio de un mtodo
imprima la multiplicacin de estos por medio de las sumas sucesivas. Ejemplo:
20 es igual a 4+4+4+4+4 5+5+5+5.
5. Realizar un programa con un mtodo que calcule las races de una ecuacin de
segundo grado.El discriminante es (b^2- 4*a*c). Se deben tener en cuenta todas
las posibles validaciones.
6. Elaborar un programa utilizando un mtodo que determine cuantas cifras posee
un nmero entero positivo introducido por teclado.
7. Hacer un programa que lea una cadena de caracteres, digitar un carcter que se
quiera eliminar y por medio de un mtodo imprimir la cadena resultante.
8. Disear el programa para imprimir la suma de los nmeros impares menores o
iguales que N por medio de un mtodo.
9. Crear un programa que reciba un nmero entero y por medio de un mtodo
retorne el nmero con sus dgitos invertidos. Ejemplo: dado el nmero 7631 el
mtodo deber retornar 1367.
10. Hacer un programa utilizando mtodos que lea un nmero no mayor de 1000 e
imprima ese nmero en letras.

77

6. MATRICES Y COLECCIONES
Las matrices y las colecciones son conjuntos de elementos afines. Una matriz es un
grupo de posiciones de memoria contiguas, que almacenan el mismo nombre y tipo de
dato, estas pueden ser de una o ms dimensiones. Para referirse a un elemento de la
matriz se debe especificar el nombre de la matriz seguido de uno o ms subndices
encerrados entre parntesis. Una coleccin se define por medio del objeto Collection
donde se hace referencia a un grupo de elementos relacionados como un objeto nico.
6.1 Matrices de una Dimensin o Unidimensionales
Una matriz de una dimensin se declara de la siguiente forma:
Dim <nombre matriz> (<numero de elementos>) As Tipo de dato;
Dim mercanca
(12)
As Integer

Tambin se puede inicializar una matriz, de la siguiente manera:


Dim ventas () As Double = {100.0, 254.5, 478.5, 125.8, 458.66}
Dim vendedores () As String = {Julieta, Maria, Jenny, Sara, Lina}

Para almacenar valores en una matriz se debe utilizar el nombre de la matriz y


un subndice que indica en qu posicin se almacenar el valor especificado. En las
siguientes lneas se crear una matriz de 5 posiciones, (el primer valor se almacenar en
la posicin 0) y se le asignarn valores a la matriz. Por lo general para almacenar o
mostrar los valores de una matriz se utilizan las estructuras repetitivas, tambin
llamadas ciclos.
Dim ventas (5), i, z As Integer
For i= 0 To 4
Ventas (i)= i+3
Next

Para acceder a los valores de una matriz, se debe utilizar un valor de ndice
para especificar la posicin a la que se desea acceder. Tambin se pueden utilizar ciclos
para recorrer toda la matriz y acceder a todos los valores.
z = ventas (2)

a z se le asignar el valor de 5 de acuerdo al ejemplo anterior.

6.1.1 Ejemplo prctico matriz unidimensional


Hacer una aplicacin llamada MatricesUnidimensionales que permita a un usuario
capturar 10 nmeros enteros positivos o negativos e imprima los valores en el orden
que se capturan, como tambin los valores pares e impares ordenados de menor a
mayor.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 2 TextBox, 2 Label, 1
Button.

78

Establecer las propiedades de los objetos del interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 6.1 Propiedades de los controles de la aplicacin MatricesUnidimensionales.
Control
TextBox1
TextBox2
TextBox3
TextBox4
Label1
Label2
Label3
Label4
Button1
Form1

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Font-Bold
Name
Text
Font-Bold
Name
Text
Font-Bold
Name
Text
Font-Bold
Name
Text
Name
Text

Valor
txtoriginal
En blanco
txtordenada
En blanco
txtpares
En blanco
txtimpares
En blanco
lbloriginal
Matriz Original
True
lblordenado
Matriz Original
True
lblpares
Nmeros Pares:
True
lblimpares
Nmeros Impares:
True
boton
Capturar valores
formulario
Matrices Unidimensionales

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 6.1 Interfaz de usuario (MatricesUnidimensionales).

79

Escribir cdigo

Seleccione el objeto boton y abra el editor de cdigo y escriba el siguiente cdigo:


Dim datos (10) As Integer
Dim i, j, numero, temporal As Integer
txtoriginal.Text = " "
txtordenada.Text = " "
For i = 0 To 9
numero = InputBox("Digite un numero entero", "Capturar valores")
datos (i) = numero
txtoriginal.Text = txtoriginal.Text & datos (i) & " , "
Next
For i = 0 To 9
For j = i To 9
If (datos (i) > datos (j)) Then
temporal = datos (i)
datos (i) = datos (j)
datos (j) = temporal
End If
Next
Next
For i = 0 To 9
txtordenada.Text = txtordenada.Text & datos (i) & " , "
If (datos (i) Mod 2 = 0) Then
txtpares.Text = txtpares.Text & datos (i) & " , "
Else
txtimpares.Text = txtimpares.Text & datos (i) & " , "
End If
Next

En el anterior cdigo se define una matriz llamada datos, la cual permitir


almacenar 10 valores enteros, como tambin se definen las variables i, j, numero de
tipo Integer. Los controles txtoriginal y txtordenada se inicializan en su propiedad
Text en blanco. Se realiza la programacin utilizando cuatro ciclos For: el primero
permite la capturar de cada uno de los valores digitados por teclado y se le asigna a la
variable numero, luego dicho valor es almacenado en la posicin i de la matriz y por
ltimo al control txtoriginal en su propiedad Text se le asigna lo que contena
anteriormente ese control ms el valor que ha sido almacenado en datos (i) agregndole
una coma (,). El segundo y tercer ciclo se utilizan para comparar pares de elementos
adyacentes e intercambiarlos cuando se cumpla la condicin definida dentro del ciclo
ms interno, este mtodo de comparacin es conocido como el mtodo de brbuja. El
cuarto ciclo sirve para recorrer la matriz e ir imprimiendo cada uno de los elementos de
la matriz en el control txtordenada en su propiedad Text. Adems se determinar si el
valor datos (i) es par o impar utilizando el operador Mod. Dependiendo de la
evaluacin se imprimir dicho valor en el objeto txtpares o txtimpares.

Ejecutar el proyecto

Al ejecutar el proyecto en el entorno de desarrollo de visual Basic.NET, se debe


visualiza la figura 6.1. Si se pulsa el botn Capturar valores y se digitan los nmeros:
2, 8, 17, 26, 35, 21, 54, 89, 20, 33, se visualizar la siguiente pantalla:

80

Figura 6.2 Ejecucin aplicacin MatricesUnidimensionales.

6.2. Matrices de ms de una Dimensin


Una matriz puede ser definida de dos, tres o ms dimensiones, de cualquier tipo de dato.
Para crear una matriz de ms de una dimensin en los parntesis se separa cada
dimensin por medio de comas (,). El formato para declarar una matriz bidimensional
es:
Dim nombre_matriz (filas, columnas) As Integer
Dim notas (2, 3) As Integer

Para almacenar valores en la matriz bidimensional se utilizan dos subndices, el


primero indica las filas y el segundo las columnas donde se localiza el valor. El primer
valor de las filas y de las columnas es cero (0). En las siguientes lneas se crear una
matriz bidimensional de 2 filas y 3 columnas, y se le asignarn valores a la matriz. Para
almacenar los valores se utilizan dos ciclos.
Dim ventas (2, 3), i, j As Integer
For i= 0 To 1
For j=0 To 2
ventas (i, j) = i+3
Next
Next

Para acceder a los valores de una matriz bidimensionales, se debe utilizar los
dos subndices, como tambin dos ciclos para recorrer toda la matriz y acceder a cada
uno de los valores.
Dim ventas (2, 3), i, j, z As Integer
For i= 0 To 1
For j=0 To 2
z=ventas (i, j) A z se le asignar el valor de la posicin (i, j).
Next
Next

81

6.2.1 Ejemplo prctico matrices bidimensionales


Elaborar una aplicacin llamada MatricesBidimensionales que permita capturar ocho
(8) palabras en una matriz bidimensional. Se deber imprimir cada palabra digitada en
un campo de texto, como tambin imprimir en otro campo de texto todas las palabras
que empiecen con CA.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 2 Label, 2 TextBox, 1
Button.

Establecer las propiedades de los objetos del interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 6.2 Propiedades de los controles de la aplicacin MatricesBidimensionales.
Control
Label1
Label2
Textbox1
TextBox2
Button1
Form1

Propiedad
Name
Text
Name
Text
Name
Text
Multiline
Name
Text
Multiline
Name
Text
Name
Text

Valor
lblpalabras
Palabras Digitadas
lblca
Palas que empiezan con CA.
txtpalabras
En Blanco
True
txtca
En Blanco
True
boton
Capturar palabras
formulario
Matrices Bidimensionales

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 6.3 Interfaz de usuario (Matrices Bidimensionales).

82

Escribir cdigo

Seleccione el objeto boton y abra el editor de cdigo y escriba el siguiente cdigo:


Dim palabras(2, 4) As String
Dim i, j As Integer
For i = 0 To 1
For j = 0 To 3
palabras(i, j) = InputBox("Digite una palabra:", "Capturar Palabras")
txtpalabras.Text = txtpalabras.Text & palabras(i, j) & vbTab
If (palabras(i, j).Substring(0, 2).Equals("ca")) Then
txtca.Text = txtca.Text & palabras(i, j) & vbCrLf
End If
Next
txtpalabras.Text = txtpalabras.Text & vbCrLf & vbCrLf
Next

En el anterior cdigo se define una matriz de 2 filas x 4 columnas llamada


palabras, la cual permitir almacenar 8 cadenas de caracteres, tambin se definen las
variables i, j de tipo Integer. Se utilizan dos ciclos For: el primero realizar el recorrido
por las filas y el segundo lo realizar por las columnas, adems en este ciclo se capturan
las palabras digitadas. Cada palabra capturada es asignada a la matriz palabras en su
posicin i, j. Al objeto txtpalabras en su propiedad Text se le asigna el texto que
contiene dicho control agregndole la nueva palabra concatenada con una tabulacin
(vbtab). Se evala si la palabra capturada contiene en las dos primeras posiciones la
silaba CA. Si la condicin es verdadera, al objeto txtca en su propiedad Text se le
asigna el texto que contiene dicho control agregndole la palabra con CA concatenada
con una tabulacin (vbtab). Al terminar de ejecutarse el segundo For se retorna al
primer ciclo donde al objeto txtpalabras en su propiedad Text se le asigna el texto que
contiene dicho control agregndole dos saltos de lnea utilizando la funcin vbcrlf.

Ejecutar el proyecto

Al ejecutar el proyecto se visualizar la figura 6.3. Al pulsar el botn Capturar


palabras, se mostrar la ventana para la captura de las palabras, como se aprecia en la
siguiente figura:
Figura 6.4 Ventana para capturar palabras.

83

Si se digitan las palabras: ana, dedos, cali, azules, cadena, apoyo, alcanza,
capota, en el objeto txtpalabras se visualizarn las palabras digitadas y en el objeto
txtca todas las palabras que empiezan con CA. Se mostrar la siguiente figura:
Figura 6.5 Matriz bidimensional al capturar las palabras.

6.3 Colecciones
Las colecciones es un objeto nico donde se relacionan un grupo de elementos. Los
elementos de una coleccin no tienen que compartir el mismo tipo de datos. El ndice de
los elementos puede ser 0 1. Su formato es:
Dim nombrecoleccion As New Collection
Donde New es el operador para asignar espacio de memoria de tipo Collection.
Cuando se crea una coleccin, esta se puede manipular con las siguientes funciones:
Add: permite agregar un nuevo elemento a la coleccin.
Remove: permite eliminar un elemento que exista en la coleccin.
Clear: quita todos los elementos de una coleccin.
Count: cuenta cuantos elementos tiene una coleccin.
6.3.1 Ejemplo prctico colecciones
Disear una aplicacin llamada Colecciones que permita adicionar, eliminar, buscar
elementos en una coleccin. Al realizar la operacin de adicin o eliminacin se debe
visualizar como queda la coleccin y por la operacin de bsqueda se debe mostrar la
posicin donde se encuentra el elemento.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


84

siguientes controles en el formulario en la posicin deseada: 2 Label, 2 TextBox, 1


Button.

Establecer las propiedades de los objetos del interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 6.2 Propiedades de los controles de la aplicacin Colecciones.
Control
Label1
Textbox1
TextBox2
Button1
Button2
Button3
Form1

Propiedad
Name
Text
Name
Text
Multiline
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text

Valor
lblelementos
Elementos de la Coleccin
txtelementos
En Blanco
True
txtbuscar
En Blanco
botonadicionar
Adicionar elementos
botoneliminar
Eliminar elementos
botonbuscar
Elemento a Buscar:
formulario
Objeto Collection

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 6.6 Interfaz de usuario (Colecciones).

85

Escribir cdigo
a) Antes de la apertura de la clase declare la coleccin para que esta sea publica a
cada uno de los procedimientos de la aplicacin. D doble clic sobre el
formulario y busque Public class formulario y antes de este cdigo escriba:
Dim coleccion As New Collection

b) Seleccione el objeto botonadicionar, abra el editor de cdigo y escriba el


siguiente cdigo:
Dim dato As Integer
dato = InputBox("Digite elemento a Adicionar:", "Adicionar elemento a una coleccion")
coleccion.Add(dato)
elementos.Text = ""
For Each elemento As Integer In coleccion
elementos.Text = elementos.Text & elemento & vbCrLf
Next

Se declara una variable llamada dato de tipo Integer. A dicha variable se le


asigna el elemento digitado por teclado. Utilizando la funcin Add se adiciona el
elemento a la coleccin y se limpia el objeto elementos. Con la estructura For-Each se
visualizan cada uno de los elementos existentes en la coleccin.
c) Seleccione el objeto botoneliminar y abra el editor de cdigo y escriba el
siguiente cdigo:
Dim dato, nroelementos As Integer
nroelementos = coleccion.Count
dato = InputBox("Digite elemento a Eliminar:", "Eliminar elemento de una coleccion")
If ( dato>nroelementos) Then
MsgBox("Elemento no existe", MsgBoxStyle.Information)
Else
coleccion.Remove(dato)
End If
elementos.Text = ""
For Each elemento As Integer In coleccion
elementos.Text = elementos.Text & elemento & vbCrLf
Next

A la variable nroelementos se le asigna la cantidad de elementos que tiene la


coleccin utilizando la funcin Count. Si el valor de la variable dato es mayor que el
valor de la la variable nroelementos se visualizar el mensaje Elemento no existe. En
caso contrario se eliminar el elemento en la posicion indicada utilizando la funcin
Remove. Se debe tener en cuenta que se elimina es la posicion de un elemento en la
coleccin.
d) eleccione el objeto botonbuscar y abra el editor de cdigo y escriba el siguiente
cdigo:
Dim dato, posicion, auxiliar As Integer
dato = InputBox("Digite elemento a Buscar:", "Buscar elementoen a una coleccion")
posicion = 1
auxiliar = 0
For Each elemento As Integer In coleccion
If (elemento = dato) Then

86

txtbuscar.Text = "el elemento:" & dato & " existe en la posicin:" & posicion
auxiliar = 1
End If
posicion = posicion + 1

Next
If (auxiliar = 0) Then
txtbuscar.Text = "No existe el elemento:" & dato
End If

Se crean tres variables de tipo Integer: dato, posicion, auxiliar. A la variable


dato se le asigna el elemento digitado por teclado; La variable posicion se inicializa en
uno (1) y la variable auxiliar en cero (0). Con la estructura For-Each se recorre cada
uno de los elementos de la coleccin. Se evala si el elemento encontrado es igual al
valor de la variable dato. Si se cumple la condicion se le asigna al objeto txtbuscar el
texto el elemento concatenado al valor de la variable dato junto con el texto existe en
la posicin: unido al valor de la variable posicion, adems se le asigna a la variable
auxiliar el valor uno (1) . Si no ingresa a la estructura If se incrementar el valor de la
variable posicion. Al terminarse de recorrer la coleccin, si el valor de la variable
auxiliar es igual a cero ( no se encontr el elemento buscado) se le asignar al objeto
txtbuscar el texto No existe el elemento unido al valor de la variable dato.

Ejecutar el proyecto

Al ejecutar el proyecto se visualizar la figura 6.6. Al pulsar el botn Adicionar


elementos, se mostrar la ventana para la adicionar un elemento a la coleccin. Se debe
pulsar el botn tantas veces como elementos se desee adicionar. Se apreciara la
siguiente figura:
Figura 6.7 Ventana para adicionar elementos a la coleccin.

Si se adicionan los elementos: 2, 5, , 7, 1, se obtendr la siguiente figura:

87

Figura 6.8 Aplicacin con los elementos de la coleccin.

Al pulsar el botn Eliminar elementos, se mostrar la ventana para la eliminar


un elemento a la coleccin. Se debe pulsar el botn tantas veces como elementos se
desee eliminar. Se visualizar la siguiente figura:
Figura 6.9 Ventana para eliminar elementos de la coleccin.

Si se digit el nmero 15, se obtendr la siguiente figura:


Figura 6.10 Mensaje de No existencia de un elemento en la coleccin.

88

Al pulsar el botn Elemento a Buscar, se mostrar la ventana para realizar la


bsqueda de un elemento en la coleccin. Se debe pulsar el botn tantas veces como
elementos se desee buscar. Se visualizar la siguiente figura:
Figura 6.11 Ventana para eliminar elementos de la coleccin.

Si se digit el nmero 7, se visualizar la siguiente figura:


Figura 6.12 Aplicacin con el elemento encontrado.

89

6.4 Ejercicios Matrices


1. Escribir un programa que permita capturar 10 nmeros e imprima los nmeros
positivos.
2. Realizar un programa que capture 20 nmeros enteros e imprima la cantidad y la
suma de: negativos, cero y positivos.
3. Hacer un programa que imprima la suma de los elementos de las diagonales de
una matriz cuadrada. Se debe capturar la dimensin de la matriz.
4. Elaborar un programa que capture notas de 20 alumnos de una clase. Cada
alumno debe tener tres notas. Se debe imprimir las notas de cada alumno, su
nota definitiva, adems, las notas definitivas menores de 6.0
5. Crear un programa que imprima 20 nmeros aleatorios entre 1 y 1000. Adems,
se deber imprimir el valor mximo y la posicin que ocupa en la matriz.
6. Escribir un programa que permita insertar o eliminar elementos de un arreglo
(los elementos deben mostrarse como se ingresaron).
7. Disear un programa que permita capturar 10 palabras en un arreglo
bidimensional e imprimir dicho arreglo ordenado alfabticamente.
8. Implementar un programa que capture 10 palabras e imprimir aquellas palabras
que contengan la silaba PE.
9. Hacer un programa que intercambie las filas de una matriz. Los elementos de la
fila 0 deben intercambiarse con los de la fila N, la fila 1 con los de la fila N-1 y
as sucesivamente. Imprimir las dos matrices.
10. Realizar un programa que capture 10 nmeros en una matriz unidimensional e
imprimir el mayor y menor valor.

90

7. CONTROLES PARA INTERFAZ DE USUARIO


Hasta ahora se ha trabajo la interfaz de usuario con controles bsicos del cuadro de
herramientas como lo han sido los objetos Label, TextBox y Button. En este captulo
se programaran algunos de los controles ms comunes que se utilizan en el entorno de
desarrollo de Visual Basic.NET. Al arrastrarse cualquier control del cuadro de
herramientas hacia un formulario, Visual Basic .NET crea el cdigo necesario para
interactuar con cada control, esto es transparente para el usuario.
7.1 LinkLabel
permite crear un texto con hipervnculo, donde se puede
El control LinkLabel
comportar como un vnculo para acceder a pginas de Internet ejecutar programas de
la plataforma Windows.
7.1.1 Ejemplo prctico LinkLabel
Realizar una aplicacin llamada LinkLabel que permita a un usuario por medio de
controles LinkLabel conectarse a una pgina Web abrir una aplicacin de Windows.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en siguientes controles y ubquelos en el


formulario en la posicin deseada: 2 Label, 2 LinkLabel.

Establecer las propiedades de los objetos del interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 7.1 Propiedades de los controles de la aplicacin LinkLabel.
Label1

Control

Label2
LinkLabel1
LinkLabel2
Form1

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text

Valor
lblgoogle
Abrir Google:
lblexcel
Abrir Excel:
vinculogoogle
Ir a Google
vinculoexcel
Abrir Excel
formulario
Control LinkLabel

La interfaz de usuario con las modificaciones respectivas en las propiedades de


cada control queda como se muestra en la siguiente figura:

91

Figura 7.1 Interfaz de usuario (ControlLinkLabel).

Escribir cdigo
a) Seleccione el objeto vinculogoogle, d doble clic para abrir el editor del
procedimiento vinculogoogle_LinkClicked y escriba el siguiente cdigo:
vinculogoogle.LinkVisited = True
System.Diagnostics.Process.Start("http://www.google.com.co")

En la primera lnea de cdigo se asocia el valor True a la propiedad


LinkVisited para cambiar el color del vnculo cuando ya se ha ejecutado dicho vnculo.
En la segunda lnea se utiliza el mtodo Start de la clase Process que administra la
ejecucin de un programa utilizando el espacio de nombres System.Diagnostics. Al
incluir la direccin del sitio de Internet o la URL4 a continuacin del mtodo Start, se le
est diciendo a Visual Basic .NET que se desea ver el sitio Web especificado.
b) Seleccione el objeto vinculoexcel, de doble clic para abrir el editor del
procedimiento vinculoexcel_LinkClicked y escriba el siguiente cdigo:
vinculoexcel.LinkVisited = True
System.Diagnostics.Process.Start("excel")

Una caracterstica del mtodo Start de la clase Process es que se puede utilizar
para ejecutar diferentes aplicaciones, el mtodo Start puede recibir dos argumentos: el
primer argumento se utiliza para ejecutar una aplicacin especfica sin necesidad de
configurar la ubicacin de la aplicacin. En el segundo argumento se puede definir la
ruta y el nombre del documento que se quiere abrir. En este caso se busca ejecutar
solamente el programa Excel de Microsoft sin abrir ningn archivo especfico.

Ejecutar el proyecto

Al realizar la ejecucin del proyecto se visualizar la figura 7.1. Si se d clic sobre el


vnculo Ir a Google se observar la pgina inicial de Google.

URL significa Uniform Resource Locator, es decir, localizador uniforme de recurso.


Es una secuencia de caracteres, de acuerdo a un formato estndar, que se usa para
nombrar recursos, como documentos e imgenes en Internet, por su localizacin.

92

Figura 7.2 Ejecucin vnculo Ir a Google.

7.2 Controles ListBox y ComboBox


Los controles ListBox
y ComboBox
permiten definir una lista de elementos.
El control ListBox 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 dentro del control, se agregar automticamente una barra de desplazamiento al
control. El control ComboBox al igual que el control ListBox permite definir una lista
de elementos donde el usuario puede seleccionar un elemento o ms. Al momento de la
ejecucin del programa toda la lista de elementos, estarn a la vista del usuario para que
este los seleccione. Para seleccionar un elemento deber pulsar la flecha que est al lado
derecho del encabezado.
7.2.1 Ejemplo prctico ListBox y ComboBox
Hacer una aplicacin llamada ListBoxComboBox que permita a un usuario seleccionar
en un control ListBox un color y de un control ComboBox un tamao de letra para
poder cambiar de color y/o tamao de letra de un texto predefinido en un campo de
texto.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en los siguientes controles y ubquelos


en el formulario en la posicin deseada: 2 Label, 1 ListBox, 1 ComboBox y 1
TextBox.

Establecer las propiedades de los objetos del interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 7.2 Propiedades de los controles de la aplicacin ListBoxComboBox.
Control
TextBox1
Label1

Propiedad
Name
Text
Font-Bold
Name

Valor
texto
Texto para cambiar de color y tamao
True
lblcolor

93

Label2
ComboBox1
ListBox1
Form1

Text
Name
Text
Name
Name
Name
Text

Cambiar el color de la letra


lblletra
Cambiar el tamao de la letra
listacolores
listaletra
formulario
Controles ListBox y ComboBox

La interfaz de usuario con las modificaciones respectivas en las propiedades de


cada control queda como se muestra en la siguiente figura:
Figura 7.3 Interfaz de usuario (ListBoxComboBox).

Agregarle elementos a los controles ListBox y ComboBox

Para agregarle los elementos a los controles ListBox (listacolores) y ComboBox


(listaletra) se puede realizar de las siguientes formas:
1. Seleccionar el control, buscar la propiedad Items y pulsar
Editor de la coleccin Cadena.

para ver la ventana

2. Seleccionar el control, dar clic sobre la flecha que aparece en la parte superior
derecha del control y all escoger la opcin Editar elementos para ver la
ventana Editor de la coleccin Cadena.
3. Dar doble sobre el formulario para ver la ventana de cdigo del procedimiento
Sub formulario_Load. all se debe escribir la siguiente lnea por cada elemento
que se desee agregar:
nombre_del_control_ListisBox_o_ComboBox.Items.Add("nombre_del_elemento")

Se utilizar la opcin 2. Al seleccionar el control listacolores y dar clic sobre la


flecha, se observar la ventana Tareas de ListBox:

94

Figura 7.4 Ventana agregar elementos a un ListBox.

Pulse la opcin Editar elementos para ver la ventana del Editor de la coleccin
Cadena.
Figura 7.5 Ventana Editor de la coleccin Cadena.

Digite por cada lnea el nombre de un color, para el ejemplo escriba: Negro,
Amarrillo, Verde, Azul, Rojo, Caf, Rosado y Gris. La ventana del Editor quedara de la
siguiente forma:
Figura 7.6 Ventana del Editor con los elementos agregados al control ListBox.

95

Al pulsar el botn Aceptar del Editor, el formulario tendr la siguiente


apariencia:
Figura 7.7 Formulario con los elementos en el objeto ListBox.

Ahora seleccione el control listaletra y d clic sobre la flecha, se observar la


ventana Tareas de ComboBox:
Figura 7.8 Ventana agregar elementos a un ComboBox.

Pulse la opcin Editar elementos para ver la ventana del Editor de la coleccin
Cadena. Adicione los tamaos de letra de acuerdo a la siguiente figura:

96

Figura 7.9 Ventana del Editor con los elementos agregados al control ComboBox.

Escribir cdigo
a) Seleccione el objeto listaletra, d doble clic para abrir el editor de cdigo
listaletra_SelectedIndexChanged y escriba el siguiente cdigo:
Select listaletra.SelectedIndex
Case Is = 0
texto.Font = New Font("Microsoft Sans Serif", 8, FontStyle.Bold)
Case Is = 1
texto.Font = New Font("Microsoft Sans Serif", 12, FontStyle.Bold)
Case Is = 2
texto.Font = New Font("Microsoft Sans Serif", 16, FontStyle.Bold)
Case Is = 3
texto.Font = New Font("Microsoft Sans Serif", 20, FontStyle.Bold)
Case Is = 4
texto.Font = New Font("Microsoft Sans Serif", 22, FontStyle.Bold)
Case Is = 5
texto.Font = New Font("Microsoft Sans Serif", 24, FontStyle.Bold)
Case Is = 6
texto.Font = New Font("Microsoft Sans Serif", 26, FontStyle.Bold)
Case Is = 7
texto.Font = New Font("Microsoft Sans Serif", 28, FontStyle.Bold)
End Select

Al adicionar elementos a un control ListBox ComboBox, el primer elemento


tendr como valor de ndice cero (0), el segundo el valor de ndice uno (1) y as
sucesivamente hasta el elemento n. En el anterior cdigo por medio de la propiedad
SelectedIndex (selecciona el ndice) del control listaletra se obtiene el valor del ndice
que el usuario ha seleccionado para luego buscar el caso especifico y asignarle el nuevo
tamao de letra a la propiedad Font del control texto. El nuevo tamao se obtiene
asignando espacio de memoria (New) de tipo Font que recibe los siguientes parmetros:
tipo de letra, tamao de letra y estilo de letra.
b) Seleccione el objeto listacolores, d doble clic para abrir el editor de cdigo
listacolores_SelectedIndexChanged y escriba el siguiente cdigo:

97

Select Case listacolores.SelectedIndex


Case Is = 0
texto.ForeColor = Color.Black
Case Is = 1
texto.ForeColor = Color.Yellow
Case Is = 2
texto.ForeColor = Color.Green
Case Is = 3
texto.ForeColor = Color.Blue
Case Is = 4
texto.ForeColor = Color.Red
Case Is = 5
texto.ForeColor = Color.Brown
Case Is = 6
texto.ForeColor = Color.Pink
Case Is = 7
texto.ForeColor = Color.Gray
End Select

Tambin con la propiedad SelectedIndex del control listacolores se obtiene el


valor del ndice que el usuario ha seleccionado para luego buscar el caso especfico y
asignarle el nuevo color de letra a la propiedad Forecolor del control texto. El nuevo
color se obtiene de la clase Color.

Ejecutar el proyecto

Cuando se ejecuta el proyecto se visualiza la figura 7.7. Si se selecciona del control


listacolores el color verde y del control listaletra el tamao 22, se obtendr la
siguiente figura:
Figura 7.10 Ejecucin aplicacin ListBoxComboBox.

98

7.3 Checkbox y RadioButton


es una casilla de verificacin. Un control RadioButton
Un control CheckBox
permite a un usuario escoger una opcin entre varias opciones. Ambos controles tienen
dos estados (True, False). Tanto el control CheckBox como el RadioButton para
cambiar su estado se hace a travs de la propiedad Checked.
La principal diferencia entre el CheckBox y el RadioButton es que si se tiene un
conjunto de controles CheckBox y un conjunto de RadioButton, en los CheckBox se
puede activar todos al mismo tiempo, mientras los RadioButton solo uno quedara
activado en un momento dado.
7.3.1 Ejemplo prctico Checkbox y RadioButton
Realizar una aplicacin llamada CheckBoxRadioButton que permita a un usuario por
medio de controles CheckBox y RadioButton cambiar el tipo de fuente, el color de
fondo y el color del texto en un objeto Label.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en los siguientes controles y ubquelos


en el formulario en la posicin deseada: 4 Label, 2 Panel, 3 CheckBox, 3
RadioButton.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 7.3 Propiedades de los controles de la aplicacin CheckBoxRadioButton.
Control
Label1
Label2
Label3
Label4
CheckBox1
CheckBox2
CheckBox3
RadioButton1
RadioButton2

Propiedad
Name
Text
BorderStyle
Name
Text
BorderStyle
Name
Text
Font -Bold
Name
Text
Font -Bold
Name
Text
Name
Text
Name
Text
Name
Text
Checked
Name

Valor
txtcheckbox
Uso del control Checkbox
Fixed3D
txtradiobutton
Uso del control RadioButton
Fixed3D
lblcheckbox
Control CheckBox
True
lblradiobutton
Control RadioButton
True
chequeo1
Cambiar tipo de letra
chequeo2
Cambiar color del texto
chequeo3
Cambiar color de fondo
radio1
Cambiar color del texto
True
radio2

99

RadioButton3
Panel1
Panel2
Form1

Text
Name
Text
Name
Naame
Name
Text

Cambiar color de fondo


radio3
Cambiar color de texto
panelcheckbox
panelradiobutton
formulario
Controles CheckBox - RadioButton

La interfaz de usuario con las modificaciones respectivas en las propiedades de


cada control queda como se muestra en la siguiente figura:
Figura 7.11 Interfaz de usuario (CheckBoxRadioButton).

Escribir cdigo
a) Seleccione el objeto Chequeo1, d doble clic para abrir el editor de cdigo
Chequeo1_CheckedChanged y escriba el siguiente cdigo:
If (Chequeo1.Checked) Then
txtcheckbox.Font=New Font ("Microsoft Sans Serif", 8.25!, FontStyle.Bold)
Else
txtcheckbox.Font=New Font ("Microsoft Sans Serif", 8.25!, FontStyle.Italic)
End If

La instruccin Chequeo1.Checked en la condicin If activa el cuadro de


verificacin en estado True. Por verdadero el tipo de fuente del objeto txtcheckbox
cambiar al tipo de fuente Microsoft Sans Serif, el tamao 8.25! y el estilo de la fuente
a negrilla. Por falso retornar a los valores predefinidos en el control, es este caso el
tipo de fuente Microsoft Sans Serif, el tamao 8.25! y el estilo de la fuente itlica.
b) Seleccione el objeto Chequeo2, d doble clic para abrir el editor del
procedimiento Chequeo2_CheckedChanged y escriba el siguiente cdigo:
If (Chequeo2.Checked) Then
txtcheckbox.BackColor = System.Drawing.Color.Aquamarine
Else
txtcheckbox.BackColor = System.Drawing.Color.White
End If

100

Por verdadero el texto del objeto txtcheckbox cambiar de color utilizando el


espacio de nombres System.Drawing.Color al cual se le asigna el color deseado. Por
falso se retornar a los valores predefinidos en el control, es este caso el color del texto
volver a ser negro.
c) Seleccione el objeto Chequeo3, d doble clic para abrir el editor del
procedimiento Chequeo3_CheckedChanged y escriba el siguiente cdigo:
If (Chequeo3.Checked) Then
txtcheckbox.ForeColor = System.Drawing.Color.Red
Else
txtcheckbox.ForeColor = System.Drawing.Color.Black
End If

Por verdadero el objeto txtcheckbox cambiara de color de fondo utilizando el


espacio de nombres System.Drawing.Color al cual se le asigna el color deseado. Por
falso se retornar a los valores predefinidos en el control, es este caso el color de fondo
es blanco.
d) Seleccione el objeto radio1, d doble clic para abrir el editor del procedimiento
radio1_CheckedChanged y escriba el siguiente cdigo:
If (opcion1.Checked) Then
txtradiobutton.Font= New Font("Microsoft Sans Serif", 8.25!,FontStyle.Bold)
Else
txtradiobutton.Font=New Font("Microsoft Sans Serif" ,8.25!, FontStyle.Italic)
End If

e) Seleccione el objeto radio2, d doble clic para abrir el editor del procedimiento
radio2_CheckedChanged y escriba el siguiente cdigo:
If (opcion2.Checked) Then
txtradiobutton.ForeColor = System.Drawing.Color.Red
Else
txtradiobutton.ForeColor = System.Drawing.Color.Black
End If

f) Seleccione el objeto radio3, d doble clic para abrir el editor del procedimiento
radio3_CheckedChanged y escriba el siguiente cdigo:
If (opcion3.Checked) Then
txtradiobutton.BackColor = System.Drawing.Color.Aquamarine
Else
txtradiobutton.BackColor = System.Drawing.Color.White
End If

Como se puede apreciar, la programacin de los controles RadioButton es


exactamente igual a la de los controles CheckBox.

Ejecutar el proyecto

Al ejecutar el proyecto en el entorno de desarrollo de Visual Basic.NET, se visualizar


la figura 7.11. Si se pulsan cada uno de los controles CheckBox y el control
101

RadioButton con el texto Cambiar color de fondo, se obtendr la siguiente figura:


Figura 7.12 Ejecucin aplicacin CheckBoxRadioButton.

7.4 VScrollBar, HScroolBar, TrackBar.


Un control VScrollBar
es una barra de desplazamiento que permite manipular
rangos de valores numricos por medio de su propiedad Value, los cuales son
establecidos por las propiedades maximum (mximo valor) y minimum (mnimo
valor). El control HScrollBar
realiza la misma funcin, solo los diferencia la forma
de presentacin. Estos controles son utilizados para implementar el desplazamiento en
los contenedores que no proporcionan sus propias barras de desplazamiento, como
PictureBox. El objeto TrackBar
es un control desplazable similar al control
ScrollBar. Para configurar los intervalos entre los que se desplaza se utiliza la
propiedad Value de una barra de seguimiento, estableciendo la propiedad Minimum
para especificar el extremo inferior del intervalo y la propiedad Maximum para
especificar el extremo superior del intervalo.
7.4.1 Ejemplo prctico VScrollBar y TrackBar
Disear una aplicacin llamada ColoresPersonalizados que permita a un usuario por
medio de controles VScrollBar y TrackBar visualizar un color personalizado al
realizar un desplazamiento en cualquiera de los controles.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en los siguientes controles y ubquelos


en el formulario en la posicin deseada: 3 Label, 3 Panel, 3 TextBox, 3 VScrollBar, 3
TrackBar.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:

102

Tabla 7.4 Propiedades de los controles de la aplicacin ColoresPersonalizados.


Control
VScrollBar1,
VScrollBar2,
VScrollBar3.
TrackBar1,
TrackBar2,
TrackBar3
Label1
Label2
Label3
TextBox1
TextBox2
TextBox3
Panel1
Panel2
Panel3
Form1

Propiedad
Name
Maximum
Minimum
Name
Maximum
Minimum
Name
Text
Name
Text
Name
Text
Name
Text
Enabled
Name
Text
Enabled
Name
Text
Enabled
Name
Name
Name
Name
Text

Valor
barra1, barra2, barra3
255
0
desplazamiento1,
desplazamiento2,
desplazamiento3
255
0
lblrojo
Rojo:
lblverde
Verde:
lblazul
Azul:
txtrojo
En blanco
False
txtverde
En blanco
False
txtazul
En blanco
False
panelsrcollbar
paneltrackbar
panelcolores
formulario
Controles VScrollBar - TrackBar

La interfaz de usuario con las modificaciones respectivas en las propiedades de


cada control queda como se muestra en la siguiente figura:
Figura 7.13 Interfaz de usuario (ColoresPersonalizados).

Escribir cdigo
a) Seleccione el objeto barra1, d doble clic para abrir el editor del procedimiento
barra1_Scroll y escriba el siguiente cdigo:
103

panelcolores.BackColor = Color.FromArgb (barra1.Value, barra2.Value, barra3.Value)


txtrojo.Text = barra1.Value

b) Seleccione el objeto barra2, d doble clic para abrir el editor del procedimiento
barra2_Scroll y escriba el siguiente cdigo:
panelcolores.BackColor = Color.FromArgb (barra1.Value, barra2.Value, barra3.Value)
txtverde.Text = barra2.Value

c) Seleccione el objeto barra3, d doble clic para abrir el editor del procedimiento
barra3_Scroll y escriba el siguiente cdigo:
panelcolores.BackColor = Color.FromArgb (barra1.Value, barra2.Value, barra3.Value)
txtazul.Text = barra3.Value

En el anterior cdigo al control panelcolores se le modifica la propiedad


Backcolor asignndole el mtodo FromArgb de la clase Color, el cual define un color
tomando como parmetros los valores de los controles barra1, barra2, barra3 en su
propiedad Value (rojo, verde, azul) . Cada vez que se realiza un desplazamiento por
cada barra se le asigna a los controles txtrojo, txtverde, txtazul en su propiedad Text
el valor de cada barra de desplazamiento que toma el control en su propiedad Value.
Para los controles TrackBar realice la misma programacin, solamente es
necesario cambiar el nombre del control es decir barra? por desplazamiento?.

Ejecutar el proyecto

Al ejecutar el proyecto se visualizar la figura 7.13. Si se realiza un desplazamiento por


cada uno de los controles ScrollBar TrackBar se mostrar en el objeto panelcolores
un color. Por ejemplo, si se tiene un valor de 76 para el rojo, 113 para el verde y 211
para el azul se obtendr un color azul cielo. Esto se puede apreciar en la siguiente
figura:
Figura 7.14 Ejecucin aplicacin ColoresPersonalizados.

104

7.5 DataGridView
permite mostrar datos en una malla o tabla, estos datos
Un control DataGridView
pueden ser con o sin orgen de datos externos (archivos de texto, bases de datos). Sin
especificar un orgen de datos, se pueden crear las columnas y filas que contendrn los
datos y agregarlas directamente al DataGridView. Con orgen de datos se pueden
establecer las propiedades DataSource y DataMember para enlazar el control
DataGridView a un orgen de datos y llenarlo de datos automticamente.
7.5.1 Ejemplo prctico DataGridView
Crear una aplicacin llamada DataGridView que permita a un usuario digitar un
nmero y al pulsar un botn se muestre en una cuadricula la tabla de multiplicacin de
dicho nmero.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en los siguientes controles y ubquelos


en el formulario en la posicin deseada: 2 Label, 1 DataGridView, 1 TextBox, 1
Button.

Establecer las propiedades de los objetos de la interfaz de usuario.

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 7.5 Propiedades de los controles de la aplicacin DataGridView.
Control
Label1
Label2
TextBox1
DataGridView1
Button1
Form1

Propiedad
Name
Text
Name
Text
Name
Text
Name
Name
Text
Name
Text

Valor
lblnumero
Digite un nmero:
lbltabla
Tabla de Multiplicar del nmero N.
txtnumero
En blanco
tabla
boton
Ver Tabla
formulario
Control DataGridView.

La interfaz de usuario con las modificaciones respectivas en las propiedades de


cada control queda como se muestra en la siguiente figura:

105

Figura 7.15 Interfaz de usuario (DataGridView).

Escribir cdigo

Seleccione el objeto boton, d doble clic para abrir el editor del procedimiento
botn_click y escriba el siguiente cdigo:
With tabla
.Columns.Add("Multiplicando", " Multiplicando ")
.Columns.Add("Multiplicador", " Multiplicador ")
.Columns.Add("Producto", "Producto")
.RowCount = 10
For i As Integer = 0 To .RowCount - 1
.Item(0, i).Value = txtnumero.Text
.Item(1, i).Value = i + 1
.Item(2, i).Value = (txtnumero.Text * (i + 1))
Next
End With

Este cdigo sirve para rellenar el objeto tabla con los respectivos datos.
Utilizando el mtodo Add de la propiedad Columns se le adicionan los nombres
Multiplicando, Multiplicador, Producto en la primera fila del objeto tabla y por
medio de la propiedad RowCount se le asigna un valor de 10 filas. Con un ciclo For
que se ejecutar desde una posicin i igual a cero (0) hasta el numero de filas -1 del
objeto tabla y por cada fila se visualizarn tres tems. En la primera columna se
imprimir el valor digitado en el objeto txtnumero, en la segunda columna se
imprimir el valor de i+1 y en la tercera columna el producto de multiplicar el valor del
objeto txtnumero por i+1.

Ejecutar el proyecto

Al ejecutar el proyecto se visualizar la figura 7.15. Si se escribe el nmero 8 en el


objeto txtnumero y se pulsa el botn Ver tabla, se obtendr la siguiente figura:

106

Figura 7.16 Ejecucin aplicacin DataGridView.

7.6 ListView
Un control ListView
permite visualizar una lista de elementos con texto y
opcionalmente con un icono que identifique al elemento. Los elementos se pueden
mostrar cmo: iconos grandes, iconos pequeos, lista de iconos o detalles. La vista de
detalles (Details) permite mostrar el elemento y sus subelementos en una cuadrcula con
encabezados de columna que identifican la informacin que se presenta en un
subelemento.
7.6.1 Ejemplo prctico ListView
Crear una aplicacin llamada ListView que permita a un usuario seleccionar un tipo de
comida rpida, como tambin seleccionar un tipo de bebida. El usuario deber visualizar
en un control ListView un cdigo, el elemento seleccionado, el valor del elemento, as
como la sumatoria de los elementos seleccionados. Por otro lado, el usuario podr
seleccionar un elemento y eliminarlo del control ListView.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en los siguientes controles y ubquelos


en el formulario en la posicin deseada: 4 Label, 1 TextBox, 2 ComboBox, 3 Button,
1 ListView.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:

107

Tabla 7.6 Propiedades de los controles de la aplicacin ListView.


Control
Label1
Label2
Label3
Label4
TextBox1
ListView1
ComboBox1
ComboBox2
Button1
Button2
Button3
Form1

Propiedad
Name
Text
Font-Bold
Name
Text
Name
Text
Name
Text
Font-Bold
Name
Text
Name
Name
Name
Name
Text
Name
Text
Name
Text
Name
Text

Valor
lbltexto
Solicitar pedido
True
lblcomida
Comida rpida :
lblbebida
Bebida:
lbltotal
Total Pedido
True
txttotal
En blanco
elementospedido
combocomida
combobebida
botoncomida
Adicionar Comida
botonbebida
Adicionar Bebida
botoneliminar
Eliminar comida o bebida
formulario
Control ListView.

La interfaz de usuario con las modificaciones respectivas en las propiedades de


cada control queda como se muestra en la siguiente figura:
Figura 7.17 Interfaz de usuario (ListView).

Ahora se deber seleccionar el control combocomidas y dar clic sobre la flecha


que aparece en la parte superior derecha, se observar la ventana Tareas de
ComboBox:

108

Figura 7.18 Ventana Tareas de ComboBox.

Escoja la opcin Editar elementos y adicione los elementos que se muestran en


la siguiente figura:
Figura 7.19 Editor con los elementos incluidos en el objeto combocomidas.

Al terminar de digitar los elementos del objeto combocomidas, seleccione el


objeto combobebidas, d clic sobre la flecha para observar la ventana Tareas de
ComboBox, nuevamente escoja la opcin Editar elementos y adicione los elementos
que se muestran en la siguiente figura:
Figura 7.20 Editor con los elementos incluidos en el objeto combobebidas.

109

Al finalizar de incluir los respectivos elementos en el objeto combocomidas,


seleccione el objeto ListView elementospedidos d clic sobre la flecha para observar la
ventana Tareas de Listview, se apreciara la siguiente figura:
Figura 7.21 Ventana Tareas de ListView del objeto elementospedido.

Seleccione el objeto ComboBox al frente del texto Vista y escoja la opcin


Details (permite visualizar todos los elementos de un ListView en forma detallada).
Despus seleccione la opcin Editar Columnas para ver la ventana del Editor de la
coleccin ColumnHeader. Pulse el botn Agregar para incluir un objeto
ColumnHeader1 en la casilla Miembros. Busque en la casilla Propiedades de
ColumnHeader1 la propiedad Text y escriba Cdigo. Realice esta misma operacin
para agregar dos ColumnHeader ms en ellos, en la propiedad Text escriba
comida/bebida y valor respectivamente. La siguiente figura visualiza el editor con los
nuevos miembros.
Figura 7.22 Ventana Editor de la coleccin ColumnHeader.

Pulse el botn Aceptar para visualizar la interfaz de usuario final.

110

Figura 7.23 Interfaz de usuario final de la aplicacin ListView.

Escribir cdigo
a) Despes de la apertura de la clase Public class formulario y antes del primer
procedimiento Sub, declare como publicas las variables llamadas valor, cdigo,
sumar, i de tipo Integer. D doble clic sobre el formulario y busque clase
formulario y escriba este cdigo escriba:
Public Class formulario
Public valor, cdigo, sumar, i As Integer

Se declaran como publicas las variables valor, cdigo, sumar e i. Estas podrn
ser utilizadas por cualquier procedimiento de la clase.
b) Seleccione el objeto formulario, d doble clic para abrir el editor del
procedimiento Formulario_Load y escriba el siguiente cdigo:
cdigo = 1

Se le asigna a la variable cdigo el valor de uno (1) cuando se carga el


formulario.
c) Seleccione el objeto botoncomidas, d doble clic para abrir el editor de cdigo y
escriba el siguiente cdigo:
Dim item As New ListViewItem(cdigo)
item.SubItems.Add(combocomida.SelectedItem)
item.SubItems.Add(valor)
elementospedido.Items.Add(item)
codigo += 1
sumar = 0
For Me.i = 0 To elementospedido.Items.Count - 1
sumar = sumar + CDbl(elementospedido.Items(i).SubItems(2).Text)
Next
txttotal.Text = sumar

111

Inicialmente se crea un objeto tem al cual se le asigna espacio de memoria


(New) de tipo ListViewItem y recibe como parmetro la variable cdigo. Utilizando la
funcin Add de la propiedad SubItems se le adiciona al objeto tem dos nuevos
elementos: lo seleccionado en el objeto combocomida por intermedio de la propiedad
SelectedItem y la variable valor. Al objeto ListView llamado elementospedido se le
adiciona (Add) en la propiedad Items los elementos que contiene el objeto tem. Por
otro lado, se incrementa el valor de la variable cdigo en uno (1) y a la variable sumar
se le asigna el valor de cero (0). Con un ciclo For que se ejecutar desde una posicin i
igual a cero (0) hasta el numero total de Items.count -1 del objeto elementospedido. A
la variable sumar se le asignar el valor de esta ms el valor del SubItems (2), o sea el
valor de la comida. Se utiliz la funcin CDbl para convertir el valor numrico a
caracter. Por ltimo se le asigna a la propiedad Text del objeto txttotal el valor de la
variable sumar.
d) Seleccione el objeto botonbebidas, d doble clic para abrir el editor de cdigo y
escriba el siguiente cdigo:
Dim item As New ListViewItem(cdigo)
item.SubItems.Add(combobebida.SelectedItem)
item.SubItems.Add(valor)
elementospedido.Items.Add(item)
codigo += 1
sumar = 0
For Me.i = 0 To elementospedido.Items.Count - 1
sumar = sumar + CDbl(elementospedido.Items(i).SubItems(2).Text)
Next
txttotal.Text = sumar

Basicamente realiza las misms operaciones que el objeto botoncomidas, lo


unico es que adiciona al objeto elementospedido el nombre de la bebida y el valor de
esta.
e) Seleccione el objeto combobebidas, de doble clic para abrir el editor del
procedimiento Sub combobebida_SelectedIndexChanged y escriba el
siguiente cdigo:
Select Case combobebida.SelectedIndex
Case 0
valor = 4000
Case 1
valor = 2500
Case 2
valor = 1200
Case 3
valor = 3500
Case 4
valor = 3000
End Select

Al adicionar elementos a un control ComboBox, el primer elemento tendr


como valor de ndice cero (0), el segundo el valor de ndice uno (1) y as sucesivamente
hasta el elemento n. Por medio de la propiedad SelectedIndex (selecciona el ndice)
del control combobebida se obtiene el valor del ndice que el usuario ha seleccionado
para luego buscar el caso especifico y asignarle el nuevo valor de la bebida a la variable
valor.
112

f) Seleccione el objeto combocomidas, d doble clic para abrir el editor del


procedimiento Sub combocomida_SelectedIndexChanged y escriba el
siguiente cdigo:
Select Case combocomida.SelectedIndex
Case 0
valor = 1500
Case 1
valor = 1300
Case 2
valor = 1800
Case 3
valor = 1500
Case 4
valor = 2000
End Select

Por medio de la propiedad SelectedIndex (selecciona el ndice) del control


combocomida se obtiene el valor del ndice que el usuario ha seleccionado para luego
buscar el caso especifico y asignarle el nuevo valor de la comida a la variable valor.
g) Seleccione el objeto botoneliminar, d doble clic para abrir el editor y escriba el
siguiente cdigo:
If elementospedido.FocusedItem Is Nothing Then
MsgBox("No hay item seleccionado", MsgBoxStyle.Exclamation)
Exit Sub
Else
Dim respuesta = MsgBox("Desea Eliminar el elemento (Si/No):", MsgBoxStyle.YesNo)
If (respuesta = "6") Then
elementospedido.Items.RemoveAt(elementospedido.FocusedItem.Index)
Else
MsgBox("Elemento No eliminado", MsgBoxStyle.Information)
End If
End If
sumar = 0
For Me.i = 0 To elementospedido.Items.Count - 1
sumar = sumar + CDbl(elementospedido.Items(i).SubItems(2).Text)
Next
txttotal.Text = sumar

Se utiliza la estructura If para determinar si no se ha seleccionado algn tem del


objeto elementospedido, se valida con la palabra reservada Nothing (vacio). Si esto
ocurre se visualizar en un cuadro de dilogo el mensaje No hay tem seleccionado, y
se saldr del procedimiento con la funcin Exit Sub. En caso contrario, se crea una
variable llamada respuesta a la que se le asignar un cuadro de dilogo con estilo
YesNo y el mensaje Desea Eliminar el elemento (Si/No):. Si en dicho cuadro se
pulsa el botn S, el valor de la variable respuesta ser igual a 6 y por consiguiente se
eliminar el tem seleccionado utilizando la funcin RevomeAt, por falso se mostrar
un cuadro de dilogo con el mensaje elemento No eliminado con un estilo de icono de
informacin.

Ejecutar el proyecto

Al ejecutar el proyecto se visualizar la figura 7.25. Si se selecciona y se adiciona como


113

comida Hamburguesa, empanada (2 veces) y como bebida Jugo, se obtendr la


siguiente figura:
Figura 7.24 Ejecucin aplicacin ListView.

Como se puede apreciar, el tem 2 y 3 tiene como elemento comida empanada.


Si se desea eliminar alguno de estos dos tems se debe seleccionar el tem a eliminar,
como muestra la siguiente figura:
Figura 7.25 Seleccionar un item del control elementospedido.

Al pulsarse el botn Eliminar comida o bebida, se visualiza el cuadro de


dilogo de confirmacin de eliminacin del elemento.
Figura 7.26 Cuadro de dilogo para confirmar la eliminacin de un elemento.

114

Al pulsar el botn Si, el formulario se apreciara de la siguiente forma:


Figura 7.27 Formulario de solicitud de pedido.

7.7 RichTextBox
Un control RichTextBox
permite tener un texto en varias lneas. Todo el texto que
se muestra se establece con la propiedad Text. El control RichTextBox sirve para
manipular archivos; los mtodos LoadFile y SaveFile pueden mostrar y escribir en
varios formatos de archivo, entre ellos, texto sin formato, texto sin formato Unicode y
formato de texto enriquecido (RTF). Puede utilizar el mtodo Find para buscar cadenas
de texto o caracteres especficos.
7.7.1 Ejemplo prctico RichTextBox
Elaborar una aplicacin llamada RichTextBox que permita a un usuario buscar
palabras o frases en un texto. Si se encuentra la palabra o la frase esta se debe resaltar.
Cuando se desee realizar una segunda bsqueda la palabra o frase anterior debe quedar
resaltada con otro color.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en los siguientes controles y ubquelos


en el formulario en la posicin deseada: 1 Label, 1 TextBox, 1 RichTextBox, 1
Button.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 7.7 Propiedades de los controles de la aplicacin DataGridView.
Control
Label1

Propiedad
Name
Text

Valor
lblpalabra
Palabra o frase a buscar:

115

TextBox1
RichTextbox1
Button1
Form1

Name
Text
Name
Text
Name
Text
Name
Text

txtpalabra
En blanco
texto
Copiar cualquier texto
botonbuscar
Buscar coincidencias
formulario
Control RichTextBox

La interfaz de usuario con las modificaciones respectivas en las propiedades de


cada control queda como se muestra en la siguiente figura:
Figura 7.28 Interfaz de usuario (RichTextBox).

Escribir cdigo
a) Seleccione el objeto botonbuscar, d doble clic para abrir el editor del
procedimiento botonbuscar_click y escriba el siguiente cdigo:
buscar_patron(txtpalabra.Text, texto, Color.Red, Color.Yellow)

Se llama al procedimiento buscar_patron, el cual tiene como parametros: el


texto a buscar (txtpalabra.text), El control RichTextBox (texto), El color para resaltar
el texto encontrado (Color.Red), el color para resaltar el fondo del texto encontrado
(Color.Yellow).
b) D doble clic sobre el formulario y cree despus de un End Sub y antes del
End Class el siguiente procedimiento Sub.
Private Sub buscar_patron(ByVal textoabuscar As String,
ByVal objetotexto As Windows.Forms.RichTextBox ,
ByVal colortexto As Color, ByVal colorfondo As Color)
Dim coincidencias As MatchCollection
Dim palabra As Match
Try
Dim cadenaabuscar As New Regex(textoabuscar.ToString, RegexOptions.IgnoreCase)
coincidencias = cadenaabuscar.Matches(objetotexto.Text)

116

With objetotexto
.SelectAll()
.SelectionColor = Color.Black
End With
For Each palabra In coincidencias
With objetotexto
.SelectionStart = palabra.Index
.SelectionLength = palabra.Length
.SelectionColor = colortexto
.SelectionBackColor = colorfondo
End With
Next
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End Sub

Se crea el procedimiento buscar_patron el cual recibe como parmetros las


variables: textoabuscar de tipo String, objetotexto de tipo RichTextBox, colortexto y
colorfondo de tipo Color. Tambin se crean las variables coincidencias de tipo
MathCollection (representa un conjunto de palabras o frases encontradas en un texto
especifico) y palabra de tipo Math (representa una palabra o frase encontrada en un
texto especifico). Se define un bloque Try-Catch para atrapar errores y las acciones a
seguir. En el bloque Try se establece el cdigo que realiza una tarea especfica y que en
un caso dado pueden generar un error; en el bloque Catch ir el cdigo que realizar las
acciones a seguir en caso de un error. Dentro del bloque Try se crea un objeto llamado
cadenaabuscar a la cual se le asigna espacio de memoria de tipo Regex (representa la
cadena a buscar) y recibe como parametros: el texto a buscar (textoabuscar.ToString),
adems, se le indica que ignore las maysculas o
minsculas
(RegexOptions.IgnoreCase). Al objeto coincidencias se le asigna una coleccin de
todas las cadenas coincidentes (Matches) que se encuentren en el objeto RichTextBox
(objetotexto.Text). Por otro lado, si se ha realizado alguna bsqueda anterior se utiliza
la clusula With para cambiar el color del texto encontrado con anterioridad a negro. Si
se encuentran coincidencias se utiliza la estructura For-Each para recorrer cada una de
las palabras o frases encontradas dentro del texto. Cuando se est recorriendo el
contenido del objeto RichTextBox (objetotexto), al encontrarse una palabra o frase
coincidente (SelectionStart = palabra.Index) , se determina su longitud
(.SelectionLength = palabra.Length) y se cambia el color del texto (.SelectionColor =
colortexto) y el fondo del texto (.SelectionBackColor = colorfondo). Este proceso se
realizar hasta encontrar la ultima coincidencia dentro del control objetotexto. En el
bloque Catch se captura en el objeto ex de tipo Exception el error que se pueda generar
y se mostrar un cuadro de dilogo con el mensaje de error. Por ltimo se cierra el Sub (
End Sub).

Ejecutar el proyecto

Al ejecutar el proyecto se visualizar la figura 7.28. Si se escribe la subcadena la y se


pulsa el botn Buscar coincidencias, se obtendr la siguiente figura:

117

Figura 7.29 Ejecucin aplicacin RictTextBox con la subcadena la encontrada.

Si se realiza una nueva bsqueda, por ejemplo, encontrar la subcadena al sur


de chile, el color del texto encontrado anteriormente se volver nuevamente negro y la
nueva coincidencia quedar de color rojo.
Figura 7.30 Ejecucin aplicacin RictTextBox con una nueva bsqueda.

7.8 TreeView
Un control TreeView
permite mostrar una jerarqua de nodos a usuarios, del
mismo modo como se muestran las carpetas y los archivos en el explorador de
Windows. Cada nodo (nodos primarios) puede contener otros nodos, llamados nodos
secundarios. Los nodos primarios o los nodos secundarios se pueden visualizar como
expandidos o contrados. Tambin se puede mostrar una vista de los nodos con casillas
de verificacin junto a los nodos estableciendo la propiedad CheckBoxes con el valor
True. Por otro lado, es posible activar o desactivar los nodos mediante programacin
estableciendo la propiedad Checked del nodo en True o False.

118

Las propiedades principales del control TreeView son Nodes y SelectedNode.


La propiedad Nodes contiene la lista de nodos del nivel superior del los nodos. La
propiedad SelectedNode establece el nodo seleccionado.
7.8.1 Ejemplo prctico TreeView
Elaborar una aplicacin llamada TreeView que permita a un usuario visualizar las
unidades lgicas de un computador, adems poder desplazarse por las carpetas de cada
unidad lgica.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en los siguientes controles y ubquelos


en el formulario en la posicin deseada: 1 Label, 1 TreeView.

Establecer las propiedades de los objetos de la interfaz de usuario.

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 7.8 Propiedades de los controles de la aplicacin DataGridView.
Control
Label1
TreeView1
Form1

Propiedad
Name
Text
Name
Name
Text

Valor
lbltexto
Explorador de unidades lgicas
explorador
formulario
Control RichTextBox

La interfaz de usuario con las modificaciones respectivas en las propiedades de


cada control queda como se muestra en la siguiente figura:
Figura 7.31 Interfaz de usuario (TreeView).

119

Escribir cdigo
a) Antes de la apertura de la clase se debe importar el espacio de nombres
System.IO. D doble clic sobre el formulario, busque Public class formulario
y antes de este cdigo escriba lo siguiente:
imports System.IO
Public Class formulario

End Class

Se importa el espacio de nombres System.IO para poder realizar operaciones


con las unidades logicas del sistema operativo.
b) D doble clic sobre el formulario para abrir el editor del procedimiento
formulario_load y escriba el siguiente cdigo:
Dim unidades() As String
unidades = System.Environment.GetLogicalDrives
For Each unidad As String In unidades
explorador.Nodes.Add(unidad)
Next

Se declara una matriz de tipo String llamada unidades a la cual se le asignan las
unidades logicas del equipo donde se este trabajando por medio de la funcin
GetLogicalDrives de la clase Environment del espacio de nombres System. Se utiliza
la estructura For-Each para recorrer cada una de las unidades lgicas que contiene la
matriz unidades. Cada unidad es adicionada como un nodo al control TreeView
explorador.
c) Seleccione el objeto explorador, d doble clic para abrir el editor del
procedimiento explorador_AfterSelect y escriba el siguiente cdigo:
Dim directorio As DirectoryInfo
directorio = New DirectoryInfo(e.Node.FullPath)
Dim carpetas() As DirectoryInfo
carpetas = directorio.GetDirectories()
Dim subcarpetas As DirectoryInfo
Dim nodo As TreeNode
For Each subcarpetas In carpetas
nodo = New TreeNode(subcarpetas.Name, 0, 1)
e.Node.Nodes.Add(nodo.Text)
Next

Cuando se selecciona una de las unidades que se muestran en el control


explorador, se crea una variable directorio de tipo DirectoryInfo (permite las
operaciones con carpetas y archivos), a esta se le asigna la ruta de la unidad escogida.
Tambin se crea una matriz llamada carpetas() a la cual se le asigna cada uno de las
carpetas que contiene la unidad seleccionada. Adems se crean dos variables:
subcarpetas de tipo DirectoryInfo y la otra llamada nodo de tipo TreeNode. Con una
estructura For-Each se recorre cada una de las subcarpetas de la carpeta escogida. A la
variable nodo se le asigna espacio de memoria de tipo TreeNode y recibe como
parmetros el nombre de la subcarpeta, la imagen que se ha de mostrar cuando el nodo

120

seleccionado(si existe), la imagen que se ha de mostrar cuando el nodo no este


seleccionado (si existe). Por ltimo se adiciona dicho nodo como un nodo secundario.

Ejecutar el proyecto

Al ejecutar el proyecto se visualizar la siguiente figura con las unidades lgicas


encontradas:
Figura 7.32 Ejecucin aplicacin TreeView.

Si se selecciona la unidad C:\ se mostrarn cada una de las carpetas de dicha


unidad. Si se escoge una de las subcarpetas se visualizarn las subcarpetas de dicha
subcarpeta. Se podra obtener una figura similar:
Figura 7.33 Aplicacin TreeView con una unidad seleccionada.

121

7.9 FolderBrowserDialog
permite mostrar un cuadro de dilogo donde se
Un control FolderBrowserDialog
pide al usuario que seleccione una carpeta. Tiene la misma apariencia del explorador de
Windows. La carpeta raz donde se va a empezar a examinar se obtiene con la propiedad
RootFolder, mientras la propiedad SelectedPath permite establecer la ruta
seleccionada por el usuario. Con la propiedad ShowNewFolderButton se establece un
valor (True, False) que indica si el botn Nueva carpeta aparece en el cuadro de
dilogo de examinar carpetas.
7.9.1 Ejemplo prctico FolderBrowserDialog
Elaborar una aplicacin llamada FolderBrowserDialog que permita a un usuario
visualizar las unidades lgicas de un computador, adems poder desplazarse por las
carpetas de cada unidad lgica.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en los siguientes controles y ubquelos


en el formulario en la posicin deseada: 1 Button, 1 FolderBrowserDialog.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 7.9 Propiedades de los controles de la aplicacin FolderBrowserDialog.
Control
Button1
FolderBrowserDialog1
Form1

Propiedad
Name
Text
Name
Name
Text

Valor
boton
Ver cuadro de dilogo de las unidades actuales.
unidades
formulario
Control FolderBrowserDialog.

La interfaz de usuario con las modificaciones respectivas en las propiedades de


cada control queda como se muestra en la siguiente figura:
Figura 7.34 Interfaz de usuario (FolderBrowserDialog).

122

Escribir cdigo

Seleccione el objeto boton, d doble clic para abrir el editor del procedimiento
boton_Click y escriba el siguiente cdigo:
Try
With unidades
.Reset()
.Description = " Seleccionar una unidad y/o carpeta "
.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal)
.ShowNewFolderButton = False
.RootFolder = Environment.SpecialFolder.Desktop
Dim vercuadro As DialogResult = .ShowDialog
If vercuadro = DialogResult.OK Then
Dim nroarchivos As ObjectModel.ReadOnlyCollection(Of String)
nroarchivos = My.Computer.FileSystem.GetFiles(.SelectedPath)
MsgBox("Total de archivos en la unidad y/o carpeta seleccionada :" &
nroarchivos.Count, MsgBoxStyle.Information)
End If
.Dispose()
End With
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical)
End Try

En el bloque Try se establece una clusula With donde se realizan las siguientes
operaciones con el control FolderBrowserDialog unidades: .Reset() reinicia el control
unidades; .Description muestra una descripcin del control unidades; .SelectPath
selecciona una unidad o carpeta especifica, es este caso la carpeta Personal (My
Documents), .ShowNewFolderButton permite habilitar (True) o deshabilitar (False) la
opcion de creacin de nuevas carpetas; .RootFolder determina la unidad o carpeta
inicial a mostrar. Por otro lado, se crea una variable de tipo DialogResult llamada
vercuadro a la cual se le asigna la propiedad ShowDialog del control unidades. Se
valida si en el cuadro de dilogo se pulsa el botn Aceptar. Si se cumple la condicin
se crea un objeto nroarchivos de tipo ReadOnlyCollection (crea una coleccin de solo
lectura) del espacio de nombres ObjectModel, a este, se le asigna una coleccin de solo
lectura de todos los archivos de la unidad o carpeta seleccionada
(My.Computer.FileSystem.GetFiles(.SelectedPath)) y se muestran el total de
archivos (Count) en un cuadro de dilogo MsgBox. Por ltimo se libera (.dispose()) los
recursos utlizados. En el bloque Catch se captura en el objeto ex de tipo Exception el
error que se pueda generar y se mostrar un cuadro de dilogo con el mensaje de error.

Ejecutar el proyecto

Al ejecutar el proyecto se mostrar el formulario de la figura 7.34. Si se pulsa el botn


Ver cuadro de dilogo de las unidades actuales se visualizar el cuadro de dilogo
del control FolderBrowserDialog unidades:

123

Figura 7.35 Ejecucin aplicacin FolderBrowserDialog.

Si se escoge el icono Mi PC y se selecciona unidad C:\ se mostrarn cada una


de las carpetas de dicha unidad. Se podra obtener una figura similar:
Figura 7.36 Aplicacin FolderBrowserDialog con la unidad C:\ seleccionada.

Al pulsarse el botn Aceptar se mostrar un cuadro de dilogo con el mensaje


Total de archivos en la unidad y/o carpeta seleccionada: #, como se observa en la
siguiente figura:

124

Figura 7.37 Cuadro de dilogo con el total de archivos de una unidad seleccionada.

7.10 WebBrowser
permite visualizar pginas Web en las aplicaciones
Un control WebBrowser
cliente de los formularios Windows Forms y/o otros documentos tipo HTML. El control
WebBrowser contiene eventos relacionados con la navegacin exploracin: Url
(direccin electrnica de una pgina web), Navigate (navegar), GoBack (ir atrs),
GoForWard (ir adelante), GoHome (Ir al inicio), GoSearch (Buscar), Stop (Parar),
Refresh (refrescar), etc.
7.10.1 Ejemplo prctico WebBrowser
Elaborar una aplicacin llamada WebBrowser que permita a un usuario visualizar
pginas Web especficas desde un control WebBrowser. El usuario debe poder ir al
inicio, ir a la pgina anterior, ir a la pgina siguiente, detener la ejecucin de una pgina,
refrescar una ejecucin de una pgina, como tambin visualizar la pgina visitada en un
momento dado.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en los siguientes controles y ubquelos


en el formulario en la posicin deseada: 6 Button, 1 ComboBox, 1 WebBrowser, 1
Label.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 7.10 Propiedades de los controles de la aplicacin WebBrowser.
Control
Button1
Button2
Button3
Button4

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text

botonanterior
Anterior
botonsiguiente
Siguiente
botoninicio
Inicio
botondetener
Detener

Valor

125

Button5
Button6
ComboBox1
WebBrowser1
Label1
Form1

Name
Text
Name
Text
Name
Name
Name
Text
Name
Text

botonrefrescar
Actualizar
botonnavegar
Navegar
combopaginas
navegador
textopagina
Texto pgina
formulario
Control WebBrowse.

La interfaz de usuario con las modificaciones respectivas en las propiedades de


cada control queda como se muestra en la siguiente figura:
Figura 7.38 Interfaz de usuario (WebBrowser).

Ahora se deber seleccionar el control combopaginas y dar clic sobre la flecha


que aparece en la parte superior derecho, se observar la ventana Tareas de
ComboBox:
Figura 7.39 Ventana Tareas de ComboBox del objeto combopaginas.

126

Escoja la opcin Editar elementos y adicione los elementos que se muestran en


la siguiente figura:
Figura 7.40 Ventana Editor con las pginas Web ingresadas.

Escribir cdigo
a) Seleccione el objeto botonanterior, d doble clic para abrir el editor del
procedimiento botonanterior_Click y escriba el siguiente cdigo:
navegador.GoBack()

Se utiliza el mtodo GoBack() del objeto navegador para ir a la anterior pgina.


b) Seleccione el objeto botonsiguiente, d doble clic para abrir el editor del
procedimiento botonsiguiente_Click y escriba el siguiente cdigo:
navegador.GoForward()

pgina.

Se utiliza el mtodo GoForWard() del objeto navegador para ir a la siguiente

c) Seleccione el objeto botoninicio, d doble clic para abrir el editor del


procedimiento botoninicio_Click y escriba el siguiente cdigo:
navegador.GoHome()

inicio.

Se utiliza el mtodo GoHome() del objeto navegador para ir a la pgina de

d) Seleccione el objeto botondetener, d doble clic para abrir el editor del


procedimiento botondetener_Click y escriba el siguiente cdigo:
navegador.Stop()

127

Se utiliza el mtodo Stop() del objeto navegador para ir detener una pgina en
ejecucin.
e) Seleccione el objeto botonrefrescar, d doble clic para abrir el editor del
procedimiento botonrefrescar_Click y escriba el siguiente cdigo:
navegador.Refresh()

Se utiliza el mtodo Refresh() del objeto navegador para ir actualizar una


pgina en ejecucin.
f) Seleccione el objeto botonnavegar, d doble clic para abrir el editor del
procedimiento botonnavegar_Click y escriba el siguiente cdigo:
navegador.Navigate(Trim(combopaginas.SelectedItem))
textopagina.Text = combopaginas.SelectedItem

Se utiliza el mtodo Navigate() del objeto navegador para ejecutar una pgina.
Recibe como parmetros la pgina seleccionada en la propiedad SelectedItem del
control combopaginas. Con la funcin Trim se quitan todos los espacios que existan.
Por otro lado, se le asigna a la propiedad Text del objeto textopagina la pgina
seleccionada.

Ejecutar el proyecto

Al ejecutar el proyecto se mostrar el formulario de la figura 7.38. Si se selecciona del


objeto combopaginas la pgina Web http://google.com.co y se pulsa el botn Navegar
se visualizar en el control WebBrowser la pgina inicial de Google.
Figura 7.41 Ejecucin de la pgina de Google.

128

7.11 Ejercicios interfaz de usuario


1. Escribir un programa que permita a un usuario capturar dos nmeros,
seleccionar un operador aritmtico e imprimir en un DataGridView los dos
nmeros, el operador y el resultado de la operacin.
2. Realizar un programa que permita a un usuario seleccionar desde un Checkbox
y/o un ComBobox una palabra en espaol e imprimir dicha palabra en Ingles y
en Francs.
3. Elaborar un programa que permita seleccionar un producto, digitar una cantidad
e imprimir en un DataGridView el producto, la cantidad y el valor unitario y el
valor total del producto, as como la sumatoria de todos los productos escogidos.
4. Hacer un programa que permita por medio de un HScrollBar desplazarse y en un
Label mostrar el valor Ascci asociado a la barra de desplazamiento. El rango de
valores debe estar entre 1 y 255.
5. Disear un programa que permita seleccionar entre varias opciones lo siguiente:
un equipo de futbol, una aficin, una profesin e imprimir en un cuadro de
dilogo cual equipo de futbol es su favorito, que aficin le gusta ms y que
profesin le gustara tener.
6. Crear un programa que permita realizar una bsqueda de un texto en una pgina
web alojada en un control WebBrowse.
7. Escribir un programa que permita digitar un texto, seleccionar un color de texto,
un fondo de texto e imprimir dicho texto con el color y el fondo seleccionado.
8. Realizar un programa que permita cargar en un control RichTextBox un texto
cualquiera y cambiar de color todas las palabras que contengan la silaba PA.
9. Disear un programa que permita capturar 10 nmeros. Se debe imprimir en un
control ListView el nmero capturado, si es par o impar, si est entre 1 y 300, es
mayor de 301 y menor de 1000, cuantos dgitos contiene dicho nmero y su raz
cuadrada.
10. Escriba un programa que permita visualizar en un control TreeView la siguiente
estructura de rbol:
Equipos
Santafe
Barcelona
Inter
Milan
Aficiones
Acuaticas
Buceo
Natacin
Profesiones
Ingenierias
Sistemas
Mecanica
Ciencias
Matematicas
Fisica
Mecnica
Electromagnetica

129

8. MENS EN FORMULARIOS
Los mens en una aplicacin son el medio que tiene el usuario para interactuar con
dicha aplicacin. Se pueden crear aplicaciones donde se utilice un men que interactu
sobre un nico formulario, este tipo de aplicaciones son llamadas SDI (Interfaz de
documento sencillo). Algunos programas que manejan est estilo de interfaz son:
Wordpad, Bloc de notas, Calculadora de Microsoft Windows, etc. Tambin se pueden
crear aplicaciones con mens que interacten con varios formularios en una ventana,
estas aplicaciones son llamadas MDI (Interfaz de documentos mltiple), los ejemplos
clsicos son el procesador de texto Word la hoja de clculo Excel de Microsoft. Las
aplicaciones MDI se reconocen por incluir mens con submens para cambiar entre las
distintas ventanas o documentos. La interfaz de mens se trabaja con el control
que representa el contenedor de una estructura de mens de un
MenuStrip
formulario conocidos como mens desplegables, adems, se le pueden adicionar los
elementos: ToolStripMenuItem, ToolStripTextBox y ToolStripComboBox. El
objeto ToolStripMenuItem representan los comandos de men individuales de la
estructura del men. Cada objeto ToolStripMenuItem puede ser un comando de la
aplicacin o un men primario para otros elementos de submen.
8.1 Creacin de Mens con Interfaz de documento sencillo
Los mens y barras de herramientas proporcionan una forma estructurada y accesible
para que los usuarios aprovechen los comandos y las herramientas contenidas en sus
aplicaciones. La preparacin y el diseo apropiados de mens y barras de herramientas
garantizarn la funcionalidad en la aplicacin.
A menudo los usuarios examinan los mens antes de buscar informacin sobre
la aplicacin en cualquier otro lugar. Si los mens estn bien diseados, los usuarios
podrn comprender la aplicacin y desarrollar un modelo mental basado nicamente en
la organizacin de los mens y su contenido.
La creacin de un sistema de mens implica varios pasos independientemente
del tamao de la aplicacin y la complejidad de los mens que pretenda usar, estos
deben ser:

Preparar y disear el sistema: Decida los mens que necesita, dnde deben
aparecer en la interfaz, cules requieren submens, etc.
Crear los mens y submens: Defina los ttulos, elementos de men y
submens mediante el Diseador de mens.
Asignar las tareas que desee al sistema: Especifique las tareas que los mens
deben realizar, como mostrar formularios y cuadros de dilogo.
Generar el programa de men: Ejecutar el programa para probar el sistema
de mens.

8.1.1 Ejemplo prctico mens con interfaz de documento sencillo


Disear una aplicacin llamada MenuInterfazSencilla, que permita crear un editor de
texto sencillo en un formulario con mens y submens, donde el usuario puede abrir y
guardar un archivo de texto, salir de la aplicacin, cortar, copiar y pegar texto, adems,
pueda cambiar el tipo de fuente, el color del texto y el color de fondo del texto.
130

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en los siguientes controles y ubquelos


en el formulario: 1 MenuStrip, 1 RichTextBox, 1 ColorDialog, 1 FontDialog, 1
OpenFileDialog, 1 SavefileDialog.
NOTA: Al agregar los controles seleccione el objeto RichTextBox1 y d clic sobre la
flecha que aparece al lado derecho superior del control para observar la ventana Tareas
de RichTextBox
Figura 8.1 Interfaz de usuario inicial de la aplicacin MenuSencillo.

All d clic sobre la opcin Acoplar en contenedor principal para ajustar el


control al formulario. La interfaz de usuario inicial quedara de la siguiente manera:
Figura 8.2 Interfaz de usuario inicial de la aplicacin MenuInterfazSencilla.

131

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 8.1 Propiedades de los controles de la aplicacin MenuInterfazSencilla.
Control
RichTextBox1
Colordialog1
FontDialog1
OpenFileDialog1
SaveFileDialog1
MenuStrip1
Form1

Propiedad
Name
Name
Name
Name
Name
Name
Name
Text

Valor
ventana
cuadrodecolores
cuadrodefuentes
cuadroabrirrchivo
cuadroguardarrchivo
menuprincipal
formulario
Interfaz de documento sencillo

Figura 8.3 Interfaz de usuario con las propiedades modificadas.

Pulse sobre el control menuprincipal para que aparezca sobre este el texto
Escriba aqu.
Figura 8.4 Objeto menuprincial seleccionado.

132

All escriba el nombre del men &Archivo (Se utiliza el & para subrayar la
letra A y asociarlo a un mtodo de acceso abreviado, ms adelante se explicar cmo se
puede definir este tipo de acceso). Cuando empieza a escribir aparecen dos textos
Escriba aqu; uno a la derecha y el otro en la parte inferior.
Figura 8.5 Creacin del men Archivo.

Escriba en el texto inferior Nuevo y en el texto de la derecha Edicin y


Formato. El men tendra la siguiente forma:
Figura 8.6 Men principal con los mens Archivo, Edicin Formato y Nuevo.

Para completar el diseo del men realice lo siguiente:

Para el Men Archivo adicione los submens necesarios para obtener la siguiente
figura:

Figura 8.7 Men Archivo con Submens.

Para colocar la lnea separadora, sitese donde la desea crear y d clic derecho,
seleccione la opcin Insertar y all escoja Separator, como se muestra en la siguiente
figura:

133

Figura 8.8 Operacin para colocar una lnea separadora en un Men.

Para el Men Edicin adicione los submens necesarios para obtener la siguiente
figura:

Figura 8.9 Men Edicion con Submens.

Para el Men Formato adicione los submens necesarios para obtener la siguiente
figura:

Figura 8.10 Men Formato con Submens.

134

Crear teclas de acceso abreviado o rpido.

Como se dijo anteriormente es posible definir teclas de mtodo abreviado a los


diferentes mens utilizando el teclado. Por ejemplo, s se quisiera acceder ms
rpidamente al men Nuevo se podra pulsar la tecla Alt y a continuacin la letra N.
Para asociar un mtodo abreviado a las opciones del men se debe anteponer a la letra
que se quiere utilizar como tecla de acceso abreviado el carcter ampersand (&). Para
aadir la tecla de acceso a la opcin Nuevo, seleccione dicho men y en las propiedades
del men Nuevo busque la propiedad ShortCutKeys.
Figura 8.11 Propiedades del men Nuevo.

Seleccione la flecha
modificadores de teclas.

al frente de None, para visualizar la ventana de

Figura 8.12 Ventana de la propiedad ShortCutKeys.

135

Escoja en el cuadro de verificacin Alt y en clave la letra N. La ventana


quedara de la siguiente forma:
Figura 8.13 Seleccin tecla de acceso corta Alt +N.

Al dar clic el men principal quedara de la siguiente forma:


Figura 8.14 Men Nuevo con tecla de acceso abreviada Alt+N.

NOTA: Puede crear todas las teclas de acceso abreviado que desee de la misma forma.
Debe tener en cuenta que no pueden definir dos o ms teclas de acceso rpido iguales.

Escribir cdigo

Despus de completar el diseo del men se debe seleccionar cada uno de los mens
para agregarle el respectivo cdigo de acuerdo a la operacin que va a realizar.
a) Seleccione el men Nuevo, d doble clic para abrir el editor del procedimiento
NuevoToolStripMenuItem_Click y escriba el siguiente cdigo:

136

Dim pregunta As String


pregunta = MsgBox("Desea guardar el Archivo actual ?:", MsgBoxStyle.YesNo)
If pregunta = "6" Then
cuadroguardarrchivo.Title = "Cuadro de Dilogo para guardar un archivo"
cuadroguardarrchivo.InitialDirectory = "C:\"
cuadroguardarrchivo.Filter = "Archivo de Texto(*.txt)|*.txt"
cuadroguardarrchivo.ValidateNames = True
cuadroguardarrchivo.ShowDialog()
Dim guardarrchivo As IO.StreamWriter
guardarrchivo = New IO.StreamWriter(cuadroguardarrchivo.FileName)
guardarrchivo.Write(ventana.Text)
guardarrchivo.Close()
ventana.Text = ""
Else
ventana.Text = ""
End If

Se crea la variable pregunta de tipo String a la que se le asigna el valor


retornado por el cuadro de dilogo MsgBox (El primer parmetro es un mensaje para el
cuadro de dilogo; el segundo parmetro es una expresin numrica que especifica el
nmero y los botones que se van a mostrar). Si desea guardar el archivo actual (Si) se
almacenar en la variable pregunta el valor 6, en caso contrario, se almacenar el valor
7. Si en dicho cuadro se pulsa el botn S, se modifican las siguientes propiedades del
control SaveFileDialog cuadroguardarrchivo: Title el cual permite colocarle un
titulo al cuadro de dilogo; InitialDirectory selecciona la carpeta inicial que se
visualizar en el cuadro de dilogo; Filter permite seleccionar los tipos de archivos que
se quieren visualizar; en este caso mostrar los archivos con extensin .txt;
ValidateNames validar que el nombre del archivo sea vlido; ShowDialog() el cual
permitir abrir el cuadro de dilogo del control cuadroguardarrchivo en tiempo de
ejecucin. Por otro lado, se crea la variable guardarrchivo de tipo StreamWriter
(clase que se utiliza para escribir informacin a un archivo de texto estndar) que
guardar el nombre del archivo de texto asignado a la propiedad FileName del control
cuadroguardarrchivo. Utilizando el mtodo Write se guarda el contenido del control
ventana en su propiedad Text. Por ltimo, se cierra el archivo por intermedio del
mtodo close () y se limpia el objeto ventana. En caso contrario nicamente se limpia
el objeto ventana.
b) Seleccione el men Abrir..., d doble clic para abrir el editor del procedimiento
y escriba el siguiente cdigo:
ventana.Text = " "
cuadroabrirrchivo.Title = "Seleccione el archivo a abrir..."
cuadroabrirrchivo.InitialDirectory = "C:\"
cuadroabrirrchivo.Filter = "Archivo de Texto(*.txt)|*.txt"
cuadroabrirrchivo.ShowDialog()
If cuadroabrirrchivo.FileName.Length > 1 Then
Dim verarchivo As New IO.StreamReader(cuadroabrirrchivo.FileName)
ventana.Text = verarchivo.ReadToEnd
Else
MsgBox("Archivo no contiene informacin")
End If

Por medio de la funcin Length de la propiedad FileName del control


OpenFileDialog cuadroabrirrchivo se determina si el archivo contiene informacin o
no. Si contiene informacin se crea una variable llamada verarchivo de tipo
137

IO.StreamReader (clase que se utiliza para leer lneas de informacin desde un archivo
de texto estndar) que guardar el nombre del archivo de texto asignado a la propiedad
FileName del control cuadroabrirrchivo. A la propiedad Text del objeto ventana se
le asignar el contenido del archivo utilizando el mtodo ReadtoEnd que lee el archivo
desde el principio hasta el final. Si por el contrario no contiene informacin se mostrar
un mensaje informando que el archivo seleccionado esta vaci.
c) Seleccione el men Guardar, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
If cuadroguardarrchivo.FileName.Length > 0 Then
ventana.SaveFile(cuadroguardarrchivo.FileName,RichTextBoxStreamType.PlainText)
Else
cuadroguardarrchivo.Title = "Cuadro de Dilogo para guardar un archivo"
cuadroguardarrchivo.InitialDirectory = "C:\"
cuadroguardarrchivo.Filter = "Archivo de Texto(*.txt)|*.txt"
cuadroguardarrchivo.ValidateNames = True
cuadroguardarrchivo.ShowDialog()
Dim guardarrchivo As IO.StreamWriter
guardarrchivo = New IO.StreamWriter(cuadroguardarrchivo.FileName)
guardarrchivo.Write(ventana.Text)
guardarrchivo.Close()
End If

Por medio de la funcin Length de la propiedad FileName del control


SaveFileDialog cuadroguardarrchivo se determina si el nombre del archivo es mayor
de cero (0), es decir, que ya se haba guardado. Si la condicin se cumple se guardar el
archivo con el nombre actual utilizando la propiedad SaveFile que recibe como
parmetros: el nombre del archivo actual y el tipo de archivo de texto. En caso
contrario, se realizar el proceso de guardar el archivo por primera vez. Se crea una
variable llamada guardarrchivo de tipo IO.StreamWriter (clase que se utiliza para
escribir lneas de informacin en un archivo de texto estndar) que guardar el nombre
del archivo de texto asignado a la propiedad FileName del control guardarrchivo.
Utilizando el mtodo Write se escribe en el archivo todo el contenido existente en la
propiedad Text del objeto ventana.
d) Seleccione el men Guardar como.., d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
cuadroguardarrchivo.Title = "Cuadro de Dilogo para guardar un archivo"
cuadroguardarrchivo.InitialDirectory = "C:\"
cuadroguardarrchivo.Filter = "Archivo de Texto(*.txt)|*.txt"
cuadroguardarrchivo.ValidateNames = True
cuadroguardarrchivo.ShowDialog()
Dim guardarrchivo As IO.StreamWriter
guardarrchivo = New IO.StreamWriter(cuadroguardarrchivo.FileName)
guardarrchivo.Write(ventana.Text)
guardarrchivo.Close()

Esta opcin permitir guardar un archivo que previamente se haba guardado con
un nuevo nombre. Se realiza el mismo proceso utilizado por la estructura Else del men
Guardar.

138

e) Seleccione el men Salir, d doble clic para abrir el editor del procedimiento y
escriba el siguiente cdigo:
End

La palabra clave End permitir salir de la aplicacin.


f) Seleccione el men Deshacer, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
ventana.Undo()

Se utiliza la funcin Undo del control RichTextBox ventana para deshacer una
operacin realizada anteriormente.
g) Seleccione el men Rehacer, d doble clic para abrir el editor del procedimiento
y escriba el siguiente cdigo:
If ventana.CanRedo = True Then
If ventana.RedoActionName <> "Delete" Then
ventana.Redo()
End If
End If

Se utiliza la funcin Redo del control RichTextBox ventana, para rehacer una
operacin previamente se habia eliminado. En este caso se valida si anteriormente se
habia eliminado un texto (CanRedo) y si esa operacin tenia el nombre de eliminar
(Delete) utilizando la funcin RedoActionName.
h) Seleccione el men Cortar, d doble clic para abrir el editor del procedimiento
y escriba el siguiente cdigo:
ventana.Cut()

Se utiliza la funcin Cut del control RichTextBox ventana para eliminar un


texto seleccionado.
i) Seleccione el men Pegar, d doble clic para abrir el editor del procedimiento y
escriba el siguiente cdigo:
ventana.Paste()

Se utiliza la funcin Paste del control RichTextBox ventana para mostrar un


texto que previamente habia sido copiado o cortado.
j) Seleccione el men Copiar, d doble clic para abrir el editor del procedimiento
y escriba el siguiente cdigo:
ventana.Copy()

Se utiliza la funcin Copy del control RichTextBox ventana para copiar un


texto que previamente ha sido seleccionado.

139

k) Seleccione el men Borrar, d doble clic para abrir el editor del procedimiento
y escriba el siguiente cdigo:
ventana.Clear()

Se utiliza la funcin Clear del control RichTextBox ventana para borrar todo el
contenido de la propieda Text del control ventana.
m) Seleccione el men Seleccionar todo, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
ventana.SelectAll()

Se utiliza la funcin SelectAll del control RichTextBox ventana para


seleccionar todo el contenido de la propieda Text del control ventana.
n) Seleccione el men Fuente, d doble clic para abrir el editor del procedimiento
y escriba el siguiente cdigo:
cuadrodefuentes.ShowDialog()
ventana.SelectionFont = cuadrodefuentes.Font

Se utiliza el mtodo ShowDialog () para abrir el cuadro de dilogo del control


FontDialog cuadrodefuentes en tiempo de ejecucin. En la segunda lnea se le asigna a
la propiedad SelectionFont del objeto ventana la fuente seleccionada por intermedio de
la propiedad Font del objeto cuadrodefuentes.
o) Seleccione el men Color - Texto, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
cuadrodecolores.ShowDialog()
ventana.SelectionColor = cuadrodecolores.Color

Se utiliza el mtodo ShowDialog () para abrir el cuadro de dilogo del control


FontDialog cuadrodecolores en tiempo de ejecucin. En la segunda lnea se le asigna a
la propiedad SelectionColor del objeto ventana el color del texto seleccionado por
intermedio de la propiedad Color del objeto cuadrodecolores.
p) Seleccione el men Color - Fondo, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
cuadrodecolores.ShowDialog()
ventana.SelectionBackColor = cuadrodecolores.Color

Se utiliza el mtodo ShowDialog () para abrir el cuadro de dilogo del control


FontDialog cuadrodecolores en tiempo de ejecucin. En la segunda lnea se le asigna a
la propiedad SelectionBackColor del objeto ventana el color de fondo del texto
seleccionado por intermedio de la propiedad Color del objeto cuadrodecolores.
q) Seleccione el men Estilo vietas, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:

140

ventana.SelectionBullet = True

La funcin SelectionBullet del control RichTextBox ventana establece un valor


(True, False) para permitir o no aplicar un estilo de vieta en una seleccin de texto o
en la insercin de nuevo texto.

Ejecutar el formulario

Cuando se ejecuta el proyecto en el entorno de desarrollo de Visual Basic.NET y se


escribe el texto Texto de Prueba y se selecciona la palabra Prueba y con el men
Formato se cambia el color de texto, adems se selecciona el texto Texto y se le
cambia el color de fondo y tambin se escoge la opcin Estilo vietas y se escribe
texto, se podra obtener una figura similar a la siguiente:
Figura 8.15 Ejecucin aplicacin MenuInterfazSencilla.

En este momento se puede escoger cualquier opcin del men y realizar la


operacin seleccionada.
8.2 Creacin de Mens con interfaz mltiple
Una aplicacin de interfaz mltiple se compone de un formulario principal, denominado
formulario MDI, que actuar como contenedor de otros formularios abiertos en el
transcurso del programa denominados formularios hijos o secundarios MDI.
8.2.1 Ejemplo prctico formularios MDI
Realizar una aplicacin llamada MenuInterfazMultiple que contenga un formulario
MDI que permita a un usuario abrir varios formularios cuantas veces quiera, El men
principal deber tener las opciones: Nuevo, Guardar, Abrir, Cerrar, Salir, Copiar,
Cortar, Pegar, visualizar los formularios creados, mosaico horizontal, mosaico vertical,
141

cascada, minimizar.

Crear la interfaz de usuario

Para crear la interfaz de usuario se utilizarn cinco formularios. Uno de ellos ser el
formulario principal o contenedor de los otros cuatro formularios los cuales realizarn
una labor especfica cada uno.

Creacin del primer Formulario

Este formulario ser el formulario contenedor de los dems formularios. Agrguele un


control MenuStrip y modifique las siguientes propiedades al control respectivo:
Tabla 8.2 Propiedades de los controles del formulario principal MDI.
Control
MenuStrip1
Form1

Valor
Propiedad
Name
menuprincipal
Name
formularioprincipal
IsMdiContainer True (cambia el color del formulario a un gris
oscuro. Permite convertir este formulario es un
contendor de formularios MDI).
WindowState
Maximized
Text
Interfaz de documentos Mltiple.

Seleccione el control MenuStrip menuprincipal y cree los siguientes mens de


nivel superior: Archivo, Edicion, Mis Formularios, Ventana. Se obtendra una figura
similar a la siguiente:
Figura 8.16 Interfaz de usuario inicial del formulario principal.

Para completar el diseo del men realice lo siguiente:


142

Para el Men Archivo adicione los submens para obtener la siguiente figura:

Figura 8.17 Men Archivo con Submens.

Para el Men Edicion adicione los submens para obtener la siguiente figura:

Figura 8.18 Men Edicion con Submens.

Para el Men Mis Formularios adicione los submens para obtener la siguiente
figura:

Figura 8.19 Men Mis Formularios con Submens.

143

Para el Men Ventana adicione los submens para obtener la siguiente figura:

Figura 8.20 Men Ventana con Submens.

Creacin del segundo Formulario


Para crear el segundo formulario y que quede dentro de la aplicacin
MenuInterfazMultiple, realice los siguientes pasos:
1. En el men Proyecto, seleccione Agregar Windows Forms, se visualizar el
siguiente cuadro de dilogo:
Figura 8.21 Agregar un segundo formulario a la aplicacin.

2. En el cuadro Nombre, cambie el nombre del formulario por formulariofecha y


a continuacin haga clic en Agregar para visualizar el segundo formulario en el
entorno de desarrollo.
En este formulario seleccione los siguientes controles: 2 Label, 1 TextBox y 1
DateTimePicker (control que permite a un usuario seleccionar una fecha de un
calendario) y modifique las siguientes propiedades al control respectivo:
144

Tabla 8.3 Propiedades de los controles del segundo formulario.


Control

Propiedad
Name
Label1
Text
Font - Bold
Name
Label2
Text
Font - Bold
DateTimePicket1 Name
TextBox1
Name
Form1
Name
Text

Valor

lblfecha
Seleccione una nueva fecha
True
lblformato
La fecha en formato nmerico
True
controlfecha
txtformato
formulariofecha
Control DateTimePicker

Figura 8.22 Interfaz de usuario segundo formulario.

Escribir cdigo

Seleccione el objeto controlfecha, d doble clic para abrir el editor del procedimiento
controlfecha_ValueChanged y escriba el siguiente cdigo:
txtformato.Text = controlfecha.Value

El cdigo anterior permite visualizar en la propiedad Text del control


txtformato la fecha y la hora en formato nmerico cuando un usuario escoge una fecha
del objeto DateTimePicker controlfecha.
Creacin del tercer Formulario
Para crear el tercer formulario y que quede dentro de la aplicacin
MenuInterfazMultiple, se deben realizar los mismos pasos que se realizaron para
agregar el segundo formulario. En el cuadro Nombre del nuevo formulario cambie el
nombre por formulariomeses.
En este formulario seleccione los siguientes controles: 1 Label, 1 TextBox y 1
MonthCalendar (control que permite a un usuario seleccionar una fecha de un
calendario) y modifique las siguientes propiedades al control respectivo:

145

Tabla 8.4 Propiedades de los controles del tercer formulario.


Control
Label1
MontCalendar1
TextBox1
Form1

Propiedad
Name
Text
Font - Bold
Name
Name
Name
Text

Valor

lblfecha
Fecha seleccionada numrica:
True
controlcalendario
txtformato
formulariomeses
Control MonthCalendar

Figura 8.23 Interfaz de usuario tercer formulario.

Escribir cdigo

Seleccione el objeto controlfecha, d doble clic para abrir el editor del procedimiento
controlcalendario_DateChanged y escriba el siguiente cdigo:
txtfecha.Text = controlcalendario.SelectionEnd.Date

Se le asigna a la propiedad Text del control txtfecha la ltima fecha


seleccionada del objeto MonthCalendar controlcalendario en formato nmerico por
intermedio de la propiedad SelectionEnd.Date.
Creacin del cuarto Formulario
Para crear el cuarto formulario y que quede dentro de la aplicacin
MenuInterfazMultiple, se deben realizar los mismos pasos que se realizaron para
agregar el segundo formulario. En el cuadro Nombre del nuevo formulario cambie el
nombre por formulariolenguaje.
En este formulario seleccione los siguientes controles: 3 Label, 6 TextBox y 1
CheckedListBox (control que permite a un usuario seleccionar una o varias alternativas
de una lista) y modifique las siguientes propiedades al control respectivo:

146

Tabla 8.5 Propiedades de los controles del cuarto formulario.


Control
Label1

Propiedad
Name
Text
Font - Bold
Label2
Name
Text
Font - Bold
Label3
Name
Text
Font - Bold
TextBox1
Name
TextBox2
Name
TextBox3
Name
TextBox4
Name
TextBox5
Name
TextBox6
Name
CheckedListBox1 Name
CheckOnClick
Font -Bold
Form1
Name
Text

Valor

lbltexto
Traductor Animales Espaol - Ingles
True
lblespaol
Espaol
True
lblingles
Ingles
True
txtvaca
txtabeja
txtoso
txtpajaro
txtperro
txtgato
listaespaol
True
True
formulariolenguaje
Traductor Animales Espaol - Ingles

Figura 8.24 Interfaz de usuario cuarto formulario.

Escribir cdigo

Seleccione el objeto controlfecha, d doble clic para abrir el editor del procedimiento
listaespaol_SelectedIndexChanged y escriba el siguiente cdigo:

147

If listaespaol.GetItemChecked(0) Then
txtvaca.Text = "COW"
Else
txtvaca.Text = ""
End If
If listaespaol.GetItemChecked(1) Then
txtabeja.Text = "BEE"
Else
txtabeja.Text = ""
End If
If listaespaol.GetItemChecked(2) Then
txtoso.Text = "BEAR"
Else
txtoso.Text = ""
End If
If listaespaol.GetItemChecked(3) Then
txtpajaro.Text = "BIRD"
Else
txtpajaro.Text = ""
End If
If listaespaol.GetItemChecked(4) Then
txtperro.Text = "CAN"
Else
txtperro.Text = ""
End If
If listaespaol.GetItemChecked(5) Then
txtgato.Text = "CAT"
Else
txtgato.Text = ""
End If

Utilizando la propiedad GetItemChecked(ndice) del objeto CheckedListBox


listaespaol se valida que cuadro de verificacin se ha seleccionado o deseleccionado,
con el fin de asignar a la propiedad Text de cada campo de texto el valor
correspondiente.
Creacin del quinto Formulario
Para crear el quinto formulario y que quede dentro de la aplicacin
MenuInterfazMultiple, se deben realizar los mismos pasos que se realizaron para
agregar el segundo formulario. En el cuadro Nombre del nuevo formulario cambie el
nombre por formularioventana. A este formulario adicione un control RichTextBox.
NOTA: Seleccione el objeto RichTextBox1 y d clic sobre la flecha que aparece al
lado derecho superior del control para observar la ventana Tareas de RichTextBox, all
d clic sobre la opcin Acoplar en contenedor principal para ajustar el control al
formulario. Modifique las siguientes propiedades al control respectivo:
Tabla 8.6 Propiedades de los controles del quinto formulario.
Control
RichTextBox1
Form1

Propiedad
Name
Name
Text

Valor

ventana
formularioventana
Editor de texto bsico

148

Figura 8.25 Interfaz de usuario quinto formulario.

En este momento en el explorador de soluciones se observara una figura


similar a la siguiente:
Figura 8.26 Explorador de soluciones con los formularios.

Escribir cdigo para los Mens

Antes de escribir el cdigo para cada una de las opciones del men, arrastre los objetos
OpenFileDialog y SaveFileDialog y cambie la propiedad Name de dichos objetos por
cuadroabrirrchivo y cuadroguardarrchivo respectivamente. Estos dos controles
servirn para realizar los procesos de apertura y guardado de un archivo de texto.
a) Seleccione el men Nuevo, d doble clic para abrir el editor del procedimiento
NuevoToolStripMenuItem_Click y escriba el siguiente cdigo:
Dim nuevoformulario As New formularioventana
nuevoformulario.MdiParent = Me
nuevoformulario.Show()

149

En la primera lnea se crea un formulario llamado nuevoformulario al cual se le


asigna espacio de memoria de tipo formularioventana, en la segunda lnea se asigna a
la propiedad MdiParent del objeto nuevoformulario la instancia actual del formulario
en ejecucin (Me) y por ltimo por medio del mtodo Show () se muestra el formulario.
b) Seleccione el men Abrir, d doble clic para abrir el editor del procedimiento
AbrirToolStripMenuItem_Click y escriba el siguiente cdigo:
Dim formularioactivo As Form = Me.ActiveMdiChild
Dim nuevaventana As RichTextBox = CType(formularioactivo.ActiveControl,
RichTextBox)
nuevaventana.Text = " "
cuadroabrirrchivo.Title = "Seleccione el archivo a abrir..."
cuadroabrirrchivo.InitialDirectory = "C:\"
cuadroabrirrchivo.Filter = "Archivo de Texto(*.txt)|*.txt"
cuadroabrirrchivo.ShowDialog()
If cuadroabrirrchivo.FileName.Length > 1 Then
Dim verarchivo As New IO.StreamReader(cuadroabrirrchivo.FileName)
nuevaventana.Text = verarchivo.ReadToEnd
Else
MsgBox("Archivo no contiene informacin")
End If

Dado que una aplicacin MDI puede tener muchas instancias del mismo
formulario secundario, se necesita especificar el formulario activo. Con la propiedad
ActiveMdiChild, se puede obtener el formulario secundario que tiene el foco o que
est activo. Adems cuando se tienen varios controles en un formulario se debe
especificar el control que est activo, esto se puede realizar con la propiedad
ActiveControl que establece el control que est activo en el formulario secundario
Se crea un objeto llamado nuevoformulario de tipo Form al cual se le asigna el
formulario activo, por otro lado, se crea una variable llamada nuevaventana de tipo
RichTextBox a la cual se le asignar el control activo del formulario secundario. Se
utilizo la funcin CType para devolver el resultado de convertir explcitamente una
expresin a un tipo de dato, objeto, estructura o clase. A la propiedad Text del objeto
nuevaventana se le asignar el contenido del archivo utilizando el mtodo ReadtoEnd
que lee el archivo desde el principio hasta el final.
c) Seleccione el men Guardar, d doble clic para abrir el editor del
procedimiento GuardarToolStripMenuItem_Click y escriba el siguiente
cdigo:
Dim formularioactivo As Form = Me.ActiveMdiChild
Dim nuevaventana As RichTextBox = CType(formularioactivo.ActiveControl,
RichTextBox)
cuadroguardarrchivo.Title = "Cuadro de Dilogo para guardar un archivo"
cuadroguardarrchivo.InitialDirectory = "C:\"
cuadroguardarrchivo.Filter = "Archivo de Texto(*.txt)|*.txt"
cuadroguardarrchivo.ValidateNames = True
cuadroguardarrchivo.ShowDialog()
Dim guardarrchivo As IO.StreamWriter
guardarrchivo = New IO.StreamWriter(cuadroguardarrchivo.FileName)
guardarrchivo.Write(nuevaventana.Text)
guardarrchivo.Close()

150

Se crea una variable llamada guardarrchivo de tipo IO.StreamWriter (clase


que se utiliza para escribir lneas de informacin en un archivo de texto estndar) que
guardar el nombre del archivo de texto asignado a la propiedad FileName del control
guardarrchivo. Utilizando el mtodo Write se escribe en el archivo todo el contenido
existente en la propiedad Text del objeto nuevaventana.
Nota: el men Guardar como no se describe, se espera que el usuario realice el
cdigo correspondiente.
d) Seleccione el men Cerrar, d doble clic para abrir el editor del procedimiento
y escriba el siguiente cdigo:
Dim cerrarformulario As Form = CType(Me.ActiveMdiChild, Form)
If Not cerrarformulario Is Nothing Then
cerrarformulario.Close()
End If

Se crea un objeto llamado cerrarformulario de tipo Form al cual se le asigna el


formulario activo. Se pregunta si el objeto cerrarformulario no es vacio. Si se cumple
la condicin se utiliza la funcin Close() para cerrar el formulario activo.
e) Seleccione el men Salir, d doble clic para abrir el editor del procedimiento y
escriba el siguiente cdigo:
End

f) Seleccione el men Deshacer, d doble clic para abrir el editor del


procedimiento y escriba el siguiente cdigo:
Dim formularioactivo As Form = Me.ActiveMdiChild
Dim nuevaventana As RichTextBox = CType(formularioactivo.ActiveControl,
RichTextBox)
nuevaventana.Undo()

g) Seleccione el men Rehacer, d doble clic para abrir el editor del procedimiento
y escriba el siguiente cdigo:
Dim formularioactivo As Form = Me.ActiveMdiChild
Dim nuevaventana As RichTextBox = CType(formularioactivo.ActiveControl,
RichTextBox)
nuevaventana.Redo()

h) Seleccione el men Cortar, d doble clic para abrir el editor del procedimiento
y escriba el siguiente cdigo:
Dim activeChild As Form = Me.ActiveMdiChild
Dim nuevaventana As RichTextBox = CType(activeChild.ActiveControl, RichTextBox)
nuevaventana.Cut()

i) Seleccione el men Pegar, d doble clic para abrir el editor del procedimiento y
escriba el siguiente cdigo:
Dim activeChild As Form = Me.ActiveMdiChild
Dim nuevaventana As RichTextBox = CType(activeChild.ActiveControl, RichTextBox)

151

nuevaventana.Paste()

j) Seleccione el men Copiar, d doble clic para abrir el editor del procedimiento
y escriba el siguiente cdigo:
Dim activeChild As Form = Me.ActiveMdiChild
Dim nuevaventana As RichTextBox = CType(activeChild.ActiveControl, RichTextBox)
nuevaventana.Copy()

OBSERVACIN: Las opciones deshacer, rehacer, cortar, pegar, copiar funcionan


nicamente con el objeto formularioventana.
k) Seleccione el men Formulario Fecha, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
Dim formularios As New formulariofecha
formularios.MdiParent = Me
formularios.Show()

m) Seleccione el men Formulario Meses, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
Dim formularios As New formulariomeses
formularios.MdiParent = Me
formularios.Show()

n) Seleccione el men Formulario Lenguaje, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
Dim formularios As New formulariolenguaje
formularios.MdiParent = Me
formularios.Show()

Ejecutar la aplicacin MenuInterfazMultiple

Cuando se ejecuta el proyecto en el entorno de desarrollo se visualiza la siguiente


figura:
Figura 8.27 Ejecucin de la aplicacin MenuInterfazMultiple.

152

Si se pulsa la opcin Nuevo del men Archivo dos veces y se escogen las
opciones Formulario Fecha, Formulario Meses y Formulario Lenguaje, se obtendra
una figura similar a la siguiente:
Figura 8.28 Men principal con tres formularios abiertos.

8.3 Men Ventana


En el men Ventana se aadieron unas opciones que permiten la organizacin de los
formularios en: cascada, mosaico horizontal y mosaico vertical. Para organizar los
formularios abiertos se debe ejecutar el mtodo LayoutMdi () pasndole como
argumento la opcin deseada. Tambin se cre una opcin para minimizar los
formularios. Antes de poder realizar operaciones con este men, seleccione el objeto
menuprincipal y en la propiedad MdiWindwListItems escoja la opcin
VentanaToolStripMenuItem.
Figura 8.29 Propiedad MdiWindowListItem modificada.

153

Y programe las opciones del men Ventana.


a) Seleccione el men Mosaico Horizontal, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
Me.LayoutMdi(MdiLayout.TileHorizontal)

b) Seleccione el men Mosaico Vertical, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
Me.LayoutMdi(MdiLayout.TileVertical)

c) Seleccione el men Cascada, d doble clic para abrir el editor del procedimiento
y escriba el siguiente cdigo:
Me.LayoutMdi(MdiLayout.Cascade)

d) Seleccione el men Minimizar, d doble clic para abrir el editor del


procedimiento y escriba el siguiente cdigo:
For i As Integer = 0 To Me.MdiChildren.Length - 1
Me.MdiChildren(i).WindowState = FormWindowState.Minimized
Next

Se crea un ciclo For donde se inicializa una variable de tipo Integer llamada i
en cero (0) que se ejecutar hasta el total (Length-1) de formularios secundarios abiertos
(MdiChildren) y a la propiedad WindowState de cada formulario abierto se le
asignar la funcin de minimizar (Minimized).
Continuando con el ejemplo anterior, al seleccionar la opcin Mosaico
Horizontal se visualizara la siguiente figura:
Figura 8.30 Opcin Mosaico Horizontal seleccionada.

154

Con la opcin Mosaico Vertical se visualizara la siguiente figura:


Figura 8.31 Opcin Mosaico Vertical seleccionada.

Con la opcin Cascada se visualizara la siguiente figura:


Figura 8.32 Opcin Cascada seleccionada.

155

8.4 Desactivar las opciones del men en formularios MDI


En la aplicacin que se ha trabajado se puede abrir tantas copias de los formularios
seleccionado como se necesiten. Para conseguir que de un determinado formulario se
pueda abrir una sola instancia, se debe deshabilitar la opcin del men cuando se abre
un formulario especifico, asignndole False a la propiedad Enabled. Entonces para que
se cree una sola instancia del formulario formulariofecha seleccione la opcin
Formulario Fecha del menuprincipal y adicione el siguiente cdigo:
Me.FormularioFechaToolStripMenuItem.Enabled = False

En segundo lugar seleccione el formulario formulariofecha d doble clic sobre


este y en la ventana superior derecha seleccione el evento FormClosed y escriba el
siguiente cdigo:
CType(MdiParent,formularioprincipal).FormularioFechaToolStripMenuItem.Enabled=True

Al ejecutar nuevamente la aplicacin MenuInterfazMultiple y seleccionar la


opcin Formulario Fecha, se podr apreciar que esta queda deshabilitada. Se volver a
Habilitar al cerrar el formulario.
Figura 8.33 Desactivacin del men Formulario Fecha.

8.5 Creacin de una barra de herramientas en una aplicacin MDI


Siguiendo con el ejemplo que se ha venido trabajando, tambin es posible aadirle una
barra o ms barras de herramientas como se maneja en el entorno Windows, con el fin
de realizar de forma ms rpida algunas tareas, como por ejemplo: copiar, pegar, cortar,
guardar, etc. Para aadir una barra de herramientas se utiliza el control ToolStrip
.
Agregue dicho control a la aplicacin MenuInterfazMultiple y cmbiele el texto de la
propiedad Name por barradeherramientas, se visualizar la siguiente figura:

156

Figura 8.34 Aplicacin MenuInterfazMultiple con una barra de herramientas.

Cuando se selecciona la ventana que aparece en la barra de herramientas se


puede agregar los siguientes elementos a la barra: Button, Label, SplitButton,
DropDownButton, Separator, ComboBox, TextBox, ProgressBar.
Figura 8.35 Elementos de la barra de herramientas.

Seleccione el elemento Button y adicinelo cuatro veces. La figura que se


visualiza es la siguiente:
Figura 8.36 Elementos Button adicionado a la barra de herramientas.

157

Seleccione cada uno de los elementos Button y modifquele las siguientes


propiedades:
Tabla 8.7 Propiedades de elementos Button de la barra de herramientas.
Control
Propiedad
ToolStripButton1 Name
Text
Image
ToolStripButton2 Name
Text
Image
ToolStripButton3 Name
Text
Image
ToolStripButton4 Name
Text
Image

Valor
botonnuevo
Nuevo
Imagen de nueva ventana
botoncortar
Cortar
Imagen de opcin cortar
botonpegar
Pegar
Imagen de opcin pegar
botoncopiar
Copiar
Imagen de opcin copiar

La barra de herramientas con las modificaciones realizadas se podra apreciar de


la siguiente forma:
Figura 8.37 Elementos modificados de barra de herramientas.

Escribir cdigo para cada elemento Button


a) D doble clic sobre el Button botonnuevo y escriba el siguiente cdigo:
Dim nuevoformulario As New formularioventana
nuevoformulario.MdiParent = Me
nuevoformulario.Show()

b) D doble clic sobre el Button botoncortar y escriba el siguiente cdigo:


Dim activeChild As Form = Me.ActiveMdiChild
Dim nuevaventana As RichTextBox = CType(activeChild.ActiveControl, RichTextBox)
nuevaventana.Cut()

c) D doble clic sobre el Button botonpegar y escriba el siguiente cdigo:


Dim activeChild As Form = Me.ActiveMdiChild
Dim nuevaventana As RichTextBox = CType(activeChild.ActiveControl, RichTextBox)
nuevaventana.Paste()

d) D doble clic sobre el Button botoncopiar y escriba el siguiente cdigo:


158

Dim activeChild As Form = Me.ActiveMdiChild


Dim nuevaventana As RichTextBox = CType(activeChild.ActiveControl, RichTextBox)
nuevaventana.Copy()

Al ejecutar nuevamente la aplicacin MenuInterfazMultiple y pulsar el botn


Nuevo se visualizar la siguiente figura:
Figura 8.38 Aplicacin MenuInterfazMultiple cuando se pulsa el botn Nuevo.

8.6 Crear un men contextual


Dentro de las aplicaciones Windows Forms tambin es posible agregarle mens
contextuales. Dichos mens se activan con el botn derecho del mouse y pueden
ejecutar una operacin o proceso que se le asigne. Para aadir un men contextual a una
aplicacin se utiliza el control ContextMenuStrip
.
Continuando con el ejercicio que se ha venido trabajando agrguele a dicho
control a la aplicacin MenuInterfazMultiple y cmbiele el texto de la propiedad
Name por menucontextual, se visualizar la siguiente figura:
Figura 8.39 Men contextual agregado a la aplicacin MenuInterfazMultiple.

159

En el texto Escriba aqu adicione las opciones que desea tenga el men
contextual. Para el ejemplo, escriba las siguientes opciones: Nuevo, Cortar, Pegar,
Copiar.
Figura 8.40 Men contextual con las opciones agregadas.

Adems si desea agregarle imgenes a cada opcin en el espacio delimitado con


color azul, sitese en la opcin desea y de clic derecho del mouse para ver la ventana
con la opcin Establecer imagen:
Figura 8.41 Ventana para establecer una imagen a una opcin.

Escoja dicha opcin y al agregarle a cada una de las opciones la imagen


correspondiente. Se obtendra una figura similar a la siguiente:
Figura 8.42 Men contextual con imgenes por cada opcin.

160

Antes de poder realizar operaciones con este men, seleccione el objeto


menuprincipal y en la propiedad ContextMenuStrip adicione el control
menucontextual.
Figura 8.43 Propiedad ContextMenuStrip del objeto menuprincipal modificada.

D doble clic sobre cada opcin del men contextual para programar cada
operacin. El cdigo es el mismo que se utilizo en el men principal o en la barra de
herramientas para dichas opciones.

161

9. GRFICOS Y ANIMACIN
En Microsoft Visual Basic .NET se pueden dibujar diferentes tipos de grficos como
lneas, rectngulos, valos, cuadros, elipses con relleno o sin l. Adems se pueden
crear efectos especiales con una secuencia de imgenes o grficas para dar la sensacin
de movimiento. En este captulo conocer los tipos de grficos de Visual Basic .NET,
como tambin aprender a mover los controles o imgenes en forma horizontal, vertical
o diagonal utilizando las propiedades Left y Top, expandir o contraer los controles o las
imgenes manipulando las propiedades Height y Width. Por otro lado, tambin
conocer como crear efectos de animacin sencillos utilizando los controles
PictureBox, Timer o ImageList.
9.1 El espacio de nombres System.Drawing
Un formulario es como un mantel el cual tiene unas dimensiones las cuales se miden en
pequeos puntos llamados pixeles. Con un sistema de coordenadas se define donde se
coloca cada pixel. Con la coordenada X se mide de izquierda a derecha y con la
coordenada Y se mide de arriba a abajo. Las coordenadas se inician en la esquina
superior izquierda del formulario (x=0, y=0). Los pxeles tambin se utilizan para
expresar el ancho y el alto de los grficos. Para definir un cuadrado que tiene 100
pxeles de ancho y 100 pxeles de alto, cuya esquina superior izquierda se encuentra 10
pxeles a la izquierda y 10 pxeles hacia abajo, se expresar en coordenadas como 10,
10, 100, 100.
El espacio de nombres System.Drawing contiene numerosas clases con las que
se pueden crear dibujos en un programa. Las grficas se pueden crear vacas (prefijo
draw) o con relleno de color (prefijo fill). Para dibujar o utilizar una funcin grfica es
necesario crear un objeto Graphics y un objeto Pen (argumento cuando no se rellena
con ningn color) o Brush (cuando se quiere tener un color de relleno). El objeto
Graphics representa una superficie de dibujo y es el objeto que se usa para crear
imgenes grficas. El objeto Graphics se puede crear en el evento Paint de un
formulario o control, tambin, llamando al mtodo CreateGraphics, adems se pueden
crear objetos Font y Color.
Los objetos Graphics se declaran antes de dibujar.
Dim graficador As Graphics
Aqu va el cdigo de la figura a dibujarse

Para crear un objeto Graphics con el mtodo CreateGraphics.


Dim graficador As Graphics
graficador=Me.CreateGraphics
Aqu va el cdigo de la figura a dibujarse

Para crear un objeto Graphics a partir de un objeto Image


Dim dibujo As New BitMap ("Midibujo.bmp")
Dim graficador As Graphics = Graphics.FromImage (dibujo)

Se llama al mtodo Graphics.FromImage al cual se le asigna el objeto Image


dibujo de tipo BitMap a partir de la cual se desea crear un objeto Graphics.
162

Crear los objetos Pen para dibujar segmentos de lnea, curvas y los contornos de
formas.
Dim lapiz As System.Drawing.Pen
lapiz = New System.Drawing.Pen (System.Drawing.Color.Red)

En la siguiente tabla se muestran algunas de las figuras geomtricas de Visual


Basic .NET:
Tabla 9.1 Figuras geomtricas de .NET.
Figura
Punto (estructura)

Mtodo
Point

Rectangulo (estructura)

Rectangle

Recta

DrawLine

Rectangulo

DrawRectangle,
FillRectangle

Circulo / Elipse

DrawEllipse,
FillEllipse

Curva

DrawCurve

Arco

DrawArc

Poligono

DrawPolygon,
FillPolygon
DrawPie, FillPie

Pie

Descripcin
Representa un par ordenado de coordenadas
x e y de enteros que define un punto en un
plano bidimensional.
Almacena un conjunto de cuatro enteros que
representan la posicin y tamao de un
rectngulo.
Dibuja una lnea que conecta los dos puntos
especificados por los pares de coordenadas
Dibuja un rectngulo especificado por un par
de coordenadas, un valor de ancho y un valor
de alto.
Dibuja una elipse definida por un rectngulo
delimitador especificado por un par de
coordenadas, un valor de alto y un valor de
ancho.
Dibuja una curva a travs de una matriz
especificada por la estructura Point.
Dibuja un arco especificado por un par de
coordenadas, un valor de ancho y un valor de
alto.
Dibuja un polgono definido por una matriz
especificada por la estructura Point.
Dibuja una forma circular definida por una
elipse determinada por un par de coordenadas,
unos valores de ancho y alto y dos lneas
radiales.

9.1.1 Ejemplos prcticos de grficos


1) Escribir una aplicacin llamada CrearGraficas que permita a un usuario
graficar una lnea desde el evento Paint de un formulario, utilizando control
Button y un control PictureBox.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas adicione al formulario los siguientes controles: 1


Label, 2 Button y 1 PictureBox.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:

163

Tabla 9.2 Propiedades de los controles de la aplicacin CrearGraficas.


Control
Label1
Button1
Button2
PictureBox1
Form1

Propiedad
Name
Text
Name
Text
Name
Text
Name
BorderStyle
Name
Text

Valor
lbltexto
Evento Paint
botonlinea
Lnea con un Botn
botonpicturebox
Lnea con un PictureBox
pintura
Fixed3D
formulario
Crear una Lnea

Figura 9.1 Interfaz de usuario CrearGraficas.

Escribir cdigo
a) D doble clic sobre el formulario y en la ventana superior derecha seleccione el
evento formulario_Paint y escriba el siguiente cdigo:
Dim lapiz As Pen
lapiz = Pens.Blue
Dim graficador As Graphics
graficador = Me.CreateGraphics
graficador.DrawLine(lapiz, 30, 30, 70, 120)

Se define una variable lapiz de tipo Pen, a dicha variable se le asigna el color
azul (Pens.Blue). Por otro lado, se crea un objeto Graphics llamado graficador al cual
se le asigna el mtodo CreateGraphics. La funcin DrawLine permite dibujar una
lnea, dicho mtodo contiene cinco parmetros: el primero es el color de la lnea, el
segundo es la coordenada X inicial, el tercero es la coordenada Y inicial, el cuarto es la
coordenada X final y el quinto es la coordenada Y final.
b) Seleccione el objeto botonlinea, d doble clic para abrir el editor del
procedimiento botonlinea_Click y escriba el siguiente cdigo:

164

Dim lapiz As New Pen(Color.FromArgb(255, 0, 255, 0), 4)


Dim graficador As Graphics
graficador = Me.CreateGraphics
graficador.DrawLine(lapiz, 100, 30, 170, 150)

Se define una variable lapiz a la cual se le asigna espacio de memoria de tipo


Pen. Al objeto Pen se le asigna un color y el ancho del color. El mtodo FromArgb de
la clase Color recibe cuatro parmetros: la transparencia (255), el color rojo (0), el color
verde (255), el color azul (0). El quinto parmetro del objeto Pen es el ancho del color
del lpiz.
c) Seleccione el objeto botonpicturebox, d doble clic para abrir el editor del
procedimiento botonpicture_Click y escriba el siguiente cdigo:
pintura.CreateGraphics.DrawLine(Pens.Chocolate, 10, 10, 50, 100)

El mtodo CreateGraphics del objeto pintura sirve para crear grficas. A la


funcin DrawLine se le asigna directamente el color chocolate de la clase Pens y los
parmetros Xi, Yi, Xf, Yf.

Ejecutar el proyecto

Al ejecutar el proyecto se visualizar automticamente la lnea que se cre en el mtodo


Paint del formulario. Al pulsarse los botones Lnea con un Botn y Lnea en un
Picture Box, se obtendr la siguiente figura:
Figura 9.2. Ejecucin aplicacin CrearGraficas.

2) Realizar una aplicacin llamada FuncionesGraficas que permita a un usuario


graficar: lneas, rectngulos, cuadros, valos, crculos, curvas.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas adicione al formulario los siguientes controles: 1


MenuStrip y 1 PictureBox.

165

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 9.3 Propiedades de los controles de la aplicacin FuncionesGraficas.
Control
MenuStrip1
PictureBox1
Form1

Propiedad
Name
Name
BorderStyle
Name
Text

Valor
menugraficas
grafica
FixedSingle
formulario
Funciones Grficas Visual Basic .NET

Figura 9.3 Interfaz de usuario FuncionesGraficas.

Para el men Lneas adicione los submens para obtener la siguiente figura:

Figura 9.4 Men Lneas con Submens.

Para el men Rectangulo/Cuadro adicione los submens para obtener la siguiente


figura:

166

Figura 9.5 Men Rectangulo/Cuadro con Submens.

Para el men Elipses/Circulo adicione los submens para obtener la siguiente


figura:

Figura 9.6 Men Elipses/Circulo con Submens.

Para el men Curvas adicione los submens para obtener la siguiente figura:

Figura 9.7 Men Curvas con Submens.

167

Escribir cdigo
a) Seleccione el men Lnea Normal, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.DrawLine(Pens.Red, 10, 10, 220, 80)

Se utiliza el metodo Clear() para limpiar el objeto grafica. Recibe como


parametro el color de fondo actual (Me.BackColor).
b) Seleccione el men Lnea con extremos, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
Dim lapiz As New Pen(Color.Blue, 6)
lapiz.StartCap = Drawing2D.LineCap.ArrowAnchor
lapiz.EndCap = Drawing2D.LineCap.RoundAnchor
grafica.CreateGraphics.DrawLine(lapiz, 20, 80, 200, 80)
lapiz.Dispose()

Se crea una variable llamada lapiz a la cual se le asigna espacio de memoria de


tipo Pen con un color azul y un ancho del lapiz de 6 pixeles. A la propiedad StartCap
(establece el extremo que se utiliza al inicio de las lneas dibujadas) del objeto lapiz se
le asigna una punta de flecha (ArrowAnchor) que se obtiene de la enumeracion
LineCap del espacio de nombres Drawing2D, adems a la propiedad EndCap
(establece el extremo que se utiliza al final de las lneas dibujadas) se le asigna un
extremo redondeado(RoundAnchor). Por ltimo se libera (Dispose) el objeto Pen
lapiz.
c) Seleccione el men Lnea discontinua, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
Dim recortar As Single() = {3, 4, 10, 2}
Dim lapiz As New Pen(Color.Blue, 3)
lapiz.DashPattern = recortar
grafica.CreateGraphics.DrawLine(lapiz, 20, 100, 400, 100)
lapiz.Dispose()

Se crea una matriz llamada recortar con los valores 3, 4, 10, 2 que representa
los cortes y los espacios al dibujar una lnea. En el ejemplo se dibuja una lnea
discontinua basada en la matriz {3, 4, 10, 2}. Si se multiplican los elementos de la
matriz por el ancho del lpiz (3), se obtiene {9, 4, 30, 6}. Las lneas que se muestran
alternan sus longitudes entre 9 y 30 y los espacios alternan sus longitudes entre 4 y 6. A
la propiedad DashPattern (patrn de corte) del objeto lapiz se le asigna los valores de
dicha matriz.
d) Seleccione el men Unin de Lneas, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
Dim conectar As New Drawing2D.GraphicsPath()
Dim lapiz As New Pen(Color.Blue, 8)

168

conectar.StartFigure()
conectar.AddLine(New Point(100, 30), New Point(200, 30))
conectar.AddLine(New Point(100, 200), New Point(200, 30))
conectar.AddLine(New Point(100, 200), New Point(200, 200))
lapiz.LineJoin = Drawing2D.LineJoin.Round
grafica.CreateGraphics.DrawPath(lapiz, conectar)
lapiz.Dispose()

Se crea un objeto conectar de tipo GraphicsPath (representa una serie de lneas


y curvas conectadas) del espacio de nombres Drawing2D. Con la funcin StartFigure
() se inicia una nueva figura sin cerrar la actual y con la funcin AddLine se le
adicionan lneas al objeto conectar. Se utilizo la estructura Point para crear los puntos
de la lnea. A la propiedad LineJoin (establece el estilo de unin de los extremos de dos
lneas dibujadas) se le asigna un estilo de unin redondo (Round). Se utiliza la funcin
DrawPath para visualizar todas las lneas creadas y conectadas. Recibe como
parmetros el objeto Pen lapiz y la serie de las lneas del objeto conectar.
e) Seleccione el men Rectngulo sin relleno, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.DrawRectangle(Pens.Red, 100, 100, 60, 80)

La funcin DrawRectangle permite dibujar un rectngulo sin relleno. Dicho


objeto contiene cinco parmetros: el primero es el color del rectngulo (se utiliza la
clase Pens para asignar el color), el segundo es la coordenada X, el tercero es la
coordenada Y, el cuarto es el ancho y el quinto es el alto.
f) Seleccione el men Rectngulo con relleno, d doble clic para abrir el editor
del procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.FillRectangle(Brushes.Red, 100, 100, 60, 80)

Para mostrar un rectngulo relleno se utiliza la funcin FillRectangule. Dicho


objeto contiene cinco parmetros: el primero es el color del rectngulo (se utiliza la
clase Brushes para asignar el color de relleno), el segundo es la coordenada X, el
tercero es la coordenada Y, el cuarto es el ancho y el quinto es el alto.
g) Seleccione el men Cuadro sin relleno, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.DrawRectangle(Pens.Blue, 100, 100, 80, 80)

Con la funcin DrawRectangule se puede crear un cuadro sin relleno,


solamente se necesita que los valores de ancho y alto sean iguales.
h) Seleccione el men Cuadro con relleno, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.FillRectangle(Brushes.Red, 100, 100, 80, 80)

169

Con la funcin FillRectangule se puede crear un cuadro con relleno, solamente


se necesita que los valores de ancho y alto sean iguales.
i) Seleccione el men Rectngulo con trama, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
Dim trama As New Drawing2D.HatchBrush(Drawing2D.HatchStyle.Vertical,Color.Blue,
Color.Green)
Dim trama1 As New Drawing2D.HatchBrush(Drawing2D.HatchStyle.Cross, Color.Blue,
Color.Green)
Dim trama2 As New Drawing2D.HatchBrush(Drawing2D.HatchStyle.
DarkUpwardDiagonal,Color.Blue, Color.Green)
grafica.CreateGraphics.FillRectangle(trama, 10, 80, 60, 40)
grafica.CreateGraphics.FillRectangle(trama1, 100, 80, 60, 40)
grafica.CreateGraphics.FillRectangle(trama2, 200, 80, 60, 40)

Se crean tres objetos trama, trama1, trama2 de tipo HatchBrush (define un


pincel rectangular con un estilo de trama, un color de primer plano y un color de fondo)
del espacio de nombres Drawing2D. Como parmetros recibe: el estilo de la trama
(Vertical, Cross, DarkUpwardDiagonal), el color de primer plano (blue) y el color de
fondo (green). Con la funcin FillRectangle se dibuja tres rectngulos cada uno con su
respectiva trama.
j) Seleccione el men Cuadro con degradado, d doble clic para abrir el editor
del procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
Dim rectangulo As Rectangle = New Rectangle(New Point(50, 60), New Point(100,100))
Dim degradado As New Drawing2D.LinearGradientBrush(rectangulo, Color.Blue,
Color.Green, Drawing2D.LinearGradientMode.BackwardDiagonal)
grafica.CreateGraphics.FillRectangle(degradado, rectangulo)

Se crea un objeto triangulo de tipo Rectangle y se le asigna espacio de


memoria con los puntos (Point) 50, 60, 100, 100. Tambin se crea un objeto llamado
degradado al cual se le asigna espacio de memoria de tipo LinearGradientBrush
(define un degradado lineal) del espacio de nombres Drawing2D. Como parmetros
recibe: el rectngulo a dibujarse, los colores de degradado y la direccin del degradado
lineal. La funcin FillRectangle dibuja el tringulo con el degradado lineal.
k) Seleccione el men Elipse sin relleno, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.DrawEllipse(Pens.Blue, 100, 100, 60, 80)

La funcin DrawEllipse permite dibujar una elipse sin relleno. Dicho objeto
contiene cinco parmetros: el primero es el color de la elipse, el segundo es la
coordenada X, el tercero es la coordenada Y, el cuarto es el ancho y el quinto es el alto.
l) Seleccione el men Elipse con relleno, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.FillEllipse(Brushes.Blue, 100, 100, 60, 80)

170

Para mostrar una elipse rellena de un color se utiliza la funcin FillEllipse.


Dicho objeto contiene cinco parmetros: el primero es el color de la elipse, el segundo
es la coordenada X, el tercero es la coordenada Y, el cuarto es el ancho y el quinto es el
alto.
m) Seleccione el men Crculo sin relleno, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.DrawEllipse(Pens.Blue, 100, 100, 80, 80)

Con la funcin DrawEllipse se puede crear un circulo sin relleno, solamente se


necesita que los valores de ancho y alto sean iguales.
n) Seleccione el men Crculo con relleno, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.FillEllipse(Brushes.Blue, 100, 100, 80, 80)

Con la funcin FillEllipse se puede crear un cuadro con relleno, solamente se


necesita que los valores de ancho y alto sean iguales.
o) Seleccione el men Curva cerrada sin relleno, d doble clic para abrir el editor
del procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
Dim puntos() As Point = {New Point(30, 30), New Point(90, 50), New Point(70, 80)}
grafica.CreateGraphics.DrawClosedCurve(Pens.Blue, puntos)

Se crea un arreglo llamado puntos de tipo Point al cual se le asigna espacio de


memoria y se le asignan los puntos: 30, 30, 90, 50, 70, 80. La funcin
DrawClosedCurve permite dibujar una curva cerrada sin relleno. Dicho objeto
contiene siete parmetros: el primero es el color de la curva, el segundo es la
coordenada X, el tercero es la coordenada Y, el cuarto es el ancho, el quinto es el alto,
el sexto es el ngulo inicial y el sptimo el ngulo final. .
p) Seleccione el men Curva cerrada con relleno, d doble clic para abrir el
editor del procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
Dim puntos() As Point = {New Point(30, 30), New Point(90, 50), New Point(70, 80)}
grafica.CreateGraphics.FillClosedCurve(Brushes.Blue, puntos)

La funcin FillClosedCurve permite dibujar una curva cerrada con relleno.


q) Seleccione el men Torta sin relleno, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.DrawArc(Pens.Aqua, 0, 0, 140, 70, 0,120)

La funcin DrawPie permite dibujar un grafico circular definida por una elipse
sin relleno. Dicho objeto contiene siete parmetros: el primero es el color de la curva, el

171

segundo es la coordenada X, el tercero es la coordenada Y, el cuarto es el ancho, el


quinto es el alto, el sexto es el ngulo inicial y el sptimo el ngulo final.
r) Seleccione el men Torta con relleno, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
grafica.CreateGraphics.Clear(Me.BackColor)
grafica.CreateGraphics.FillPie(Brushes.Black, 0, 0, 140, 70,

La funcin FillPie permite dibujar un grafico circular definida por una elipse
con relleno.

Ejecutar el proyecto

Al ejecutar el proyecto y escoger la opcin Rectngulos con trama del men


Rectangulo/Cuadro, se obtendr la siguiente figura:
Figura 9.8 Ejecucin aplicacin FuncionesGraficas.

9.2 Movimiento de un control


Para que un control o una imagen se desplacen en forma horizontal, vertical o diagonal
es necesario modificar las propiedades Top y Left. La propiedad Left permite mover un
control de izquierda a derecha y viceversa. La propiedad Top permite mover un objeto
de arriba abajo y viceversa. La combinacin de Left y Top permite el movimiento de un
control en forma diagonal. Existen dos formas de realizar esta operacin: manualmente
y automticamente. De la forma manual se puede realizar haciendo un clic sobre un
botn cada vez que el usuario desea mover la figura. Dicho control contendr el cdigo
que permitir realizar un movimiento especfico. La forma automtica se realiza con un
control Timer que permite manejar intervalos de tiempo y el cual se puede programar
para que realice unas tareas especificas en un determinado intervalo de tiempo.
9.2.1 Ejemplo prctico movimiento de un control
Crear una aplicacin llamada MovimientoControl que permita a un usuario por medio
de botones mover una imagen en forma horizontal y vertical en forma manual y
automtica.
172

Crear la interfaz de usuario

Utilizando el cuadro de herramientas adicione al formulario los siguientes controles: 1


PictureBox, 1 Timer, 7 Button.

Establecer las propiedades de los objetos de la interfaz de usuario.

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 9.4 Propiedades de los controles de la aplicacin MovimientoControl.
Control
Button1
Button2
Button3
Button4
Button5
Button6
Button7
PictureBox1
Timer1
Form1

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Image
Sizemode
Name
Interval
Enabled
Name
Text

Valor
botonderecha
Mover a la derecha
botonabajo
Mover hacia abajo
botondiagonal
Mover de forma diagonal
botonderechatimer
Mover a la derecha con Timer
botonabajotimer
Mover hacia abajo con Timer
botondiagonaltimer
Mover de forma diagonal con Timer
botondetener
Detener Reloj
imagen
La imagen de un avin
StretchImage
reloj
1000
False
formulario
Funciones Grficas Visual Basic .NET

Figura 9.9 Interfaz de usuario aplicacin MovimientoControl.

173

Escribir cdigo
a) Seleccione el objeto botonderecha, d doble clic para abrir el editor del
procedimiento botonderecha_Click y escriba el siguiente cdigo:
imagen.left = imagen.left + 10

Se modifica el valor de la propiedad Left del objeto imagen en 10 pxeles, lo


que hace que cuando el usuario de clic sobre el botn la imagen se desplazar hacia la
derecha 10 pxeles. Si se desea que el control imagen se devuelva los mismos 10
pxeles hacia la izquierda modifique la propiedad Left en -10.
b) Seleccione el objeto botonabajo, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
imagen.top = imagen.top + 10

Se modifica el valor de la propiedad Top del objeto imagen en 10 pxeles, lo


que hace que cuando el usuario de clic sobre el botn la imagen se desplazar 10 pxeles
hacia abajo. Si se desea que el control imagen se devuelva los mismos 10 pxeles hacia
arriba modifique la propiedad Top en -10.
c) Seleccione el objeto botondiagonal, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
imagen.Top = imagen.Top + 10
imagen.Left = imagen.Left + 10

En este cdigo se modifica los valores de las propiedades Left y Top del
control imagen, esto permitir que la imagen se desplace 10 pixeles a la derecha y 10
hacia abajo.
d) Seleccione el objeto botonderechatimer, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
reloj.Enabled=True

Se modifica el valor de la propiedad Enabled del control reloj para que se


active el reloj en el intervalo especificado.
Nota: los objetos botonabajotimer y botondiagonaltimer tienen el mismo cdigo.
e) Seleccione el objeto botondetener, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
reloj.Enabled=False

Se modifica el valor de la propiedad Enabled del control reloj para detener el


tiempo.
f) Seleccione el objeto reloj, d doble clic para abrir el editor del procedimiento y
escriba el siguiente cdigo:
174

If (botonderechatimer.Focused) Then
imagen.Left = imagen.Left + 10
End If
If (botonabajotimer.Focused) Then
imagen.Top = imagen.Top + 10
End If
If (botondiagonaltimer.Focused) Then
imagen.Top = imagen.Top + 10
imagen.Left = imagen.Left + 10
End If

Un control Timer actua como un reloj que se activa o se desactiva modificando


su propiedad Enabled (True, False). Cuando se activa realizar la (s) tarea (s)
especificada (s) dentro de su procedimiento. Su propiedad Interval determina la
frecuencia en que se realizarn las tareas., est dada en milisegundos. En este caso el
control tiene como valor de la propiedad Interval 1000 o sea que cada segundo se
realizar la tarea especificada. Utilizando la propiedad Focused se determina cual botn
se puls. Dependiendo de la respuesta realizar la accin correspondiente.

Ejecutar el proyecto

Al ejecutar el proyecto y pulsando varias veces el botn Mover en forma diagonal, se


podra obtener la siguiente figura:
Figura 9.10 Ejecucin aplicacin MovimientoControl.

9.3 Expandir y contraer un control


Para que un control se pueda expandir o contraer es necesario modificar las propiedades
del control Width y Height. La propiedad Width permite modificar el ancho del
control y la propiedad Height permite modificar la altura de un objeto. Tambin se
puede realizar esta operacin en forma manual y automtica.

175

9.3.1 Ejemplo prctico expandir y contraer un control


Realizar una aplicacin llamada ExpandirContraerControl que permita a un usuario
por medio de botones expandir y contraer una imagen en forma manual y automtica.

Crear la interfaz de usuario.

Utilizando el cuadro de herramientas adicione al formulario los siguientes controles: 1


PictureBox, 1 Timer, 5 Button.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 9.5 Propiedades de los controles de la aplicacin ExpandirContraerControl.
Control
PictureBox1
Button1
Button2
Button3
Button4
Button5
Form1
Timer1

Propiedad
Name
SizeMode
Image
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Interval

Valor
imagen
StretchImage
La imagen del planeta tierra.
botonexpandir
Expandir Imagen.
botoncontraer
Contraer Imagen.
botonexpandirtimer
Expandir Imagen con Timer.
botoncontraertimer
Contraer Imagen con Timer.
botondetener
Detener reloj
Formulario
Expandir y contraer una imagen
reloj
1000

Figura 9.11 Interfaz de usuario ExpandirContraerControl.

176

Escribir cdigo
a) Seleccione el objeto botonexpandir, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
imagen.Height = imagen.Height + 10
imagen.Width = imagen.Width + 10

En este cdigo se modifica el valor de las propiedades Width y Height en 10


pxeles, lo que hace que cuando el usuario de clic sobre el botn la imagen se vuelva 10
pxeles ms ancha y alta.
b) Seleccione el objeto botoncontraer, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
Imagen.Height = Imagen.Height - 10
Imagen.Width = Imagen.Width - 10

Se modifica el valor de las propiedades Width y Height en -10 pxeles, lo que


hace que cuando el usuario de clic sobre el botn la imagen se vuelva 10 pxeles menos
ancha y alta.
c) Seleccione el objeto botonexpandirtimer, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
reloj.Enabled = True

En este cdigo se modifica el valor de la propiedad Enabled del control Timer


reloj a un valor boolean True, lo que permite activar dicho control.
d) Seleccione el objeto botoncontraertimer, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
reloj.Enabled = True

e) Seleccione el objeto botondetener, d doble clic para abrir el editor del


procedimiento y escriba el siguiente cdigo:
reloj.Enabled = False

Se modifica el valor de la propiedad Enabled del control Timer reloj a un valor


boolean False, lo que permite desactivar dicho control.
f) Seleccione el objeto reloj, d doble clic para abrir el editor del procedimiento y
escriba el siguiente cdigo:
If botonexpandirtimer.Focused Then
imagen.Width = imagen.Width + 10
imagen.Height = imagen.Height + 10
End If
If botoncontraertimer.Focused Then
imagen.Width = imagen.Width - 10
imagen.Height = imagen.Height - 10
End If

177

Utilizando la propiedad Focused del control Button se determina cual botn se


puls. Dependiendo de la respuesta realizar la accin correspondiente.

Ejecutar el proyecto

Al ejecutar el proyecto y pulsando el botn Expandir imagen con Timer, la imagen se


expandir automticamente, se podra obtener la siguiente figura:
Figura 9.12 Ejecucin aplicacin ExpandirContraerControl.

9.4 Animacin
Incluir animacin en un programa lo hace ms atractivo a la vista y en Visual Basic
.NET es sumamente fcil hacerlo y all el control Timer es parte esencial para generar
la animacin de los objetos porque estn en funcin del tiempo. Se dice que animar es
dar la sensacin de movimiento a una imagen mediante diversas tcnicas. Una de tantas
es cambiar varios cuadros por segundo de modo que se aparente un cambio de posicin,
de all que la animacin est ligada al tiempo.
9.4.1 Ejemplos prcticos de animacin
1) Escribir una aplicacin llamada MovimientoLineas que cuando se pulse un botn se
dibujen lneas con coordenadas X, Y igual a 150 y un radio de 100 en un cuadro cada
segundo en el sentido de las manecillas de un reloj.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas adicione al formulario los siguientes controles: 1


PictureBox, 1 Timer, 2 Button.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes

178

propiedades a los controles:


Tabla 9.6 Propiedades de los controles de la aplicacin MovimientoLineas.
Control
PictureBox1
Button1
Button2
Form1
Timer1

Propiedad
Name
BorderStyle
Image
Name
Text
Name
Text
Name
Text
Name
Interval

Valor
pintura
FixedStyle
La imagen del planeta tierra.
botoniniciar
Iniciar
botondetener
Detener
Formulario
Movimiento de una Lnea
reloj
1000

Figura 9.13 Interfaz de usuario MovimientoLineas.

Escribir cdigo
a) Escriba el siguiente cdigo antes del primer procedimiento Sub y despus de la
creacin de la clase formulario.
Public class formulario
Dim decima_segundo As Double = 0
Dim xpos, ypos As Integer
Private sub ..

Se declaran las siguientes variables globales para la clase formulario:


decima_segundo de tipo Double y es inicializada en cero (0); xpos y ypos de tipo
179

Integer.
b) Seleccione el objeto botoniniciar, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
reloj.Enabled = True

c) Seleccione el objeto botondetener, d doble clic para abrir el editor del


procedimiento y escriba el siguiente cdigo:
reloj.Enabled = False

d) Seleccione el objeto reloj, d doble clic para abrir el editor del procedimiento y
escriba el siguiente cdigo:
xpos = Int(100 * Math.Cos(decima_segundo))
ypos = Int(100 * Math.Sin(decima_segundo))
pintura.CreateGraphics.DrawLine(Pens.Salmon, 100, 100, 100 + xpos, 100 + ypos)
decima_segundo += 0.1

Se calcula la posicin de la lnea con las funciones trigonomtricas x = R*cos


(angulo), y = R*sin (angulo), donde R es el radio de la lnea, Sin es el seno y Cos el
coseno que son tomados de la clase Math. Estos valores se asignan a las variables xpos
y ypos respectivamente. El ngulo ser la variable decima_segundo que se
incrementara cada segundo en 0.1.

Ejecutar el proyecto

Al ejecutar el proyecto y pulsando el botn Iniciar, dejando que la aplicacin se ejecute


durante un minuto, se podra obtener la siguiente figura:
Figura 9.14 Ejecucin aplicacin MovimientoLineas.

180

2) Disear una aplicacin llamada RotacionImagenes que cuando se pulse un botn se


realice la rotacin de la luna en un cuadro.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas adicione al formulario los siguientes controles: 1


PictureBox, 1 Timer, 1 Button, 1 ImageList (permite crear una lista de imgenes).

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 9.7 Propiedades de los controles de la aplicacin RotacionImagenes.
Control
PictureBox1
Button1
ImageList1
Form1
Timer1

Propiedad
Name
BorderStyle
Sizemode
Name
Text
Name
Images
Name
Text
Name
Interval

Valor
imagen
FixedStyle
StretchImage
boton
Girar
listadeimagenes
Secuencias de imgenes de la luna.
Formulario
Movimiento con secuencia de imgenes.
reloj
500

Enabled

True

Figura 9.15 Interfaz de usuario RotacionImagenes.

Ahora seleccione el control listadeimagenes y d clic sobre la flecha en la parte


superior derecha, se observar la ventana Tareas de ImageList:

181

Figura 9.16 Ventana Tareas de ImageList del control listadeimagenes.

Seleccione la opcin Elegir imgenes para visualizar la ventana Editor de la


coleccin de Imgenes.
Figura 9.17 Ventana Editor de coleccin de imgenes.

Pulse el botn Agregar y busque las imgenes correspondientes, se podra


obtener una figura similar a la siguiente:
Figura 9.18 Ventana con las imgenes a insertar en el control listadeimagenes.

182

Seleccione la imagen con el nombre MOON01 y pulse el botn Abrir, realice


esta operacin hasta obtener la siguiente figura:
Figura 9.19 Ventana con las imgenes de la luna agregadas al Editor.

Pulse el botn Aceptar para volver nuevamente a modo diseo.

Escribir cdigo
a) Escriba el siguiente cdigo antes del primer procedimiento Sub y despus de la
creacin de la clase formulario.
Public class formulario
Dim y As Integer
Dim interruptor As Integer
Private sub ..

Se declaran dos variables globales de tipo Integer para la clase formulario: y e


interruptor.
b) Seleccione el objeto formulario, d doble clic para abrir el editor del
procedimiento Formulario_Load y escriba el siguiente cdigo:
y=1
imagen.Image = listadeimagenes.Images.Item(0)
y=2

Se inicializa la variable y en uno (1), posteriormente se le asigna a la propiedad


Image del control PictureBox imagen la imagen que se encuentra en la posicin cero
(0) de la lista de imgenes del control Imagelist listadeimagenes. Por ltimo se le
asigna a la variable y el valor de dos (2).
c) Despus de una instruccin End Sub escriba el siguiente procedimiento:
Private Sub rotar()
y=y+1

183

If y = 7 Then y = 1
imagen.Image = listadeimagenes.Images.Item(y)
End Sub

Este procedimiento permitir ir incrementando la variable y en 1. Cuando la


variable y tenga el valor de 7, a esta se le asignar el valor de 1, en caso contrario se le
asigna a la propiedad Image del control PictureBox imagen la imagen que se encuentra
en la posicin del valor de la variable y.
d) Seleccione el objeto boton, d doble clic para abrir el editor del procedimiento y
escriba el siguiente cdigo:
If interruptor = 0 Then
boton.Text = "Parar"
interruptor = 1
Else
boton.Text = "Girar"
interruptor = 0
End If

Se pregunta si el valor de la variable interruptor es igual a cero (0). Si esto es


verdad se le asigna a la propiedad Text del objeto boton el texto Parar y a la variable
interruptor se le asigna el valor de uno (1). En caso contrario, se le asigna a la
propiedad Text del objeto boton el texto Girar y a la variable interruptor se le asigna
el valor de cero (0).
e) Seleccione el objeto reloj, d doble clic para abrir el editor del procedimiento y
escriba el siguiente cdigo:
If interruptor = 1 Then
rotar()
End If

Se pregunta si el valor de la variable interruptor es igual a uno (1). Si esto es


verdad se llamara al procedimiento rotar () y realizar las tareas all programadas.

Ejecutar el proyecto

Al ejecutar el proyecto y pulsando el botn Girar, se simulara la rotacin de la luna.


Esto sucede debido a que cada segundo se le asignar al objeto imagen una nueva
figura de la luna es una secuencia diferente.
Figura 9.20 Ejecucin aplicacin RotacionImagenes.

184

3) Crear una aplicacin llamada MoverTextoAleatorio que permita a un usuario al


pulsar un botn visualizar la impresin de un texto en un formulario aleatoriamente.
Adems otros dos botones que realicen las siguientes operaciones: el primero debe
permitir limpiar el formulario y el segundo detener la impresin del texto.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas adicione al formulario los siguientes controles: 1


Timer, 3 Button.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 9.8 Propiedades de los controles de la aplicacin MoverTextoAleatorio.
Control
Button1
Button2
Button3
Form1
Timer1

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Interval

Valor
botontexto
Texto aleatorio.
botonlimpiar
Limpiar formulario.
botondetener
Detener impresin
Formulario
Texto aleatorio.
reloj
1000

Figura 9.21 Interfaz de usuario MoverTextoAleatorio.

185

Escribir cdigo
a) Escriba el siguiente cdigo antes del primer procedimiento Sub y despus de la
creacin de la clase formulario.
Public class formulario
Dim grafica As Graphics
Dim valorx, valory As Integer
Dim fuente As New System.Drawing.Font("Arial", 14, FontStyle.Bold)
Private sub ..

Se declaran cuatro variables globales: grafica de tipo Graphics, valorx y valory


de tipo Integer y fuente a la cual se le asigna espacio de memoria de tipo Font y recibe
como parmetros: el nombre de la letra, el tamao de la letra y el estilo de la letra.
b) Seleccione el objeto formulario, d doble clic para abrir el editor del
procedimiento Formulario_Load y escriba el siguiente cdigo:
grafica = Me.CreateGraphics

Se le asigna la funcin CreateGraphics a la variable grafica con el fin de poder


crear grficos.
c) Seleccione el objeto botontexto, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
reloj.Enabled = True

d) Seleccione el objeto botonlimpiar, d doble clic para abrir el editor del


procedimiento y escriba el siguiente cdigo:
grafica.Clear(Me.BackColor)

Se le asigna la funcin Clear a la variable grafica para limpiar el formulario con


el fondo actual.
e) Seleccione el objeto botondetener, d doble clic para abrir el editor del
procedimiento y escriba el siguiente cdigo:
reloj.Enabled = False

f) Seleccione el objeto reloj, d doble clic para abrir el editor del procedimiento y
escriba el siguiente cdigo:
Randomize()
valorx = Int(Rnd() * 200)
valory = Int(Rnd() * 200)
grafica.DrawString("Texto en movimiento aleatorio", fuente, Brushes.Blue, valorx,
valory)

El procedimiento Ramdomize permite generar nmeros aleatorios. A las


variables valorx y valory se les asigna el valor entero de un nmero aleatorio (Rnd ())
multiplicado por 200 (genera nmeros aleatorios entre 1 0 y 200). Con la funcin
DrawString se imprime el texto. Recibe como parmetros: el texto a imprimir, la
186

fuente, el color de la fuente y las coordenadas x, y.

Ejecutar el proyecto

Al ejecutar el proyecto y pulsando el botn Texto aleatorio, se imprimir en el rea del


formulario el texto asignado cada segundo. Se podra obtener una figura similar a la
siguiente:
Figura 9.22 Ejecucin aplicacin MoverTextoAleatorio.

9.5 Ejercicios de grficos


1. Escribir un programa que dibuje diez crculos concntricos. Los crculos deben
estar separados por 5 pxeles utilizando DrawEllipse.
2. Realizar un programa que dibuje lneas de longitud y color aleatorio.
3. Disear un programa que dibuje un espiral utilizando DrawArc.
4. Hacer un programa que dibuje 10 palabras con fuente aleatoria de diferente
tamao.
5. Elaborar un programa que capture una palabra e imprima dicha palabra en forma
aleatoria y de diferente color.
6. Escribir un programa que dibuje un tablero de ajedrez.
7. Realizar un programa que dibuje un cubo.
8. Crear un programa que capture el nmero de tringulos que deben dibujarse.
Dicho tringulos deben ser de diferente color.
9. Disear un programa que lea un par de coordenadas, el radio y dibuje el crculo,
adems, de imprimir el dimetro, la circunferencia y el rea del crculo.
10. Hacer un programa que simule un protector de pantalla. El programa deber
dibujar 50 lneas al azar y despus limpiar la pantalla y viceversa.

187

10. MANEJO DE EVENTOS (MOUSE TECLADO)


Cuando un control u objeto realiza una accin se genera un evento. En los ejercicios de
los captulos anteriores donde se ha utilizado el control Button se ha programado
cdigo para que realice una operacin especfica en el evento clic. Cuando un control
genera un evento, un manejador de eventos vinculado al control se encarga de analizar
que evento ocurri para responder al mismo ejecutando el mtodo adecuado. El
manejador de eventos suele ser llamando delegado y es un objeto de la clase
EventHandler del espacio de nombres System y para los datos del evento se utiliza la
clase EventArgs del espacio de nombres System. Por ejemplo, si se desea controlar un
evento MouseUp en una aplicacin Windows Forms, la clase de datos de evento es
MouseEventArgs y el delegado de evento es MouseEventHandler
Existen eventos estticos o dinmicos. Los controladores de eventos estticos
son efectivos durante toda la vida de la clase cuyos eventos controlan. Los controladores
de eventos dinmicos se activan y desactivan durante la ejecucin de un programa,
normalmente en respuesta a alguna lgica condicional del programa. El mtodo
AddEventHandler agrega controladores de eventos dinmicos y el mtodo
RemoveEventHandler los desactiva. Cada lenguaje proporciona tambin sus propias
caractersticas para controlar eventos de forma dinmica.
10.1 Eventos del mouse
Un evento de mouse ocurre cuando el usuario interacta con el mouse (o dispositivo
similar) para interactuar con un objeto. Los eventos mouse ocurren cuando el cursor
entra o sale del rea de pantalla de un objeto, o cuando el usuario pulsa o libera el botn
del mouse. La mayora de los controles de Visual Basic .NET contiene los siguientes
procedimientos para el manejo de eventos del mouse:

MouseClick: se invoca cuando se da clic con el mouse.


MouseDoubleClick: se invoca cuando se da doble clic con el mouse.
MouseDown: se invoca cuando se pulsa el botn del mouse sobre un control.
MouseEnter: se invoca cuando el mouse entra a lmites de un control.
MouseHover: se invoca cuando el mouse pasa cerca de un control.
MouseLeave: se invoca cuando el mouse esta por fuera de los lmites de un control.
MouseMove: se invoca cuando el mouse se mueve por un control que tiene el foco.
MouseUp: se invoca cuando se suelta el botn del mouse sobre un control.
MouseWheel: se invoca cuando se desplaza la rueda del mouse. Se usa el
argumento Delta. Cuando el desplazamiento de la rueda es hacia arriba tiene un
valor entero de 120 y hacia atrs un valor de -120.
Las propiedades ms comunes para el manejo de eventos del mouse son:
Button: especifica el botn del mouse que fue pulsado.
Clicks: especifica el nmero de veces que un botn del mouse fue pulsado y
soltado.
Location: especifica la localizacin del mouse.
X: la coordenada x del clic del mouse.
Y: la coordenada y del clic del mouse.

188

10.2 Ejercicios de eventos del mouse


1) Elaborar una aplicacin llamada MoverBotonMouse que permita a un usuario mover
un botn con el mouse. Al soltar el mouse se debe imprimir las coordenadas X y Y
donde quedo el botn.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas adicione al formulario los siguientes controles: 1


Label, 1 Button.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 10.1 Propiedades de los controles de la aplicacin MoverBotonMouse.
Control
Button1
Label1
Form1

Propiedad
Name
Text
Name
Text
Font - Bold
Name
Text

Valor
boton
Control.
lbltexto
Texto
True
formulario
Eventos mouse mover control.

Figura 10.1 Interfaz de usuario MoverBotonMouse.

Escribir cdigo
a) Escriba el siguiente cdigo antes del primer procedimiento Sub y despus de la
creacin de la clase formulario.
Public class formulario
Dim mover As Boolean = False
Dim primeravez As Boolean = False
Dim valorx = 0
Dim valory = 0
Private sub ..

189

Se declaran cuatro variables globales: mover y primeravez de tipo Boolean


inicializadas en False; valorx y valory de tipo Integer inicializadas en cero (0).
b) Seleccione el objeto boton, d doble clic y escoja de la ventana superior derecha
el procedimiento boton_MouseDown y escriba el siguiente cdigo:
mover = True

Cuando se pulse el mouse sobre el botn el valor booleano de la variable mover


ser True.
c) Seleccione el objeto boton, d doble clic y escoja de la ventana superior derecha
el procedimiento boton_MouseUp y escriba el siguiente cdigo:
mover = False
primeravez = False

Cuando se suelte el mouse el valor booleano de las variables mover


primeravez ser False.

d) Seleccione el objeto boton, d doble clic y escoja de la ventana superior derecha


el procedimiento boton_MouseMove y escriba el siguiente cdigo:
If (mover = True) Then
If (primeravez = False) Then
primeravez = True
valorx = e.X
valory = e.Y
End If
lbltexto.Text = "Se arrastro y se solto en X=" & e.X + boton.Location.X - valorx & " Y="
& e.Y + boton.Location.Y - valory
boton.Location = New Point(e.X + boton.Location.X - valorx, e.Y + boton.Location.Y
valory)
End if

Si se est moviendo el mouse y es la primera vez que se realiza, entonces, la


variable primeravez toma el valor True y con el parmetro e de tipo MouseEventArgs
del procedimiento MouseMove se obtiene el valor de las coordenadas actuales X,Y y se
asignan a las variables valorx, valory respectivamente. En la propiedad Text del objeto
lbltexto se le asigna el texto "Se arrastro y se solto en X=" concatenado con el valor
resultante de la posicion de la coordenada X ms el valor de la localizacion del boton en
la posicion X menos el valor de la variable valorx unido con el texto " Y=" y el valor
resultante de la posicion de la coordenada Y ms el valor de la localizacion del boton en
la posicion Y menos el valor de la variable valory. Por ltimo, se reposiciona el botn
con las nuevas coordenadas.

Ejecutar el proyecto

Al ejecutar el proyecto y pulsando el botn Control, y arrastrndolo en el formulario a


la posicin deseada se imprimir en el objeto lbltexto las coordenadas X, Y. Se podra
obtener una figura similar a la siguiente:

190

Figura 10.2 Ejecucin aplicacin MoverBotonMouse.

2) Escribir una aplicacin llamada PintarConMouse que permita a un usuario dibujar


al mantener pulsado y mover el mouse.

Crear la interfaz de usuario

Solamente se utiliza el formulario de la aplicacin Windows Forms.

Establecer las propiedades de los objetos de la interfaz de usuario

Tabla 10.2 Propiedades de los controles de la aplicacin PintarConMouse.


Control
Form1

Propiedad
Name
Text

Valor
formulario
Dibujar con el Mouse.

Escribir cdigo
a) Escriba el siguiente cdigo antes del primer procedimiento Sub y despus de la
creacin de la clase formulario.
Public class formulario
Dim x,y as Integer
Dim moverraton As Boolean = False
Dim grafica As Graphics=Me.createGraphics
Private sub ..

Se declaran cuatro variables globales: x y y de tipo Integer, moverraton de


tipo Boolean inicializadas en False; grafica de tipo Graphics la cual se inicializa para
poder graficar.
b) Seleccione el objeto formulario, d doble clic y escoja de la ventana superior
derecha el procedimiento formulario_MouseDown y escriba el siguiente cdigo:

191

moverraton = True

True.

Cuando se pulse el mouse el valor booleano de la variable moverraton ser

c) Seleccione el objeto formulario, d doble clic y escoja de la ventana superior


derecha el procedimiento formulario_MouseUp y escriba el siguiente cdigo:
moverraton = False

False.

Cuando se suelte el mouse el valor booleano de la variable moverraton ser

d) Seleccione el objeto formulario, d doble clic y escoja de la ventana superior


derecha el procedimiento formulario_MouseMove y escriba el siguiente cdigo:
If (moverraton = True) Then
x = e.X
y = e.Y
grafica.fillRectangle(Brushes.red,x,y,6,6)
End If

Si el valor de la variable moverranton es igual a True, con el parmetro e de


tipo MouseEventArgs del procedimiento MouseMove se asigna el valor de las
coordenadas actuales X,Y a las variables x, y respectivamente. Por otro lado, se dibuja
una elipse de color rojo en las coordenadas x, y, con un ancho y alto de 6 pixeles.

Ejecutar el proyecto

Al ejecutar el proyecto y pulsando y moviendo el mouse se puede realizar un dibujo


creado por el usuario sobre el formulario. Por ejemplo, se podra dibujar la siguiente
figura:
Figura 10.3 Ejecucin aplicacin PintarConMouse.

192

10.3 Eventos del teclado


Un evento de teclado ocurre cuando el usuario interacta con dicho dispositivo. Cada
vez que el usuario pulsa o suelta una tecla se genera un evento de teclado. Los eventos
del teclado son KeyPress, KeyDown y KeyUp. El evento KeyPress recibe la
informacin en un argumento de tipo System.Windows.Forms.KeyPressEventArgs,
el cual contiene mtodos y propiedades para saber si el evento ha sido manejado
(handled) o devuelve el caracter de la tecla pulsada (KeyChar), este evento es til
cuando se desea obtener el caracter que fue pulsado, por ejemplo, para manejar la tecla
Enter. El evento KeyDown se invoca al pulsar una tecla y el evento KeyUp se invoca
al soltar una tecla, ambos reciben informacin por medio de un argumento de tipo
System.Windows.Forms.KeyEventArgs, por ejemplo, Alt que indica si se presion la
tecla "alt" anlogamente se comportan las propiedades Control, Shift, etc.
10.4 Ejercicios de eventos del teclado
1) Disear una aplicacin llamada ColorTeclado que permita a un usuario que al
mantener pulsada una tecla se visualice un color predefinido. Si se pulsa la tecla A se
mostrar el color Azul, la tecla R el color Rojo y la tecla N el color Negro.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas adicione al formulario los siguientes controles: 1


Label, 1 PictureBox.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 10.3 Propiedades de los controles de la aplicacin ColorTeclado.
Control
PictureBox1
Label1
Form1

Propiedad
Name
BorderStyle
Name
Text
Font - Bold
Name
Text

Valor
pintura
Fixed3D
lbltexto
Texto
True
formulario
Color al pulsar una tecla.

Figura 10.4 Interfaz de usuario ColorTeclado.

193

Escribir cdigo
a) Seleccione el objeto formulario, d doble clic y escoja de la ventana superior
derecha el procedimiento formulario_KeyDown y escriba el siguiente cdigo:
If e.KeyCode = Keys.A Then
pintura.BackColor = Color.Blue
lbltexto.Text = "La tecla pulsada fue la: " + Convert.ToChar(e.KeyValue)
End If
If e.KeyCode = Keys.R Then
pintura.BackColor = Color.Red
lbltexto.Text = "La tecla pulsada fue la: " + Convert.ToChar(e.KeyValue)
End If
If e.KeyCode = Keys.N Then
pintura.BackColor = Color.Black
lbltexto.Text = "La tecla pulsada fue la: " + Convert.ToChar(e.KeyValue)
End If

Se utiliza la propiedad KeyCode (obtiene el cdigo de la tecla pulsada) del


argumento e de tipo keyEventArgs para determinar si la tecla pulsada es igual a una
tecla especifica (enumeracin Keys.(tecla)). Si se cumple la condicin se le asignar al
objeto pintura en su propiedad BackColor el color correspondiente. Por otro lado, se
le asignar a la propiedad Text del control lbltexto el texto La tecla pulsada fue la:
unido al nombre de la tecla ( KeyValue obtiene el valor de la tecla). Se utiliza la
funcin ToChar de la clase Convert para realizar la conversion de la tecla pulsada.
b) Seleccione el objeto formulario, d doble clic y escoja de la ventana superior
derecha el procedimiento formulario_KeyUp y escriba el siguiente cdigo:
pintura.BackColor = Me.BackColor

Al soltarse la tecla pulsada se le asignar al objeto pintura el fondo actual del


control.

Ejecutar el proyecto

Al ejecutar el proyecto y manteniendo pulsado la tecla N, se obtendra la siguiente


figura:
Figura 10.5 Ejecucin aplicacin ColorTeclado.

194

2) Crear una aplicacin llamada DetectarTecla que permita a un usuario escribir en una
primera caja de texto solo nmeros y en una segunda caja de texto solo letras. Adems
se debe permitir eliminar lo tecleado en la respectiva caja de texto, como tambin al
pulsar la tecla Enter en la primera caja de texto, se deber enviar el foco a la segunda
caja de texto.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas adicione al formulario los siguientes controles: 2


Label, 2 TextBox.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 10.4 Propiedades de los controles de la aplicacin DetectarTecla.
Control
TextBox1
TextBox2
Label1
Label2
Form1

Propiedad
Name
Name
Name
Text
Name
Text
Name
Text

Valor
txtnumero
txtletra
lblnumero
Dgite solo nmeros:
lblletra
Dgite solo letras:
formulario
Detectar tecla pulsada.

Figura 10.6 Interfaz de usuario DetectarTecla.

Escribir cdigo
a) Seleccione el objeto txtnumero, d doble clic y escoja de la ventana superior
derecha el procedimiento txtnumero_KeyPress y escriba el siguiente cdigo:
If (Asc(e.KeyChar)) >= 48 And (Asc(e.KeyChar)) <= 57
Or (Asc(e.KeyChar)) =Keys.Back Or (Asc(e.KeyChar)) =Keys.Enter Then
e.Handled = False
Else
MsgBox("Solo se pueden digitar nmeros", MsgBoxStyle.Information)
e.Handled = True

195

End If
If (e.KeyChar = Convert.ToChar(Keys.Enter)) Then
txtletra.Focus()
End If

Se utiliza la funcin Asc para determinar el valor Ascci del carcter pulsado
obtenido de la propiedad KeyChar. Los nmeros de 0 a 9 se encuentran en el rango
Ascci entre 48 y 57. Tambin se determina el valor cuando de pulsa la tecla Back
(retroceso) y Enter. Si la condicin es verdadera se establece que se controlo el evento
y por consiguiente se debe procesar (e.Handled = False). En caso contrario no se
procesa el evento y se mostrar en un cuadro de dilogo MsgBox el mensaje Solo se
pueden dgitar nmeros. Por otro lado, al pulsarse la tecla Enter se enviar el cursor
al objeto txtletra el cual es realizado con la funcin Focus().
b) Seleccione el objeto txtletra, d doble clic y escoja de la ventana superior
derecha el procedimiento txtletra_KeyPress y escriba el siguiente cdigo:
If (Asc(e.KeyChar)) >= 65 And (Asc(e.KeyChar)) <= 90 Or
(Asc(e.KeyChar)) >= 97 And (Asc(e.KeyChar)) <= 122 Or
(Asc(e.KeyChar)) = Keys.Back Then
e.Handled = False
Else
MsgBox("Solo se pueden digitar letras", MsgBoxStyle.Information)
e.Handled = True
End If

Se utiliza la funcin Asc para determinar el valor Ascci del carcter pulsado
obtenido de la propiedad KeyChar. Las letras minsculas se encuentran en el rango
Ascci entre 97-122 y las letras maysculas en el rango 65 - 90. Tambin se determina el
valor cuando de pulsa la tecla Back. Si la condicin es verdadera se establece que se
controlo el evento y por consiguiente se debe procesar (e.Handled = False). En caso
contrario no se procesa el evento y se mostrar en un cuadro de dilogo MsgBox el
mensaje Solo se pueden dgitar letras.

Ejecutar el proyecto

Al ejecutar el proyecto y digitarse en el objeto txtnumero un nmero se obtendr la


siguiente figura:
Figura 10.7 Ejecucin aplicacin DetectarTecla.

196

Si a continuacin se trata de digitar cualquier tecla diferente de un nmero se


visualizar el siguiente cuadro de mensaje.
Figura 10.8 Mensaje cuando no se escribe un nmero en el objeto txtnumero.

Tambin se mostrar un mensaje si se trata de digitar algo diferente de letras en


el objeto txtletras. Cuando se termina de digitar los nmeros y se pulsa la tecla Enter,
se podr digitar las letras en el control txtletras.
Figura 10.9 Formulario con nmeros y letras.

197

11. PROGRAMACIN ORIENTADA A OBJETOS CON VB.NET


La Programacin orientada a objetos (P.O.O) es un modelo de programacin que utiliza
objetos para simular el mundo real. La P.O.O. encapsula datos (atributos) y mtodos
(comportamientos) en objetos. En la P.O.O. se utilizan los siguientes conceptos:
Objeto: Entidad (forma) provista de datos (propiedades, atributos) y
comportamientos (funcionalidad, programas, mtodos). Corresponden a los
objetos reales del mundo que nos rodea.
Clase: Conjunto de objetos donde se definen atributos para almacenar datos y
crear operaciones para manejar dichos datos. En los ejemplos realizados ya se
han utilizado clases, por ejemplo, cada vez que se ha arrastrado un control
Button hacia un formulario se ha creado una instancia de la clase Button. En
Visual Basic .NET tambin es posible crear una instancia de un control
utilizando la palabra clave New. Para una instancia de la clase TextBox se
debera escribir el siguiente cdigo:
Dim nuevacajadetexto As New TextBox

Herencia: Es la capacidad de crear nuevas clases a partir de clases existentes,


en otras palabras, es la capacidad de obtener el comportamiento de una clase
definida. Admite la reutilizacin de cdigo porque solo se debe codificar el
comportamiento de las nuevas clases.
Encapsulacin: Tambin llamada "ocultacin de la informacin". Asegura que
los objetos no pueden cambiar el estado interno de otros objetos de manera
inesperada; solamente los propios mtodos internos del objeto pueden acceder a
su estado. Cada tipo de objeto expone una interfaz a otros objetos que especifica
cmo otros objetos pueden interactuar con l.
Abstraccin: Conjunto de funciones que proporcionan el comportamiento
fundamental de una clase para su utilizacin. La abstraccin se garantiza
mediante la encapsulacin.
Polimorfismo: Es la posibilidad de definir numerosas clases que implementan
los mismos mtodos con diferente funcin.
Mtodo: Es un programa asociado a un objeto (o a una clase de objetos), cuya
ejecucin se desencadena mediante un "mensaje".
Mensaje: Una comunicacin dirigida a un objeto, que le ordena que ejecute uno
de sus mtodos con ciertos parmetros.
Propiedad, atributo o variable: Datos asociados a un objeto o a una clase de
objetos.

Entonces la P.O.O. expresa un programa como un conjunto de objetos, que se


comunican entre ellos para realizar tareas; Siendo un objeto una unidad que contiene
datos y mtodos que operan sobre esos datos. Los objetos tienen la propiedad de
ocultamiento de la informacin, esto significa que los objetos saben comunicarse entre
s a travs de interfaces (normalmente no se permite que un objeto sepa cmo estn
implementados otros objetos). Los objetos pueden ser activados mediante la recepcin
de mensajes. Un mensaje es simplemente una peticin para que un objeto se comporte
de una determinada manera, ejecutando un mtodo. La tcnica de enviar mensajes se
conoce como paso de mensajes.
Una clase es un tipo definido por el usuario que determina las estructuras de
datos y las operaciones asociadas con ese tipo. Cada vez que se construye un objeto de
198

una clase, se crea una instancia de esa clase. En general, los trminos objetos e
instancias de una clase se pueden utilizar indiferentemente. Una clase es una coleccin
de objetos similares y un objeto es una instancia de una definicin de una clase.
Para declarar una clase se utiliza la palabra reservada Class seguida del nombre
de la clase y el cuerpo de la misma, terminndose con End Class. El cuerpo de la clase
incluye los atributos y los mtodos.
Class Alumno
Cuerpo de clase (Atributos y mtodos)
End Class

Toda clase debe contener una definicin de variables o mtodos precedida por
un modificador de acceso a los miembros; los modificadores de acceso a miembros
pueden aparecer varias veces y en cualquier orden en una definicin de una clase. Los
modificadores de acceso de Visual Basic.NET son: public (pblico), private (privado)
y protected (protegido). Cuando un miembro de una clase tiene el especificador public,
ese miembro puede ser accedido por cualquier parte del programa. Cuando un miembro
es protected, ese miembro puede ser utilizado para realizar la herencia. Cuando un
miembro es private, ese miembro slo puede ser accedido por otros miembros de la
misma clase. Cuando no se utiliza ningn especificador de acceso, por defecto los
miembros de una clase son pblicos.
Los datos o variables definidos en una clase se llaman variables de instancias.
El cdigo est contenido en los mtodos. Los mtodos y las variables de instancias
definidas en una clase son los miembros de la clase.
Class Alumno
variables de instancias
Private nombre_alumno As String
Private asignatura As String
Private curso As integer
mtodos o procedimientos
Public Sub obtenerNombre(nombre As String)
Tareas del metodo
End Sub
Public Function obtenerCurso(curso As Integer) As Integer
Tareas del metodo
End Function
..
End Class

11.1 Constructores
Se llama Constructor a un procedimiento con nombre New el cual se inicializa
automticamente cuando se crea un objeto de la clase. Los constructores pueden recibir
argumentos pero no pueden devolver valores.
11.1.1 Constructores sin parmetros
En algunos casos es necesario crear varios objetos que se inicialicen siempre con
valores predeterminados, es decir cada vez que se cree un nuevo objeto este se

199

inicializara con los mismos valores.


Class Alumno
Private nombre_alumno As String
Private asignatura As String
Private curso As integer
Public Sub New()
Nombre_alumno=
asignatura=
curso=0
End Sub
Public Function obtenerNombre(nombre As String) As String
return nombre
End Function
Public Function obtenerCurso(curso As Integer) As Integer
return curso
End Function
End Class

11.1.2 Constructores con parmetros


Existen casos en que es necesario crear varios objetos que se inicialicen con diferentes
valores, como se puede apreciar, en el ejemplo anterior cada vez que se crea un nuevo
objeto este se inicializara con los mismos valores, la solucin es crear un constructor
que tenga parmetros.
Class Alumno
Private nombre_alumno As String
Private asignatura As String
Private curso as integer
Public Sub New(nombre As String, asig As String, numero As Integer)
nombre_alumno=alumno
asignatura=asig
curso=numero
End Sub
Public Function obtenerNombre(nombre As String) As String
return nombre
End Function
Public Function obtenerCurso(curso As Integer) As Integer
return curso
End Function
..
End Class

11.1.3 Sobrecarga de constructores


La sobrecarga de constructores se refiere a la creacin de mtodos constructores con el
mismo nombre pero con diferente lista de parmetros en la misma clase. Cuando invoca
un constructor sobrecargado, Visual Basic .NET utiliza como apoyo el nmero de
parmetros como gua para determinar la versin del constructor sobrecargado que
realmente debe llamar. Adems, de la sobrecarga de constructores, tambin es posible
realizar la sobrecarga con otros mtodos. De hecho las clases que se implementan en la
realidad, la sobrecarga de constructores es la norma y no la excepcin.

200

Class Alumno
Private nombre_alumno As String
Private asignatura As String
Private curso As Integer
Public Sub New(nombre As String, asig As String, numero As Integer)
nombre_alumno=alumno
asignatura=asig
curso=numero
End Sub
Public Sub New(nombre As String, asig As String)
nombre_alumno=alumno
asignatura=asig
curso=0
End Sub
Public Function obtenerNombre(nombre As String) As String
return nombre
End Function
Public Function obtenerCurso(curso As Integer) As Integer
return curso
End Function
..
End Class

11.2 Herencia y polimorfismo


La herencia es la posibilidad de crear una nueva clase a partir de una clase existente, la
clase nueva hereda todos los atributos y comportamientos de una clase existente. En la
nueva clase se pueden agregar atributos y comportamientos o supeditar los
comportamientos de la superclase a fin de adaptar la clase a las nuevas necesidades.
El polimorfismo permite escribir programas para manejar una amplia variedad
de clases interrelacionadas existentes y por especificar.
Al crear una nueva clase (clase derivada), en lugar de escribir variables y
mtodos totalmente nuevos, el programador puede indicar que la nueva clase puede
heredar las variables y los mtodos de una superclase (clase base) previamente definida.
Para poder acceder a las variables de la superclase estas previamente deben estar
con el modificador de acceso protected o public:
Estudiante
Estgraduado

//clase base
Estlicenciado //clases derivadas

En Visual Basic .NET la palabra reservada Inherits permite realizar la herencia


de una clase.
Class Notas
Inherits Alumno
Cuerpo clase..
End class

El anterior cdigo define la subclase Notas que hereda (Inherits) las


propiedades y atributos de la clase Alumno.
Se utiliza la palabra clave MyBase para llamar a procedimientos de una clase
heredada (base).

201

11.3 Ejemplos prcticos de clases


1) Realizar una aplicacin llamada Constructores que permita a un usuario digitar el
ancho, el alto y la profundidad de una caja y obtener su volumen utilizando clases.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas agregue al formulario los siguientes controles: 2


Button, 4 TextBox y 4 Label.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 11.1 Propiedades de los controles de la aplicacin Constructores.
Control
Button1
Butto2
Label1
Label2
Label3
Label4
TextBox1
Textbox2
TextBox3
TextBox4
Form1

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Name
Name
Name
Name
Text

Valor
botoncsp
Constructor sin parmetros
botonccp
Constructor con parmetros
lblalto
Alto de la caja:
lblancho
Ancho de la caja:
lblprofundidad
Profundidad de la caja:
lblvolumen
Vlumen de la caja:
txtalto
txtancho
txtprofundidad
txtvolumen
formulario
Vlumen de una caja con clases.

El formulario se visualizara como muestra la siguiente figura:


Figura 11.1 Interfaz de usuario Constructores.

202

Agregar nueva Clase

Para crear una nueva clase puede realizar alguno de los siguientes pasos:
1. Del men Proyecto seleccione Agregar clase
(Agregar Nuevo Elemento) seleccionar Agregar clase
2. Del icono
3. En el Explorador de soluciones situarse en el nombre del proyecto, dar clic
derecho, seleccionar la opcin Agregar y escoger clase
Con cualquiera de las tres opciones se visualizar la siguiente figura:
Figura 11.2 Ventana para agregar una nueva clase.

En el cuadro de texto Nombre, cambie el nombre a la clase por Miclase, luego


pulse el botn Agregar para visualizar un nuevo mdulo de clase en el editor de cdigo
y en la lista del explorador de soluciones aparece un nuevo archivo con el nombre de
la clase.
Figura 11.3 Editor de cdigo de la clase Miclase.

Escribir cdigo para la clase


a) Entre las instrucciones Public Class Miclase y End Class, escriba el siguiente
cdigo:
Private alto, ancho, profundidad As Double

203

Se declaran tres variables (alto, ancho, profundidad) para guardar los valores
digitados por el usuario respectivamente. Adems se declaran como privadas para que
puedan ser modificadas nicamente por la clase.
Public Sub New(ByVal altoc As Double, ByVal anchoc As Double, ByVal profc As
Double)
alto = altoc
ancho = anchoc
profundidad = profc
End Sub

Se crea un constructor con parmetros que recibe los tres valores digitados por el
usuario en los objetos txtalto, txtancho y txtprofundidad y se asignan a las tres
variables privadas de la clase respectivamente.
Public Sub New()
alto = 0
ancho = 0
profundidad = 0
End Sub

Se crea un constructor sin parmetros, este inicializa las tres variables privadas
de la clase en cero (0).
Public Sub iniciarvariables(ByVal altoc As Double, ByVal anchoc As Double, ByVal
profc As Double)
alto = altoc
ancho = anchoc
profundidad = profc
End Sub

Se crea un procedimiento Sub con parmetros que recibe los tres valores
digitados por el usuario en los objetos txtalto, txtancho y txtprofundidad y se asignan
a las tres variables privadas de la clase respectivamente. Este procedimiento es utilizado
por el constructor sin parmetros.
Public Function volumencaja() As Double
Return alto * ancho * profundidad
End Function

Se crea un procedimiento Function sin parmetros que no recibe valores y que


retorna un valor double. En este caso con la palabra clave Return retorna el valor
resultante de multiplicar el alto por el ancho por la profundidad de la caja.

Escribir cdigo para los botones


a) Seleccione el objeto botoncsp, d doble clic para abrir el editor del
procedimiento botoncsp_Click y escriba el siguiente cdigo:
Dim instanciaMiclase As New Miclase
instanciaMiclase.iniciarvariables(txtalto.Text, txtancho.Text, txtprofundidad.Text)
txtvolumen.Text = instanciaMiclase.volumencaja

Primero se crea una instancia de tipo Miclase llamada instanciaMiclase. Se


llama al procedimiento iniciarvariables por intermedio de la instancia de la clase y se
le envan los valores digitados en las cajas de texto txtalto, txtancho, txtprofundidad.
204

A la propiedad Text del objeto txtvolumen se le asigna el valor que retorne el


procedimiento volumencaja de la clase Miclase.
b) Seleccione el objeto botonccp, d doble clic para abrir el editor del
procedimiento botoncsp_Click y escriba el siguiente cdigo:
Dim instanciaMiclase As New Miclase(txtalto.Text, txtancho.Text, txtprofundidad.Text)
txtvolumen.Text = instanciaMiclase.volumencaja

Se crea una instancia de tipo Miclase llamada instanciaMiclase donde se le


envan los valores digitados en las cajas de texto txtalto, txtancho, txtprofundidad. A
la propiedad Text del objeto txtvolumen se le asigna el valor que retorne el
procedimiento volumencaja de la clase Miclase.

Ejecutar el proyecto

Al ejecutar el proyecto y digitar los valores 5, 4, 2 en la respectiva caja de texto y pulsar


el botn Constructores sin parmetros o Constructores con parmetros, se
visualizar la siguiente figura:
Figura 11.4 Ejecucin aplicacin Constructores.

2) Disear una aplicacin llamada HerenciaClases que permita a un usuario realizar lo


siguiente en tres pginas: en la primera pgina para un punto digitar dos valores para las
coordenadas X,Y y mostrar dichos valores; en una segunda pgina para un circulo
visualizar las coordenadas X,Y y poder digitar un valor para el radio del circulo y
calcular el rea; en una tercera pgina visualizar las coordenadas, X,Y, el radio y poder
digitar la altura y calcular el rea y el volumen del cilindro utilizando herencia.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas agregue al formulario un control TabControl.

205

Figura 11.5 Formulario con el control TabControl.

Seleccione el objeto TabControl y de clic sobre la flecha que aparece en la


parte superior derecha para ver la ventana de Tareas de TabControl.
Figura 11.6 Ventana Tareas de TabControl.

Pulse la opcin Agregar ficha para visualizar la siguiente figura:


Figura 11.7 Control TabControl con una nueva ficha.

Con el objeto TabControl seleccionado busque la propiedad TabPages en el


cuadro de propiedades.

206

Figura 11.8 Propiedad TabPages del control TabControl.

D clic sobre
coleccin TabPage.

al frente de la propiedad TabPages para ver el Editor de la

Figura 11.9 Editor de la coleccin TabPage.

Sitese en la ficha TabPage1 y busque la propiedad Text en la ventana


propiedades de TabPage1, cambie el texto que all aparece por Puntos, se visualizara
la siguiente figura:

207

Figura 11.10 Propiedad Text de TabPage1 modificada.

Realice la misma operacin para TabPage2 y TabPage3, en la propiedad Text


escriba Crculo y Cilindro respectivamente. Se obtiene la siguiente figura:
Figura 11.11 Fichas del control TabControl modificadas.

Seleccione la ficha llamada Puntos y agrguele los siguientes controles: 1


Button, 3 TextBox y 3 Label. Despus de colocar los controles u objetos en la ficha,
establezca las siguientes propiedades a los controles:
Tabla 11.2 Propiedades de los controles de la ficha Puntos.
Control
Button1
Label1
Label2
Label3
TextBox1
Textbox2
TextBox3

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Name
Name

Valor
botonpuntos
Clase Puntos
lblx
Dgite la coordenada X:
lbly
Dgite la coordenada Y:
lblpuntos
Los valores del Punto son (X,Y):
txtx
txty
txtpuntos

208

TabControl1
Form1

Name
Name
Text

fichas
formulario
Figuras utilizando Herencia

Figura 11.12 Interfaz usuario Ficha Puntos.

Ahora seleccione la ficha llamada Crculo y agrguele los siguientes controles:


1 Button, 5 TextBox y 5 Label. Despus de colocar los controles u objetos en la ficha,
establezca las siguientes propiedades a los controles:
Tabla 11.3 Propiedades de los controles de la ficha Crculo.
Control
Button1
Label1
Label2
Label3
Label4
Label5
TextBox1
Textbox2
TextBox3
TextBox4
TextBox5

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Name
Name
Name
Name

Valor
botoncirculo
Clase Crculo
lblcirculox
Nuevo valor de la coordenada X:
lblcirculoy
Nuevo valor de la coordenada Y:
lblradio
Dgite el valor del radio:
lblradio
Las nuevas coordenadas X,Y, y el
radio es:
lblarea
El rea es:
txtcirculox
txtcirculoy
txtradio
txtxyradio
txtarea

209

Figura 11.13 Interfaz usuario Ficha Circulo.

Por ltimo seleccione la ficha llamada Cilindro y agrguele los siguientes


controles: 1 Button, 3 TextBox y 3 Label. Despus de colocar los controles u objetos
en la ficha, establezca las siguientes propiedades a los controles:
Tabla 11.4 Propiedades de los controles de la ficha Cilindro.
Control
Button1
Label1
Label2
Label3
Label4
Label5
Label6
Label7
TextBox1
Textbox2
TextBox3
TextBox4
TextBox5
TextBox6
TextBox7

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Name
Name
Name
Name
Name
Name

Valor
botoncilindro
Clase Cilindro
lblcilindrox
Nuevo valor coordenada X:
lblcilindroy
Nuevo valor coordenada Y:
lblradiocilindro
Dgite valor radio:
lblaltura
Dgite valor altura:
lblxyradioaltura
Las coordenadas X,Y; el radio y la
altura:
lblareacilindro
Area Cilindro:
lblvolumen
Volumen Cilindro:
txtcilindrox
txtcilindroy
txtradiocilindro
txtaltura
txtxyradioaltura
txtareacilindro
txtvolumen

210

Figura 11.14 Interfaz usuario Ficha Cilindro.

Agregar Clases
a) Agregue una nueva clase, en el cuadro de texto Nombre, cambie el nombre a la
clase por Puntos, luego pulse el botn Agregar para visualizar un nuevo
mdulo de clase en el editor de cdigo y en la lista del explorador de
soluciones aparece un nuevo archivo con el nombre de la clase.

Escribir cdigo para la clase Puntos

Entre las instrucciones Public Class Puntos y End Class, escriba el siguiente cdigo:
Public Class Puntos
Private x, y As Double
Public Sub New(ByVal a As Double, ByVal b As Double)
fijapuntos(a, b)
End Sub
Public Sub fijapuntos(ByVal a As Double, ByVal b As Double)
x=a
y=b
End Sub
Public Function mostrarx() As Double
Return x
End Function
Public Function mostrary() As Double
Return y
End Function
Public Function cadena() As String
Return "[" & x & " : " & y & "]"
End Function
End Class

211

Se declaran dos variables (x, y) de tipo Double para guardar los valores
digitados por el usuario respectivamente. Adems, se declaran como privadas para que
puedan ser modificadas nicamente por la clase.
Por otro lado, se definen los siguientes procedimientos:
Constructor New: que recibe dos parmetros de tipo Double y llama al
procedimiento fijapuntos.
fijapuntos: recibe dos parmetros de tipo Double y le asigna a las variables
privadas x, y los valores recibidos respectivamente.
mostrarx: retorna el valor de la coordenada x.
mostrary: retorna el valor de la coordenada y.
cadena: retorna un valor String con los valores x, y.
b) Agregue otra nueva clase, en el cuadro de texto Nombre, cambie el nombre a la
clase por Circulo, luego pulse el botn Agregar para visualizar un nuevo
mdulo de clase en el editor de cdigo y en la lista del Explorador de
soluciones aparece un nuevo archivo con el nombre de la clase.

Escribir cdigo para la clase Circulo

Entre las instrucciones Public Class Circulo y End Class, escriba el siguiente cdigo:
Public Class Circulo
Inherits Puntos
Protected radio As Double
Public Sub New()
MyBase.new(0, 0)
fijaradio(0)
End Sub
Public Sub New(ByVal r, ByVal a, ByVal b)
MyBase.new(a, b)
fijaradio(r)
End Sub
Public Sub fijaradio(ByVal r As Double)
If r > 0.0 Then
radio = r
Else
r = 0.0
End If
End Sub
Public Function obtradio() As Double
Return radio
End Function
Public Function area() As Double
Return 3.14159 * radio * radio
End Function
Overloads Function cadena() As String
Return "Centro=" + MyBase.cadena() & "; Radio= " & radio
End Function
End Class

Se define la clase Circulo y hereda (Inherits) los atributos y comportamientos


de la clase Puntos. Tambin se declara una variable (radio) de tipo Double para
guardar el valor del radio del crculo digitado por el usuario. Adems se declara como
protegida para que pueda utilizarse en la herencia.
212

Por otro lado, se definen los siguientes procedimientos:

Un primer constructor New: que no recibe parmetros y que llama al constructor de


la clase Puntos, la cual es la clase que esta heredando (MyBase.New(0,0))
envindole dos ceros, adems se llama al procedimiento fijaradio y se enva como
parmetro un valor cero;
Un segundo constructor New: que recibe tres parmetros y que llama al constructor
de la clase Puntos (MyBase.New(a,b)) envindole los valores de a,b, tambin se
llama al procedimiento fijaradio y se enva como parmetro el valor de c;
fijaradio: recibe un parmetro de tipo Double. Si el valor de la variable recibida (r)
es mayor de cero se le asigna el valor de r a la variable radio, en caso contrario se le
asigna cero.
obtradio: retorna el valor de la variable radio.
area: retorna el valor resultante de multiplicar 3.14159 por radio al cuadrado.
cadena: retorna un valor String, con el texto Centro= unido a los valores de x, y
que se reciben del procedimiento cadena de la clase Puntos (MyBase.cadena)
concatenado con el texto Radio= y el valor de la variable radio. Obsrvese que
este procedimiento se declara como Overloads por que este nombre de
procedimiento ya existe en la clase Puntos.
c) Agregue una nueva clase, en el cuadro de texto Nombre, cambie el nombre a la
clase por Cilindro, luego pulse el botn Agregar para visualizar un nuevo
mdulo de clase en el editor de cdigo y en la lista del Explorador de
soluciones aparece un nuevo archivo con el nombre de la clase.

Escribir cdigo para la clase Cilindro

Entre las instrucciones Public Class Cilindro y End Class, escriba el siguiente cdigo:
Public Class Cilindro
Inherits Circulo
Protected altura As Double
Public Sub New(ByVal h As Double, ByVal r As Double, ByVal a As Double,
ByVal b As Double)
MyBase.new(r, a, b)
fijaaltura(h)
End Sub
Public Sub fijaaltura(ByVal h As Double)
If (h >= 0.0) Then
altura = h
Else
altura = 0
End If
End Sub
Public Function obtaltura() As Double
Return altura
End Function
Overloads Function area() As Double
Return 2 * MyBase.area() + 2 * 3.14159 * radio * altura
End Function
Public Function volumen() As Double
Return MyBase.area() * altura

213

End Function
Overloads Function cadena() As String
Return MyBase.cadena() & ";Altura = " & altura
End Function
End Class

Se define la clase Cilindro y hereda (Inherits) los atributos y comportamientos


de la clase Circulo, pero como la clase Circulo hereda de la clase Puntos, la clase
Cilindro tambin hereda todo el comportamiento de la clase Puntos. Por otro lado, se
declara una variable (altura) de tipo Double para guardar el valor de la altura del
cilindro digitado por el usuario. Adems se declara como protegida para que pueda
utilizarse en la herencia.
Por otro lado, se definen los siguientes procedimientos:

Un constructor New: que recibe cuatro parmetros y que llama al constructor de la


clase Cilindro (MyBase.New(r,a,b)) envindole los valores de r, a, b, tambin, se
llama al procedimiento fijaaltura y se enva como parmetro el valor de h;
fijaaltura: recibe un parmetro de tipo Double. Si el valor de la variable recibida
(h) es mayor de cero se le asigna el valor de h a la variable altura, en caso contrario
se le asigna cero.
obtaltura: retorna el valor de la variable altura.
area: retorna el valor resultante de multiplicar 2 por el valor recibido del
procedimiento area de la clase Circulo (MyBase.area ()) ms 2*3.14159 * radio *
altura. Este procedimiento se declara como Overloads por que este nombre de
procedimiento ya existe en la clase Circulo.
volumen: retorna el valor recibido del procedimiento area de la clase Circulo
(MyBase.area ()) multiplicado por el valor de la variable altura.
cadena: retorna un valor String, con valor devuelto por el procedimiento cadena de
la clase Circulo (MyBase.cadena ()) unido al texto Altura= y el valor de la
variable altura. Este procedimiento tambin se declara como Overloads por que
este nombre de procedimiento ya existe en las clases Circulo y Puntos.
Escribir cdigo para los botones
a) Seleccione el objeto botonpuntos, d doble clic para abrir el editor del
procedimiento botonpuntos_Click y escriba el siguiente cdigo:
Dim puntos As Puntos
Dim valorx, valory As Double
valorx = Val(txtx.Text)
valory = Val(txty.Text)
puntos = New Puntos(valorx, valory)
txtpuntos.Text = puntos.cadena()
txtcirculox.Text = puntos.mostrarx
txtcirculoy.Text = puntos.mostrary

Primero se crea una instancia de tipo Puntos llamada puntos. Se declaran las
variables valorx, valory de tipo Double y se le asigna los valores de los objetos txtx y
txty en su propiedad Text respectivamente. Se asigna espacio de memoria (New) al
objeto puntos y se le enva al constructor de la clase Puntos los valores de valorx y
valory. Por otro lado, se le asigna a la propiedad Text de los objetos txtpuntos,

214

txtcirculox y txtcirculoy respectivamente lo que retorna los procedimientos cadena,


mostrarx, mostrary de la instancia puntos.
b) Seleccione el objeto botoncirculo, d doble clic para abrir el editor del
procedimiento botoncirculo_Click y escriba el siguiente cdigo:
Dim circulo As Circulo
Dim valorx, valory, valorradio As Double
valorx = Val(txtcirculox.Text)
valory = Val(txtcirculoy.Text)
valorradio = Val(txtradio.Text)
circulo = New Circulo(valorradio, valorx, valory)
circulo.fijapuntos(valorx, valory)
circulo.fijaradio(valorradio)
txtxyradio.Text = circulo.cadena()
txtarea.Text = circulo.area()
txtcilindrox.Text = circulo.mostrarx
txtcilindroy.Text = circulo.mostrary
txtradiocilindro.Text = circulo.obtradio

Se crea una instancia de tipo Circulo llamada circulo. Se declaran las variables
valorx, valory y valorradio de tipo Double y se le asigna los valores de los objetos
txtcirculox, txtcirculoy y txtrradio en su propiedad Text respectivamente. Se asigna
espacio de memoria (New) al objeto circulo y se le enva al constructor de la clase
Circulo los valores de valorradio, valorx y valory. Adems se le enva al
procedimiento fijapuntos los valores de valorx y valory; a fijaradio el valor de
valorradio. Por otro lado, se le asigna a la propiedad Text de los objetos txtxyradio,
txtarea, txtcilindrox, txtcilindroy y txtradiocilindro respectivamente lo que retorna
los procedimientos cadena, area, mostrarx, mostrary y obtradio de la instancia
circulo.
c) Seleccione el objeto botoncilindro, d doble clic para abrir el editor del
procedimiento botoncilindro_Click y escriba el siguiente cdigo:
Dim cilindro As Cilindro
Dim valoraltura, valorradio, valorx, valory As Double
valoraltura = Val(txtaltura.Text)
valorradio = Val(txtradiocilindro.Text)
valorx = Val(txtcilindrox.Text)
valory = Val(txtcilindroy.Text)
cilindro = New Cilindro(valoraltura, valorradio, valorx, valory)
txtxyradiocilindro.Text = cilindro.cadena()
txtareacilindro.Text = cilindro.area()
txtvolumen.Text = cilindro.volumen()

Se crea una instancia de tipo Cilindro llamada cilindro. Se declaran las


variables valoraltura, valorradio, valorx y valory de tipo Double y se le asigna los
valores de los objetos txtaltura, txtradiocilindro, txtcirculox, txtcirculoy en su
propiedad Text respectivamente. Se asigna espacio de memoria (New) al objeto
cilindro y se le enva al constructor de la clase Cilindro los valores de valoraltura,
valorradio, valorx y valory. Por otro lado, se le asigna a la propiedad Text de los
objetos txtxyradiocilindro, txtareacilindro, y txtvolumen respectivamente lo que
retorna los procedimientos cadena, area y volumen de la instancia cilindro.

215

Ejecutar el proyecto

Al ejecutar el proyecto y digitar los valores 3, 2 en la ficha Puntos y pulsar el botn


Clase Puntos, se visualizar la siguiente figura:
Figura 11.15 Ejecucin aplicacin HerenciaClases.

Al pulsarse la ficha Crculo, se deben visualizar los valores de las coordenadas X, Y.


Figura 11.16 Coordenadas X, Y de la clase Puntos.

Si se digita el valor de radio 4 y se pulsa el botn Clase Circulo, se obtendr la


siguiente figura:

216

Figura 11.17 Valores de la ficha Circulo.

En este momento en la ficha Cilindro se deben visualizar los valores de las


coordenadas X, Y y el radio. Al digitarse 5 como valor de altura y pulsar el botn Clase
Cilindro, se visualizar la siguiente figura:
Figura 11.18 Valores de la ficha Cilindro.

11.4 Interfaces
Las Interfaces definen las propiedades, mtodos y eventos que pueden implementar las
clases. Se pueden agregar nuevas caractersticas en cualquier momento mediante el
desarrollo de implementaciones e interfaces adicionales. Las definiciones de interfaz se

217

encuentran dentro de las instrucciones Interface y End Interface. Despus de la


instruccin Interface, puede agregar una instruccin Inherits opcional que proporcione
una lista de una o varias interfaces heredadas. En la definicin de una interfaz deben
existir nicamente instrucciones Event, Sub, Function, Property, Interface, Class,
Structure y Enum. Las interfaces no pueden contener cdigo de implementacin. Las
interfaces se pueden definir dentro de clases, mdulos, interfaces y estructuras. De
manera predeterminada son pblicas (Public), pero tambin se pueden declarar como
Friend, Protected o Private.
La palabra clave Implements se utiliza para indicar que un miembro de una clase
implementa una interfaz especfica. Una instruccin Implements requiere una lista
separada por comas de los miembros de la interfaz que deben implementarse. La
especificacin de un miembro de interfaz consiste en el nombre de la interfaz, que debe
especificarse en una instruccin Implements junto con la clase, un punto y el nombre
del evento, propiedad o funcin que se desea implementar.
.
Ejemplo:
Interface Pelcula
Function video()
End Interface
Public class MisPeliculas implements Pelcula
:::::::::::
Public Function video implements Pelcula.video
<Cdigo..>
End Function
::::::::::::
End Class

11.5 Ejemplo prctico de interfaces


Elaborar una aplicacin llamada Interfaces que permita a un usuario digitar la base y la
altura y obtener el rea de un Rectngulo y un Tringulo utilizando interfaces.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas agregue al formulario los siguientes controles: 1


Button, 4 TextBox y 4 Label.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 11.5 Propiedades de los controles de la aplicacin Interfaces.
Control
Button1
Label1
Label2
Label3

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text

Valor
botonarea
Calcular Area
lblbase
Dgite Base:
lblaltura
Dgite Atura:
lblareatriangulo
Area del Tringulo (b*a):

218

Label4
TextBox1
Textbox2
TextBox3
TextBox4
Form1

Name
Text
Name
Name
Name
Name
Name
Text

lblarearectangulo
Area del Rectngulo ((b*a)/2):
txtbase
txtaltura
txtareatriangulo
txtarearectangulo
formulario
Interface Area Tringulo/Rectngulo

El formulario se visualizara como muestra la siguiente figura:


Figura 11.19 Interfaz de usuario Interfaces.

Agregar Interface

Para crear una interface puede realizar alguno de los siguientes pasos:
4. Del men Proyecto seleccione Agregar nuevo elemento- Interfaz.
5. Del icono
seleccionar Agregar nuevo elemento Interfaz.
6. En el Explorador de soluciones situarse en el nombre del proyecto, dar clic
derecho, seleccionar la opcin Agregar nuevo elemento - Interfaz.
Con cualquiera de las tres opciones se visualizar la siguiente figura:
Figura 11.20 Ventana para agregar una Interface.

219

En el cuadro de texto Nombre cambie el nombre a la interfaz por


interfacefigura, luego pulse el botn Agregar para visualizar una nueva interfaz en el
editor de cdigo y en la lista del Explorador de soluciones aparece un nuevo archivo
con el nombre de la interfaz.
Figura 11.21 Editor de cdigo de la Interface interfacefigura.

Escribir cdigo para la Interface

Entre las instrucciones Public Interface y End Interface, escriba el siguiente cdigo:
Public Interface interfacefigura
Function area()
End Interface

Se define el procedimiento Function area (). Recuerde que no se pueden


implementar el procedimiento.

Agregar Clases
a) Agregue una nueva clase, en el cuadro de texto Nombre cambie el nombre a la
clase por Rectangulo, luego pulse el botn Agregar para visualizar un nuevo
mdulo de clase en el editor de cdigo y en la lista del Explorador de
soluciones aparece un nuevo archivo con el nombre de la clase.

Escribir cdigo para la clase Rectangulo

Entre las instrucciones Public Class Rectangulo y End Class, escriba el siguiente
cdigo:
Public Class Rectangulo
Implements interfacefigura
Dim base, altura As Double
Public Sub New(ByVal b As Double, ByVal a As Double)
base = b
altura = a
End Sub
Public Function area() Implements interfacefigura.area
Return base * altura
End Function
End Class

Se define la clase Rectangulo y se implementa la interfaz interfacefigura. Se


declaran dos variables (base, altura) de tipo Double para guardar los valores digitados
por el usuario respectivamente. Por otro lado, se definen los siguientes procedimientos:

220

Constructor New: que recibe dos parmetros de tipo Double y asigna dichos valores
a las variables base, altura respectivamente.
area: se implementa el procedimiento area definido en la interfaz interfacefigura
el cual retorna el resultado de multiplicar la base por la altura.
b) Agregue otra nueva clase, en el cuadro de texto Nombre cambie el nombre a la
clase por Triangulo, luego pulse el botn Agregar para visualizar un nuevo
mdulo de interfaz en el editor de cdigo y en la lista del Explorador de
soluciones aparece un nuevo archivo con el nombre de la interfaz.

Escribir cdigo para la clase Rectangulo


Public Class Triangulo
Implements interfacefigura
Dim base, altura As Double
Public Sub New(ByVal b As Double, ByVal a As Double)
base = b
altura = a
End Sub
Public Function area() Implements interfacefigura.area
Return (base * altura) / 2
End Function
End Class

Se define la clase Triangulo y se implementa la interfaz interfacefigura. Se


declaran dos variables (base, altura) de tipo Double para guardar los valores digitados
por el usuario respectivamente. Por otro lado, se definen los siguientes procedimientos:
Constructor New: que recibe dos parmetros de tipo Double y asigna dichos valores
a las variables base, altura respectivamente.
area: se reescribe el procedimiento area definido en la interfaz interfacefigura el
cual retorna el resultado de la operacin ((base *altura)/2).

Escribir cdigo para el botn.

Seleccione el objeto botonarea, d doble clic para abrir el editor del procedimiento
botonarea_Click y escriba el siguiente cdigo:
Dim triangulo As Triangulo
Dim rectangulo As Rectangulo
Dim base, altura As Double
base = txtbase.Text
altura = txtaltura.Text
triangulo = New Triangulo(base, altura)
rectangulo = New Rectangulo(base, altura)
txtareatriangulo.Text = triangulo.area
txtarearectangulo.Text = rectangulo.area

Se crean las instancias triangulo de tipo Triangulo y rectangulo de tipo


Rectangulo. Por otro se crean las variables base, altura y se le asignan los valores
digitados en las cajas de texto txtbase, txtaltura. Se asigna espacio de memoria a los
objetos triangulo y rectangulo y se enva a el respectivo constructor los valores de las
variables base y altura. A la propiedad Text de los objetos txtareatriangulo y
txtarearectangulo se le asigna el valor que retorne el procedimiento area de la
respectiva clase.
221

Ejecutar el proyecto

Al ejecutar el proyecto y digitar los valores 8,14 en la respectiva caja de texto y pulsar
el botn Calcular Area, se visualizar la siguiente figura:
Figura 11.22 Ejecucin aplicacin Interfaces.

11.6 Ejercicios P.O.O


1. Crear un programa que contenga una superclase Figura donde se herede las
figuras de rectngulos, cuadrados, tringulos y crculos. El usuario podr
escoger la posicin, la figura y los caracteres de relleno que se usarn para
dibujar cada figura.
2. Realizar un programa utilizando herencia que decida si dos nmeros son amigos.
Dos nmeros son amigos si la suma de los divisores del primer nmero,
excluido l, es igual al segundo nmero y viceversa; es decir, si la suma de los
divisores del segundo nmero, excluido l es igual al primer nmero.
3. Escribir un programa que permita capturar la hora, los minutos y los segundos
en formato de 24 horas. En una clase se deben realizar las operaciones para
retornar al programa las horas, los minutos y los segundos un segundo despus.
Nota: las horas van entre 0 y 23 y los minutos y segundos entre 0 y 59.
4. Hacer un programa utilizando herencia que lea un nmero no mayor de 1000 e
imprima ese nmero en letras.
5. Crear una clase llamada Rectangulo que contenga los atributos longitud y ancho,
cada uno de los cuales debe ser inicializado con 1. Deber contener mtodos
para calcular el permetro y el rea del rectngulo, los mtodos deben verificar
que la longitud y la altura sean nmeros flotantes entre 0.0 y 20.0. Deber
escribir un programa que permita utilizar la clase Rectangulo.
6. Elaborar un programa que dibuje lneas, rectngulos, valos al azar. Para este
fin, cree un conjunto de clases que permitan dibujar cada una de las figuras. Se
Puede utilizar instancias o herencia.
7. Disear un programa que permita capturar un nmero y por medio de clases
imprima el factorial de dicho nmero.
8. Realizar un programa que capture 10 nmeros y utilizando clases imprima el
mayor y el menor de dichos nmeros.
9. Escribir un programa que permita capturar tres valores (a, b, c) e imprima las
races de la cuadrtica utilizando clases.
10. Hacer un programa utilizando clases que permita capturar tres datos (nombre,
edad, sexo) y los guarde en un archivo de texto.
222

12. ACCESO A BASES DE DATOS CON VB.NET


Una base de datos es un sistema formado por un conjunto de datos relacionados y
almacenados en discos que permiten el acceso directo a ellos y una serie de programas
que manipulan ese conjunto de datos. Cada base de datos se compone de una o ms
tablas que guardan la informacin. Cada tabla contiene una o ms columnas y filas. Las
columnas guardan informacin sobre cada elemento que se quiere almacenar en la tabla,
cada fila conforma un registro. Donde un registro es un o una a serie de campos que
pueden contener un mismo tipo dato o tipos de datos diferentes.
12.1 Tipos de Bases de Datos.
Las bases datos ms comunes son las relacionales y existen varios sistemas de
administracin de bases de datos de ese tipo, algunos son: SQL Server, Access, Oracle,
MySQL, PostgresSQL, etc.
12.1.1 bases de datos relacionales
Las bases de datos relacionales son un conjunto de tablas relacionadas entre s, donde
cada tabla est definida por una serie de campos. Los campos forman las columnas de
las tablas. Las filas se denominan registros (tuplas), y cada tipo definido en un registro
es un atributo. Las tablas pertenecientes a una base de datos pueden relacionarse entre s
utilizando campos clave comunes entre las tablas.
12.1.2 bases de datos orientadas a objetos.
Una base de datos orientada a objetos es un conjunto de clases que definen las
caractersticas y el comportamiento de los objetos que desarrollarn la base de datos.
Con una base de datos orientada a objetos, los objetos memorizados en la base de datos
contienen los datos como tambin las operaciones posibles con dichos datos.
12.2 Lenguaje de consulta estructurado (S.Q.L.)
Es un lenguaje normalizado que es utilizado por diferentes motores de bases de datos
para realizar operaciones sobre los datos o sobre la estructura de los mismos. El
lenguaje SQL est compuesto por comandos, clusulas, operadores y funciones de
agregado. Estos elementos se combinan en las instrucciones para crear, actualizar filtrar
y eliminar tablas o datos de una base de datos.
12.2.1 Comandos S.Q.L
Los tipos de comandos SQL son:

DDL: permiten crear y definir nuevas bases de datos, tablas, campos e ndices.
DML: permiten generar consultas para ordenar, filtrar y extraer datos de la base de
datos.

223

Tabla 12.1 Comandos DDL y DML de SQL.


Comandos DDL
Comando

Descripcin

CREATE

Permite crear nuevas bases de datos, tablas, campos e ndices.

DROP

Elimina bases de datos, tablas e ndices.

ALTER

Modifica las tablas agregando campos o cambiando la definicin de los


campos.
Comandos DML

SELECT

Permite consultar registros de una base de datos que cumplan una condicin
determinada.

INSERT

Inserta datos en una base de datos en una nica operacin.

UPDATE

Actualiza o modifica los valores de los campos y registros especificados.

DELETE

Elimina registros de una tabla de una base de datos.

12.2.2 Clusulas S.Q.L


Las clusulas son operadores de modificacin que sirven para definir los datos que se
desean seleccionar o renovar.
Tabla 12.2 Clusulas SQL.
Clusula

Descripcin

FROM

Sirve para especificar el orgen de datos (tabla) de la cual se van a


seleccionar registros.

WHERE

Permite especificar condiciones que deben cumplir los registros a


seleccionar.

GROUP BY

Separa los registros seleccionados en grupos especficos.

HAVING

Expresa la condicin que debe cumplir cada grupo de registros.

ORDER BY

Ordena los registros seleccionados.

12.2.3 Operadores lgicos S.Q.L


Los operadores lgicos permiten comprobar si una(s) condicin(es) son verdaderas.
stos operadores retornan un valor Boolean TRUE o FALSE.

224

Tabla 12.3 Operadores lgicos SQL.


Operador

Uso

AND

Evala dos condiciones y devuelve un valor de verdad slo si ambas


son ciertas.

OR

Evala dos condiciones y devuelve un valor de verdad si alguna de


las dos es cierta.

NOT

Negacin lgica. Devuelve el valor contrario de la expresin.

BETWEEN

Permite especificar un intervalo de valores.

LIKE

Realiza una comparacin de un patrn.

IN

Se utiliza para describir registros de una base de datos.

ALL

Devuelve Verdadero (True) si el conjunto de comparaciones de un


origen de datos es verdad.

12.2.4 Operadores de comparacin S.Q.L


Estos operadores comprueban si dos expresiones son iguales, devolviendo un valor
booleano True o False.
Tabla 12.4 Operadores de comparacin SQL.
Operador

Uso

<

Menor que

>

Mayor que

<>

Distinto de

<=

Menor o igual que

>=

Mayor o igual que

Igual que

12.2.5 Funciones de agregado S.Q.L


Estas funciones realizan un clculo sobre un conjunto de valores y devuelven un nico
valor. Las funciones de agregado se suelen utilizar con la clusula GROUP BY de la
instruccin SELECT.
Tabla 12.5 Funciones de agregado SQL.
Funcin

Descripcin

AVG

Calcula el promedio de los valores de un campo determinado.

COUNT

Devuelve el nmero de registros de la seleccin.

SUM

Suma todos los valores nmericos de un campo determinado.

225

MAX

Obtiene el valor ms alto de un campo especificado.

MIN

Obtiene el valor ms bajo de un campo especificado.

12.3 Sentencias bsicas S.Q.L


A continuacin se realizarn ejemplos con algunas de las sentencias SQL para la
manipulacin de los datos de una tabla. Se supondr que se tiene creada una tabla
llamada usuarios que esta estructurada como se muestra a continuacin:
Tabla 12.6 Estructura de los campos de la tabla USUARIOS.
Campo
identificacion
Nombres
Apellidos
Direccin
Telfono
ciudad_nac
fecha_nac

Tipo de Dato
varchar
varchar
varchar
varchar
varchar
varchar
date

Longitud
15
20
20
25
20
20

Y que contiene la siguiente informacin:


Tabla 12.7 Informacin de la tabla usuarios.
Identificacin
100
101
112
114
116
118
130
150
170

Nombres
Carlos
Mara
Jos
Cristian
Rosa
Andrs
Anglica
Johana
Mario

Apellidos
Romero
Castro
Pelez
Vanegas
Cetina
Vanegas
Morales
Duarte
Vargas

Direccin
Cra 7 # 20-10
Calle 25 # 25-10
Av. 35 # 32-45
Cra 7 # 29-58
Calle 17 # 21-14
Tranvs 48 # 22-10
Cra 68 # 21-11
Cra 2 # 45-38
Calle 1 # 99-18

Telfono
4152584
3692581
1234567
9874561
3571596
8527419
6549518
9637534
6598743

Ciudad_nac
Bogota
Cali
Medelln
Manizales
Buga
Bogot
Medelln
Bogot
Medelln

Fecha_nac
01/02/1980
15/03/1984
20/05/1960
31/08/1974
15/12/1985
10/04/1978
20/06/1981
12/06/1988
28/08/1980

12.3.1 CREATE DATABASE


CREATE DATABASE permite crear una base de datos. Su formato es:
CREATE DATABASE <nombre_base_de_datos)

12.3.2 DROP DATABASE


DROP DATABASE permite eliminar una base de datos que previamente se haba
creado. Su formato es:
DROP DATABASE <nombre_base_de_datos_a_eliminar>

12.3.3 CREATE TABLE


CREATE TABLE permite crear una tabla. Con este comando se especifica el nombre
de la tabla, las columnas y los tipos de datos, sus claves primarias y si es necesario una
226

clave externa. Su formato es:


CREATE TABLE nombre_tabla (campo1 tipodato DEFAULT,., campo2 tipodato, DEFAULT)

La clusula DEFAULT indica la caracterstica de cada columna: NOT NULL


(no permite valores nulos), UNIQUE (dos filas no pueden tener un mismo valor en la
misma columna), PRIMARY KEY (define una columna como clave principal).
12.3.4 DROP TABLE
DROP TABLE permite eliminar una tabla que previamente se haba creado. Su
formato es:
DROP TABLE nombre_tabla

12.3.5 INSERT
INSERT permite insertar datos en una tabla. Su formato es:
INSERT INTO nombre_tabla (campo1, campo2,.) VALUES (valor1, valor2,.)

12.3.6 ALTER
SQL ALTER permite insertar un nuevo campo en una tabla. Su formato es:
ALTER TABLE nombre_tabla ADD nombre_campo tipo_de_dato ()

Para insertar un nuevo campo a la tabla usuarios llamado profesion de tipo


caracter se debera realizar la siguiente sentencia:
ALTER TABLE usuarios ADD profesion varchar (30)

12.3.7 SELECT
La instruccin de seleccin SELECT permite seleccionar datos de una tabla. Su
formato es:
SELECT campos_tabla FROM nombre_tabla

A continuacin se realizan algunos ejemplos:


a. Para visualizar toda la informacin que contiene la tabla usuarios se puede
incluir con la instruccin SELECT el carcter * o cada uno de los campos de la
tabla.
SELECT * FROM usuarios
O
SELECT identificacin, nombres,.. FROM usuarios

b. Para visualizar solamente la identificacin del usuario


SELECT identificacion FROM usuarios

227

c. Si se desea obtener los registros cuya identificacin sea mayores o iguales a 150,
se debe utilizar la clusula WHERE que especifica las condiciones que deben
reunir los registros que se van a seleccionar.
SELECT * FROM usuarios WHERE identificacin>=150

d. Si se desea obtener los registros cuyos apellidos sean Vanegas o Cetina, se debe
utilizar el operador IN que especifica los registros que se quieren visualizar de
una tabla.
SELECT apellidos FROM usuarios WHERE apellidos IN (Vanegas,Cetina)

O se puede utilizar el operador OR


SELECT * FROM usuarios WHERE apellidos=Vanegas OR apellidos=Cetina

e. Si se desea obtener los registros cuya identificacin sea menor de 110 y la


ciudad sea Cali, se debe utilizar el operador AND.
SELECT * FROM usuarios WHERE identificacin<=110 AND ciudad=Cali

f. Si se desea obtener los registros cuyos nombres empiecen por la letra A, se


debe utilizar el operador LIKE que utiliza los patrones % (todos) y _
(carcter).
SELECT * FROM usuarios WHERE nombres LIKE A%

g. Si se desea obtener los registros cuyos nombres contenga la letra a.


SELECT * FROM usuarios WHERE nombres LIKE %a%

h. Si se desea obtener los registros donde la cuarta letra del nombre sea una a.
i.
SELECT * FROM usuarios WHERE nombres LIKE ___a%

j. Si se desea obtener los registros cuya identificacin este entre el intervalo 110 y
150, se debe utilizar la clusula BETWEEN, que sirve para especificar un
intervalo de valores.
SELECT * FROM usuarios WHERE identificacin BETWEEN 110 AND 150

12.3.8 DELETE
La sentencia SQL de eliminacin de datos DELETE permite borrar todos o un grupo
especifico de registros de una tabla. Su formato es:
DELETE FROM nombre_tabla

A continuacin se realizarn algunos ejemplos:


a. Para eliminar todos los registros de la tabla usuarios.
DELETE FROM usuarios

228

b. Para eliminar solamente los registros cuya identificacin sea mayor de 180.
DELETE FROM usuarios WHERE identificacin >180

c. Para eliminar los registros diferentes del nombre Rosa


DELETE FROM usuarios WHERE nombres NOT IN (Rosa)

12.3.9 UPDATE
La sentencia SQL de actualizacin UPDATE permite actualizar un campo de una tabla.
Su formato es:
UPDATE nombre_tabla SET nombre_campo=valor

A continuacin se realizan algunos ejemplos:


a. Para actualizar el campo credito en 100000 para los registros cuyo nombre
empiecen por A.
UPDATE usuarios SET credito=credito +100000 WHERE nombres LIKE A%

b. Para actualizar el campo credito en -50000 para los registros cuya ciudad sea
igual a Buga.
UPDATE usuarios SET credito=credito-50000 WHERE ciudad=Buga

12.3.10 INNER JOIN


Permite obtener datos de 2 ms tablas. Cuando se realiza la concatenacin de las
tablas, no necesariamente se deben mostrar todos los datos de las tablas. Su formato es:
SELECT tabla1.campo, tabla2.campo, tabla1.campo2,. FROM tablaprincipal
INNER JOIN tablasecundaria ON campocomuntabla1=campocomuntabla2

Para realizar algunos ejemplos explicativos se utilizar la tabla usuarios y


adems, se supondr que se tiene otra tabla llamada pedidos, que contendr la siguiente
estructura:
Tabla 12.8 Estructura de los campos de la tabla PEDIDOS.
Campo
nropedido
identificacion
fechacompra
fechavence
observacion

Tipo de Dato
varchar
varchar
date
date
varchar

Longitud
15
15
20
25
30

Y que contiene la siguiente informacin:

229

Tabla 12.9 Informacin de la tabla pedidos.


nropedido
10
20
30
40
50
60
70
80
90

Identificacin
100
101
100
112
101
118
101
100
101

fechacompra
01/02/2006
15/03/2006
20/05/2006
31/08/2006
15/12/2006
10/04/2006
20/06/2006
12/06/2006
28/08/2006

fechavence
01/02/2006
15/03/2006
20/06/2006
31/10/2006
30/12/2006
10/06/2006
20/07/2006
12/09/2006
28/09/2006

observacion
Pago de contado
Descuento del 5%
Descuento del 2%
Pago a sesenta das
Pago de contado
Sin descuento
Descuento del 5%
Pago a noventa das
Pago de contado

a. Para visualizar los campos identificacin, nombres, apellidos de la tabla


usuarios y nropedido, fecha de compra, fecha de vencimiento y observacin de
la tabla pedidos, se debe realizar la siguiente instruccin:
SELECT
usuarios.identificacion,
usuarios.nombres,
pedidos.nropedido,
pedidos.fechacompra,
pedidos.observacion
FROM usuarios INNER JOIN pedidos
ON usuarios.identificacion = pedidos.identificacion

usuarios.apellidos,
pedidos.fechavence,

b. Para visualizar todos campos de las tablas usuarios y pedidos donde


identificacin sea mayor que 100, se debe realizar la siguiente instruccin:
SELECT usuarios.*, pedidos.*
FROM usuarios INNER JOIN pedidos
ON usuarios.identificacion = pedidos.identificacion
WHERE usuarios.identificacion>100

12.4 Conexin a bases de datos con VB.NET


Visual Basic .NET trabaj con la tecnologa ADO.NET (Activex Data Object) para el
el acceso a una base de datos utilizando los proveedores administradores de bases de
datos que funcionan en el entorno .NET. La plataforma .NET incorpora cuatro
proveedores: SQL SERVER, ORACLE, ODBC (Access), OLEDB.
ADO.NET proporciona acceso a orgenes de datos como Microsoft SQL Server
y XML, as como a orgenes de datos OLE DB y ODBC. Se puede utiliza ADO.NET
para conectar a los orgenes de datos y recuperar, manipular y actualizar los datos
contenidos.
ADO.NET es un conjunto de clases que se encuentran en el archivo
System.Data.dll y est integrada con las clases del archivo System.Xml.dll. Cuando se
compila cdigo que utiliza el espacio de nombres System.Data que hace referencia a
dichos archivos.
Sus principales clases son:
DataSet: conjunto de datos donde se pueden incluir una o ms tablas con la
informacin acerca de las relaciones entre estas, y las restricciones que puedan
tener los datos.

230

DataTable: permite la manipulacin de los datos en la memoria y realiza


operaciones como la exploracin, ordenacin, edicin, filtrado, etc.
DataView: permite representar los datos de la clase DataTable, creando
mltiples vistas de los mismos.
Los proveedores de datos proporcionan el puente entre las bases de datos y las
aplicaciones. Los principales objetos de un proveedor de datos .NET son:
Connection: sirve para establecer una conexin con una base de datos. Se utiliza
SqlConnection para una conexin a SQL Server, OleDbConnection para una
conexin a Access y OracleConnection para Oracle.
Command: sirve para ejecutar sentencias SQL y devolver resultados. Se utiliza
SqlCommand para una conexin a SQL Server, OleDbCommand para una
conexin a Access y OracleCommand para Oracle.
DataAdapter: es un adaptador de datos, el cual es un conjunto de objetos para
intercambiar datos entre una base de datos y un conjunto de datos. Se utiliza
SqlDataAdapter para una conexin a SQL Server, OleDataAdapter para una
conexin a Access y OracleDataAdapter para Oracle.
12.5 Ejemplos prcticos de bases de datos
12.5.1 Conexin a una base de datos SQL Server por cdigo
Dentro de un proyecto llamado ConexionASQLServer, realizar un programa que
permita realizar una conexin a una base de datos de SQL Server llamada
bdlibrovbnet.mdf y visualizar los registros de la tabla clientes en un control
DataGridView.
NOTA: para este ejemplo el usuario tiene que tener instalado Microsoft SQL
SERVER 2005 o posterior y crear una base de datos llamada bdlibrovbnet y dentro de
ella una tabla llamada clientes (Ver anexo A, SQL Server).

Crear la interfaz de usuario.

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 1 Button, 2 Label y 1
DataGridView.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:

231

Tabla 12.10 Propiedades de controles proyecto ConexionASQLServer.


Control
DataGridView1
Button1
Label1

Label2
Form1

Propiedad
Name
Name
Text
Name
Text
Font
Name
Text
Font
Name
Text

Valor
datos
botoncargar
Cargar registros tabla.
lblbd
Conexin a la base de datos bdlibrovbnet.mdf de SQL
SERVER.
True
lbltabla
Tabla : Clientes
True
formulario
Conexin a una base de datos SQL SERVER.

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 12.1 Interfaz de usuario ConexionASQLServer.

Escribir cdigo
a) Antes de la apertura de la clase formulario se debe importar el espacio de
nombres System.Data.SqlClient:
Imports System.Data.SqlClient
Public Class Formulario
.

End Class

El espacio de nombres System.Data.SqlClient es necesario para utilizar las


diferentes clases que permitan las operaciones con bases de datos; en este caso, SQL
Server.
b) Seleccione el objeto botoncargar, d doble clic para abrir el editor de cdigo y
escriba el siguiente cdigo:
Dim conexion As String
conexion = "Data Source=(local)\SQLEXPRESS;Database=bdlibrovbnet;
Integrated Security=True"
Dim seleccion As String = "SELECT * FROM clientes"
Dim adaptadordedatos As SqlDataAdapter
Dim tabladedatos As New DataTable

232

Try
adaptadordedatos = New SqlDataAdapter(seleccion, conexion)
adaptadordedatos.Fill(tabladedatos)
tabla.DataSource = tabladedatos
Catch ex As Exception
MsgBox("Error: " & ex.Message)
End Try

Se crea una variable llamada conexion de tipo String que contendr la cadena
de conexin a la base de datos bdlibrovbnet.mdf de SQL Server. La cadena de
conexin debe contener como mnimo los siguientes parmetros:

Data Source: Se le asigna la ruta donde se encuentra el servidor SQL Server; en


este caso, SQL Server se instalo en el computador de trabajo por lo cual el nombre
del servidor es local.
Database: Se le asigna el nombre de la base de datos a la que se quiere conectar.
Integrated Security: Se le asigna True o False para determinar si la seguridad es
integrada o no.

Luego se crean los siguientes objetos: seleccion de tipo String a la cual se le


asigna la informacin que se quiere mostrar; en este caso todos los registros de la tabla
clientes (Select * from Clientes); adaptadordedatos de tipo SqlDataAdapter el cual
ser el adaptador de datos para la base de datos a manipular; tabladedatos se le asigna
espacio de memoria de tipo DataTable para guardar los datos en memoria y poder
realizar operaciones con dichos datos. En un bloque Try se le asigna espacio de
memoria de tipo SqlDataAdapter al objeto adaptadordedatos, al cual se le enva
como parmetros los objetos seleccion (datos a mostrar) y conexion (cadena de
conexin), luego se rellena (fill) el adaptador de datos con la tabla de datos
(tabladedatos) y por ltimo al objeto datos en su propiedad DataSource se le establece
el conjunto de datos que se van a mostrar al asignrsele la tabla de datos. Por el bloque
Catch se establece un mensaje en caso de que ocurra un error.

Ejecutar el proyecto

Al ejecutarse el proyecto y pulsar el botn Cargar registros tabla, se visualizar el


formulario con los registros de la tabla clientes:
Figura 12.2 Formulario con los registros de la tabla clientes.

233

12.5.2. Conexin a SQL Server utilizando el explorador de servidores


Elaborar un proyecto llamado ConexionBDExploradorServidores y realizar un
programa que permita a un usuario realizar una conexin a una base de datos de SQL
Server y mostrar los registros de una tabla en un objeto DataGridView utilizando el
Explorador de servidores.
NOTA: para este ejemplo se utilizar la base de datos SQL Server llamada
bdlibrovbnet.mdf (Ver anexo A, SQL Server). De est base de datos se utilizar la
tabla clientes.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 1 Label y 1
DataGridView.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:


Tabla 12.11 Propiedades de los controles de ConexionBDExploradorServidores.
Control
DataGridView1
Label1

Form1

Propiedad
Name
Name
Text
Font
Name
Text

Valor
datos
lblbd
Conexin a SQL Server utilizando el
Explorador de servidores.
True
formulario
Conexin a SQL Server - Explorador de
servidores.

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 12.3 Interfaz de usuario (ConexionBDExploradorServidores).

234

Explorador de servidores

Del men Ver seleccione la opcin Explorador de servidores o pulse simultneamente


las teclas Ctrl+Alt+S, para visualizar la siguiente figura:
Figura 12.4 Ventana del Explorador de servidores.

Pulse el icono conectar con bases de datos


Agregar conexin como muestra la figura:

, para visualizar la ventana de

Figura 12.4 Ventana Agregar conexin.

En esta ventana se pueden realizar lo siguiente:

Elegir proveedor base de datos: se puede elegir el proveedor de la base de datos.


Por omisin se cargar el sistema administrador de base de datos SQL Server.
Elegir base de datos: permite elegir la base de datos a utilizar.
Probar la conexin: permite saber si una conexin ha sido exitosa o no.
Modificar la cadena de conexin: con la opcin Avanzadas se puede modificar la
235

conexin a la base de datos.


Para el ejemplo seleccione la base de datos bdlibrovbnet.mdf la cual se
encuentra en la carpeta Data de SQL Server (si la instalacin la realizo en c:\ la ruta
sera: C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data).
Figura 12.5 Ventana con la base de datos seleccionada.

Pulse el botn Aceptar para visualizar la siguiente figura:


Figura 12.6 Explorador de servidores con la conexin a una base de datos.

Al pulsar en el signo (+) al lado del nombre de la base de datos se visualizar la


estructura definida en la base de datos. Si desea ver las tablas que contiene la base de
datos pulse el signo (+) al lado de Tablas.

236

Figura 12.7 Estructura de la base de datos bdlibrovbnet.mdf.

Obtener el origen de datos para el DataGridView

Seleccione el objeto DataGridView llamado datos y en la flecha que aparece en el lado


superior derecho, d clic para visualizar las Tareas de DataGridView:
Figura 12.8 Ventana Tareas de DataGridView.

Escoja la opcin Elegir orgen de datos, para visualizar la siguiente figura:

237

Figura 12.9 Ventana Elegir orgen de datos.

D clic sobre el link Agregar orgen de datos del proyecto, se visualizar la


siguiente ventana:
Figura 12.10 Asistente para la configuracin de orgenes de datos.

Seleccione el objeto Base de datos y pulse el botn Siguiente>, para visualizar


la ventana de eleccin de la conexin de datos. Seleccione la base de datos
bdlibrovbnet.mdf:

238

Figura 12.11 Ventana Elegir la conexin de datos.

Al Seleccionar la base de datos que se va a trabajar y pulsando el botn


Siguiente> se visualizar el siguiente mensaje:
Figura 12.12 Ventana para copiar el archivo de datos al proyecto.

Pulse el botn S para copiar el archivo de datos en la carpeta en donde guard el


proyecto y se visualizar la ventana de guardar cadena de conexin:
Figura 12.13 Ventana Guardar cadena de conexin.

239

Cambie el nombre de la conexin que all aparece por cadenaconexion y pulse el botn
Siguiente>, se visualizar la siguiente figura:
Figura 12.14 Ventana de eleccin de objetos de la base de datos.

Pulse el signo (+) al lado de Tablas para desplegar las tablas de la base de datos
y seleccione la tabla clientes. Por otro lado, cambie el nombre del DataSet que all
aparece por datosclientes y pulse el botn Finalizar para visualizar la siguiente figura:
Figura 12.15 DataGridView con los campos de la tabla clientes.

Como se puede apreciar, se crearon tres nuevos objetos: el objeto Datosclientes


que contendr los datos seleccionados, el objeto ClientesBindingSource que en su
propiedad DataSource se le asignar el objeto Datosclientes y en la propiedad

240

DataMember el nombre de tabla seleccionada. Por otro lado, se cre el objeto


ClientesTableAdapter, el cual ser el adaptador de datos para la conexin realizada.

Ejecutar el proyecto

Al ejecutarse el proyecto, se visualizar en el formulario los datos de la tabla clientes en


el objeto DataGridView de la base de datos bdlibrovbnet.mdf de SQL Server:
Figura 12.16 DataGridView con los registros de la tabla clientes.

12.5.3 Conexin a una base de datos con DataGridView y BindingNavigator


Disear un proyecto llamado ConexionAutomatica y realizar un programa que permita
a un usuario realizar una conexin a una base de datos de SQL Server y mostrar los
registros de una tabla llamada clientes en un objeto DataGridView, adems se debe
poder desplazar por los registros de dicha tabla utilizando el control BindingNavigator.
NOTA: para este ejemplo se utilizar la base de datos SQL Server llamada
bdlibrovbnet y su tabla clientes (Ver anexo A, SQL Server).

Crear la interfaz de usuario

Modifique las siguientes propiedades del formulario:


Tabla 12.12 Propiedades modificadas del formulario.
Control
Form1

Propiedad
Name
Text

Valor
formulario
Conexin a una base de datos SQL
Server.

Conectarse a la base de datos.

Del men Ver seleccione la opcin Explorador de servidores para visualizar la


siguiente figura:

241

Figura 12.17 Ventana Explorador de servidores.

Al pulsar el icono conectar con bases de datos


Agregar conexin como muestra la figura:

, se visualizar la ventana de

Figura 12.18 Ventana Agregar conexin.

Seleccione la base de datos bdlibrovbnet.mdf, la cual se encuentra en la carpeta


data de SQL Server (si la instalacin la realiz en c:\ la ruta sera: C:\Archivos de
programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data. Pulse el botn Aceptar para
visualizar la siguiente figura:

242

Figura 12.19 Explorador de servidor - conexin a la base de datos SQL Server.

Al pulsar en el signo (+) al lado del nombre bdlibrovbnet.mdf se visualizar la


estructura definida en la base de datos. Si desea ver las tablas que contiene la base de
datos pulse el signo (+) al lado de Tablas.

Configurar orgen de datos

Del men Datos seleccione la opcin Agregar nuevo orgen de datos, para
visualizar la siguiente figura:
Figura 12.20 Asistente para la configuracin de orgenes de datos.

Seleccione el objeto Base de datos y pulse el botn Siguiente>, para visualizar


la ventana Elegir conexin de datos. En la ventana se debe seleccionar la base de datos
bdlibrovbnet.mdf:

243

Figura 12.21 Ventana Elegir la conexin de datos.

Pulse el botn Siguiente> para visualizar el siguiente mensaje:


Figura 12.22 Ventana para copiar la conexin al proyecto.

Pulse el botn S para copiar el archivo de datos en la carpeta donde guard el


proyecto. Se mostrar la ventana Guardar cadena de conexin en el archivo config de la
aplicacin:
Figura 12.23. Ventana Guardar cadena de conexin.

244

Cambie el nombre de la conexin que all aparece por conexionsqlserver y


pulse el botn Siguiente>, se visualizar la siguiente figura:
Figura 12.24. Ventana de eleccin de objetos de la base de datos.

Pulse el signo (+) al lado de Tablas para desplegar las tablas de la base de datos
y seleccione la tabla clientes. Por otro lado, cambie el nombre del DataSet que all
aparece por conjuntodedatos y pulse el botn Finalizar para visualizar la siguiente
figura:
Figura 12.25. Proyecto con la base de datos y el orgen de datos agregados.

Nuevamente del men Datos seleccione la opcin Mostrar orgenes de datos,


para visualizar la siguiente figura:

245

Figura 12.26 Proyecto con la base de datos y el orgen de datos agregados.

En la parte izquierda aparece la ventana Orgenes de datos. All estar la tabla


que se haba seleccionado. Pulse el signo (+) al lado de la tabla clientes para desplegar
los campos.
D clic sobre la tabla clientes, pulse el botn izquierdo del mouse y arrastre el
mouse hacia el formulario y automticamente se crearn los siguientes objetos: un
control DataGridView, un BindingNavigator (ClientesBindingNavigator
representa una manera normalizada para navegar y manipular los datos en un
formulario), un DataSet (conjuntodedatos representa un conjunto de datos
recuperados de un orgen de datos), un BindingSource (ClientesBindingsource
encapsula el orgen de datos y proporciona las funciones de navegacin, filtrado,
ordenacin y actualizacin de los datos), un TableAdapter (ClientesTableAdapter
crea una nueva tabla con los datos devueltos), un AdapterManager
(ClientesAdapterManeger administrador del adaptador de datos).
Figura 12.27 Aplicacin con los objetos creados automticamente.

246

Ejecutar el proyecto

Al ejecutarse el proyecto, se visualizar en el formulario los datos de la tabla clientes en


el objeto DataGridView de la base de datos bdlibrovbnet.mdf de SQL Server:
Figura 12.28 Ejecucin de la aplicacin ConexionAutomatica.

Con los iconos del objeto BindingSource se podr desplazar por cada uno de los
registros de la tabla.
Estando en modo edicin se pudo apreciar en la ventana Orgenes de datos que
al pulsar el signo (+) al lado de la tabla clientes se despliegan los campos de est.
Tambin es posible arrastrar cada uno de los campos de la tabla hacia el formulario.
Realice esta operacin hasta obtener la siguiente figura:
Figura 12.29 Formulario con los campos de la tabla clientes.

247

Al ejecutarse nuevamente la aplicacin y situarse en cualquier registro de la


tabla se visualizar cada registro independiente en la parte derecha del formulario, como
se aprecia en la siguiente figura:
Figura 12.30 Formulario con un registro seleccionado.

12.5.4 Insertar un nuevo registro a una tabla


Escribir un proyecto llamado InsertarNuevoRegistro y realizar un programa que
permita insertar un nuevo registro a la tabla clientes de la base de datos SQL Server
bdlibrovbnet.mdf. El nuevo registro se debe adicionar en un control DataGridView.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 1 Label, 3 Button, 1
DataGridView.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:


Tabla 12.13 Propiedades de controles proyecto InsertarNuevoRegistro.
Control
Button1
Button2
Button3
DataGridView1
Label1

Form1

Propiedad
Name
Text
Name
Text
Name
Text
Name
Name
Text
Font- Bold
Name
Text

Valor
botonver
Ver registros tabla
botonnuevo
Nuevo registro
botonguardar
Guardar nuevo registro
registros
lbltexto
Insertar un nuevo registro en la tabla clientes base
de datos bdlibrovbnet.mdf
True
formulario
Insertar registro en una tabla de una base de datos.

248

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 12.31 Interfaz de usuario (InsertarNuevoRegistro).

Escribir cdigo
a) Antes de la apertura de la clase formulario se debe importar el siguiente espacio
de nombres:
Imports System.Data.SqlClient
Public Class Form1
.
:::::::
End Class

El espacio de nombres System.Data.SqlClient es necesario para utilizar las


diferentes clases que permitan tambin las operaciones con la base de datos SQL
Server.
b) Despus de la apertura de la clase formulario y antes de los procedimientos
Sub, inicialice las siguientes variables u objetos globales:
Imports System.Data.SqlClient
Public class formulario
Private transaccion As New BindingSource
Private adaptador As SqlDataAdapter
Dim conexion As String = "Data Source=(local)\SQLEXPRESS;Database=
bdlibrovbnet; Integrated Security=True"
.
.
End Class

Se inicializan los siguientes objetos: transaccion de tipo BindingSource para


encapsular y manipular el orgen de los datos; adaptador de tipo SqlDataAdapter
para intercambiar datos con una base de datos SQL Server; conexion de tipo String al
que se le asignar la cadena de conexin para SQL Server.
c) D doble clic sobre el formulario para abrir el editor de cdigo y cree un nuevo
procedimiento llamado ver_datos:
249

Public Sub ver_datos(ByVal sentenciasql As String, ByVal tabla As DataGridView)


Try
adaptador = New SqlDataAdapter(sentenciasql, conexion)
Dim comando As New SqlCommandBuilder(adaptador)
Dim tabladedatos As New DataTable()
adaptador.Fill(tabladedatos)
transaccion.DataSource = tabladedatos
With tabla
.Refresh()
.FirstDisplayedScrollingRowIndex = transaccion.Position
End With
Catch ex As SqlException
MsgBox(ex.Message.ToString)
Catch ex As Exception
MsgBox(ex.Message.ToString)
End Try
End Sub

El procedimiento ver_datos recibe como parmetros una variable de tipo String


llamada sentenciassql y un objeto tabla de tipo DataGridView. En un bloque Try se le
asigna espacio de memoria al objeto adaptador de tipo SqlDataAdapter el cual recibe
la sentencia SQL y la cadena de conexin. Por otro lado, se crea un objeto tabladedatos
al cual se le asigna espacio de memoria DataTable (). Se rellena el adaptador de datos
(adaptador) con la tabla de datos (tabladedatos) y a la propiedad DataSource del
objeto transaccion se le asigna la tabla de datos. Por otro lado, se refresca (Refresh ())
la cuadricula para cargar los datos y se obtiene la posicin del primer registro de la
cuadricula (FirstDisplayedScrollingRowIndex = transaccion.Position). Utilizando
dos bloques catch se atrapan las excepciones SQLException ( por si existe algn error
en ejecucin de las sentencias SQL) y Exception ( por si existe algn problema con el
sistema).
d) Seleccione el objeto botonver, d doble clic para abrir el editor de cdigo y
escriba el siguiente cdigo:
registros.DataSource = transaccion
cargar_datos("select * from clientes", registros)

A la propiedad DataSource del objeto registros se le establece el orgen de


datos (transaccion) y se llama al procedimiento ver_datos envindole la sentencia
SQL Select * from clientes y el objeto registros.
e) Seleccione el objeto botonnuevo, d doble clic para abrir el editor de cdigo y
escriba el siguiente cdigo:
transaccion.AddNew()

Se utiliza el mtodo AddNew del objeto transaccion para crear un nueva fila en
el objeto registros.
f) Seleccione el objeto botonguardar, d doble clic para abrir el editor de cdigo
y escriba el siguiente cdigo:
If Not transaccion.DataSource Is Nothing Then
Adaptador.Update(CType(transaccion.DataSource, DataTable))
cargar_datos("Select * From clientes", tabla)

250

Else
MsgBox("No se pudo guardar el registro", MsgBoxStyle.Critical)
End If

Si la fila del objeto registros no es vaca por medio del mtodo Update del
objeto adaptador se guarda la nueva fila en la tabla clientes envindole el contenido
del DataSource del objeto transaccion y un objeto DataTable. Por otro lado, se llama
al procedimiento ver_datos para mostrar nuevamente los registros de la tabla clientes.
Si la fila es vaca se muestra el mensaje No se pudo guardar el registro.

Ejecutar el proyecto

Al ejecutarse el proyecto y pulsar el botn Ver registros tabla se visualizarn los


registros de la tabla clientes, como se aprecia en la siguiente figura:
Figura 12.32 Formulario con los registros de la tabla clientes.

Al pulsar el botn Nuevo Registro, se seleccionara en una nueva fila el primer


campo del objeto registros, el formulario queda de la siguiente forma:
Figura 12.33. Cuadricula con una nueva fila para insertar datos.

251

Si se captura la informacin en cada campo de la cuadricula (1000, Chicles


Bacan, Cristian Vanegas, Cra 68 # 20-21, 4159854, Bogot) y luego se pulsa el botn
Guardar nuevo registro, se insertarn los datos en la tabla clientes. En la siguiente
figura se aprecia el registro insertado:
Figura 12.34 Cuadricula con un nuevo registro insertado en la tabla clientes.

12.5.5 Filtrar registros de una tabla


Disear un proyecto llamado FiltrarPorCampos y permitir realizar filtrar los registros
de una tabla por cualquier campo de dicha tabla y visualizar todos los registros que
cumplan la condicin en un control DataGridView.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 6 Label, 1 TextBox, 1
Button, 1 DataGridView y 2 ComboBox.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:


Tabla 12.14 Propiedades de controles proyecto FiltrarPorCampos.
Control
Label1

Label2

Propiedad
Valor
Text
Filtrar los registros de una tabla por cualquier
campo.
Name
lblfiltrar
Font /Bold True
Text
Seleccione campo
Name
lblcampo

252

Label3

Text
Name
Label4
Text
Name
Label5
Text
Name
Label6
Text
Name
Font/ Bold
TextBox1
Name
Button1
Name
Text
ComboBox1
Name
ComboBox2
Name
DataGridView1 Name
Form1
Name
Text

Seleccione operador
lbloperador
Criterio de filtrado
lblcriterio
Su seleccin:
lblseleccion
resultado
lblresultado
True
valorcampo
botonfiltrar
Filtrar registros
listacampos
listaoperadores
registrosfiltrados
formulario
Filtrar registros de una tabla.

Figura 12.35 Interfaz de usuario (FiltrarPorCampos).

Escribir cdigo
a) Seleccione el control listacampos, busque la propiedad Items, d clic en los tres
puntos al lado de Coleccin y en ventana Editor de la coleccin Cadena
escriba por cada lnea un campo de la tabla clientes y pulse el botn Aceptar.
Otra forma es dar clic sobre la flecha del control en la parte superior derecha y
seleccionar la opcin Editar elementos. La ventana de edicin deber quedar
como se muestra en la figura:

253

Figura 12.36 Ventana Editor del objeto listacampos.

b) Seleccione el control listaoperadores, busque la propiedad Items, d clic en los


tres puntos al lado de Coleccin y en ventana Editor de la coleccin Cadena
escriba por cada lnea los operadores: <, >=, <, >=, =, <>, luego pulse el botn
Aceptar. La ventana de edicin deber quedar como se muestra en la figura:
Figura 12.37 Ventana Editor del objeto listaoperadores.

c) Antes de la apertura de la clase formulario se debe importar el siguiente espacio


de nombres:
Imports System.Data.SqlClient
Public Class formulario

End Class

d) Despus de la apertura de la clase formulario y antes de los procedimientos


Sub, inicialice la siguiente variable global:

254

Public class formulario


Dim texto as String
.
End Class

La variable texto servir para guardar el contenido del objeto lblresultado en su


propiedad Text.
e) Seleccione el objeto listacampos, d doble clic para abrir el editor de cdigo y
escriba el siguiente cdigo:
lblresultado.Text = listacampos.SelectedItem.ToString

Al objeto lblresultado en su propiedad Text se le asigna el nombre del campo


seleccionado por medio de la propiedad SelectedItem del objeto listacampos;
f) Seleccione el objeto listaoperadores, d doble clic para abrir el editor de cdigo
y escriba el siguiente cdigo:
lblresultado.Text = lblresultado.Text & listaoperadores.SelectedItem.ToString
texto=lblresultado.text

Al objeto lblresultado en su propiedad Text se le asigna su contenido actual


concatenado con el operador seleccionado por medio de la propiedad SelectedItem del
objeto listaoperadores. A la variable texto se le asigna el contenido del objeto
lblresultado.
g) Seleccione el objeto txtcriterio, d doble clic para abrir el editor de cdigo y
escriba el siguiente cdigo:
lblresultado.Text = texto & txtcriterio.text

Al objeto lblresultado en su propiedad Text se le asigna el contenido de la


variable texto concatenado con el valor escrito en el objeto txtcriterio en su propiedad
text.
h) Seleccione el objeto botonfiltrar, d doble clic para abrir el editor de cdigo y
escriba el siguiente cdigo:
Dim conexion As String
conexion = "Data Source=(local)\SQLEXPRESS;Database=bdlibrovbnet;
Integrated Security=True"
Dim clave = valorcampo.Text
Dim nombre_campo As String = listacampos.SelectedItem.ToString
Dim valoroperador As String = listaoperadores.SelectedItem.ToString
Dim seleccion As String = "SELECT * FROM clientes where " + nombre_campo + " " +
valoroperador + "'" + clave + "'"
Dim adaptador As SqlDataAdapter
Dim tabladedatos As New DataTable
Try
adaptador = New SqlDataAdapter(seleccion, conexion)
adaptador.Fill(tabladedatos)
tabla.DataSource = tabladedatos
Catch ex As Exception

255

MsgBox("Error: " & ex.Message)


End Try

Se crean las variables: clave que almacenar el valor que este escrito en el objeto
txtcriterio; nombre_campo de tipo String que almacenar el nombre del campo
seleccionado por medio de la propiedad SelectedItem del objeto listacampos;
valoroperador de tipo String que almacenar el operador seleccionado por medio de la
propiedad SelectedItem del objeto listaoperadores; tambin se crea una variable
seleccion de tipo String que almacenar la instruccin SQL Select. En dicha
instruccin se selecciona todos los campos de la tabla clientes (Select * from clientes)
y se
utiliza la clusula Where para mostrar solo aquellos registros cuya
nombre_campo corresponda al criterio de valoroperador concatenado con clave. En
un bloque Try se le asigna espacio de memoria de tipo SqlDataAdapter al objeto
adaptador al cual se le enva como parmetros los objetos seleccion (sentencia SQL) y
conexion (cadena de conexin), luego se rellena (fill) el adaptador de datos con la tabla
de datos (tabladedatos) y se le asigna al objeto tabla por intermedio de la propiedad
DataSource el objeto tabladedatos.

Ejecutar el proyecto

Al ejecutarse el proyecto en el entorno de desarrollo, se visualizar la figura 12.35. Si se


selecciona del objeto listacampos el campo nit, del objeto listaoperadores el operador
>, se escribe en el objeto txtcriterio 300 y se pulsa el botn Filtrar registros se
visualizar en la cuadricula todos aquellos registros cuyo nit sea mayor que 300, como
se muestra en la siguiente figura:
Figura 12.38 Formulario con los registros cuyo nit es mayor de 300.

12.5.6 Informe de los registros de una tabla


Crear un proyecto llamado InformeDatosTabla, que permita a un usuario visualizar en
un formulario un reporte de todos los registros de la tabla clientes de la base de datos
bdlibrovbnet.mdf.

256

Crear la interfaz de usuario.

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 1
MicrosoftReportViewer.
Figura 12.43 Interfaz de usuario (InformeDatosTabla).

Para acoplar el control MicrosoftReportViewer1 al formulario, pulse la flecha


del lado superior derecha del objeto para ver la ventana Tareas de ReportViewer.
Figura 12.44 Interfaz de usuario (InformeDatosTabla).

Seleccione la opcin Acoplar en contenedor principal, se visualizar el


formulario con el control acoplado como se aprecia en la siguiente figura:

257

Figura 12.45 Control MicrosoftReportViewer acoplado al formulario.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:


Tabla 12.15 Propiedades de controles proyecto InformeDatosTabla.
Control
Propiedad
MicrosoftReportViewer1 Name
Form1
Name
Text

Valor
reporte
formulario
Reporte de una tabla.

Figura 12.46 Interfaz de usuario modificada (InformeDatosTabla).

Disear el informe

Para disear el informe, pulse la flecha del lado superior derecha del objeto reporte
para ver la ventana Tareas de ReportViewer y escoja la opcin Disear nuevo
informe.

258

Figura 12.47 Seleccionar Disear nuevo informe.

Al seleccionar Disear nuevo informe, se visualizar la siguiente figura:


Figura 12.48 Asistente para informes.

D clic en Siguiente> para ver la ventana del Asistente para la configuracin


de orgenes de datos.

259

Figura 12.49 Asistente para la configuracin de orgenes de datos.

Seleccione el objeto Base de datos y pulse el botn Siguiente>, para visualizar


la ventana de eleccin de la base de datos:
Figura 12.50 Ventana Elegir la conexin de datos.

D clic en el botn Nueva Conexin. En la ventana que se visualiza elija como


orgen de datos Microsoft SQL Server y la base de datos bdlibrovbnet.

260

Figura 12.51 Ventana Agregar conexin.

Al pulsar el botn Aceptar se visualizar nuevamente la ventana de eleccin de


conexin de datos con la base de datos bdlibrovbnett.mdf, como se aprecia en la
siguiente figura:
Figura 12.52 Ventana con la base de datos seleccionada.

Pulse Siguiente> para visualizar el siguiente mensaje:

261

Figura 12.53 Ventana Microsoft Visual Studio.

Pulse el botn S para copiar el archivo de datos en la carpeta en donde guard el


proyecto y visualizar la ventana de guardar cadena de conexin:
Figura 12.54 Ventana Guardar cadena de conexin.

Cambie el nombre de la conexin que all aparece por conexion y pulse el botn
Siguiente>, se visualizar la siguiente figura:
Figura 12.55 Ventana de eleccin de objetos de la base de datos.

Pulse el signo (+) al lado de Tablas para desplegar las tablas de la base de datos
262

y seleccione la tabla clientes. Por otro lado, cambie el nombre del DataSet que all
aparece por conjuntodedatos y pulse el botn Finalizar para visualizar la siguiente
figura:
Figura 12.56 Asistente para informes seleccionar el orgen de datos.

Pulse los signos (+) para desplegar la tabla. D clic en Siguiente> para
visualizar la ventana de seleccin de tipo de informe.
Figura 12.57 Asistente para informes seleccionar el tipo de informe.

263

Seleccione la opcin Tabular o Matriz y d clic en Siguiente> para visualizar


la ventana de diseo de tabla.
Figura 12.58. Asistente para informes disear la tabla.

figura:

Seleccione cada campo y pulse el botn Detalles>. Se obtendr la siguiente

Figura 12.59 Diseo de la tabla con los campos seleccionados.

264

tabla.

D clic en Siguiente> para visualizar la ventana de eleccin de diseo de la

Figura 12.60 Asistente para informes elegir el diseo de la tabla.

Seleccione la opcin Escalonado o Bloquear y d clic en Siguiente> para


visualizar la ventana de estilo de la tabla.
Figura 12.61 Asistente para informes elegir el estilo de tabla.

265

Seleccione la opcin con el estilo que desee y d clic en Siguiente> para


visualizar la ventana de finalizacin del asistente de informes.
Figura 12.62 Ventana de finalizacin del asistente de informes.

Donde aparece el nombre del informe cmbielo por Informe Clientes y d clic
en Finalizar> para visualizar el diseo final del informe.
Figura 12.63 Diseo final del informe.

266

En este momento se podrn modificar los textos de las etiquetas de los campos,
como tambin la longitud de los campos. Adems, en el explorador de soluciones se
visualizar el informe agregado al proyecto.
Elija la ficha de diseo del formulario y d clic sobre la flecha del objeto
reporte y seleccione la opcin Elegir informe.
Figura 12.64 Seleccionar opcin Elegir informe.

All escoja InformeDatosTabla.Informe Cliente.rdlc, para visualizar el


formulario con los objetos conjuntodedatos, clientesBindingSource y
clientesTableAdapter.
Figura 12.65 Formulario con los objetos de manejo de datos.

267

Ejecutar el proyecto

Al ejecutarse el proyecto, se visualizar la figura 4.56. Por medio de la barra de


herramientas se podr desplazar hacia las diferentes hojas del reporte, as como
imprimir el reporte, modificar el diseo del informe, configurar la pgina, cambiar el
tamao de visualizacin del informe y buscar texto dentro del informe.
Figura 12.66 Formulario con el reporte de los registros de la tabla clientes.

12.5.7 Relacin de tablas


Realizar un proyecto llamado RelacionConComboBox, que permita a un usuario
seleccionar desde una lista desplegable el nombre de una empresa y visualizar en una
cuadricula los pedidos que dicha empresa ha realizado.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 1 Label, 1 ComboBox, 1
Button, 1 DataGridView.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:


Tabla 12.16 Propiedades de controles proyecto RelacionConComboBox.
Label1
Button1

Control

Propiedad

Text
name
Text

Valor
Seleccione empresa:
etiquetaclientes
Ver Pedidos

268

DataGridView1
ComboBox1
Form1

name

Name
Name
Name
Text

boton
tablapedidos
lista
formulario
Relacin de tablas con un
ComboBox.

Figura 12.67 Interfaz de usuario (RelacionConComboBox).

Establecer la conexin

Desde la ficha Datos del cuadro de herramienta arrastre hacia el formulario el adaptador
de datos SqlDataAdapter (Si no aparece el control, d clic derecho sobre la ficha
Datos y ejecute la orden Elegir elementos, busque el control, seleccinelo en el cuadro
de verificacin y pulse el botn Aceptar.). Se visualizar la siguiente figura:
Figura 12.68 Ventana Elegir la conexin de datos.

269

D clic en el botn Nueva Conexin. En la ventana que se visualiza elija como


orgen de datos Microsoft SQL Server y la base de datos bdlibrovbnet.
Figura 12.69 Ventana Agregar conexin.

Pulse el botn Aceptar, para visualizar nuevamente la ventana de Elegir la


conexin de datos. All pulse Siguiente> para ver el siguiente mensaje:
Figura 12.70 Ventana Microsoft Visual Studio.

Pulse el botn S para copiar el archivo de datos en la carpeta en donde guard el


proyecto. Se visualizar la ventana de eleccin de tipo de comando:
Figura 12.71 Ventana eleccin tipo de comando.

270

Por omisin esta seleccionada la opcin Usar instrucciones SQL. Pulse


Siguiente> para visualizar la ventana de generacin de instrucciones SQL.
Figura 12.72 Ventana Generar las instrucciones SQL.

Aqu puede realizar la seleccin de los datos que debera cargar el adaptador de
datos. Una forma es escribiendo en la ventana instrucciones SQL y la otra es pulsar el
botn Generador de consultas. Para el ejemplo, se pulsar el botn para visualizar la
siguiente figura:
Figura 12.73 Ventana Generador de consultas.

Seleccione la tabla clientes, pulse el botn Agregar y luego el botn Cerrar, se


visualizar la siguiente figura:

271

Figura 12.74 Generador de consultas con la tabla clientes.

En esta nueva ventana seleccione la opcin * (todas las columnas) o los campos
que desea visualizar (Si desea visualizar la consulta seleccionada pulse el botn
Ejecutar consulta). Se obtendr la siguiente figura:
Figura 12.75 Generador de consultas con los campos seleccionados (tabla clientes).

Pulse el botn Aceptar y se visualizar la siguiente figura:


272

Figura 12.76 Generador de consultas con la instruccin SQL.

Al pulsar el botn Finalizar, se crearn los objetos: SqlDataAdapter1 y


SqlConnection1. Cambie el nombre de dichos objetos por datosclientes y
conexioncliente respectivamente.
Ahora seleccione nuevamente el control SqlDataAdapter de la ficha Datos y
realice los mismos pasos que se realizaron anteriormente, pero esta vez seleccione la
tabla pedidos y cambie los nombres de los objetos SqlDataAdapter1 y
sqlConnection1 por datospedidos y conexionpedidos. Se visualizar la siguiente
figura:
Figura 12.77 Formulario con los objetos SqlDataAdapter y sqlConnection.

Seleccione la opcin Generar Conjunto de Datos del men Datos y se


mostrar el siguiente cuadro de dilogo:

273

Figura 12.78 Ventana Generar conjunto de datos.

Elija la opcin Nuevo y cambie el nombre DataSet1 por conjuntodedatos,


deshabilite el cuadro de verificacin pedidos (datospedidos) y pulse el botn Aceptar
para agregar el conjunto de datos a la aplicacin, como muestra la figura:
Figura 12.79 Formulario con el objeto conjuntodedatos.

Escribir cdigo
a) Antes de la apertura de la clase formulario se debe importar el siguiente espacio
de nombres:
Imports System.Data.SqlClient
Public Class formulario
:::::::
End Class

b) Despus de la apertura de la clase formulario y antes de los procedimientos


274

sub, inicialice las siguientes variables u objetos globales:


Public class formulario
Dim vistapedidos As DataView

:::::::::

End class

Se inicializa un objeto global llamado vistapedidos de tipo DataView para


obtener una vista de los datos.
c) D doble clic sobre el formulario para abrir el editor de cdigo del
procedimiento formulario_ Load y escriba el siguiente cdigo:
datosclientes.Fill(conjuntodedatos, "clientes")
datospedidos.Fill(conjuntodedatos, "pedidos")
lista.DataSource = conjuntodedatos.Tables("clientes")
lista.DisplayMember = conjuntodedatos.Tables("clientes").Columns(1).ToString
lista.ValueMember = conjuntodedatos.Tables("clientes").Columns(0).ToString
vistapedidos = conjuntodedatos.Tables("pedidos").DefaultView

Se rellenan los objetos datosclientes y datospedidos con el conjunto de datos y


su respectiva tabla. Al objeto lista en su propiedad DataSource se le asigna la tabla
clientes del conjunto de datos; a la propiedad DisplayMember se le asigna el valor del
segundo campo de la tabla clientes (columna uno (1) empresa) y a la propiedad
ValueMember se le asigna el valor del primer campo de la tabla clientes (columna cero
(0) - nit). Por ltimo al objeto vistapedidos se le asigna la tabla pedidos del conjunto de
datos y utilizando la propiedad DefaultView se personaliza la vista de los datos.
d) D doble clic sobre el objeto boton para abrir el editor de cdigo y escriba el
siguiente cdigo:
Dim datoempresa As String = lista.SelectedValue
vistapedidos.RowFilter = "nit = '" & datoempresa & "'"
tablapedidos.DataSource = vistapedidos

Se inicializa una variable llamada datoempresa de tipo String que almacenar


lo seleccionado en el objeto lista por intermedio de la propiedad SelectedValue. Se
utiliza la propiedad RowFilter del objeto vistapedidos para filtrar los registros por el
campo nit de acuerdo al valor de la variable datoempresa. Por ltimo se asigna a la
propiedad DataSource del objeto tablapedidos el contenido del objeto vistapedidos.
e) D doble clic sobre el objeto lista para abrir el editor de cdigo del
procedimiento lista_SelectedIndexChanged y escriba el siguiente cdigo:
tablapedidos.DataSource = Nothing

Utilizando la palabra clave nothing se libera en memoria el contenido que tenga


la propiedad DataSource del objeto tablapedidos.

Ejecutar el proyecto

Al ejecutarse el proyecto, se visualizar la figura 12.67, mostrndose en el objeto lista


el primer nombre de empresa de la tabla clientes (Si se desea ver los nombres de
empresas ordenados alfabticamente cambie el valor de la propiedad Sorted del objeto
275

lista por True). Si selecciona un nombre de empresa y se pulsa el botn Ver Pedidos,
se visualizar en la cuadricula todos los registros que estn relacionados con la tabla
pedidos.
Figura 12.80 Relacin de las tablas clientes pedidos con DataGridView.

12.6 Ejercicios bases de datos


1. Crear un programa que permita realizar una conexin a una base de datos y
mostrar datos de una tabla en un control ListView.
2. Elaborar un programa que permita realizar una conexin a una base de datos y
eliminar registros.
3. Escribir un programa que permita visualizar los registros de una tabla en campos
de texto. El usuario deber poderse desplazar por cada registro de la tabla
utilizando los botones: Primero, Siguiente, Anterior y ltimo.
4. Disear un programa que permita visualizar los registros de una tabla en un
control DataGridView. El usuario deber poderse desplazar por cada registro de
la tabla utilizando los botones: Primero, Siguiente, Anterior y ltimo.
5. Hacer un programa que permita escribir sentencias SQL en un campo de texto y
visualizar los resultados de dicha sentencia en una cuadricula.
6. Realizar un programa que permita visualizar un reporte los registros
relacionados cuyos nit sean mayores que 500.
7. Hacer un programa que permita visualizar un reporte los registros relacionados
cuyas empresas empiecen por la letra C.
8. Realizar un programa que permita hacer una conexin a una base de datos y
visualizar los registros cuyo nit sea menor o igual a 500 en un ListView.
9. Realizar un programa que permita realizar una relacin entre tres tablas de una
base de datos en SQL Server.
10. Hacer un programa que permita visualizar en un reporte los registros de una
relacin de dos tablas.

276

13. LENGUAJE DE CONSULTA INTEGRADO (LINQ)


LINQ (Language Integrated Query) proporciona funciones de consulta tiles para
manipular diferentes tipos de datos, esta nueva tecnologa es incluida en Visual Studio
2008. Se puede utilizar consultas LINQ en proyectos nuevos o proyectos existentes, el
nico requisito es que el proyecto se tiene que trabajar con la versin 3.5 o posterior del
.NET Framework. LINQ presenta las consultas como parte del lenguaje de Visual Basic
.NET. Con LINQ se puede consultar datos desde una base de datos SQL Server, XML,
matrices y colecciones en memoria. Como todas las consultas se escriben en el lenguaje
Visual Basic .NET se puede detectar los errores de las consultas en tiempo de
compilacin.
13.1 Proveedores LINQ
Un proveedor LINQ realiza una consulta y la traduce en comandos que podr ejecutar el
orgen de datos, adems convierte los datos del orgen en los objetos que obtiene los
resultados de la consulta. Visual Basic .NET tiene los siguientes proveedores LINQ:

LINQ to Objects: Permite consultar colecciones y matrices en memoria. Se debe


importar el espacio de nombres System.Linq.
LINQ to XML: Permite consultar y modificar archivos XML. Puede modificar
XML en memoria o cargarlos desde un archivo. Admite crear literales XML, lo que
permite mediante programacin la creacin de elementos, documentos y fragmentos
XML.
LINQ to SQL: Permite consultar, modificar, actualizar y eliminar datos de una base
de datos SQL Server. Visual Basic .NET incluye el diseador relacional de objetos,
el cual permite crear un modelo de objetos en una aplicacin que se asigna a objetos
de una base de datos. Es decir, convierte a SQL las consultas en un modelo de
objetos y las enva a la base de datos para su ejecucin.
LINQ to DataSet: Permite consultar, actualizar y agregar los datos de un conjunto
de datos ADO.NET.

13.2 Operadores de Consulta LINQ de VB.NET


El espacio de nombres System.Linq contiene mtodos que permiten llamar o depurar
consultas. VB.NET incluye palabras clave para las clusulas de consulta:
NOTA: para los ejemplos se utilizar la estructura de las tablas de la base de datos SQL
Server llamada bdlibrovbnet (Ver anexo A, SQL Server).
From: Permite especificar el orgen de datos que se desea consultar. Esta
clusula debe ser la parte inicial de una consulta. En el siguiente ejemplo la
clusula From especfica el orgen de datos Clientes y una variable de rango
misclientes quien acta como referencia de cada elemento de la tabla Clientes.
Dim consulta = From misclientes In Clientes

Select: Especifica la forma y el contenido de los datos que sern devueltos. Por
ejemplo si se desea visualizar solamente el nit y el nombre de la empresa de la
tabla clientes, se debe realizar el siguiente cdigo:
277

Dim consulta = From misclientes In Clientes


Select misclientes.nit, misclientes.empresa

Where: Se utiliza para filtrar datos de un orgen de datos. En el siguiente


ejemplo se muestran todos los clientes cuya ciudad sea Bogot.
Dim consulta = From misclientes In Clientes
Where misclientes.ciudad=Bogot Select misclientes

Tambin se pueden utilizar los operadores lgicos And y Or. Si se desea


visualizar todos los clientes que vivan en la ciudad de Bogot o Cali, el cdigo
sera el siguiente:
Dim consulta = From misclientes In Clientes
Where misclientes.ciudad=Bogot Or misclientes.ciudad=Cali
Select misclientes

Order By: Ordena una consulta de un orgen de datos por uno o varios campos
especificados. Para ordenarlo de A Z se utiliza Ascending, de Z A
Descendig, cuando no se especifica se usa Ascending predeterminadamente. Si
se desea ordenar la consulta por el nombre de la empresa de la tabla clientes de
A- Z, el cdigo sera el siguiente:
Dim consulta = From misclientes In Clientes
Where misclientes.ciudad=Bogot
Select misclientes Order By misclientes.empresa

Join: Combina dos colecciones con un campo comn de un orgen de datos. La


consulta puede devolver el total o una parte de los elementos de la coleccin que
tienen valores coincidentes. Para visualizar todos los clientes (nit, empresa) que
tengan pedidos(nropedido, observacin), el cdigo ser:

Dim consulta = From misclientes In Clientes


Join pedidos In Pedidos
On clientes.nit Equals pedidos.nit
Select clientes.nit, clientes.empresa,
pedidos.nropedido, pedidos.observacion

Group By: Agrupa los resultados de una consulta por uno o ms campos.
Combina dos colecciones con un campo comn de un orgen de datos. Para
visualizar agrupadas y ordenadas las fecha de entrega de los pedidos de la tabla
Pedidos, el cdigo sera:

Dim consulta = From pedidos In Pedidos Order By Pedidos.fechaentrega


Group By fecha = pedidos.fechaentrega
Into orden = Group

Aggregate: Aplica una o ms funciones de agregado a un orgen de datos. Esta


clusula debe ser la parte inicial de una consulta. Las funciones de agregado son:
o Average: Calcula el promedio de una serie de valores.
o Count: Cuenta los elementos de un orgen de datos, opcionalmente se
puede especificar los elementos a contar.
o Max: Obtiene el valor mximo de los elementos de un orgen de datos.
278

o Min: Obtiene el valor mnimo de los elementos de un orgen de datos.


o Sum: Realiza la suma de los valores de un orgen de datos.

Ejemplos:
Si se tiene el siguiente arreglo:

Dim valores As Integer ={12,15,2,14,78,25}

Para contar los elementos.

Dim cuenta As Integer = Aggregate ctavalores In valores Into Count()


Para contar los elementos mayores de 20.
Dim cuenta As Integer = Aggregate ctavalores In valores Into Count(ctavalores>20)

Para obtener el promedio de los valores.

Dim cuenta As Integer = Aggregate ctavalores In valores Into Average()


Para obtener el valor mximo.

Dim cuenta As Integer = Aggregate ctavalores In valores Into Max()


Para obtener el valor mnimo.

Dim cuenta As Integer = Aggregate ctavalores In valores Into Min()

Para obtener la suma de los valores.

Dim cuenta As Integer = Aggregate ctavalores In valores Into Sum()

13.3 Escribir una consulta con LINQ en VB.NET


Para definir y utilizar consultar con LINQ, deben realizar tres acciones:
Obtener el orgen de datos: Se debe especificar cules sern los datos que se
van a utilizar y donde estn.
Crear la consulta: Se especifica la informacin que se desea obtener del orgen
de datos, estos, se pueden ordenar, filtrar, agrupar.
Ejecutar la consulta: La ejecucin de la consulta es un proceso independiente
de la creacin. Se puede ejecutar cuando este definida (ejecucin inmediata) o se
puede guardar y ejecutarse posteriormente (ejecucin diferida).
Ejemplo: Realizar una consulta que imprima todos los nombres que empiecen por la
letra R.
-

Orgen de datos

Dim nombres() As String = {Carlos, Jos, Cristian, Rosa, Roco, Mary}

279

Creacin de la consulta

Dim consultanombres = From misnombres In nombres


Where misnombres.IndexOf(R)=0
Select misnombres
-

Ejecutar la consulta

For Each nombre In consultanombres


Msgbox (nombre)
Next
13.4 Ejemplos prcticos consultas LINQ

13.4.1 Consulta LINQ a un texto


Hacer una aplicacin llamada ConsultaLinqTexto, que permita visualizar un texto en
un campo de texto y obtener la siguiente informacin del texto: cuantas letras tiene,
cuantas palabras, cuales palabras contienen la letra F, cuantas palabras LINQ existen,
cuales palabras tienen ms de 10 letras.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 1 Button, 2 Label y 2
TextBox.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:


Tabla 13.1 Propiedades de controles proyecto ConsultaLinqTexto.
Control
Button1
Label1
Label2
TextBox1
TextBox2
Form1

Propiedad
Name
Text
Name
Text
Name
Text
Name
Text
MultiLine
Name
MultiLine
Name
Text

Valor
botonconsulta
Ejecutar consulta LINQ
lbltexto
Texto original
lblresultado
Resultado de la consulta
lbltexto
Adicione un texto cualquiera.
True
lblresultado
True
formulario
Consulta LINQ con texto

La interfaz de usuario queda como se muestra en la siguiente figura:

280

Figura 13.1 Interfaz de usuario (ConsultaLinqTexto).

Escribir cdigo

Seleccione el objeto botonconsulta, d doble clic para abrir el editor de cdigo y


escriba el siguiente cdigo:
Dim cadena As String = txttexto.Text

Se asigna a la variable cadena el contenido del objeto txttexto.


Dim contarletras As Integer = Aggregate cantidadpalabras In cadena Into Count()
txtresultado.Text = "El texto contiene:" & contarletras & " letras" & vbCrLf

Se utiliza la funcin de agregado Count para contar cada una de los caracteres
que contiene el texto del objeto txttexto se incluyen los espacios. La consulta se crea
con la clusula Aggregate. Al objeto txtresultado se le asigna el valor de contarletras.
Dim palabras() As String
palabras = Split(cadena, " ")
Dim contarpalabras As Integer = Aggregate mispalabras In palabras Into Count()
txtresultado.Text = txtresultado.Text & "Tiene :" & contarpalabras & " Palabras" &
vbCrLf

Se crea una matriz llamada palabras de tipo String. A dicha varible se le asigna
cada una de las palabras que contiene el objeto cadena utilizando la funcin Split. Con
la funcin de agregado Count se cuentan cada una de las palabras de la matriz palabras
y se asigna dicha cantidad a la variable contarpalabras. Al objeto txtresultado se le
adiciona el valor de contarpalabras.
Dim palabras_con_F = From letra In palabras Where letra.Contains("F")
txtresultado.Text = txtresultado.Text & "Las palabras que contienen la letra F son:" &
vbCrLf
For Each letraf In palabras_con_F
txtresultado.Text = txtresultado.Text & letraf & vbCrLf
Next

281

Se crea una variable llamada palabras_con_F. A dicha variable se le asigna


cada una de las palabras que contiene la letra F, la cual es retornada por la consulta
(From). Dicha consulta busca en la matriz palabras todas las palabras que cumplan la
condicion (Where letra.Contains(F)). Con un ciclo For Each se imprime cada
palabra con F que se encuentre en el objeto palabras_con_F y es adicionada a la
propiedad Text del objeto txtresultado. La consulta se crea con la clusula From.
Dim palabra_linq As String = "LINQ"
Dim palabras_encontradas = From linq In palabras _
Where linq = palabra_linq
Select linq
Dim nro_palabras_linq As Integer = palabras_encontradas.count()
txtresultado.Text = txtresultado.Text & "La palabra LINQ se encuentra:" &
nro_palabras_linq & " veces" & vbCrLf

Se crea una variable llamada palabras_linq a la cual se le asigna el texto LINQ.


Se crea una consulta que busca en el objeto palabras todas las palabras que sean igual
al contenido de la variable palabra_linq (Where linq= palabra_linq). Con la funcin
de agregado Count se le agrega a la variable nro_palabras_linq el valor de la cantidad
de palabras obtenidas del objeto palabras_encontradas y es adicionada a la propiedad
Text del objeto txtresultado.
Dim palabras_mas_10_letras = From letras In palabras
Where letras.Length > 10
Select letras
txtresultado.Text = txtresultado.Text & "Las palabras con ms de 10 letras son:" &
vbCrLf
For Each letras10 As String In palabras_mas_10_letras
txtresultado.Text = txtresultado.Text & letras10 & vbCrLf
Next

Se crea una variable llamada palabras_mas_10_letras, a la cual se le asigna una


consulta que busca en el objeto palabras todas las palabras que contengan ms de 10
caracteres (Where letras.Length>10). Con un ciclo For Each se imprime cada palabra
con ms de 10 caracteres que se encontro en la consulta y es adicionada a la propiedad
Text del objeto txtresultado.

Ejecutar el proyecto

Al ejecutarse el proyecto y pulsar el botn Ejecutar consulta LINQ, se visualizar el


formulario con todos las operaciones realizadas.
Figura 13.2 Ejecucin de la consulta LINQ sobre un texto.

282

13.4.2 Consulta LINQ a una matriz


Escribir una aplicacin llamada ConsultaLinqMatriz, que permita visualizar una
matriz con 10 nmeros en un campo de texto y obtener la siguiente informacin de la
matriz: suma de los nmeros, el promedio, el nmero mayor, el nmero menor, ordenar
los nmeros y los nmeros mayores de 60 o menores de 10.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 1 Button, 8 Label y 8
TextBox.
Establecer las propiedades de los objetos de la interfaz de usuario
Establezca las siguientes modificaciones a los controles:
Tabla 13.2 Propiedades de controles proyecto ConsultaLinqMatriz.
Control
Button1
Label1
Label2
Label3
Label4
Label5
Label6
Label7
Label8
TextBox1
TextBox2
TextBox3
TextBox4
TextBox5
TextBox6
TextBox7
TextBox8
Form1

Propiedad
Name
Text
Name
Text
Font - Bold
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Name
Name
Name
Name
Name
Name
Name
Name
Text

Valor
botonconsulta
Ejecutar consulta LINQ
lblnumeros
Valores de la Matriz:
True
lblsuma
Suma de los nmeros
lblpromedio
Promedio de los nmeros:
lblmayor
Nmero mayor:
lblmenor
Nmero menor:
lblordenados
Nmeros ordenados:
lblmayores40
Mayores de 40:
lblmayoresmenores
Mayores de 60 o menores de 10:
txtnumeros
txtsuma
txtpromedio
txtmayor
txtmenor
txtordenados
txtmayores40
txtmayoresmenores
formulario
Consulta LINQ con Matrices

La interfaz de usuario queda como se muestra en la siguiente figura:

283

Figura 13.3 Interfaz de usuario (ConsultaLinqMatriz).

Escribir cdigo

Seleccione el objeto botonconsulta, d doble clic para abrir el editor de cdigo y


escriba el siguiente cdigo:
Dim numeros() As Integer = {20, 80, 15, 14, 2, 6, 7, 33, 50, 69}
For Each numero In numeros
txtnumeros.Text = txtnumeros.Text & numero & ", "
Next

Se crea un arreglo llamado numeros de tipo Integer a la cual se le asignan diez


(10) valores. Con un ciclo For Each se imprime cada nmero que se encuentre en el
objeto numeros y son adicionados a la propiedad Text del objeto txtnumeros.
Dim suma As Integer = Aggregate sumanumeros In numeros Into Sum()
txtsuma.Text = suma

Se crea una consulta utilizando la funcin de agregado Sum para sumar los
valores del arreglo numeros y es asignado a la variable suma. Al objeto txtsuma se le
asigna el valor de suma.
Dim promedio As Integer = Aggregate promedionumeros In numeros Into Average()
txtpromedio.Text = promedio

Se crea una consulta utilizando la funcin de agregado Average para calcular el


promedio de los valores del arreglo numeros y es asignado a la variable promedio. Al
objeto txtpromedio se le asigna el valor de promedio.
Dim mayor As Integer = Aggregate mayornumeros In numeros Into Max()
txtmayor.Text = mayor

Se crea una consulta utilizando la funcin de agregado Max para obtener el


valor mayor del arreglo numeros y es asignado a la variable mayor. Al objeto
txtmayor se le asigna el valor de mayor.
Dim menor As Integer = Aggregate menornumeros In numeros Into Min()

284

txtmenor.Text = menor

Se crea una consulta utilizando la funcin de agregado Min para obtener el


valor menor del arreglo numeros y es asignado a la variable menor. Al objeto
txtmenor se le asigna el valor de menor.
Dim ordenados = From numerosordenados In numeros Order By numerosordenados
Ascending
For Each numero In ordenados
txtordenado.Text = txtordenado.Text & numero & ", "
Next

Se crea una variable llamada ordenados, a la cual se le asigna una consulta que
ordena (Order By) todos los valores de menor a mayor (Ascending) del arreglo
numeros. Con un ciclo For Each se imprime los nmeros ordenados en la propiedad
Text del objeto txtordenado.
Dim mayores = From numerosmayores In numeros Where numerosmayores > 40
For Each numero In mayores
txtmayores40.Text = txtmayores40.Text & numero & ", "
Next

Se crea una variable llamada mayores, a la cual se le asigna una consulta que
obtiene todos los valores mayores de 40 del arreglo numeros. Con un ciclo For Each
se imprime los nmeros que cumplen la condicin en la propiedad Text del objeto
txtmayores.
Dim mayoresmenores = From numerosmayoresmenores In numeros
Where numerosmayoresmenores > 60 Or numerosmayoresmenores < 10
For Each numero In mayoresmenores
txtmayoresmenores.Text = txtmayoresmenores.Text & numero & ", "
Next

Se crea una variable llamada mayoresmenores, a la cual se le asigna una


consulta que obtiene todos los valores mayores de 60 o menores de 10 del arreglo
numeros. Con un ciclo For Each se imprime los nmeros que cumplen la condicin en
la propiedad Text del objeto txtmayoresmenores.

Ejecutar el proyecto

Al ejecutarse el proyecto ConsultaLinqMatrices y pulsar el botn Ejecutar consulta


LINQ, se visualizar el formulario con todos las operaciones realizadas.
Figura 13.4 Ejecucin de la consulta LINQ con Matrices.

285

13.4.3 Consultar una base de datos SQL Server con LINQ To SQL
Disear una aplicacin llamada ConsultaLinqToSQL, que permita visualizar todos los
registros de una tabla perteneciente a una base de datos SQL Server. Dichos datos se
deben mostrar en una cuadricula. Se debe utilizar el componente LINQ to SQL.
NOTA: para este ejemplo se utilizar la base de datos SQL Server llamada
bdlibrovbnet (Ver anexo A, SQL Server).

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 1 Button, 1
DataGridView.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:


Tabla 13.3 Propiedades de controles proyecto ConsultaLinqToSQL.
Control
Button1
DataGridView1
Form1

Propie
dad
Name
Text
Name
Name
Text

Valor
boton
Ejecutar consulta LINQ to SQL
cuadricula
formulario
Consulta LINQ to SQL.

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 13.5 Interfaz de usuario (ConsultaLinqToSQL).

286

Agregar LINQ to SQL

Para agregar un objeto Clases LINQ to SQL puede realizar alguno de los siguientes
pasos:
1. Del men Proyecto seleccione Agregar nuevo elemento y busque la plantilla
Clases LINQ to SQL.
seleccionar Agregar nuevo elemento y busque la plantilla
2. Del icono
Clases LINQ to SQL.
3. En el Explorador de soluciones situarse en el nombre del proyecto, dar clic
derecho, seleccionar la opcin Agregar nuevo elemento y busque la
plantilla Clases LINQ to SQL.
Con cualquiera de las tres opciones se visualizar la siguiente figura:
Figura 13.6 Ventana para agregar una plantilla LINQ to SQL.

Seleccione la plantilla Clases de LINQ to SQL. En el cuadro de texto Nombre


cambie el nombre por MLinqToSQL.dbml (Database Markup Language), luego pulse
el botn Agregar para visualizar un nuevo objeto de datos relacionales LINQ to SQL.
En la lista del explorador de soluciones aparece un nuevo archivo con el nombre
asignado.

287

Figura 13.7 Ventana diseador relacional de objetos LINQ to SQL.

Pulse el link Explorador de servidores del diseador relacional de objetos para


ver la siguiente figura:
Figura 13.8 Ventana Explorador de servidores.

En dicha ventana pulse el icono conectar con bases de datos


la ventana de Agregar conexin como muestra la figura:

, se visualizar

288

Figura 13.9 Ventana Agregar conexin.

Para el ejemplo seleccione la base de datos bdlibrovbnet.mdf, la cual se


encuentra en la carpeta data de SQL Server (si la instalacin la realizo en c:\ la ruta
seria: C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data). Pulse
el botn Aceptar para visualizar la siguiente figura:
Figura 13.10 Explorador de servidores con la conexin a la base de datos.

Al pulsar en el signo (+) al lado del nombre de la base de datos se visualizar la


estructura definida en la base de datos. Si desea ver las tablas que contiene la base de
datos pulse el signo (+) al lado de Tablas.
Figura 13.11 Estructura de la base de datos bdlibrovbnet.mdf.

D clic sobre la tabla clientes y arrstrela hacia el diseador relacional de objeto,


289

se mostrar la siguiente ventana:


Figura 13.12 Ventana para incluir la conexin al proyecto actual.

Pulse el botn Si, para visualizar la siguiente figura:


Figura 13.13 Diseador relacional de objetos con la tabla clientes.

Escribir cdigo

Seleccione el objeto boton, d doble clic para abrir el editor de cdigo y escriba el
siguiente cdigo:
Dim vista As New MiLinqToSQLDataContext
Dim consulta = From misclientes In vista.clientes Select misclientes
cuadricula.DataSource = consulta

Se crea una instancia llamada vista de la clase MiLinqToSQLDataContext. La


clase DataContext corresponde al nombre del archivo .dbml. El archivo LINQ to SQL
es MiLinqToSQL, esta clase contiene mtodos y propiedades para la conexin a la
base de datos y para la manipulacin de los datos. Se crea una variable llamada
consulta a la cual se le asigna una consulta (From) que permite obtener todos los
registros de la tabla clientes de la base de datos bdlibrovbnet.mdf. Por ltimo se le
asigna a la propiedad DataSource del objeto DataGridView cuadricula el contenido de
la variable consulta.

290

Ejecutar el proyecto

Al ejecutarse el proyecto ConsultaLinqToSQL y pulsar el botn Ejecutar consulta


LINQ to SQL, se visualizar en la cuadricula todos los registros de la tabla clientes.
Figura 13.14 Ejecucin de la aplicacin ConsultaLinqToSQL.

13.4.4 Operaciones con una tabla de una base de datos SQL Server
Realizar una aplicacin llamada OperacionesLinqToSQL, que permita a un usuario
seleccionar el nombre de una empresa y visualizar todo el registro en campos de texto.
Adems, el usuario podr realizar las siguientes operaciones: modificar el registro,
eliminar el registro, crear y guardar un nuevo registro.
NOTA: para este ejemplo se utilizar la base de datos SQL Server llamada
bdlibrovbnet (Ver anexo A, SQL Server).

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 5 Button, 8 Label, 6
TextBox y 1 ComboBox.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:


Tabla 13.4 Propiedades de controles proyecto OperacionesLinqToSQL.
Control
Button1
Button2

Propiedad
Name
Text
Name
Text

botonbuscar
Mostrar registro
botonmodificar
Modificar registro

Valor

291

Button3
Button4
Button5
Label1
Label2
Label3
Label4
Label5
Label6
Label7
Label8
TextBox1
TextBox2
TextBox3
TextBox4
TextBox5
TextBox6
ComboBox1
DataGridView1
Panel1
Form1

Name
Text
Name
Text
Name
Text
Name
Text
Font - Bold
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Name
Text
Font - Bold
Name
Enabled
Name
Name
Name
Name
Name
Name
Name
Name
Borderstyle
Name
Text

botoneliminar
Eliminar registro
botonnuevo
Nuevo registro
botonguardar
Guardar nuevo registro
lblcliente
Seleccione cliente:
True
lblnit
Nit:
lblempresa
Empresa:
lblrepresentante
Representante:
lblciudad
Ciudad:
lbldireccion
Direccin:
lbltelefono
Telfono:
lblregistros
Registros actuales de la tabla
True
txtnit
False
txtempresa
txtrepresentante
txtciudad
txtdireccion
txttelefono
listaclientes
cuadricula
panel
FixedSingle
formulario
Operacin con una base de datos LINQ to SQL

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 13.15 Interfaz de usuario (OperacionesLinqToSQL).

292

Agregar LINQ to SQL

Del men Proyecto seleccione Agregar nuevo elemento y busque la plantilla Clases
LINQ to SQL, se visualizar la siguiente figura:
Figura 13.16 Agregar plantilla Clases de LINQ to SQL.

En el cuadro de texto Nombre cambie el nombre por MisDatos.dbml, luego


pulse el botn Agregar para visualizar un nuevo objeto de datos relacionales LINQ to
SQL. En la lista del explorador de soluciones aparece un nuevo archivo con el nombre
asignado.
Figura 13.17 Vista del diseador relacional de objetos.

Pulse el link Explorador de servidores del diseador relacional de objetos y


adicione la base de datos bdlibrovbnet.mdf y arrastre la tabla clientes hacia el

293

diseador, se debe observar una figura similar a la siguiente:


Figura 13.18 Diseador relacional de objetos con la tabla clientes.

En el control ComboBox listaclientes se van a mostrar los nombres de las


empresas que actualmente estn en la tabla clientes para ello d clic sobre la flecha
superior derecha de dicho objeto para ver Tareas de ComboBox.
Figura 13.19 Ventana Tareas de ComboBox.

D clic sobre el cuadro de verificacin Utilizar elementos enlazados a datos y


seleccione la opcin orgen de datos.
Figura 13.20 Ventana Orgen de datos.

294

Pulse sobre el link Agregar orgen de datos del proyecto, se mostrar el


Asistente para la configuracin de orgenes de datos.
Figura 13.21 Asistente para configurar el orgen de datos.

Seleccione el objeto Base de datos y pulse el botn Siguiente para ver la


ventana de eleccin de conexin de datos.
Figura 13.22 Ventana para elegir la conexin de datos.

Aparece la conexin a la base de datos bdlibrovbnet.mdf, pulse el botn


Siguiente para elegir los objetos de la base de datos a utilizar.
295

Figura 13.23 Ventana para elegir los objetos de base de datos.

Al pulsar en el signo (+) al lado del texto Tablas se visualizarn las diferentes
tablas de la base de datos, d clic sobre la tabla clientes, adems cambie el Nombre de
DataSet por conjuntodedatos y pulse el botn Finalizar para volver a modo diseo:
Figura 13.23 Ventana para elegir los objetos de base de datos.

Como se puede apreciar, se adicionaron los objetos conjuntodedatos,


clientesBindingSource y ClientesTableAdapter que permitirn obtener los datos de la
tabla clientes. Nuevamente seleccione el control listaclientes y en la opcin Mostrar
miembro seleccione el campo empresa y en la opcin Miembro de valor el campo
Nit. Esto permitir visualizar el campo empresa en el control y obtener el campo nit
seleccionado. Se obtendr la siguiente figura:
296

Figura 13.24 Control listaclientes con los campos empresa y nit seleccionados.

Escribir cdigo
a) Despes de la apertura de la clase Public class formulario y antes del primer
procedimiento Sub, d doble clic sobre el formulario y busque clase formulario
y escriba este cdigo escriba:
Public Class formulario
Dim vista As New MisDatosDataContext

Se crea una instancia llamada vista de la clase MisDatosdataContext. El


nombre de DataContext corresponde al nombre del archivo .dbml. El archivo LINQ to
SQL es MisDatos, esta clase contiene mtodos y propiedades para la conexin a la base
de datos y para manipular los datos. Esta instancia podr ser utilizadas por cualquier
procedimiento de la clase.
b) Despes de la apertura de la clase Public class formulario cree un
procedimiento Sub llamado datos() y escriba este cdigo escriba:
Public class formulario
::::::::::

Private Sub datos()


Dim datos = From actuales In vista.clientes
cuadricula.DataSource = datos
End Sub
End class

Se crea un procedimiento llamado datos que contiene una consulta de los datos
actuales de la tabla clientes, estos son asignados a la propiedad DataSource del objeto
DataGridView cuadricula.
c) Seleccione el objeto botonbuscar, d doble clic para abrir el editor de cdigo y
escriba el siguiente cdigo:

297

Dim registroseleccionado As String = listaclientes.SelectedItem(0)


Dim consulta = From miregistro In vista.clientes
Where miregistro.nit = registroseleccionado
For Each campos In consulta
txtnit.Text = campos.nit
txtempresa.Text = campos.empresa
txtrepresentante.Text = campos.representante
txtciudad.Text = campos.ciudad
txtdireccion.Text = campos.direccion
txttelefono.Text = campos.telefono
Next
datos()

Se crea una variable de tipo String llamada registroseleccionado a la cual se le


asigna el valor del campo nit seleccionado del objeto listaclientes (este valor se toma de
la opcion miembro de valor que es el item cero (0)). Por otro lado, se crea una consulta
que cargar el registro que cumpla la condicion de que el nit sea igual al registro
seleccionado. Con un ciclo For Each se le asigna a la propiedad Text de los objetos
TextBox cada uno de los campos del registro encontrado. Por ltimo se llama al
procedimiento datos para que muestre en la cuadricula los registros actualizados de la
tabla clientes.
d) Seleccione el objeto botonmodificar, d doble clic para abrir el editor de cdigo
y escriba el siguiente cdigo:
Dim respuesta = MsgBox("Desea guardar los cambios realizados",
MsgBoxStyle.YesNo)
If (respuesta = MsgBoxResult.Yes) Then
Try
Dim registroseleccionado As String = listaclientes.SelectedItem(0)
Dim consulta = From miregistro In vista.clientes
Where miregistro.nit = registroseleccionado
For Each campos In consulta
campos.nit = txtnit.Text
campos.empresa = txtempresa.Text
campos.representante = txtrepresentante.Text
campos.ciudad = txtciudad.Text()
campos.direccion = txtdireccion.Text
campos.telefono = txttelefono.Text
Next
vista.SubmitChanges()
Catch ex As Exception
MsgBox("Error en el sistema")
End Try
Else
MsgBox("Registro no modificado", MsgBoxStyle.Information)
End If
datos()

Se crea una variable llamada respuesta a la cual se le asigna un cuadro de


dilogo MsgBox con el mensaje Desea guardar los cambios realizados y un estilo
de mensaje Si/No. Si el usuario selecciona el botn Si se le asigna a una variable
llamada registroseleccionado el nit de la empresa seleccionada y se crea un consulta
que guarda el registro que cumpla la condicin. Con un ciclo For Each se le asigna a
cada campo del registro actual los valores de los objetos TextBox en su propiedad Text.

298

Utilizando el procedimiento SubmitChanges() se modifican los campos del registro


actual en la tabla. Si se pulsa el botn No se mostrar el mensaje Registro no
modificado.
e) Seleccione el objeto botoneliminar, d doble clic para abrir el editor de cdigo
y escriba el siguiente cdigo:
Dim respuesta = MsgBox("Desea Eliminar el registro seleccionado",
MsgBoxStyle.YesNo)
If (respuesta = MsgBoxResult.Yes) Then
Try
Dim registroseleccionado As String = listaclientes.SelectedItem(0)
Dim consultaeliminar = From miregistro In vista.clientes
Where miregistro.nit = registroseleccionado
For Each campos In consultaeliminar
vista.clientes.DeleteOnSubmit(campos)
Next
vista.SubmitChanges()
Catch ex As Exception
MsgBox("Error en el sistema")
End Try
Else
MsgBox("Registro no Eliminado", MsgBoxStyle.Information)
End If
datos()

Si el usuario selecciona el botn Si se le asigna a una variable llamada


registroseleccionado el nit de la empresa seleccionada y se crea un consulta que guarda
el registro que cumpla la condicin. Con un ciclo For Each se eliminan cada uno de los
campos del registro seleccionado utilizando el procedimiento DeleteOnSubmit() y con
el procedimiento SubmitChanges() se actualiza la tabla. Si se pulsa el botn No se
mostrar el mensaje Registro no Eliminado.
f) Seleccione el objeto botonnuevo, d doble clic para abrir el editor de cdigo y
escriba el siguiente cdigo:
txtnit.Text = ""
txtempresa.Text = ""
txtrepresentante.Text = ""
txtciudad.Text = ""
txtdireccion.Text = ""
txttelefono.Text = ""
txtnit.Enabled = True

Se asigna un espacio a la propiedad Text de los objetos TextBox. El objeto


txtnit se habilita para poder ecribir en l, modificando a True su propiedad Enabled.
g) Seleccione el objeto botonguardar, d doble clic para abrir el editor de cdigo
y escriba el siguiente cdigo:
Dim respuesta = MsgBox("Desea Guardar el nuevo registro", MsgBoxStyle.YesNo)
If (respuesta = MsgBoxResult.Yes) Then
Try
Dim nuevoregistro As New clientes With { _
.nit = txtnit.Text, .empresa = txtempresa.Text, _
.representante = txtrepresentante.Text, _
.ciudad = txtciudad.Text, .direccion = txtdireccion.Text, _

299

.telefono = txttelefono.Text}
vista.clientes.InsertOnSubmit(nuevoregistro)
vista.SubmitChanges()
txtnit.Enabled = False
Catch ex As Exception
MsgBox("Error en el sistema")
End Try
Else
MsgBox("Registro no guardado", MsgBoxStyle.Information)
End If
datos()

Si el usuario pulsa el botn Si se crea una instancia de la tabla clientes llamada


nuevoregistro y se le asigna a cada campo de la tabla los valores de la propiedad Text
de los objetos TextBox. Utilizando el procedimiento InsertOnSubmit() se inserta el
nuevo registro a la tabla clientes y con el procedimiento SubmitChanges() se actualiza
la tabla. Por otro lado, se deshabilita el objeto txtnit con False en su propiedad
Enabled. Si se pulsa el botn No se mostrar el mensaje Registro no guardado.

Ejecutar el proyecto

Al ejecutarse el proyecto OperacionesLinqToSQL, seleccionando un nombre de


empresa del control listaclientes y pulsar el botn Mostrar registro, se visualizar en
los campos de texto el registro seleccionado y en la cuadricula todos los registros de la
tabla clientes.
Figura 13.25 Ejecucin de la aplicacin OperacionesLinqToSQL.

Al registro seleccionado lo podr modificar o eliminar. Tambin se podr crear y


guardar un nuevo registro.

300

13.4.5 Relacin entre dos tablas de una base de datos SQL Server
Disear una aplicacin llamada RelacionTablasLINQ, que permita a un usuario
seleccionar el nombre de una empresa y visualizar todos los pedidos que dicha empresa
ha realizado.
NOTA: para este ejemplo se utilizar la base de datos SQL Server llamada
bdlibrovbnet (Ver anexo A, SQL Server).

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 1 Button, 2 Label, 1
DataGridView y 1 ComboBox.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:


Tabla 13.5 Propiedades de controles proyecto RelacionTablasLINQ.
Control
Button1
Label1
Label2
ComboBox1
DataGridView1
Form1

Propiedad
Name
Text
Text
Name
Text
Font - Bold
Name
Text
Font - Bold
Name
Name
Name
Text

Valor
boton
Obtener Pedidos
Guardar nuevo registro
lblclientes
Seleccione Cliente:
True
lblpedidos
Pedidos del cliente seleccionado
True
listaclientes
cuadricula
formulario
Relacin tablas LINQ to SQL

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 13.26 Interfaz de usuario (RelacionTablasLINQ).

301

Agregar clase LINQ to SQL

Del men Proyecto seleccione Agregar nuevo elemento y busque la plantilla Clases
LINQ to SQL. En el cuadro de texto Nombre cambie el nombre por
DatosRelacionados.dbml, luego pulse el botn Agregar para visualizar un nuevo
objeto de datos relacionales LINQ to SQL.
En la lista del explorador de soluciones aparece un nuevo archivo con el nombre
asignado. Se obtendr la siguiente figura:
Figura 13.27 Vista del diseador relacional de objetos DatosRelacionados.dbml.

Pulse el link Explorador de servidores del diseador relacional de objetos y


adicione la base de datos bdlibrovbnet.mdf y arrastre las tablas clientes y pedidos
hacia el diseador, se debe observar una figura similar a la siguiente:
Figura 13.28 Diseador relacional de objetos con las tablas clientes y pedidos.

302

En el formulario seleccione el control ComboBox listaclientes para adicionar


los nombre de las empresas de la tabla clientes para ello d clic sobre la flecha superior
derecha de dicho objeto para ver las Tareas de ComboBox. D clic sobre el cuadro de
verificacin Utilizar elementos enlazados a datos y escoja la opcin orgen de datos.
Figura 13.29 Ventana Orgen de datos del control listaclientes.

Pulse sobre el link Agregar orgen de datos del proyecto, se mostrar el


Asistente para la configuracin de orgenes de datos.
Figura 13.30 Asistente para configurar el orgen de datos.

Seleccione el objeto Base de datos y pulse el botn Siguiente hasta encontrar la


ventana para elegir los objetos de la base de datos a utilizar. En dicha ventana al
pulsar en el signo (+) al lado del texto Tablas se visualizar las diferentes tablas de la
base de datos, d clic sobre la tabla clientes, adems cambie el Nombre de DataSet por
conjuntodedatos. En este momento se observara la siguiente figura:
303

Figura 13.31 Ventana para elegir los objetos de base de datos.

Al pulsar el botn Finalizar se vuelve al formulario y se adicionan los objetos


conjuntodedatos, clientesBindingSource y ClientesTableAdapter que permitirn
manipular los datos de la tabla clientes. En las opciones del objeto listaclientes,
Mostrar miembro escoja el campo empresa y en Miembro de valor el campo nit, se
mostrara la siguiente figura:
Figura 13.32 Formulario con datos enlazados al objeto listaclientes.

Escribir cdigo

Seleccione el objeto botonbuscar, d doble clic para abrir el editor de cdigo y escriba
el siguiente cdigo:
304

Dim vista As New DatosRelacionadosDataContext


Dim empresaseleccionada As String = listaclientes.SelectedItem(0)
Dim consultajoin = From misclientes In vista.clientes _
Join mispedidos In vista.pedidos _
On misclientes.nit Equals mispedidos.nit _
Where mispedidos.nit = empresaseleccionada _
Select mispedidos.nit, misclientes.ciudad, misclientes.representante,
mispedidos.nropedido, mispedidos.fechaentrega,
mispedidos.observacion
cuadricula.DataSource = consultajoin

Se
crea
una
instancia
llamada
vista
de
la
clase
DatosRelacionadosDataContext. El nombre de DataContext corresponde al nombre
del archivo .dbml. El archivo LINQ to SQL es DatosRelacionados. Tambin se crea
una variable de tipo String llamada empresaseleccionada a la cual se le asigna el valor
del campo nit seleccionado del objeto listaclientes (este valor se toma de la opcion
miembro de valor que es el item cero (0)). Por otro lado, se crea una consulta
combinada con la clausula Join que realiza la relacion de las tablas clientes, pedidos
por el campo comn nit (Equals), con la condicion (Where) de que el nit sea igual al
registro seleccionado, adems se seleccionan (Select) los campos de las dos tablas que
se quieren mostrar. Por ltimo se asigna a la propiedad DataSource del objeto
cuadricula el resultado de la consulta (consultajoin).

Ejecutar el proyecto

Al ejecutarse el proyecto RelacionTablasLINQ, seleccionando un nombre de empresa


del control listaclientes y pulsar el botn Obtener Pedidos, se visualizar en la
cuadricula cada uno de los pedidos de dicho cliente.
Figura 13.33 Ejecucin de la aplicacin RelacionTablasLINQ.

305

13.4.6 Relacin tablas con LINQ to SQL y DataGridView


Crear una aplicacin llamada RelacionTablasDataGridViewLINQ, que permita a un
usuario seleccionar de una cuadricula un registro de la tabla clientes y visualizar todos
los pedidos que dicho cliente ha realizado en una cuadricula.
NOTA: para este ejemplo se utilizar la base de datos SQL Server llamada
bdlibrovbnet (Ver anexo A, SQL Server).

Agregar clase LINQ to SQL

Del men Proyecto seleccione Agregar nuevo elemento y busque la plantilla Clases
LINQ to SQL. En el cuadro de texto Nombre cambie el nombre por
DatosDataGridView.dbml.
Figura 13.34 Plantilla Clases de LINQ to SQL.

Pulse el botn Agregar para visualizar un nuevo objeto de datos relacionales


LINQ to SQL. En la lista del explorador de soluciones aparece un nuevo archivo con el
nombre asignado. Se obtendr la siguiente figura:
Figura 13.35 Diseador relacional de objetos de la clase LINQ to SQL.

306

Pulse el link Explorador de servidores del diseador relacional de objetos y


adicione la base de datos bdlibrovbnet.mdf y arrastre las tablas clientes y pedidos
hacia el diseador, se debe observar una figura similar a la siguiente:
Figura 13.36 Diseador relacional de objetos con las tablas clientes y pedidos.

Crear el orgen de datos.

Para agregar el orgen de datos se deben realizar los siguientes pasos:


1. En el men Generar, d clic en Generar RelacionTablasDataGridVieWLINQ.
2. En el men Datos, d clic en Mostrar orgenes de datos.

Figura 13.37 Ventana Orgenes de datos.

3. En la ventana Orgenes de datos, d clic en el link Agregar nuevo orgen de datos


para ver la ventana de eleccin de un tipo de orgen de datos.

307

Figura 13.38 Ventana para configurar orgen de datos.

4. Seleccione el icono Objeto y pulse el botn Siguiente para ver la ventana de eleccin
del objeto a enlazar.

Figura 13.39 Ventana para configurar orgen de datos.

D clic sobre el signo (+) de los objetos RelacionTablasDataGridViewLINQ,


seleccione el objeto clientes y pulse el botn Finalizar para volver a modo diseo y
visualizar los datos en la ventana Orgenes de datos.
Figura 13.40 Ventana orgen de datos con los datos anexados.

308

Al tener el orgen de datos, seleccione el formulario y d clic sobre el objeto


clientes del orgen de datos y arrstrelo hacia el formulario. Se obtendr la siguiente
figura:
Figura 13.41 Formulario con el objeto clientes.

Como se aprecia se agrego al formulario los objetos ClientesBindnigSource y


ClientesBindingNavigator y un control DataGridView que mostrar todos los
registros de la tabla clientes. Ahora seleccione el objeto pedidos del orgen de datos y
arrstrelo hacia el formulario para crear un nuevo objeto DataGridView para los datos
de la tabla pedidos. Modifique los controles hasta obtener una figura similar a la
siguiente:
Figura 13.42 Formulario con los objetos clientes y pedidos en DataGridView.

Nota: si se visualiza alguna advertencia vuelva a generar el proyecto desde el men


Generar.
309

Escribir cdigo
a) D doble clic sobre el formulario y despus de la creacin de la clase Form1
escriba el siguiente cdigo:
Public Class Form1
Dim vistadatos As New DatosDataGridViewDataContext
::::::::
::::::::
End Class

Se
crea
una
instancia
llamada
vistadatos
de
la
clase
DatosDaTaGridViewDataContext. El nombre de DataContext corresponde al
nombre del archivo .dbml. El archivo LINQ to SQL es DatosDataGridView.
b) En el procedimiento Form1_Load del formulario escriba el siguiente cdigo:
ClientesBindingSource.DataSource = vistadatos.clientes

Al orgen de datos ClientesBindingSource en su propiedad DataSource se le


asigna los datos de la tabla clientes.

Ejecutar el proyecto

Al ejecutarse el proyecto RelacionTablasDataGridView, al seleccionar un registro de


la cuadricula donde aparecen los campos de la tabla clientes, en la cuadricula de la tabla
pedidos aparecern todos los registros relacionados (si existen registros) con la tabla
clientes.
Figura 13.43 Ejecucin de la aplicacin RelacionTablasDataGridView.

310

13.4.7 Consulta LINQ to DataSet


Elaborar una aplicacin llamada ConsultaLinqDataSet, que permita visualizar las
tablas clientes, pedidos y la relacin de estas en controles DataGridView, cuyo nit sea
igual a 100 utilizando la consulta LINQ to DataSet.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario en la posicin deseada: 3 DataGridView.
NOTA: para este ejemplo se utilizar la base de datos SQL Server llamada
bdlibrovbnet (Ver anexo A, SQL Server).

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:


Tabla 13.6 Propiedades de controles proyecto ConsultaLinqDataSet.
Control
DataGridView1
DataGridView2
DataGridView3
Form1

Propie
dad
Name
Name
Name
Name
Text

Valor
datosclientes
datospedidos
tablasrelacionadas
formulario
Consulta LINQ to DataSet.

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 13.44 Interfaz de usuario (ConsultaLinqDataSet).

311

Escribir cdigo

Seleccione el objeto formulario, d doble clic para abrir el editor del procedimiento
Formulario_Load y escriba el siguiente cdigo:
Dim conexion As String = "Data Source=(local)\SQLEXPRESS; Database=bdlibrovbnet;
Integrated Security=True"

Se crea una variable llamada conexion de tipo String que contendr la cadena
de conexin a la base de datos de SQL Server. La cadena de conexin contiene el orgen
de datos (Data Source), el nombre de la base de datos SQL Server (DataBase) y la
seguridad integrada (True
Dim cargarclientes As New SqlClient.SqlDataAdapter("SELECT * FROM clientes",
conexion)
Dim comandoclientes As New SqlClient.SqlCommandBuilder(cargarclientes)
Dim conjuntodedatos As New DataSet()
cargarclientes.Fill(conjuntodedatos, "clientes")
Dim cargarpedidos As New SqlClient.SqlDataAdapter("SELECT * FROM
pedidos",conexion)
Dim comandopedidos As New SqlClient.SqlCommandBuilder(cargarpedidos)
cargarpedidos.Fill(conjuntodedatos, "pedidos")

Se crean los siguientes objetos: cargarclientes a la cual se le asigna espacio de


memoria de tipo SqlDataAdapter y recibe como parmetros la seleccin de la tabla
clientes y la cadena de conexin; comandoclientes a la cual se le asigna espacio de
memoria de tipo SqlCommandBuilder (genera comandos para manipular una nica
tabla) y recibe como parmetro el objeto cargarclientes; conjuntodedatos de tipo
DataSet que almacenar en memoria cach los datos de las tablas. Utilizando la funcin
Fill se rellena el objeto cargarclientes con los datos de la tabla clientes y recibe como
parmetros el DataSet y un alias de la tabla. El mismo proceso se realiza para obtener
los datos de la tabla pedidos.
datosclientes.DataSource = conjuntodedatos.Tables("clientes")
datosclientes.Refresh()
datospedidos.DataSource = conjuntodedatos.Tables("pedidos")
datospedidos.Refresh()

Se asigna a la propiedad DataSource de los objetos DataGridView


datosclientes y datospedidos el conjunto de datos respectivo. Con el procedimiento
Refresh() se refresca cada uno de los controles DataGridView.
Dim tabladatosclientes As DataTable = conjuntodedatos.Tables("clientes")
Dim tabladatospedidos As DataTable = conjuntodedatos.Tables("pedidos")

Se crean dos objeto de tipo DataTable ( tabla de datos en memoria)


tabladatosclientes, tabladatospedidos a los cuales se le asignan los datos de las tablas
clientes, pedidos respectivamente.
Dim consultalinqdataset = From filaclientes In tabladatosclientes.AsEnumerable _
Join filapedidos In tabladatospedidos.AsEnumerable _
On filaclientes.Field(Of String)("nit") Equals filapedidos.Field(Of String)("nit") _
Where (filaclientes.Field(Of String)("nit") = 100) _
Select New With { _
.nit = filaclientes.Field(Of String)("nit"), _
.empresa = filaclientes.Field(Of String)("empresa"), _

312

.representante = filaclientes.Field(Of String)("representante"), _


.fechaentrega = filapedidos.Field(Of String)("fechaentrega"), _
.observacion = filapedidos.Field(Of String)("observacion") _

}
tablasrelacionadas.DataSource = consultalinqdataset.ToList

Se crea una consulta combinada con la clausula Join que realiza la relacion de las
tablas clientes, pedidos por el campo comn nit (Equals), con la condicion (where) de
que el nit sea igual a 100, adems, se seleccionan (Select New With) los campos de las
dos tablas que se quieren mostrar. Por ltimo se asigna a la propiedad DataSource del
objeto tablasrelacionadas el resultado de la consulta (consultalinqdataset). Se utiliza
la funcin AsEnumerable para obtener una coleccin de todas las filas de los datos,
como tambin la funcin Field para el especificar el tipo de dato de las columnas de
cada fila.

Ejecutar el proyecto

Al ejecutarse el proyecto ConsultaLinqDataSet, se visualizar en el formulario los


controles DataGridView con las tablas clientes, pedidos y la relacin de dichas tablas
con los datos relacionados del nit igual a 100.
Figura 13.45 Ejecucin de la consulta LINQ to DataSet.

313

13.5 Ejercicios de consulta LINQ


1. Crear un programa que permita realizar una conexin a una base de datos y
mostrar datos de una tabla utilizando una consulta LINQ.
2. Elaborar un programa que permita realizar una consulta que permita eliminar los
registros cuyo nit sea mayor que 500.
3. Escribir un programa que permita por medio de una consulta visualizar los
registros de una tabla cuyo nombre de empresa empiecen por la letra C.
4. Disear un programa que permita con una consulta visualizar los nombre de los
productos de la tabla productos en un control DataGridView.
5. Hacer un programa que permita visualizar una consulta de la tabla clientes
ordenada por un campo de dicha tabla especificada por un usuario.
6. Realizar un programa que permita visualizar en una consulta los registros
relacionados de las tablas clientes y pedidos cuya fecha de entrega sea igual o
mayor que 02/23/2008.
7. Hacer un programa que permita visualizar en una consulta los registros
relacionados de las tablas clientes cuya fecha de vencimiento sea el mes de
agosto.
8. Realizar un programa que permita visualizar en una consulta todos los productos
cuyo valor sea mayor que 5000.
9. Realizar un programa que permita visualizar en una consulta la relacin entre
tres tablas de una base de datos en SQL Server.
10. Hacer un programa que permita visualizar en una consulta todos los pedidos que
tengan ms de tres productos.

314

14. APLICACIONES WEB ASP.NET


ASP.NET es un marco de trabajo de programacin generado en Common Language
Runtime que puede utilizarse en un servidor para generar eficaces aplicaciones Web.
ASP.NET, ofrece varias ventajas importantes, como son:

Mejor rendimiento. ASP.NET aprovecha las ventajas del enlace anticipado, la


compilacin just-in-time, la optimizacin nativa y los servicios de cach desde
el primer momento.

Compatibilidad con herramientas de primer nivel. El marco de trabajo de


ASP.NET se complementa con un diseador y una caja de herramientas muy
completos en el entorno integrado de programacin (Integrated Development
Environment, IDE) de Visual Studio.

Eficacia y flexibilidad. La biblioteca de clases de .NET Framework, la


mensajera y las soluciones de acceso a datos se encuentran accesibles desde el
Web de manera uniforme. ASP.NET es tambin independiente del lenguaje, por
lo que puede elegir el lenguaje que mejor se adapte a la aplicacin o dividir la
aplicacin en varios lenguajes.

Simplicidad. El marco de trabajo de las pginas de ASP.NET permite generar


interfaces de usuario, que separan claramente la lgica de aplicacin del cdigo
de presentacin y controlar eventos en un sencillo modelo de procesamiento de
formularios de tipo Visual Basic.

Facilidad de uso. ASP.NET emplea un sistema de configuracin jerrquico,


basado en texto, que simplifica la aplicacin de la configuracin al entorno de
servidor y las aplicaciones Web. Una aplicacin ASP.NET Framework se
implementa en un servidor sencillamente mediante la copia de los archivos
necesarios al servidor.

Escalabilidad y disponibilidad. El motor de tiempo de ejecucin de ASP.NET


controla y administra los procesos de cerca, por lo que si uno no se comporta
adecuadamente (filtraciones, bloqueos), se puede crear un proceso nuevo en su
lugar, lo que ayuda a mantener la aplicacin disponible constantemente para
controlar solicitudes.

Posibilidad de personalizacin y extensibilidad. ASP.NET presenta una


arquitectura bien diseada que permite a los programadores insertar su cdigo en
el nivel adecuado.
Seguridad. Con la autenticacin de Windows integrada y la configuracin por
aplicacin, se puede tener la completa seguridad de que las aplicaciones seguras.

Este tutorial se trabaja con el entorno de desarrollo de Microsoft Visual Studio


.NET 2008.
ASP.NET es un entorno de programacin que se ejecuta en un servidor Web
para generar y administrar pginas Web. Visual Studio 2008 proporcionar el diseador
de formularios Web, un editor, controles y un sistema de depuracin para facilitar la
creacin de aplicaciones que guardadas en un servidor pueden ser accesadas desde un
315

explorador, telfonos mviles, etc...


Figura 14.1 Pgina de Inicio de Visual Studio 2008.

14.1 Aplicacin Web (ASP.NET)


Crear una aplicacin Web ASP.NET utilizando el lenguaje de programacin Visual
Basic .NET requiere de unos pasos muy sencillos como son: iniciar un nuevo sitio Web,
crear la interfaz del usuario, establecer las propiedades de los objetos, escribir el cdigo
y ejecutar el sitio Web.
Como ejemplo, se crear un sitio Web llamado PedidoWeb que permita a un
usuario seleccionar comida y bebida en un restaurante y visualizar el valor a pagar por
los productos pedidos. Se debe imprimir el subtotal, el impuesto por valor agregado
(I.V.A. 16%) y el valor neto a pagar.
14.1.1 Crear un nuevo sitio Web
Para iniciar un nuevo sitio Web desde la pgina de inicio de Visual Studio 2008, se
puede realizar uno de los siguientes pasos:
1. En la ventana proyectos recientes seleccionar la opcin Crear: link Sitio Web
2. Dar clic en el men Archivo y seleccionar Nuevo sitio Web...

Al escoger una de las dos opciones se visualizar la ventana Nuevo sitio Web,
donde se deber seleccionar la plantilla SitioWeb ASP.NET.

316

Figura 14.2 Ventana Nuevo sitio Web ASP.NET.

En la opcin Ubicacin puede crear el sitio web en un Sistema de archivos


(Discos de trabajo), una ubicacin HTTP o FTP, escoja Sistema de archivos. Con el
botn Examinar puede buscar la carpeta donde desea guardar el nuevo sitio Web o
simplemente digite la ruta de trabajo y a continuacin asigne el nombre del sitio
PedidoWeb. El lenguaje ser Visual Basic. Pulse el botn Aceptar para visualizar el
entorno de diseo del sitio Web PedidoWeb.
Figura 14.3 Entorno de diseo de un nuevo sitio Web.

317

Como se puede apreciar, el entorno de desarrollo es parecido al entorno de las


aplicaciones Windows Forms. En l encontrar:
1. Men principal y la barra de herramientas estndar: Proporcionan acceso a
la mayora de comandos que controlan el entorno de programacin de Visual
Studio .NET.
2. Cuadro de Herramientas: El cuadro de herramientas contiene las fichas:
Estndar, Datos, Validacin, Navegacin, Inicio de sesin, Elementos Web,
Extensiones Ajax, Informe, HTML. Cada ficha contiene controles que al
aadirse a un formulario Web se convierte en un objeto de la interfaz de usuario
programable en la aplicacin.
3. Diseador formularios Web: Cuando se inicia un sitio Web el diseador de
formularios de Web se abre en vista Diseo (un formulario tiene vista diseo
cundo se inicia el sitio y est en modo de ejecucin cuando se ejecuta la
aplicacin), mostrndose el formulario Web Default.aspx. En la parte inferior
del formulario Web se encuentran las pestaas Diseo, Dividir (divide el
formulario Web en dos partes: una en modo diseo y en la otra mitad se
visualiza el cdigo HTML del formulario Web), Cdigo (muestra el cdigo
HTML), como tambin las pestaas <html>, <body>, <form#form1>, <div>.
En dicho formulario Web se pueden ubicar los controles u objetos necesarios
para la aplicacin arrastrndolos desde el cuadro de herramientas para crear la
interfaz de usuario.
4. Explorador de soluciones: Visualiza las carpetas y archivos que se han creado.
Si observa en la carpeta donde guard el sitio Web se cre la carpeta App_Data
y los archivos Default.aspx, Default.aspx.vb (este archivo contiene el cdigo
fuente que da soporte a la pgina Default.aspx) y Web.xml (archivo de
configuracin xml).
5. Ventana de propiedades: Muestra una lista de las propiedades que facilitan la
configuracin de los valores o propiedades del control seleccionado y se pueden
modificar mientras se crea o se edita la aplicacin. Una propiedad describe una
caracterstica de un objeto, como el tamao, ttulo, color, etc.
6. Ventana lista de errores: Muestra una lista de los errores, advertencias o
mensajes que se generan al realizar modificaciones a los controles o al ejecutar
la aplicacin.
14.1.2 Crear la interfaz de usuario
Para crear la interfaz de usuario del sitio Web, en primer lugar se deben ubicar los
controles necesarios en el formulario Web desde el cuadro de herramientas. Para el
ejemplo se diseara la interfaz de usuario utilizando los siguientes controles: 7 Label, 3
TextBox, 1 ListBox 1 DropDownList, 2 Button y 1 GridView (ficha datos).
Cuando existen varios controles del mismo tipo, estos se numeran en el mismo
orden en que son colocados (nombre del control ms numero del consecutivo). La
interfaz inicial de usuario del ejemplo debera mostrar el siguiente aspecto:

318

Figura 14.4 Interfaz de usuario inicial sitio Web PedidoWeb.

14.1.3 Establecer las propiedades de los controles


Despus de colocar los controles u objetos a un formulario Web, se puede establecer sus
propiedades en la ventana Propiedades o en el Editor de cdigo.
Para modificar las propiedades se selecciona el control en el formulario Web y
se cambia su configuracin en la ventana Propiedades. Para el caso del ejemplo
establezca las siguientes modificaciones a cada uno de los siguientes controles:
Tabla 14.1 Propiedades de los controles del sitio PedidoWeb.
Control
Label1
Label2
Label3
Label4
Label5
Label6
Label7
TextBox1
TextBox2
TextBox3
ListBox1

Propiedad
ID
Text
Font - Bold
ID
Text
ID
Text
ID
Text
Font - Bold
ID
Text
ID
Text
ID
Text
ID
ID
ID
ID

Valor
lbltitulo
Pedidos Restaurante la FRIKY.
True
lblcomida
Seleccione Comida:
lblbebida
Seleccione Bebida:
lblpedido
Pedido
True
lblsubtotal
SubTotal:
lbliva
I.V.A.:
lbltotal
Neto a Pagar:
txtsubtotal
txtiva
txtsubtotal
listacomida

319

DropDownList1
Button1
Button2
GridView1
Form1
Document
Default.aspx

AutoPostBack
ID
AutoPostBack
ID
Text
ID
Text
ID
ID
Title
Nombre del archivo

True
listabebida
True
botoncomida
Adicionar Comida
botonbebida
Adicionar Bebida
tablapedido
formulario
Restaurante la FRIKY
pagina.aspx

Ahora seleccione el control ListBox llamado listacomida, d clic en la flecha de


la parte superior derecha del control para ver las Tareas de ListBox y escoja la opcin
Editar Elementos para ver la ventana Editor de la coleccin ListItem:
Figura 14.5 Ventana Editor de la coleccin ListItem del control listacomidas.

Pulse el botn Agregar del Editor de la coleccin ListItem, busque la


propiedad Text y cambie el texto por Arroz con Pollo. Realice los mismos pasos para
agregar los textos: Pescado, Mondongo, Ajiaco, Carne. Por ltimo pulse el botn
Aceptar.
Figura 14.6 Elementos agregados al objeto listacomida.

320

Luego seleccione el control DropDownList llamado listabebida, d clic en la


flecha de la parte superior derecha del control para ver las Tareas de DropDownList y
escoja la opcin Editar Elementos para ver la ventana Editor de la coleccin
ListItem y adicione de la misma forma los siguientes elementos de la misma forma
como se hizo en el control listacomida: Cerveza, Jugo, Limonada, Vino, Gaseosa.
Figura 14.7 Elementos agregados al objeto listabebida

La interfaz de usuario con las modificaciones respectivas en las propiedades de


cada control queda como se muestra en la siguiente figura:
Figura 14.8 Formulario Web final de la interfaz de usuario.

Por ltimo si se desea cambiar el formato del objeto GridView tablapedido,


321

seleccinelo y d clic en la flecha de la parte superior derecha del control para ver las
Tareas de GridView y escoja la opcin formato automtico para ver la ventana
Autoformato y elija el formato que desee. Para el ejemplo, se escogi el formato
Multicolor.
14.1.4 Escribir cdigo
Una vez se hayan establecido las propiedades del formulario Web y sus objetos, se
puede agregar el cdigo que se ejecutar en respuesta a un evento especifico de cada
control.
1. Despes de la apertura de Partial class _Default y antes del primer
procedimiento Sub, declare como publicas las variables llamadas valor, i,
sumar de tipo Integer. D doble clic sobre el formulario y escriba este cdigo
escriba:
Partial Class _Default
Inherits System.Web.UI.Page
Dim datos As New Data.DataTable
Public Shared valor, sumas As Integer

Se declara el objeto datos al cual se le asigna espacio de memoria de tipo


DataTable (tabla de datos). Por otro lado, se establecen como pblicas compartidas
(public shared) las variables valor, sumas de tipo Integer. Son declaradas compartidas
porque se est trabajando en un entorno Web.
2. Seleccione el objeto formulario, d doble clic para abrir el editor del
procedimiento Page_Load y escriba el siguiente cdigo:
If IsPostBack Then
datos.Columns.Add("Producto")
datos.Columns.Add("Precio")
End If

Cuando se cargue la pgina en el explorador (IsPostBack) se le adiciona al


objeto datos las columnas que se van a mostrar en el GridView.
3. D doble clic en el objeto ListBox llamado listacomida, para abrir el editor del
procedimiento listacomida_SelectedIndexChanged y escriba el siguiente
cdigo:
If listacomida.SelectedIndex = 0 Then
valor = 10000
End If
If listacomida.SelectedIndex = 1 Then
valor = 13000
End If
If listacomida.SelectedIndex = 2 Then
valor = 8000
End If
If listacomida.SelectedIndex = 3 Then
valor = 9000
End If

322

If listacomida.SelectedIndex = 3 Then
valor = 12000
End If

En el anterior cdigo se utiliza la estructura de control If para determinar qu


posicin del objeto listacomida se ha seleccionado utilizando la propiedad
SelectedIndex. Dependiendo del index seleccionado se le asignar al objeto valor el
valor correspondiente.
4. D doble clic en el objeto DropDownList llamado listabebida, para abrir el
editor del procedimiento listabebida_SelectedIndexChanged y escriba el
siguiente cdigo:
If listabebida.SelectedIndex = 0 Then
valor = 3000
End If
If listabebida.SelectedIndex = 1 Then
valor = 2000
End If
If listacomida.SelectedIndex = 2 Then
valor = 1800
End If
If listabebida.SelectedIndex = 3 Then
valor = 4000
End If
If listabebida.SelectedIndex = 3 Then
valor = 1500
End If

Con la estructura de control If se obtiene el elemento seleccionado del objeto


listabebida. Dependiendo del index seleccionado se le asignar al objeto valor el valor
correspondiente.
5. D doble clic en el objeto Button llamado botoncomida, para abrir el editor del
procedimiento botoncomida_Click y escriba el siguiente cdigo:
Dim nuevafila As Data.DataRow
Dim i As Integer
For i = 0 To tablapedido.Rows.Count - 1
nuevafila = datos.NewRow()
Dim fila As GridViewRow = tablapedido.Rows(i)
nuevafila("Producto") = fila.Cells(0).Text
nuevafila("Precio") = fila.Cells(1).Text
datos.Rows.Add(nuevafila)
Next
nuevafila = datos.NewRow()
nuevafila("Producto") = listacomida.SelectedItem
nuevafila("Precio") = valor
datos.Rows.Add(nuevafila)
tablapedido.DataSource = datos
tablapedido.DataBind()
sumas = 0
For i = 0 To tablapedido.Rows.Count - 1
Dim sumafila As GridViewRow = tablapedido.Rows(i)
sumas = sumas + Val(sumafila.Cells(1).Text)
Next
txtsubtotal.Text = Val(sumas)

323

txtiva.Text = Val(txtsubtotal.Text) * 0.16


txttotal.Text = Val(txtsubtotal.Text) + Val(txtiva.Text)

Inicialmente se crea un objeto llamado nuevafila de tipo DataRow (representa


una fila de datos) y la variable i de tipo Integer. En el caso de que ya existan filas en el
objeto GridView, con un primer ciclo For se recorrer el objeto GridView tablapedido
para guardar en el objeto datos las filas actuales antes de adicionar una nueva. En dicho
ciclo al objeto nuevafila se le asigna una nueva fila (NewRow ()). Utilizando la funcin
Rows se le asigna a la variable fila de tipo GridViewRow la fila actual del objeto
tablapedido y a nuevafila se le asignan el nombre de las columnas y los valores de
dichas columnas en la posicin actual. Por ltimo se adiciona al objeto datos la nueva
fila (Rows.add). Al salir del ciclo al objeto nuevafila se le asigna una nueva fila y se le
adiciona a la columna Producto el texto seleccionado del objeto listacomida y a la
columna Precio el valor de lo seleccionado y luego es adicionado al objeto datos.
Utilizando la propiedad DataSource del objeto tablapedidos se le asigna el objeto
datos y se enlaza al orgen de datos (tablapedido.DataBind ()). En un segundo ciclo
For se recorre cada una de las filas que contenga el objeto tablapedido y se asigna a la
variable suma el valor de ella misma ms los valores encontrados en la columna Precio.
Por ltimo se asignan los siguientes valores a los objeto TextBox: txtsubtotal el valor
de la variable sumas; a txtiva el 16 % del valor del objeto txtsubtotal; y a txttotal la
suma de los objetos txtsubtotal y txtiva.
6. D doble clic en el objeto Button llamado botonbebida, para abrir el editor del
procedimiento botoncomida_Click y escriba el siguiente cdigo:
Dim nuevafila As Data.DataRow
Dim i As Integer
For i = 0 To tablapedido.Rows.Count - 1
nuevafila = datos.NewRow()
Dim fila As GridViewRow = tablapedido.Rows(i)
nuevafila("Producto") = fila.Cells(0).Text
nuevafila("Precio") = fila.Cells(1).Text
datos.Rows.Add(nuevafila)
Next
nuevafila = datos.NewRow()
nuevafila("Producto") = listabebida.SelectedItem
nuevafila("Precio") = valor
datos.Rows.Add(nuevafila)
tablapedido.DataSource = datos
tablapedido.DataBind()
sumas = 0
For i = 0 To tablapedido.Rows.Count - 1
Dim sumafila As GridViewRow = tablapedido.Rows(i)
sumas = sumas + Val(sumafila.Cells(1).Text)
Next
txtsubtotal.Text = Val(sumas)
txtiva.Text = Val(txtsubtotal.Text) * 0.16
txttotal.Text = Val(txtsubtotal.Text) + Val(txtiva.Text)

El nico cambio que se realiza en el objeto botonbebida con respecto al anterior


cdigo es que al objeto nuevafila se le adiciona a la columna Producto el texto
seleccionado del objeto listabebida.

324

14.1.5 Ejecutar la aplicacin Web


Para ejecutar el sitio Web en el entorno de desarrollo de Visual Basic.NET se debe
realizar lo siguiente:
1. Haga clic en el botn Iniciar depuracin de la barra de herramientas estndar.
Tambin puede presionar Ctrl+F5 para ejecutar el sitio Web. Otra forma es la opcin
Iniciar depuracin del men Depurar.
2. Cuando termine de ejecutar la aplicacin se debe cerrar el formulario Web para
regresar al entorno de programacin.

Figura 14.9 Ventana de Ejecucin sitio Web PedidoWeb

Cuando se ejecuta el sitio Web se visualizar la ventana de Depuracin no


habilitada. Si se ejecuta Modificar el archivo Web.config para habilitar la
depuracin se mostrar la pgina Web en el explorador seleccionado y esta ventana no
se volver a mostrar al ejecutarse nuevamente el sitio Web, por el contrario, si se
selecciona Ejecutar sin depuracin se mostrar inicialmente una pgina Web en
blanco, la cual deber cerrar para visualizar el sitio Web ejecutado (cada vez que se
ejecute esta opcin se visualizar la ventana de Depuracin no habilitada). Seleccione la
primera opcin para ver la siguiente figura.
Figura 14.10 Sitio Web PedidoWeb ejecutado.

325

Al seleccionar como comida Arroz con Pollo y Ajiaco y como bebida Vino y
Cerveza, se visualiza la siguiente figura:
Figura 14.11 Sitio Web con comida y bebida seleccionados.

14.1.6 Cerrar y abrir nuevamente un sitio Web


Para cerrar el sitio Web PedidoWeb o cualquier otro sitio web, estando en modo diseo
se pueden realizar los siguientes pasos:
1. En el men Archivo, hacer clic en la opcin Cerrar Proyecto.
2. Si desea cerrar el sitio Web y salir de Visual Studio, en el men Archivo haga clic en
la opcin Salir.

En cada caso se deben guardar los nuevos cambios que se hayan realizado.
Para volver a abrir la aplicacin PedidoWeb o cualquier otra aplicacin
existente se debern realizar los siguientes pasos:
1. Abrir Visual Studio .NET.
2. Si en la pantalla inicial de Visual Studio .NET se visualiza el nombre del sitio Web que
se desea abrir haga doble clic para abrir la aplicacin. Si por el contrario no se visualiza
la aplicacin en el men Archivo, seleccione Abrir sitio Web..., busque la carpeta
PedidoWeb y pulse el botn Abrir para abrir la aplicacin Web en el entorno de
desarrollo de Visual Basic .NET.

14.2 Controles para interfaz de usuario ASP.NET


La mayora de los controles del cuadro de herramientas son similares a los trabajados en
las aplicaciones Windows Forms, en el ejemplo anterior se utilizaron los objetos Label,
TextBox, Button, ListBox, DropDownList (ComboBox en Windows Forms) y
GridView (DataGridView en Windows Forms) y como se puede apreciar, el diseo y
la programacin son muy similares. En este captulo se realizar una descripcin breve

326

y un ejemplo prctico de los siguientes controles: CheckBoxList, ImageMap,


BulletedList, RadioButtonList, HyperLink, MultiView, View y los controles de
validacin:
RequiredFieldValidator,
RangeValidator,
CompareValidator,
CustomValidator, RegularExpressionValidator, ValidationSummary.
14.2.1 Control CheckBoxList
Un control CheckBoxList
es una lista de casillas de verificacin que permite
obtener dos estados: verdadero (True) si esta activada o falso (False) si esta
desactivada. Para obtener el valor de verdadero o falso se hace a travs de la propiedad
Selected.
14.2.1.1 Ejemplo prctico control CheckBox List
Realizar un sitio Web llamado ControlWebCheckBoxList que permita a un usuario
seleccionar de una lista frutas e imprimir las frutas seleccionadas en un control ListBox.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario Web: 1 CheckBoxList, 1 ListBox, 2 Label.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 14.2 Propiedades de los controles (ControlWebCheckBoxList).
Control
Label1

Propiedad
ID
Text
Font - Bold
ID
Text
Font - Bold
ID

Valor
lblfrutas
Seleccin de Frutas
True
lblfrutaseleccionadas
Frutas Seleccionadas
True
listafrutas

AutoPostBack

True

ID

listafrutasseleccionadas

AutoPostBack

True

Form1

ID

formulario

Document

Title

Default.aspx

Nombre
archivo

Label2
CheckBoxList1
ListBox1

Control CheckBoxList
del

pagina.aspx

Ahora seleccione el control CheckBoxList llamado listafrutas, d clic en la


flecha de la parte superior derecha del control para ver las Tareas de CheckBoxList y
escoja la opcin Editar Elementos para ver la ventana Editor de la coleccin
ListItem. Pulse el botn Agregar del Editor de la coleccin ListItem, busque la
propiedad Text y cambie el texto por Manzanas. Realice esta misma operacin hasta
327

obtener la siguiente figura:


Figura 14.12 Editor de la coleccin ListItem con elementos.

Por ltimo pulse el botn Aceptar.


La interfaz de usuario con las modificaciones respectivas en las propiedades de
cada control queda como se muestra en la siguiente figura:
Figura 14.13 Formulario Web final de la interfaz de usuario.

Escribir cdigo

D doble clic en el objeto CheckBoxList llamado listafrutas, para abrir el editor del
328

procedimiento listafrutas_SelectedIndexChanged y escriba el siguiente cdigo:


listafrutasseleccionadas.SelectionMode = ListSelectionMode.Multiple
listafrutasseleccionadas.Items.Clear()
Dim i As Integer
For i = 0 To listafrutas.Items.Count - 1
If listafrutas.Items(i).Selected = True Then
listafrutasseleccionadas.Items.Add(listafrutas.Items(i).Text)
End If
Next

Utilizando la enumeracin ListSelectionMode.Multiple se le asigna seleccin


mltiple en su propiedad SelectionMode al objeto listafrutasseleccionadas, como
tambin se remueven todos los elementos actuales de dicho objeto utilizando la funcin
Clear de la propiedad Items. Con un ciclo For se leen cada uno de los elementos del
objeto listafrutas y aquel elemento que este seleccionado se adiciona al objeto
listafrutasseleccionadas.

Ejecutar la aplicacin

Al ejecutarse el proyecto y seleccionar las frutas Naranjas, Fresas, Bananos, Mangos


se obtendra la siguiente figura:
Figura 14.14 Ejecucin de la aplicacin ControlWebCheckBoxList.

14.2.2 Control ImageMap


Un control ImageMap
permite que en una imagen se puedan crear zonas activas,
que pueden ser seleccionadas al hacer clic con el mouse. Est formado por dos

329

elementos: El primero es una imagen como un archivo .gif, .jpg, .png, .bmp, etc.; El
segundo es una coleccin de zonas activas, donde cada zona puede ser definida como un
crculo, un rectngulo o un polgono y unas coordenadas que especifican la ubicacin y
el tamao de la zona activa. Cada zona activa puede ser un hipervnculo o un evento que
devuelve informacin.
14.2.2.1 Ejemplo prctico control ImageMap
Crear un sitio Web llamado ControlImageMap que permita a un usuario seleccionar
una zona de una imagen entre cuatro zonas activas e imprimir el nombre del objeto
seleccionado. Se debe tener una imagen donde se puedan diferenciar las zonas activas.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario Web: 2 Label y 1 ImageMap.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 14.3 Propiedades de los controles (ControlImageMap).
Control
Label1

Propiedad
ID
Text
Font - Bold
ID
Text
Font - Bold
ID

Valor
lbltexto
Imagen con cuatro dibujos
True
lblseleccion
Seleccin:
True
mapa_imagen

Height

200

Width

200

Form1

ID

formulario

Document

Title

Control ImageMap

Label2
ImageMap1

Con las modificaciones anteriores el control ImageMap llamado mapa_imagen


tiene un alto (Height) y un ancho (Width) de 200 pixeles. Seleccione el objeto
mapa_imagen, busque la propiedad ImageURL y agregue una imagen (ojala que se
puedan destacar cuatro partes diferentes). Luego busque la propiedad HotSpot para
definir las zonas activas, d clic en los tres puntos (
) para ver el Editor
de la coleccin HotSpot

330

Figura 14.15 Editor de la coleccin HotSpot.

Pulse en la punta de flecha del botn Agregar y seleccione RectangleHotSpot y


en las siguientes propiedades realice los siguientes cambios para crear la primera zona
activa: Bottom = 100, Left=0, Right=100, Top=0, HotSpotMode (establece el
comportamiento del objeto) = PostBack (genera una devolucin de datos al servidor) y
PostBackValue (obtiene el objeto seleccionado) =imagen_portatil.
Figura 14.16 Propiedades modificadas de la primera zona activa.

Realice la misma operacin para agregar tres nuevas zonas activas a la imagen,
con los siguientes valores en la respectiva propiedad.

331

Tabla 14.4 Propiedades de zonas activas.


Zonas
Segunda
Tercera
Cuarta

Bottom
100
200
200

Left
100
0
100

Right
200
100
200

Propiedades
Top
HotSpotMode
0
PostBack
100
PostBack
100
PostBack

PostBackValue
imagen_robot
imagen_celular
imagen_bicicleta

Figura 14.17 Objeto mapa_imagen con las cuatro zonas activas.

Por ltimo pulse el botn Aceptar.


La interfaz de usuario con las modificaciones respectivas en las propiedades de
cada control queda como se muestra en la siguiente figura:
Figura 14.18 Formulario Web con interfaz de usuario final.

332

Escribir cdigo

D doble clic en el objeto ImageMap llamado mapa_imagen, para abrir el editor del
procedimiento mapa_imagen_Click y escriba el siguiente cdigo:
Dim region As String = ""
Select Case e.PostBackValue
Case "imagen_portatil"
region = "El PORTATIL"
Case "imagen_robot"
region = "El ROBOT"
Case "imagen_celular"
region = "El CELULAR"
Case "imagen_bicicleta"
region = "La BICICLETA"
End Select
lblseleccion.Text = "selecciono:" & region

Inicialmente se crea una variable de tipo String llamada region la cual es


inicializada con un espacio. Utilizando la estructura Select se obtiene la zona
seleccionada (e.PostBackValue). Segn sea el caso se le asigna a la variable region el
texto correspondiente y es adicionada a la propiedad Text del objeto lblseleccion.

Ejecutar la aplicacin

Al ejecutarse el proyecto y seleccionar la zona dos (el robot) se obtendra la siguiente


figura:
Figura 14.19 Ejecucin de la aplicacin ControlImageMap.

14.2.3 Control BulletedList


Un control BulletedList
permite crear una lista de elementos ordenados y no
ordenados. Los elementos se pueden mostrar como vietas o nmeros utilizando la
propiedad BulletStyle y stan pueden ser: Numbered, LowerAlpha, UpperAlpha,
LowerRoman, UpperRoman, Disc, Circle, Square CustomImage. Se deben definir
333

las propiedades: Text y Value. Text detalla lo que el control va a mostrar en la pgina.
Value devuelve un valor deseado al seleccionar un elemento. Este control responde al
evento clic para devolver datos del servidor.
14.2.3.1 Ejemplo prctico control BulletedList
Disear un sitio Web llamado ControlBulletedList que permita a un usuario
seleccionar de una lista una pgina de Internet y abrirla utilizando el control
BulletedList.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario Web: 1 Label y 1 BulletedList.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 14.5 Propiedades de los controles (ControlBulletedList).
Control
Label1

Form1

Propiedad
ID
Text
Font - Bold
ID
DisplayMode
BulletStyle
ID

Valor
lbltexto
Control Bulletedlist lista de pginas de Internet
True
listapaginas
HyperLink
UpperAlpha
formulario

Document

Title

Control BulletedList

BulletedList1

Al arrastrarse el objeto BulletedList hacia el formulario, en la ventana Tareas


de BulletedList seleccione Editar elementos para ver el Editor de la coleccin
ListItem. Seleccione el botn Agregar y en la propiedad Text escriba ASP.NET, en la
propiedad Value escriba http://www.asp.net.
Figura 14.20 Editor de la coleccin ListItem con un elemento agregado.

334

Adems agregue los siguientes elementos:


Tabla 14.6 Propiedades de los elementos restantes del control listapaginas.
Text
MICROSOFT
GOOGLE
JAVA

Propiedades
Value
http://www.microsoft.com
http://www.google.com
http://www.java.sun

El editor quedara de la siguiente forma:


Figura 14.21 Editor de la coleccin ListItem con los elementos agregados.

Por ltimo pulse el botn Aceptar. La interfaz de usuario con las modificaciones
respectivas en las propiedades de cada control queda como se muestra en la siguiente
figura:
Figura 14.22 Interfaz de usuario final aplicacin ControlBullettedList.

335

Ejecutar la aplicacin

Al ejecutarse el proyecto se mostrar la siguiente figura:


Figura 14.23 Ejecucin del sitio Web ControlBulletedList.

Al seleccionar el elemento ASP.NET, se visualizar la siguiente figura:


Figura 14.24 Ejecucin al seleccionar el elemento ASP.NET.

336

14.2.4 Control RadioButtonList


permite a un usuario escoger una alternativa entre
Un control RadioButtonList
varias alternativas. Al igual que el control CheckBoxList puede obtener el valor de
verdadero (True) o falso (False) a travs de la propiedad Selected.
14.2.4.1 Ejemplo prctico control RadioButtonList
Escribir una aplicacin Web llamada ControlRadioButtonList que permita a un
usuario seleccionar y abrir una pgina Web utilizando los objetos RadioButtonList y
HyperLink.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario Web: 1 Label, 1 HyperLink y 1
RadioButtonList.

Establecer las propiedades de los objetos de la interfaz de usuario

Despus de colocar los controles u objetos en el formulario, establezca las siguientes


propiedades a los controles:
Tabla 14.7 Propiedades de los controles (ControlRadioButtonList).
Control
Label1

RadioButton
HyperLink1

Propiedad
ID
Text
Font - Bold
ID
Text
Font - Bold
ID
AutoPostBack
ID

Valor
lbltexto
Control RadioButtonList lista de pginas de Internet
True
lblhipertexto
Ir a la pgina :
True
listapaginas
True
hipertexto

Form1

ID

formulario

Document

Title

Control RadioButtonList

Label2

Ahora seleccione el objeto RadioButtonList y d clic sobre la flecha en la parte


superior derecha del control para ver la ventana Tareas de RadioButtonList, al
seleccionar la opcin Editar elementos se visualizar el Editor de la coleccin
ListItem. Seleccione el botn Agregar y en la propiedad Text escriba Asp.NET, en la
propiedad Value escriba http://www.asp.net/ES.

337

Figura 14.25 Editor de la coleccin ListItem con un elemento agregado.

Adems agregue los siguientes elementos:


Tabla 14.8 Propiedades de los elementos restantes del control listapaginas.
Text
Microsoft
Google
Java

Propiedades
Value
http://www.microsoft.com
http://www.google.com
http://www.java.sun

El editor quedara de la siguiente forma:


Figura 14.26 Editor de la coleccin ListItem con los elementos agregados.

Por ltimo pulse el botn Aceptar. La interfaz de usuario con las modificaciones
respectivas en las propiedades de cada control queda como se muestra en la siguiente
figura:

338

Figura 14.27 Interfaz de usuario final aplicacin ControlRadioButtonList.

Escribir cdigo

D doble clic en el objeto RadioButtonList llamado listapaginas, para abrir el editor


del procedimiento listapaginas_SelectedIndexChanged y escriba el siguiente
cdigo:
Dim i As Integer
For i = 0 To listapaginas.Items.Count - 1
If listapaginas.Items(i).Selected = True Then
hipertexto.NavigateUrl = listapaginas.Items(i).Value
hipertexto.Text = listapaginas.Items(i).Value
End If
Next

Con un ciclo For se leen cada uno de los elementos del objeto listapaginas y al
encontrar el elemento que est seleccionado se asigna a la propiedad Text del objeto
hipertexto el texto de la propiedad Value del objeto listapaginas, como tambin se le
adiciona dicho valor a la propiedad NavigateUrl.

Ejecutar la aplicacin

Al ejecutarse el proyecto y seleccionar la opcin Asp.NET se visualiza la siguiente


figura:

339

Figura 14.28 Ejecucin de la aplicacin ControlRadioButtonList.

Al pulsar el link http://www.asp.net/ES/ se obtendr la siguiente figura:


Figura 14.29 Ejecucin pgina asp.net.

14.2.5 Control MultiView


Un control MultiView
es un contenedor de controles View. El control View
puede contener un grupo de controles. Estos siempre deben especificarse dentro de un
control MultiView y solo se puede tener un control View activo a la vez. Con la
propiedad ActiveViewIndex se puede establecer el control View que est activo
tambin para devolver el ndice de la vista activa. El primer control View declarado
dentro del objeto MultiView tiene como ndice cero (0).

340

14.2.5.1 Ejemplo prctico control MultiView


Elaborar una aplicacin Web llamada ControlMultiView que permita a un usuario
responder una encuesta y visualizar las respuestas seleccionadas utilizando los controles
MultiView y View.

Crear la interfaz de usuario

Se realizar la interfaz de usuario de la siguiente forma:


a) Utilizando el cuadro de herramientas ubique los siguientes controles en el
formulario Web: 1 Label y 1 MultiView. Establezca las siguientes propiedades
a los controles:
Tabla 14.8 Propiedades de los controles MultiView y Label.
Control
Label1

Form1

Propiedad
ID
Text
Font - Bold
ID
ActiveViewIndex
ID

Valor
lbltexto
Controles MultiView y View.
True
multiplesvistas
0
formulario

Document

Title

Controles MultiView y View

MultiView1

La interfaz inicial quedara de la siguiente forma:


Figura 14.30 Interfaz de usuario controles MultiView y Label.

b) Agregue cuatro (4) controles View y establezca las siguientes propiedades a los
controles:

341

Tabla 14.9 Propiedades de los controles View.


Control
View1
View2
View3
View4

Propiedad
ID
ID
ID
ID

primeravista
segundavista
terceravista
cuartavista

Valor

La interfaz quedara de la siguiente forma:


Figura 14.31 Interfaz de usuario con los controles MultiView y View.

c) Seleccione el objeto View llamado primeravista y agregue los siguientes


controles: 1 Label, 1 CheckBoxList y 1 Button, adems establezca las
siguientes propiedades a los controles:
Tabla 14.10 Propiedades de los controles del objeto primeravista.
Control
Label1
CheckBoxList1
Button1

Propiedad
ID
Text
Font - Bold
ID
ID
Text

Valor
lbldeportes
Seleccionen los deportes que te gustan:
True
listadeportes
botonsiguiente
Siguiente

Seleccione el objeto listadeportes y agrguele los siguientes elementos: Futbol,


Baloncesto, Ciclismo, Natacin, Atletismo. El objeto primeravista quedara de la
siguiente forma:

342

Figura 14.32 Interfaz del objeto primeravista.

d) Seleccione el objeto View llamado segundavista y agregue los siguientes


controles: 1 Label, 1 RadioButtonList y 2 Button, adems establezca las
siguientes propiedades a los controles:
Tabla 14.11 Propiedades de los controles del objeto segundavista.
Control
Label1
RadioButtonList1
Button1
Button2

Propiedad
ID
Text
Font - Bold
ID
ID
Text

Valor
lblpractica
Los prcticas por:
True
listapractica
botonsiguiente2
Siguiente

ID

botonanterior

Text

Anterior

Seleccione el objeto listapractica y agrguele los siguientes elementos: Salud,


Pasatiempo, Esttica. El objeto segundavista quedara de la siguiente forma:
Figura 14.33 Interfaz del objeto segundavista.

e) Seleccione el objeto View llamado terceravista y agregue los siguientes


controles: 1 Label, 1 RadioButtonList y 2 Button, adems establezca las
siguientes propiedades a los controles:

343

Tabla 14.12 Propiedades de los controles del objeto terceravista.


Control
Label1
RadioButtonList1
Button1
Button2

Propiedad
ID
Text
Font - Bold
ID
ID
Text

Valor
lblsemana
Cuantas veces por semana:
True
listasemana
botonterminar
Terminar

ID

botonanterior2

Text

Anterior

Seleccione el objeto listasemana y agrguele los siguientes elementos: 1 3


veces, 1 5 veces, 1 7 veces. El objeto terceravista quedara de la siguiente forma:
Figura 14.34 Interfaz del objeto terceravista.

f) Seleccione el objeto View llamado cuartavista y agregue los siguientes


controles: 2 Label, adems establezca las siguientes propiedades a los controles:
Tabla 14.13 Propiedades de los controles del objeto cuartavista.
Control
Label1
Label2

Propiedad
ID
Text
Font - Bold
ID
Text

Valor
lblrespuesta
El resultado de la encuesta fue:
True
listasemana
Respuesta

El objeto cuartavista quedara de la siguiente forma:


Figura 14.35 Interfaz del objeto cuartavista.

344

Escribir cdigo
a) D doble clic en el objeto Button llamado botonsiguiente del objeto
primeravista, para abrir el editor del procedimiento botonsiguiente_Click y
escriba el siguiente cdigo:
Dim i As Integer
lblresultado.Text = "Los deportes que prcticas son:<br>"
For i = 0 To listadeportes.Items.Count - 1
If listadeportes.Items.Item(i).Selected Then
lblresultado.Text = lblresultado.Text & "<br>" & listadeportes.Items.Item(i).Value
End If
Next
multiplesvistas.ActiveViewIndex = 1

Con un ciclo For se leen cada uno de los elementos del objeto listadeportes y
aquel elemento que este seleccionado se adiciona al objeto lblresultado. Con la
propiedad ActiveViewIndex se activa la segunda vista.
b) D doble clic en el objeto Button llamado botonsiguiente2 del objeto
segundavista, para abrir el editor del procedimiento botonsiguiente2_Click y
escriba el siguiente cdigo:
Dim i As Integer
lblresultado.Text = lblresultado.Text & "<br><br>Lo prcticas por:<br>"
For i = 0 To listapractica.Items.Count - 1
If listapractica.Items.Item(i).Selected Then
lblresultado.Text = lblresultado.Text & "<br>" & listapractica.Items.Item(i).Value
End If
Next
multiplesvistas.ActiveViewIndex = 2

Con un ciclo For se leen cada uno de los elementos del objeto listapractica y
aquel elemento que est seleccionado se adiciona al objeto lblresultado. Con la
propiedad ActiveViewIndex se activa la tercera vista.
c) D doble clic en el objeto Button llamado botonanterior del objeto
segundavista, para abrir el editor del procedimiento botonanterior_Click y
escriba el siguiente cdigo:
If (multiplesvistas.ActiveViewIndex > 0) And (multiplesvistas.ActiveViewIndex <= 2) Then
multiplesvistas.ActiveViewIndex -= 1
ElseIf multiplesvistas.ActiveViewIndex = 3 Then
multiplesvistas.ActiveViewIndex = 0
Else
Throw New Exception("A ocurrido un error.")
End If

Inicialmente se determina si la vista activa es mayor que 0 y menor o igual a 2


para decrementar la propiedad ActiveViewIndex del objeto multiplesvista en -1. En
caso contrario, se valida si la vista activa es igual a 3 para asignar a la propiedad
ActiveViewIndex el valor cero. En caso de que exista algn problema se lanza una
excepcin (Throw New Exception) con el mensaje A ocurrido un error.

345

d) D doble clic en el objeto Button llamado botonterminar del objeto


terceravista, para abrir el editor del procedimiento botonterminar_Click y
escriba el siguiente cdigo:
Dim i As Integer
lblresultado.Text = lblresultado.Text & "<br><br>En la semana lo prcticas:<br>"
For i = 0 To listasemana.Items.Count - 1
If listasemana.Items.Item(i).Selected Then
lblresultado.Text = lblresultado.Text & "<br>" & listasemana.Items.Item(i).Value
End If
Next
multiplesvistas.ActiveViewIndex = 3

Con un ciclo For se leen cada uno de los elementos del objeto listasemana y
aquel elemento que est seleccionado se adiciona al objeto lblresultado. Con la
propiedad ActiveViewIndex se activa la cuartavista.
e) D doble clic en el objeto Button llamado botonanterior2 del objeto
terceravista, para abrir el editor del procedimiento botonanterior2_Click y
escriba el siguiente cdigo:
If (multiplesvistas.ActiveViewIndex > 0) And multiplesvistas.ActiveViewIndex <= 3 Then
multiplesvistas.ActiveViewIndex -= 1
ElseIf multiplesvistas.ActiveViewIndex = 3 Then
multiplesvistas.ActiveViewIndex = 1
Else
Throw New Exception("A ocurrido un error.")
End If

Inicialmente se determina si la vista activa es mayor que 0 y menor o igual a 3


para decrementa la propiedad ActiveViewIndex del objeto multiplesvista en -1. En
caso contrario, se valida si la vista activa es igual a 3 para asignar a la propiedad
ActiveViewIndex el valor uno.

Ejecutar la aplicacin

Al ejecutarse el proyecto se visualizar la informacin de la primera vista:


Figura 14.36 Ejecucin de la aplicacin ControlMultiView.

346

Seleccione los deportes Baloncesto, Ciclismo y pulse el botn Siguiente para


visualizar la siguiente figura:
Figura 14.37 Aplicacin ControlMultiView en la segunda vista.

En este momento si desea puede devolverse a la primera vista pulsando el botn


Anterior. Seleccione la opcin Pasatiempo y pulse el botn Siguiente. Se obtendr la
siguiente figura:
Figura 14.38 Aplicacin ControlMultiView en la tercera vista.

Si selecciona la opcin 1 3 veces y se pulsa el botn Siguiente, visualizar la


cuarta vista con la informacin que fue seleccionada.
Figura 14.39 Aplicacin ControlMultiView en la cuarta vista.

347

14.3 Controles para validar datos


En el cuadro de herramientas de una aplicacin Web Asp.NET existe una ficha llamada
Validacion que contiene controles que sirven para validar informacin, es decir, que los
datos proporcionados en un control sean correctos de acuerdo a la informacin
solicitada. Como ejemplo de validacin puede ser dejar en blanco un campo obligatorio,
escribir una contrasea dos veces no coincidentes, teclear un valor en un rango no
especificado. Los tipos de controles de validacin son:

RequiredFieldValidator: Se utiliza para validar que en un campo de texto sea


obligatorio tener informacin y no se deje vaco.
RangeValidator: Se utiliza para validar que los datos de un control se
encuentren dentro de un rango de valores especificado. Se utiliza la propiedad
ControlToValidate para especificar el control que se va a validar. Las
propiedades MinimumValue y MaximumValue sirven para especificar los
valores mnimo y mximo de un intervalo determinado.
CompareValidator: Se utiliza para comparar el valor de un control con un
valor especificado en otro control o con un valor constante. El control
CompareValidator utiliza las siguientes propiedades para validar la
comparacin: Operator, ValueToCompare o ControlToCompare.
RegularExpressionValidator: Se utiliza para validar que lo escrito por un
usuario sea un valor definido por una expresin regular (direcciones de correo,
nmeros de telfonos, etc.).
CustomValidator: Se utiliza para validar que lo escrito por un usuario sea un
valor que previamente se ha definido por el usuario.
ValidationSummary: Se utiliza para resumir los mensajes de error de todos los
controles de validacin de una pgina Web.

14.3.1 Ejemplo prctico controles de validacin


Realizar una aplicacin Web llamada Controles_de_Validacion que permita a un
usuario digitar: Sus nombres y apellidos, indicar su dominio de ingles en un rango de 1 10, el estado civil, su correo electrnico y escribir una contrasea especificada.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario Web: 7 Label, 6 TextBox, 1
RequiredFieldValidator, 1 RangeValidator, 1 CustomValidator, 1 Button, 1
CompareValidator, 1 RegularExpressionValidator, 1 ValidationSummary.
Modifique las propiedades de los controles segn la siguiente tabla:

348

Tabla 12.14 Propiedades controles de la aplicacin Controles_de_Validacion.


Label1

Control

Label2
Label3
Label4

Label5
Label6
Label7
TextBox1
TextBox2
TextBox3
TextBox4
TextBox5
RequiredFieldValidator1
RangeValidator1
CustomValidator1
RegularExpressionValidator1
CompareValidator1
ValidationSummary
Form1
Document
Button1

Propiedad
ID
Text
Font
ID
Text
ID
Text
ID
Text
ID
Text
ID
Text
ID
Text
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
ID
Title
ID
Text

Valor
txttexto
Encuesta Personal
Bold
lbldatos
Digite Nombres y Apellidos:
lblingles
Lee ingles (1 10);
lblestado
Estado
civil
(S=soltero;
C=casado; U=unin libre; V=
viudo)
lbcontrasea
Digite la contrasea 123456
lblcorreo
Correo electrnico :
lblerrores
Resumen de errores:
txtdatos
txtingles
txtestado
txtcontrasea
txtcorreo
validarcampo
validarrango
validarestado
validarexpresion
validarcontrasea
validarerrores
formulario
Controles de validacin
botonenviar
Enviar

El formulario se visualizara como muestra la siguiente figura:


Figura 14.40 Interfaz de usuario aplicacin Controles_de_Validacion.

349

Escribir cdigo
a) D doble clic sobre la pgina Web, para abrir el editor del procedimiento
Page_load y escriba el siguiente cdigo:
If Not Page.IsPostBack Then
validarcampo.ControlToValidate = "txtdatos"
validarcampo.ErrorMessage = "Campo obligatorio, no puede ser vacio"
validarrango.ControlToValidate = "txtingles"
validarrango.Type = ValidationDataType.Integer
validarrango.MinimumValue = 1
validarrango.MaximumValue = 10
validarrango.ErrorMessage = "Debe digitar un valor entre 1 y 10"
validarestado.ControlToValidate = "txtestado"
validarestado.ErrorMessage = "Digite S,C,u o V"
validarexpresion.ControlToValidate = "txtcorreo"
validarexpresion.ValidationExpression = "\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
validarexpresion.ErrorMessage = "El formato del correo es:nombre@sitioweb.dominio"
validarcontrasea.ControlToValidate = "txtcontrasea"
validarcontrasea.ValueToCompare = "123456"
validarcontrasea.ErrorMessage = "La contrasea es:123456"
End If

Se utiliza IsPostBack para determinar si se est cargando la pgina. Con la


sentencia de toma de decisiones If se valida cuando se enva los datos al servidor para
realizar las validaciones correspondientes en cada control. Los mtodos que se utilizan
son:
ControlValidate: Es el objeto que se va a validar
ErrorMessage: El mensaje que se imprimir al ocurrir el error de validacin.
Type: es el tipo de dato a validar
MinimumValue: Es el valor mnimo del control de validacin
MaximumValue: Es el valor mximo del control de validacin
ValueToCompare: Es el valor de comparacin a validar.
ValidationExpression: Es la expresin regular que se vlida.
b) Seleccione el objeto botonenviar, d doble clic para abrir el editor del
procedimiento botonenviar_Click y escriba el siguiente cdigo:
validarcampo.Validate()
validarrango.Validate()
validarestado.Validate()
validarexpresion.Validate()
validarcontrasea.Validate()

Al pulsar el objeto botonenviar se valida cada objeto de validacin referente a


la informacin que se ha escrito en cada uno de los campos de texto con el mtodo
Validate () y se actualiza la propiedad IsValid.
c) Seleccione el objeto validarestado, d doble clic para abrir el editor del
procedimiento validarestado_ServerValidate y escriba el siguiente cdigo:
If (args.Value = "S") Then
args.IsValid = True
ElseIf (args.Value = "C") Then
args.IsValid = True

350

ElseIf (args.Value = "U") Then


args.IsValid = True
ElseIf (args.Value = "V") Then
args.IsValid = True
Else
args.IsValid = False
End If

Al digitar un valor en el campo de texto txtestado, este es validado con la


estructura de decisin If para determinar que su contenido sea un valor especificado por
el control de validacin CustomValidator.

Ejecutar la aplicacin

Al ejecutarse el proyecto y digitar 20, S, 2, 54 respectivamente y pulsar el botn


Enviar, se visualizar la siguiente figura:
Figura 14.41 Ejecucin aplicacin Controles_de_Validacion.

Como se puede apreciar, se muestran los mensajes de error en cada campo validado por
el respectivo control de validacin. Si por el contrario se escriben los siguientes valores:
Cristian Vanegas, 8, S, 123456, cavm10@hot.com y se puls el botn Enviar, se
obtendra la pgina sin mensajes de error.

351

Figura 14.42 Ejecucin Controles_de_Validacion con datos correctos.

352

15. ACCESO A BASES DE DATOS CON ASP.NET


Con las aplicaciones Web tambin es posible mostrar informacin de una base de datos.
En el captulo 12 se hizo una breve descripcin sobre bases de datos, el lenguaje de
consulta estructurado S.Q.L., conceptos que se pueden aplicar en los sitios Web
ASP.NET. En dicho captulo se crearon aplicaciones Windows Forms donde se trabajo
con la base de datos SQL Server y se realiz la conexin a dicha base de datos, se
consult y se realizarn operaciones con los registros de una o ms tablas de la base de
datos, como tambin se diseo un informe de los registros de una tabla.
La conexin, la operacin con una base de datos desde un formulario Web es
algo similar. Cuando se realiza la conexin por cdigo de Visual Basic .NET es
necesario importar los espacios de nombres System.Data (normalmente denominado
ADO.NET) y System.Data.SqlClient.
15.1 Controles para operaciones con orgenes de datos
ASP.NET contiene controles que permiten realizar operaciones con los orgenes de
datos que administran las tareas que se pueden realizar con una base de datos. Estos no
representan ningna interfaz de usuario, sino que actan como intermediarios entre los
datos y los dems controles de la pgina Web ASP.NET. Dichos controles habilitan un
amplio conjunto de funciones para recuperar y modificar datos, entre las que se incluyen
la conexin, consulta, actualizacin, eliminacin y la insercin. ASP.NET incluye los
siguientes:
Tabla 15.1 Controles para operaciones con orgenes de datos ASP.NET.
Control
OleDbDataAdapter

descripcin
Adaptador de datos para una base de datos Access.

SqlDbDataAdapter

Adaptador de datos para una base de datos SQL.

OracleDbDataAdapter

Adaptador de datos para una base de datos Oracle.

DataSet

Representa un conjunto de datos en memoria.

DataView

Representa una vista para enlazar datos.

SqlDataSource

Conecta base de datos SQL Server, Oracle u OLEDB

AccesDataSource

Conecta una base de datos Access de Microsoft.

XmlDataSource

Conecta con un archivo XML.

15.2 Ejemplos prcticos bases de datos con ASP.NET


15.2.1 Conexin a SQL Server por cdigo
Disear de un sitio Web llamado ConexionBD_GV_cdigo, que permita realizar una
conexin a una base de datos de SQL Server y mostrar los registros de una tabla
llamada clientes en un objeto GridView utilizando cdigo de Visual Basic .NET.

353

NOTA: para este ejemplo el usuario tiene que tener instalado Microsoft SQL
SERVER 2005 o posterior y crear una base de datos llamada bdlibrovbnet y dentro de
ella una tabla llamada clientes (Ver anexo A, SQL Server).

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en la pgina Web en la posicin deseada: 3 Label y 1 GridView.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:


Tabla 15.1 Propiedades de controles proyecto ConexionBD_GV_cdigo.
Control
GridView1
Label1

Label2
Label3
Button1
Form1
Document

Propiedad
ID
ID
Text
Font - Bold
ID
Text
Font - Bold
ID
Text
Font - Bold
ID
Text
ID
Title

Valor
cuadriculadatos
lbltexto
Conexin por cdigo a una base de datos SQL
SERVER.
True
lblregistros
Registros tabla: Clientes
True
lblnumeroregistros
Nmero de Registros:
True
boton
Ejecutar Conexin
formulario
Conexin a SQL Server.

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 15.1 Interfaz de usuario ConexionBD_GV_cdigo.

354

Escribir cdigo
a) Antes de la apertura de la clase Default se debe importar los siguientes espacios
de nombres:
Imports System.Data
Imports System.Data.SqlClient
Partial Class Default
Inherits System.Web.UI.Page
.

End Class

Se importan los espacios de nombres System.Data y System.Data.SqlClient los


cuales son necesarios para utilizar las diferentes clases que permitan las operaciones con
bases de datos.
b) D doble clic sobre el objeto boton para abrir el editor de cdigo del
procedimiento boton_Click y escriba el siguiente cdigo:

Dim conexion As String


conexion = "Data Source=(local)\SQLEXPRESS;Database=bdlibrovbnet;Integrated
Security=True"
Dim seleccion As String = "SELECT * FROM clientes"
Dim adaptadordedatos As SqlDataAdapter
Dim tabladedatos As New DataTable
Try
adaptadordedatos = New SqlDataAdapter(seleccion, conexion)
adaptadordedatos.Fill(tabladedatos)
cuadriculadatos.DataSource = tabladedatos
cuadriculadatos.DataBind()
lblnumeroregistros.Text = "Total de Registros:" & tabladedatos.Rows.Count
Catch ex As Exception
MsgBox("Error en la conexin: " & ex.Message)
End Try

Se crea una variable llamada conexion de tipo String a la cual se le asigna la


cadena de conexin a la base de datos SQL Server. Dicha cadena contiene los siguientes
parmetros:

Data Source: Se le asigna la ruta donde se encuentra el servidor SQL Server; en


este caso, SQL Server se instalo en el computador de trabajo por lo cual el nombre
del servidor es (local)\SQLEXPRESS.
Database: Se le asigna el nombre de la base de datos a la que se quiere conectar.
Integrated Security: Se le asigna True o False para determinar si la seguridad es
integrada o no.

Adems se crean los siguientes objetos: seleccion de tipo String a la cual se le


asigna la sentencia SQL Select * From Clientes (se van a mostrar en la cuadricula
todos los registros de la tabla clientes); adaptadordedatos de tipo SqlDataAdapter el
cual ser el adaptador de datos para manipular la base de datos SQL Server;
355

tabladedatos se le asigna espacio de memoria de tipo DataTable para guardar los datos
en memoria y poder realizar operaciones con dichos datos. En un bloque Try se le
asigna espacio de memoria de tipo SqlDataAdapter al objeto adaptadordedatos, al
cual se le enva como parmetros los objetos seleccion (datos a mostrar) y conexion
(cadena de conexin), luego se rellena (fill) el adaptador de datos con la tabla de datos
(tabladedatos); al objeto cuadriculadatos en su propiedad DataSource se le establece
el conjunto de datos que se van a mostrar al asignrsele la tabla de datos, por otro lado,
se enlaza al objeto cuadriculadatos el orgen de datos (DataBind()) y por ltimo se
establece a la propiedad Text del objeto lblnumeroregistros el texto actual del objeto
unido al nmero total de registros que contenga la tabla (tabladedatos.Rows.Count).
Por el bloque Catch se establece un mensaje en caso de que ocurra un error de
conexin.

Ejecutar la aplicacin

Al ejecutarse el sitio Web, se visualizar la siguiente figura:


Figura 15.2 Ejecucin aplicacin ConexionBD_GV_cdigo.

Al pulsar el botn Ejecutar Conexin, se obtendr la siguiente figura:


Figura 15.3 Ejecucin aplicacin ConexionBD_GV_cdigo.

356

15.2.2 Conexin a una base de datos con un control GridView


Crear un sitio Web llamado ConsultaWebGridView, que permita visualizar los
registros de una tabla en un control GridView, adems, se puedan ordenar dichos
registros por cualquier campo de la tabla.
NOTA: para este ejemplo el usuario tiene que tener instalado Microsoft SQL
SERVER 2005 o posterior y tener creada la base de datos llamada bdlibrovbnet con
sus respectivas tablas. (Ver anexo A, SQL Server).

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en la pgina Web en la posicin deseada: 1 Label y 1 GridView.
Establecer las propiedades de los objetos de la interfaz de usuario
Establezca las siguientes modificaciones a los controles:
Tabla 15.2 Propiedades de controles proyecto ConsultaWebGridView.
Control
GridView1
Label1

Form1
Document

Propiedad
ID
ID
Text
Font - Bold
ID
Title

Valor
datos
lbltexto
Consulta de los registros de una tabla con un
control GridView.
True
formulario
Consulta de registro de una tabla.

Despus de modificar las propiedades de los controles, seleccione el objeto


GridView datos y d clic sobre la flecha en la parte superior derecha del control para
ver la ventana Tareas de GridView:
Figura 15.4 Ventana de Tareas de GridView.

De la opcin Elegir orgen de datos, seleccione <Nuevo orgen de datos>


para visualizar la siguiente figura:

357

Figura 15.5 Asistente para la configuracin de orgenes de datos.

Escoja el objeto Base de datos y especifique como nombre del identificador del
orgen de datos orgendedatos y pulse el botn Aceptar, para visualizar la ventana de
eleccin de la conexin de datos.
Figura 15.6 Ventana Elegir la conexin de datos.

Pulse el botn Nueva conexin para ver la ventana de Agregar conexin, all
d clic sobre el botn Examinar y busque la base de datos bdlibrovbnet.mdf. Se
obtendr la siguiente figura:

358

Figura 15.7 Ventana Agregar conexin con la base de datos seleccionada.

Pulse el botn Aceptar para mostrar nuevamente la ventana Elegir la conexin


de datos con la base de datos escogida. Al pulsar el signo (+) al lado del texto Cadena
de conexin se podr ver los parmetros de conexin.
Figura 15.8 Ventana con la base de datos y la cadena de conexin.

Pulsando el botn Siguiente> se visualizar la ventana para guardar la cadena de


conexin en el archivo de configuracin de la aplicacin. Cambie el nombre de la
cadena de conexin por cadenaconexionbd, se obtendr la siguiente figura:

359

Figura 15.9 Ventana Guardar cadena de conexin.

Pulse el botn Siguiente> para ver la ventana de configuracin de la


instruccin Select. En dicha ventana debe estar seleccionada la opcin Especificar
columnas de una tabla o vista. En la lista Nombre seleccione la tabla Clientes y en el
cuadro Columnas escoja el cuadro de verificacin *. La ventana quedara de la
siguiente forma:
Figura 15.10 Ventana de configuracin de la instruccin Select.

Nuevamente pulse el botn Siguiente> para ver la ventana de Consulta de


prueba. En dicha ventana pulse el botn Consulta de prueba para mostrar los registros
que fueron seleccionados, as como la instruccin Select.

360

Figura 15.11 Ventana Consulta de prueba.

Pulse el botn Finalizar para volver a modo diseo. En la ventana Tareas de


GridView escoja el cuadro de verificacin Habilitar Ordenacin. El formulario en
modo de edicin queda de la siguiente forma:
Figura 15.12 GridView con el orgen de datos.

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 15.13 Interfaz de usuario ConsultaWebGridView.

361

Ejecutar la aplicacin
Al ejecutarse el sitio Web, se visualizar la siguiente figura:

Figura 15.14 Ejecucin aplicacin ConsultaWebGridView.

Al hacer clic sobre el link empresa, se ordenaran alfabticamente todos los


registros por el campo empresa de la tabla clientes.
Figura 15.15 Registros ordenados por el campo empresa de la tabla clientes.

Si se desea mejorar la presentacin de los registros en la cuadricula, en modo


diseo seleccione el objeto datos y en la ventana de Tareas de GridView escoja la
opcin Formato Automtico y seleccione el esquema que desee.
15.2.3 Consulta una base de datos utilizando el Explorador de servidores
Elaborar un sitio Web llamado ConsultaBDExploradorServidores, que permita
visualizar los registros de una tabla en un control FormView, adems se permita la
paginacin de los registros.

362

NOTA: para este ejemplo el usuario tiene que tener instalado Microsoft SQL
SERVER 2005 o posterior y tener creada la base de datos llamada bdlibrovbnet con
sus respectivas tablas. (Ver anexo A, SQL Server).

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en la pgina Web en la posicin deseada: 1 Label y 1 FormView.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:


Tabla 15.3 Propiedades de controles proyecto ConsultaBDExploradorServidores.
Control
FormView1
Label1

Form1
Document

Propiedad
ID
ID
Text
Font - Bold
ID
Title

Valor
formulariodatos
lbltexto
Consulta una tabla utilizando el Explorador de
servidores.
True
formulario
Consulta tabla con FormView.

Explorador de servidores

Del men Ver seleccione la opcin Explorador de servidores, para visualizar la


siguiente figura:
Figura 15.16 Ventana Explorador de servidores.

Pulse el icono conectar con bases de datos


, para visualizar la ventana de
Agregar conexin. All d clic sobre el botn Examinar y busque la base de datos
bdlibrovbnet.mdf. Se obtendr la siguiente figura:

363

Figura 15.17 Ventana Agregar conexin con la base de datos bdlibrovbnet.mdf.

Pulse el botn Aceptar para volver al Explorador de servidores. Al pulsar en


el signo (+) al lado del nombre de la base de datos (bdlibrovbnet.mdf) se visualizar la
estructura definida en la base de datos. Si desea ver las tablas que contiene la base de
datos pulse el signo (+) al lado de Tablas y en cada tabla pulse el signo (+) para ver los
campos de la tabla seleccionada.
Figura 15.18 Explorador de servidores con la conexin a la base de datos.

Ahora seleccione el objeto FormView llamado formulariodatos y en la flecha


que aparece en el lado superior derecho, d clic para visualizar las Tareas de
FormView:

364

Figura 15.19 Ventana de las Tareas de FormView.

De la opcin Elegir orgen de datos, seleccione <Nuevo orgen de datos>


para visualizar la siguiente figura:
Figura 15.20 Asistente para la configuracin de orgenes de datos.

|Escoja el objeto Base de datos y especifique como nombre del identificador del
orgen de datos conexiondedatos y pulse el botn Aceptar para visualizar la ventana de
Elegir la conexin de datos. De la lista que all aparece escoja la base de datos
bdlibrovbnet.mdf. La ventana quedara de la siguiente forma:

365

Figura 15.21 Ventana Elegir la conexin de datos.

Pulsando el botn Siguiente> se visualizar la ventana para guardar la cadena de


conexin en el archivo de configuracin de la aplicacin. Cambie el nombre de la
cadena de conexin por cadenaconexion, se obtendr la siguiente figura:
Figura 15.22 Ventana para guardar el archivo de la cadena de conexin.

Pulse el botn Siguiente para visualizar la ventana de Configurar la


instruccin Select. Seleccione la tabla Clientes y en Columnas pulse el cuadro de
verificacin *.

366

Figura 15.23 Ventana Configurar la instruccin Select.

A continuacin pulse el botn Siguiente y despus el botn Finalizar para


volver a la pgina Web y visualizar nuevamente el objeto formulariodatos y la ventana
Tareas de FormView. Seleccione el cuadro de verificacin Habilitar paginacin.
Figura 15.24 Objeto formulariodatos con la opcin Habilitar paginacin.

D clic sobre la opcin Formato automtico para ver la ventana de


Autoformato.
Figura 15.25 Ventana de Autoformato.

367

Seleccione el esquema Multicolor y pulse el botn Aceptar. La interfaz de


usuario queda como se muestra en la siguiente figura:
Figura 15.26 Interfaz de usuario ConsultaBDExploradorServidores.

Ejecutar la aplicacin

Al ejecutarse el sitio Web, se visualizar la siguiente figura:


Figura 15.27 Ejecucin aplicacin ConsultaBDExploradorServidores.

368

15.2.4 Insertar un registro en una tabla


Elaborar un sitio Web llamado InsertarRegistrosWeb que permita insertar registros en
una tabla utilizando el control DetailsView.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en la pgina Web en la posicin deseada: 1 Label, 1 DetailsView.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:


Tabla 15.4 Propiedades de controles del sitio InsertarRegistrosWeb.
Control
Label1

DetailsView1
Form1
Document

Propiedad
ID
Text
Font - Bold
ID
ID
Title

Valor
lbltexto
Insertar registro en una tabla desde un
formulario Web.
True
vistadatos
formulario
Insertar un registro en una tabla.

Establecer la conexin

Seleccione el objeto DetailsView llamado vistadatos y en la flecha que aparece en el


lado superior derecho, d clic para visualizar las Tareas de DetailsView:
Figura 15.28 Ventana Tareas de DetailsView.

Seleccione la opcin Elegir orgen de datos y <Nuevo orgen de datos> para


visualizar la ventana Asistente para la configuracin de orgenes de datos. Escoja el
objeto Base de datos y especifique como nombre del identificador del orgen de datos
conexionvista.
369

Figura 15.29 Ventana para elegir el orgen de datos.

Pulse el botn Aceptar para visualizar la ventana de Elegir la conexin de


datos. Realice los pasos necesarios para escoger la base de datos bdlibrovbnet.mdf. La
ventana quedara de la siguiente forma:
Figura 15.30 Ventana Elegir la conexin de datos.

Pulsando el botn Siguiente> se visualizar la ventana para guardar la cadena de


conexin en el archivo de configuracin de la aplicacin. Cambie el nombre de la
cadena de conexin por cadenavista, se obtendr la siguiente figura:

370

Figura 15.31. Ventana Guardar cadena de conexin.

Pulse el botn Siguiente para visualizar la ventana de Configurar la


instruccin Select. Seleccione la tabla Clientes y en la pestaa Columnas pulse el
cuadro de verificacin *.
Figura 15.32 Configurar la instruccin Select.

Por otro lado, pulse el botn Avanzadas para ver la ventana de opciones de
generacin de consultas SQL avanzadas. Active las opciones Generar instrucciones
Insert, Update y Delete y Usar concurrencia optimista. Se obtendr la siguiente
figura:

371

Figura 15.33 Opciones de generacin SQL avanzadas.

Pulse el botn Aceptar para ver nuevamente la ventana Configurar instruccin


Select. En dicha ventana pulse el botn Siguiente para ver la ventana de Consulta de
prueba. Por ltimo pulse el botn Finalizar. En la ventana Tareas de DetailsView
seleccione el cuadro de verificacin Habilitar insercin. La pgina Web quedara de la
siguiente forma:
Figura 15.34 Ventana diseo sitio Web InsertarRegistrosWeb.

La interfaz de usuario queda como se muestra en la siguiente figura:

372

Figura 15.35 Interfaz de usuario InsertarRegistrosWeb.

Ejecutar la aplicacin

Al ejecutarse el sitio Web, se visualizar la pgina Web mostrando el primer registro de


la tabla clientes en el objeto DetailsView vistadatos.
Figura 15.36 Ejecucin aplicacin InsertarRegistrosWeb.

Al pulsarse el link Nuevo los campos de texto del objeto vistadatos quedaran en
blanco y se observaran dos nuevos link Insertar y Cancelar, como se aprecia en la
figura.

373

Figura 15.37 Formulario Web para insertar un registro en la tabla.

Escriba en cada campo la informacin que se muestra en la figura 15.36.


Figura 15.38 Informacin a insertar en la tabla.

Al pulsarse el link Insertar se guardarn los datos en la tabla clientes y


nuevamente se mostrar el primer registro y el link Nuevo. Al ejecutarse la aplicacin
ConsultaWebGridView realizada en el aparte 15.2.2., se visualizar el nuevo registro.
Figura 15.39 Tabla clientes con el nuevo registro.

Registro insertado

374

15.2.5 Modificar un registro de una tabla


Crear un sitio Web llamado ModificarRegistrosWeb que permita modificar registros
en una tabla utilizando el control DetailsView.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en la pgina Web en la posicin deseada: 1 Label, 1 DetailsView.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:


Tabla 15.5 Propiedades de controles del sitio InsertarRegistrosWeb.
Control
Label1

DetailsView1
Form1
Document

Propiedad
ID
Text
Font - Bold
ID
ID
Title

Valor
lbltexto
Modificar registros de una tabla en un
formulario Web.
True
vistadatos
formulario
Modificar registros en una tabla.

Establecer la conexin

Seleccione el objeto DetailsView llamado vistadatos y en la flecha que aparece


en el lado superior derecho, d clic para visualizar las Tareas de DetailsView. Realice
cada uno de los pasos para lograr la conexin a la base de datos ejecutados en el
ejemplo 15.2.4, desde la figura 15.26 hasta la figura 15.31. Al pulsar el botn Finalizar
de la ventana Consulta de prueba se volver a modo diseo de la pgina Web. Active
los cuadro de verificacin Habilitar paginacin y Habilitar edicin del objeto
vistadatos. El formulario Web quedara de la siguiente forma:
Figura 15.40 Ventana diseo sitio Web ModificarRegistrosWeb.

375

Ahora d clic sobre la opcin Editar campos para visualizar la ventana


Campos. En la ventana Campos seleccionados escoja el objeto Editar, Actualizar,
Cancelar y en la ventana Propiedades de CommandField busque la propiedad
ButtonType y escoja de la lista la opcin Button.
Figura 15.41 Ventana para editar los campos.

Por ltimo pulse el botn Aceptar. La interfaz de usuario queda como se


muestra en la siguiente figura:
Figura 15.42 Interfaz de usuario ModificarRegistrosWeb.

376

Ejecutar la aplicacin

Al ejecutarse el sitio Web, se visualizar la pgina Web mostrando el primer registro de


la tabla clientes en el objeto DetailsView vistadatos, el botn Editar y los
hipervnculos de paginacin.
Figura 15.43 Ejecucin aplicacin ModificarRegistrosWeb.

Con los link numricos busque el registro que se inserto en el ejemplo anterior y
pulse el botn Editar. Se observaran dos nuevos botones Actualizar y Cancelar.
Modifique el contenido del campo empresa por el texto Las acacias.
Figura 15.44 Formulario Web listo para modificar un registro en la tabla.

Pulse el botn Actualizar para obtener la siguiente figura:


377

Figura 15.45 Registro modificado de la tabla clientes.

15.2.6 Eliminar un registro de una tabla


Disear un sitio Web llamado EliminarRegistrosWeb que permita eliminar registros
en una tabla utilizando el control DetailsView.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en la pgina Web en la posicin deseada: 1 Label, 1 DetailsView.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:


Tabla 15.6 Propiedades de controles del sitio EliminarRegistrosWeb.
Control
Label1

DetailsView1
Form1
Document

Propiedad
ID
Text
Font - Bold
ID
ID
Title

Valor
lbltexto
Eliminar registros de una tabla desde un
formulario Web.
True
vistadatos
formulario
Eliminar registros en una tabla.

Establecer la conexin

Seleccione el objeto DetailsView llamado vistadatos y en la flecha que aparece en el


lado superior derecho, de clic para visualizar las Tareas de DetailsView. Realice cada
uno de los pasos para lograr la conexin a la base de datos ejecutados en el ejemplo
15.2.4, desde la figura 15.26 hasta la figura 15.31. Al pulsar el botn Finalizar de la
ventana Consulta de prueba se volver a modo diseo de la pgina Web. Active los
cuadro de verificacin Habilitar paginacin y Habilitar eliminacin del objeto
vistadatos. El formulario Web quedara de la siguiente forma:

378

Figura 15.46 Ventana diseo sitio Web EliminarRegistrosWeb.

Ahora d clic sobre la opcin Editar campos para visualizar la ventana


Campos. En la ventana Campos seleccionados escoja el objeto Eliminar y en la
ventana Propiedades de CommandField busque la propiedad ButtonType y escoja de
la lista la opcin Button.
Figura 15.47 Ventana para editar los campos.

Por ltimo pulse el botn Aceptar. La interfaz de usuario queda como se


muestra en la siguiente figura:
379

Figura 15.48 Interfaz de usuario EliminarRegistrosWeb.

Ejecutar la aplicacin

Al ejecutarse el sitio Web, se visualizar la pgina Web mostrando el primer registro de


la tabla clientes en el objeto DetailsView vistadatos, el botn Eliminar y los
hipervnculos de paginacin.
Figura 15.49 Ejecucin aplicacin EliminarRegistrosWeb.

Con los link numricos busque el registro que se inserto y posteriormente se


modifico en ejemplos anteriores.

380

Figura 15.50 Formulario Web con el registro a ser eliminado.

Pulse el botn Eliminar. Se eliminar el registro actual y se observar el


siguiente registro de la tabla clientes en el objeto vistadatos.
Figura 15.51 Formulario Web al ser eliminado el registro con nit 20000.

Al ejecutarse nuevamente la aplicacin ConsultaWebGridView realizada en el


aparte 15.2.2., se visualizar todos los registros actuales de la tabla clientes.
Figura 15.52 Registros actuales de la tabla clientes.

381

15.2.7 Filtrar registros de una tabla


Realizar un sitio Web llamado FiltrarRegistrosWeb que permita visualizar registros de
una tabla cuyo nit sea mayor o igual a 500.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en la pgina Web en la posicin deseada: 1 Label, 1 DetailsView.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:


Tabla 15.7 Propiedades de controles del sitio InsertarRegistrosWeb.
Control
Label1

ListView1
Form1
Document

Propiedad
ID
Text
Font - Bold
ID
ID
Title

Valor
lbltexto
Filtrar los registros de una tabla con
formularios Web.
True
vista
formulario
Filtrar registros de una tabla.

Establecer la conexin

Seleccione el objeto ListView llamado vista y en la flecha que aparece en el lado


superior derecho, de clic para visualizar las Tareas de ListView:
Figura 15.53 Ventana Tareas de ListView.

Seleccione la opcin Elegir orgen de datos y <Nuevo orgen de datos> para


visualizar la ventana Asistente para la configuracin de orgenes de datos. Escoja el
objeto Base de datos y especifique como nombre del identificador del orgen de datos
conexionlista.

382

Figura 15.54 Ventana para elegir el orgen de datos.

Pulse el botn Aceptar, para visualizar la ventana de Elegir la conexin de


datos. Realice los pasos necesarios para escoger la base de datos bdlibrovbnet.mdf. La
ventana quedara de la siguiente forma:
Figura 15.55 Ventana Elegir la conexin de datos.

|Pulsando el botn Siguiente> se visualizar la ventana para guardar la cadena


de conexin en el archivo de configuracin de la aplicacin. Cambie el nombre de la
cadena de conexin por cadenalista, se obtendr la siguiente figura:

383

Figura 15.56 Ventana Guardar cadena de conexin.

Pulse el botn Siguiente para visualizar la ventana de Configurar la


instruccin Select. Seleccione la tabla Clientes y en la pestaa Columnas pulse el
cuadro de verificacin *.
Figura 15.57 Configurar la instruccin Select.

Por otro lado, pulse el botn WHERE para ver la ventana Agregar clusula
WHERE. Realice lo siguiente: de la lista Columna escoja el campo nit; de la lista
Operador seleccione el operador >=; de la lista Orgen el texto None; y en las
propiedades del parmetro el valor 500. Se obtendr la siguiente figura:

384

Figura 15.58 Agregar clusula WHERE.

Luego pulse el botn Agregar. La ventana quedara as:


Figura 15.59 Agregar clusula WHERE despus de pulsar el botn Agregar.

Pulse el botn Aceptar para ver nuevamente la ventana Configurar instruccin


Select. En dicha ventana pulse el botn Siguiente para ver la ventana de Consulta de
prueba. Por ltimo pulse el botn Finalizar.

385

Figura 15.60 Ventana diseo sitio Web FiltrarRegistrosWeb.

Nuevamente seleccione el objeto vista y en la ventana de Tareas de ListView


d clic en la opcin Configure ListView. De la lista Select a Layout seleccione Grid y
de la lista Select a Style escoja Professional. La ventana quedara de la siguiente
forma:
Figura 15.61 Ventana Configure ListView.

Pulse el botn OK para obtener la siguiente figura:


Figura 15.62 Ventana con el objeto vista modificado.

386

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 15.63 Interfaz de usuario FiltarRegistrosWeb.

Ejecutar la aplicacin

Al ejecutarse el sitio Web, se visualizar la pgina Web mostrando los registros de la


tabla clientes en el objeto ListView vista cuyo nit es mayor o igual a 500.
Figura 15.64 Ejecucin aplicacin FiltrarRegistrosWeb.

387

15.2.8 Informe de los registro de una tabla


Elaborar un sitio Web llamado InformeRegistrosWeb que permita visualizar todos los
registros de la tabla clientes de la base de datos bdlibrovbnet.mdf.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en la pgina: 1 MicrosoftReportViewer.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:


Tabla 15.8 Propiedades de controles del sitio Web InformeRegistrosWeb.
Control
MicrosoftReportViewer
Form1
Document

Propiedad
ID
ID
Title

Valor
informeregistros
formulario
Informe de los registros de una
tabla.

La interfaz de usuario queda como se muestra en la siguiente figura:


Figura 15.65 Interfaz de usuario InformeRegistrosWeb.

Disear el informe y establecer la conexin con la base de datos

Para seleccionar la tabla y disear el informe, pulse la flecha del lado superior derecha
del objeto informeregistros para ver la ventana Tareas de ReportViewer y escoga la
opcin Disear nuevo informe.

388

Figura 15.66 Seleccin Tareas de ReportViewer Disear nuevo informe.

Al dar clic en la opcin Disear nuevo informe, se visualizar el asistente de


informes.
Figura 15.67 Asistente para informes.

D clic en Siguiente> para ver la ventana del asistente para la configuracin


de orgenes de datos. Realice la conexin de datos de la base de datos
bdlibrovbnet.mdf. Se obtendr la siguiente figura:

389

Figura 15.68 Ventana Elegir la conexin de datos.

Pulse Siguiente> para visualizar el siguiente mensaje:


Figura 15.69 Ventana Microsoft Visual Studio.

Pulse el botn S para copiar el archivo de datos en la carpeta donde guard el


sitio Web y visualizar la ventana de guardar cadena de conexin:
Figura 15.70 Ventana Guardar cadena de conexin.

390

Cambie el nombre de la conexin que all aparece por conexioninforme y pulse


el botn Siguiente>. Se visualizar la ventana elija los objetos de base de datos. Pulse el
signo (+) al lado de Tablas para desplegar las tablas de la base de datos y seleccione la
tabla clientes. Por otro lado, cambie el nombre del DataSet que all aparece por
conjuntodedatos.
Figura 15.71 Ventana de eleccin de objetos de la base de datos.

Pulse el botn Finalizar, para visualizar la ventana seleccionar orgenes de


datos. Pulse los signos (+) para desplegar el objeto clientes
Figura 15.72 Asistente para informes seleccionar el origen de datos.

391

D clic en Siguiente> para visualizar la ventana de seleccin de tipo de


informe. Seleccione la opcin Tabular.
Figura 15.73 Asistente para informes seleccionar el tipo de informe.

D clic en el botn Siguiente> para visualizar la ventana Disear la tabla.


Seleccione el campo nit y pulse el boton Grupos. Seleccione cada uno de los restantes
campos y paslos a la ventana Detalles con el botn Detalles>, se obtiene la siguiente
figura:
Figura 15.74 Asistente para informes disear la tabla.

392

Pulse el botn Siguiente> para visualizar la ventana Elegir el diseo de la


tabla. Seleccione la opcin Escalonado.
Figura 15.75 Asistente para informes elegir el diseo de la tabla.

D clic en el botn Siguiente> para visualizar la ventana Elegir el estilo de


tabla. Seleccione la opcin con el estilo que desee.
Figura 15.76 Asistente para informes elegir el estilo de tabla.

393

Pulse el botn Siguiente> para visualizar la ventana Finalizacin del asistente


de informes. En el campo Nombre del informe escriba el texto
informe_registros_clientes.
Figura 15.77 Ventana Finalizacin del Asistente para informes.

D clic en el botn Finalizar> para visualizar el diseo final del informe.


Figura 15.78 Ventana diseo final del informe.

Seleccione nuevamente la pgina aspx, pulse la flecha en la parte superior


derecha del objeto informeregistros y escoja la opcin Elegir informe. Seleccione el
informe informe_registros_clientes.rdlc, se visualizar la siguiente figura:

394

Figura 15.79 Ventana con el informe informe_registros_clientes elegido.

Ejecutar el sitio Web

Al ejecutarse el sitio Web, se visualizar la pgina con el informe de los registros que
contiene la tabla clientes. Puede ajustar el tamao del reporte en la pgina en modo de
diseo.
Figura 15.80 Pgina Web con el informe de los registros de la tabla clientes.

395

15.2.9 Visualizar los registros de dos tablas relacionadas


Disear un sitio Web llamado RelacionTablasWeb, que permita a un usuario
seleccionar desde un control desplegable el nombre de una empresa y en un control
GridView visualizar cada uno de los pedidos que la empresa seleccionada ha realizado.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario Web en la posicin deseada: 3 Label, 1
DropDownList, 1 GridView.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:


Tabla 15.9 Propiedades de controles del sitio Web RelacionTablasWeb.
Control
Label1
Label2
Label3
DropDownList1
GridView1
Form1
Document

Propiedad
ID
Text
Font - Bold
ID
Text
Font - Bold
ID
Text
Font - Bold
ID
AutoPostBack
ID
ID
Title

Valor
lbltexto
Relacin de dos tablas desde un Sitio Web
True
lblempresas
Seleccione el nombre de la empresa:
True
txtpedidos
Registros relacionados.
True
listaempresas
True
datospedidos
formulario
Relacin de dos tablas.

Figura 15.81 Interfaz de usuario RelacionTablasWeb.

396

Establecer la conexin

Seleccione el objeto DropDownList llamado listaempresas y en la flecha que aparece


en el lado superior derecho, d clic en el mouse para visualizar las Tareas de
DropDownList. Seleccione la opcin Elegir orgen de datos, para visualizar la
siguiente figura:
Figura 15.82 Ventana para configuracin de orgenes de datos.

En la opcin Seleccionar un origen de datos escoja <Nuevo origen de


datos>, para ver la ventana Elija un de tipo de orgen de datos. Escoja el objeto
Base de datos y cambie el identificador para el origen de datos por el texto
conexionrelacion. Se apreciara la siguiente figura:
Figura 15.83 Ventana para elegir tipo de origen de datos.

397

Pulse el botn Aceptar. Se visualizar la ventana Elegir la conexin de datos.


Realice la conexin de datos de la base de datos bdlibrovbnet.mdf. Se obtendr la
siguiente figura:
Figura 15.84 Ventana Elegir la conexin de datos.

D clic en el botn Siguiente para ver la ventana Guardar la cadena de


conexin. Cambie el nombre de la cadena de conexin por cadenarelacion, se obtendr
la siguiente figura:
Figura 15.85 Ventana para guardar la cadena de conexin.

398

Pulse el botn Siguiente para visualizar la ventana de Configurar la


instruccin Select. Seleccione la tabla Clientes y en la pestaa Columnas pulse el
cuadro de verificacin *.
Figura 15.86 Ventana para configurar la instruccin Select.

D clic en el botn Siguiente para ver la ventana de Consulta de prueba y en


esta ventana pulse el botn Finalizar. Se mostrar una nueva ventana Elegir un orgen
de datos. Cambie en la opcin seleccionar un campo de datos para mostrar en
DropDownList nit por empresa. Se observar la siguiente figura:
Figura 15.87 Datos a mostrar en el objeto DropDownList listaempresas.

399

Pulse el botn Aceptar para volver a modo diseo. Ahora seleccione el objeto
datospedidos y pulse en la flecha de la parte superior derecha para ver las Tareas de
GridView. Escoja la opcin Elegir origen de datos y seleccione <Nuevo origen de
datos>. Se visualizar la ventana Elija un tipo de origen de datos, all seleccione el
objeto Base de datos y cambie el identificador para el origen de datos por
conexionpedidos.
Figura 15.88 Ventana Elija un tipo de origen de datos (objeto datospedidos).

Pulse el botn Aceptar. Se visualizar la ventana Elegir la conexin de datos


de datos. Realice la conexin a la base de datos bdlibrovbnet.mdf. Se obtendr la
siguiente figura:
Figura 15.89 Ventana elegir la conexin de datos (objeto datospedidos).

400

D clic en el botn Siguiente para ver la ventana Guardar la cadena de


conexin. Cambie el nombre de la cadena de conexin por cadenapedidos, se obtendr
la siguiente figura:
Figura 15.90 Ventana para guardar la cadena de conexin (objeto datospedidos).

Pulse el botn Siguiente para visualizar la ventana de Configurar la


instruccin Select. Seleccione la tabla Pedidos y en la pestaa Columnas pulse el
cuadro de verificacin *.
Figura 15.91 Ventana para configurar la instruccin Select (objeto datospedidos).

401

A continuacin pulse el botn WHERE para visualizar la ventana de Agregar


clusula WHERE.Y realice lo siguiente: de la lista Columna escoja el campo nit; de la
lista Operador seleccione el operador =; de la lista Orgen Control; y en las
propiedades del parmetro en Id. De control seleccione listaempresas. Se obtendr la
siguiente figura:
Figura 15.92 Agregar clusula WHERE (objeto datospedidos).

Luego pulse el botn Agregar. La ventana quedara as:


Figura 15.93 Clusula WHERE agregada (objeto datospedidos).

402

Pulse el botn Aceptar para ver nuevamente la ventana Configurar instruccin


Select. En dicha ventana pulse el botn Siguiente para ver la ventana de Consulta de
prueba. Por ltimo pulse el botn Finalizar para volver a modo diseo.
Figura 15.94 Ventana diseo sitio Web RelacionTablasWeb.

Ejecutar el sitio Web

Al ejecutarse el sitio Web, se observan en la pgina los objetos DropDownList y


GridView. En el objeto DropDownList se puede seleccionar un nombre de una
empresa de la tabla clientes y en el objeto GridView se visualizarn los registros
relacionados con la tabla pedidos.
Figura 15.95 Ejecucin de la aplicacin RelacionTablasWeb.

403

15.3 Ejercicios bases de datos con ASP.NET


1. Crear un sitio Web que permita realizar una conexin a una base de datos y
mostrar datos de una tabla en un control Repeater
2. Elaborar un sitio Web que permita realizar una conexin a una base de datos y
actualizar un campo nmerico por el valor actual ms 100000.
3. Escribir un sitio Web que permita visualizar los registros de una tabla en campos
de texto. El usuario deber poderse desplazar por cada registro de la tabla
utilizando los botones: Primero, Siguiente, Anterior y ltimo.
4. Disear un sitio Web que permita visualizar los registros de una tabla en un
control ListView. El usuario deber visualizar cinco registros por cada pgina
utilizando los botones: Primero, Siguiente, Anterior y ltimo.
5. Hacer un sitio Web que permita escribir sentencias SQL en un campo de texto y
visualizar los resultados de dicha sentencia en un GridView.
6. Realizar un sitio Web que permita visualizar los registros de dos tablas
relacionadas donde la ciudad sea igual a Cali.
7. Hacer un sitio Web que permita visualizar un informe de los registros de una
tabla cuyas empresas empiecen por la silaba CA.
8. Realizar un sitio Web que permita hacer una conexin a una base de datos y
visualizar los registros cuyo nit sea mayor que 300 y menor que 700 en un
ListView.
9. Realizar un sitio Web que permita realizar una relacin entre tres tablas de una
base de datos en SQL Server.
10. Hacer un sitio Web que permita visualizar en un informe los registros de una
relacin de dos tablas.

404

16. SERVICIOS WEB


Un servicio Web es una interfaz definida que proporciona una determinada
funcionalidad y diversas aplicaciones lo pueden accesar a travs de los estndares de
Internet como XML o HTTP. La mayor importancia de un servicio Web es que est
disponible a travs de diferentes protocolos de la Web y es compatible con diferentes
lenguajes de programacin, equipos y sistemas operativos. Una de las caractersticas de
los servicios Web es el grado de abstraccin entre la implementacin y el uso del
servicio por lo que no se necesita tener informacin de la ubicacin, las entradas o las
salidas del servicio. Los servicios Web se dividen en servicios de transporte (los
protocolos del nivel ms bajo, que codifican la informacin independientemente de su
formato, y que pueden ser comunes a otros servicios), de mensajera, de descripcin y
de descubrimiento. En la parte ms baja se encuentran los servicios de transporte, que
establecen la conexin y el puerto usado. Generalmente se usa HTTP el mismo
protocolo que la WWW, pero se puede usar tambin SMTP (protocolo del correo
electrnico), FTP (File Transfer Protocol).
Los servicios Web utilizan el protocolo SOAP (Simple Object Access
Protocol). Un mensaje SOAP est compuesto por encabezados y un cuerpo de mensaje.
Los encabezados contienen informacin que puede ser procesada por el servidor Web.
El cuerpo del mensaje contiene informacin que es procesada por una aplicacin como
parmetros o la devolucin de un valor para un servicio Web.
Los beneficios de los servicios Web son:
Comunicacin entre diferentes aplicaciones y/o sistemas operativos.
El servicio es reutilizable.
Su programacin es prcticamente sencilla.
Se puede distribuir su informacin entre varios clientes.
Para habilitar un servicio web con ASP.NET de debe crear un archivo con una
extensin de nombre de archivo .asmx, declarar un servicio web en ese archivo y
definir los mtodos de los servicios web.
16.1 Crear un servicio Web desde Visual Basic .NET
Crear servicios Web desde el entorno de desarrollo de Visual Basic.NET, es algo
similar a la creacin de un proyecto Windows Forms o una aplicacin ASP.NET. El
nico requisito es tener instalado Microsoft Internet Information Services (IIS)
localmente en el equipo de trabajo.
Como
ejemplo,
se
crear
un
servicio
Web
llamado
ServicioWebNumerosPrimos que reciba un nmero digitado por un usuario y retorne
en texto si dicho nmero es primo o no.

Crear el servicio web

Desde la pgina de inicio de Microsoft Visual Studio cree un nuevo proyecto, puede
seguir los siguientes pasos:
1. En la ventana proyectos recientes seleccionar la opcin Crear: link Sitio Web.

405

2. Hacer clic en la opcin Archivo del men y seleccionar Nuevo sitio Web

Seleccin el men Archivo y escoja la opcin Nuevo sitio Web, para


visualizar la siguiente ventana:
Figura 16.1 Ventana para crear un servicio Web desde Visual Basic.NET.

Como plantilla escoja Servicio web ASP.NET; En el campo Lenguaje


seleccione Visual Basic, por ltimo, pulse el botn Examinar Se visualizar la
ventana Seleccionar ubicacin (Sistema de archivos). Dicha ventana vara de acuerdo a
los archivos que contenga el equipo de trabajo.
Figura 16.2 Ventana Seleccionar ubicacin.

406

D clic sobre el icono IIS local y en la ventana derecha seleccione el objeto


Sitio web predeterminado. Se observar la siguiente figura:
Figura 16.3 Ventana Seleccionar ubicacin IIS local.

D clic en el icono
(Crear nueva aplicacin Web) que se encuentra en la
parte superior derecha de la ventana. En el nuevo objeto que aparece reemplace en texto
WebSite por ServicioWebNumerosPrimos. Se obtendr una figura similar a la
siguiente:
Figura 16.4 Creacin de una nueva aplicacin Web.

Pulse el botn Abrir para visualizar nuevamente el cuadro de dilogo Nuevo


sitio Web, como se muestra en la siguiente figura:
407

Figura 16.5 Nuevo sitio web con la ubicacin del servicio Web.

La ubicacin incluye el protocolo (http://) y la ubicacin (localhost). Esto indica


que est trabajando con un sitio Web de IIS local. Pulse el botn Aceptar para ver el
archivo del servicio web.
Figura 16.6 Archivo de un servicio Web Service1.asmx.vb.

Se crea el archivo Service.vb (servicio web predeterminado) que importa los


espacios
de
nombres:
System.Web,
System.Web.services
y
System.Web.Services.Protocols. Tambin crea un espacio de nombres NamesSpace
donde se define la direccin HTTP. Adems se crea la clase Service que hereda de
System.Web.Services.WebService (proporciona acceso directo a los objeto comunes
de ASP.NET). Por defecto siempre se crea el procedimiento Function HelloWord ().

408

Escribir cdigo en el servicio Web

El cdigo ser la interfaz del servicio Web a los que un usuario tendr acceso desde una
aplicacin Web. Entre Class y End Class se deben declarar cada uno de los
procedimientos que utilizar el servicio Web para realizar una tarea especfica. Los
procedimientos de un servicio Web se estructuran de la siguiente manera:
<WebMethod ()>: Entre los parntesis se puede hacer un comentario del servicio Web,
<WebMethod (Description:=Servicio Web para consultar una base de datos)>

La definicin normal de un procedimiento Function es:

Modificador de acceso: public, prvate


Function: palabra reservada para declarar una funcin
Nombre_de la funcin: ej: HelloWord
Lista de parmetros: ()
Tipo de retorno: ej: String
Cuerpo de la funcin: Ej: Helloworld =Hello World retorna dicho texto.
Fin de la funcin : End Function

Como lo que se pretende es que el servicio Web determine si un nmero


digitado por el usuario es primo o no, se debe crear el procedimiento que realice este
proceso. Si desea puede borrar la funcin HelloWord y crear una nuevo procedimiento
Function llamado numerosprimos. La clase Service con el procedimiento Function
quedara de la siguiente manera:
Figura 16.7 Servicio Web con el procedimiento numerosprimos.

409

Ejecutar el Servicio Web

Haga clic en el icono Iniciar depuracin


de la barra de herramientas estndar o
presione F5 para ejecutar el proyecto. Se visualizar la siguiente figura:
Figura 16.8 Ejecucin del Servicio Web Service.

figura:

D clic sobre el hipervnculo numerosprimos, se visualizar la siguiente

Figura 16.9 Ejecucin del hipervnculo numerosprimos.

410

En el campo de texto escriba el nmero 7 y d clic en el botn Invocar para


realizar el proceso del procedimiento numerosprimos.
Figura 16.10 Resultado al invocar el servicio Web.

16.2 Acceder a un Servicio Web


Teniendo ya creados los servicios Web que un usuario considero convenientes
programar, es posible acceder (consumir) a los servicios Web desde una aplicacin
ASP.NET. Para esto, es necesario crear una aplicacin Web ASP.NET y agregar una
referencia Web para comunicarse con el servicio Web y realizar su ejecucin.
16.2.1 Ejemplo prctico para acceder a un Servicio Web desde ASP.NET
Crear un sitio Web llamado NumerosPrimosWeb, que permita capturar un nmero e
imprima si dicho nmero es primo o no. Se debe obtener la respuesta de un servicio
Web.

Crear la interfaz de usuario

Utilizando el cuadro de herramientas haga clic en el control especfico y ubique los


siguientes controles en el formulario Web en la posicin deseada: 3 Label, 2 TextBox,
1 Button.

Establecer las propiedades de los objetos de la interfaz de usuario

Establezca las siguientes modificaciones a los controles:

411

Tabla 16.1 Propiedades de controles del sitio Web NumerosPrimosWeb.


Control
Label1

Label2
Label3
TextBox1
TextBox2
Button1
Form1
Document

Propiedad
ID
Text
Font - Bold
ID
Text
Font - Bold
ID
Text
Font - Bold
ID
ID
ID
AutoPostBack
ID
Title

Valor
lbltexto
Formulario Web para determinar si un
nmero es primo o no con un servicio
Web.
True
lblnumero
Digite un nmero:
True
lblresultado
Resultado:
True
txtnumero
txtresultado
boton
Evaluar nmero
formulario
Pgina Web que consume un servicio
Web.

Figura 16.11 Interfaz de usuario NumerosPrimosWeb.

Agregar servicio Web

Para agregar el servicio Web a la aplicacin Web seleccione el men Sitio Web y
escoja la opcin Agregar referencia Web, se obtendr la siguiente ventana:

412

Figura 16.12 Ventana para agregar un servicio Web.

D clic sobre el link Servicios web del equipo local, se visualizar una ventana
similar a la siguiente figura (depende de los servicios que tenga el equipo local):
Figura 16.13 Ventana para seleccionar un servicio Web del equipo local.

En este caso pulse el segundo link Service, el cual tiene una URL
http://localhost:8081/ServicioWebNumerosPrimos/Serv... Se obtendr la siguiente
figura:

413

Figura 16.14 Funciones del servicio Web.

En esta ventana se muestran todas las funciones que tiene el servicio Web
ServicioWebNumerosPrimos. En el campo Nombre de referencia Web aparece por
omisin el texto localhost (cmbielo si desea), pulse el botn Agregar referencia para
volver a la pgina Web. En el Explorador de soluciones se podr visualizar el servicio
Web integrado al proyecto
Figura 16.15 Servicio Web integrado al sitio Web.

Escribir cdigo

D doble clic sobre el objeto boton para abrir el editor de cdigo del procedimiento
boton_Click y escriba el siguiente cdigo:
414

Dim servicio As New localhost.Service


txtresultado.Text = servicio.numerosprimos(txtnumero.Text)

Se crea un objeto llamado servicio al cual se le asigna espacio de memoria del


espacio de nombre localhost y de la clase del servicio Web Service. A la propiedad
Text del objeto txtresultado se le asigna el valor que retorne el procedimiento
numerosprimos del servicio Web.

Ejecutar el Servicio Web

Al ejecutarse la aplicacin Web y digitar en el objeto txtnumero el nmero 11 y luego


pulsar el botn Evaluar nmero se visualizar en el objeto txtresultado el resultado de
la evaluacin del nmero.
Figura 16.16 Ejecucin de la aplicacin NumerosPrimosWeb.

415

NDICE
Abs, 69
Abstraccin, 198
Acceder a un Servicio Web, 413
AccesDataSource, 355
ActiveMdiChild, 150
AdapterManager, 246
ADO.NET, 230
Aggregate, 279
ALL, 225
ALTER, 224
And, 33
AND, 225
AndAlso, 33
Aplicacin para Windows Forms, 15
Aplicacin Web ASP.NET, 15
Arco, 163
Asc, 73
AsEnumerable, 314
ASP.NET, 316
ASP.NET AJAX, 13
Average, 279
AVG, 225
BETWEEN, 225
BigMul, 69
BindingSource, 246
BulletedList, 335
catch, 117
CBool, 31
CByte, 31
CChar, 31
CDate, 31
CDbl, 31
CDec, 31
Ceiling, 69
Chars, 72
CheckBox, 99
CheckedListBox, 146
Chr, 73
CInt, 31
Circulo, 163
Clase, 11
Clases, 198
Class, 199
Clear, 140
CLng, 31
Colecciones, 84
columnas, 223
ComboBox, 93
Command, 231
CompareValidator, 350
Concat, 72
Conectarse a SQL Server, 422
Connection, 231
Constantes, 26
Constructores, 199
ControlValidate, 352
Copy, 139
cos, 69

Count, 279
COUNT, 225
Creacin de Mens, 130
Creacin de una barra de herramientas,
156, 159
CREATE, 224
CREATE DATABASE, 226
CShort, 31
Cuadro de Herramientas, 16, 319
Curva, 163
CustomValidator, 350
Cut, 139
Data Source, 233, 357
DataAdapter, 231
Database, 233, 357
DataGridView, 105
DataMember, 241
DataSet, 230, 355
DataSource, 241, 276
DataTable, 231
DataView, 231, 355
Date, 66
DateTimePicker, 144
Default.aspx, 319
DefaultView, 276
DELETE, 224
Diseador formulario Windows, 16
Diseador formularios Web, 319
DLL, 223
DML, 223
DoLoop While, 51
DrawArc, 163
DrawCurve, 163
DrawEllipse, 163
DrawLine, 163
DrawPie, 163
DrawPolygon, 163
DrawRectangle, 163, 169
DROP, 224
Editor de cdigo, 21
El explorador de soluciones, 17, 319
Elegir base de datos, 235
Elegir proveedor base de datos, 235
Elipse, 163
Encapsulacin, 198
ErrorMessage, 352
Espacio de nombres, 11
Estructuras de Control, 37
filas, 223
fill, 233, 357
FillEllipse, 163
FillPie, 163
FillPolygon, 163
FillRectangle, 163
Floor, 69
FolderBrowseDialog, 122
Font - Bold, 355, 356
For, 45, 55

416

From, 278
FROM, 224
FromArgb, 104
Funciones de cadenas de caracteres, 72
Funciones Matemticas, 69
Function, 61
GetItemChecked, 148
GraphicsPath, 169
GROUP, 224
Group By, 279
HAVING, 224
Height, 175
Herencia, 198, 201
HotSpotMode, 332
If (operador)., 39
IIF., 39
ImageMap, 331
IN, 225
IndexOf, 73
InitialDirectory, 137
Insert, 73
INSERT, 224
Integrated, 10
Integrated Security, 233, 357
Join, 279
KeyCode, 194
KeyDown, 193
KeyPress, 193
KeyUp, 193
Left, 172
Len, 73
Length, 72
Lenguaje de Consulta Estructurado, 223,
225, 229
LIKE, 225
LinkLabel., 91
LINQ, 278
LINQ to DataSet, 278
LINQ to Objects, 278
LINQ to SQL, 278
LINQ to XML, 278
ListBox, 93
ListView, 107
Matrices, 78
Max, 69, 279
MAX, 226
MaximumValue, 352
MDI, 130
Mensaje, 198
Men principal, 15, 319
men Ventana, 153
Mens, 130
Mtodo, 198
Mid, 73
min, 69
Min, 280
MIN, 226
MinimumValue, 352
Modificar la cadena de conexin:, 235
Mdulos, 59

MonthCalendar, 145
MouseClick, 188
MouseDoubleClick, 188
MouseDown, 188
MouseEnter, 188
MouseHover, 188
MouseLeave, 188
MouseMove, 188
MouseUp, 188
MouseWheel, 188
movenext, 127, 128
MultiView, 342
NamesSpace, 410
Not, 33
NOT, 225
Objetos, 198
OleDataAdapter, 231
OleDbCommand, 231
OleDbConnection, 231
OleDbDataAdapter, 355
Operadores de comparacin, 225
Operadores Lgicos, 33
Operadores lgicos S.Q.L, 224
Operadores Relacionales, 32
Or, 33
OR, 225
OracleCommand, 231
OracleConnection, 231
OracleDataAdapter, 231
OracleDbDataAdapter, 355
ORDER, 224
Order By, 279
OrElse, 33
Orientada a objetos, 223
origen de datos, 354
Palabras clave, 36
Paste, 139
Pie, 163
Point, 163
Poligono, 163
Polimorfismo, 198
PostBack, 332
PostBackValue, 332
pow, 69
private, 199
Probar la conexin, 235
Procedimientos, 61
Programacin Orientada a Objetos, 198
Propiedad, 198
protected, 199
public, 199
Punto, 163
RadioButton, 99
RadioButtonList, 338
RangeValidator, 350
ReadtoEnd, 138
Recta, 163
Rectangle, 163
Rectangulo, 163
Redo, 139

417

RegularExpressionValidator, 350
Remove, 73
Replace, 73
RequiredFieldValidator, 350
RichTextBox, 115
round, 69
RowFilter, 276
SDI, 130
Select, 278
SELECT, 224, 227
Select case (Seleccionar caso), 42
SelectedItem, 255, 256
SelectedValue, 276
SelectionBullet, 141
Sentencia If (Si), 37
Sentencia If- Else (Si - Sino), 38
Sentencias bsicas S.Q.L, 226
servicio web, 407
sin, 69
SOAP, 407
Sobrecarga, 200
Split, 73
SqlCommand, 231
SqlConnection, 231
SqlDataAdapter, 231
SqlDataSource, 355
SqlDbDataAdapter, 355
sqrt, 69
Str, 31
StreamWriter, 137
String.Copy, 73
StrReverse, 73
Sub, 61
SubString, 73
Sum, 280
SUM, 225
System.Data.SqlClient, 232, 356
System.Drawing, 162

System.Linq, 278
TableAdapter, 246
tan, 69
Timer, 172
Tipos de datos, 26
TocharArray, 73
ToLower, 72
Toma de desiciones, 37
Top, 172
ToUpper, 72
TrackBar, 102
TreeView, 118
Trim, 73
Try-Catch, 117
tuplas, 223
Undo, 139
UPDATE, 224
Val, 31
ValidationExpression, 352
ValidationSummary, 350
ValidationType, 352
ValueMember, 276
ValueToCompare, 352
variable, 25
Ventana de depuracin de errores, 19, 320
Ventana de propiedades, 18, 320
View, 342
Visual Basic .NET, 10
Visual Studio .NET, 10
VScrollBar, 102
WebBrowse, 125
Where, 279
WHERE, 224
While, 48
Width, 175
Windows Authentication, 422
XmlDataSource, 355
Xor, 33

418

BIBLIOGRAFA

CEBALLOS, Javier. Microsoft Visual Basic .NET Lenguaje y aplicaciones.


Mxico, Editorial Alfaomega Ra-Ma. 2da edicin, 2007.

CHARTE, Francisco. Programacin con Visual Basic .NET. Mxico, Editorial


Anaya, 2003.

HARWRYSZKIEWYCZ, I T. Anlisis y diseo de base de datos. Editorial


Megabyte. Noriega Editores. Mxico. 1994.

JAMSA, Kris. Superutilidades para Visual Basic .NET. Editorial Mc Graw Hill,
1ra. Edicin. Espaa. 2003.

INFOGRAFA

http://www.elquintero.net/Manuales.aspx?Cat=2&SubCat=6&jscript=true

http://www.willydev.net/descargas/Cursos/vbnet/index.html

http://www.dotnetspider.com/tutorials/AspNet-Tutorials.aspx

http://www.programacionfacil.com/visual_basic_net/start

http://www.programacion.com/asp/articulo/datosaspnet/

http://www.es-asp.net/tutoriales-asp-net/tutorial-61-81/efectuando-acceso-adatos.aspx

http://www.es-asp.net/tutoriales-asp-net/tutorial-61-96/enlazando-a-basesde-datos.aspx.

http://msdn.microsoft.com/es-es/library/y8c0cxey.aspx

http://msdn.microsoft.com/es-es/library/ya3sah92(VS.80).aspx

http://msdn.microsoft.com/es-es/library/ff855828(VS.80).aspx

http://msdn.microsoft.com/es-es/library/a127sbc5(VS.80).aspx

http://msdn.microsoft.com/es-es/library/h974h4y2(VS.80).aspx

http://social.msdn.microsoft.com/forums/es-ES/vbes/thread/087a5f2c-9eda44a5-9a58-6008b65c9a8e

http://www.recursosvisualbasic.com.ar/htm/tutoriales/datagrid-dbgrid.htm

http://www.recursosvisualbasic.com.ar/htm/tutoriales/controles_visual_basic
_menu.htm

419

ANEXO A
SQL Server
Este tutorial utiliza como base de datos SQL Server 2005 Express.
Dicha base de datos se puede instalar independientemente de la versin de Visual
Studio.
A.1 Conectarse a SQL Server.
Cuando se instala SQL Server, en los programas existe una opcin para conectarse a la
base de datos seleccione Microsoft SQL Server 2005. Realice los siguientes pasos:
1. Inicio - > Todos los Programas - > Microsoft SQL Server 2005.
2. SQL Server Management Studio Express.
Figura A.1 Opciones para conectarse a SQL Server.

Al pulsar SQL Server Management Studio Express se visualiza la ventana


Connect to Server.
Figura A.2 Ventana Connect to Server.

Deber digitar lo siguiente:


1. Server Name: Por omisin aparece el nombre del servidor donde fue instalado
SQL Server.
2. Authenticacion: Por omisin aparece Windows Authentication, la otra opcin
es SQL Server Authentication. Si selecciona SQL Server Authentication, se
deber digitar el User Name y el Password creado cuando se realizo la
instalacin de SQL Server.

420

3. Pulsar el botn Connect.


Se visualizar el entorno de trabajo de Microsoft SQL Server Management Studio
Express.
Figura A.3 Ventana Microsoft SQL Server Management Studio Express.

A.2 Crear una base de datos


En la ventana Object Explorer seleccione la opcin Databases y pulse el botn
derecho del mouse para ver las opciones New Databases, Attach, Restore Databases,
Restore File and FilesGroups y Refresh.
Figura A.4 Opciones de DataBases.

Seleccione la opcin New DataBase para ver la siguiente ventana:

421

Figura A.5 Ventana para crear una nueva base de datos.

Escriba el nombre de la base de datos en la opcin Database name:


(bdlibrovbnet para los ejemplos del libro) y pulse el botn OK para volver a la
ventana de Microsoft SQL Server. D doble clic sobre la carpeta Databases para
desplegar las bases de datos existentes, como se aprecia en la siguiente figura:
Figura A.6 Ventana para crear una nueva base de datos.

D doble clic sobre el nombre de la base de datos bdlibrovbnet para desplegar


los elementos que fueron creados. Se obtendr la siguiente figura:

422

Figura A.7 Base de datos bdlibrovbnet con sus elementos creados inicialmente.

A.3 Crear tablas en la base de datos


Para crear tablas en la base de datos seleccione en cualquiera de las dos ventanas la
carpeta Tables y d clic derecho para visualizar las opciones: New Tables, Filter y
Refresh.
Figura A.8 Opciones de la carpeta Tables.

423

Seleccione New Table para ver la ventana de diseo de la tabla, como se aprecia
en la siguiente figura:
Figura A.9 Ventana de diseo de una tabla.

Para agregar los campos a la tabla en Column Name escriba nit, en Data Type
seleccione nvarchar (50) (campo alfanumrico).
Figura A.10 Ventana con el campo nit creado.

Realice los mismos pasos para crear los campos: empresa, representante,
direccion, telefono, ciudad (todos con el mismo tipo de datos nvarchar (50)). Por
424

ltimo seleccione el campo nit y pulse el icono para crear la clave primaria (
figura quedara:

), la

Figura A.11 Ventana con los campos de la tabla y nit como llave primaria.

Ahora se debe guardar la tabla, pulse el signo


cambios.

para visualizar la ventana de

Figura A.12 Ventana de cambio de una tabla.

425

Name.

Pulse el botn Yes para obtener la ventana para escoger el nombre Choose

Figura A.13 Ventana para escribir el nombre de la tabla creada.

Escriba como nombre de la tabla clientes y pulse el botn OK. Para trabajar con
algunos de los ejercicios planteados en el libro, cree las tablas pedidos, productos y
ventas con las estructuras que se muestran a continuacin:
Figura A.14 Estructura tabla pedidos.

Figura A.15 Estructura tabla productos.

426

Figura A.16 Estructura tabla ventas.

Al finalizar de crear las tablas, la estructura de la base de datos con las tablas
quedara como se aprecia en la siguiente figura:
Figura A.17 Estructura de la base de datos.

Cuando se selecciona una tabla y se d clic derecho se visualiza la ventana con las
diferentes opciones que se pueden realizar como son:
1. New Table: Para crear una nueva tabla.
2. Modify: Permite modificar la estructura de una tabla que previamente se haba
creado.
3. Open Table: Para abrir una ventana de edicin para insertar o visualizar los
datos de una tabla.
4. Script Table as: Para crear, borrar, alterar, seleccionar, insertar, actualizar,
ejecutar una consulta, un archivo o una imagen.
5. View Dependencies: Para visualizar las dependencias (relaciones) de una tabla.
6. Rename: Para renombrar una tabla.
7. Delete: Para eliminar una tabla.
8. Refresh: Para refrescar o actualizar una tabla.
9. Properties: Para visualizar las propiedades de una tabla.

427

Figura A.18 Opciones para la manipulacin de una tabla.

Seleccione la tabla clientes y d clic derecho y escoja la opcin Open Table


para insertar informacin a la tabla.
Figura A.19 Ventana para insertar datos a la tabla clientes.

Inserte la informacin de acuerdo a la siguiente figura:


Figura A.20 Ventana con datos insertados en la tabla clientes.

428

En este momento se podr realizar instrucciones SQL para manipular la tabla


(Show SQL Pane) se visualizar un panel para digitar
clientes. Al pulsarse el icono
instrucciones SQL. Por omisin se muestra la siguiente ventana:
Figura A.21 Ventana al seleccionar el icono Show SQL Pane.

Si se escribe la instruccin SQL Select * from clientes where nit>400 y se


pulsa el icono de verificacin de sintaxis de instrucciones SQL
se visualizar la siguiente ventana:

(Verify SQL sintax)

Figura A.22 Ventana de verificacin de sintaxis SQL.

Al pulsarse el botn Aceptar se mostrar la figura:

429

Figura A.23 Ventana al Aceptar la verificacin de sintaxis SQL.

Para ejecutar la instruccin SQL deber dar clic en el icono


se vera la siguiente figura:

(Execute SQL),

Figura A.24 Ventana con la instruccin SQl ejecutada.

Ahora se debern llenar con datos las tablas pedidos, productos y ventas de
acuerdo a las siguientes figuras:

430

Figura A.25 Tabla pedidos con datos insertados.

Figura A.26 Tabla productos con datos insertados.

Figura A.27 Tabla ventas con datos insertados.

A.4 Crear Diagramas de una base de datos


Para crear un diagrama de una base datos seleccione Database Diagrams de la base de
datos bdlibrovbnet, de clic derecho y seleccione la opcin New Database Diagram.
Para ver la ventana de adicin de tablas:

431

Figura A.28 Ventana Add Table de la opcin New Database Diagram.

Seleccione una tabla y pulse el botn Add. Realice esta misma operacin con
cada una de las tablas restantes. Al terminar pulse el botn Close para observar la
siguiente figura:
Figura A.29 Ventana Database Diagram con las tablas adicionadas.

Para crear la relaciones entre las tablas seleccione el campo nit de la tabla
cliente, de clic en el mouse y mantngalo pulsado y arrstrelo hacia el campo nit de la
tabla pedidos, suelte el mouse para ver la ventana Tables and Columns.

432

Figura A.30 Ventana Tables and Columns.

En el campo Relationship name escriba el nombre de la relacin. Seleccione


como llave primaria (Primary key table) la tabla clientes y el campo nit, como llave
secundaria (Foreign key table) la tabla pedidos y el campo nit. Pulse el botn OK para
visualizar la ventana Foreign Key Relationship.
Figura A.31 Ventana Foreign key Relationship.

En esta ventana se visualizan todas las caractersticas de la relacin. Pulse el


botn OK para terminar. Realice las dems relaciones hasta obtener la siguiente figura:

433

Fgura A.32 Ventana de diagrams con las relaciones entre tablas.

Ahora se debe guardar el diagrama, pulse el signo


de cambios en un diagrama.

para visualizar la ventana

Figura A.33 Ventana de cambios en un diagrama de la base de datos.

Name.

Pulse el botn Yes para obtener la ventana para escoger el nombre Choose

Figura A.34 Ventana para escribir el nombre del diagrama creado.

434

Escriba como nombre del diagrama relaciontablas y pulse el botn OK. Se


visualizar la ventana para guardar los cambios realizados.
Figura A.35 Ventana para guardar los cambios realizados en la base de datos.

Al pulsarse el botn Yes se guardarn los cambios. Seleccionado el diagrama


creado y dar clic derecho se visualizar una ventana donde podr realizar las siguientes
Tareas: New Database Diagrams (crear un nuevo diagrama), Modify (modificar un
diagrama), Rename (renombrar un diagrama), Delete (eliminar un diagrama), Refresh (
refrescar un diagrama).
Figura A.36 Ventana para manipulacion de los diagrams.

A.5 Crear una vista


Una vista es un espejo de cierta informacin que contiene una base de datos. Para crear
una vista de una base datos seleccione View de la base de datos bdlibrovbnet, d clic
derecho y seleccione la opcin New View. Para ver la ventana de adicin de vistas:
435

Figura A.37 Ventana para adicionar tablas a una vista.

Adicione las tablas clientes y pedidos. Al terminar pulse el botn Close para
visualizar la siguiente figura:
Figura A.38 Ventana de la vista con las tablas clientes pedidos.

Seleccione los campos que desea ver en la vista. D clic en el icono


(Execute SQL), para ver la Ejecucin de la vista:

436

Figura A.39 Ventana de ejecucin de la vista creada.

Ahora se debe guardar la vista creada, pulse el signo


ventana de cambios en una vista.

para visualizar la

Figura A.40 Ventana de cambios en una vista.

Name.

Pulse el botn Yes para obtener la ventana para escoger el nombre Choose

Figura A.41 Ventana para escribir el nombre de la vista creada.

437

Escriba como nombre de la vista vista_clientes_pedidos y pulse el botn OK.


Se visualizar la siguiente figura:
Figura A.42 Ventana con la vista guardada.

438

Anda mungkin juga menyukai